From bbc204cd98ec83e40f3ebae7889fdd095179ea9e Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 14 Oct 2016 17:52:14 +0200 Subject: [PATCH] binutils: Add lib output Some packages depend on libbfd. This prevents them from having all of binutils in their closure (which is 29 MiB). --- .../tools/misc/binutils/default.nix | 8 +++++++- .../tools/misc/binutils/no-plugins.patch | 19 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/tools/misc/binutils/no-plugins.patch diff --git a/pkgs/development/tools/misc/binutils/default.nix b/pkgs/development/tools/misc/binutils/default.nix index 4c32255e8755..0214cafb1a7b 100644 --- a/pkgs/development/tools/misc/binutils/default.nix +++ b/pkgs/development/tools/misc/binutils/default.nix @@ -32,9 +32,15 @@ stdenv.mkDerivation rec { # This is needed, for instance, so that running "ldd" on a binary that is # PaX-marked to disable mprotect doesn't fail with permission denied. ./pt-pax-flags.patch + + # Bfd looks in BINDIR/../lib for some plugins that don't + # exist. This is pointless (since users can't install plugins + # there) and causes a cycle between the lib and bin outputs, so + # get rid of it. + ./no-plugins.patch ]; - outputs = [ "out" "info" ] ++ (optional (cross == null) "dev"); + outputs = [ "out" "lib" "info" ] ++ (optional (cross == null) "dev"); nativeBuildInputs = [ bison ]; buildInputs = [ zlib ]; diff --git a/pkgs/development/tools/misc/binutils/no-plugins.patch b/pkgs/development/tools/misc/binutils/no-plugins.patch new file mode 100644 index 000000000000..9624b7976b70 --- /dev/null +++ b/pkgs/development/tools/misc/binutils/no-plugins.patch @@ -0,0 +1,19 @@ +diff -ru binutils-2.27-orig/bfd/plugin.c binutils-2.27/bfd/plugin.c +--- binutils-2.27-orig/bfd/plugin.c 2016-10-14 17:46:30.791315555 +0200 ++++ binutils-2.27/bfd/plugin.c 2016-10-14 17:46:38.583298765 +0200 +@@ -333,6 +333,7 @@ + if (plugin_program_name == NULL) + return found; + ++#if 0 + plugin_dir = concat (BINDIR, "/../lib/bfd-plugins", NULL); + p = make_relative_prefix (plugin_program_name, + BINDIR, +@@ -364,6 +365,7 @@ + free (p); + if (d) + closedir (d); ++#endif + + return found; + }