packaging: fix pkg-config files

Notably, this adds the Requires.private required for proper static linkage of
Lix libraries. Some minor missing or duplicated dependencies are also fixed
along the way (although some optional dependencies are omitted due to their
size).

Fixes: https://git.lix.systems/lix-project/lix/issues/789

Change-Id: I6a6a696413d538124d9ac75c68f100cc3089284f
This commit is contained in:
Alois Wohlschlager
2025-07-31 06:43:58 +02:00
parent e69aaa5f65
commit becb2f0002
10 changed files with 26 additions and 6 deletions
+10
View File
@@ -0,0 +1,10 @@
---
synopsis: "Lix libraries can now be linked statically"
issues: [fj#789]
cls: [3775, 3778]
category: Fixes
credits: [alois31]
---
Previously the pkg-config files distributed with Lix were only suitable for dynamic linkage, causing "undefined reference to…" linker errors when trying to link statically.
Private dependency information has now been added to make static linkage work as expected without user intervention.
In addition, relevant static libraries are now prelinked to avoid strange failures due to missing static initializers.
+3 -2
View File
@@ -5,5 +5,6 @@ includedir=@includedir@
Name: Lix (libcmd)
Description: Lix Package Manager (libcmd)
Version: @PACKAGE_VERSION@
Requires: lix-base lix-util
Libs: -L${libdir} -llixcmd
Requires: lix-base lix-util lix-store
Requires.private: lix-fetchers lix-expr lix-main @BOEHM_IF_FOUND@ libeditline lowdown ncurses
Libs: -L${libdir} @LIBLIX_DOC_IF_STATIC@ -llixcmd
+2
View File
@@ -93,5 +93,7 @@ configure_file(
'libdir' : libdir,
'includedir' : includedir,
'PACKAGE_VERSION' : meson.project_version(),
'BOEHM_IF_FOUND' : boehm.found() ? 'bdw-gc' : '',
'LIBLIX_DOC_IF_STATIC' : is_static ? '-llix_doc' : '',
},
)
+2 -1
View File
@@ -5,5 +5,6 @@ includedir=@includedir@
Name: Lix libexpr
Description: Lix Package Manager (libexpr)
Version: @PACKAGE_VERSION@
Requires: lix-base lix-util lix-fetchers lix-store bdw-gc
# dependencies on boost is omitted since it is optional (only required by some headers)
Requires: lix-base lix-util lix-store lix-fetchers @BOEHM_IF_FOUND@
Libs: -L${libdir} -llixexpr
+1
View File
@@ -357,5 +357,6 @@ configure_file(
'libdir' : libdir,
'includedir' : includedir,
'PACKAGE_VERSION' : meson.project_version(),
'BOEHM_IF_FOUND' : boehm.found() ? 'bdw-gc' : '',
},
)
+1 -1
View File
@@ -5,5 +5,5 @@ includedir=@includedir@
Name: Lix libfetchers
Description: Lix Package Manager (libfetchers)
Version: @PACKAGE_VERSION@
Requires: lix-base lix-util
Requires: lix-base lix-util lix-store
Libs: -L${libdir} -llixfetchers
+1
View File
@@ -6,4 +6,5 @@ Name: Lix libmain
Description: Lix Package Manager (libmain)
Version: @PACKAGE_VERSION@
Requires: lix-base lix-util
Requires.private: lix-store
Libs: -L${libdir} -llixmain
+2 -1
View File
@@ -6,4 +6,5 @@ Name: Lix libstore
Description: Lix Package Manager (libstore)
Version: @PACKAGE_VERSION@
Requires: lix-base lix-util
Libs: -L${libdir} -llixstore -llixutil
Requires.private: @AWS_SDK_IF_FOUND@ capnp-rpc libcurl libarchive libseccomp libsodium sqlite3
Libs: -L${libdir} -llixstore
+1
View File
@@ -469,5 +469,6 @@ configure_file(
'libdir' : libdir,
'includedir' : includedir,
'PACKAGE_VERSION' : meson.project_version(),
'AWS_SDK_IF_FOUND' : aws_sdk.found() ? 'aws-cpp-sdk-core aws-cpp-sdk-s3 aws-cpp-std-transfer' : '',
},
)
+3 -1
View File
@@ -5,5 +5,7 @@ includedir=@includedir@
Name: Lix libutil
Description: Lix Package Manager (libutil)
Version: @PACKAGE_VERSION@
Requires: lix-base lix-util
# dependencies on boost, libarchive, nlohmann_json are omitted since they are optional (only required by some headers)
Requires: lix-base
Requires.private: libbrotlidec libbrotlienc libcpuid libarchive libcrypto
Libs: -L${libdir} -llixutil