Autoreconf was initially added in e44dd84664 ("libtool2: macOS 11
support") for configure patches. The patches were removed since 2.4.7
release. Let's drop these dependencies to make boostrap tree leaner.
The diff of bootstrap tree before and after the change:
$ nix-store --query --graph $(nix-instantiate -A stdenv) |
fgrep ' -> ' | awk '{print $3}' | sort -u |
sed 's/"[0-9a-z]\{32\}-/"/g' | sort > before
$ nix-store --query --graph $(nix-instantiate -A stdenv) |
fgrep ' -> ' | awk '{print $3}' | sort -u |
sed 's/"[0-9a-z]\{32\}-/"/g' | sort > after
$ diff -U0 before after
--- before
+++ after
@@ -64,2 +63,0 @@
-"help2man-1.49.2.drv"
-"help2man-1.49.2.drv"
@@ -77 +74,0 @@
-"libxcrypt-4.4.33.drv"
@@ -88,4 +84,0 @@
-"perl-5.36.0.drv"
-"perl-5.36.0.drv"
-"perl5.36.0-gettext-1.07.drv"
-"perl5.36.0-gettext-1.07.drv"
This removes 2 of 3 builds of `perl` and `help2man` dependencies.
Co-authored-by: Adam Joseph <54836058+amjoseph-nixpkgs@users.noreply.github.com>
Libtool 2.4.7 changed the shebangs in `libtoolize.in` and `ltmain.sh`
from `/bin/sh` (which is a special sandbox exception) to `/usr/bin/env
sh` (which is not).
My PR (#167071) to bump the libtool version adjusted both of these
shebangs, when it should only have adjusted the one in
`libtoolize.in`.
`ltmain.sh` is not a script to be *executed* at
`libtool`-invocation-time. It is a script which is *vendored into a
release* at `libtoolize`-invocation-time.
Thanks to @trofi for reporting this
https://github.com/NixOS/nixpkgs/pull/167071#pullrequestreview-1079484605
For the same reason we disable shebang patching in these derivations,
we want to disable the patching of libtool scripts stdenv does.
Otherwise, libtool will install scripts into other packages that are
already "fixed", but for the environment libtool was built in. These
scripts won't be fixed properly by stdenv anymore, because it will
think they were already fixed.
This fixes the build of pkgsStatic.libwebp, which was failing because
its libtool script wasn't being patched properly.
Another problem "fixing" the scripts in the libtool package would
cause is that package tarballs generated on NixOS would contain
libtool scripts that didn't make sense on other distros.
I've tested this change by building pkgsStatic.libwebp, which now
works, as well as by testing the build of the bootstrap files for
mips64el to make sure that didn't regress from 97c43828fb
("fixLibtool(): patch ./configure, add `file` to common-path.nix").
- there were many easy merge conflicts
- cc-wrapper needed nontrivial changes
Many other problems might've been created by interaction of the branches,
but stdenv and a few other packages build fine now.
Some packages have a runtime dependency on libltdl, but shouldn't
depend on the rest of libtool (which in turn depends on binutils and
other stdenv tools). For example, splitting off libltdl cuts about 35
MiB from the closure of PulseAudio.
linking path), and with this achieved bash being cross-compilable.
I fixed the few expressions involved in bash building, so they have well stated
native and non-native inputs.
I also tried to cross-build guile, and with this I found a problem in the
actual cross-gcc: it calls the binutils ld, instead of the ld wrapper. This
way, the programs/shared_libraries don't get the proper -rpath.
svn path=/nixpkgs/branches/stdenv-updates/; revision=18497