nixpkgs/pkgs/build-support/setup-hooks
Orivej Desh fd97db43bc
pruneLibtoolFiles: init setup hook (#41819)
A .la file specifies linker flags to link with the library it describes. Its
"dependency_libs" field lists the libraries that this library depends upon.
This list often contains "-l" flags without corresponding "-L" flags. Many
packages in Nixpkgs deal with this in one of these ways:
- delete .la file [1]
- clear dependency_libs [2]
- add -L flags to dependency_libs [3]
- propagate dependencies [4]

Sometimes "dependency_libs" contain wrong "-L" flags pointing to the "dev"
output with headers rather than to the main output with libraries. They have to
be edited or deleted to reduce closure size [5].

Deleting .la files is often but not always safe [6].  Atomatically deleting as
many of them as possible is complex [7].  Deleting .la files that describe
shared rather than static libraries is probably safe; but clearing their
"dependency_libs" field achieves the same effect with less potential for
unintended consequences.  This is the approach that may be enabled for all
Nixpkgs.

[1] 2a79d296d3
[2] c83a530985
[3] 9e0dcf3bd9
[4] 01134e698f
[5] f6c73f1e37
[6] https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Handling_Libtool_Archives
[7] https://github.com/gentoo/gentoo/blob/fb1f2435/eclass/ltprune.eclass
2018-06-11 18:11:02 +00:00
..
audit-tmpdir.sh Add a setup hook for detecting $TMPDIR references in RPATHs and wrapper scripts 2017-05-04 20:23:57 +02:00
auto-patchelf.sh autoPatchelfHook: Patch PIC exes/libs as well 2018-06-08 00:27:31 +02:00
autoreconf.sh autoreconfHook: Simplify by avoiding findInputs 2017-09-14 13:16:12 -04:00
compress-man-pages.sh compress-man-pages: skip compressed manpages 2017-02-27 20:03:45 +01:00
die.sh dieHook: Add die utility function 2017-08-08 00:17:56 -05:00
enable-coverage-instrumentation.sh
find-xml-catalogs.sh treewide: Don't use envHook anymore 2017-12-30 22:04:22 -05:00
fix-darwin-dylib-names.sh replace "Mac OS X" and "OS X" with "macOS" 2017-08-07 21:41:30 +02:00
gog-unpack.sh build-support gogUnpackHook: support for unpacking games from gog.com 2018-02-12 22:28:06 +08:00
keep-build-tree.sh
ld-is-cc-hook.sh ld-is-cc-hook: init 2017-12-19 01:45:42 +00:00
make-coverage-analysis-report.sh
make-wrapper.sh makeWrapper: delete --set-eval 2017-11-17 12:53:54 +00:00
move-docs.sh
move-lib64.sh
move-sbin.sh
multiple-outputs.sh Merge pull request #31987 from jtojnar/devhelp-devdoc 2017-11-25 23:14:47 +00:00
patch-shebangs.sh patchShebangs: preserve times, resolves #33084 2018-01-21 12:09:07 +01:00
prune-libtool-files.sh pruneLibtoolFiles: init setup hook (#41819) 2018-06-11 18:11:02 +00:00
role.bash treewide: Use pkgs/build-support/roles.bash to remove copy pasta 2018-05-07 15:10:37 -04:00
separate-debug-info.sh misc setup-hooks: Use env vars to refer to binutils programs 2017-12-13 16:08:18 -05:00
set-java-classpath.sh treewide: Don't use envHook anymore 2017-12-30 22:04:22 -05:00
set-source-date-epoch-to-latest.sh set-source-date-epoch-to-latest.sh: shut up a warning 2017-09-17 10:35:44 +02:00
setup-debug-info-dirs.sh treewide: Don't use envHook anymore 2017-12-30 22:04:22 -05:00
strip.sh strip setup hook: Learn about only stripping host/target binaries alone 2017-12-30 22:04:22 -05:00
update-autotools-gnu-config-scripts.sh updateAutotoolsGnuConfigScriptsHook: Only fix files 2017-02-11 12:24:49 +02:00
use-old-cxx-abi.sh
win-dll-link.sh misc setup-hooks: Use env vars to refer to binutils programs 2017-12-13 16:08:18 -05:00
wrap-gapps-hook.sh treewide: Don't use envHook anymore 2017-12-30 22:04:22 -05:00