Skip to content
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

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

earlchew-aws
Copy link

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
Checklist
  • Required: Issue filed: https://unicode-org.atlassian.net/browse/ICU-22610
  • Required: The PR title must be prefixed with a JIRA Issue number.
  • Required: The PR description must include the link to the Jira Issue, for example by completing the URL in the first checklist item
  • Required: Each commit message must be prefixed with a JIRA Issue number.
  • Issue accepted (done by Technical Committee after discussion)
  • Tests included, if applicable
  • API docs and/or User Guide docs changed or added, if applicable

@CLAassistant
Copy link

CLAassistant commented Apr 4, 2024

CLA assistant check
All committers have signed the CLA.

@echeran
Copy link
Contributor

echeran commented Apr 18, 2024

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.

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
@jira-pull-request-webhook
Copy link

Hooray! The files in the branch are the same across the force-push. 😃

~ Your Friendly Jira-GitHub PR Checker Bot

@earlchew-aws
Copy link
Author

@markusicu Mix up with CLA signing sorted out.

@earlchew-aws
Copy link
Author

@echeran @markusicu AFAICT CLA Assistant checker confirms the CLA.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants