Skip to content

Commit

Permalink
binutils: avoid texinfo dependency during bootstrap
Browse files Browse the repository at this point in the history
Normally binutils provides pregenerated manuals along with release
tarball. Manuals regeneration is needed every time we change
`configure.ac`. But usually there are no material changes in it.

This change instead inhibits manuals regeenration by keeping
man and info files up to date.

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
    @@ -100 +99,0 @@
    -"texinfo-6.8.drv"

Co-authored-by: Adam Joseph <54836058+amjoseph-nixpkgs@users.noreply.github.com>
  • Loading branch information
trofi and Adam Joseph committed Jan 13, 2023
1 parent 2add5f0 commit 1d5a8a5
Showing 1 changed file with 19 additions and 4 deletions.
23 changes: 19 additions & 4 deletions pkgs/development/tools/misc/binutils/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ in
, noSysDirs
, perl
, substitute
, texinfo
, zlib

, enableGold ? withGold stdenv.targetPlatform
Expand Down Expand Up @@ -52,7 +51,7 @@ let
targetPrefix = lib.optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-";
in

stdenv.mkDerivation {
stdenv.mkDerivation (finalAttrs: {
pname = targetPrefix + "binutils";
inherit version;

Expand Down Expand Up @@ -110,10 +109,12 @@ stdenv.mkDerivation {

strictDeps = true;
depsBuildBuild = [ buildPackages.stdenv.cc ];
# texinfo was removed here in https://github.com/NixOS/nixpkgs/pull/210132
# to reduce rebuilds during stdenv bootstrap. Please don't add it back without
# checking the impact there first.
nativeBuildInputs = [
bison
perl
texinfo
]
++ lib.optionals targetPlatform.isiOS [ autoreconfHook ]
++ lib.optionals buildPlatform.isDarwin [ autoconf269 automake gettext libtool ]
Expand Down Expand Up @@ -144,6 +145,20 @@ stdenv.mkDerivation {
for i in binutils/Makefile.in gas/Makefile.in ld/Makefile.in gold/Makefile.in; do
sed -i "$i" -e 's|ln |ln -s |'
done
# autoreconfHook is not included for all targets.
# Call it here explicitly as well.
${finalAttrs.postAutoreconf}
'';

postAutoreconf = ''
# As we regenerated configure build system tries hard to use
# texinfo to regenerate manuals. Let's avoid the dependency
# on texinfo in bootstrap path and keep manuals unmodified.
touch gas/doc/.dirstamp
touch gas/doc/asconfig.texi
touch gas/doc/as.1
touch gas/doc/as.info
'';

# As binutils takes part in the stdenv building, we don't want references
Expand Down Expand Up @@ -226,4 +241,4 @@ stdenv.mkDerivation {
# collision due to the ld/as wrappers/symlinks in the latter.
priority = 10;
};
}
})

0 comments on commit 1d5a8a5

Please sign in to comment.