diff options
author | tijl <tijl@FreeBSD.org> | 2014-04-23 21:25:16 +0800 |
---|---|---|
committer | tijl <tijl@FreeBSD.org> | 2014-04-23 21:25:16 +0800 |
commit | 55e5c34e31b90aa95311b10bd4a3072f2163ebfe (patch) | |
tree | 69c07cdc4812f0f8be0cc44c38513f540c058778 /Mk | |
parent | 0c15193d405451f0e1452ba981c8efb1df1447dd (diff) | |
download | freebsd-ports-gnome-55e5c34e31b90aa95311b10bd4a3072f2163ebfe.tar.gz freebsd-ports-gnome-55e5c34e31b90aa95311b10bd4a3072f2163ebfe.tar.zst freebsd-ports-gnome-55e5c34e31b90aa95311b10bd4a3072f2163ebfe.zip |
When linking a library libA with a library libB using libtool, if libB.la
exists, libtool will add all libraries libB.la refers to (dependency_libs
field) to the linker command line and store them in the dependency_libs
field of libA.la. So everything that subsequently links with libA will also
link to these extra libraries. This causes too much overlinking.
This commit modifies Mk/Uses/libtool.mk so it empties the dependency_libs
field in .la libraries during staging. However, because .la libraries have
very limited use when dependency_libs is empty it makes sense to completely
remove them during staging.
So with this commit USES=libtool is modified to remove .la libraries and a
new form (USES=libtool:keepla) is introduced in case they need to be kept
(dependency_libs is still emptied).
PORTREVISION is bumped on all ports with USES=libtool that install .la
libraries. Most ports are also changed to add :keepla because .la
libraries have to be kept around as long as there are dependent ports with
.la libraries that refer to them in their dependency_libs field. In most
cases :keepla can be removed again as soon as all dependent ports that
install .la libraries have some form of USES=libtool added to their
Makefile.
PR: ports/188759
Exp-run: bdrewery
Approved by: portmgr (bdrewery)
Diffstat (limited to 'Mk')
-rw-r--r-- | Mk/Uses/libtool.mk | 17 | ||||
-rw-r--r-- | Mk/bsd.port.mk | 26 | ||||
-rw-r--r-- | Mk/bsd.xorg.mk | 2 |
3 files changed, 32 insertions, 13 deletions
diff --git a/Mk/Uses/libtool.mk b/Mk/Uses/libtool.mk index 0f4c401c0a9a..64a85dfd5b93 100644 --- a/Mk/Uses/libtool.mk +++ b/Mk/Uses/libtool.mk @@ -3,7 +3,13 @@ # Bring libtool scripts up to date. # # Feature: libtool -# Usage: USES=libtool +# Usage: USES=libtool or USES=libtool:args +# Valid args: keepla Normally libtool libraries (*.la) are not installed. +# With this option they are. This is needed as long +# as there are dependent ports with .la libraries that +# refer to .la libraries in this port. As soon as all +# those dependent ports have some form of USES=libtool +# keepla can be removed. # # MAINTAINER: autotools@FreeBSD.org @@ -54,4 +60,13 @@ patch-libtool: /versuffix=/s/=.*/="$$major.$$age.$$revision"/; }' .endif +patch-lafiles: +.if ${libtool_ARGS} == keepla || ${libtool_ARGS} == oldver + @${FIND} ${STAGEDIR} -type f -name '*.la' | \ + ${XARGS} ${SED} -i '' -e "/dependency_libs=/s/=.*/=''/" +.else + @${FIND} ${STAGEDIR} -type f -name '*.la' | \ + ${XARGS} ${GREP} -l 'libtool library' | ${XARGS} ${RM} +.endif + .endif diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk index 02a5c97547bd..40f800defe53 100644 --- a/Mk/bsd.port.mk +++ b/Mk/bsd.port.mk @@ -6530,22 +6530,26 @@ _STAGE_DEP= build _STAGE_SEQ= stage-message stage-dir run-depends lib-depends apply-slist pre-install generate-plist \ pre-su-install .if defined(NEED_ROOT) -_STAGE_SUSEQ= create-users-groups do-install desktop-file-post-install kmod-post-install \ - shared-mime-post-install webplugin-post-install \ - post-install post-install-script move-uniquefiles post-stage compress-man \ +_STAGE_SUSEQ= create-users-groups do-install desktop-file-post-install \ + kmod-post-install shared-mime-post-install \ + webplugin-post-install post-install post-install-script \ + move-uniquefiles post-stage compress-man patch-lafiles \ install-rc-script install-ldconfig-file install-license \ - install-desktop-entries add-plist-info add-plist-docs add-plist-examples \ - add-plist-data add-plist-post move-uniquefiles-plist fix-plist-sequence + install-desktop-entries add-plist-info add-plist-docs \ + add-plist-examples add-plist-data add-plist-post \ + move-uniquefiles-plist fix-plist-sequence .if defined(DEVELOPER) _STAGE_SUSEQ+= stage-qa .endif .else -_STAGE_SEQ+= create-users-groups do-install desktop-file-post-install kmod-post-install \ - shared-mime-post-install webplugin-post-install post-install post-install-script \ - move-uniquefiles post-stage compress-man install-rc-script install-ldconfig-file \ - install-license install-desktop-entries add-plist-info add-plist-docs \ - add-plist-examples add-plist-data add-plist-post move-uniquefiles-plist \ - fix-plist-sequence +_STAGE_SEQ+= create-users-groups do-install desktop-file-post-install \ + kmod-post-install shared-mime-post-install \ + webplugin-post-install post-install post-install-script \ + move-uniquefiles post-stage compress-man patch-lafiles \ + install-rc-script install-ldconfig-file install-license \ + install-desktop-entries add-plist-info add-plist-docs \ + add-plist-examples add-plist-data add-plist-post \ + move-uniquefiles-plist fix-plist-sequence .if defined(DEVELOPER) _STAGE_SEQ+= stage-qa .endif diff --git a/Mk/bsd.xorg.mk b/Mk/bsd.xorg.mk index 106463146e58..124c2c958cf7 100644 --- a/Mk/bsd.xorg.mk +++ b/Mk/bsd.xorg.mk @@ -140,7 +140,7 @@ post-install: .endif . if ${XORG_CAT} == "lib" -USES+= pathfix libtool +USES+= pathfix libtool:keepla USE_LDCONFIG= yes CONFIGURE_ARGS+=--enable-malloc0returnsnull . endif |