Merge pull request #168413 from a-m-joseph/libtool-purity-fix-put-file-in-bootstrap

fixLibtool(): replace /usr/bin/file in ./configure, add file to common-path.nix
This commit is contained in:
Rick van Schijndel 2022-05-28 17:53:43 +02:00 committed by GitHub
commit f174277eed
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 27 additions and 1 deletions

View file

@ -12,4 +12,12 @@
pkgs.bash pkgs.bash
pkgs.patch pkgs.patch
pkgs.xz.bin pkgs.xz.bin
# The `file` command is added here because an enormous number of
# packages have a vendored dependency upon `file` in their
# `./configure` script, due to libtool<=2.4.6, or due to
# libtool>=2.4.7 in which the package author decided to set FILECMD
# when running libtoolize. In fact, file-5.4.6 *depends on itself*
# and tries to invoke `file` from its own ./configure script.
pkgs.file
] ]

View file

@ -486,6 +486,7 @@ rec {
gmp gmp
libiconv libiconv
brotli.lib brotli.lib
file
] ++ lib.optional haveKRB5 libkrb5) ++ ] ++ lib.optional haveKRB5 libkrb5) ++
(with pkgs."${finalLlvmPackages}"; [ (with pkgs."${finalLlvmPackages}"; [
libcxx libcxx
@ -561,6 +562,7 @@ rec {
gmp gmp
libiconv libiconv
brotli.lib brotli.lib
file
] ++ lib.optional haveKRB5 libkrb5) ++ ] ++ lib.optional haveKRB5 libkrb5) ++
(with pkgs."${finalLlvmPackages}"; [ (with pkgs."${finalLlvmPackages}"; [
libcxx libcxx
@ -737,6 +739,7 @@ rec {
brotli.lib brotli.lib
cc.expand-response-params cc.expand-response-params
libxml2.out libxml2.out
file
] ++ lib.optional haveKRB5 libkrb5 ] ++ lib.optional haveKRB5 libkrb5
++ lib.optionals localSystem.isAarch64 [ ++ lib.optionals localSystem.isAarch64 [
pkgs.updateAutotoolsGnuConfigScriptsHook pkgs.updateAutotoolsGnuConfigScriptsHook

View file

@ -1021,6 +1021,21 @@ configurePhase() {
echo "fixing libtool script $i" echo "fixing libtool script $i"
fixLibtool "$i" fixLibtool "$i"
done done
# replace `/usr/bin/file` with `file` in any `configure`
# scripts with vendored libtool code. Preserve mtimes to
# prevent some packages (e.g. libidn2) from spontaneously
# autoreconf'ing themselves
CONFIGURE_MTIME_REFERENCE=$(mktemp configure.mtime.reference.XXX)
find . \
-executable \
-type f \
-name configure \
-execdir grep -l 'GNU Libtool is free software; you can redistribute it and/or modify' {} \; \
-execdir touch -r {} "$CONFIGURE_MTIME_REFERENCE" \; \
-execdir sed -i s_/usr/bin/file_file_g {} \; \
-execdir touch -r "$CONFIGURE_MTIME_REFERENCE" {} \;
rm -f "$CONFIGURE_MTIME_REFERENCE"
fi fi
if [[ -z "${dontAddPrefix:-}" && -n "$prefix" ]]; then if [[ -z "${dontAddPrefix:-}" && -n "$prefix" ]]; then

View file

@ -417,7 +417,7 @@ in
# Simple executable tools # Simple executable tools
concatMap (p: [ (getBin p) (getLib p) ]) [ concatMap (p: [ (getBin p) (getLib p) ]) [
gzip bzip2 xz bash binutils.bintools coreutils diffutils findutils gzip bzip2 xz bash binutils.bintools coreutils diffutils findutils
gawk gnumake gnused gnutar gnugrep gnupatch patchelf ed gawk gnumake gnused gnutar gnugrep gnupatch patchelf ed file
] ]
# Library dependencies # Library dependencies
++ map getLib ( ++ map getLib (