From 7fe89be1464dd0263c7c987d2460613f44c7b229 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra <eelco.dolstra@logicblox.com> Date: Mon, 30 Jun 2014 16:39:39 +0200 Subject: [PATCH] gcc: Fix purity Somewhere the no-sys-dirs.patch got disabled, so gcc was looking in /usr/local/include and /usr/lib. Since I can't fix the patch easily, I've borrowed the --sysroot trick from clang-wrapper. This causes builtin paths to be prefixed with /var/empty (e.g. /var/empty/usr/lib), which don't exist. --- pkgs/build-support/gcc-wrapper/gcc-wrapper.sh | 1 + pkgs/build-support/gcc-wrapper/ld-wrapper.sh | 3 ++ .../development/compilers/gcc/4.8/default.nix | 1 - .../compilers/gcc/4.8/no-sys-dirs.patch | 41 ------------------- 4 files changed, 4 insertions(+), 42 deletions(-) delete mode 100644 pkgs/development/compilers/gcc/4.8/no-sys-dirs.patch diff --git a/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh b/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh index 2ad7783a442c..c53fd44207d0 100644 --- a/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh +++ b/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh @@ -77,6 +77,7 @@ if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE"; then n=$((n + 1)) done params=("${rest[@]}") + NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE --sysroot=/var/empty" fi diff --git a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh index 74b6273848ed..ff3f320e0d8e 100644 --- a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh @@ -32,6 +32,9 @@ if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE" \ # We cannot skip this; barf. echo "impure path \`$p' used in link" >&2 exit 1 + elif test "${p:0:9}" = "--sysroot"; then + # Our ld is not built with sysroot support (Can we fix that?) + : else rest=("${rest[@]}" "$p") fi diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 58732f1a0be2..21487a09dcd2 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -67,7 +67,6 @@ let version = "4.8.3"; patches = [] ++ optional enableParallelBuilding ./parallel-bconfig.patch ++ optional (cross != null) ./libstdc++-target.patch - # ++ optional noSysDirs ./no-sys-dirs.patch # The GNAT Makefiles did not pay attention to CFLAGS_FOR_TARGET for its # target libraries and tools. ++ optional langAda ./gnat-cflags.patch diff --git a/pkgs/development/compilers/gcc/4.8/no-sys-dirs.patch b/pkgs/development/compilers/gcc/4.8/no-sys-dirs.patch deleted file mode 100644 index 79901703cb82..000000000000 --- a/pkgs/development/compilers/gcc/4.8/no-sys-dirs.patch +++ /dev/null @@ -1,41 +0,0 @@ -diff -ru gcc-4.3.1-orig/gcc/cppdefault.c gcc-4.3.1/gcc/cppdefault.c ---- gcc-4.3.1-orig/gcc/cppdefault.c 2007-07-26 10:37:01.000000000 +0200 -+++ gcc-4.3.1/gcc/cppdefault.c 2008-06-25 17:48:23.000000000 +0200 -@@ -41,6 +41,10 @@ - # undef CROSS_INCLUDE_DIR - #endif - -+#undef LOCAL_INCLUDE_DIR -+#undef SYSTEM_INCLUDE_DIR -+#undef STANDARD_INCLUDE_DIR -+ - const struct default_include cpp_include_defaults[] - #ifdef INCLUDE_DEFAULTS - = INCLUDE_DEFAULTS; -diff -ru gcc-4.3.1-orig/gcc/gcc.c gcc-4.3.1/gcc/gcc.c ---- gcc-4.3.1-orig/gcc/gcc.c 2008-03-02 23:55:19.000000000 +0100 -+++ gcc-4.3.1/gcc/gcc.c 2008-06-25 17:52:53.000000000 +0200 -@@ -1478,10 +1478,10 @@ - /* Default prefixes to attach to command names. */ - - #ifndef STANDARD_STARTFILE_PREFIX_1 --#define STANDARD_STARTFILE_PREFIX_1 "/lib/" -+#define STANDARD_STARTFILE_PREFIX_1 "" - #endif - #ifndef STANDARD_STARTFILE_PREFIX_2 --#define STANDARD_STARTFILE_PREFIX_2 "/usr/lib/" -+#define STANDARD_STARTFILE_PREFIX_2 "" - #endif - - #ifdef CROSS_DIRECTORY_STRUCTURE /* Don't use these prefixes for a cross compiler. */ ---- gcc-4.3.1-orig/gcc/Makefile.in 2008-05-11 20:54:15.000000000 +0200 -+++ gcc-4.3.1/gcc/Makefile.in 2008-06-25 17:48:23.000000000 +0200 -@@ -3277,7 +3281,7 @@ - -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ - -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\" \ - -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \ -- -DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \ -+ -DLOCAL_INCLUDE_DIR=\"/no-such-dir\" \ - -DCROSS_INCLUDE_DIR=\"$(CROSS_SYSTEM_HEADER_DIR)\" \ - -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \ - -DPREFIX=\"$(prefix)/\" \