diff --git a/pkgs/build-support/gcc-wrapper/default2.nix b/pkgs/build-support/gcc-wrapper/default2.nix deleted file mode 100644 index efade01963b7..000000000000 --- a/pkgs/build-support/gcc-wrapper/default2.nix +++ /dev/null @@ -1,72 +0,0 @@ -# The Nix `gcc' stdenv.mkDerivation is not directly usable, since it doesn't -# know where the C library and standard header files are. Therefore -# the compiler produced by that package cannot be installed directly -# in a user environment and used from the command line. This -# stdenv.mkDerivation provides a wrapper that sets up the right environment -# variables so that the compiler and the linker just "work". - -{ name ? "", stdenv, nativeTools, nativeLibc, nativePrefix ? "" -, gcc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? "" -, zlib ? null -}: - -assert nativeTools -> nativePrefix != ""; -assert !nativeTools -> gcc != null && binutils != null && coreutils != null; -assert !nativeLibc -> libc != null; - -# For ghdl (the vhdl language provider to gcc) we need zlib in the wrapper -assert (gcc != null && gcc ? langVhdl && gcc.langVhdl) -> zlib != null; - -let - - gccVersion = (builtins.parseDrvName gcc.name).version; - gccName = (builtins.parseDrvName gcc.name).name; - -in - -stdenv.mkDerivation { - name = - (if name != "" then name else gccName + "-wrapper") + - (if gcc != null && gccVersion != "" then "-" + gccVersion else ""); - - builder = ./builder.sh; - setupHook = ./setup-hook.sh; - gccWrapper = ./gcc-wrapper.sh; - gnatWrapper = ./gnat-wrapper.sh; - gnatlinkWrapper = ./gnatlink-wrapper.sh; - ldWrapper = ./ld-wrapper2.sh; - utils = ./utils.sh; - addFlags = ./add-flags; - - inherit nativeTools nativeLibc nativePrefix gcc; - libc = if nativeLibc then null else libc; - binutils = if nativeTools then null else binutils; - # The wrapper scripts use 'cat', so we may need coreutils - coreutils = if nativeTools then null else coreutils; - - langC = if nativeTools then true else gcc.langC; - langCC = if nativeTools then true else gcc.langCC; - langFortran = if nativeTools then false else gcc ? langFortran; - langAda = if nativeTools then false else gcc ? langAda && gcc.langAda; - langVhdl = if nativeTools then false else gcc ? langVhdl && gcc.langVhdl; - zlib = if (gcc != null && gcc ? langVhdl) then zlib else null; - shell = if shell == "" then stdenv.shell else shell; - - meta = - let gcc_ = if gcc != null then gcc else {}; in - (if gcc_ ? meta then removeAttrs gcc.meta ["priority"] else {}) // - { description = - stdenv.lib.attrByPath ["meta" "description"] "System C compiler" gcc_ - + " (wrapper script)"; - }; - - # The dynamic linker has different names on different Linux platforms. - dynamicLinker = - if !nativeLibc then - (if stdenv.system == "i686-linux" then "ld-linux.so.2" else - if stdenv.system == "x86_64-linux" then "ld-linux-x86-64.so.2" else - if stdenv.system == "armv5tel-linux" then "ld-linux.so.3" else - if stdenv.system == "powerpc-linux" then "ld.so.1" else - abort "don't know the name of the dynamic linker for this platform") - else ""; -} diff --git a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh index 3ca9e815a8f1..99ba3968ae33 100644 --- a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh @@ -82,6 +82,13 @@ if test "$NIX_DONT_SET_RPATH" != "1"; then rpath="$rpath $1 " } + libs="" + addToLibs() { + libs="$libs $1" + } + + rpath="" + # First, find all -L... switches. allParams=("${params[@]}" ${extra[@]}) n=0 @@ -93,6 +100,11 @@ if test "$NIX_DONT_SET_RPATH" != "1"; then elif test "$p" = "-L"; then addToLibPath ${p2} n=$((n + 1)) + elif test "$p" = "-l"; then + addToLibs ${p2} + n=$((n + 1)) + elif test "${p:0:2}" = "-l"; then + addToLibs ${p:2} elif [[ "$p" =~ ^[^-].*\.so($|\.) ]]; then # This is a direct reference to a shared library, so add # its directory to the rpath. @@ -105,24 +117,14 @@ if test "$NIX_DONT_SET_RPATH" != "1"; then # Second, for each directory in the library search path (-L...), # see if it contains a dynamic library used by a -l... flag. If # so, add the directory to the rpath. - rpath="" - for i in $libPath; do - n=0 - while test $n -lt ${#allParams[*]}; do - p=${allParams[n]} - p2=${allParams[$((n+1))]} - if test "${p:0:2}" = "-l" -a -f "$i/lib${p:2}.so"; then - addToRPath $i - break - elif test "$p" = "-l" -a -f "$i/lib${p2}"; then - # I haven't seen `-l foo', but you never know... - addToRPath $i + for i in $libs; do + for j in $libPath; do + if test -f "$j/lib$i.so"; then + addToRPath $j break fi - n=$((n + 1)) done - done diff --git a/pkgs/build-support/gcc-wrapper/ld-wrapper2.sh b/pkgs/build-support/gcc-wrapper/ld-wrapper2.sh deleted file mode 100644 index 99ba3968ae33..000000000000 --- a/pkgs/build-support/gcc-wrapper/ld-wrapper2.sh +++ /dev/null @@ -1,154 +0,0 @@ -#! @shell@ -e - -if test -n "$NIX_LD_WRAPPER_START_HOOK"; then - source "$NIX_LD_WRAPPER_START_HOOK" -fi - -if test -z "$NIX_GCC_WRAPPER_FLAGS_SET"; then - source @out@/nix-support/add-flags.sh -fi - -source @out@/nix-support/utils.sh - - -# Optionally filter out paths not refering to the store. -params=("$@") -if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE" \ - -a \( -z "$NIX_IGNORE_LD_THROUGH_GCC" -o -z "$NIX_LDFLAGS_SET" \); then - rest=() - n=0 - while test $n -lt ${#params[*]}; do - p=${params[n]} - p2=${params[$((n+1))]} - if test "${p:0:3}" = "-L/" && badPath "${p:2}"; then - skip $p - elif test "$p" = "-L" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "$p" = "-rpath" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "$p" = "-dynamic-linker" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "${p:0:1}" = "/" && badPath "$p"; then - # We cannot skip this; barf. - echo "impure path \`$p' used in link" >&2 - exit 1 - else - rest=("${rest[@]}" "$p") - fi - n=$((n + 1)) - done - params=("${rest[@]}") -fi - - -extra=() -extraBefore=() - -if test -z "$NIX_LDFLAGS_SET"; then - extra=(${extra[@]} $NIX_LDFLAGS) - extraBefore=(${extraBefore[@]} $NIX_LDFLAGS_BEFORE) -fi - - -# Add all used dynamic libraries to the rpath. -if test "$NIX_DONT_SET_RPATH" != "1"; then - - libPath="" - addToLibPath() { - local path="$1" - if test "${path:0:1}" != "/"; then return 0; fi - case "$path" in - *..*|*./*|*/.*|*//*) - local path2 - if path2=$(readlink -f "$path"); then - path="$path2" - fi - ;; - esac - case $libPath in - *\ $path\ *) return 0 ;; - esac - libPath="$libPath $path " - } - - addToRPath() { - # If the path is not in the store, don't add it to the rpath. - # This typically happens for libraries in /tmp that are later - # copied to $out/lib. If not, we're screwed. - if test "${1:0:${#NIX_STORE}}" != "$NIX_STORE"; then return 0; fi - case $rpath in - *\ $1\ *) return 0 ;; - esac - rpath="$rpath $1 " - } - - libs="" - addToLibs() { - libs="$libs $1" - } - - rpath="" - - # First, find all -L... switches. - allParams=("${params[@]}" ${extra[@]}) - n=0 - while test $n -lt ${#allParams[*]}; do - p=${allParams[n]} - p2=${allParams[$((n+1))]} - if test "${p:0:3}" = "-L/"; then - addToLibPath ${p:2} - elif test "$p" = "-L"; then - addToLibPath ${p2} - n=$((n + 1)) - elif test "$p" = "-l"; then - addToLibs ${p2} - n=$((n + 1)) - elif test "${p:0:2}" = "-l"; then - addToLibs ${p:2} - elif [[ "$p" =~ ^[^-].*\.so($|\.) ]]; then - # This is a direct reference to a shared library, so add - # its directory to the rpath. - path="$(dirname "$p")"; - addToRPath "${path}" - fi - n=$((n + 1)) - done - - # Second, for each directory in the library search path (-L...), - # see if it contains a dynamic library used by a -l... flag. If - # so, add the directory to the rpath. - - for i in $libs; do - for j in $libPath; do - if test -f "$j/lib$i.so"; then - addToRPath $j - break - fi - done - done - - - # Finally, add `-rpath' switches. - for i in $rpath; do - extra=(${extra[@]} -rpath $i) - done -fi - - -# Optionally print debug info. -if test "$NIX_DEBUG" = "1"; then - echo "original flags to @ld@:" >&2 - for i in "${params[@]}"; do - echo " $i" >&2 - done - echo "extra flags to @ld@:" >&2 - for i in ${extra[@]}; do - echo " $i" >&2 - done -fi - -if test -n "$NIX_LD_WRAPPER_EXEC_HOOK"; then - source "$NIX_LD_WRAPPER_EXEC_HOOK" -fi - -exec @ld@ ${extraBefore[@]} "${params[@]}" ${extra[@]} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c50acf1ef8c7..bb386b1d2375 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2623,14 +2623,6 @@ let wrapGCC = wrapGCCWith (import ../build-support/gcc-wrapper) glibc; - # To be removed on stdenv-updates - # By now this has at least the fix of setting the proper rpath when a file "libbla.so" - # is passed directly to the linker. - # This is of interest to programs built by cmake, because this is a common practice - # in cmake builds. - wrapGCC2 = wrapGCCWith (import ../build-support/gcc-wrapper/default2.nix) glibc; - stdenv2 = if (gcc.nativeTools) then stdenv else (overrideGCC stdenv (wrapGCC2 gcc.gcc)); - wrapGCCCross = {gcc, libc, binutils, cross, shell ? "", name ? "gcc-cross-wrapper"}: @@ -4954,11 +4946,10 @@ let }; opencv = import ../development/libraries/opencv { - inherit fetchurl cmake libjpeg libpng libtiff jasper ffmpeg + inherit stdenv fetchurl cmake libjpeg libpng libtiff jasper ffmpeg pkgconfig xineLib; inherit (gtkLibs) gtk glib; inherit (gst_all) gstreamer; - stdenv = stdenv2; }; # this ctl version is needed by openexr_viewers @@ -7179,11 +7170,10 @@ let }; avidemux = import ../applications/video/avidemux { - inherit fetchurl cmake pkgconfig libxml2 qt4 gettext SDL libxslt x264 + inherit stdenv fetchurl cmake pkgconfig libxml2 qt4 gettext SDL libxslt x264 alsaLib lame faac faad2 libvorbis; inherit (gtkLibs) gtk; inherit (xlibs) libXv pixman libpthreadstubs libXau libXdmcp; - stdenv = stdenv2; }; awesome = import ../applications/window-managers/awesome { @@ -7239,19 +7229,17 @@ let }; blender = import ../applications/misc/blender/2.49.nix { - inherit fetchurl cmake mesa gettext libjpeg libpng zlib openal SDL openexr + inherit stdenv fetchurl cmake mesa gettext libjpeg libpng zlib openal SDL openexr libsamplerate libtiff ilmbase freetype; inherit (xlibs) libXi; python = python26Base; - stdenv = stdenv2; }; blender_2_50 = lowPrio (import ../applications/misc/blender { - inherit fetchurl cmake mesa gettext libjpeg libpng zlib openal SDL openexr + inherit stdenv fetchurl cmake mesa gettext libjpeg libpng zlib openal SDL openexr libsamplerate libtiff ilmbase; inherit (xlibs) libXi; python = python31Base; - stdenv = stdenv2; }); bmp = import ../applications/audio/bmp { @@ -8257,7 +8245,7 @@ let }; openoffice = import ../applications/office/openoffice { - inherit fetchurl pam python tcsh libxslt perl zlib libjpeg + inherit stdenv fetchurl pam python tcsh libxslt perl zlib libjpeg expat pkgconfig freetype fontconfig libwpd libxml2 db4 sablotron curl libsndfile flex zip unzip libmspack getopt file cairo which icu jdk ant cups openssl bison boost gperf cppunit; @@ -8266,11 +8254,10 @@ let inherit (perlPackages) ArchiveZip CompressZlib; inherit (gnome) GConf ORBit2; neon = neon026; - stdenv = stdenv2; }; go_oo = import ../applications/office/openoffice/go-oo.nix { - inherit fetchurl pam python tcsh libxslt perl zlib libjpeg + inherit stdenv fetchurl pam python tcsh libxslt perl zlib libjpeg expat pkgconfig freetype fontconfig libwpd libxml2 db4 sablotron curl libsndfile flex zip unzip libmspack getopt file cairo which icu jdk ant cups openssl bison boost gperf cppunit; @@ -8279,7 +8266,6 @@ let inherit (perlPackages) ArchiveZip CompressZlib; inherit (gnome) GConf ORBit2; neon = neon026; - stdenv = stdenv2; inherit autoconf openldap postgresql; }; @@ -8308,8 +8294,7 @@ let }; paraview = import ../applications/graphics/paraview { - inherit fetchurl cmake qt4; - stdenv = stdenv2; + inherit stdenv fetchurl cmake qt4; }; partitionManager = import ../tools/misc/partition-manager { @@ -9263,7 +9248,7 @@ let kde44 = makeOverridable (import ../desktops/kde-4.4) (pkgs // { openexr = openexr_1_6_1; - stdenv = stdenv2; + inherit stdenv; }); xfce = xfce4;