[pacman-dev] [PATCH] build: link vercmp staticly with libalpm
Eli Schwartz
eschwartz at archlinux.org
Mon Feb 11 16:26:44 UTC 2019
On 2/11/19 9:45 AM, Dave Reisner wrote:
> On Mon, Feb 11, 2019 at 08:12:51AM -0500, Dave Reisner wrote:
>> This makes the meson-built vercmp equivalent to the autotools build.
>>
>> Employ an intermediate archive of libalpm which our generic library rule
>> can slurp in. Other alpm-only binaries (specifically we care about
>> vercmp) can then link this in for alpm functionality without caring
>> exactly where the function is defined. meson passes the right flags to
>> ensure that unused data is stripped out of the executable.
>>
>> ref: FS#61719
>> ---
>
> Sorry, this patch is a bit hasty, but I'm still curious if anyone has
> any objections to the approach.
I (obviously) like the approach, but when I originally suggested it I
had a slightly different take on how to implement it.
>> meson.build | 13 +++++++++++--
>> 1 file changed, 11 insertions(+), 2 deletions(-)
>>
>> diff --git a/meson.build b/meson.build
>> index 0a710653..5c1efd73 100644
>> --- a/meson.build
>> +++ b/meson.build
>> @@ -354,12 +354,21 @@ libcommon = static_library(
>> include_directories : includes,
>> install : false)
>>
>> +libalpm_a = static_library(
>> + 'alpm_a',
We're installing a file called "/usr/lib/libalpm_a.a" now?
>> + libalpm_sources,
>> + version : libalpm_version,
Generates a meson warning that static_library -> version will eventually
become a fatal error.
>> + include_directories : includes,
>> + dependencies : [crypto_provider, libarchive, libcurl] + gpgme_libs,
>> + link_with : [libcommon],
>> + install : true)
>> +
>> libalpm = library(
>> 'alpm',
>> - libalpm_sources,
>> version : libalpm_version,
>> include_directories : includes,
>> dependencies : [crypto_provider, libarchive, libcurl] + gpgme_libs,
>> + link_whole : [libalpm_a],
>> link_with : [libcommon],
>> install : true)
Building a maybe-shared, maybe-static library causes pacman-static to be
unhappy. I may end up with libalpm_a.a and libalpm.a installed, or if I
try to rename the first target, I end up with the same build rule
defined twice and meson throws an error.
It should be guarded with an if not get_option(...) which I've done in
an alternative patch.
... also there's no need to define libcommon or the assorted
dependencies and headers when all we're doing is linking a static
library into a shared one. The buildtarget already remembers its own
dependencies.
>> @@ -413,7 +422,7 @@ executable(
>> 'vercmp',
>> vercmp_sources,
>> include_directories : includes,
>> - link_with : [libalpm],
>> + link_with : [libalpm_a],
>> install : true,
>> )
>>
>> --
>> 2.20.1
--
Eli Schwartz
Bug Wrangler and Trusted User
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 1601 bytes
Desc: OpenPGP digital signature
URL: <https://lists.archlinux.org/pipermail/pacman-dev/attachments/20190211/eb03da57/attachment.sig>
More information about the pacman-dev
mailing list