diff options
Diffstat (limited to 'pkgs/development/compilers')
59 files changed, 430 insertions, 696 deletions
diff --git a/pkgs/development/compilers/chicken/setup-hook.sh b/pkgs/development/compilers/chicken/setup-hook.sh index d7f28539dc64..b0d9b53b5378 100644 --- a/pkgs/development/compilers/chicken/setup-hook.sh +++ b/pkgs/development/compilers/chicken/setup-hook.sh @@ -4,4 +4,4 @@ addChickenRepositoryPath() { export CHICKEN_INCLUDE_PATH="$1/share;$CHICKEN_INCLUDE_PATH" } -envHooks=(${envHooks[@]} addChickenRepositoryPath) +addEnvHooks "$targetOffset" addChickenRepositoryPath diff --git a/pkgs/development/compilers/colm/default.nix b/pkgs/development/compilers/colm/default.nix index ee9224b380c8..06c4b62e2946 100644 --- a/pkgs/development/compilers/colm/default.nix +++ b/pkgs/development/compilers/colm/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { description = "A programming language for the analysis and transformation of computer languages"; homepage = http://www.colm.net/open-source/colm; license = licenses.gpl2; - platforms = [ "x86_64-linux" "x86_64-darwin" ]; + platforms = platforms.unix; maintainers = with maintainers; [ pSub ]; }; } diff --git a/pkgs/development/compilers/coreclr/default.nix b/pkgs/development/compilers/coreclr/default.nix index 17d91f36875c..0681e8210a6a 100644 --- a/pkgs/development/compilers/coreclr/default.nix +++ b/pkgs/development/compilers/coreclr/default.nix @@ -83,7 +83,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = http://dotnet.github.io/core/; + homepage = https://dotnet.github.io/core/; description = ".NET is a general purpose development platform"; platforms = [ "x86_64-linux" ]; maintainers = with maintainers; [ kuznero ]; diff --git a/pkgs/development/compilers/gcc/4.5/default.nix b/pkgs/development/compilers/gcc/4.5/default.nix index b4ae867d5859..8f29d5f2cb14 100644 --- a/pkgs/development/compilers/gcc/4.5/default.nix +++ b/pkgs/development/compilers/gcc/4.5/default.nix @@ -118,7 +118,7 @@ let version = "4.5.4"; "--enable-sjlj-exceptions" "--enable-hash-synchronization" "--enable-version-specific-runtime-libs" - "--disable-libssp" + "--enable-libssp" "--disable-nls" "--with-dwarf2" ] else [ @@ -229,11 +229,22 @@ stdenv.mkDerivation ({ inherit noSysDirs profiledCompiler staticCompiler langJava libcCross crossMingw; + depsBuildBuild = [ buildPackages.stdenv.cc ]; nativeBuildInputs = [ texinfo which gettext ] ++ optional (perl != null) perl; - buildInputs = [ gmp mpfr libmpc libelf ] - ++ (optional (ppl != null) ppl) + # For building runtime libs + depsBuildTarget = + if hostPlatform == buildPlatform then [ + targetPackages.stdenv.cc.bintools # newly-built gcc will be used + ] else assert targetPlatform == hostPlatform; [ # build != host == target + stdenv.cc + ]; + + buildInputs = [ + gmp mpfr libmpc libelf + targetPackages.stdenv.cc.bintools # For linking code at run-time + ] ++ (optional (ppl != null) ppl) ++ (optional (cloogppl != null) cloogppl) ++ (optional (zlib != null) zlib) ++ (optional langJava boehmgc) @@ -245,11 +256,7 @@ stdenv.mkDerivation ({ ; # TODO(@Ericson2314): Always pass "--target" and always prefix. - configurePlatforms = - # TODO(@Ericson2314): Figure out what's going wrong with Arm - if hostPlatform == targetPlatform && targetPlatform.isArm - then [] - else [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; + configurePlatforms = [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; configureFlags = # Basic dependencies @@ -314,56 +321,9 @@ stdenv.mkDerivation ({ /* For cross-built gcc (build != host == target) */ crossAttrs = { - AR_FOR_BUILD = "ar"; - AS_FOR_BUILD = "as"; - LD_FOR_BUILD = "ld"; - NM_FOR_BUILD = "nm"; - OBJCOPY_FOR_BUILD = "objcopy"; - OBJDUMP_FOR_BUILD = "objdump"; - RANLIB_FOR_BUILD = "ranlib"; - SIZE_FOR_BUILD = "size"; - STRINGS_FOR_BUILD = "strings"; - STRIP_FOR_BUILD = "strip"; - CC_FOR_BUILD = "gcc"; - CXX_FOR_BUILD = "g++"; - - AR = "${targetPlatform.config}-ar"; - AS = "${targetPlatform.config}-as"; - LD = "${targetPlatform.config}-ld"; - NM = "${targetPlatform.config}-nm"; - OBJCOPY = "${targetPlatform.config}-objcopy"; - OBJDUMP = "${targetPlatform.config}-objdump"; - RANLIB = "${targetPlatform.config}-ranlib"; - SIZE = "${targetPlatform.config}-size"; - STRINGS = "${targetPlatform.config}-strings"; - STRIP = "${targetPlatform.config}-strip"; - CC = "${targetPlatform.config}-gcc"; - CXX = "${targetPlatform.config}-g++"; - - AR_FOR_TARGET = "${targetPlatform.config}-ar"; - AS_FOR_TARGET = "${targetPlatform.config}-as"; - LD_FOR_TARGET = "${targetPlatform.config}-ld"; - NM_FOR_TARGET = "${targetPlatform.config}-nm"; - OBJCOPY_FOR_TARGET = "${targetPlatform.config}-objcopy"; - OBJDUMP_FOR_TARGET = "${targetPlatform.config}-objdump"; - RANLIB_FOR_TARGET = "${targetPlatform.config}-ranlib"; - SIZE_FOR_TARGET = "${targetPlatform.config}-size"; - STRINGS_FOR_TARGET = "${targetPlatform.config}-strings"; - STRIP_FOR_TARGET = "${targetPlatform.config}-strip"; - CC_FOR_TARGET = "${targetPlatform.config}-gcc"; - CXX_FOR_TARGET = "${targetPlatform.config}-g++"; - dontStrip = true; }; - NIX_BUILD_BINTOOLS = buildPackages.stdenv.cc.bintools; - NIX_BUILD_CC = buildPackages.stdenv.cc; - - # Needed for the cross compilation to work - AR = "ar"; - LD = "ld"; - CC = "gcc"; - # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the # library headers and binaries, regarless of the language being compiled. # @@ -422,8 +382,11 @@ stdenv.mkDerivation ({ "-Wl,${libpthreadCross.TARGET_LDFLAGS}" ]); - passthru = { inherit langC langCC langAda langFortran langVhdl - enableMultilib version; isGNU = true; }; + passthru = { + inherit langC langCC langAda langFortran langVhdl enableMultilib version; + isGNU = true; + hardeningUnsupportedFlags = [ "stackprotector" ]; + }; enableParallelBuilding = !langAda; diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 4efac1b26c34..a28ad871ead2 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -163,13 +163,9 @@ let version = "4.8.5"; "--enable-threads=win32" "--enable-sjlj-exceptions" "--enable-hash-synchronization" - "--disable-libssp" + "--enable-libssp" "--disable-nls" "--with-dwarf2" - # I think noone uses shared gcc libs in mingw, so we better do the same. - # In any case, mingw32 g++ linking is broken by default with shared libs, - # unless adding "-lsupc++" to any linking command. I don't know why. - "--disable-shared" # To keep ABI compatibility with upstream mingw-w64 "--enable-fully-dynamic-string" ] else @@ -271,6 +267,7 @@ stdenv.mkDerivation ({ inherit noSysDirs staticCompiler langJava libcCross crossMingw; + depsBuildBuild = [ buildPackages.stdenv.cc ]; nativeBuildInputs = [ texinfo which gettext ] ++ (optional (perl != null) perl) ++ (optional javaAwtGtk pkgconfig); @@ -301,11 +298,7 @@ stdenv.mkDerivation ({ dontDisableStatic = true; # TODO(@Ericson2314): Always pass "--target" and always prefix. - configurePlatforms = - # TODO(@Ericson2314): Figure out what's going wrong with Arm - if hostPlatform == targetPlatform && targetPlatform.isArm - then [] - else [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; + configurePlatforms = [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; configureFlags = # Basic dependencies @@ -401,57 +394,12 @@ stdenv.mkDerivation ({ /* For cross-built gcc (build != host == target) */ crossAttrs = { - AR_FOR_BUILD = "ar"; - AS_FOR_BUILD = "as"; - LD_FOR_BUILD = "ld"; - NM_FOR_BUILD = "nm"; - OBJCOPY_FOR_BUILD = "objcopy"; - OBJDUMP_FOR_BUILD = "objdump"; - RANLIB_FOR_BUILD = "ranlib"; - SIZE_FOR_BUILD = "size"; - STRINGS_FOR_BUILD = "strings"; - STRIP_FOR_BUILD = "strip"; - CC_FOR_BUILD = "gcc"; - CXX_FOR_BUILD = "g++"; - - AR = "${targetPlatform.config}-ar"; - AS = "${targetPlatform.config}-as"; - LD = "${targetPlatform.config}-ld"; - NM = "${targetPlatform.config}-nm"; - OBJCOPY = "${targetPlatform.config}-objcopy"; - OBJDUMP = "${targetPlatform.config}-objdump"; - RANLIB = "${targetPlatform.config}-ranlib"; - SIZE = "${targetPlatform.config}-size"; - STRINGS = "${targetPlatform.config}-strings"; - STRIP = "${targetPlatform.config}-strip"; - CC = "${targetPlatform.config}-gcc"; - CXX = "${targetPlatform.config}-g++"; - - AR_FOR_TARGET = "${targetPlatform.config}-ar"; - AS_FOR_TARGET = "${targetPlatform.config}-as"; - LD_FOR_TARGET = "${targetPlatform.config}-ld"; - NM_FOR_TARGET = "${targetPlatform.config}-nm"; - OBJCOPY_FOR_TARGET = "${targetPlatform.config}-objcopy"; - OBJDUMP_FOR_TARGET = "${targetPlatform.config}-objdump"; - RANLIB_FOR_TARGET = "${targetPlatform.config}-ranlib"; - SIZE_FOR_TARGET = "${targetPlatform.config}-size"; - STRINGS_FOR_TARGET = "${targetPlatform.config}-strings"; - STRIP_FOR_TARGET = "${targetPlatform.config}-strip"; - CC_FOR_TARGET = "${targetPlatform.config}-gcc"; - CXX_FOR_TARGET = "${targetPlatform.config}-g++"; - dontStrip = true; buildFlags = ""; }; - NIX_BUILD_BINTOOLS = buildPackages.stdenv.cc.bintools; - NIX_BUILD_CC = buildPackages.stdenv.cc; - - # Needed for the cross compilation to work - AR = "ar"; - LD = "ld"; # http://gcc.gnu.org/install/specific.html#x86-64-x-solaris210 - CC = if stdenv.system == "x86_64-solaris" then "gcc -m64" else "gcc"; + ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64"; # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the # library headers and binaries, regarless of the language being compiled. @@ -511,8 +459,11 @@ stdenv.mkDerivation ({ "-Wl,${libpthreadCross.TARGET_LDFLAGS}" ]); - passthru = - { inherit langC langCC langObjC langObjCpp langAda langFortran langVhdl langGo version; isGNU = true; }; + passthru = { + inherit langC langCC langObjC langObjCpp langAda langFortran langVhdl langGo version; + isGNU = true; + hardeningUnsupportedFlags = [ "stackprotector" ]; + }; inherit enableParallelBuilding enableMultilib; diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix index fb4218a0edea..844e0a7bebf4 100644 --- a/pkgs/development/compilers/gcc/4.9/default.nix +++ b/pkgs/development/compilers/gcc/4.9/default.nix @@ -154,13 +154,9 @@ let version = "4.9.4"; "--enable-threads=win32" "--enable-sjlj-exceptions" "--enable-hash-synchronization" - "--disable-libssp" + "--enable-libssp" "--disable-nls" "--with-dwarf2" - # I think noone uses shared gcc libs in mingw, so we better do the same. - # In any case, mingw32 g++ linking is broken by default with shared libs, - # unless adding "-lsupc++" to any linking command. I don't know why. - "--disable-shared" # To keep ABI compatibility with upstream mingw-w64 "--enable-fully-dynamic-string" ] else @@ -266,12 +262,23 @@ stdenv.mkDerivation ({ inherit noSysDirs staticCompiler langJava libcCross crossMingw; + depsBuildBuild = [ buildPackages.stdenv.cc ]; nativeBuildInputs = [ texinfo which gettext ] ++ (optional (perl != null) perl) ++ (optional javaAwtGtk pkgconfig); - buildInputs = [ gmp mpfr libmpc libelf ] - ++ (optional (cloog != null) cloog) + # For building runtime libs + depsBuildTarget = + if hostPlatform == buildPlatform then [ + targetPackages.stdenv.cc.bintools # newly-built gcc will be used + ] else assert targetPlatform == hostPlatform; [ # build != host == target + stdenv.cc + ]; + + buildInputs = [ + gmp mpfr libmpc libelf + targetPackages.stdenv.cc.bintools # For linking code at run-time + ] ++ (optional (cloog != null) cloog) ++ (optional (isl != null) isl) ++ (optional (zlib != null) zlib) ++ (optionals langJava [ boehmgc zip unzip ]) @@ -300,11 +307,7 @@ stdenv.mkDerivation ({ dontDisableStatic = true; # TODO(@Ericson2314): Always pass "--target" and always prefix. - configurePlatforms = - # TODO(@Ericson2314): Figure out what's going wrong with Arm - if hostPlatform == targetPlatform && targetPlatform.isArm - then [] - else [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; + configurePlatforms = [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; configureFlags = # Basic dependencies @@ -399,57 +402,12 @@ stdenv.mkDerivation ({ /* For cross-built gcc (build != host == target) */ crossAttrs = { - AR_FOR_BUILD = "ar"; - AS_FOR_BUILD = "as"; - LD_FOR_BUILD = "ld"; - NM_FOR_BUILD = "nm"; - OBJCOPY_FOR_BUILD = "objcopy"; - OBJDUMP_FOR_BUILD = "objdump"; - RANLIB_FOR_BUILD = "ranlib"; - SIZE_FOR_BUILD = "size"; - STRINGS_FOR_BUILD = "strings"; - STRIP_FOR_BUILD = "strip"; - CC_FOR_BUILD = "gcc"; - CXX_FOR_BUILD = "g++"; - - AR = "${targetPlatform.config}-ar"; - AS = "${targetPlatform.config}-as"; - LD = "${targetPlatform.config}-ld"; - NM = "${targetPlatform.config}-nm"; - OBJCOPY = "${targetPlatform.config}-objcopy"; - OBJDUMP = "${targetPlatform.config}-objdump"; - RANLIB = "${targetPlatform.config}-ranlib"; - SIZE = "${targetPlatform.config}-size"; - STRINGS = "${targetPlatform.config}-strings"; - STRIP = "${targetPlatform.config}-strip"; - CC = "${targetPlatform.config}-gcc"; - CXX = "${targetPlatform.config}-g++"; - - AR_FOR_TARGET = "${targetPlatform.config}-ar"; - AS_FOR_TARGET = "${targetPlatform.config}-as"; - LD_FOR_TARGET = "${targetPlatform.config}-ld"; - NM_FOR_TARGET = "${targetPlatform.config}-nm"; - OBJCOPY_FOR_TARGET = "${targetPlatform.config}-objcopy"; - OBJDUMP_FOR_TARGET = "${targetPlatform.config}-objdump"; - RANLIB_FOR_TARGET = "${targetPlatform.config}-ranlib"; - SIZE_FOR_TARGET = "${targetPlatform.config}-size"; - STRINGS_FOR_TARGET = "${targetPlatform.config}-strings"; - STRIP_FOR_TARGET = "${targetPlatform.config}-strip"; - CC_FOR_TARGET = "${targetPlatform.config}-gcc"; - CXX_FOR_TARGET = "${targetPlatform.config}-g++"; - dontStrip = true; buildFlags = ""; }; - NIX_BUILD_BINTOOLS = buildPackages.stdenv.cc.bintools; - NIX_BUILD_CC = buildPackages.stdenv.cc; - - # Needed for the cross compilation to work - AR = "ar"; - LD = "ld"; # http://gcc.gnu.org/install/specific.html#x86-64-x-solaris210 - CC = if stdenv.system == "x86_64-solaris" then "gcc -m64" else "gcc"; + ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64"; # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the # library headers and binaries, regarless of the language being compiled. diff --git a/pkgs/development/compilers/gcc/5/default.nix b/pkgs/development/compilers/gcc/5/default.nix index b4399ef72f19..148409bee9bf 100644 --- a/pkgs/development/compilers/gcc/5/default.nix +++ b/pkgs/development/compilers/gcc/5/default.nix @@ -49,9 +49,6 @@ assert libelf != null -> zlib != null; # Make sure we get GNU sed. assert hostPlatform.isDarwin -> gnused != null; -# Need c++filt on darwin -assert hostPlatform.isDarwin -> targetPackages.stdenv.cc.bintools or null != null; - # The go frontend is written in c++ assert langGo -> langCC; @@ -157,13 +154,9 @@ let version = "5.5.0"; "--enable-threads=win32" "--enable-sjlj-exceptions" "--enable-hash-synchronization" - "--disable-libssp" + "--enable-libssp" "--disable-nls" "--with-dwarf2" - # I think noone uses shared gcc libs in mingw, so we better do the same. - # In any case, mingw32 g++ linking is broken by default with shared libs, - # unless adding "-lsupc++" to any linking command. I don't know why. - "--disable-shared" # To keep ABI compatibility with upstream mingw-w64 "--enable-fully-dynamic-string" ] else @@ -281,17 +274,27 @@ stdenv.mkDerivation ({ inherit noSysDirs staticCompiler langJava libcCross crossMingw; + depsBuildBuild = [ buildPackages.stdenv.cc ]; nativeBuildInputs = [ texinfo which gettext ] ++ (optional (perl != null) perl) ++ (optional javaAwtGtk pkgconfig); - buildInputs = [ gmp mpfr libmpc libelf ] - ++ (optional (isl != null) isl) + # For building runtime libs + depsBuildTarget = + if hostPlatform == buildPlatform then [ + targetPackages.stdenv.cc.bintools # newly-built gcc will be used + ] else assert targetPlatform == hostPlatform; [ # build != host == target + stdenv.cc + ]; + + buildInputs = [ + gmp mpfr libmpc libelf + targetPackages.stdenv.cc.bintools # For linking code at run-time + ] ++ (optional (isl != null) isl) ++ (optional (zlib != null) zlib) ++ (optionals langJava [ boehmgc zip unzip ]) ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs)) ++ (optionals (targetPlatform != hostPlatform) [targetPackages.stdenv.cc.bintools]) - ++ (optionals (buildPlatform != hostPlatform) [buildPackages.stdenv.cc]) ++ (optionals langAda [gnatboot]) ++ (optionals langVhdl [gnat]) @@ -313,11 +316,7 @@ stdenv.mkDerivation ({ dontDisableStatic = true; # TODO(@Ericson2314): Always pass "--target" and always prefix. - configurePlatforms = - # TODO(@Ericson2314): Figure out what's going wrong with Arm - if hostPlatform == targetPlatform && targetPlatform.isArm - then [] - else [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; + configurePlatforms = [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; configureFlags = # Basic dependencies @@ -408,57 +407,12 @@ stdenv.mkDerivation ({ /* For cross-built gcc (build != host == target) */ crossAttrs = { - AR_FOR_BUILD = "ar"; - AS_FOR_BUILD = "as"; - LD_FOR_BUILD = "ld"; - NM_FOR_BUILD = "nm"; - OBJCOPY_FOR_BUILD = "objcopy"; - OBJDUMP_FOR_BUILD = "objdump"; - RANLIB_FOR_BUILD = "ranlib"; - SIZE_FOR_BUILD = "size"; - STRINGS_FOR_BUILD = "strings"; - STRIP_FOR_BUILD = "strip"; - CC_FOR_BUILD = "gcc"; - CXX_FOR_BUILD = "g++"; - - AR = "${targetPlatform.config}-ar"; - AS = "${targetPlatform.config}-as"; - LD = "${targetPlatform.config}-ld"; - NM = "${targetPlatform.config}-nm"; - OBJCOPY = "${targetPlatform.config}-objcopy"; - OBJDUMP = "${targetPlatform.config}-objdump"; - RANLIB = "${targetPlatform.config}-ranlib"; - SIZE = "${targetPlatform.config}-size"; - STRINGS = "${targetPlatform.config}-strings"; - STRIP = "${targetPlatform.config}-strip"; - CC = "${targetPlatform.config}-gcc"; - CXX = "${targetPlatform.config}-g++"; - - AR_FOR_TARGET = "${targetPlatform.config}-ar"; - AS_FOR_TARGET = "${targetPlatform.config}-as"; - LD_FOR_TARGET = "${targetPlatform.config}-ld"; - NM_FOR_TARGET = "${targetPlatform.config}-nm"; - OBJCOPY_FOR_TARGET = "${targetPlatform.config}-objcopy"; - OBJDUMP_FOR_TARGET = "${targetPlatform.config}-objdump"; - RANLIB_FOR_TARGET = "${targetPlatform.config}-ranlib"; - SIZE_FOR_TARGET = "${targetPlatform.config}-size"; - STRINGS_FOR_TARGET = "${targetPlatform.config}-strings"; - STRIP_FOR_TARGET = "${targetPlatform.config}-strip"; - CC_FOR_TARGET = "${targetPlatform.config}-gcc"; - CXX_FOR_TARGET = "${targetPlatform.config}-g++"; - dontStrip = true; buildFlags = ""; }; - NIX_BUILD_BINTOOLS = buildPackages.stdenv.cc.bintools; - NIX_BUILD_CC = buildPackages.stdenv.cc; - - # Needed for the cross compilation to work - AR = "ar"; - LD = "ld"; # http://gcc.gnu.org/install/specific.html#x86-64-x-solaris210 - CC = if stdenv.system == "x86_64-solaris" then "gcc -m64" else "gcc"; + ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64"; # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the # library headers and binaries, regarless of the language being compiled. diff --git a/pkgs/development/compilers/gcc/6/default.nix b/pkgs/development/compilers/gcc/6/default.nix index d923092168ab..c6114b7e6395 100644 --- a/pkgs/development/compilers/gcc/6/default.nix +++ b/pkgs/development/compilers/gcc/6/default.nix @@ -49,9 +49,6 @@ assert libelf != null -> zlib != null; # Make sure we get GNU sed. assert hostPlatform.isDarwin -> gnused != null; -# Need c++filt on darwin -assert hostPlatform.isDarwin -> targetPackages.stdenv.cc.bintools or null != null; - # The go frontend is written in c++ assert langGo -> langCC; @@ -155,13 +152,9 @@ let version = "6.4.0"; "--enable-threads=win32" "--enable-sjlj-exceptions" "--enable-hash-synchronization" - "--disable-libssp" + "--enable-libssp" "--disable-nls" "--with-dwarf2" - # I think noone uses shared gcc libs in mingw, so we better do the same. - # In any case, mingw32 g++ linking is broken by default with shared libs, - # unless adding "-lsupc++" to any linking command. I don't know why. - "--disable-shared" # To keep ABI compatibility with upstream mingw-w64 "--enable-fully-dynamic-string" ] else @@ -280,12 +273,23 @@ stdenv.mkDerivation ({ inherit noSysDirs staticCompiler langJava libcCross crossMingw; + depsBuildBuild = [ buildPackages.stdenv.cc ]; nativeBuildInputs = [ texinfo which gettext ] ++ (optional (perl != null) perl) ++ (optional javaAwtGtk pkgconfig); - buildInputs = [ gmp mpfr libmpc libelf ] - ++ (optional (isl != null) isl) + # For building runtime libs + depsBuildTarget = + if hostPlatform == buildPlatform then [ + targetPackages.stdenv.cc.bintools # newly-built gcc will be used + ] else assert targetPlatform == hostPlatform; [ # build != host == target + stdenv.cc + ]; + + buildInputs = [ + gmp mpfr libmpc libelf + targetPackages.stdenv.cc.bintools # For linking code at run-time + ] ++ (optional (isl != null) isl) ++ (optional (zlib != null) zlib) ++ (optionals langJava [ boehmgc zip unzip ]) ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs)) @@ -315,11 +319,7 @@ stdenv.mkDerivation ({ dontDisableStatic = true; # TODO(@Ericson2314): Always pass "--target" and always prefix. - configurePlatforms = - # TODO(@Ericson2314): Figure out what's going wrong with Arm - if hostPlatform == targetPlatform && targetPlatform.isArm - then [] - else [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; + configurePlatforms = [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; configureFlags = # Basic dependencies @@ -409,57 +409,12 @@ stdenv.mkDerivation ({ /* For cross-built gcc (build != host == target) */ crossAttrs = { - AR_FOR_BUILD = "ar"; - AS_FOR_BUILD = "as"; - LD_FOR_BUILD = "ld"; - NM_FOR_BUILD = "nm"; - OBJCOPY_FOR_BUILD = "objcopy"; - OBJDUMP_FOR_BUILD = "objdump"; - RANLIB_FOR_BUILD = "ranlib"; - SIZE_FOR_BUILD = "size"; - STRINGS_FOR_BUILD = "strings"; - STRIP_FOR_BUILD = "strip"; - CC_FOR_BUILD = "gcc"; - CXX_FOR_BUILD = "g++"; - - AR = "${targetPlatform.config}-ar"; - AS = "${targetPlatform.config}-as"; - LD = "${targetPlatform.config}-ld"; - NM = "${targetPlatform.config}-nm"; - OBJCOPY = "${targetPlatform.config}-objcopy"; - OBJDUMP = "${targetPlatform.config}-objdump"; - RANLIB = "${targetPlatform.config}-ranlib"; - SIZE = "${targetPlatform.config}-size"; - STRINGS = "${targetPlatform.config}-strings"; - STRIP = "${targetPlatform.config}-strip"; - CC = "${targetPlatform.config}-gcc"; - CXX = "${targetPlatform.config}-g++"; - - AR_FOR_TARGET = "${targetPlatform.config}-ar"; - AS_FOR_TARGET = "${targetPlatform.config}-as"; - LD_FOR_TARGET = "${targetPlatform.config}-ld"; - NM_FOR_TARGET = "${targetPlatform.config}-nm"; - OBJCOPY_FOR_TARGET = "${targetPlatform.config}-objcopy"; - OBJDUMP_FOR_TARGET = "${targetPlatform.config}-objdump"; - RANLIB_FOR_TARGET = "${targetPlatform.config}-ranlib"; - SIZE_FOR_TARGET = "${targetPlatform.config}-size"; - STRINGS_FOR_TARGET = "${targetPlatform.config}-strings"; - STRIP_FOR_TARGET = "${targetPlatform.config}-strip"; - CC_FOR_TARGET = "${targetPlatform.config}-gcc"; - CXX_FOR_TARGET = "${targetPlatform.config}-g++"; - dontStrip = true; buildFlags = ""; }; - NIX_BUILD_BINTOOLS = buildPackages.stdenv.cc.bintools; - NIX_BUILD_CC = buildPackages.stdenv.cc; - - # Needed for the cross compilation to work - AR = "ar"; - LD = "ld"; # http://gcc.gnu.org/install/specific.html#x86-64-x-solaris210 - CC = if stdenv.system == "x86_64-solaris" then "gcc -m64" else "gcc"; + ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64"; # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the # library headers and binaries, regarless of the language being compiled. diff --git a/pkgs/development/compilers/gcc/7/default.nix b/pkgs/development/compilers/gcc/7/default.nix index c9daf813e6f8..c20546b59e8e 100644 --- a/pkgs/development/compilers/gcc/7/default.nix +++ b/pkgs/development/compilers/gcc/7/default.nix @@ -50,9 +50,6 @@ assert libelf != null -> zlib != null; # Make sure we get GNU sed. assert hostPlatform.isDarwin -> gnused != null; -# Need c++filt on darwin -assert hostPlatform.isDarwin -> targetPackages.stdenv.cc.bintools or null != null; - # The go frontend is written in c++ assert langGo -> langCC; @@ -153,13 +150,9 @@ let version = "7.2.0"; "--enable-threads=win32" "--enable-sjlj-exceptions" "--enable-hash-synchronization" - "--disable-libssp" + "--enable-libssp" "--disable-nls" "--with-dwarf2" - # I think noone uses shared gcc libs in mingw, so we better do the same. - # In any case, mingw32 g++ linking is broken by default with shared libs, - # unless adding "-lsupc++" to any linking command. I don't know why. - "--disable-shared" # To keep ABI compatibility with upstream mingw-w64 "--enable-fully-dynamic-string" ] else @@ -277,12 +270,23 @@ stdenv.mkDerivation ({ inherit noSysDirs staticCompiler langJava libcCross crossMingw; + depsBuildBuild = [ buildPackages.stdenv.cc ]; nativeBuildInputs = [ texinfo which gettext ] ++ (optional (perl != null) perl) ++ (optional javaAwtGtk pkgconfig); - buildInputs = [ gmp mpfr libmpc libelf flex ] - ++ (optional (isl != null) isl) + # For building runtime libs + depsBuildTarget = + if hostPlatform == buildPlatform then [ + targetPackages.stdenv.cc.bintools # newly-built gcc will be used + ] else assert targetPlatform == hostPlatform; [ # build != host == target + stdenv.cc + ]; + + buildInputs = [ + gmp mpfr libmpc libelf flex + targetPackages.stdenv.cc.bintools # For linking code at run-time + ] ++ (optional (isl != null) isl) ++ (optional (zlib != null) zlib) ++ (optionals langJava [ boehmgc zip unzip ]) ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs)) @@ -308,11 +312,7 @@ stdenv.mkDerivation ({ dontDisableStatic = true; # TODO(@Ericson2314): Always pass "--target" and always prefix. - configurePlatforms = - # TODO(@Ericson2314): Figure out what's going wrong with Arm - if hostPlatform == targetPlatform && targetPlatform.isArm - then [] - else [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; + configurePlatforms = [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; configureFlags = # Basic dependencies @@ -403,57 +403,12 @@ stdenv.mkDerivation ({ /* For cross-built gcc (build != host == target) */ crossAttrs = { - AR_FOR_BUILD = "ar"; - AS_FOR_BUILD = "as"; - LD_FOR_BUILD = "ld"; - NM_FOR_BUILD = "nm"; - OBJCOPY_FOR_BUILD = "objcopy"; - OBJDUMP_FOR_BUILD = "objdump"; - RANLIB_FOR_BUILD = "ranlib"; - SIZE_FOR_BUILD = "size"; - STRINGS_FOR_BUILD = "strings"; - STRIP_FOR_BUILD = "strip"; - CC_FOR_BUILD = "gcc"; - CXX_FOR_BUILD = "g++"; - - AR = "${targetPlatform.config}-ar"; - AS = "${targetPlatform.config}-as"; - LD = "${targetPlatform.config}-ld"; - NM = "${targetPlatform.config}-nm"; - OBJCOPY = "${targetPlatform.config}-objcopy"; - OBJDUMP = "${targetPlatform.config}-objdump"; - RANLIB = "${targetPlatform.config}-ranlib"; - SIZE = "${targetPlatform.config}-size"; - STRINGS = "${targetPlatform.config}-strings"; - STRIP = "${targetPlatform.config}-strip"; - CC = "${targetPlatform.config}-gcc"; - CXX = "${targetPlatform.config}-g++"; - - AR_FOR_TARGET = "${targetPlatform.config}-ar"; - AS_FOR_TARGET = "${targetPlatform.config}-as"; - LD_FOR_TARGET = "${targetPlatform.config}-ld"; - NM_FOR_TARGET = "${targetPlatform.config}-nm"; - OBJCOPY_FOR_TARGET = "${targetPlatform.config}-objcopy"; - OBJDUMP_FOR_TARGET = "${targetPlatform.config}-objdump"; - RANLIB_FOR_TARGET = "${targetPlatform.config}-ranlib"; - SIZE_FOR_TARGET = "${targetPlatform.config}-size"; - STRINGS_FOR_TARGET = "${targetPlatform.config}-strings"; - STRIP_FOR_TARGET = "${targetPlatform.config}-strip"; - CC_FOR_TARGET = "${targetPlatform.config}-gcc"; - CXX_FOR_TARGET = "${targetPlatform.config}-g++"; - dontStrip = true; buildFlags = ""; }; - NIX_BUILD_BINTOOLS = buildPackages.stdenv.cc.bintools; - NIX_BUILD_CC = buildPackages.stdenv.cc; - - # Needed for the cross compilation to work - AR = "ar"; - LD = "ld"; # http://gcc.gnu.org/install/specific.html#x86-64-x-solaris210 - CC = if stdenv.system == "x86_64-solaris" then "gcc -m64" else "gcc"; + ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64"; # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the # library headers and binaries, regarless of the language being compiled. diff --git a/pkgs/development/compilers/gcc/snapshot/default.nix b/pkgs/development/compilers/gcc/snapshot/default.nix index 9d1bdc08133d..c571487361b2 100644 --- a/pkgs/development/compilers/gcc/snapshot/default.nix +++ b/pkgs/development/compilers/gcc/snapshot/default.nix @@ -50,9 +50,6 @@ assert libelf != null -> zlib != null; # Make sure we get GNU sed. assert hostPlatform.isDarwin -> gnused != null; -# Need c++filt on darwin -assert hostPlatform.isDarwin -> targetPackages.stdenv.cc.bintools or null != null; - # The go frontend is written in c++ assert langGo -> langCC; @@ -153,13 +150,9 @@ let version = "7-20170409"; "--enable-threads=win32" "--enable-sjlj-exceptions" "--enable-hash-synchronization" - "--disable-libssp" + "--enable-libssp" "--disable-nls" "--with-dwarf2" - # I think noone uses shared gcc libs in mingw, so we better do the same. - # In any case, mingw32 g++ linking is broken by default with shared libs, - # unless adding "-lsupc++" to any linking command. I don't know why. - "--disable-shared" # To keep ABI compatibility with upstream mingw-w64 "--enable-fully-dynamic-string" ] else @@ -264,12 +257,23 @@ stdenv.mkDerivation ({ inherit noSysDirs staticCompiler langJava libcCross crossMingw; + depsBuildBuild = [ buildPackages.stdenv.cc ]; nativeBuildInputs = [ texinfo which gettext ] ++ (optional (perl != null) perl) ++ (optional javaAwtGtk pkgconfig); - buildInputs = [ gmp mpfr libmpc libelf flex ] - ++ (optional (isl != null) isl) + # For building runtime libs + depsBuildTarget = + if hostPlatform == buildPlatform then [ + targetPackages.stdenv.cc.bintools # newly-built gcc will be used + ] else assert targetPlatform == hostPlatform; [ # build != host == target + stdenv.cc + ]; + + buildInputs = [ + gmp mpfr libmpc libelf flex + targetPackages.stdenv.cc.bintools # For linking code at run-time + ] ++ (optional (isl != null) isl) ++ (optional (zlib != null) zlib) ++ (optionals langJava [ boehmgc zip unzip ]) ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs)) @@ -295,11 +299,7 @@ stdenv.mkDerivation ({ dontDisableStatic = true; # TODO(@Ericson2314): Always pass "--target" and always prefix. - configurePlatforms = - # TODO(@Ericson2314): Figure out what's going wrong with Arm - if hostPlatform == targetPlatform && targetPlatform.isArm - then [] - else [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; + configurePlatforms = [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; configureFlags = # Basic dependencies @@ -390,57 +390,12 @@ stdenv.mkDerivation ({ /* For cross-built gcc (build != host == target) */ crossAttrs = { - AR_FOR_BUILD = "ar"; - AS_FOR_BUILD = "as"; - LD_FOR_BUILD = "ld"; - NM_FOR_BUILD = "nm"; - OBJCOPY_FOR_BUILD = "objcopy"; - OBJDUMP_FOR_BUILD = "objdump"; - RANLIB_FOR_BUILD = "ranlib"; - SIZE_FOR_BUILD = "size"; - STRINGS_FOR_BUILD = "strings"; - STRIP_FOR_BUILD = "strip"; - CC_FOR_BUILD = "gcc"; - CXX_FOR_BUILD = "g++"; - - AR = "${targetPlatform.config}-ar"; - AS = "${targetPlatform.config}-as"; - LD = "${targetPlatform.config}-ld"; - NM = "${targetPlatform.config}-nm"; - OBJCOPY = "${targetPlatform.config}-objcopy"; - OBJDUMP = "${targetPlatform.config}-objdump"; - RANLIB = "${targetPlatform.config}-ranlib"; - SIZE = "${targetPlatform.config}-size"; - STRINGS = "${targetPlatform.config}-strings"; - STRIP = "${targetPlatform.config}-strip"; - CC = "${targetPlatform.config}-gcc"; - CXX = "${targetPlatform.config}-g++"; - - AR_FOR_TARGET = "${targetPlatform.config}-ar"; - AS_FOR_TARGET = "${targetPlatform.config}-as"; - LD_FOR_TARGET = "${targetPlatform.config}-ld"; - NM_FOR_TARGET = "${targetPlatform.config}-nm"; - OBJCOPY_FOR_TARGET = "${targetPlatform.config}-objcopy"; - OBJDUMP_FOR_TARGET = "${targetPlatform.config}-objdump"; - RANLIB_FOR_TARGET = "${targetPlatform.config}-ranlib"; - SIZE_FOR_TARGET = "${targetPlatform.config}-size"; - STRINGS_FOR_TARGET = "${targetPlatform.config}-strings"; - STRIP_FOR_TARGET = "${targetPlatform.config}-strip"; - CC_FOR_TARGET = "${targetPlatform.config}-gcc"; - CXX_FOR_TARGET = "${targetPlatform.config}-g++"; - dontStrip = true; buildFlags = ""; }; - NIX_BUILD_BINTOOLS = buildPackages.stdenv.cc.bintools; - NIX_BUILD_CC = buildPackages.stdenv.cc; - - # Needed for the cross compilation to work - AR = "ar"; - LD = "ld"; # http://gcc.gnu.org/install/specific.html#x86-64-x-solaris210 - CC = if stdenv.system == "x86_64-solaris" then "gcc -m64" else "gcc"; + ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64"; # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the # library headers and binaries, regarless of the language being compiled. diff --git a/pkgs/development/compilers/gerbil/default.nix b/pkgs/development/compilers/gerbil/default.nix index 622107c75345..23089ddda4e8 100644 --- a/pkgs/development/compilers/gerbil/default.nix +++ b/pkgs/development/compilers/gerbil/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchurl, fetchgit, gambit, coreutils, rsync, bash, - openssl, zlib, sqlite, libxml2, libyaml, libmysql, lmdb, leveldb }: + openssl, zlib, sqlite, libxml2, libyaml, mysql, lmdb, leveldb }: # TODO: distinct packages for gerbil-release and gerbil-devel @@ -17,9 +17,11 @@ stdenv.mkDerivation rec { buildInputs = [ gambit coreutils rsync bash - openssl zlib sqlite libxml2 libyaml libmysql lmdb leveldb + openssl zlib sqlite libxml2 libyaml mysql.connector-c lmdb leveldb ]; + NIX_CFLAGS_COMPILE = [ "-I${mysql.connector-c}/include/mysql" "-L${mysql.connector-c}/lib/mysql" ]; + postPatch = '' echo '(define (gerbil-version-string) "v${version}")' > src/gerbil/runtime/gx-version.scm diff --git a/pkgs/development/compilers/ghc/6.10.2-binary.nix b/pkgs/development/compilers/ghc/6.10.2-binary.nix index fb2e1a2a2595..03831f3b6b6f 100644 --- a/pkgs/development/compilers/ghc/6.10.2-binary.nix +++ b/pkgs/development/compilers/ghc/6.10.2-binary.nix @@ -4,6 +4,9 @@ , enableIntegerSimple ? false }: +# Prebuilt only does native +assert stdenv.targetPlatform == stdenv.hostPlatform; + stdenv.mkDerivation rec { version = "6.10.2"; @@ -93,6 +96,8 @@ stdenv.mkDerivation rec { [ $(./main) == "yes" ] ''; + passthru = { targetPrefix = ""; }; + meta = { homepage = http://haskell.org/ghc; description = "The Glasgow Haskell Compiler"; diff --git a/pkgs/development/compilers/ghc/6.10.4.nix b/pkgs/development/compilers/ghc/6.10.4.nix index c56762edd24e..0308edbd56c0 100644 --- a/pkgs/development/compilers/ghc/6.10.4.nix +++ b/pkgs/development/compilers/ghc/6.10.4.nix @@ -1,12 +1,15 @@ {stdenv, fetchurl, libedit, ghc, perl, gmp, ncurses}: +# TODO(@Ericson2314): Cross compilation support +assert stdenv.targetPlatform == stdenv.hostPlatform; + stdenv.mkDerivation rec { version = "6.10.4"; name = "ghc-${version}"; src = fetchurl { - url = "${meta.homepage}/dist/${version}/${name}-src.tar.bz2"; + url = "https://downloads.haskell.org/~ghc/${version}/ghc-${version}-src.tar.bz2"; sha256 = "d66a8e52572f4ff819fe5c4e34c6dd1e84a7763e25c3fadcc222453c0bd8534d"; }; @@ -22,6 +25,8 @@ stdenv.mkDerivation rec { NIX_CFLAGS_COMPILE = "-fomit-frame-pointer"; + passthru = { targetPrefix = ""; }; + meta = { homepage = http://haskell.org/ghc; description = "The Glasgow Haskell Compiler"; diff --git a/pkgs/development/compilers/ghc/6.12.3.nix b/pkgs/development/compilers/ghc/6.12.3.nix index a46ef66a8cb7..16d6d39e95f4 100644 --- a/pkgs/development/compilers/ghc/6.12.3.nix +++ b/pkgs/development/compilers/ghc/6.12.3.nix @@ -1,12 +1,15 @@ {stdenv, fetchurl, ghc, perl, gmp, ncurses}: +# TODO(@Ericson2314): Cross compilation support +assert stdenv.targetPlatform == stdenv.hostPlatform; + stdenv.mkDerivation rec { version = "6.12.3"; name = "ghc-${version}"; src = fetchurl { - url = "http://darcs.haskell.org/download/dist/${version}/${name}-src.tar.bz2"; + url = "https://downloads.haskell.org/~ghc/${version}/ghc-${version}-src.tar.bz2"; sha256 = "0s2y1sv2nq1cgliv735q2w3gg4ykv1c0g1adbv8wgwhia10vxgbc"; }; @@ -33,6 +36,8 @@ stdenv.mkDerivation rec { # that in turn causes GHCi to abort stripDebugFlags=["-S" "--keep-file-symbols"]; + passthru = { targetPrefix = ""; }; + meta = { homepage = http://haskell.org/ghc; description = "The Glasgow Haskell Compiler"; diff --git a/pkgs/development/compilers/ghc/7.0.4-binary.nix b/pkgs/development/compilers/ghc/7.0.4-binary.nix index c518c67d16b1..d9b4ff167825 100644 --- a/pkgs/development/compilers/ghc/7.0.4-binary.nix +++ b/pkgs/development/compilers/ghc/7.0.4-binary.nix @@ -3,6 +3,9 @@ , ncurses5, gmp, libiconv }: +# Prebuilt only does native +assert stdenv.targetPlatform == stdenv.hostPlatform; + let libPath = stdenv.lib.makeLibraryPath ([ ncurses5 gmp @@ -131,6 +134,8 @@ stdenv.mkDerivation rec { [ $(./main) == "yes" ] ''; + passthru = { targetPrefix = ""; }; + meta.license = stdenv.lib.licenses.bsd3; meta.platforms = ["x86_64-linux" "i686-linux" "x86_64-darwin"]; } diff --git a/pkgs/development/compilers/ghc/7.0.4.nix b/pkgs/development/compilers/ghc/7.0.4.nix index 9d052ddb246f..0f560313007f 100644 --- a/pkgs/development/compilers/ghc/7.0.4.nix +++ b/pkgs/development/compilers/ghc/7.0.4.nix @@ -1,11 +1,14 @@ { stdenv, fetchurl, ghc, perl, gmp, ncurses, libiconv }: +# TODO(@Ericson2314): Cross compilation support +assert stdenv.targetPlatform == stdenv.hostPlatform; + stdenv.mkDerivation rec { version = "7.0.4"; name = "ghc-${version}"; src = fetchurl { - url = "http://haskell.org/ghc/dist/${version}/${name}-src.tar.bz2"; + url = "https://downloads.haskell.org/~ghc/${version}/ghc-${version}-src.tar.bz2"; sha256 = "1a9b78d9d66c9c21de6c0932e36bb87406a4856f1611bf83bd44539bdc6ed0ed"; }; @@ -42,6 +45,8 @@ stdenv.mkDerivation rec { # that in turn causes GHCi to abort stripDebugFlags=["-S" "--keep-file-symbols"]; + passthru = { targetPrefix = ""; }; + meta = { homepage = http://haskell.org/ghc; description = "The Glasgow Haskell Compiler"; diff --git a/pkgs/development/compilers/ghc/7.10.3-binary.nix b/pkgs/development/compilers/ghc/7.10.3-binary.nix index 4733da06098c..6fed39317c75 100644 --- a/pkgs/development/compilers/ghc/7.10.3-binary.nix +++ b/pkgs/development/compilers/ghc/7.10.3-binary.nix @@ -1,10 +1,12 @@ { stdenv , fetchurl, perl , ncurses5, gmp, libiconv -, enableIntegerSimple ? false , gcc }: +# Prebuilt only does native +assert stdenv.targetPlatform == stdenv.hostPlatform; + let libPath = stdenv.lib.makeLibraryPath ([ ncurses5 gmp @@ -29,7 +31,7 @@ stdenv.mkDerivation rec { url = "http://haskell.org/ghc/dist/${version}/ghc-${version}b-x86_64-deb8-linux.tar.bz2"; sha256 = "5e163c557e9236cce68be41c984eab0fcdbdc1602e39040ca9ae325e6bdec1c3"; }; - "armv7-linux" = { + "armv7l-linux" = { url = "http://haskell.org/ghc/dist/${version}/ghc-${version}-armv7-deb8-linux.tar.bz2"; sha256 = "2913763eef88e4d1843a1e4c34225afb1866310d1a1956c08a4131f4593518f6"; }; @@ -149,6 +151,8 @@ stdenv.mkDerivation rec { [ $(./main) == "yes" ] ''; + passthru = { targetPrefix = ""; }; + meta.license = stdenv.lib.licenses.bsd3; - meta.platforms = ["x86_64-linux" "i686-linux" "x86_64-darwin"]; + meta.platforms = ["x86_64-linux" "i686-linux" "x86_64-darwin" "armv7l-linux"]; } diff --git a/pkgs/development/compilers/ghc/7.10.3.nix b/pkgs/development/compilers/ghc/7.10.3.nix index d573a22e0ae8..1d9e2814a1f6 100644 --- a/pkgs/development/compilers/ghc/7.10.3.nix +++ b/pkgs/development/compilers/ghc/7.10.3.nix @@ -1,14 +1,28 @@ -{ stdenv, fetchurl, fetchpatch, bootPkgs, perl, ncurses, libiconv, targetPackages, coreutils -, libxml2, libxslt, docbook_xsl, docbook_xml_dtd_45, docbook_xml_dtd_42, hscolour +{ stdenv, targetPackages +, buildPlatform, hostPlatform, targetPlatform - # If enabled GHC will be build with the GPL-free but slower integer-simple +# build-tools +, bootPkgs, hscolour +, coreutils, fetchurl, fetchpatch, perl +, docbook_xsl, docbook_xml_dtd_45, docbook_xml_dtd_42, libxml2, libxslt + +, libiconv ? null, ncurses + +, # If enabled, GHC will be built with the GPL-free but slower integer-simple # library instead of the faster but GPLed integer-gmp library. -, enableIntegerSimple ? false, gmp + enableIntegerSimple ? false, gmp ? null }: +assert !enableIntegerSimple -> gmp != null; + let inherit (bootPkgs) ghc; + # TODO(@Ericson2314) Make unconditional + targetPrefix = stdenv.lib.optionalString + (targetPlatform != hostPlatform) + "${targetPlatform.config}-"; + docFixes = fetchurl { url = "https://downloads.haskell.org/~ghc/7.10.3/ghc-7.10.3a.patch"; sha256 = "1j45z4kcd3w1rzm4hapap2xc16bbh942qnzzdbdjcwqznsccznf0"; @@ -18,10 +32,10 @@ in stdenv.mkDerivation rec { version = "7.10.3"; - name = "ghc-${version}"; + name = "${targetPrefix}ghc-${version}"; src = fetchurl { - url = "https://downloads.haskell.org/~ghc/${version}/${name}-src.tar.xz"; + url = "https://downloads.haskell.org/~ghc/${version}/ghc-${version}-src.tar.xz"; sha256 = "1vsgmic8csczl62ciz51iv8nhrkm72lyhbz7p7id13y2w7fcx46g"; }; @@ -58,11 +72,11 @@ stdenv.mkDerivation rec { # required, because otherwise all symbols from HSffi.o are stripped, and # that in turn causes GHCi to abort - stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!stdenv.isDarwin) "--keep-file-symbols"; + stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!targetPlatform.isDarwin) "--keep-file-symbols"; postInstall = '' # Install the bash completion file. - install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/ghc + install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${targetPrefix}ghc # Patch scripts to include "readelf" and "cat" in $PATH. for i in "$out/bin/"*; do @@ -73,7 +87,7 @@ stdenv.mkDerivation rec { ''; passthru = { - inherit bootPkgs; + inherit bootPkgs targetPrefix; }; meta = { diff --git a/pkgs/development/compilers/ghc/7.2.2.nix b/pkgs/development/compilers/ghc/7.2.2.nix index dd3b5cb2ebcb..cb8470bcff12 100644 --- a/pkgs/development/compilers/ghc/7.2.2.nix +++ b/pkgs/development/compilers/ghc/7.2.2.nix @@ -1,16 +1,20 @@ { stdenv, fetchurl, ghc, perl, ncurses, libiconv - # If enabled GHC will be build with the GPL-free but slower integer-simple +, # If enabled, GHC will be built with the GPL-free but slower integer-simple # library instead of the faster but GPLed integer-gmp library. -, enableIntegerSimple ? false, gmp + enableIntegerSimple ? false, gmp ? null }: +# TODO(@Ericson2314): Cross compilation support +assert stdenv.targetPlatform == stdenv.hostPlatform; +assert !enableIntegerSimple -> gmp != null; + stdenv.mkDerivation rec { version = "7.2.2"; name = "ghc-${version}"; src = fetchurl { - url = "http://haskell.org/ghc/dist/${version}/${name}-src.tar.bz2"; + url = "https://downloads.haskell.org/~ghc/${version}/ghc-${version}-src.tar.bz2"; sha256 = "0g87d3z9275dniaqzkf56qfgzp1msd89nqqhhm2gkc6iga072spz"; }; @@ -51,6 +55,8 @@ stdenv.mkDerivation rec { # that in turn causes GHCi to abort stripDebugFlags=["-S" "--keep-file-symbols"]; + passthru = { targetPrefix = ""; }; + meta = { homepage = http://haskell.org/ghc; description = "The Glasgow Haskell Compiler"; diff --git a/pkgs/development/compilers/ghc/7.4.2-binary.nix b/pkgs/development/compilers/ghc/7.4.2-binary.nix index 3cb28e2c8207..70c8797c264e 100644 --- a/pkgs/development/compilers/ghc/7.4.2-binary.nix +++ b/pkgs/development/compilers/ghc/7.4.2-binary.nix @@ -3,6 +3,9 @@ , ncurses5, gmp, libiconv }: +# Prebuilt only does native +assert stdenv.targetPlatform == stdenv.hostPlatform; + let libPath = stdenv.lib.makeLibraryPath ([ ncurses5 gmp @@ -133,6 +136,8 @@ stdenv.mkDerivation rec { [ $(./main) == "yes" ] ''; + passthru = { targetPrefix = ""; }; + meta.license = stdenv.lib.licenses.bsd3; meta.platforms = ["x86_64-linux" "i686-linux" "x86_64-darwin"]; } diff --git a/pkgs/development/compilers/ghc/7.4.2.nix b/pkgs/development/compilers/ghc/7.4.2.nix index e5bc4724c9eb..6f30b03efb91 100644 --- a/pkgs/development/compilers/ghc/7.4.2.nix +++ b/pkgs/development/compilers/ghc/7.4.2.nix @@ -1,17 +1,21 @@ { stdenv, fetchurl, ghc, perl, ncurses, libiconv - # If enabled GHC will be build with the GPL-free but slower integer-simple +, # If enabled, GHC will be built with the GPL-free but slower integer-simple # library instead of the faster but GPLed integer-gmp library. -, enableIntegerSimple ? false, gmp + enableIntegerSimple ? false, gmp ? null }: +# TODO(@Ericson2314): Cross compilation support +assert stdenv.targetPlatform == stdenv.hostPlatform; +assert !enableIntegerSimple -> gmp != null; + stdenv.mkDerivation rec { version = "7.4.2"; name = "ghc-${version}"; src = fetchurl { - url = "http://haskell.org/ghc/dist/7.4.2/${name}-src.tar.bz2"; + url = "https://downloads.haskell.org/~ghc/${version}/ghc-${version}-src.tar.bz2"; sha256 = "0vc3zmxqi4gflssmj35n5c8idbvyrhd88abi50whbirwlf4i5vpj"; }; @@ -52,6 +56,8 @@ stdenv.mkDerivation rec { # that in turn causes GHCi to abort stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!stdenv.isDarwin) "--keep-file-symbols"; + passthru = { targetPrefix = ""; }; + meta = { homepage = http://haskell.org/ghc; description = "The Glasgow Haskell Compiler"; diff --git a/pkgs/development/compilers/ghc/7.6.3.nix b/pkgs/development/compilers/ghc/7.6.3.nix index fde4ca2aa37d..78202297686e 100644 --- a/pkgs/development/compilers/ghc/7.6.3.nix +++ b/pkgs/development/compilers/ghc/7.6.3.nix @@ -1,10 +1,14 @@ { stdenv, fetchurl, ghc, perl, ncurses, libiconv - # If enabled GHC will be build with the GPL-free but slower integer-simple +, # If enabled, GHC will be built with the GPL-free but slower integer-simple # library instead of the faster but GPLed integer-gmp library. -, enableIntegerSimple ? false, gmp + enableIntegerSimple ? false, gmp ? null }: +# TODO(@Ericson2314): Cross compilation support +assert stdenv.targetPlatform == stdenv.hostPlatform; +assert !enableIntegerSimple -> gmp != null; + let # The "-Wa,--noexecstack" options might be needed only with GNU ld (as opposed # to the gold linker). It prevents binaries' stacks from being marked as @@ -18,7 +22,7 @@ in stdenv.mkDerivation rec { name = "ghc-${version}"; src = fetchurl { - url = "http://haskell.org/ghc/dist/${version}/${name}-src.tar.bz2"; + url = "https://downloads.haskell.org/~ghc/${version}/ghc-${version}-src.tar.bz2"; sha256 = "1669m8k9q72rpd2mzs0bh2q6lcwqiwd1ax3vrard1dgn64yq4hxx"; }; @@ -78,6 +82,8 @@ in stdenv.mkDerivation rec { # that in turn causes GHCi to abort stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!stdenv.isDarwin) "--keep-file-symbols"; + passthru = { targetPrefix = ""; }; + meta = { homepage = http://haskell.org/ghc; description = "The Glasgow Haskell Compiler"; diff --git a/pkgs/development/compilers/ghc/7.8.3.nix b/pkgs/development/compilers/ghc/7.8.3.nix deleted file mode 100644 index 50b0108861f0..000000000000 --- a/pkgs/development/compilers/ghc/7.8.3.nix +++ /dev/null @@ -1,59 +0,0 @@ -{ stdenv, fetchurl, ghc, perl, ncurses, libiconv - - # If enabled GHC will be build with the GPL-free but slower integer-simple - # library instead of the faster but GPLed integer-gmp library. -, enableIntegerSimple ? false, gmp -}: - -stdenv.mkDerivation rec { - version = "7.8.3"; - name = "ghc-${version}"; - - src = fetchurl { - url = "http://www.haskell.org/ghc/dist/${version}/${name}-src.tar.xz"; - sha256 = "0n5rhwl83yv8qm0zrbaxnyrf8x1i3b6si927518mwfxs96jrdkdh"; - }; - - patches = [ ./relocation.patch ]; - - buildInputs = [ ghc perl ncurses ] - ++ stdenv.lib.optional (!enableIntegerSimple) gmp; - - enableParallelBuilding = true; - - buildMK = '' - libraries/terminfo_CONFIGURE_OPTS += --configure-option=--with-curses-includes="${ncurses.dev}/include" - libraries/terminfo_CONFIGURE_OPTS += --configure-option=--with-curses-libraries="${ncurses.out}/lib" - DYNAMIC_BY_DEFAULT = NO - ${stdenv.lib.optionalString stdenv.isDarwin '' - libraries/base_CONFIGURE_OPTS += --configure-option=--with-iconv-includes="${libiconv}/include" - libraries/base_CONFIGURE_OPTS += --configure-option=--with-iconv-libraries="${libiconv}/lib" - ''} - '' + (if enableIntegerSimple then '' - INTEGER_LIBRARY=integer-simple - '' else '' - libraries/integer-gmp_CONFIGURE_OPTS += --configure-option=--with-gmp-libraries="${gmp.out}/lib" - libraries/integer-gmp_CONFIGURE_OPTS += --configure-option=--with-gmp-includes="${gmp.dev}/include" - ''); - - preConfigure = '' - echo "${buildMK}" > mk/build.mk - sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure - '' + stdenv.lib.optionalString (!stdenv.isDarwin) '' - export NIX_LDFLAGS="$NIX_LDFLAGS -rpath $out/lib/ghc-${version}" - '' + stdenv.lib.optionalString stdenv.isDarwin '' - export NIX_LDFLAGS+=" -no_dtrace_dof" - ''; - - # required, because otherwise all symbols from HSffi.o are stripped, and - # that in turn causes GHCi to abort - stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!stdenv.isDarwin) "--keep-file-symbols"; - - meta = { - homepage = http://haskell.org/ghc; - description = "The Glasgow Haskell Compiler"; - maintainers = with stdenv.lib.maintainers; [ marcweber andres peti ]; - inherit (ghc.meta) license platforms; - }; - -} diff --git a/pkgs/development/compilers/ghc/7.8.4-binary.nix b/pkgs/development/compilers/ghc/7.8.4-binary.nix index 0a6892615e4b..58a9370b3213 100644 --- a/pkgs/development/compilers/ghc/7.8.4-binary.nix +++ b/pkgs/development/compilers/ghc/7.8.4-binary.nix @@ -1,9 +1,11 @@ { stdenv , fetchurl, perl , ncurses5, gmp, libiconv -, enableIntegerSimple ? false }: +# Prebuilt only does native +assert stdenv.targetPlatform == stdenv.hostPlatform; + let libPath = stdenv.lib.makeLibraryPath ([ ncurses5 gmp @@ -147,6 +149,8 @@ stdenv.mkDerivation rec { [ $(./main) == "yes" ] ''; + passthru = { targetPrefix = ""; }; + meta.license = stdenv.lib.licenses.bsd3; meta.platforms = ["x86_64-linux" "i686-linux" "x86_64-darwin"]; } diff --git a/pkgs/development/compilers/ghc/7.8.4.nix b/pkgs/development/compilers/ghc/7.8.4.nix index 5a380c75c69f..b5e2ac256a7a 100644 --- a/pkgs/development/compilers/ghc/7.8.4.nix +++ b/pkgs/development/compilers/ghc/7.8.4.nix @@ -1,16 +1,20 @@ { stdenv, fetchurl, ghc, perl, ncurses, libiconv - # If enabled GHC will be build with the GPL-free but slower integer-simple +, # If enabled, GHC will be built with the GPL-free but slower integer-simple # library instead of the faster but GPLed integer-gmp library. -, enableIntegerSimple ? false, gmp + enableIntegerSimple ? false, gmp ? null }: +# TODO(@Ericson2314): Cross compilation support +assert stdenv.targetPlatform == stdenv.hostPlatform; +assert !enableIntegerSimple -> gmp != null; + stdenv.mkDerivation (rec { version = "7.8.4"; name = "ghc-${version}"; src = fetchurl { - url = "http://www.haskell.org/ghc/dist/7.8.4/${name}-src.tar.xz"; + url = "https://downloads.haskell.org/~ghc/${version}/ghc-${version}-src.tar.xz"; sha256 = "1i4254akbb4ym437rf469gc0m40bxm31blp6s1z1g15jmnacs6f3"; }; @@ -49,6 +53,8 @@ stdenv.mkDerivation (rec { # that in turn causes GHCi to abort stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!stdenv.isDarwin) "--keep-file-symbols"; + passthru = { targetPrefix = ""; }; + meta = { homepage = http://haskell.org/ghc; description = "The Glasgow Haskell Compiler"; diff --git a/pkgs/development/compilers/ghc/8.0.2.nix b/pkgs/development/compilers/ghc/8.0.2.nix index d475e3438b4b..762fe547ca9c 100644 --- a/pkgs/development/compilers/ghc/8.0.2.nix +++ b/pkgs/development/compilers/ghc/8.0.2.nix @@ -1,21 +1,33 @@ -{ stdenv, lib, fetchurl, fetchpatch, bootPkgs, perl, ncurses, libiconv, targetPackages, coreutils -, hscolour, patchutils, sphinx +{ stdenv, targetPackages +, buildPlatform, hostPlatform, targetPlatform - # If enabled GHC will be build with the GPL-free but slower integer-simple +# build-tools +, bootPkgs, hscolour +, coreutils, fetchurl, fetchpatch, patchutils, perl, sphinx + +, libiconv ? null, ncurses + +, # If enabled, GHC will be built with the GPL-free but slower integer-simple # library instead of the faster but GPLed integer-gmp library. -, enableIntegerSimple ? false, gmp -, cross ? null + enableIntegerSimple ? false, gmp ? null }: +assert !enableIntegerSimple -> gmp != null; + let inherit (bootPkgs) ghc; + + # TODO(@Ericson2314) Make unconditional + targetPrefix = stdenv.lib.optionalString + (targetPlatform != hostPlatform) + "${targetPlatform.config}-"; in stdenv.mkDerivation rec { version = "8.0.2"; - name = "ghc-${version}"; + name = "${targetPrefix}ghc-${version}"; src = fetchurl { - url = "https://downloads.haskell.org/~ghc/8.0.2/${name}-src.tar.xz"; + url = "https://downloads.haskell.org/~ghc/${version}/ghc-${version}-src.tar.xz"; sha256 = "1c8qc4fhkycynk4g1f9hvk53dj6a1vvqi6bklqznns6hw59m8qhi"; }; @@ -47,19 +59,20 @@ stdenv.mkDerivation rec { "--with-gmp-includes=${gmp.dev}/include" "--with-gmp-libraries=${gmp.out}/lib" ] ++ stdenv.lib.optional stdenv.isDarwin [ "--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib" - ] ++ + ] ++ stdenv.lib.optionals (targetPlatform.isDarwin && targetPlatform.isAarch64) [ # fix for iOS: https://www.reddit.com/r/haskell/comments/4ttdz1/building_an_osxi386_to_iosarm64_cross_compiler/d5qvd67/ - lib.optional (cross.config or null == "aarch64-apple-darwin14") "--disable-large-address-space"; + "--disable-large-address-space" + ]; # required, because otherwise all symbols from HSffi.o are stripped, and # that in turn causes GHCi to abort - stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!stdenv.isDarwin) "--keep-file-symbols"; + stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!targetPlatform.isDarwin) "--keep-file-symbols"; postInstall = '' - paxmark m $out/lib/${name}/bin/{ghc,haddock} + paxmark m $out/lib/${name}/bin/${if targetPlatform != hostPlatform then "ghc" else "{ghc,haddock}"} # Install the bash completion file. - install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/ghc + install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${targetPrefix}ghc # Patch scripts to include "readelf" and "cat" in $PATH. for i in "$out/bin/"*; do @@ -70,7 +83,7 @@ stdenv.mkDerivation rec { ''; passthru = { - inherit bootPkgs; + inherit bootPkgs targetPrefix; }; meta = { diff --git a/pkgs/development/compilers/ghc/8.2.1-binary.nix b/pkgs/development/compilers/ghc/8.2.1-binary.nix index 8ddf8a941993..b3b5e2eceec0 100644 --- a/pkgs/development/compilers/ghc/8.2.1-binary.nix +++ b/pkgs/development/compilers/ghc/8.2.1-binary.nix @@ -1,9 +1,11 @@ { stdenv , fetchurl, perl, gcc , ncurses5, gmp, libiconv -, enableIntegerSimple ? false }: +# Prebuilt only does native +assert stdenv.targetPlatform == stdenv.hostPlatform; + let libPath = stdenv.lib.makeLibraryPath ([ ncurses5 gmp @@ -28,7 +30,7 @@ stdenv.mkDerivation rec { url = "http://haskell.org/ghc/dist/${version}/ghc-${version}-x86_64-deb8-linux.tar.xz"; sha256 = "543b81bf610240bd0398111d6c6607a9094dc2d159b564057d46c8a3d1aaa130"; }; - "armv7-linux" = { + "armv7l-linux" = { url = "http://haskell.org/ghc/dist/${version}/ghc-${version}-armv7-deb8-linux.tar.xz"; sha256 = "0f0e5e1d4fad3fa1a87ca1fe0d19242f4a94d158b7b8a08f99efefd98b51b019"; }; @@ -152,6 +154,8 @@ stdenv.mkDerivation rec { [ $(./main) == "yes" ] ''; + passthru = { targetPrefix = ""; }; + meta.license = stdenv.lib.licenses.bsd3; - meta.platforms = ["x86_64-linux" "i686-linux" "x86_64-darwin"]; + meta.platforms = ["x86_64-linux" "i686-linux" "x86_64-darwin" "armv7l-linux" "aarch64-linux"]; } diff --git a/pkgs/development/compilers/ghc/8.2.2.nix b/pkgs/development/compilers/ghc/8.2.2.nix index 736a6edc365b..bffc7c3fc6c7 100644 --- a/pkgs/development/compilers/ghc/8.2.2.nix +++ b/pkgs/development/compilers/ghc/8.2.2.nix @@ -1,18 +1,40 @@ -{ stdenv, lib, fetchurl, bootPkgs, perl, ncurses, libiconv, binutils, coreutils -, autoconf, automake, happy, alex, python3, sphinx, hscolour -, buildPlatform, targetPlatform , selfPkgs, cross ? null +{ stdenv, targetPackages +, buildPlatform, hostPlatform, targetPlatform +, selfPkgs, cross ? null - # If enabled GHC will be build with the GPL-free but slower integer-simple +# build-tools +, bootPkgs, alex, happy, hscolour +, autoconf, automake, coreutils, fetchurl, perl, python3, sphinx + +, libiconv ? null, ncurses + +, # If enabled, GHC will be built with the GPL-free but slower integer-simple # library instead of the faster but GPLed integer-gmp library. -, enableIntegerSimple ? false, gmp + enableIntegerSimple ? false, gmp ? null }: +assert !enableIntegerSimple -> gmp != null; + let inherit (bootPkgs) ghc; + + # TODO(@Ericson2314) Make unconditional + targetPrefix = stdenv.lib.optionalString + (targetPlatform != hostPlatform) + "${targetPlatform.config}-"; +in +stdenv.mkDerivation (rec { version = "8.2.2"; + name = "${targetPrefix}ghc-${version}"; + + src = fetchurl { + url = "https://downloads.haskell.org/~ghc/${version}/ghc-${version}-src.tar.xz"; + sha256 = "1z05vkpaj54xdypmaml50hgsdpw29dhbs2r7magx0cm199iw73mv"; + }; + + postPatch = "patchShebangs ."; - commonBuildInputs = [ alex autoconf automake ghc happy hscolour perl python3 sphinx ]; - commonPreConfigure = '' + preConfigure = '' sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure '' + stdenv.lib.optionalString (!stdenv.isDarwin) '' export NIX_LDFLAGS="$NIX_LDFLAGS -rpath $out/lib/ghc-${version}" @@ -20,21 +42,11 @@ let export NIX_LDFLAGS+=" -no_dtrace_dof" '' + stdenv.lib.optionalString enableIntegerSimple '' echo "INTEGER_LIBRARY=integer-simple" > mk/build.mk + '' + stdenv.lib.optionalString (targetPlatform != hostPlatform) '' + sed 's|#BuildFlavour = quick-cross|BuildFlavour = perf-cross|' mk/build.mk.sample > mk/build.mk ''; -in stdenv.mkDerivation (rec { - inherit version; - name = "ghc-${version}"; - src = fetchurl { - url = "https://downloads.haskell.org/~ghc/8.2.2/${name}-src.tar.xz"; - sha256 = "1z05vkpaj54xdypmaml50hgsdpw29dhbs2r7magx0cm199iw73mv"; - }; - - postPatch = "patchShebangs ."; - - preConfigure = commonPreConfigure; - - buildInputs = commonBuildInputs; + buildInputs = [ alex autoconf automake ghc happy hscolour perl python3 sphinx ]; enableParallelBuilding = true; @@ -50,28 +62,28 @@ in stdenv.mkDerivation (rec { # required, because otherwise all symbols from HSffi.o are stripped, and # that in turn causes GHCi to abort - stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!stdenv.isDarwin) "--keep-file-symbols"; + stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!targetPlatform.isDarwin) "--keep-file-symbols"; checkTarget = "test"; postInstall = '' - paxmark m $out/lib/${name}/bin/{ghc,haddock} + paxmark m $out/lib/${name}/bin/${if targetPlatform != hostPlatform then "ghc" else "{ghc,haddock}"} # Install the bash completion file. - install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/ghc + install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${targetPrefix}ghc # Patch scripts to include "readelf" and "cat" in $PATH. for i in "$out/bin/"*; do test ! -h $i || continue egrep --quiet '^#!' <(head -n 1 $i) || continue - sed -i -e '2i export PATH="$PATH:${stdenv.lib.makeBinPath [ binutils coreutils ]}"' $i + sed -i -e '2i export PATH="$PATH:${stdenv.lib.makeBinPath [ targetPackages.stdenv.cc.bintools coreutils ]}"' $i done ''; outputs = [ "out" "doc" ]; passthru = { - inherit bootPkgs; + inherit bootPkgs targetPrefix; } // stdenv.lib.optionalAttrs (targetPlatform != buildPlatform) { crossCompiler = selfPkgs.ghc.override { cross = targetPlatform; @@ -87,31 +99,23 @@ in stdenv.mkDerivation (rec { }; } // stdenv.lib.optionalAttrs (cross != null) { - name = "${cross.config}-ghc-${version}"; - - preConfigure = commonPreConfigure + '' - sed 's|#BuildFlavour = quick-cross|BuildFlavour = perf-cross|' mk/build.mk.sample > mk/build.mk - ''; - configureFlags = [ - "CC=${stdenv.ccCross}/bin/${cross.config}-cc" - "LD=${stdenv.binutils}/bin/${cross.config}-ld" - "AR=${stdenv.binutils}/bin/${cross.config}-ar" - "NM=${stdenv.binutils}/bin/${cross.config}-nm" - "RANLIB=${stdenv.binutils}/bin/${cross.config}-ranlib" + "CC=${stdenv.cc}/bin/${cross.config}-cc" + "LD=${stdenv.cc.bintools}/bin/${cross.config}-ld" + "AR=${stdenv.cc.bintools}/bin/${cross.config}-ar" + "NM=${stdenv.cc.bintools}/bin/${cross.config}-nm" + "RANLIB=${stdenv.cc.bintools}/bin/${cross.config}-ranlib" "--target=${cross.config}" "--enable-bootstrap-with-devel-snapshot" ] ++ # fix for iOS: https://www.reddit.com/r/haskell/comments/4ttdz1/building_an_osxi386_to_iosarm64_cross_compiler/d5qvd67/ - lib.optional (cross.config or null == "aarch64-apple-darwin14") "--disable-large-address-space"; - - buildInputs = commonBuildInputs ++ [ stdenv.ccCross stdenv.binutils ]; + stdenv.lib.optional (cross.config or null == "aarch64-apple-darwin14") "--disable-large-address-space"; - dontSetConfigureCross = true; + configurePlatforms = []; passthru = { inherit bootPkgs cross; - cc = "${stdenv.ccCross}/bin/${cross.config}-cc"; - ld = "${stdenv.binutils}/bin/${cross.config}-ld"; + cc = "${stdenv.cc}/bin/${cross.config}-cc"; + ld = "${stdenv.cc}/bin/${cross.config}-ld"; }; }) diff --git a/pkgs/development/compilers/ghc/head.nix b/pkgs/development/compilers/ghc/head.nix index 3f5dfa65958f..9b4c932eb115 100644 --- a/pkgs/development/compilers/ghc/head.nix +++ b/pkgs/development/compilers/ghc/head.nix @@ -1,21 +1,45 @@ -{ stdenv, lib, fetchgit, bootPkgs, perl, ncurses, libiconv, targetPackages, coreutils -, autoconf, automake, happy, alex, python3, buildPlatform, targetPlatform +{ stdenv, targetPackages +, buildPlatform, hostPlatform, targetPlatform , selfPkgs, cross ? null - # If enabled GHC will be build with the GPL-free but slower integer-simple +# build-tools +, bootPkgs, alex, happy +, autoconf, automake, coreutils, fetchgit, perl, python3 + +, libiconv ? null, ncurses + +, # If enabled, GHC will be built with the GPL-free but slower integer-simple # library instead of the faster but GPLed integer-gmp library. -, enableIntegerSimple ? false, gmp + enableIntegerSimple ? false, gmp ? null + , version ? "8.5.20171209" }: +assert !enableIntegerSimple -> gmp != null; + let inherit (bootPkgs) ghc; - commonBuildInputs = [ ghc perl autoconf automake happy alex python3 ]; - rev = "4335c07ca7e64624819b22644d7591853826bd75"; - commonPreConfigure = '' + # TODO(@Ericson2314) Make unconditional + targetPrefix = stdenv.lib.optionalString + (targetPlatform != hostPlatform) + "${targetPlatform.config}-"; +in +stdenv.mkDerivation (rec { + inherit version rev; + name = "${targetPrefix}ghc-${version}"; + + src = fetchgit { + url = "git://git.haskell.org/ghc.git"; + inherit rev; + sha256 = "19csad94sk0bw2nj97ppmnwh4c193jg0jmg5w2sx9rqm9ih4yg85"; + }; + + postPatch = "patchShebangs ."; + + preConfigure = '' echo ${version} >VERSION echo ${rev} >GIT_COMMIT_ID ./boot @@ -26,22 +50,11 @@ let export NIX_LDFLAGS+=" -no_dtrace_dof" '' + stdenv.lib.optionalString enableIntegerSimple '' echo "INTEGER_LIBRARY=integer-simple" > mk/build.mk + '' + stdenv.lib.optionalString (targetPlatform != hostPlatform) '' + sed 's|#BuildFlavour = quick-cross|BuildFlavour = perf-cross|' mk/build.mk.sample > mk/build.mk ''; -in stdenv.mkDerivation (rec { - inherit version rev; - name = "ghc-${version}"; - src = fetchgit { - url = "git://git.haskell.org/ghc.git"; - inherit rev; - sha256 = "19csad94sk0bw2nj97ppmnwh4c193jg0jmg5w2sx9rqm9ih4yg85"; - }; - - postPatch = "patchShebangs ."; - - preConfigure = commonPreConfigure; - - buildInputs = commonBuildInputs; + buildInputs = [ ghc perl autoconf automake happy alex python3 ]; enableParallelBuilding = true; @@ -57,15 +70,15 @@ in stdenv.mkDerivation (rec { # required, because otherwise all symbols from HSffi.o are stripped, and # that in turn causes GHCi to abort - stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!stdenv.isDarwin) "--keep-file-symbols"; + stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!targetPlatform.isDarwin) "--keep-file-symbols"; checkTarget = "test"; postInstall = '' - paxmark m $out/lib/${name}/bin/{ghc,haddock} + paxmark m $out/lib/${name}/bin/${if targetPlatform != hostPlatform then "ghc" else "{ghc,haddock}"} # Install the bash completion file. - install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/ghc + install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${targetPrefix}ghc # Patch scripts to include "readelf" and "cat" in $PATH. for i in "$out/bin/"*; do @@ -78,7 +91,7 @@ in stdenv.mkDerivation (rec { outputs = [ "out" "doc" ]; passthru = { - inherit bootPkgs; + inherit bootPkgs targetPrefix; } // stdenv.lib.optionalAttrs (targetPlatform != buildPlatform) { crossCompiler = selfPkgs.ghc.override { cross = targetPlatform; @@ -94,33 +107,23 @@ in stdenv.mkDerivation (rec { }; } // stdenv.lib.optionalAttrs (cross != null) { - name = "${cross.config}-ghc-${version}"; - - preConfigure = commonPreConfigure + '' - sed 's|#BuildFlavour = quick-cross|BuildFlavour = perf-cross|' mk/build.mk.sample > mk/build.mk - ''; - configureFlags = [ "CC=${stdenv.cc}/bin/${cross.config}-cc" - "LD=${stdenv.cc}/bin/${cross.config}-ld" - "AR=${stdenv.cc}/bin/${cross.config}-ar" - "NM=${stdenv.cc}/bin/${cross.config}-nm" - "RANLIB=${stdenv.cc}/bin/${cross.config}-ranlib" + "LD=${stdenv.cc.bintools}/bin/${cross.config}-ld" + "AR=${stdenv.cc.bintools}/bin/${cross.config}-ar" + "NM=${stdenv.cc.bintools}/bin/${cross.config}-nm" + "RANLIB=${stdenv.cc.bintools}/bin/${cross.config}-ranlib" "--target=${cross.config}" "--enable-bootstrap-with-devel-snapshot" ] ++ # fix for iOS: https://www.reddit.com/r/haskell/comments/4ttdz1/building_an_osxi386_to_iosarm64_cross_compiler/d5qvd67/ - lib.optional (cross.config or null == "aarch64-apple-darwin14") "--disable-large-address-space"; - - buildInputs = commonBuildInputs; + stdenv.lib.optional (cross.config or null == "aarch64-apple-darwin14") "--disable-large-address-space"; configurePlatforms = []; passthru = { inherit bootPkgs cross; - cc = "${stdenv.cc}/bin/${cross.config}-cc"; - ld = "${stdenv.cc}/bin/${cross.config}-ld"; }; }) diff --git a/pkgs/development/compilers/go/1.8.nix b/pkgs/development/compilers/go/1.8.nix index 210f259df89a..23fd3b0f2912 100644 --- a/pkgs/development/compilers/go/1.8.nix +++ b/pkgs/development/compilers/go/1.8.nix @@ -83,7 +83,7 @@ stdenv.mkDerivation rec { sed -i 's,/usr/share/zoneinfo/,${tzdata}/share/zoneinfo/,' src/time/zoneinfo_unix.go '' + optionalString stdenv.isArm '' sed -i '/TestCurrent/areturn' src/os/user/user_test.go - echo '#!/usr/bin/env bash' > misc/cgo/testplugin/test.bash + echo '#!${stdenv.shell}' > misc/cgo/testplugin/test.bash '' + optionalString stdenv.isDarwin '' substituteInPlace src/race.bash --replace \ "sysctl machdep.cpu.extfeatures | grep -qv EM64T" true diff --git a/pkgs/development/compilers/go/1.9.nix b/pkgs/development/compilers/go/1.9.nix index 8708bd762c4d..e908a8725e2a 100644 --- a/pkgs/development/compilers/go/1.9.nix +++ b/pkgs/development/compilers/go/1.9.nix @@ -87,7 +87,7 @@ stdenv.mkDerivation rec { sed -i 's,/usr/share/zoneinfo/,${tzdata}/share/zoneinfo/,' src/time/zoneinfo_unix.go '' + optionalString stdenv.isArm '' sed -i '/TestCurrent/areturn' src/os/user/user_test.go - echo '#!/usr/bin/env bash' > misc/cgo/testplugin/test.bash + echo '#!${stdenv.shell}' > misc/cgo/testplugin/test.bash '' + optionalString stdenv.isDarwin '' substituteInPlace src/race.bash --replace \ "sysctl machdep.cpu.extfeatures | grep -qv EM64T" true diff --git a/pkgs/development/compilers/go/setup-hook.sh b/pkgs/development/compilers/go/setup-hook.sh index 1b91c8312b88..7dce15eeb102 100644 --- a/pkgs/development/compilers/go/setup-hook.sh +++ b/pkgs/development/compilers/go/setup-hook.sh @@ -2,4 +2,4 @@ addToGoPath() { addToSearchPath GOPATH $1/share/go } -envHooks=(${envHooks[@]} addToGoPath) +addEnvHooks "$targetOffset" addToGoPath diff --git a/pkgs/development/compilers/haxe/setup-hook.sh b/pkgs/development/compilers/haxe/setup-hook.sh index 21cc0206859f..e6496107a5ee 100644 --- a/pkgs/development/compilers/haxe/setup-hook.sh +++ b/pkgs/development/compilers/haxe/setup-hook.sh @@ -4,4 +4,4 @@ addHaxeLibPath() { fi } -envHooks+=(addHaxeLibPath) +addEnvHooks "$targetOffset" addHaxeLibPath diff --git a/pkgs/development/compilers/hhvm/default.nix b/pkgs/development/compilers/hhvm/default.nix index 2f84387a8888..a66b2264f073 100644 --- a/pkgs/development/compilers/hhvm/default.nix +++ b/pkgs/development/compilers/hhvm/default.nix @@ -2,7 +2,7 @@ , pcre, libevent, gd, curl, libxml2, icu, flex, bison, openssl, zlib, php , expat, libcap, oniguruma, libdwarf, libmcrypt, tbb, gperftools, glog, libkrb5 , bzip2, openldap, readline, libelf, uwimap, binutils, cyrus_sasl, pam, libpng -, libxslt, freetype, gdb, git, perl, mariadb, gmp, libyaml, libedit +, libxslt, freetype, gdb, git, perl, mysql, gmp, libyaml, libedit , libvpx, imagemagick, fribidi, gperf, which, ocamlPackages }: @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { }; buildInputs = - [ cmake pkgconfig boost libunwind mariadb.client libmemcached pcre gdb git perl + [ cmake pkgconfig boost libunwind mysql.connector-c libmemcached pcre gdb git perl libevent gd curl libxml2 icu flex bison openssl zlib php expat libcap oniguruma libdwarf libmcrypt tbb gperftools bzip2 openldap readline libelf uwimap binutils cyrus_sasl pam glog libpng libxslt libkrb5 diff --git a/pkgs/development/compilers/jsonnet/default.nix b/pkgs/development/compilers/jsonnet/default.nix index 790f9a4827ae..d46646733064 100644 --- a/pkgs/development/compilers/jsonnet/default.nix +++ b/pkgs/development/compilers/jsonnet/default.nix @@ -1,6 +1,6 @@ { stdenv, lib, fetchFromGitHub, emscripten }: -let version = "0.9.4"; in +let version = "0.9.5"; in stdenv.mkDerivation { name = "jsonnet-${version}"; @@ -10,7 +10,7 @@ stdenv.mkDerivation { rev = "v${version}"; owner = "google"; repo = "jsonnet"; - sha256 = "1bh9x8d3mxnic31b6gh4drn5l6qpyqfgsn2l48sv0jknhinm1a7l"; + sha256 = "193sa4hdhvml0c32nmdkjii41hbyc5l0zisdn699ar0gaq7yiqan"; }; buildInputs = [ emscripten ]; diff --git a/pkgs/development/compilers/llvm/3.4/clang.nix b/pkgs/development/compilers/llvm/3.4/clang.nix index 741ecc3856f8..10510c750354 100644 --- a/pkgs/development/compilers/llvm/3.4/clang.nix +++ b/pkgs/development/compilers/llvm/3.4/clang.nix @@ -39,6 +39,7 @@ stdenv.mkDerivation { # GCC_INSTALL_PREFIX points here, so just use it even though it may not # actually be a gcc gcc = stdenv.cc.cc; + hardeningUnsupportedFlags = [ "stackprotector" ]; }; enableParallelBuilding = true; diff --git a/pkgs/development/compilers/llvm/3.7/default.nix b/pkgs/development/compilers/llvm/3.7/default.nix index 35af978216c6..5cac04c044de 100644 --- a/pkgs/development/compilers/llvm/3.7/default.nix +++ b/pkgs/development/compilers/llvm/3.7/default.nix @@ -44,15 +44,11 @@ let stdenv = stdenv.override (drv: { allowedRequisites = null; cc = self.clang; - # Don't include the libc++ and libc++abi from the original stdenv. - extraBuildInputs = stdenv.lib.optional stdenv.isDarwin darwin.CF; }); libcxxStdenv = stdenv.override (drv: { allowedRequisites = null; cc = self.libcxxClang; - # Don't include the libc++ and libc++abi from the original stdenv. - extraBuildInputs = stdenv.lib.optional stdenv.isDarwin darwin.CF; }); lldb = callPackage ./lldb.nix {}; diff --git a/pkgs/development/compilers/llvm/3.8/default.nix b/pkgs/development/compilers/llvm/3.8/default.nix index bd79db012a63..a660d4aea5fd 100644 --- a/pkgs/development/compilers/llvm/3.8/default.nix +++ b/pkgs/development/compilers/llvm/3.8/default.nix @@ -41,15 +41,11 @@ let stdenv = stdenv.override (drv: { allowedRequisites = null; cc = self.clang; - # Don't include the libc++ and libc++abi from the original stdenv. - extraBuildInputs = stdenv.lib.optional stdenv.isDarwin darwin.CF; }); libcxxStdenv = stdenv.override (drv: { allowedRequisites = null; cc = self.libcxxClang; - # Don't include the libc++ and libc++abi from the original stdenv. - extraBuildInputs = stdenv.lib.optional stdenv.isDarwin darwin.CF; }); lldb = callPackage ./lldb.nix {}; diff --git a/pkgs/development/compilers/llvm/3.9/default.nix b/pkgs/development/compilers/llvm/3.9/default.nix index 5ce51bc9c122..c58adc3f92da 100644 --- a/pkgs/development/compilers/llvm/3.9/default.nix +++ b/pkgs/development/compilers/llvm/3.9/default.nix @@ -41,15 +41,11 @@ let stdenv = stdenv.override (drv: { allowedRequisites = null; cc = self.clang; - # Don't include the libc++ and libc++abi from the original stdenv. - extraBuildInputs = stdenv.lib.optional stdenv.isDarwin darwin.CF; }); libcxxStdenv = stdenv.override (drv: { allowedRequisites = null; cc = self.libcxxClang; - # Don't include the libc++ and libc++abi from the original stdenv. - extraBuildInputs = stdenv.lib.optional stdenv.isDarwin darwin.CF; }); lldb = callPackage ./lldb.nix {}; diff --git a/pkgs/development/compilers/llvm/4/default.nix b/pkgs/development/compilers/llvm/4/default.nix index fa61a6c22e71..5a44cb868253 100644 --- a/pkgs/development/compilers/llvm/4/default.nix +++ b/pkgs/development/compilers/llvm/4/default.nix @@ -56,15 +56,11 @@ let stdenv = stdenv.override (drv: { allowedRequisites = null; cc = self.clang; - # Don't include the libc++ and libc++abi from the original stdenv. - extraBuildInputs = stdenv.lib.optional stdenv.isDarwin darwin.CF; }); libcxxStdenv = stdenv.override (drv: { allowedRequisites = null; cc = self.libcxxClang; - # Don't include the libc++ and libc++abi from the original stdenv. - extraBuildInputs = stdenv.lib.optional stdenv.isDarwin darwin.CF; }); lld = callPackage ./lld.nix {}; diff --git a/pkgs/development/compilers/llvm/5/clang/default.nix b/pkgs/development/compilers/llvm/5/clang/default.nix index fa8502ebd67a..b003d2f334ac 100644 --- a/pkgs/development/compilers/llvm/5/clang/default.nix +++ b/pkgs/development/compilers/llvm/5/clang/default.nix @@ -9,7 +9,7 @@ let name = "clang-${version}"; unpackPhase = '' - unpackFile ${fetch "cfe" "0w09s8fn3lkn6i04nj0cisgp821r815fk5b5fjn97xrd371277q1"} + unpackFile ${fetch "cfe" "1zyh4dggxd55lnfg73c8fybnkssqcaa6bq2h4bzimnnj1jdnqpqk"} mv cfe-${version}* clang sourceRoot=$PWD/clang unpackFile ${clang-tools-extra_src} diff --git a/pkgs/development/compilers/llvm/5/default.nix b/pkgs/development/compilers/llvm/5/default.nix index 9891f3090ac1..a7e16c08ce96 100644 --- a/pkgs/development/compilers/llvm/5/default.nix +++ b/pkgs/development/compilers/llvm/5/default.nix @@ -6,7 +6,7 @@ let callPackage = newScope (self // { inherit stdenv cmake libxml2 python2 isl release_version version fetch; }); - release_version = "5.0.0"; + release_version = "5.0.1"; version = release_version; # differentiating these is important for rc's fetch = name: sha256: fetchurl { @@ -14,8 +14,8 @@ let inherit sha256; }; - compiler-rt_src = fetch "compiler-rt" "1cy0y389zxn7mk8vffqvfirk9bbcbc8ziwc1nf1a8d118rk55bfm"; - clang-tools-extra_src = fetch "clang-tools-extra" "1ikkv6k8cfgpjqlm24iqz52i5nyafzsc4dyikzzyb9n4b6wpil47"; + compiler-rt_src = fetch "compiler-rt" "1nlmm0b3wpdwxkldqp1klzv3rpqf94q2a248xgqb7aapyhbi9paf"; + clang-tools-extra_src = fetch "clang-tools-extra" "09fjii7w43kvxvsxxs6gig9vz95vnvx1779rqd36h8kksvws3bcs"; # Add man output without introducing extra dependencies. overrideManOutput = drv: @@ -56,15 +56,11 @@ let stdenv = stdenv.override (drv: { allowedRequisites = null; cc = self.clang; - # Don't include the libc++ and libc++abi from the original stdenv. - extraBuildInputs = stdenv.lib.optional stdenv.isDarwin darwin.CF; }); libcxxStdenv = stdenv.override (drv: { allowedRequisites = null; cc = self.libcxxClang; - # Don't include the libc++ and libc++abi from the original stdenv. - extraBuildInputs = stdenv.lib.optional stdenv.isDarwin darwin.CF; }); lld = callPackage ./lld.nix {}; diff --git a/pkgs/development/compilers/llvm/5/libc++/default.nix b/pkgs/development/compilers/llvm/5/libc++/default.nix index 036161f7b889..6f03e225ad65 100644 --- a/pkgs/development/compilers/llvm/5/libc++/default.nix +++ b/pkgs/development/compilers/llvm/5/libc++/default.nix @@ -3,7 +3,7 @@ stdenv.mkDerivation rec { name = "libc++-${version}"; - src = fetch "libcxx" "1cf953msb0vwgjjrapw06950dnsdb2ps305czkn0vvr1k8g9irga"; + src = fetch "libcxx" "003wwniwlikgh38cbqbcshc5gkiv3a2jkmbn6am9s46y5gfrk3zs"; postUnpack = '' unpackFile ${libcxxabi.src} diff --git a/pkgs/development/compilers/llvm/5/libc++abi.nix b/pkgs/development/compilers/llvm/5/libc++abi.nix index 5a2a269345d6..166f4260291f 100644 --- a/pkgs/development/compilers/llvm/5/libc++abi.nix +++ b/pkgs/development/compilers/llvm/5/libc++abi.nix @@ -3,7 +3,7 @@ stdenv.mkDerivation { name = "libc++abi-${version}"; - src = fetch "libcxxabi" "04c9dfmrr8diih73x0wq99dk9xb99mg0bvsnbhx5q912xg3ihs8p"; + src = fetch "libcxxabi" "0m78yr4arlz2b9m96xcygk15m2pbz8i10snk78i3q7pjnwn1a9as"; nativeBuildInputs = [ cmake ]; buildInputs = stdenv.lib.optional (!stdenv.isDarwin && !stdenv.isFreeBSD) libunwind; diff --git a/pkgs/development/compilers/llvm/5/lld.nix b/pkgs/development/compilers/llvm/5/lld.nix index f19a9afc8044..1d00b16cce1f 100644 --- a/pkgs/development/compilers/llvm/5/lld.nix +++ b/pkgs/development/compilers/llvm/5/lld.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation { name = "lld-${version}"; - src = fetch "lld" "15rqsmfw0jlsri7hszbs8l0j7v1030cy9xvvdb245397llh7k6ir"; + src = fetch "lld" "15fq2zvkliyiw5qi7ig2r8bshgbz4kzvs5in16mhfkw20l06rcym"; nativeBuildInputs = [ cmake ]; buildInputs = [ llvm ]; diff --git a/pkgs/development/compilers/llvm/5/lldb.nix b/pkgs/development/compilers/llvm/5/lldb.nix index fac23b290bcb..03e65dde0e4d 100644 --- a/pkgs/development/compilers/llvm/5/lldb.nix +++ b/pkgs/development/compilers/llvm/5/lldb.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation { name = "lldb-${version}"; - src = fetch "lldb" "0zcbav39srf6awv9znvzr7nqdrj704i8da3wdgc8362y20rcm860"; + src = fetch "lldb" "0sipv8k37ai44m7jcf6wsbm2q41dgk3sk9m3i6823jkmg7kckhdp"; postPatch = '' # Fix up various paths that assume llvm and clang are installed in the same place diff --git a/pkgs/development/compilers/llvm/5/llvm.nix b/pkgs/development/compilers/llvm/5/llvm.nix index 8358b6b18c35..6c7fd9eb0a38 100644 --- a/pkgs/development/compilers/llvm/5/llvm.nix +++ b/pkgs/development/compilers/llvm/5/llvm.nix @@ -22,7 +22,7 @@ }: let - src = fetch "llvm" "1nin64vz21hyng6jr19knxipvggaqlkl2l9jpd5czbc4c2pcnpg3"; + src = fetch "llvm" "1c07i0b61j69m578lgjkyayg419sh7sn40xb3j112nr2q2gli9sz"; # Used when creating a version-suffixed symlink of libLLVM.dylib shortVersion = with stdenv.lib; diff --git a/pkgs/development/compilers/llvm/5/openmp.nix b/pkgs/development/compilers/llvm/5/openmp.nix index 9ba42eed2e2e..5a01c191b5ae 100644 --- a/pkgs/development/compilers/llvm/5/openmp.nix +++ b/pkgs/development/compilers/llvm/5/openmp.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation { name = "openmp-${version}"; - src = fetch "openmp" "1igplg89bl6k6r9q88hnpcznq3g9lb79w7bix025lwp00ldhivy0"; + src = fetch "openmp" "0lr6r87xzg87w1q9rrh04nqpyr8c929dh4qy3csjiy7rsb6kbdmd"; nativeBuildInputs = [ cmake perl ]; buildInputs = [ llvm ]; diff --git a/pkgs/development/compilers/mentor/default.nix b/pkgs/development/compilers/mentor/default.nix index 74905c6ffae4..7cd3c1793661 100644 --- a/pkgs/development/compilers/mentor/default.nix +++ b/pkgs/development/compilers/mentor/default.nix @@ -46,7 +46,7 @@ let meta = with stdenv.lib; { inherit description; - homepage = http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/; + homepage = https://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/; license = licenses.gpl3; platforms = platforms.linux; maintainers = [ maintainers.bjornfor ]; diff --git a/pkgs/development/compilers/mit-scheme/default.nix b/pkgs/development/compilers/mit-scheme/default.nix index 076f3c956750..4670f39eac18 100644 --- a/pkgs/development/compilers/mit-scheme/default.nix +++ b/pkgs/development/compilers/mit-scheme/default.nix @@ -1,4 +1,5 @@ -{ fetchurl, stdenv, makeWrapper, gnum4, texinfo, texLive, automake }: +{ fetchurl, stdenv, makeWrapper, gnum4, texinfo, texLive, automake, + enableX11 ? false, xlibsWrapper ? null }: let version = "9.2"; @@ -9,7 +10,7 @@ let else ""; in stdenv.mkDerivation { - name = "mit-scheme-${version}"; + name = if enableX11 then "mit-scheme-x11-${version}" else "mit-scheme-${version}"; # MIT/GNU Scheme is not bootstrappable, so it's recommended to compile from # the platform-specific tarballs, which contain pre-built binaries. It @@ -29,6 +30,8 @@ stdenv.mkDerivation { sha256 = "0w5ib5vsidihb4hb6fma3sp596ykr8izagm57axvgd6lqzwicsjg"; }; + buildInputs = if enableX11 then [xlibsWrapper] else []; + configurePhase = '' (cd src && ./configure) (cd doc && ./configure) diff --git a/pkgs/development/compilers/neko/default.nix b/pkgs/development/compilers/neko/default.nix index 236273bf6bec..4dce11f93b13 100644 --- a/pkgs/development/compilers/neko/default.nix +++ b/pkgs/development/compilers/neko/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, boehmgc, zlib, sqlite, pcre, cmake, pkgconfig -, git, apacheHttpd, apr, aprutil, mariadb, mbedtls, openssl, pkgs, gtk2, libpthreadstubs +, git, apacheHttpd, apr, aprutil, mysql, mbedtls, openssl, pkgs, gtk2, libpthreadstubs }: stdenv.mkDerivation rec { @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ cmake pkgconfig git ]; buildInputs = [ boehmgc zlib sqlite pcre apacheHttpd apr aprutil - mariadb.client mbedtls openssl libpthreadstubs ] + mysql.connector-c mbedtls openssl libpthreadstubs ] ++ stdenv.lib.optional stdenv.isLinux gtk2 ++ stdenv.lib.optionals stdenv.isDarwin [ pkgs.darwin.apple_sdk.frameworks.Security pkgs.darwin.apple_sdk.frameworks.Carbon]; diff --git a/pkgs/development/compilers/nim/default.nix b/pkgs/development/compilers/nim/default.nix index fde4861e982f..a49b1b824394 100644 --- a/pkgs/development/compilers/nim/default.nix +++ b/pkgs/development/compilers/nim/default.nix @@ -5,7 +5,7 @@ stdenv.mkDerivation rec { version = "0.17.2"; src = fetchurl { - url = "http://nim-lang.org/download/${name}.tar.xz"; + url = "https://nim-lang.org/download/${name}.tar.xz"; sha256 = "1gc2xk3ygmz9y4pm75pligssgw995a7gvnfpy445fjpw4d81pzxa"; }; @@ -52,7 +52,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Statically typed, imperative programming language"; - homepage = http://nim-lang.org/; + homepage = https://nim-lang.org/; license = licenses.mit; maintainers = with maintainers; [ ehmry peterhoeg ]; platforms = with platforms; linux ++ darwin; # arbitrary diff --git a/pkgs/development/compilers/ocaml/generic.nix b/pkgs/development/compilers/ocaml/generic.nix index 17b3033c31df..03ae6e518d0b 100644 --- a/pkgs/development/compilers/ocaml/generic.nix +++ b/pkgs/development/compilers/ocaml/generic.nix @@ -10,14 +10,18 @@ let safeX11 = stdenv: !(stdenv.isArm || stdenv.isMips); in -{ stdenv, fetchurl, ncurses, buildEnv, libX11, xproto, useX11 ? safeX11 stdenv }: +{ stdenv, fetchurl, ncurses, buildEnv +, libX11, xproto, useX11 ? safeX11 stdenv +, flambdaSupport ? false +}: assert useX11 -> !stdenv.isArm && !stdenv.isMips; +assert flambdaSupport -> stdenv.lib.versionAtLeast version "4.03"; let useNativeCompilers = !stdenv.isMips; - inherit (stdenv.lib) optionals optionalString; - name = "ocaml-${version}"; + inherit (stdenv.lib) optional optionals optionalString; + name = "ocaml${optionalString flambdaSupport "+flambda"}-${version}"; in stdenv.mkDerivation (args // rec { @@ -36,7 +40,9 @@ stdenv.mkDerivation (args // rec { prefixKey = "-prefix "; configureFlags = optionals useX11 [ "-x11lib" x11lib - "-x11include" x11inc ]; + "-x11include" x11inc ] + ++ optional flambdaSupport "-flambda" + ; buildFlags = "world" + optionalString useNativeCompilers " bootstrap world.opt"; buildInputs = [ncurses] ++ optionals useX11 [ libX11 xproto ]; diff --git a/pkgs/development/compilers/rust/binaryBuild.nix b/pkgs/development/compilers/rust/binaryBuild.nix index 8dfe26f72f4a..c8af0d979e22 100644 --- a/pkgs/development/compilers/rust/binaryBuild.nix +++ b/pkgs/development/compilers/rust/binaryBuild.nix @@ -12,26 +12,6 @@ let bootstrapping = versionType == "bootstrap"; - patchBootstrapCargo = '' - ${optionalString (stdenv.isLinux && bootstrapping) '' - patchelf \ - --set-rpath "${stdenv.lib.makeLibraryPath [ curl zlib ]}" \ - --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ - "$out/bin/cargo" - ''} - ${optionalString (stdenv.isDarwin && bootstrapping) '' - install_name_tool \ - -change /usr/lib/libiconv.2.dylib '${getLib libiconv}/lib/libiconv.2.dylib' \ - "$out/bin/cargo" - install_name_tool \ - -change /usr/lib/libcurl.4.dylib '${getLib curl}/lib/libcurl.4.dylib' \ - "$out/bin/cargo" - install_name_tool \ - -change /usr/lib/libz.1.dylib '${getLib zlib}/lib/libz.1.dylib' \ - "$out/bin/cargo" - ''} - ''; - installComponents = "rustc,rust-std-${platform}" + (optionalString bootstrapping ",rust-docs,cargo") @@ -56,7 +36,7 @@ rec { phases = ["unpackPhase" "installPhase" "fixupPhase"]; - propagatedBuildInputs = stdenv.lib.optional stdenv.isDarwin Security; + buildInputs = stdenv.lib.optional stdenv.isDarwin Security; installPhase = '' ./install.sh --prefix=$out \ @@ -69,15 +49,22 @@ rec { patchelf \ --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ "$out/bin/rustdoc" + patchelf \ + --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + "$out/bin/cargo" ''} + ${optionalString (stdenv.isDarwin && bootstrapping) '' + install_name_tool -change /usr/lib/libresolv.9.dylib '${darwin.libresolv}/lib/libresolv.9.dylib' "$out/bin/rustc" + install_name_tool -change /usr/lib/libresolv.9.dylib '${darwin.libresolv}/lib/libresolv.9.dylib' "$out/bin/rustdoc" install_name_tool -change /usr/lib/libiconv.2.dylib '${darwin.libiconv}/lib/libiconv.2.dylib' "$out/bin/cargo" + install_name_tool -change /usr/lib/libresolv.9.dylib '${darwin.libresolv}/lib/libresolv.9.dylib' "$out/bin/cargo" install_name_tool -change /usr/lib/libcurl.4.dylib '${stdenv.lib.getLib curl}/lib/libcurl.4.dylib' "$out/bin/cargo" - install_name_tool -change /usr/lib/libz.1.dylib '${stdenv.lib.getLib zlib}/lib/libz.1.dylib' "$out/bin/cargo" + for f in $out/lib/lib*.dylib; do + install_name_tool -change /usr/lib/libresolv.9.dylib '${darwin.libresolv}/lib/libresolv.9.dylib' "$f" + done ''} - ${patchBootstrapCargo} - # Do NOT, I repeat, DO NOT use `wrapProgram` on $out/bin/rustc # (or similar) here. It causes strange effects where rustc loads # the wrong libraries in a bootstrap-build causing failures that @@ -101,14 +88,23 @@ rec { phases = ["unpackPhase" "installPhase" "fixupPhase"]; - buildInputs = [ makeWrapper ]; - propagatedBuildInputs = stdenv.lib.optional stdenv.isDarwin Security; + buildInputs = [ makeWrapper ] ++ stdenv.lib.optional stdenv.isDarwin Security; installPhase = '' ./install.sh --prefix=$out \ --components=cargo - ${patchBootstrapCargo} + ${optionalString (stdenv.isLinux && bootstrapping) '' + patchelf \ + --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + "$out/bin/cargo" + ''} + + ${optionalString (stdenv.isDarwin && bootstrapping) '' + install_name_tool -change /usr/lib/libiconv.2.dylib '${darwin.libiconv}/lib/libiconv.2.dylib' "$out/bin/cargo" + install_name_tool -change /usr/lib/libresolv.9.dylib '${darwin.libresolv}/lib/libresolv.9.dylib' "$out/bin/cargo" + install_name_tool -change /usr/lib/libcurl.4.dylib '${stdenv.lib.getLib curl}/lib/libcurl.4.dylib' "$out/bin/cargo" + ''} wrapProgram "$out/bin/cargo" \ --suffix PATH : "${rustc}/bin" diff --git a/pkgs/development/compilers/rust/rustc.nix b/pkgs/development/compilers/rust/rustc.nix index ec0f100fb568..a33b035669fa 100644 --- a/pkgs/development/compilers/rust/rustc.nix +++ b/pkgs/development/compilers/rust/rustc.nix @@ -17,13 +17,13 @@ let inherit (stdenv.lib) optional optionalString; + inherit (darwin.apple_sdk.frameworks) Security; procps = if stdenv.isDarwin then darwin.ps else args.procps; llvmShared = llvm.override { enableSharedLibraries = true; }; target = builtins.replaceStrings [" "] [","] (builtins.toString targets); - in stdenv.mkDerivation { @@ -141,6 +141,7 @@ stdenv.mkDerivation { ++ optional (!stdenv.isDarwin) gdb; buildInputs = [ ncurses ] ++ targetToolchains + ++ optional stdenv.isDarwin Security ++ optional (!forceBundledLLVM) llvmShared; outputs = [ "out" "man" "doc" ]; @@ -168,7 +169,7 @@ stdenv.mkDerivation { # enableParallelBuilding = false; meta = with stdenv.lib; { - homepage = http://www.rust-lang.org/; + homepage = https://www.rust-lang.org/; description = "A safe, concurrent, practical language"; maintainers = with maintainers; [ madjar cstrahan wizeman globin havvy wkennington ]; license = [ licenses.mit licenses.asl20 ]; diff --git a/pkgs/development/compilers/sbcl/default.nix b/pkgs/development/compilers/sbcl/default.nix index b800d71198af..cd3120ed8312 100644 --- a/pkgs/development/compilers/sbcl/default.nix +++ b/pkgs/development/compilers/sbcl/default.nix @@ -91,7 +91,7 @@ stdenv.mkDerivation rec { # Specifying $SBCL_HOME is only truly needed with `purgeNixReferences = true`. setupHook = writeText "setupHook.sh" '' - envHooks+=(_setSbclHome) + addEnvHooks "$targetOffset" _setSbclHome _setSbclHome() { export SBCL_HOME='@out@/lib/sbcl/' } diff --git a/pkgs/development/compilers/uhc/default.nix b/pkgs/development/compilers/uhc/default.nix index 79b22214eccd..bf48abb923fb 100644 --- a/pkgs/development/compilers/uhc/default.nix +++ b/pkgs/development/compilers/uhc/default.nix @@ -49,5 +49,6 @@ in stdenv.mkDerivation rec { # On Darwin, the GNU libtool is used, which does not # support the -static flag and thus breaks the build. platforms = ["x86_64-linux"]; + broken = true; }; } diff --git a/pkgs/development/compilers/urweb/default.nix b/pkgs/development/compilers/urweb/default.nix index 74ca5dc4c4b0..f2b6016ceb70 100644 --- a/pkgs/development/compilers/urweb/default.nix +++ b/pkgs/development/compilers/urweb/default.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { sha256 = "17qh9mcmlhbv6r52yij8l9ik7j7x6x7c09lf6pznnbdh4sf8p5wb"; }; - buildInputs = [ openssl mlton mysql.client postgresql sqlite ]; + buildInputs = [ openssl mlton mysql.connector-c postgresql sqlite ]; prePatch = '' sed -e 's@/usr/bin/file@${file}/bin/file@g' -i configure @@ -21,13 +21,13 @@ stdenv.mkDerivation rec { preConfigure = '' export PGHEADER="${postgresql}/include/libpq-fe.h"; - export MSHEADER="${lib.getDev mysql.client}/include/mysql/mysql.h"; + export MSHEADER="${mysql.connector-c}/include/mysql/mysql.h"; export SQHEADER="${sqlite.dev}/include/sqlite3.h"; export CC="${gcc}/bin/gcc"; export CCARGS="-I$out/include \ -L${openssl.out}/lib \ - -L${lib.getLib mysql.client}/lib \ + -L${mysql.connector-c}/lib \ -L${postgresql.lib}/lib \ -L${sqlite.out}/lib"; ''; diff --git a/pkgs/development/compilers/vala/default.nix b/pkgs/development/compilers/vala/default.nix index 40af4c312cf0..f42cdcabae3f 100644 --- a/pkgs/development/compilers/vala/default.nix +++ b/pkgs/development/compilers/vala/default.nix @@ -29,6 +29,12 @@ let in rec { + vala_0_23 = generic { + major = "0.23"; + minor = "3"; + sha256 = "101xjbc818g4849n9a80c2aai13zakj7mpnd7470xnkvz5jwqq96"; + }; + vala_0_26 = generic { major = "0.26"; minor = "2"; @@ -37,8 +43,8 @@ in rec { vala_0_28 = generic { major = "0.28"; - minor = "0"; - sha256 = "0zwpzhkhfk3piya14m7p2hl2vaabahprphppfm46ci91z39kp7hd"; + minor = "1"; + sha256 = "0isg327w6rfqqdjja6a8pc3xcdkj7pqrkdhw48bsyxab2fkaw3hw"; }; vala_0_32 = generic { @@ -49,14 +55,20 @@ in rec { vala_0_34 = generic { major = "0.34"; - minor = "1"; - sha256 = "16cjybjw100qps6jg0jdyjh8hndz8a876zmxpybnf30a8vygrk7m"; + minor = "13"; + sha256 = "0ahbnhgwhhjkndmbr1d039ws0g2bb324c60fk6wgx7py5wvmgcd2"; + }; + + vala_0_36 = generic { + major = "0.36"; + minor = "8"; + sha256 = "1nz5a8kcb22ss9idb7k1higwpvghd617xwf40fi0a9ggws614lfz"; }; vala_0_38 = generic { major = "0.38"; - minor = "1"; - sha256 = "112hl3lkcyakrk8c3qgw12gzn3nxjkvx7bn0jhl5f2m57d7k8d8h"; + minor = "4"; + sha256 = "1sg5gaq3jhgr9vzh2ypiw475167k150wmyglymr7wwqppmikmcrc"; extraNativeBuildInputs = [ autoconf ] ++ stdenv.lib.optionals stdenv.isDarwin [ libtool expat ]; extraBuildInputs = [ graphviz ]; }; |