-
-
Notifications
You must be signed in to change notification settings - Fork 775
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ICU-22610 Use Requires.private and Libs.private #2949
Conversation
Please sign the CLA using the CLA button. We need that signed and confirmed via the CLA Assistant checker before we can take a look. |
Hooray! The files in the branch are the same across the force-push. 😃 ~ Your Friendly Jira-GitHub PR Checker Bot |
@markusicu Mix up with CLA signing sorted out. |
@echeran @markusicu AFAICT CLA Assistant checker confirms the CLA. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great. there's more to sort out with le/hb but that's for another time.
To prevent overlinking when publishing shared libraries, specify internal dependencies using Requires.private and Libs.private. Use Libs.private in icu-uc.pc for libicudata.so, and Requires.private in icu-i18n.pc, icu-io.pc, and icu-lx.pc, so that ICU internal dependencies will not be bound into clients. The resulting *.pc files will produce the following output for icu-i18n and icu-lx, provided pkgconf has commit 78d53ea0 (2.2.0 or later) which de-duplicates multiple -L options: commit 78d53ea012dfbaf397bf8e6907efac5b51abac56 Author: Kai Pastor <dg0yt@darc.de> Date: Fri Feb 23 15:18:08 2024 +0100 Revise serials, traversal, flattening ./configure --enable-shared ... # # icu-i18n # % pkgconf --libs icu-i18n -L/opt/local/lib -licui18n % pkgconf --libs --static icu-i18n -L/opt/local/lib -licui18n -licuuc -licudata -lpthread -lm # # icu-lx # % pkgconf --libs icu-lx -L/opt/local/lib -liculx % pkgconf --libs --static icu-lx -L/opt/local/lib -liculx -L/usr/lib/x86_64-linux-gnu -licu-le-hb -lharfbuzz -lm -licuuc -licudata -lpthread -lm ./configure --disable-shared --enable-static ... # # icu-i18n # % pkgconf --libs icu-i18n -L/opt/local/lib -licui18n -licuuc -licudata -lpthread -lm % pkgconf --libs --static icu-i18n -L/opt/local/lib -licui18n -licuuc -licudata -lpthread -lm # # icu-lx # % pkgconf --libs icu-lx -L/opt/local/lib -liculx -L/usr/lib/x86_64-linux-gnu -licu-le-hb % pkgconf --libs --static icu-lx -L/opt/local/lib -liculx -L/usr/lib/x86_64-linux-gnu -licu-le-hb -lharfbuzz -licuuc -licudata -lpthread -lm
5ece2c7
to
5d90233
Compare
Hooray! The files in the branch are the same across the force-push. 😃 ~ Your Friendly Jira-GitHub PR Checker Bot |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like it was my turn to do something here...
Looks as advertised, and Steven said it's good, so here we go.
I rebased to adjust the CI for modified checks.
To prevent overlinking when publishing shared libraries, specify internal dependencies using Requires.private and Libs.private.
Use Libs.private in icu-uc.pc for libicudata.so, and Requires.private in icu-i18n.pc, icu-io.pc, and icu-lx.pc, so that ICU internal dependencies will not be bound into clients.
The resulting *.pc files will produce the following output for icu-i18n and icu-lx, provided pkgconf has commit 78d53ea0 (2.2.0 or later) which de-duplicates multiple -L options:
./configure --enable-shared ...
./configure --disable-shared --enable-static ...
Checklist