[pacman-dev] [PATCH] build: link vercmp with a static copy of libalpm
Dave Reisner
d at falconindy.com
Tue Feb 12 11:51:36 UTC 2019
On Mon, Feb 11, 2019 at 11:19:26AM -0500, Eli Schwartz wrote:
> This has historically been the case in autotools since we want vercmp to
> not break mid-transaction in an install script.
>
> For convenience, we create libalpm.a and use this to optionally generate
> libalpm.so (when not configured with -Dbuildstatic=true) as well as to
> link any binary which explicitly wishes to be built statically "with
> libalpm", but does not care where a function is defined. meson then
> treats this correctly: it builds the object file only once for both
> libraries, and the compiler strips out unused functionality from the
> final static binary.
>
> Currently the only binary which requires this is vercmp.
>
> Fixes FS#61719
>
> Signed-off-by: Eli Schwartz <eschwartz at archlinux.org>
> ---
>
> This is based on my initial suggestion via IRC for how to solve the
> vercmp build issue using two libalpm libraries.
>
> The important distinction is that in order to not be an error when
> buildstatic is used, we cannot try to create multiple rules that
> generate libalpm.a -- and also we don't want to install
> /usr/lib/libalpm_a.a
Ack, looks good.
> meson.build | 15 ++++++++++++---
> 1 file changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/meson.build b/meson.build
> index 0a710653..4a74786b 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -354,15 +354,24 @@ libcommon = static_library(
> include_directories : includes,
> install : false)
>
> -libalpm = library(
> +libalpm_a = static_library(
> 'alpm',
> libalpm_sources,
> - version : libalpm_version,
> include_directories : includes,
> dependencies : [crypto_provider, libarchive, libcurl] + gpgme_libs,
> link_with : [libcommon],
> install : true)
>
> +if not get_option('buildstatic')
> + libalpm = shared_library(
> + 'alpm',
> + version : libalpm_version,
> + link_whole: [libalpm_a],
> + install : true)
> +else
> + libalpm = libalpm_a
> +endif
> +
> install_headers(
> 'lib/libalpm/alpm.h',
> 'lib/libalpm/alpm_list.h')
> @@ -413,7 +422,7 @@ executable(
> 'vercmp',
> vercmp_sources,
> include_directories : includes,
> - link_with : [libalpm],
> + link_with : [libalpm_a],
> install : true,
> )
>
> --
> 2.20.1
More information about the pacman-dev
mailing list