mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-26 07:34:11 +00:00
6becbd3970
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>
73 lines
2.4 KiB
Nix
73 lines
2.4 KiB
Nix
{ lib, stdenv, fetchurl, fetchpatch, m4
|
|
, runtimeShell
|
|
, file
|
|
}:
|
|
|
|
# Note: this package is used for bootstrapping fetchurl, and thus
|
|
# cannot use fetchpatch! All mutable patches (generated by GitHub or
|
|
# cgit) that are needed here should be included directly in Nixpkgs as
|
|
# files.
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname = "libtool";
|
|
version = "2.4.7";
|
|
|
|
src = fetchurl {
|
|
url = "mirror://gnu/libtool/${pname}-${version}.tar.gz";
|
|
sha256 = "sha256-BOlsJATqcMWQxUbrpCAqThJyLGQAFsErmy8c49SB6ag=";
|
|
};
|
|
|
|
outputs = [ "out" "lib" ];
|
|
|
|
# FILECMD was added in libtool 2.4.7; previous versions hardwired `/usr/bin/file`
|
|
# https://lists.gnu.org/archive/html/autotools-announce/2022-03/msg00000.html
|
|
FILECMD = "${file}/bin/file";
|
|
|
|
postPatch =
|
|
# libtool commit da2e352735722917bf0786284411262195a6a3f6 changed
|
|
# the shebang from `/bin/sh` (which is a special sandbox exception)
|
|
# to `/usr/bin/env sh`, meaning that we now need to patch shebangs
|
|
# in libtoolize.in:
|
|
''
|
|
substituteInPlace libtoolize.in --replace '#! /usr/bin/env sh' '#!${runtimeShell}'
|
|
# avoid help2man run after 'libtoolize.in' update
|
|
touch doc/libtoolize.1
|
|
'';
|
|
|
|
strictDeps = true;
|
|
# As libtool is an early bootstrap dependency try hard not to
|
|
# add autoconf and automake or help2man dependencies here. That way we can
|
|
# avoid pulling in perl and get away with just an `m4` depend.
|
|
nativeBuildInputs = [ m4 file ];
|
|
propagatedBuildInputs = [ m4 file ];
|
|
|
|
# Don't fixup "#! /bin/sh" in Libtool, otherwise it will use the
|
|
# "fixed" path in generated files!
|
|
dontPatchShebangs = true;
|
|
dontFixLibtool = true;
|
|
|
|
# XXX: The GNU ld wrapper does all sorts of nasty things wrt. RPATH, which
|
|
# leads to the failure of a number of tests.
|
|
doCheck = false;
|
|
doInstallCheck = false;
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
meta = with lib; {
|
|
description = "GNU Libtool, a generic library support script";
|
|
longDescription = ''
|
|
GNU libtool is a generic library support script. Libtool hides
|
|
the complexity of using shared libraries behind a consistent,
|
|
portable interface.
|
|
|
|
To use libtool, add the new generic library building commands to
|
|
your Makefile, Makefile.in, or Makefile.am. See the
|
|
documentation for details.
|
|
'';
|
|
homepage = "https://www.gnu.org/software/libtool/";
|
|
license = licenses.gpl2Plus;
|
|
maintainers = [ ];
|
|
platforms = platforms.unix;
|
|
};
|
|
}
|