diff options
author | Alyssa Ross <hi@alyssa.is> | 2020-05-12 14:45:39 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2020-05-12 14:56:01 +0000 |
commit | eb7dadee9c0f903f1152f8dd4165453bfa48ccf4 (patch) | |
tree | a6bd66dcbec895aae167465672af08a1ca70f089 /nixpkgs/pkgs/development/compilers | |
parent | 3879b925f5dae3a0eb5c98b10c1ac5a0e4d729a3 (diff) | |
parent | 683c68232e91f76386db979c461d8fbe2a018782 (diff) | |
download | nixlib-eb7dadee9c0f903f1152f8dd4165453bfa48ccf4.tar nixlib-eb7dadee9c0f903f1152f8dd4165453bfa48ccf4.tar.gz nixlib-eb7dadee9c0f903f1152f8dd4165453bfa48ccf4.tar.bz2 nixlib-eb7dadee9c0f903f1152f8dd4165453bfa48ccf4.tar.lz nixlib-eb7dadee9c0f903f1152f8dd4165453bfa48ccf4.tar.xz nixlib-eb7dadee9c0f903f1152f8dd4165453bfa48ccf4.tar.zst nixlib-eb7dadee9c0f903f1152f8dd4165453bfa48ccf4.zip |
Merge commit '683c68232e91f76386db979c461d8fbe2a018782'
Diffstat (limited to 'nixpkgs/pkgs/development/compilers')
75 files changed, 1184 insertions, 1055 deletions
diff --git a/nixpkgs/pkgs/development/compilers/abcl/default.nix b/nixpkgs/pkgs/development/compilers/abcl/default.nix index 2c9de7617781..005e4186b152 100644 --- a/nixpkgs/pkgs/development/compilers/abcl/default.nix +++ b/nixpkgs/pkgs/development/compilers/abcl/default.nix @@ -1,11 +1,11 @@ {stdenv, fetchurl, ant, jre, jdk}: stdenv.mkDerivation rec { pname = "abcl"; - version = "1.6.0"; + version = "1.6.1"; # or fetchFromGitHub(owner,repo,rev) or fetchgit(rev) src = fetchurl { url = "https://common-lisp.net/project/armedbear/releases/${version}/${pname}-src-${version}.tar.gz"; - sha256 = "0hvbcsffr8n2xwdixc8wyw1bfl9fxn2gyy0c4nma7j9zbn0wwgw9"; + sha256 = "04myiba6g0vij2ym2dmb0156k20ki2lz13dxwp2bk9kvjn2zg88b"; }; configurePhase = '' mkdir nix-tools diff --git a/nixpkgs/pkgs/development/compilers/avra/default.nix b/nixpkgs/pkgs/development/compilers/avra/default.nix index 55ed48e118e8..56bf3e657bec 100644 --- a/nixpkgs/pkgs/development/compilers/avra/default.nix +++ b/nixpkgs/pkgs/development/compilers/avra/default.nix @@ -24,6 +24,5 @@ stdenv.mkDerivation rec { homepage = "http://avra.sourceforge.net/"; license = licenses.gpl2Plus; platforms = platforms.all; - maintainers = with maintainers; [ the-kenny ]; }; } diff --git a/nixpkgs/pkgs/development/compilers/binaryen/default.nix b/nixpkgs/pkgs/development/compilers/binaryen/default.nix index 023c567638fd..3a03f633ff0d 100644 --- a/nixpkgs/pkgs/development/compilers/binaryen/default.nix +++ b/nixpkgs/pkgs/development/compilers/binaryen/default.nix @@ -1,11 +1,11 @@ { stdenv, cmake, python3, fetchFromGitHub, emscriptenRev ? null, substituteAll }: let - defaultVersion = "91"; + defaultVersion = "93"; # Map from git revs to SHA256 hashes sha256s = { - version_91 = "1qsjqnzc5w9ny9v01bxkdvhh4kgbsia01x5vvac72m075v4mpgs4"; + version_93 = "15y3703ha6mxcq168br0wlydas5rq66msrcsd650zrjz0ndxwsfx"; "1.39.1" = "0ygm9m5322h4vfpf3j63q32qxk2l26yk62hh7dkb49j51zwl1y3y"; }; in diff --git a/nixpkgs/pkgs/development/compilers/bs-platform/build-bs-platform.nix b/nixpkgs/pkgs/development/compilers/bs-platform/build-bs-platform.nix index d7d0fe0b12be..71ba415d6202 100644 --- a/nixpkgs/pkgs/development/compilers/bs-platform/build-bs-platform.nix +++ b/nixpkgs/pkgs/development/compilers/bs-platform/build-bs-platform.nix @@ -52,7 +52,7 @@ stdenv.mkDerivation rec { installPhase = '' mkdir -p $out/bin cp -rf jscomp lib ${bin_folder} vendor odoc_gen native bsb bsc bsrefmt $out - mkdir $out/lib/ocaml + mkdir -p $out/lib/ocaml cp jscomp/runtime/js.* jscomp/runtime/*.cm* $out/lib/ocaml cp jscomp/others/*.ml jscomp/others/*.mli jscomp/others/*.cm* $out/lib/ocaml cp jscomp/stdlib-406/*.ml jscomp/stdlib-406/*.mli jscomp/stdlib-406/*.cm* $out/lib/ocaml diff --git a/nixpkgs/pkgs/development/compilers/bs-platform/default.nix b/nixpkgs/pkgs/development/compilers/bs-platform/default.nix index 14347da98b83..ee4123a23c13 100644 --- a/nixpkgs/pkgs/development/compilers/bs-platform/default.nix +++ b/nixpkgs/pkgs/development/compilers/bs-platform/default.nix @@ -4,14 +4,14 @@ let in (build-bs-platform rec { inherit stdenv runCommand fetchFromGitHub ninja nodejs python3; - version = "7.2.0"; + version = "7.3.1"; ocaml-version = "4.06.1"; src = fetchFromGitHub { owner = "BuckleScript"; repo = "bucklescript"; rev = version; - sha256 = "1fsx7gvcp6rbqd0qf5fix02mbbmk9rgm09zbwjrx0lp5cjv3n2s4"; + sha256 = "14vp6cl5ml7xb3pd0paqajb50qv62l8j5m8hi3b6fh0pm68j1yxd"; fetchSubmodules = true; }; }).overrideAttrs (attrs: { diff --git a/nixpkgs/pkgs/development/compilers/chicken/4/chicken.nix b/nixpkgs/pkgs/development/compilers/chicken/4/chicken.nix index be7a4530419d..11f4eaada604 100644 --- a/nixpkgs/pkgs/development/compilers/chicken/4/chicken.nix +++ b/nixpkgs/pkgs/development/compilers/chicken/4/chicken.nix @@ -63,7 +63,7 @@ stdenv.mkDerivation { meta = { homepage = "http://www.call-cc.org/"; license = stdenv.lib.licenses.bsd3; - maintainers = with stdenv.lib.maintainers; [ the-kenny corngood ]; + maintainers = with stdenv.lib.maintainers; [ corngood ]; platforms = stdenv.lib.platforms.linux; # Maybe other non-darwin Unix description = "A portable compiler for the Scheme programming language"; longDescription = '' diff --git a/nixpkgs/pkgs/development/compilers/chicken/4/egg2nix.nix b/nixpkgs/pkgs/development/compilers/chicken/4/egg2nix.nix index db91b1648afc..977f34692f90 100644 --- a/nixpkgs/pkgs/development/compilers/chicken/4/egg2nix.nix +++ b/nixpkgs/pkgs/development/compilers/chicken/4/egg2nix.nix @@ -22,6 +22,6 @@ eggDerivation { homepage = "https://github.com/the-kenny/egg2nix"; license = stdenv.lib.licenses.bsd3; platforms = stdenv.lib.platforms.unix; - maintainers = with stdenv.lib.maintainers; [ the-kenny corngood ]; + maintainers = with stdenv.lib.maintainers; [ corngood ]; }; } diff --git a/nixpkgs/pkgs/development/compilers/chicken/5/chicken.nix b/nixpkgs/pkgs/development/compilers/chicken/5/chicken.nix index 00d359c96d02..f07b63ea26f4 100644 --- a/nixpkgs/pkgs/development/compilers/chicken/5/chicken.nix +++ b/nixpkgs/pkgs/development/compilers/chicken/5/chicken.nix @@ -45,7 +45,7 @@ stdenv.mkDerivation { meta = { homepage = "http://www.call-cc.org/"; license = stdenv.lib.licenses.bsd3; - maintainers = with stdenv.lib.maintainers; [ the-kenny corngood ]; + maintainers = with stdenv.lib.maintainers; [ corngood ]; platforms = stdenv.lib.platforms.linux; # Maybe other non-darwin Unix description = "A portable compiler for the Scheme programming language"; longDescription = '' diff --git a/nixpkgs/pkgs/development/compilers/chicken/5/egg2nix.nix b/nixpkgs/pkgs/development/compilers/chicken/5/egg2nix.nix index 7c73e37272de..0c18b8db2ded 100644 --- a/nixpkgs/pkgs/development/compilers/chicken/5/egg2nix.nix +++ b/nixpkgs/pkgs/development/compilers/chicken/5/egg2nix.nix @@ -24,6 +24,6 @@ eggDerivation { homepage = "https://github.com/the-kenny/egg2nix"; license = stdenv.lib.licenses.bsd3; platforms = stdenv.lib.platforms.unix; - maintainers = with stdenv.lib.maintainers; [ the-kenny corngood ]; + maintainers = with stdenv.lib.maintainers; [ corngood ]; }; } diff --git a/nixpkgs/pkgs/development/compilers/closure/default.nix b/nixpkgs/pkgs/development/compilers/closure/default.nix index 5204932448b1..896b3a767898 100644 --- a/nixpkgs/pkgs/development/compilers/closure/default.nix +++ b/nixpkgs/pkgs/development/compilers/closure/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "closure-compiler"; - version = "20200315"; + version = "20200406"; src = fetchurl { url = "https://dl.google.com/closure-compiler/compiler-${version}.tar.gz"; - sha256 = "0akif1wgsyyqrfkidkwhw47dsx471h3b4zsjhnh4rf6kv7by3q65"; + sha256 = "1dd6fakavnadpm8h8r4d1saf9flm7ilhknfy0q6i5i237psjf7i5"; }; sourceRoot = "."; diff --git a/nixpkgs/pkgs/development/compilers/crystal/build-package.nix b/nixpkgs/pkgs/development/compilers/crystal/build-package.nix index 8ffa89a11b4a..856c6e58bc18 100644 --- a/nixpkgs/pkgs/development/compilers/crystal/build-package.nix +++ b/nixpkgs/pkgs/development/compilers/crystal/build-package.nix @@ -1,53 +1,109 @@ -{ stdenv, lib, crystal, linkFarm, fetchFromGitHub }: -{ # Generate shards.nix with `nix-shell -p crystal2nix --run crystal2nix` in the projects root - shardsFile ? null +{ stdenv, lib, crystal, shards, git, pkgconfig, which, linkFarm, fetchFromGitHub, installShellFiles }: + +{ # Some projects do not include a lock file, so you can pass one + lockFile ? null + # Generate shards.nix with `nix-shell -p crystal2nix --run crystal2nix` in the projects root +, shardsFile ? null + # We support different builders. To make things more straight forward, make it + # user selectable instead of trying to autodetect +, format ? "make" +, installManPages ? true # Specify binaries to build in the form { foo.src = "src/foo.cr"; } # The default `crystal build` options can be overridden with { foo.options = [ "--no-debug" ]; } -, crystalBinaries ? {} -, ... -}@args: +, crystalBinaries ? { }, ... }@args: + +assert (builtins.elem format [ "make" "crystal" "shards" ]); + let - mkDerivationArgs = builtins.removeAttrs args [ "shardsFile" "crystalBinaries" ]; + mkDerivationArgs = builtins.removeAttrs args [ + "format" + "installManPages" + "lockFile" + "shardsFile" + "crystalBinaries" + ]; crystalLib = linkFarm "crystal-lib" (lib.mapAttrsToList (name: value: { inherit name; path = fetchFromGitHub value; }) (import shardsFile)); - defaultOptions = [ "--release" "--progress" "--no-debug" "--verbose" ]; + # we previously had --no-debug here but that is not recommended by upstream + defaultOptions = [ "--release" "--progress" "--verbose" ]; + buildDirectly = shardsFile == null || crystalBinaries != { }; in stdenv.mkDerivation (mkDerivationArgs // { - configurePhase = args.configurePhase or '' - runHook preConfigure - ${lib.optionalString (shardsFile != null) "ln -s ${crystalLib} lib"} - runHook postConfigure - ''; + configurePhase = args.configurePhase or lib.concatStringsSep "\n" ([ + "runHook preConfigure" + ] ++ lib.optional (lockFile != null) "ln -s ${lockFile} ./shard.lock" + ++ lib.optional (shardsFile != null) "ln -s ${crystalLib} lib" + ++ [ "runHook postConfigure "]); - buildInputs = args.buildInputs or [] ++ [ crystal ]; - - buildPhase = args.buildPhase or '' - runHook preBuild - ${lib.concatStringsSep "\n" (lib.mapAttrsToList (bin: attrs: '' - crystal ${lib.escapeShellArgs ([ - "build" - "-o" bin - (attrs.src or (throw "No source file for crystal binary ${bin} provided")) - ] ++ attrs.options or defaultOptions)} - '') crystalBinaries)} - runHook postBuild - ''; + CRFLAGS = lib.concatStringsSep " " defaultOptions; + + PREFIX = placeholder "out"; + + buildInputs = args.buildInputs or [ ] ++ [ crystal ] + ++ lib.optional (format != "crystal") shards; + + nativeBuildInputs = args.nativeBuildInputs or [ ] ++ [ git installShellFiles pkgconfig which ]; + + buildPhase = args.buildPhase or (lib.concatStringsSep "\n" ([ + "runHook preBuild" + ] ++ lib.optional (format == "make") + ''make ''${buildTargets:-build} $makeFlags'' + ++ lib.optionals (format == "crystal") (lib.mapAttrsToList (bin: attrs: '' + crystal ${lib.escapeShellArgs (["build" "-o" bin + (attrs.src or (throw "No source file for crystal binary ${bin} provided")) + ] ++ (attrs.options or defaultOptions))} + '') crystalBinaries) + ++ lib.optional (format == "shards") + "shards build --local --production ${lib.concatStringsSep " " defaultOptions}" + ++ [ "runHook postBuild" ])); + + installPhase = args.installPhase or (lib.concatStringsSep "\n" ([ + "runHook preInstall" + ] ++ lib.optional (format == "make") + ''make ''${installTargets:-install} $installFlags'' + ++ lib.optionals (format == "crystal") (map (bin: '' + install -Dm555 ${lib.escapeShellArgs [ bin "${placeholder "out"}/bin/${bin}" ]} + '') (lib.attrNames crystalBinaries)) + ++ lib.optional (format == "shards") + ''install -Dm555 bin/* -t $out/bin'' + ++ [ + '' + for f in README* *.md LICENSE; do + test -f $f && install -Dm444 $f -t $out/share/doc/${args.pname} + done + '' + ] ++ (lib.optional installManPages '' + if [ -d man ]; then + installManPage man/*.? + fi + '') ++ [ + "runHook postInstall" + ])); + + doCheck = args.doCheck or true; + + checkPhase = args.checkPhase or (lib.concatStringsSep "\n" ([ + "runHook preCheck" + ] ++ lib.optional (format == "make") + ''make ''${checkTarget:-test} $checkFlags'' + ++ lib.optional (format != "make") + ''crystal ''${checkTarget:-spec} $checkFlags'' + ++ [ "runHook postCheck" ])); + + doInstallCheck = args.doInstallCheck or true; - installPhase = args.installPhase or '' - runHook preInstall - mkdir -p "$out/bin" - ${lib.concatMapStringsSep "\n" (bin: '' - mv ${lib.escapeShellArgs [ bin "${placeholder "out"}/bin/${bin}" ]} - '') (lib.attrNames crystalBinaries)} - runHook postInstall + installCheckPhase = args.installCheckPhase or '' + for f in $out/bin/*; do + $f --help + done ''; - meta = args.meta or {} // { + meta = args.meta or { } // { platforms = args.meta.platforms or crystal.meta.platforms; }; }) diff --git a/nixpkgs/pkgs/development/compilers/crystal/crystal2nix.nix b/nixpkgs/pkgs/development/compilers/crystal/crystal2nix.nix index ac69b9b3d965..5fc40cd23741 100644 --- a/nixpkgs/pkgs/development/compilers/crystal/crystal2nix.nix +++ b/nixpkgs/pkgs/development/compilers/crystal/crystal2nix.nix @@ -1,4 +1,5 @@ { lib, crystal, nix-prefetch-git }: + crystal.buildCrystalPackage { pname = "crystal2nix"; version = "unstable-2018-07-31"; @@ -6,11 +7,16 @@ crystal.buildCrystalPackage { nixPrefetchGit = "${lib.getBin nix-prefetch-git}/bin/nix-prefetch-git"; unpackPhase = "substituteAll ${./crystal2nix.cr} crystal2nix.cr"; + format = "crystal"; + crystalBinaries.crystal2nix.src = "crystal2nix.cr"; + # it will blow up without a shard.yml file + doInstallCheck = false; + meta = with lib; { description = "Utility to convert Crystal's shard.lock files to a Nix file"; license = licenses.mit; - maintainers = [ maintainers.manveru ]; + maintainers = with maintainers; [ manveru ]; }; } diff --git a/nixpkgs/pkgs/development/compilers/crystal/default.nix b/nixpkgs/pkgs/development/compilers/crystal/default.nix index db22b668cf5e..a04d48dd0e5a 100644 --- a/nixpkgs/pkgs/development/compilers/crystal/default.nix +++ b/nixpkgs/pkgs/development/compilers/crystal/default.nix @@ -1,5 +1,5 @@ { stdenv, lib, fetchFromGitHub, fetchurl, makeWrapper -, coreutils, git, gmp, nettools, openssl, readline, tzdata, libxml2, libyaml +, coreutils, git, gmp, hostname, openssl, readline, tzdata, libxml2, libyaml , boehmgc, libatomic_ops, pcre, libevent, libiconv, llvm, clang, which, zlib, pkgconfig , callPackage }: @@ -62,9 +62,12 @@ let substituteInPlace src/crystal/system/unix/time.cr \ --replace /usr/share/zoneinfo ${tzdata}/share/zoneinfo - ln -s spec/compiler spec/std + ln -sf spec/compiler spec/std + + # Dirty fix for when no sandboxing is enabled + rm -rf /tmp/crystal + mkdir -p /tmp/crystal - mkdir /tmp/crystal substituteInPlace spec/std/file_spec.cr \ --replace '/bin/ls' '${coreutils}/bin/ls' \ --replace '/usr/share' '/tmp/crystal' \ @@ -81,7 +84,7 @@ let --replace '{% if flag?(:gnu) %}"listen: "{% else %}"bind: "{% end %}' '"bind: "' substituteInPlace spec/std/system_spec.cr \ - --replace '`hostname`' '`${nettools}/bin/hostname`' + --replace '`hostname`' '`${hostname}/bin/hostname`' # See https://github.com/crystal-lang/crystal/pull/8640 substituteInPlace spec/std/http/cookie_spec.cr \ @@ -108,6 +111,8 @@ let "all" "docs" ]; + LLVM_CONFIG = "${llvm}/bin/llvm-config"; + FLAGS = [ "--release" "--single-module" # needed for deterministic builds diff --git a/nixpkgs/pkgs/development/compilers/dmd/binary.nix b/nixpkgs/pkgs/development/compilers/dmd/binary.nix new file mode 100644 index 000000000000..cd3a15889b21 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/dmd/binary.nix @@ -0,0 +1,52 @@ +{ stdenv, fetchurl, curl, tzdata, autoPatchelfHook, fixDarwinDylibNames, glibc +, version, hashes }: +with stdenv; +let + OS = if hostPlatform.isDarwin then "osx" else hostPlatform.parsed.kernel.name; + MODEL = toString hostPlatform.parsed.cpu.bits; +in mkDerivation { + pname = "dmd-bootstrap"; + inherit version; + + src = fetchurl rec { + name = "dmd.${version}.${OS}.tar.xz"; + url = "http://downloads.dlang.org/releases/2.x/${version}/${name}"; + sha256 = hashes.${OS} or (throw "missing bootstrap sha256 for OS ${OS}"); + }; + + dontConfigure = true; + dontBuild = true; + + nativeBuildInputs = [ fixDarwinDylibNames autoPatchelfHook ]; + propagatedBuildInputs = [ curl tzdata ] ++ lib.optional hostPlatform.isLinux glibc; + + installPhase = '' + mkdir -p $out + + # try to copy model-specific binaries into bin first + mv ${OS}/bin${MODEL} $out/bin || true + + mv src license.txt ${OS}/* $out/ + + # move man into place + mkdir -p $out/share + mv man $out/share/ + + # move docs into place + mkdir -p $out/share/doc + mv html/d $out/share/doc/ + + # fix paths in dmd.conf (one level less) + substituteInPlace $out/bin/dmd.conf --replace "/../../" "/../" + ''; + + meta = with lib; { + inherit version; + description = "Digital Mars D Compiler Package"; + # As of 2.075 all sources and binaries use the boost license + license = licenses.boost; + maintainers = [ maintainers.lionello ]; + homepage = "https://dlang.org/"; + platforms = [ "x86_64-darwin" "i686-linux" "x86_64-linux" ]; + }; +} diff --git a/nixpkgs/pkgs/development/compilers/dmd/bootstrap.nix b/nixpkgs/pkgs/development/compilers/dmd/bootstrap.nix new file mode 100644 index 000000000000..087781ae2ca4 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/dmd/bootstrap.nix @@ -0,0 +1,9 @@ +{ callPackage }: +callPackage ./binary.nix { + version = "2.090.1"; + hashes = { + # Get these from `nix-prefetch-url http://downloads.dlang.org/releases/2.x/2.090.1/dmd.2.090.1.linux.tar.xz` etc.. + osx = "0rbn7j4dr3q0y09fblpj999bi063pi4230rqd5xgd3gwxxa0cz7l"; + linux = "1vk6lsvd6y7ccvffd23yial4ig90azaxf2rxc6yvidqd1qhan807"; + }; +} diff --git a/nixpkgs/pkgs/development/compilers/dmd/default.nix b/nixpkgs/pkgs/development/compilers/dmd/default.nix index 9281e01ad3e2..a6d4f7e1e20a 100644 --- a/nixpkgs/pkgs/development/compilers/dmd/default.nix +++ b/nixpkgs/pkgs/development/compilers/dmd/default.nix @@ -1,11 +1,13 @@ { stdenv, lib, fetchFromGitHub , makeWrapper, unzip, which, writeTextFile -, curl, tzdata, gdb, darwin, git -, targetPackages, ldc -, version ? "2.085.1" -, dmdSha256 ? "0ccidfcawrcwdpfjwjiln5xwr4ffp8i2hwx52p8zn3xmc5yxm660" -, druntimeSha256 ? "109f2glsqrlshk06761xlw4r5v22mivp873cq9g5gcax3g00k617" -, phobosSha256 ? "0giispqqx8j8xg6c0hm7nx77bcahiwic8rvf12sws3sv5pizv8pr" +, curl, tzdata, gdb, darwin, git, callPackage +, targetPackages, fetchpatch, bash +, dmdBootstrap ? callPackage ./bootstrap.nix { } +, HOST_DMD ? "${dmdBootstrap}/bin/dmd" +, version ? "2.091.1" +, dmdSha256 ? "0brz0n84jdkhr4sq4k91w48p739psbhbb1jk2pi9q60psmx353yr" +, druntimeSha256 ? "0smgpmfriffh110ksski1s5j921kmxbc2zjy0dyj9ksyrxbzklbl" +, phobosSha256 ? "1n00anajgibrfs1xzvrmag28hvbvkc0w1fwlimqbznvhf28rhrxs" }: let @@ -51,7 +53,17 @@ stdenv.mkDerivation rec { }) ]; - patchFlags = [ "--directory=dmd" "-p1" ]; + patchFlags = [ "--directory=dmd" "-p1" "-F3" ]; + patches = [ + (fetchpatch { + url = "https://github.com/dlang/dmd/commit/4157298cf04f7aae9f701432afd1de7b7e05c30f.patch"; + sha256 = "0v4xgqmrx5r8vbx5a4v88s0xnm23mam9nm99yfga7s2sxr0hi5p2"; + }) + (fetchpatch { + url = "https://github.com/dlang/dmd/commit/1b8a4c90b040bf2f0b68a2739de4991315580b13.patch"; + sha256 = "1iih6aalv4fsw9mbrlrybhngkkchzzrzg7q8zl047w36c0x397cs"; + }) + ]; sourceRoot = "."; @@ -62,15 +74,17 @@ stdenv.mkDerivation rec { patchShebangs . ''; - postPatch = stdenv.lib.optionalString stdenv.hostPlatform.isLinux '' + postPatch = '' + substituteInPlace dmd/test/dshell/test6952.d --replace "/usr/bin/env bash" "${bash}/bin/bash" + '' + + stdenv.lib.optionalString stdenv.hostPlatform.isLinux '' substituteInPlace phobos/std/socket.d --replace "assert(ih.addrList[0] == 0x7F_00_00_01);" "" '' - + stdenv.lib.optionalString stdenv.hostPlatform.isDarwin '' substituteInPlace phobos/std/socket.d --replace "foreach (name; names)" "names = []; foreach (name; names)" ''; - nativeBuildInputs = [ ldc makeWrapper unzip which gdb git ] + nativeBuildInputs = [ makeWrapper unzip which gdb git ] ++ stdenv.lib.optional stdenv.hostPlatform.isDarwin (with darwin.apple_sdk.frameworks; [ Foundation @@ -89,7 +103,7 @@ stdenv.mkDerivation rec { # Buid and install are based on http://wiki.dlang.org/Building_DMD buildPhase = '' cd dmd - make -j$NIX_BUILD_CORES -f posix.mak INSTALL_DIR=$out BUILD=release ENABLE_RELEASE=1 PIC=1 HOST_DMD=ldmd2 + make -j$NIX_BUILD_CORES -f posix.mak INSTALL_DIR=$out BUILD=release ENABLE_RELEASE=1 PIC=1 HOST_DMD=${HOST_DMD} cd ../druntime make -j$NIX_BUILD_CORES -f posix.mak BUILD=release ENABLE_RELEASE=1 PIC=1 INSTALL_DIR=$out DMD=${pathToDmd} cd ../phobos @@ -147,8 +161,7 @@ stdenv.mkDerivation rec { # Everything is now Boost licensed, even the backend. # https://github.com/dlang/dmd/pull/6680 license = licenses.boost; - maintainers = with maintainers; [ ThomasMader ]; + maintainers = with maintainers; [ ThomasMader lionello ]; platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ]; }; } - diff --git a/nixpkgs/pkgs/development/compilers/dotnet/buildDotnet.nix b/nixpkgs/pkgs/development/compilers/dotnet/buildDotnet.nix index 1017c8b4975c..6f4237d2dce1 100644 --- a/nixpkgs/pkgs/development/compilers/dotnet/buildDotnet.nix +++ b/nixpkgs/pkgs/development/compilers/dotnet/buildDotnet.nix @@ -13,10 +13,14 @@ assert builtins.elem type [ "aspnetcore" "netcore" "sdk"]; , curl }: let pname = if type == "aspnetcore" then "aspnetcore-runtime" else if type == "netcore" then "dotnet-runtime" else "dotnet-sdk"; + suffix = { + x86_64-linux = "x64"; + aarch64-linux = "arm64"; + }."${stdenv.hostPlatform.system}" or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); urls = { - aspnetcore = "https://dotnetcli.azureedge.net/dotnet/aspnetcore/Runtime/${version}/${pname}-${version}-linux-x64.tar.gz"; - netcore = "https://dotnetcli.azureedge.net/dotnet/Runtime/${version}/${pname}-${version}-linux-x64.tar.gz"; - sdk = "https://dotnetcli.azureedge.net/dotnet/Sdk/${version}/${pname}-${version}-linux-x64.tar.gz"; + aspnetcore = "https://dotnetcli.azureedge.net/dotnet/aspnetcore/Runtime/${version}/${pname}-${version}-linux-${suffix}.tar.gz"; + netcore = "https://dotnetcli.azureedge.net/dotnet/Runtime/${version}/${pname}-${version}-linux-${suffix}.tar.gz"; + sdk = "https://dotnetcli.azureedge.net/dotnet/Sdk/${version}/${pname}-${version}-linux-${suffix}.tar.gz"; }; descriptions = { aspnetcore = "ASP .NET Core runtime ${version}"; @@ -30,7 +34,7 @@ in stdenv.mkDerivation rec { src = fetchurl { url = builtins.getAttr type urls; - inherit sha512; + sha512 = sha512."${stdenv.hostPlatform.system}" or (throw "Missing hash for host system: ${stdenv.hostPlatform.system}"); }; sourceRoot = "."; @@ -61,7 +65,7 @@ in stdenv.mkDerivation rec { meta = with stdenv.lib; { homepage = "https://dotnet.github.io/"; description = builtins.getAttr type descriptions; - platforms = [ "x86_64-linux" ]; + platforms = [ "x86_64-linux" "aarch64-linux" ]; maintainers = with maintainers; [ kuznero ]; license = licenses.mit; }; diff --git a/nixpkgs/pkgs/development/compilers/dotnet/default.nix b/nixpkgs/pkgs/development/compilers/dotnet/default.nix index 7b7a564ba374..6497e8bdf965 100644 --- a/nixpkgs/pkgs/development/compilers/dotnet/default.nix +++ b/nixpkgs/pkgs/development/compilers/dotnet/default.nix @@ -5,27 +5,37 @@ dotnetCombined = with dotnetCorePackages; combinePackages [ sdk_3_1 sdk_2_2 sdk_ { callPackage }: let buildDotnet = attrs: callPackage (import ./buildDotnet.nix attrs) {}; - buildAspNetCore = attrs: buildDotnet (attrs // { type = "aspnetcore"; } ); - buildNetCore = attrs: buildDotnet (attrs // { type = "netcore"; } ); - buildNetCoreSdk = attrs: buildDotnet (attrs // { type = "sdk"; } ); -in rec { + buildAspNetCore = attrs: buildDotnet (attrs // { type = "aspnetcore"; }); + buildNetCore = attrs: buildDotnet (attrs // { type = "netcore"; }); + buildNetCoreSdk = attrs: buildDotnet (attrs // { type = "sdk"; }); +in +rec { combinePackages = attrs: callPackage (import ./combinePackages.nix attrs) {}; # v2.1.15 (LTS) aspnetcore_2_1 = buildAspNetCore { version = "2.1.16"; - sha512 = "0awdzi8dysbg8xcy4l8wx2sb8gaaklphmwv61qxh7dj6ih4nla34l02xdax1l8nw41znnnqzsa77avglnrz36pckm9mc52m7wc7877h"; + sha512 = { + x86_64-linux = "0awdzi8dysbg8xcy4l8wx2sb8gaaklphmwv61qxh7dj6ih4nla34l02xdax1l8nw41znnnqzsa77avglnrz36pckm9mc52m7wc7877h"; + aarch64-linux = null; # no aarch64 version of this package is available + }; }; netcore_2_1 = buildNetCore { version = "2.1.16"; - sha512 = "07vvmza32hsblpw4zpcksm2gicy4agh0d1fwradqj16y6xbh3frdp87mqgbj5m54mmyfp5bc8c46v1w6dfm1w3y80v2y46aynild45l"; + sha512 = { + x86_64-linux = "07vvmza32hsblpw4zpcksm2gicy4agh0d1fwradqj16y6xbh3frdp87mqgbj5m54mmyfp5bc8c46v1w6dfm1w3y80v2y46aynild45l"; + aarch64-linux = "27ab982vz9rn2vzpq68dqfzhryfixq3s0apx7vi0cwiray3scgfmf45fm7qj63k9mvaqnk5g69i339109yasw3q5vpvpyjc1ykbi710"; + }; }; sdk_2_1 = buildNetCoreSdk { version = "2.1.804"; - sha512 = "1kbzxcdgyvs94kkm6ikr1j0p0k3zq30d10sl69ig0rgbqbqm4rpqi6dq94jjbw7q3jlwz83vgq3549q38d2s9kalmzv9lmddn2kkc42"; + sha512 = { + x86_64-linux = "1kbzxcdgyvs94kkm6ikr1j0p0k3zq30d10sl69ig0rgbqbqm4rpqi6dq94jjbw7q3jlwz83vgq3549q38d2s9kalmzv9lmddn2kkc42"; + aarch64-linux = "2d97xvhxnkdgghqlichkwdxxh641dzkd9hq5xgffgvbqv1qsh31k9yib2q1nsarpnbx0d758bdn2jm2wvsj7nx0gpxlb3nab0b3hc2g"; + }; }; # v2.2 @@ -36,33 +46,51 @@ in rec { aspnetcore_3_0 = buildAspNetCore { version = "3.0.3"; - sha512 = "342v6kxxbxky09d1c392vvr9rm30lf75wccka1bk2h4advlcga5nlgv93g7vrq48bsyxfi5gc36r3b0dlwl1g409g5mlk1042n6d0yq"; + sha512 = { + x86_64-linux = "342v6kxxbxky09d1c392vvr9rm30lf75wccka1bk2h4advlcga5nlgv93g7vrq48bsyxfi5gc36r3b0dlwl1g409g5mlk1042n6d0yq"; + aarch64-linux = "2xkg4q88q5jw6jdz6cxj8vsjr475nd0fcvifkv1shdm2j9dsjy233hwpxbr140m5n5ggyh6z99238z9j4kp2az977y8y8irz8m8ppvf"; + }; }; netcore_3_0 = buildNetCore { version = "3.0.3"; - sha512 = "32ykpcw2xx708r2lxcwcbxnmy4sk159rlfjfvkw990qh7n79pm3lm2qwa3zhqcslznmpg18kwxz8qb5fgsa0h49g843xx4kyai0n7rx"; + sha512 = { + x86_64-linux = "32ykpcw2xx708r2lxcwcbxnmy4sk159rlfjfvkw990qh7n79pm3lm2qwa3zhqcslznmpg18kwxz8qb5fgsa0h49g843xx4kyai0n7rx"; + aarch64-linux = "1lp8din7d5jv5fkyq1a7m01i1xg9jwpiljvam1kcyzsnwzvi0cb4ji336cfx4lqrn95gvc75gkzi6q8b4fz0h21gvk6z6kmlcr63nyg"; + }; }; sdk_3_0 = buildNetCoreSdk { version = "3.0.103"; - sha512 = "2diiplgxs92fkb6ym68b02d79z4qn63x5qlky5lvr757c1zkh0vfpk3khawdg94kdn4qkn6dmyqr0msxqgmiqyhp63cadzqq4vx7b12"; + sha512 = { + x86_64-linux = "2diiplgxs92fkb6ym68b02d79z4qn63x5qlky5lvr757c1zkh0vfpk3khawdg94kdn4qkn6dmyqr0msxqgmiqyhp63cadzqq4vx7b12"; + aarch64-linux = "32843q2lj7dgciq62g9v1q31vwfjyv5vaxrz712d942mcg5lyzjygwri106bv4naq3a22131ldzwnsifbdn2vq1iz60raqdb7ss9vnf"; + }; }; # v3.1.1 (LTS) aspnetcore_3_1 = buildAspNetCore { version = "3.1.2"; - sha512 = "27708bk5liz8r39p4dzs41clgq298d49g8ipzdj56pz613vkfyv7bp91666ydz36aazm265j2g9ji3sk1f9kbgv6024zwrly5w9vqrm"; + sha512 = { + x86_64-linux = "27708bk5liz8r39p4dzs41clgq298d49g8ipzdj56pz613vkfyv7bp91666ydz36aazm265j2g9ji3sk1f9kbgv6024zwrly5w9vqrm"; + aarch64-linux = "2sm5yf376w5dm0za3gbcj251kc909fmlasmlyn70zhqp2jiii075vcqh40racjlwlhsfydx32cw7kgnv238lad5mw5jxy143zql5xl3"; + }; }; netcore_3_1 = buildNetCore { version = "3.1.2"; - sha512 = "3zwg1anrcni9kagmjxn485bpjvb146hkm7irmikq3v879gjhd2fgpscg226ds83l4pxll3r7lwris6ij952xmy8lsqraapd9111ba14"; + sha512 = { + x86_64-linux = "3zwg1anrcni9kagmjxn485bpjvb146hkm7irmikq3v879gjhd2fgpscg226ds83l4pxll3r7lwris6ij952xmy8lsqraapd9111ba14"; + aarch64-linux = "3hf61d5adlfffy51627ypp36qc5r55g9xwgfxqd0c7vj9bqmpiph673bvqqpr189df9shxr21p94cwrc5n36z72a37vw4ic8ks2yayx"; + }; }; sdk_3_1 = buildNetCoreSdk { version = "3.1.102"; - sha512 = "0lmz8ac5j0i4zcq4904kr6qibvyjcm2ckfg27kqyqfii00qmm80xb5sk3i7f06xqkbgkrqkbg9rsldk75akw6m5dxg932j602bxrb4w"; + sha512 = { + x86_64-linux = "0lmz8ac5j0i4zcq4904kr6qibvyjcm2ckfg27kqyqfii00qmm80xb5sk3i7f06xqkbgkrqkbg9rsldk75akw6m5dxg932j602bxrb4w"; + aarch64-linux = "34k6cm69gxm7vcd9m6bp47sdx96j32z6lfhb2vjcdznc6xgs2wy8zcang3b1mjm5919dq7v6iysm6ffcpgjhhphy7prlnaqa69q5mks"; + }; }; } diff --git a/nixpkgs/pkgs/development/compilers/edk2/default.nix b/nixpkgs/pkgs/development/compilers/edk2/default.nix index 703ff4fa083b..8a18b6306c27 100644 --- a/nixpkgs/pkgs/development/compilers/edk2/default.nix +++ b/nixpkgs/pkgs/development/compilers/edk2/default.nix @@ -1,4 +1,17 @@ -{ stdenv, fetchgit, fetchpatch, libuuid, python3, iasl, bc }: +{ + stdenv, + clangStdenv, + fetchgit, + fetchpatch, + libuuid, + python3, + iasl, + bc, + clang_9, + llvmPackages_9, + overrideCC, + lib, +}: let pythonEnv = python3.withPackages (ps: [ps.tkinter]); @@ -12,7 +25,17 @@ else if stdenv.isAarch64 then else throw "Unsupported architecture"; -edk2 = stdenv.mkDerivation { +buildStdenv = if stdenv.isDarwin then + overrideCC clangStdenv [ clang_9 llvmPackages_9.llvm llvmPackages_9.lld ] +else + stdenv; + +buildType = if stdenv.isDarwin then + "CLANGPDB" + else + "GCC5"; + +edk2 = buildStdenv.mkDerivation { pname = "edk2"; version = "201911"; @@ -25,8 +48,10 @@ edk2 = stdenv.mkDerivation { buildInputs = [ libuuid pythonEnv ]; - makeFlags = [ "-C BaseTools" ]; - NIX_CFLAGS_COMPILE = "-Wno-return-type -Wno-error=stringop-truncation"; + makeFlags = [ "-C BaseTools" ] + ++ lib.optional (stdenv.cc.isClang) [ "BUILD_CC=clang BUILD_CXX=clang++ BUILD_AS=clang" ]; + + NIX_CFLAGS_COMPILE = "-Wno-return-type" + lib.optionalString (stdenv.cc.isGNU) " -Wno-error=stringop-truncation"; hardeningDisable = [ "format" "fortify" ]; @@ -38,15 +63,15 @@ edk2 = stdenv.mkDerivation { enableParallelBuilding = true; - meta = with stdenv.lib; { + meta = with lib; { description = "Intel EFI development kit"; homepage = "https://sourceforge.net/projects/edk2/"; license = licenses.bsd2; - platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" ]; + platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" ]; }; passthru = { - mkDerivation = projectDscPath: attrs: stdenv.mkDerivation ({ + mkDerivation = projectDscPath: attrs: buildStdenv.mkDerivation ({ inherit (edk2) src; buildInputs = [ bc pythonEnv ] ++ attrs.buildInputs or []; @@ -65,7 +90,7 @@ edk2 = stdenv.mkDerivation { buildPhase = '' runHook preBuild - build -a ${targetArch} -b RELEASE -t GCC5 -p ${projectDscPath} -n $NIX_BUILD_CORES $buildFlags + build -a ${targetArch} -b RELEASE -t ${buildType} -p ${projectDscPath} -n $NIX_BUILD_CORES $buildFlags runHook postBuild ''; diff --git a/nixpkgs/pkgs/development/compilers/elm/default.nix b/nixpkgs/pkgs/development/compilers/elm/default.nix index a1b3d736b995..625d7adab411 100644 --- a/nixpkgs/pkgs/development/compilers/elm/default.nix +++ b/nixpkgs/pkgs/development/compilers/elm/default.nix @@ -4,7 +4,7 @@ let fetchElmDeps = import ./fetchElmDeps.nix { inherit stdenv lib fetchurl; }; - hsPkgs = haskell.packages.ghc881.override { + hsPkgs = haskell.packages.ghc883.override { overrides = self: super: with haskell.lib; let elmPkgs = rec { elm = overrideCabal (self.callPackage ./packages/elm.nix { }) (drv: { @@ -28,7 +28,7 @@ let `package/nix/build.sh` */ elm-format = justStaticExecutables (overrideCabal (self.callPackage ./packages/elm-format.nix {}) (drv: { - # GHC 8.8.1 support + # GHC 8.8.3 support # https://github.com/avh4/elm-format/pull/640 patches = [( fetchpatch { diff --git a/nixpkgs/pkgs/development/compilers/elm/makeDotElm.nix b/nixpkgs/pkgs/development/compilers/elm/makeDotElm.nix index 0831d382c4b2..b8076d72e481 100644 --- a/nixpkgs/pkgs/development/compilers/elm/makeDotElm.nix +++ b/nixpkgs/pkgs/development/compilers/elm/makeDotElm.nix @@ -11,6 +11,14 @@ ver: deps: inherit (info) sha256; }; + configurePhase = '' + true + ''; + + buildPhase = '' + true + ''; + installPhase = '' mkdir -p $out cp -r * $out diff --git a/nixpkgs/pkgs/development/compilers/elm/packages/elm-instrument.nix b/nixpkgs/pkgs/development/compilers/elm/packages/elm-instrument.nix index 54077994fbdd..4d7efcf1083b 100644 --- a/nixpkgs/pkgs/development/compilers/elm/packages/elm-instrument.nix +++ b/nixpkgs/pkgs/development/compilers/elm/packages/elm-instrument.nix @@ -28,7 +28,7 @@ mkDerivation { quickcheck-io split tasty tasty-golden tasty-hunit tasty-quickcheck text ]; - homepage = "http://elm-lang.org"; + homepage = "https://elm-lang.org"; description = "Instrumentation library for Elm"; license = stdenv.lib.licenses.bsd3; } diff --git a/nixpkgs/pkgs/development/compilers/fasm/bin.nix b/nixpkgs/pkgs/development/compilers/fasm/bin.nix index 8b5230d2e726..c595c86615b8 100644 --- a/nixpkgs/pkgs/development/compilers/fasm/bin.nix +++ b/nixpkgs/pkgs/development/compilers/fasm/bin.nix @@ -3,11 +3,11 @@ stdenvNoCC.mkDerivation rec { pname = "fasm-bin"; - version = "1.73.23"; + version = "1.73.24"; src = fetchurl { url = "https://flatassembler.net/fasm-${version}.tgz"; - sha256 = "1p7hs4sqnfxw6axdifjbdcllvl1ycx5vf6n7nvq1gampz0yfcl6j"; + sha256 = "142vxhs8mh8isvlzq7ir0asmqda410phzxmk9gk9b43dldskkj7k"; }; installPhase = '' diff --git a/nixpkgs/pkgs/development/compilers/fpc/lazarus.nix b/nixpkgs/pkgs/development/compilers/fpc/lazarus.nix index 923d8d342513..5947b572cec0 100644 --- a/nixpkgs/pkgs/development/compilers/fpc/lazarus.nix +++ b/nixpkgs/pkgs/development/compilers/fpc/lazarus.nix @@ -4,11 +4,11 @@ }: stdenv.mkDerivation rec { pname = "lazarus"; - version = "2.0.6"; + version = "2.0.8"; src = fetchurl { url = "mirror://sourceforge/lazarus/Lazarus%20Zip%20_%20GZip/Lazarus%20${version}/lazarus-${version}.tar.gz"; - sha256 = "0v1ax6039nm2bksh646znrkah20ak2zmhaz5p3mz2p60y2qazkc2"; + sha256 = "1iciqydb0miqdrh89aj59gy7kfcwikkycqssq9djcqsw1ql3gc4h"; }; buildInputs = [ diff --git a/nixpkgs/pkgs/development/compilers/fstar/default.nix b/nixpkgs/pkgs/development/compilers/fstar/default.nix index b8864584ee6a..548abeff78d0 100644 --- a/nixpkgs/pkgs/development/compilers/fstar/default.nix +++ b/nixpkgs/pkgs/development/compilers/fstar/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, z3, ocamlPackages, makeWrapper }: +{ stdenv, fetchFromGitHub, z3, ocamlPackages, makeWrapper, installShellFiles }: stdenv.mkDerivation rec { pname = "fstar"; @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { sha256 = "0wix7l229afkn6c6sk4nwkfq0nznsiqdkds4ixi2yyf72immwmmb"; }; - nativeBuildInputs = [ makeWrapper ]; + nativeBuildInputs = [ makeWrapper installShellFiles ]; buildInputs = with ocamlPackages; [ z3 ocaml findlib batteries menhir stdint @@ -33,6 +33,9 @@ stdenv.mkDerivation rec { installFlags = [ "-C" "src/ocaml-output" ]; postInstall = '' wrapProgram $out/bin/fstar.exe --prefix PATH ":" "${z3}/bin" + installShellCompletion --bash .completion/bash/fstar.exe.bash + installShellCompletion --fish .completion/fish/fstar.exe.fish + installShellCompletion --zsh --name _fstar.exe .completion/zsh/__fstar.exe ''; meta = with stdenv.lib; { diff --git a/nixpkgs/pkgs/development/compilers/gcc/10/default.nix b/nixpkgs/pkgs/development/compilers/gcc/10/default.nix new file mode 100644 index 000000000000..5e0a25ea60bd --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/gcc/10/default.nix @@ -0,0 +1,285 @@ +{ stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs +, langC ? true, langCC ? true, langFortran ? false +, langAda ? false +, langObjC ? stdenv.targetPlatform.isDarwin +, langObjCpp ? stdenv.targetPlatform.isDarwin +, langGo ? false +, profiledCompiler ? false +, staticCompiler ? false +, enableShared ? true +, enableLTO ? true +, texinfo ? null +, perl ? null # optional, for texi2pod (then pod2man) +, gmp, mpfr, libmpc, gettext, which +, libelf # optional, for link-time optimizations (LTO) +, isl ? null # optional, for the Graphite optimization framework. +, zlib ? null +, gnatboot ? null +, enableMultilib ? false +, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins +, name ? "gcc" +, libcCross ? null +, threadsCross ? null # for MinGW +, crossStageStatic ? false +, # Strip kills static libs of other archs (hence no cross) + stripped ? stdenv.hostPlatform == stdenv.buildPlatform + && stdenv.targetPlatform == stdenv.hostPlatform +, gnused ? null +, cloog # unused; just for compat with gcc4, as we override the parameter on some places +, buildPackages +}: + +# LTO needs libelf and zlib. +assert libelf != null -> zlib != null; + +# Make sure we get GNU sed. +assert stdenv.hostPlatform.isDarwin -> gnused != null; + +# The go frontend is written in c++ +assert langGo -> langCC; +assert langAda -> gnatboot != null; + +# threadsCross is just for MinGW +assert threadsCross != null -> stdenv.targetPlatform.isWindows; + +with stdenv.lib; +with builtins; + +let majorVersion = "10"; + version = "${majorVersion}.1.0"; + + inherit (stdenv) buildPlatform hostPlatform targetPlatform; + + patches = + optional (targetPlatform != hostPlatform) ../libstdc++-target.patch + ++ optional noSysDirs ../no-sys-dirs.patch + /* ++ optional (hostPlatform != buildPlatform) (fetchpatch { # XXX: Refine when this should be applied + url = "https://git.busybox.net/buildroot/plain/package/gcc/${version}/0900-remove-selftests.patch?id=11271540bfe6adafbc133caf6b5b902a816f5f02"; + sha256 = ""; # TODO: uncomment and check hash when available. + }) */ + ++ optional langAda ../gnat-cflags.patch + ++ optional langFortran ../gfortran-driving.patch + ++ optional (targetPlatform.libc == "musl" && targetPlatform.isPower) ../ppc-musl.patch + ++ optional (!crossStageStatic && targetPlatform.isMinGW) (fetchpatch { + url = "https://raw.githubusercontent.com/lhmouse/MINGW-packages/${import ../common/mfcgthreads-patches-repo.nix}/mingw-w64-gcc-git/9000-gcc-${majorVersion}-branch-Added-mcf-thread-model-support-from-mcfgthread.patch"; + sha256 = "1in5kvcknlpi9z1vvjw6jfmwy8k12zvbqlqfnq84qpm99r0rh00a"; + }); + + /* Cross-gcc settings (build == host != target) */ + crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt"; + stageNameAddon = if crossStageStatic then "stage-static" else "stage-final"; + crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-"; + +in + +stdenv.mkDerivation ({ + pname = "${crossNameAddon}${name}${if stripped then "" else "-debug"}"; + inherit version; + + builder = ../builder.sh; + + src = fetchurl { + url = "mirror://gcc/releases/gcc-${version}/gcc-${version}.tar.xz"; + sha256 = "b6898a23844b656f1b68691c5c012036c2e694ac4b53a8918d4712ad876e7ea2"; + }; + + inherit patches; + + outputs = [ "out" "lib" "man" "info" ]; + setOutputFlags = false; + NIX_NO_SELF_RPATH = true; + + libc_dev = stdenv.cc.libc_dev; + + hardeningDisable = [ "format" "pie" ]; + + # This should kill all the stdinc frameworks that gcc and friends like to + # insert into default search paths. + prePatch = stdenv.lib.optionalString hostPlatform.isDarwin '' + substituteInPlace gcc/config/darwin-c.c \ + --replace 'if (stdinc)' 'if (0)' + + substituteInPlace libgcc/config/t-slibgcc-darwin \ + --replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name $lib/lib/\$(SHLIB_INSTALL_NAME)" + + substituteInPlace libgfortran/configure \ + --replace "-install_name \\\$rpath/\\\$soname" "-install_name $lib/lib/\\\$soname" + ''; + + postPatch = '' + configureScripts=$(find . -name configure) + for configureScript in $configureScripts; do + patchShebangs $configureScript + done + '' + ( + if targetPlatform != hostPlatform || stdenv.cc.libc != null then + # On NixOS, use the right path to the dynamic linker instead of + # `/lib/ld*.so'. + let + libc = if libcCross != null then libcCross else stdenv.cc.libc; + in + ( + '' echo "fixing the \`GLIBC_DYNAMIC_LINKER', \`UCLIBC_DYNAMIC_LINKER', and \`MUSL_DYNAMIC_LINKER' macros..." + for header in "gcc/config/"*-gnu.h "gcc/config/"*"/"*.h + do + grep -q _DYNAMIC_LINKER "$header" || continue + echo " fixing \`$header'..." + sed -i "$header" \ + -e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc.out}\3"|g' \ + -e 's|define[[:blank:]]*MUSL_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define MUSL_DYNAMIC_LINKER\1 "${libc.out}\2"|g' + done + '' + + stdenv.lib.optionalString (targetPlatform.libc == "musl") + '' + sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR' + '' + ) + else "") + + stdenv.lib.optionalString targetPlatform.isAvr '' + makeFlagsArray+=( + 'LIMITS_H_TEST=false' + ) + ''; + + inherit noSysDirs staticCompiler crossStageStatic + libcCross crossMingw; + + depsBuildBuild = [ buildPackages.stdenv.cc ]; + nativeBuildInputs = [ texinfo which gettext ] + ++ (optional (perl != null) perl); + + # 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) + # The builder relies on GNU sed (for instance, Darwin's `sed' fails with + # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it. + ++ (optional hostPlatform.isDarwin gnused) + ++ (optional langAda gnatboot) + ; + + depsTargetTarget = optional (!crossStageStatic && threadsCross != null) threadsCross; + + NIX_LDFLAGS = stdenv.lib.optionalString hostPlatform.isSunOS "-lm -ldl"; + + preConfigure = import ../common/pre-configure.nix { + inherit (stdenv) lib; + inherit version hostPlatform gnatboot langAda langGo; + }; + + dontDisableStatic = true; + + # TODO(@Ericson2314): Always pass "--target" and always prefix. + configurePlatforms = [ "build" "host" ] ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; + + configureFlags = import ../common/configure-flags.nix { + inherit + stdenv + targetPackages + crossStageStatic libcCross + version + + gmp mpfr libmpc libelf isl + + enableLTO + enableMultilib + enablePlugin + enableShared + + langC + langCC + langFortran + langAda + langGo + langObjC + langObjCpp + ; + }; + + targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null; + + buildFlags = optional + (targetPlatform == hostPlatform && hostPlatform == buildPlatform) + (if profiledCompiler then "profiledbootstrap" else "bootstrap"); + + dontStrip = !stripped; + + installTargets = optional stripped "install-strip"; + + # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210 + ${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. + # + # Likewise, the LTO code doesn't find zlib. + # + # Cross-compiling, we need gcc not to read ./specs in order to build the g++ + # compiler (after the specs for the cross-gcc are created). Having + # LIBRARY_PATH= makes gcc read the specs from ., and the build breaks. + + CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([] + ++ optional (zlib != null) zlib + )); + + LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath (optional (zlib != null) zlib)); + + inherit + (import ../common/extra-target-flags.nix { + inherit stdenv crossStageStatic libcCross threadsCross; + }) + EXTRA_TARGET_FLAGS + EXTRA_TARGET_LDFLAGS + ; + + passthru = { + inherit langC langCC langObjC langObjCpp langAda langFortran langGo version; + isGNU = true; + }; + + enableParallelBuilding = true; + inherit enableMultilib; + + inherit (stdenv) is64bit; + + meta = { + homepage = "https://gcc.gnu.org/"; + license = stdenv.lib.licenses.gpl3Plus; # runtime support libraries are typically LGPLv3+ + description = "GNU Compiler Collection, version ${version}" + + (if stripped then "" else " (with debugging info)"); + + longDescription = '' + The GNU Compiler Collection includes compiler front ends for C, C++, + Objective-C, Fortran, OpenMP for C/C++/Fortran, and Ada, as well as + libraries for these languages (libstdc++, libgomp,...). + + GCC development is a part of the GNU Project, aiming to improve the + compiler used in the GNU system including the GNU/Linux variant. + ''; + + maintainers = with stdenv.lib.maintainers; [ synthetica ]; + + platforms = + stdenv.lib.platforms.linux ++ + stdenv.lib.platforms.freebsd ++ + stdenv.lib.platforms.illumos ++ + stdenv.lib.platforms.darwin; + }; +} + +// optionalAttrs (targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt" && crossStageStatic) { + makeFlags = [ "all-gcc" "all-target-libgcc" ]; + installTargets = "install-gcc install-target-libgcc"; +} + +// optionalAttrs (enableMultilib) { dontMoveLib64 = true; } +) diff --git a/nixpkgs/pkgs/development/compilers/gcc/6/default.nix b/nixpkgs/pkgs/development/compilers/gcc/6/default.nix index 1adffa8174e5..c04e424b2faa 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/6/default.nix +++ b/nixpkgs/pkgs/development/compilers/gcc/6/default.nix @@ -1,5 +1,6 @@ { stdenv, targetPackages, fetchurl, fetchpatch, fetchFromGitHub, noSysDirs , langC ? true, langCC ? true, langFortran ? false +, langAda ? false , langObjC ? stdenv.targetPlatform.isDarwin , langObjCpp ? stdenv.targetPlatform.isDarwin , langJava ? false @@ -15,6 +16,7 @@ , libelf # optional, for link-time optimizations (LTO) , isl ? null # optional, for the Graphite optimization framework. , zlib ? null, boehmgc ? null +, gnatboot ? null , zip ? null, unzip ? null, pkgconfig ? null , gtk2 ? null, libart_lgpl ? null , libX11 ? null, libXt ? null, libSM ? null, libICE ? null, libXtst ? null @@ -48,6 +50,8 @@ assert stdenv.hostPlatform.isDarwin -> gnused != null; # The go frontend is written in c++ assert langGo -> langCC; +assert langAda -> gnatboot != null; + # threadsCross is just for MinGW assert threadsCross != null -> stdenv.targetPlatform.isWindows; @@ -63,6 +67,7 @@ let majorVersion = "6"; [ ../use-source-date-epoch.patch ] ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch ++ optional noSysDirs ../no-sys-dirs.patch + ++ optional langAda ../gnat-cflags.patch ++ optional langFortran ../gfortran-driving.patch ++ optional (targetPlatform.libc == "musl") ../libgomp-dont-force-initial-exec.patch ++ optional (!crossStageStatic && targetPlatform.isMinGW) (fetchpatch { @@ -200,6 +205,7 @@ stdenv.mkDerivation ({ # The builder relies on GNU sed (for instance, Darwin's `sed' fails with # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it. ++ (optional hostPlatform.isDarwin gnused) + ++ (optional langAda gnatboot) ; depsTargetTarget = optional (!crossStageStatic && threadsCross != null) threadsCross; @@ -208,7 +214,7 @@ stdenv.mkDerivation ({ preConfigure = import ../common/pre-configure.nix { inherit (stdenv) lib; - inherit version hostPlatform langJava langGo; + inherit version hostPlatform gnatboot langJava langAda langGo; }; dontDisableStatic = true; @@ -234,6 +240,7 @@ stdenv.mkDerivation ({ langCC langFortran langJava javaAwtGtk javaAntlr javaEcj + langAda langGo langObjC langObjCpp @@ -292,7 +299,7 @@ stdenv.mkDerivation ({ ; passthru = { - inherit langC langCC langObjC langObjCpp langFortran langGo version; + inherit langC langCC langObjC langObjCpp langFortran langAda langGo version; isGNU = true; }; diff --git a/nixpkgs/pkgs/development/compilers/gcc/9/default.nix b/nixpkgs/pkgs/development/compilers/gcc/9/default.nix index a6ba8c9c0f64..5785782a6718 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/9/default.nix +++ b/nixpkgs/pkgs/development/compilers/gcc/9/default.nix @@ -1,5 +1,6 @@ { stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs , langC ? true, langCC ? true, langFortran ? false +, langAda ? false , langObjC ? stdenv.targetPlatform.isDarwin , langObjCpp ? stdenv.targetPlatform.isDarwin , langGo ? false @@ -13,6 +14,7 @@ , libelf # optional, for link-time optimizations (LTO) , isl ? null # optional, for the Graphite optimization framework. , zlib ? null +, gnatboot ? null , enableMultilib ? false , enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins , name ? "gcc" @@ -35,6 +37,7 @@ assert stdenv.hostPlatform.isDarwin -> gnused != null; # The go frontend is written in c++ assert langGo -> langCC; +assert langAda -> gnatboot != null; # threadsCross is just for MinGW assert threadsCross != null -> stdenv.targetPlatform.isWindows; @@ -54,6 +57,7 @@ let majorVersion = "9"; url = "https://git.busybox.net/buildroot/plain/package/gcc/${version}/0900-remove-selftests.patch?id=11271540bfe6adafbc133caf6b5b902a816f5f02"; sha256 = ""; # TODO: uncomment and check hash when available. }) */ + ++ optional langAda ../gnat-cflags.patch ++ optional langFortran ../gfortran-driving.patch ++ optional (targetPlatform.libc == "musl" && targetPlatform.isPower) ../ppc-musl.patch ++ optional (!crossStageStatic && targetPlatform.isMinGW) (fetchpatch { @@ -160,6 +164,7 @@ stdenv.mkDerivation ({ # The builder relies on GNU sed (for instance, Darwin's `sed' fails with # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it. ++ (optional hostPlatform.isDarwin gnused) + ++ (optional langAda gnatboot) ; depsTargetTarget = optional (!crossStageStatic && threadsCross != null) threadsCross; @@ -168,7 +173,7 @@ stdenv.mkDerivation ({ preConfigure = import ../common/pre-configure.nix { inherit (stdenv) lib; - inherit version hostPlatform langGo; + inherit version hostPlatform gnatboot langAda langGo; }; dontDisableStatic = true; @@ -193,6 +198,7 @@ stdenv.mkDerivation ({ langC langCC langFortran + langAda langGo langObjC langObjCpp @@ -236,7 +242,7 @@ stdenv.mkDerivation ({ ; passthru = { - inherit langC langCC langObjC langObjCpp langFortran langGo version; + inherit langC langCC langObjC langObjCpp langAda langFortran langGo version; isGNU = true; }; diff --git a/nixpkgs/pkgs/development/compilers/gcc/builder.sh b/nixpkgs/pkgs/development/compilers/gcc/builder.sh index 22a21e5b25c6..8d03e0104646 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/builder.sh +++ b/nixpkgs/pkgs/development/compilers/gcc/builder.sh @@ -216,6 +216,7 @@ postInstall() { moveToOutput "${targetConfig+$targetConfig/}lib/lib*.so*" "$lib" moveToOutput "${targetConfig+$targetConfig/}lib/lib*.la" "$lib" moveToOutput "${targetConfig+$targetConfig/}lib/lib*.dylib" "$lib" + moveToOutput "${targetConfig+$targetConfig/}lib/lib*.dll.a" "$lib" moveToOutput "share/gcc-*/python" "$lib" for i in "$lib/${targetConfig}"/lib/*.{la,py}; do diff --git a/nixpkgs/pkgs/development/compilers/gcc/common/configure-flags.nix b/nixpkgs/pkgs/development/compilers/gcc/common/configure-flags.nix index aa0fcb506289..c78a28148951 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/common/configure-flags.nix +++ b/nixpkgs/pkgs/development/compilers/gcc/common/configure-flags.nix @@ -16,6 +16,7 @@ , langCC , langFortran , langJava ? false, javaAwtGtk ? false, javaAntlr ? null, javaEcj ? null +, langAda ? false , langGo , langObjC , langObjCpp @@ -115,6 +116,7 @@ let ++ lib.optional langCC "c++" ++ lib.optional langFortran "fortran" ++ lib.optional langJava "java" + ++ lib.optional langAda "ada" ++ lib.optional langGo "go" ++ lib.optional langObjC "objc" ++ lib.optional langObjCpp "obj-c++" @@ -140,6 +142,9 @@ let "--enable-cloog-backend=isl" ] + # Ada options + ++ lib.optional langAda "--enable-libada" + # Java options ++ lib.optionals langJava [ "--with-ecj-jar=${javaEcj}" diff --git a/nixpkgs/pkgs/development/compilers/gcc/common/pre-configure.nix b/nixpkgs/pkgs/development/compilers/gcc/common/pre-configure.nix index 4c86d37e2434..85b854e19b9a 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/common/pre-configure.nix +++ b/nixpkgs/pkgs/development/compilers/gcc/common/pre-configure.nix @@ -1,6 +1,11 @@ -{ lib, version, hostPlatform, langJava ? false, langGo }: +{ lib, version, hostPlatform +, gnatboot ? null +, langAda ? false +, langJava ? false +, langGo }: assert langJava -> lib.versionOlder version "7"; +assert langAda -> gnatboot != null; lib.optionalString (hostPlatform.isSunOS && hostPlatform.is64bit) '' export NIX_LDFLAGS=`echo $NIX_LDFLAGS | sed -e s~$prefix/lib~$prefix/lib/amd64~g` @@ -9,4 +14,6 @@ lib.optionalString (hostPlatform.isSunOS && hostPlatform.is64bit) '' export CFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CFLAGS_FOR_TARGET" '' + lib.optionalString (lib.versionOlder version "7" && (langJava || langGo)) '' export lib=$out; +'' + lib.optionalString langAda '' + export PATH=${gnatboot}/bin:$PATH '' diff --git a/nixpkgs/pkgs/development/compilers/gcc/gnat-cflags.patch b/nixpkgs/pkgs/development/compilers/gcc/gnat-cflags.patch new file mode 100644 index 000000000000..a16266bbf39c --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/gcc/gnat-cflags.patch @@ -0,0 +1,35 @@ +diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in +index 4e74252bd74..0d848b5b4e3 100644 +--- a/gcc/ada/gcc-interface/Makefile.in ++++ b/gcc/ada/gcc-interface/Makefile.in +@@ -111,7 +111,7 @@ NO_OMIT_ADAFLAGS = -fno-omit-frame-pointer + NO_SIBLING_ADAFLAGS = -fno-optimize-sibling-calls + NO_REORDER_ADAFLAGS = -fno-toplevel-reorder + GNATLIBFLAGS = -W -Wall -gnatpg -nostdinc +-GNATLIBCFLAGS = -g -O2 ++GNATLIBCFLAGS = -g -O2 $(CFLAGS_FOR_TARGET) + # Pretend that _Unwind_GetIPInfo is available for the target by default. This + # should be autodetected during the configuration of libada and passed down to + # here, but we need something for --disable-libada and hope for the best. +@@ -198,7 +198,7 @@ RTSDIR = rts$(subst /,_,$(MULTISUBDIR)) + # Link flags used to build gnat tools. By default we prefer to statically + # link with libgcc to avoid a dependency on shared libgcc (which is tricky + # to deal with as it may conflict with the libgcc provided by the system). +-GCC_LINK_FLAGS=-static-libstdc++ -static-libgcc ++GCC_LINK_FLAGS=-static-libstdc++ -static-libgcc $(CFLAGS_FOR_TARGET) + + # End of variables for you to override. + +diff --git a/libada/Makefile.in b/libada/Makefile.in +index 522b9207326..ca866c74471 100644 +--- a/libada/Makefile.in ++++ b/libada/Makefile.in +@@ -59,7 +59,7 @@ LDFLAGS= + CFLAGS=-g + PICFLAG = @PICFLAG@ + GNATLIBFLAGS= -W -Wall -gnatpg -nostdinc +-GNATLIBCFLAGS= -g -O2 ++GNATLIBCFLAGS= -g -O2 $(CFLAGS) + GNATLIBCFLAGS_FOR_C = -W -Wall $(GNATLIBCFLAGS) $(CFLAGS_FOR_TARGET) \ + -fexceptions -DIN_RTS @have_getipinfo@ @have_capability@ + diff --git a/nixpkgs/pkgs/development/compilers/gforth/default.nix b/nixpkgs/pkgs/development/compilers/gforth/default.nix index c90666d3dbe3..d2a2a7a85e3c 100644 --- a/nixpkgs/pkgs/development/compilers/gforth/default.nix +++ b/nixpkgs/pkgs/development/compilers/gforth/default.nix @@ -25,6 +25,5 @@ stdenv.mkDerivation { homepage = "https://www.gnu.org/software/gforth/"; license = stdenv.lib.licenses.gpl3; platforms = stdenv.lib.platforms.all; - maintainers = with stdenv.lib.maintainers; [ the-kenny ]; }; } diff --git a/nixpkgs/pkgs/development/compilers/ghc/8.10.1.nix b/nixpkgs/pkgs/development/compilers/ghc/8.10.1.nix index 01e10b04d270..c70efe1fdef3 100644 --- a/nixpkgs/pkgs/development/compilers/ghc/8.10.1.nix +++ b/nixpkgs/pkgs/development/compilers/ghc/8.10.1.nix @@ -27,7 +27,7 @@ # platform). Static libs are always built. enableShared ? !stdenv.targetPlatform.isWindows && !stdenv.targetPlatform.useiOSPrebuilt -, # Whetherto build terminfo. +, # Whether to build terminfo. enableTerminfo ? !stdenv.targetPlatform.isWindows , # What flavour to build. An empty string indicates no @@ -73,7 +73,7 @@ let ''; # Splicer will pull out correct variations - libDeps = platform: stdenv.lib.optional enableTerminfo [ ncurses ] + libDeps = platform: stdenv.lib.optional enableTerminfo ncurses ++ [libffi] ++ stdenv.lib.optional (!enableIntegerSimple) gmp ++ stdenv.lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv; @@ -160,10 +160,10 @@ stdenv.mkDerivation (rec { "--with-system-libffi" "--with-ffi-includes=${targetPackages.libffi.dev}/include" "--with-ffi-libraries=${targetPackages.libffi.out}/lib" - ] ++ stdenv.lib.optional (targetPlatform == hostPlatform && !enableIntegerSimple) [ + ] ++ stdenv.lib.optionals (targetPlatform == hostPlatform && !enableIntegerSimple) [ "--with-gmp-includes=${targetPackages.gmp.dev}/include" "--with-gmp-libraries=${targetPackages.gmp.out}/lib" - ] ++ stdenv.lib.optional (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [ + ] ++ stdenv.lib.optionals (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [ "--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib" ] ++ stdenv.lib.optionals (targetPlatform != hostPlatform) [ @@ -176,7 +176,7 @@ stdenv.mkDerivation (rec { "--disable-large-address-space" ]; - # Make sure we never relax`$PATH` and hooks support for compatability. + # Make sure we never relax`$PATH` and hooks support for compatibility. strictDeps = true; # Don’t add -liconv to LDFLAGS automatically so that GHC will add it itself. diff --git a/nixpkgs/pkgs/development/compilers/ghc/8.4.4.nix b/nixpkgs/pkgs/development/compilers/ghc/8.4.4.nix index e63f82078309..a4174c47046e 100644 --- a/nixpkgs/pkgs/development/compilers/ghc/8.4.4.nix +++ b/nixpkgs/pkgs/development/compilers/ghc/8.4.4.nix @@ -24,7 +24,7 @@ # platform). Static libs are always built. enableShared ? !stdenv.targetPlatform.isWindows && !stdenv.targetPlatform.useiOSPrebuilt -, # Whetherto build terminfo. +, # Whether to build terminfo. enableTerminfo ? !stdenv.targetPlatform.isWindows , # What flavour to build. An empty string indicates no @@ -186,7 +186,7 @@ stdenv.mkDerivation (rec { "--disable-large-address-space" ]; - # Make sure we never relax`$PATH` and hooks support for compatability. + # Make sure we never relax`$PATH` and hooks support for compatibility. strictDeps = true; # Don’t add -liconv to LDFLAGS automatically so that GHC will add it itself. diff --git a/nixpkgs/pkgs/development/compilers/ghc/8.6.5.nix b/nixpkgs/pkgs/development/compilers/ghc/8.6.5.nix index e746c6bfcbae..06266556cf33 100644 --- a/nixpkgs/pkgs/development/compilers/ghc/8.6.5.nix +++ b/nixpkgs/pkgs/development/compilers/ghc/8.6.5.nix @@ -27,7 +27,7 @@ # platform). Static libs are always built. enableShared ? !stdenv.targetPlatform.isWindows && !stdenv.targetPlatform.useiOSPrebuilt -, # Whetherto build terminfo. +, # Whether to build terminfo. enableTerminfo ? !stdenv.targetPlatform.isWindows , # What flavour to build. An empty string indicates no @@ -185,7 +185,7 @@ stdenv.mkDerivation (rec { "--disable-large-address-space" ]; - # Make sure we never relax`$PATH` and hooks support for compatability. + # Make sure we never relax`$PATH` and hooks support for compatibility. strictDeps = true; # Don’t add -liconv to LDFLAGS automatically so that GHC will add it itself. diff --git a/nixpkgs/pkgs/development/compilers/ghc/8.8.1.nix b/nixpkgs/pkgs/development/compilers/ghc/8.8.1.nix deleted file mode 100644 index 9ebce6bdd48d..000000000000 --- a/nixpkgs/pkgs/development/compilers/ghc/8.8.1.nix +++ /dev/null @@ -1,236 +0,0 @@ -{ stdenv, pkgsBuildTarget, targetPackages - -# build-tools -, bootPkgs -, autoconf, automake, coreutils, fetchurl, perl, python3, m4, sphinx -, bash - -, libiconv ? null, ncurses - -, # GHC can be built with system libffi or a bundled one. - libffi ? null - -, useLLVM ? !stdenv.targetPlatform.isx86 || stdenv.targetPlatform.isiOS -, # LLVM is conceptually a run-time-only depedendency, but for - # non-x86, we need LLVM to bootstrap later stages, so it becomes a - # build-time dependency too. - buildLlvmPackages, llvmPackages - -, # 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 ? !(stdenv.lib.any (stdenv.lib.meta.platformMatch stdenv.hostPlatform) gmp.meta.platforms), gmp - -, # If enabled, use -fPIC when compiling static libs. - enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform - -, # Whether to build dynamic libs for the standard library (on the target - # platform). Static libs are always built. - enableShared ? !stdenv.targetPlatform.isWindows && !stdenv.targetPlatform.useiOSPrebuilt - -, # Whetherto build terminfo. - enableTerminfo ? !stdenv.targetPlatform.isWindows - -, # What flavour to build. An empty string indicates no - # specific flavour and falls back to ghc default values. - ghcFlavour ? stdenv.lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform) - (if useLLVM then "perf-cross" else "perf-cross-ncg") - -, # Whether to disable the large address space allocator - # necessary fix for iOS: https://www.reddit.com/r/haskell/comments/4ttdz1/building_an_osxi386_to_iosarm64_cross_compiler/d5qvd67/ - disableLargeAddressSpace ? stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64 -}: - -assert !enableIntegerSimple -> gmp != null; - -let - inherit (stdenv) buildPlatform hostPlatform targetPlatform; - - inherit (bootPkgs) ghc; - - # TODO(@Ericson2314) Make unconditional - targetPrefix = stdenv.lib.optionalString - (targetPlatform != hostPlatform) - "${targetPlatform.config}-"; - - buildMK = '' - BuildFlavour = ${ghcFlavour} - ifneq \"\$(BuildFlavour)\" \"\" - include mk/flavours/\$(BuildFlavour).mk - endif - DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"} - INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"} - '' + stdenv.lib.optionalString (targetPlatform != hostPlatform) '' - Stage1Only = ${if targetPlatform.system == hostPlatform.system then "NO" else "YES"} - CrossCompilePrefix = ${targetPrefix} - HADDOCK_DOCS = NO - BUILD_SPHINX_HTML = NO - BUILD_SPHINX_PDF = NO - '' + stdenv.lib.optionalString enableRelocatedStaticLibs '' - GhcLibHcOpts += -fPIC - GhcRtsHcOpts += -fPIC - '' + stdenv.lib.optionalString targetPlatform.useAndroidPrebuilt '' - EXTRA_CC_OPTS += -std=gnu99 - ''; - - # Splicer will pull out correct variations - libDeps = platform: stdenv.lib.optional enableTerminfo ncurses - ++ [libffi] - ++ stdenv.lib.optional (!enableIntegerSimple) gmp - ++ stdenv.lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv; - - toolsForTarget = [ - pkgsBuildTarget.targetPackages.stdenv.cc - ] ++ stdenv.lib.optional useLLVM buildLlvmPackages.llvm; - - targetCC = builtins.head toolsForTarget; - - # ld.gold is disabled for musl libc due to https://sourceware.org/bugzilla/show_bug.cgi?id=23856 - # see #84670 and #49071 for more background. - useLdGold = targetPlatform.isLinux && !(targetPlatform.useLLVM or false) && !targetPlatform.isMusl; - -in -stdenv.mkDerivation (rec { - version = "8.8.1"; - name = "${targetPrefix}ghc-${version}"; - - src = fetchurl { - url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz"; - sha256 = "06kj4fhvijinjafiy4s873n60qly323rdlz9bmc79nhlp3cq72lh"; - }; - - enableParallelBuilding = true; - - outputs = [ "out" "doc" ]; - - postPatch = "patchShebangs ."; - - # GHC is a bit confused on its cross terminology. - preConfigure = '' - for env in $(env | grep '^TARGET_' | sed -E 's|\+?=.*||'); do - export "''${env#TARGET_}=''${!env}" - done - # GHC is a bit confused on its cross terminology, as these would normally be - # the *host* tools. - export CC="${targetCC}/bin/${targetCC.targetPrefix}cc" - export CXX="${targetCC}/bin/${targetCC.targetPrefix}cxx" - # Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177 - export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${stdenv.lib.optionalString useLdGold ".gold"}" - export AS="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}as" - export AR="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ar" - export NM="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}nm" - export RANLIB="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}ranlib" - export READELF="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}readelf" - export STRIP="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}strip" - - echo -n "${buildMK}" > mk/build.mk - sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure - '' + stdenv.lib.optionalString (!stdenv.isDarwin) '' - export NIX_LDFLAGS+=" -rpath $out/lib/ghc-${version}" - '' + stdenv.lib.optionalString stdenv.isDarwin '' - export NIX_LDFLAGS+=" -no_dtrace_dof" - '' + stdenv.lib.optionalString targetPlatform.useAndroidPrebuilt '' - sed -i -e '5i ,("armv7a-unknown-linux-androideabi", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "cortex-a8", ""))' llvm-targets - '' + stdenv.lib.optionalString targetPlatform.isMusl '' - echo "patching llvm-targets for musl targets..." - echo "Cloning these existing '*-linux-gnu*' targets:" - grep linux-gnu llvm-targets | sed 's/^/ /' - echo "(go go gadget sed)" - sed -i 's,\(^.*linux-\)gnu\(.*\)$,\0\n\1musl\2,' llvm-targets - echo "llvm-targets now contains these '*-linux-musl*' targets:" - grep linux-musl llvm-targets | sed 's/^/ /' - - echo "And now patching to preserve '-musleabi' as done with '-gnueabi'" - # (aclocal.m4 is actual source, but patch configure as well since we don't re-gen) - for x in configure aclocal.m4; do - substituteInPlace $x \ - --replace '*-android*|*-gnueabi*)' \ - '*-android*|*-gnueabi*|*-musleabi*)' - done - ''; - - # TODO(@Ericson2314): Always pass "--target" and always prefix. - configurePlatforms = [ "build" "host" ] - ++ stdenv.lib.optional (targetPlatform != hostPlatform) "target"; - # `--with` flags for libraries needed for RTS linker - configureFlags = [ - "--datadir=$doc/share/doc/ghc" - "--with-curses-includes=${ncurses.dev}/include" "--with-curses-libraries=${ncurses.out}/lib" - ] ++ stdenv.lib.optionals (libffi != null) ["--with-system-libffi" "--with-ffi-includes=${targetPackages.libffi.dev}/include" "--with-ffi-libraries=${targetPackages.libffi.out}/lib" - ] ++ stdenv.lib.optionals (targetPlatform == hostPlatform && !enableIntegerSimple) [ - "--with-gmp-includes=${targetPackages.gmp.dev}/include" "--with-gmp-libraries=${targetPackages.gmp.out}/lib" - ] ++ stdenv.lib.optionals (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [ - "--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib" - ] ++ stdenv.lib.optionals (targetPlatform != hostPlatform) [ - "--enable-bootstrap-with-devel-snapshot" - ] ++ stdenv.lib.optionals useLdGold [ - "CFLAGS=-fuse-ld=gold" - "CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold" - "CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold" - ] ++ stdenv.lib.optionals (disableLargeAddressSpace) [ - "--disable-large-address-space" - ]; - - # Make sure we never relax`$PATH` and hooks support for compatability. - strictDeps = true; - - # Don’t add -liconv to LDFLAGS automatically so that GHC will add it itself. - dontAddExtraLibs = true; - - nativeBuildInputs = [ - perl autoconf automake m4 python3 sphinx - ghc bootPkgs.alex bootPkgs.happy bootPkgs.hscolour - ]; - - # For building runtime libs - depsBuildTarget = toolsForTarget; - - buildInputs = [ perl bash ] ++ (libDeps hostPlatform); - - propagatedBuildInputs = [ targetPackages.stdenv.cc ] - ++ stdenv.lib.optional useLLVM llvmPackages.llvm; - - depsTargetTarget = map stdenv.lib.getDev (libDeps targetPlatform); - depsTargetTargetPropagated = map (stdenv.lib.getOutput "out") (libDeps targetPlatform); - - # required, because otherwise all symbols from HSffi.o are stripped, and - # that in turn causes GHCi to abort - stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!targetPlatform.isDarwin) "--keep-file-symbols"; - - checkTarget = "test"; - - hardeningDisable = [ "format" ] ++ stdenv.lib.optional stdenv.targetPlatform.isMusl "pie"; - - postInstall = '' - # Install the bash completion file. - 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 [ targetPackages.stdenv.cc.bintools coreutils ]}"' $i - done - ''; - - passthru = { - inherit bootPkgs targetPrefix; - - inherit llvmPackages; - inherit enableShared; - - # Our Cabal compiler name - haskellCompilerName = "ghc-${version}"; - }; - - meta = { - homepage = "http://haskell.org/ghc"; - description = "The Glasgow Haskell Compiler"; - maintainers = with stdenv.lib.maintainers; [ marcweber andres peti ]; - inherit (ghc.meta) license platforms; - }; - -} // stdenv.lib.optionalAttrs targetPlatform.useAndroidPrebuilt { - dontStrip = true; - dontPatchELF = true; - noAuditTmpdir = true; -}) diff --git a/nixpkgs/pkgs/development/compilers/ghc/8.8.2.nix b/nixpkgs/pkgs/development/compilers/ghc/8.8.2.nix index 9039b1fa7467..305226b34079 100644 --- a/nixpkgs/pkgs/development/compilers/ghc/8.8.2.nix +++ b/nixpkgs/pkgs/development/compilers/ghc/8.8.2.nix @@ -27,7 +27,7 @@ # platform). Static libs are always built. enableShared ? !stdenv.targetPlatform.isWindows && !stdenv.targetPlatform.useiOSPrebuilt -, # Whetherto build terminfo. +, # Whether to build terminfo. enableTerminfo ? !stdenv.targetPlatform.isWindows , # What flavour to build. An empty string indicates no @@ -73,7 +73,7 @@ let ''; # Splicer will pull out correct variations - libDeps = platform: stdenv.lib.optional enableTerminfo [ ncurses ] + libDeps = platform: stdenv.lib.optional enableTerminfo ncurses ++ [libffi] ++ stdenv.lib.optional (!enableIntegerSimple) gmp ++ stdenv.lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv; @@ -160,10 +160,10 @@ stdenv.mkDerivation (rec { "--with-system-libffi" "--with-ffi-includes=${targetPackages.libffi.dev}/include" "--with-ffi-libraries=${targetPackages.libffi.out}/lib" - ] ++ stdenv.lib.optional (targetPlatform == hostPlatform && !enableIntegerSimple) [ + ] ++ stdenv.lib.optionals (targetPlatform == hostPlatform && !enableIntegerSimple) [ "--with-gmp-includes=${targetPackages.gmp.dev}/include" "--with-gmp-libraries=${targetPackages.gmp.out}/lib" - ] ++ stdenv.lib.optional (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [ + ] ++ stdenv.lib.optionals (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [ "--with-iconv-includes=${libiconv}/include" "--with-iconv-libraries=${libiconv}/lib" ] ++ stdenv.lib.optionals (targetPlatform != hostPlatform) [ @@ -176,7 +176,7 @@ stdenv.mkDerivation (rec { "--disable-large-address-space" ]; - # Make sure we never relax`$PATH` and hooks support for compatability. + # Make sure we never relax`$PATH` and hooks support for compatibility. strictDeps = true; # Don’t add -liconv to LDFLAGS automatically so that GHC will add it itself. diff --git a/nixpkgs/pkgs/development/compilers/ghc/8.8.3.nix b/nixpkgs/pkgs/development/compilers/ghc/8.8.3.nix index 692ac9f0a122..b199dc34fa37 100644 --- a/nixpkgs/pkgs/development/compilers/ghc/8.8.3.nix +++ b/nixpkgs/pkgs/development/compilers/ghc/8.8.3.nix @@ -27,7 +27,7 @@ # platform). Static libs are always built. enableShared ? !stdenv.targetPlatform.isWindows && !stdenv.targetPlatform.useiOSPrebuilt -, # Whetherto build terminfo. +, # Whether to build terminfo. enableTerminfo ? !stdenv.targetPlatform.isWindows , # What flavour to build. An empty string indicates no @@ -176,7 +176,7 @@ stdenv.mkDerivation (rec { "--disable-large-address-space" ]; - # Make sure we never relax`$PATH` and hooks support for compatability. + # Make sure we never relax`$PATH` and hooks support for compatibility. strictDeps = true; # Don’t add -liconv to LDFLAGS automatically so that GHC will add it itself. diff --git a/nixpkgs/pkgs/development/compilers/ghc/head.nix b/nixpkgs/pkgs/development/compilers/ghc/head.nix index d7fe37d1103f..a15ef7f7dbf8 100644 --- a/nixpkgs/pkgs/development/compilers/ghc/head.nix +++ b/nixpkgs/pkgs/development/compilers/ghc/head.nix @@ -32,10 +32,10 @@ # platform). Static libs are always built. enableShared ? !stdenv.targetPlatform.isWindows && !stdenv.targetPlatform.useiOSPrebuilt -, # Whetherto build terminfo. +, # Whether to build terminfo. enableTerminfo ? !stdenv.targetPlatform.isWindows -, version ? "8.11.20200403" +, version ? "8.11.20200505" , # What flavour to build. An empty string indicates no # specific flavour and falls back to ghc default values. ghcFlavour ? stdenv.lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform) @@ -103,8 +103,8 @@ stdenv.mkDerivation (rec { src = fetchgit { url = "https://gitlab.haskell.org/ghc/ghc.git/"; - rev = "4291bddaea3148908c55f235ee8978e1d9aa6f20"; - sha256 = "1gs3mxmsdpsgsp7vnawx8mys0qwg4x2zhfrbciy3wv8nv13ar1af"; + rev = "40c71c2cf38b4e134d81b7184a4d5e02949ae70c"; + sha256 = "04h9rcyzm9w3an1z00hjs062dp7dl19b8pkyxjsypr7a2i9dmvkb"; }; enableParallelBuilding = true; diff --git a/nixpkgs/pkgs/development/compilers/ghdl/default.nix b/nixpkgs/pkgs/development/compilers/ghdl/default.nix new file mode 100644 index 000000000000..6d1fae337340 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/ghdl/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchFromGitHub, gnat, zlib, llvm, lib +, backend ? "mcode" }: + +assert backend == "mcode" || backend == "llvm"; + +stdenv.mkDerivation rec { + pname = "ghdl-${backend}"; + version = "0.37"; + + src = fetchFromGitHub { + owner = "ghdl"; + repo = "ghdl"; + rev = "v${version}"; + sha256 = "0b53yl4im33c1cd4mdyc4ks9cmrpixym17gzchfmplrl22w3l17y"; + }; + + LIBRARY_PATH = "${stdenv.cc.libc}/lib"; + + buildInputs = [ gnat zlib ]; + + preConfigure = '' + # If llvm 7.0 works, 7.x releases should work too. + sed -i 's/check_version 7.0/check_version 7/g' configure + ''; + + configureFlags = lib.optional (backend == "llvm") + "--with-llvm-config=${llvm}/bin/llvm-config"; + + hardeningDisable = [ "format" ]; + + enableParallelBuilding = true; + + meta = with lib; { + homepage = "https://github.com/ghdl/ghdl"; + description = "VHDL 2008/93/87 simulator"; + maintainers = with maintainers; [ lucus16 ]; + platforms = platforms.linux; + license = licenses.gpl2; + }; +} diff --git a/nixpkgs/pkgs/development/compilers/gnatboot/default.nix b/nixpkgs/pkgs/development/compilers/gnatboot/default.nix new file mode 100644 index 000000000000..cb643d6123a6 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/gnatboot/default.nix @@ -0,0 +1,51 @@ +{ stdenv, fetchurl }: + +stdenv.mkDerivation { + pname = "gentoo-gnatboot"; + version = "4.1"; + + src = if stdenv.system == "i686-linux" then + fetchurl { + url = mirror://gentoo/distfiles/gnatboot-4.1-i386.tar.bz2; + sha256 = "0665zk71598204bf521vw68i5y6ccqarq9fcxsqp7ccgycb4lysr"; + } + else if stdenv.system == "x86_64-linux" then + fetchurl { + url = mirror://gentoo/distfiles/gnatboot-4.1-amd64.tar.bz2; + sha256 = "1li4d52lmbnfs6llcshlbqyik2q2q4bvpir0f7n38nagp0h6j0d4"; + } + else + throw "Platform not supported"; + + dontStrip = 1; + + installPhase = '' + mkdir -p $out + cp -R * $out + + set +e + for a in $out/bin/* ; do + patchelf --interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + --set-rpath $(cat $NIX_CC/nix-support/orig-libc)/lib:$(cat $NIX_CC/nix-support/orig-cc)/lib64:$(cat $NIX_CC/nix-support/orig-cc)/lib $a + done + set -e + + mv $out/bin/gnatgcc_2wrap $out/bin/gnatgcc + ln -s $out/bin/gnatgcc $out/bin/gcc + ''; + + passthru = { + langC = true; # TRICK for gcc-wrapper to wrap it + langCC = false; + langFortran = false; + langAda = true; + }; + + meta = with stdenv.lib; { + homepage = "https://gentoo.org"; + license = licenses.gpl3Plus; + maintainers = [ maintainers.lucus16 ]; + + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/development/compilers/gnu-cobol/default.nix b/nixpkgs/pkgs/development/compilers/gnu-cobol/default.nix index c5e42c3afe8a..146af98093d0 100644 --- a/nixpkgs/pkgs/development/compilers/gnu-cobol/default.nix +++ b/nixpkgs/pkgs/development/compilers/gnu-cobol/default.nix @@ -34,7 +34,7 @@ stdenv.mkDerivation rec { description = "An open-source COBOL compiler"; homepage = "https://sourceforge.net/projects/open-cobol/"; license = licenses.gpl3; - maintainers = with maintainers; [ ericsagnes the-kenny ]; + maintainers = with maintainers; [ ericsagnes ]; platforms = with platforms; linux ++ darwin; }; } diff --git a/nixpkgs/pkgs/development/compilers/go/1.12.nix b/nixpkgs/pkgs/development/compilers/go/1.12.nix deleted file mode 100644 index 65e97d4e929e..000000000000 --- a/nixpkgs/pkgs/development/compilers/go/1.12.nix +++ /dev/null @@ -1,247 +0,0 @@ -{ stdenv, fetchurl, tzdata, iana-etc, runCommand -, perl, which, pkgconfig, patch, procps, pcre, cacert, Security, Foundation -, mailcap, runtimeShell -, buildPackages, pkgsTargetTarget -}: - -let - - inherit (stdenv.lib) optionals optionalString; - - goBootstrap = runCommand "go-bootstrap" {} '' - mkdir $out - cp -rf ${buildPackages.go_bootstrap}/* $out/ - chmod -R u+w $out - find $out -name "*.c" -delete - cp -rf $out/bin/* $out/share/go/bin/ - ''; - - goarch = platform: { - i686 = "386"; - x86_64 = "amd64"; - aarch64 = "arm64"; - arm = "arm"; - armv5tel = "arm"; - armv6l = "arm"; - armv7l = "arm"; - }.${platform.parsed.cpu.name} or (throw "Unsupported system"); - -in - -stdenv.mkDerivation rec { - pname = "go"; - version = "1.12.17"; - - src = fetchurl { - url = "https://dl.google.com/go/go${version}.src.tar.gz"; - sha256 = "09cbl90maxry713wd18jdqrms3ivbvcm472csnxc78rsqhc851yy"; - }; - - # perl is used for testing go vet - nativeBuildInputs = [ perl which pkgconfig patch procps ]; - buildInputs = [ cacert pcre ] - ++ optionals stdenv.isLinux [ stdenv.cc.libc.out ] - ++ optionals (stdenv.hostPlatform.libc == "glibc") [ stdenv.cc.libc.static ]; - - depsTargetTargetPropagated = optionals stdenv.isDarwin [ Security Foundation ]; - - hardeningDisable = [ "all" ]; - - prePatch = '' - patchShebangs ./ # replace /bin/bash - - # This source produces shell script at run time, - # and thus it is not corrected by patchShebangs. - substituteInPlace misc/cgo/testcarchive/carchive_test.go \ - --replace '#!/usr/bin/env bash' '#!${runtimeShell}' - - # Patch the mimetype database location which is missing on NixOS. - substituteInPlace src/mime/type_unix.go \ - --replace '/etc/mime.types' '${mailcap}/etc/mime.types' - - # Disabling the 'os/http/net' tests (they want files not available in - # chroot builds) - rm src/net/{listen,parse}_test.go - rm src/syscall/exec_linux_test.go - - # !!! substituteInPlace does not seems to be effective. - # The os test wants to read files in an existing path. Just don't let it be /usr/bin. - sed -i 's,/usr/bin,'"`pwd`", src/os/os_test.go - sed -i 's,/bin/pwd,'"`type -P pwd`", src/os/os_test.go - # Disable the unix socket test - sed -i '/TestShutdownUnix/areturn' src/net/net_test.go - # Disable the hostname test - sed -i '/TestHostname/areturn' src/os/os_test.go - # ParseInLocation fails the test - sed -i '/TestParseInSydney/areturn' src/time/format_test.go - # Remove the api check as it never worked - sed -i '/src\/cmd\/api\/run.go/ireturn nil' src/cmd/dist/test.go - # Remove the coverage test as we have removed this utility - sed -i '/TestCoverageWithCgo/areturn' src/cmd/go/go_test.go - # Remove the timezone naming test - sed -i '/TestLoadFixed/areturn' src/time/time_test.go - # Remove disable setgid test - sed -i '/TestRespectSetgidDir/areturn' src/cmd/go/internal/work/build_test.go - # Remove cert tests that conflict with NixOS's cert resolution - sed -i '/TestEnvVars/areturn' src/crypto/x509/root_unix_test.go - # TestWritevError hangs sometimes - sed -i '/TestWritevError/areturn' src/net/writev_test.go - # TestVariousDeadlines fails sometimes - sed -i '/TestVariousDeadlines/areturn' src/net/timeout_test.go - - sed -i 's,/etc/protocols,${iana-etc}/etc/protocols,' src/net/lookup_unix.go - sed -i 's,/etc/services,${iana-etc}/etc/services,' src/net/port_unix.go - - # Disable cgo lookup tests not works, they depend on resolver - rm src/net/cgo_unix_test.go - - # Disable TestGcSys because it's flakey in our tests, but the failure is not - # reproducible by multiple people in other environments. - # See https://github.com/NixOS/nixpkgs/issues/68361#issuecomment-537849272 and following - # NOTE: Try re-enabling for releases newer than 1.12.9 - sed -i '/TestGcSys/areturn' src/runtime/gc_test.go - - '' + optionalString stdenv.isLinux '' - sed -i 's,/usr/share/zoneinfo/,${tzdata}/share/zoneinfo/,' src/time/zoneinfo_unix.go - '' + optionalString stdenv.isAarch32 '' - echo '#!${runtimeShell}' > misc/cgo/testplugin/test.bash - '' + optionalString stdenv.isDarwin '' - substituteInPlace src/race.bash --replace \ - "sysctl machdep.cpu.extfeatures | grep -qv EM64T" true - sed -i 's,strings.Contains(.*sysctl.*,true {,' src/cmd/dist/util.go - sed -i 's,"/etc","'"$TMPDIR"'",' src/os/os_test.go - sed -i 's,/_go_os_test,'"$TMPDIR"'/_go_os_test,' src/os/path_test.go - - sed -i '/TestChdirAndGetwd/areturn' src/os/os_test.go - sed -i '/TestCredentialNoSetGroups/areturn' src/os/exec/exec_posix_test.go - sed -i '/TestRead0/areturn' src/os/os_test.go - sed -i '/TestSystemRoots/areturn' src/crypto/x509/root_darwin_test.go - - sed -i '/TestGoInstallRebuildsStalePackagesInOtherGOPATH/areturn' src/cmd/go/go_test.go - sed -i '/TestBuildDashIInstallsDependencies/areturn' src/cmd/go/go_test.go - - sed -i '/TestDisasmExtld/areturn' src/cmd/objdump/objdump_test.go - - sed -i 's/unrecognized/unknown/' src/cmd/link/internal/ld/lib.go - - # TestCurrent fails because Current is not implemented on Darwin - sed -i 's/TestCurrent/testCurrent/g' src/os/user/user_test.go - sed -i 's/TestLookup/testLookup/g' src/os/user/user_test.go - - touch $TMPDIR/group $TMPDIR/hosts $TMPDIR/passwd - ''; - - patches = [ - ./remove-tools-1.11.patch - ./ssl-cert-file-1.12.1.patch - ./remove-test-pie.patch - ./creds-test.patch - ./go-1.9-skip-flaky-19608.patch - ./go-1.9-skip-flaky-20072.patch - ./skip-external-network-tests.patch - ./skip-nohup-tests.patch - ] ++ [ - # breaks under load: https://github.com/golang/go/issues/25628 - (if stdenv.isAarch32 - then ./skip-test-extra-files-on-aarch32.patch - else ./skip-test-extra-files-on-386.patch) - ]; - - postPatch = '' - find . -name '*.orig' -exec rm {} ';' - ''; - - GOOS = stdenv.targetPlatform.parsed.kernel.name; - GOARCH = goarch stdenv.targetPlatform; - # GOHOSTOS/GOHOSTARCH must match the building system, not the host system. - # Go will nevertheless build a for host system that we will copy over in - # the install phase. - GOHOSTOS = stdenv.buildPlatform.parsed.kernel.name; - GOHOSTARCH = goarch stdenv.buildPlatform; - - # {CC,CXX}_FOR_TARGET must be only set for cross compilation case as go expect those - # to be different from CC/CXX - CC_FOR_TARGET = if (stdenv.buildPlatform != stdenv.targetPlatform) then - "${pkgsTargetTarget.stdenv.cc}/bin/${pkgsTargetTarget.stdenv.cc.targetPrefix}cc" - else - null; - CXX_FOR_TARGET = if (stdenv.buildPlatform != stdenv.targetPlatform) then - "${pkgsTargetTarget.stdenv.cc}/bin/${pkgsTargetTarget.stdenv.cc.targetPrefix}c++" - else - null; - - GOARM = toString (stdenv.lib.intersectLists [(stdenv.hostPlatform.parsed.cpu.version or "")] ["5" "6" "7"]); - GO386 = 387; # from Arch: don't assume sse2 on i686 - CGO_ENABLED = 1; - # Hopefully avoids test timeouts on Hydra - GO_TEST_TIMEOUT_SCALE = 3; - - # Indicate that we are running on build infrastructure - # Some tests assume things like home directories and users exists - GO_BUILDER_NAME = "nix"; - - GOROOT_BOOTSTRAP="${goBootstrap}/share/go"; - - postConfigure = '' - export GOCACHE=$TMPDIR/go-cache - # this is compiled into the binary - export GOROOT_FINAL=$out/share/go - - export PATH=$(pwd)/bin:$PATH - - # Independent from host/target, CC should produce code for the building system. - export CC=${buildPackages.stdenv.cc}/bin/cc - ulimit -a - ''; - - postBuild = '' - (cd src && ./make.bash) - ''; - - doCheck = stdenv.hostPlatform == stdenv.targetPlatform && !stdenv.isDarwin; - - checkPhase = '' - runHook preCheck - (cd src && HOME=$TMPDIR GOCACHE=$TMPDIR/go-cache ./run.bash --no-rebuild) - runHook postCheck - ''; - - preInstall = '' - rm -r pkg/{bootstrap,obj} - # Contains the wrong perl shebang when cross compiling, - # since it is not used for anything we can deleted as well. - rm src/regexp/syntax/make_perl_groups.pl - '' + (if (stdenv.buildPlatform != stdenv.hostPlatform) then '' - mv bin/*_*/* bin - rmdir bin/*_* - ${optionalString (!(GOHOSTARCH == GOARCH && GOOS == GOHOSTOS)) '' - rm -rf pkg/${GOHOSTOS}_${GOHOSTARCH} pkg/tool/${GOHOSTOS}_${GOHOSTARCH} - ''} - '' else if (stdenv.hostPlatform != stdenv.targetPlatform) then '' - rm -rf bin/*_* - ${optionalString (!(GOHOSTARCH == GOARCH && GOOS == GOHOSTOS)) '' - rm -rf pkg/${GOOS}_${GOARCH} pkg/tool/${GOOS}_${GOARCH} - ''} - '' else ""); - - installPhase = '' - runHook preInstall - mkdir -p $GOROOT_FINAL - cp -a bin pkg src lib misc api doc $GOROOT_FINAL - ln -s $GOROOT_FINAL/bin $out/bin - runHook postInstall - ''; - - setupHook = ./setup-hook.sh; - - disallowedReferences = [ goBootstrap ]; - - meta = with stdenv.lib; { - branch = "1.12"; - homepage = "http://golang.org/"; - description = "The Go Programming language"; - license = licenses.bsd3; - maintainers = with maintainers; [ cstrahan orivej mic92 rvolosatovs Frostman ]; - platforms = platforms.linux ++ platforms.darwin; - }; -} diff --git a/nixpkgs/pkgs/development/compilers/go/1.13.nix b/nixpkgs/pkgs/development/compilers/go/1.13.nix deleted file mode 100644 index 8fee93cc4abe..000000000000 --- a/nixpkgs/pkgs/development/compilers/go/1.13.nix +++ /dev/null @@ -1,244 +0,0 @@ -{ stdenv, fetchurl, tzdata, iana-etc, runCommand -, perl, which, pkgconfig, patch, procps, pcre, cacert, Security, Foundation -, mailcap, runtimeShell -, buildPackages, pkgsTargetTarget -}: - -let - - inherit (stdenv.lib) optionals optionalString; - - goBootstrap = runCommand "go-bootstrap" {} '' - mkdir $out - cp -rf ${buildPackages.go_bootstrap}/* $out/ - chmod -R u+w $out - find $out -name "*.c" -delete - cp -rf $out/bin/* $out/share/go/bin/ - ''; - - goarch = platform: { - "i686" = "386"; - "x86_64" = "amd64"; - "aarch64" = "arm64"; - "arm" = "arm"; - "armv5tel" = "arm"; - "armv6l" = "arm"; - "armv7l" = "arm"; - }.${platform.parsed.cpu.name} or (throw "Unsupported system"); - -in - -stdenv.mkDerivation rec { - pname = "go"; - version = "1.13.8"; - - src = fetchurl { - url = "https://dl.google.com/go/go${version}.src.tar.gz"; - sha256 = "0d7cxffk72568h46srzswrxd0bsdip7amgkf499wzn6l6d3g0fxi"; - }; - - # perl is used for testing go vet - nativeBuildInputs = [ perl which pkgconfig patch procps ]; - buildInputs = [ cacert pcre ] - ++ optionals stdenv.isLinux [ stdenv.cc.libc.out ] - ++ optionals (stdenv.hostPlatform.libc == "glibc") [ stdenv.cc.libc.static ]; - - depsTargetTargetPropagated = optionals stdenv.isDarwin [ Security Foundation ]; - - hardeningDisable = [ "all" ]; - - prePatch = '' - patchShebangs ./ # replace /bin/bash - - # This source produces shell script at run time, - # and thus it is not corrected by patchShebangs. - substituteInPlace misc/cgo/testcarchive/carchive_test.go \ - --replace '#!/usr/bin/env bash' '#!${runtimeShell}' - - # Patch the mimetype database location which is missing on NixOS. - # but also allow static binaries built with NixOS to run outside nix - sed -i 's,\"/etc/mime.types,"${mailcap}/etc/mime.types\"\,\n\t&,' src/mime/type_unix.go - - # Disabling the 'os/http/net' tests (they want files not available in - # chroot builds) - rm src/net/{listen,parse}_test.go - rm src/syscall/exec_linux_test.go - - # !!! substituteInPlace does not seems to be effective. - # The os test wants to read files in an existing path. Just don't let it be /usr/bin. - sed -i 's,/usr/bin,'"`pwd`", src/os/os_test.go - sed -i 's,/bin/pwd,'"`type -P pwd`", src/os/os_test.go - # Disable the unix socket test - sed -i '/TestShutdownUnix/aif true \{ return\; \}' src/net/net_test.go - # Disable the hostname test - sed -i '/TestHostname/aif true \{ return\; \}' src/os/os_test.go - # ParseInLocation fails the test - sed -i '/TestParseInSydney/aif true \{ return\; \}' src/time/format_test.go - # Remove the api check as it never worked - sed -i '/src\/cmd\/api\/run.go/ireturn nil' src/cmd/dist/test.go - # Remove the coverage test as we have removed this utility - sed -i '/TestCoverageWithCgo/aif true \{ return\; \}' src/cmd/go/go_test.go - # Remove the timezone naming test - sed -i '/TestLoadFixed/aif true \{ return\; \}' src/time/time_test.go - # Remove disable setgid test - sed -i '/TestRespectSetgidDir/aif true \{ return\; \}' src/cmd/go/internal/work/build_test.go - # Remove cert tests that conflict with NixOS's cert resolution - sed -i '/TestEnvVars/aif true \{ return\; \}' src/crypto/x509/root_unix_test.go - # TestWritevError hangs sometimes - sed -i '/TestWritevError/aif true \{ return\; \}' src/net/writev_test.go - # TestVariousDeadlines fails sometimes - sed -i '/TestVariousDeadlines/aif true \{ return\; \}' src/net/timeout_test.go - - sed -i 's,/etc/protocols,${iana-etc}/etc/protocols,' src/net/lookup_unix.go - sed -i 's,/etc/services,${iana-etc}/etc/services,' src/net/port_unix.go - - # Disable cgo lookup tests not works, they depend on resolver - rm src/net/cgo_unix_test.go - - '' + optionalString stdenv.isLinux '' - # prepend the nix path to the zoneinfo files but also leave the original value for static binaries - # that run outside a nix server - sed -i 's,\"/usr/share/zoneinfo/,"${tzdata}/share/zoneinfo/\"\,\n\t&,' src/time/zoneinfo_unix.go - - '' + optionalString stdenv.isAarch32 '' - echo '#!${runtimeShell}' > misc/cgo/testplugin/test.bash - '' + optionalString stdenv.isDarwin '' - substituteInPlace src/race.bash --replace \ - "sysctl machdep.cpu.extfeatures | grep -qv EM64T" true - sed -i 's,strings.Contains(.*sysctl.*,true {,' src/cmd/dist/util.go - sed -i 's,"/etc","'"$TMPDIR"'",' src/os/os_test.go - sed -i 's,/_go_os_test,'"$TMPDIR"'/_go_os_test,' src/os/path_test.go - - sed -i '/TestChdirAndGetwd/aif true \{ return\; \}' src/os/os_test.go - sed -i '/TestCredentialNoSetGroups/aif true \{ return\; \}' src/os/exec/exec_posix_test.go - sed -i '/TestRead0/aif true \{ return\; \}' src/os/os_test.go - sed -i '/TestSystemRoots/aif true \{ return\; \}' src/crypto/x509/root_darwin_test.go - - sed -i '/TestGoInstallRebuildsStalePackagesInOtherGOPATH/aif true \{ return\; \}' src/cmd/go/go_test.go - sed -i '/TestBuildDashIInstallsDependencies/aif true \{ return\; \}' src/cmd/go/go_test.go - - sed -i '/TestDisasmExtld/aif true \{ return\; \}' src/cmd/objdump/objdump_test.go - - sed -i 's/unrecognized/unknown/' src/cmd/link/internal/ld/lib.go - - # TestCurrent fails because Current is not implemented on Darwin - sed -i 's/TestCurrent/testCurrent/g' src/os/user/user_test.go - sed -i 's/TestLookup/testLookup/g' src/os/user/user_test.go - - touch $TMPDIR/group $TMPDIR/hosts $TMPDIR/passwd - ''; - - patches = [ - ./remove-tools-1.11.patch - ./ssl-cert-file-1.13.patch - ./remove-test-pie-1.13.patch - ./creds-test.patch - ./go-1.9-skip-flaky-19608.patch - ./go-1.9-skip-flaky-20072.patch - ./skip-external-network-tests.patch - ./skip-nohup-tests.patch - ] ++ [ - # breaks under load: https://github.com/golang/go/issues/25628 - (if stdenv.isAarch32 - then ./skip-test-extra-files-on-aarch32.patch - else ./skip-test-extra-files-on-386.patch) - ]; - - postPatch = '' - find . -name '*.orig' -exec rm {} ';' - ''; - - GOOS = stdenv.targetPlatform.parsed.kernel.name; - GOARCH = goarch stdenv.targetPlatform; - # GOHOSTOS/GOHOSTARCH must match the building system, not the host system. - # Go will nevertheless build a for host system that we will copy over in - # the install phase. - GOHOSTOS = stdenv.buildPlatform.parsed.kernel.name; - GOHOSTARCH = goarch stdenv.buildPlatform; - - # {CC,CXX}_FOR_TARGET must be only set for cross compilation case as go expect those - # to be different from CC/CXX - CC_FOR_TARGET = if (stdenv.buildPlatform != stdenv.targetPlatform) then - "${pkgsTargetTarget.stdenv.cc}/bin/${pkgsTargetTarget.stdenv.cc.targetPrefix}cc" - else - null; - CXX_FOR_TARGET = if (stdenv.buildPlatform != stdenv.targetPlatform) then - "${pkgsTargetTarget.stdenv.cc}/bin/${pkgsTargetTarget.stdenv.cc.targetPrefix}c++" - else - null; - - GOARM = toString (stdenv.lib.intersectLists [(stdenv.hostPlatform.parsed.cpu.version or "")] ["5" "6" "7"]); - GO386 = 387; # from Arch: don't assume sse2 on i686 - CGO_ENABLED = 1; - # Hopefully avoids test timeouts on Hydra - GO_TEST_TIMEOUT_SCALE = 3; - - # Indicate that we are running on build infrastructure - # Some tests assume things like home directories and users exists - GO_BUILDER_NAME = "nix"; - - GOROOT_BOOTSTRAP="${goBootstrap}/share/go"; - - postConfigure = '' - export GOCACHE=$TMPDIR/go-cache - # this is compiled into the binary - export GOROOT_FINAL=$out/share/go - - export PATH=$(pwd)/bin:$PATH - - # Independent from host/target, CC should produce code for the building system. - export CC=${buildPackages.stdenv.cc}/bin/cc - ulimit -a - ''; - - postBuild = '' - (cd src && ./make.bash) - ''; - - doCheck = stdenv.hostPlatform == stdenv.targetPlatform && !stdenv.isDarwin; - - checkPhase = '' - runHook preCheck - (cd src && HOME=$TMPDIR GOCACHE=$TMPDIR/go-cache ./run.bash --no-rebuild) - runHook postCheck - ''; - - preInstall = '' - rm -r pkg/obj - # Contains the wrong perl shebang when cross compiling, - # since it is not used for anything we can deleted as well. - rm src/regexp/syntax/make_perl_groups.pl - '' + (if (stdenv.buildPlatform != stdenv.hostPlatform) then '' - mv bin/*_*/* bin - rmdir bin/*_* - ${optionalString (!(GOHOSTARCH == GOARCH && GOOS == GOHOSTOS)) '' - rm -rf pkg/${GOHOSTOS}_${GOHOSTARCH} pkg/tool/${GOHOSTOS}_${GOHOSTARCH} - ''} - '' else if (stdenv.hostPlatform != stdenv.targetPlatform) then '' - rm -rf bin/*_* - ${optionalString (!(GOHOSTARCH == GOARCH && GOOS == GOHOSTOS)) '' - rm -rf pkg/${GOOS}_${GOARCH} pkg/tool/${GOOS}_${GOARCH} - ''} - '' else ""); - - installPhase = '' - runHook preInstall - mkdir -p $GOROOT_FINAL - cp -a bin pkg src lib misc api doc $GOROOT_FINAL - ln -s $GOROOT_FINAL/bin $out/bin - runHook postInstall - ''; - - setupHook = ./setup-hook.sh; - - disallowedReferences = [ goBootstrap ]; - - meta = with stdenv.lib; { - branch = "1.13"; - homepage = "http://golang.org/"; - description = "The Go Programming language"; - license = licenses.bsd3; - maintainers = with maintainers; [ cstrahan orivej mic92 rvolosatovs kalbasit Frostman ]; - platforms = platforms.linux ++ platforms.darwin; - }; -} diff --git a/nixpkgs/pkgs/development/compilers/go/1.14.nix b/nixpkgs/pkgs/development/compilers/go/1.14.nix index cf5c878d9c8b..9ee5b6fa6242 100644 --- a/nixpkgs/pkgs/development/compilers/go/1.14.nix +++ b/nixpkgs/pkgs/development/compilers/go/1.14.nix @@ -30,11 +30,11 @@ in stdenv.mkDerivation rec { pname = "go"; - version = "1.14.1"; + version = "1.14.2"; src = fetchurl { url = "https://dl.google.com/go/go${version}.src.tar.gz"; - sha256 = "0xkna02clggcdgl5xxwani62krnf64x6p3hk9k5v9ldh2lhmglia"; + sha256 = "0z3zxsnhmsxplnwfw1l9gr6jgglwp50sr3p5njknv9i6jzk89plq"; }; # perl is used for testing go vet diff --git a/nixpkgs/pkgs/development/compilers/go/remove-test-pie.patch b/nixpkgs/pkgs/development/compilers/go/remove-test-pie.patch deleted file mode 100644 index fb8e116af76f..000000000000 --- a/nixpkgs/pkgs/development/compilers/go/remove-test-pie.patch +++ /dev/null @@ -1,24 +0,0 @@ ---- source.org/src/cmd/dist/test.go 2018-02-22 10:40:40.089632339 +0000 -+++ source/src/cmd/dist/test.go 2018-02-22 10:56:53.075193788 +0000 -@@ -526,21 +526,6 @@ - }) - } - -- // Test internal linking of PIE binaries where it is supported. -- if goos == "linux" && goarch == "amd64" && !isAlpineLinux() { -- // Issue 18243: We don't have a way to set the default -- // dynamic linker used in internal linking mode. So -- // this test is skipped on Alpine. -- t.tests = append(t.tests, distTest{ -- name: "pie_internal", -- heading: "internal linking of -buildmode=pie", -- fn: func(dt *distTest) error { -- t.addCmd(dt, "src", t.goTest(), "reflect", "-buildmode=pie", "-ldflags=-linkmode=internal", t.timeout(60)) -- return nil -- }, -- }) -- } -- - // sync tests - t.tests = append(t.tests, distTest{ - name: "sync_cpu", diff --git a/nixpkgs/pkgs/development/compilers/go/ssl-cert-file-1.12.1.patch b/nixpkgs/pkgs/development/compilers/go/ssl-cert-file-1.12.1.patch deleted file mode 100644 index aa3116d76c12..000000000000 --- a/nixpkgs/pkgs/development/compilers/go/ssl-cert-file-1.12.1.patch +++ /dev/null @@ -1,59 +0,0 @@ -diff -Naur a/src/crypto/x509/root_cgo_darwin.go b/src/crypto/x509/root_cgo_darwin.go ---- a/src/crypto/x509/root_cgo_darwin.go 2019-03-15 11:33:55.920232337 -0700 -+++ b/src/crypto/x509/root_cgo_darwin.go 2019-03-15 11:34:53.323180897 -0700 -@@ -270,11 +270,20 @@ - import "C" - import ( - "errors" -+ "io/ioutil" -+ "os" - "unsafe" - ) - - func loadSystemRoots() (*CertPool, error) { - roots := NewCertPool() -+ if file := os.Getenv("NIX_SSL_CERT_FILE"); file != "" { -+ data, err := ioutil.ReadFile(file) -+ if err == nil { -+ roots.AppendCertsFromPEM(data) -+ return roots, nil -+ } -+ } - - var data C.CFDataRef = 0 - var untrustedData C.CFDataRef = 0 -diff -Naur a/src/crypto/x509/root_darwin.go b/src/crypto/x509/root_darwin.go ---- a/src/crypto/x509/root_darwin.go 2019-03-15 11:33:55.920232337 -0700 -+++ b/src/crypto/x509/root_darwin.go 2019-03-15 11:36:21.205123541 -0700 -@@ -92,6 +92,14 @@ - verifyCh = make(chan rootCandidate) - ) - -+ if file := os.Getenv("NIX_SSL_CERT_FILE"); file != "" { -+ data, err := ioutil.ReadFile(file) -+ if err == nil { -+ roots.AppendCertsFromPEM(data) -+ return roots, nil -+ } -+ } -+ - // Using 4 goroutines to pipe into verify-cert seems to be - // about the best we can do. The verify-cert binary seems to - // just RPC to another server with coarse locking anyway, so -diff -Naur a/src/crypto/x509/root_unix.go b/src/crypto/x509/root_unix.go ---- a/src/crypto/x509/root_unix.go 2019-03-15 11:33:55.920232337 -0700 -+++ b/src/crypto/x509/root_unix.go 2019-03-15 11:37:15.737326340 -0700 -@@ -38,6 +38,13 @@ - - func loadSystemRoots() (*CertPool, error) { - roots := NewCertPool() -+ if file := os.Getenv("NIX_SSL_CERT_FILE"); file != "" { -+ data, err := ioutil.ReadFile(file) -+ if err == nil { -+ roots.AppendCertsFromPEM(data) -+ return roots, nil -+ } -+ } - - files := certFiles - if f := os.Getenv(certFileEnv); f != "" { diff --git a/nixpkgs/pkgs/development/compilers/ispc/default.nix b/nixpkgs/pkgs/development/compilers/ispc/default.nix index 022651a3c0e1..01e1eaca6e1d 100644 --- a/nixpkgs/pkgs/development/compilers/ispc/default.nix +++ b/nixpkgs/pkgs/development/compilers/ispc/default.nix @@ -1,42 +1,44 @@ -{stdenv, fetchFromGitHub, cmake, which, m4, python, bison, flex, llvmPackages, -testedTargets ? ["sse2"] # the default test target is sse4, but that is not supported by all Hydra agents +{ stdenv, fetchFromGitHub +, cmake, which, m4, python3, bison, flex, llvmPackages + + # the default test target is sse4, but that is not supported by all Hydra agents +, testedTargets ? [ "sse2" ] }: stdenv.mkDerivation rec { - version = "1.10.0"; - rev = "v${version}"; - - inherit testedTargets; - - pname = "ispc"; + pname = "ispc"; + version = "1.13.0"; src = fetchFromGitHub { - owner = "ispc"; - repo = "ispc"; - inherit rev; - sha256 = "1x07n2gaff3v32yvddrb659mx5gg12bnbsqbyfimp396wn04w60b"; + owner = pname; + repo = pname; + rev = "v${version}"; + sha256 = "1l74xkpwwxc38k2ngg7mpvswziiy91yxslgfad6688hh1n5jvayd"; }; - doCheck = stdenv.isLinux; - - nativeBuildInputs = [ cmake ]; + nativeBuildInputs = [ cmake which m4 bison flex python3 ]; buildInputs = with llvmPackages; [ - which - m4 - python - bison - flex - llvm - llvmPackages.clang-unwrapped # we need to link against libclang, so we need the unwrapped + # we need to link against libclang, so we need the unwrapped + llvm llvmPackages.clang-unwrapped ]; - postPatch = "sed -i -e 's/curses/ncurses/g' CMakeLists.txt"; + postPatch = '' + substituteInPlace CMakeLists.txt \ + --replace curses ncurses + substituteInPlace cmake/GenerateBuiltins.cmake \ + --replace 'bit 32 64' 'bit 64' + ''; + + inherit testedTargets; - # TODO: this correctly catches errors early, but also some things that are just weird and don't seem to be real - # errors - #configurePhase = '' - # makeFlagsArray=( SHELL="${bash}/bin/bash -o pipefail" ) - #''; + # needs 'transcendentals' executable, which is only on linux + doCheck = stdenv.isLinux; + + # the compiler enforces -Werror, and -fno-strict-overflow makes it mad. + # hilariously this is something of a double negative: 'disable' the + # 'strictoverflow' hardening protection actually means we *allow* the compiler + # to do strict overflow optimization. somewhat misleading... + hardeningDisable = [ "strictoverflow" ]; checkPhase = '' export ISPC_HOME=$PWD/bin @@ -55,13 +57,14 @@ stdenv.mkDerivation rec { "-DCLANG_EXECUTABLE=${llvmPackages.clang}/bin/clang" "-DISPC_INCLUDE_EXAMPLES=OFF" "-DISPC_INCLUDE_UTILS=OFF" - ]; + "-DARM_ENABLED=FALSE" + ]; meta = with stdenv.lib; { - homepage = "https://ispc.github.io/"; + homepage = "https://ispc.github.io/"; description = "Intel 'Single Program, Multiple Data' Compiler, a vectorised language"; - license = licenses.bsd3; - platforms = ["x86_64-linux" "x86_64-darwin"]; # TODO: buildable on more platforms? - maintainers = [ maintainers.aristid ]; + license = licenses.bsd3; + platforms = [ "x86_64-linux" "x86_64-darwin" ]; # TODO: buildable on more platforms? + maintainers = with maintainers; [ aristid thoughtpolice ]; }; } diff --git a/nixpkgs/pkgs/development/compilers/julia/1.3.nix b/nixpkgs/pkgs/development/compilers/julia/1.3.nix index 49dc17a27f45..b67a78b4a5ab 100644 --- a/nixpkgs/pkgs/development/compilers/julia/1.3.nix +++ b/nixpkgs/pkgs/development/compilers/julia/1.3.nix @@ -12,7 +12,7 @@ , CoreServices, ApplicationServices }: -assert (!blas.is64bit) && (!lapack.is64bit); +assert (!blas.isILP64) && (!lapack.isILP64); with stdenv.lib; @@ -88,7 +88,7 @@ stdenv.mkDerivation rec { "SHELL=${stdenv.shell}" "USE_SYSTEM_BLAS=1" - "USE_BLAS64=${if blas.is64bit then "1" else "0"}" + "USE_BLAS64=${if blas.isILP64 then "1" else "0"}" "USE_SYSTEM_LAPACK=1" diff --git a/nixpkgs/pkgs/development/compilers/julia/shared.nix b/nixpkgs/pkgs/development/compilers/julia/shared.nix index 92e3d4a5c14b..29ac41150506 100644 --- a/nixpkgs/pkgs/development/compilers/julia/shared.nix +++ b/nixpkgs/pkgs/development/compilers/julia/shared.nix @@ -22,7 +22,7 @@ with stdenv.lib; -assert (!blas.is64bit) && (!lapack.is64bit); +assert (!blas.isILP64) && (!lapack.isILP64); let dsfmtVersion = "2.2.3"; @@ -137,7 +137,7 @@ stdenv.mkDerivation rec { "SHELL=${stdenv.shell}" "USE_SYSTEM_BLAS=1" - "USE_BLAS64=${if blas.is64bit then "1" else "0"}" + "USE_BLAS64=${if blas.isILP64 then "1" else "0"}" "USE_SYSTEM_LAPACK=1" diff --git a/nixpkgs/pkgs/development/compilers/kotlin/default.nix b/nixpkgs/pkgs/development/compilers/kotlin/default.nix index d4f37d4f5cce..4e2810fa893c 100644 --- a/nixpkgs/pkgs/development/compilers/kotlin/default.nix +++ b/nixpkgs/pkgs/development/compilers/kotlin/default.nix @@ -1,14 +1,14 @@ { stdenv, fetchurl, makeWrapper, jre, unzip }: let - version = "1.3.71"; + version = "1.3.72"; in stdenv.mkDerivation { inherit version; pname = "kotlin"; src = fetchurl { url = "https://github.com/JetBrains/kotlin/releases/download/v${version}/kotlin-compiler-${version}.zip"; - sha256 = "0jp7z2lys02d0wmycdlfg9c08ji4qvjaz2wzvrxjyvcwv7d7gnvs"; + sha256 = "0v6c4vjiflwbjjc1lmiyzrilxwbqcz5ll6ls40zhw70zk23xpl6c"; }; propagatedBuildInputs = [ jre ] ; diff --git a/nixpkgs/pkgs/development/compilers/llvm/10/compiler-rt.nix b/nixpkgs/pkgs/development/compilers/llvm/10/compiler-rt.nix index 4d31229d64c4..c0ea436ae275 100644 --- a/nixpkgs/pkgs/development/compilers/llvm/10/compiler-rt.nix +++ b/nixpkgs/pkgs/development/compilers/llvm/10/compiler-rt.nix @@ -55,7 +55,10 @@ stdenv.mkDerivation rec { # can build this. If we didn't do it, basically the entire nixpkgs on Darwin would have an unfree dependency and we'd # get no binary cache for the entire platform. If you really find yourself wanting the TSAN, make this controllable by # a flag and turn the flag off during the stdenv build. - postPatch = stdenv.lib.optionalString stdenv.isDarwin '' + postPatch = '' + substituteInPlace cmake/builtin-config-ix.cmake \ + --replace 'set(X86 i386)' 'set(X86 i386 i486 i586 i686)' + '' + stdenv.lib.optionalString stdenv.isDarwin '' substituteInPlace cmake/config-ix.cmake \ --replace 'set(COMPILER_RT_HAS_TSAN TRUE)' 'set(COMPILER_RT_HAS_TSAN FALSE)' '' + stdenv.lib.optionalString (useLLVM) '' diff --git a/nixpkgs/pkgs/development/compilers/llvm/10/llvm.nix b/nixpkgs/pkgs/development/compilers/llvm/10/llvm.nix index 648c9fdefc34..dd0728b40c94 100644 --- a/nixpkgs/pkgs/development/compilers/llvm/10/llvm.nix +++ b/nixpkgs/pkgs/development/compilers/llvm/10/llvm.nix @@ -16,6 +16,7 @@ , enableSharedLibraries ? true , enablePFM ? !(stdenv.isDarwin || stdenv.isAarch64 # broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245 + || stdenv.isAarch32 # broken for the armv7l builder ) , enablePolly ? true }: @@ -159,6 +160,7 @@ in stdenv.mkDerivation (rec { enableParallelBuilding = true; + requiredSystemFeatures = [ "big-parallel" ]; meta = { description = "Collection of modular and reusable compiler and toolchain technologies"; homepage = "https://llvm.org/"; diff --git a/nixpkgs/pkgs/development/compilers/llvm/6/compiler-rt.nix b/nixpkgs/pkgs/development/compilers/llvm/6/compiler-rt.nix index 1bdba107d7dd..abb6796e3c78 100644 --- a/nixpkgs/pkgs/development/compilers/llvm/6/compiler-rt.nix +++ b/nixpkgs/pkgs/development/compilers/llvm/6/compiler-rt.nix @@ -54,7 +54,10 @@ stdenv.mkDerivation { # can build this. If we didn't do it, basically the entire nixpkgs on Darwin would have an unfree dependency and we'd # get no binary cache for the entire platform. If you really find yourself wanting the TSAN, make this controllable by # a flag and turn the flag off during the stdenv build. - postPatch = stdenv.lib.optionalString stdenv.isDarwin '' + postPatch = '' + substituteInPlace cmake/builtin-config-ix.cmake \ + --replace 'set(X86 i386)' 'set(X86 i386 i486 i586 i686)' + '' + stdenv.lib.optionalString stdenv.isDarwin '' substituteInPlace cmake/config-ix.cmake \ --replace 'set(COMPILER_RT_HAS_TSAN TRUE)' 'set(COMPILER_RT_HAS_TSAN FALSE)' '' + stdenv.lib.optionalString (useLLVM) '' diff --git a/nixpkgs/pkgs/development/compilers/llvm/6/llvm.nix b/nixpkgs/pkgs/development/compilers/llvm/6/llvm.nix index 9f3b5e5ba0d0..22dbb75d2d50 100644 --- a/nixpkgs/pkgs/development/compilers/llvm/6/llvm.nix +++ b/nixpkgs/pkgs/development/compilers/llvm/6/llvm.nix @@ -147,6 +147,7 @@ stdenv.mkDerivation ({ enableParallelBuilding = true; + requiredSystemFeatures = [ "big-parallel" ]; meta = { description = "Collection of modular and reusable compiler and toolchain technologies"; homepage = "https://llvm.org/"; diff --git a/nixpkgs/pkgs/development/compilers/llvm/7/compiler-rt.nix b/nixpkgs/pkgs/development/compilers/llvm/7/compiler-rt.nix index 055fb01215f0..e83a4a3c26f8 100644 --- a/nixpkgs/pkgs/development/compilers/llvm/7/compiler-rt.nix +++ b/nixpkgs/pkgs/development/compilers/llvm/7/compiler-rt.nix @@ -55,7 +55,10 @@ stdenv.mkDerivation { # can build this. If we didn't do it, basically the entire nixpkgs on Darwin would have an unfree dependency and we'd # get no binary cache for the entire platform. If you really find yourself wanting the TSAN, make this controllable by # a flag and turn the flag off during the stdenv build. - postPatch = stdenv.lib.optionalString stdenv.isDarwin '' + postPatch = '' + substituteInPlace cmake/builtin-config-ix.cmake \ + --replace 'set(X86 i386)' 'set(X86 i386 i486 i586 i686)' + '' + stdenv.lib.optionalString stdenv.isDarwin '' substituteInPlace cmake/config-ix.cmake \ --replace 'set(COMPILER_RT_HAS_TSAN TRUE)' 'set(COMPILER_RT_HAS_TSAN FALSE)' '' + stdenv.lib.optionalString (useLLVM) '' diff --git a/nixpkgs/pkgs/development/compilers/llvm/7/llvm.nix b/nixpkgs/pkgs/development/compilers/llvm/7/llvm.nix index 55485418e4f1..dc57d0d6bd5c 100644 --- a/nixpkgs/pkgs/development/compilers/llvm/7/llvm.nix +++ b/nixpkgs/pkgs/development/compilers/llvm/7/llvm.nix @@ -17,6 +17,7 @@ , enableSharedLibraries ? true , enablePFM ? !(stdenv.isDarwin || stdenv.isAarch64 # broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245 + || stdenv.isAarch32 # broken for the armv7l builder ) , enablePolly ? false }: @@ -168,6 +169,7 @@ in stdenv.mkDerivation ({ enableParallelBuilding = true; + requiredSystemFeatures = [ "big-parallel" ]; meta = { description = "Collection of modular and reusable compiler and toolchain technologies"; homepage = "https://llvm.org/"; diff --git a/nixpkgs/pkgs/development/compilers/llvm/8/compiler-rt.nix b/nixpkgs/pkgs/development/compilers/llvm/8/compiler-rt.nix index 573c198d6dac..b11659a78cc5 100644 --- a/nixpkgs/pkgs/development/compilers/llvm/8/compiler-rt.nix +++ b/nixpkgs/pkgs/development/compilers/llvm/8/compiler-rt.nix @@ -55,7 +55,10 @@ stdenv.mkDerivation { # can build this. If we didn't do it, basically the entire nixpkgs on Darwin would have an unfree dependency and we'd # get no binary cache for the entire platform. If you really find yourself wanting the TSAN, make this controllable by # a flag and turn the flag off during the stdenv build. - postPatch = stdenv.lib.optionalString stdenv.isDarwin '' + postPatch = '' + substituteInPlace cmake/builtin-config-ix.cmake \ + --replace 'set(X86 i386)' 'set(X86 i386 i486 i586 i686)' + '' + stdenv.lib.optionalString stdenv.isDarwin '' substituteInPlace cmake/config-ix.cmake \ --replace 'set(COMPILER_RT_HAS_TSAN TRUE)' 'set(COMPILER_RT_HAS_TSAN FALSE)' '' + stdenv.lib.optionalString (useLLVM) '' diff --git a/nixpkgs/pkgs/development/compilers/llvm/8/llvm.nix b/nixpkgs/pkgs/development/compilers/llvm/8/llvm.nix index 43615fc675dc..0f6179c2d310 100644 --- a/nixpkgs/pkgs/development/compilers/llvm/8/llvm.nix +++ b/nixpkgs/pkgs/development/compilers/llvm/8/llvm.nix @@ -16,6 +16,7 @@ , enableSharedLibraries ? true , enablePFM ? !(stdenv.isDarwin || stdenv.isAarch64 # broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245 + || stdenv.isAarch32 # broken for the armv7l builder ) , enablePolly ? false }: @@ -143,6 +144,7 @@ in stdenv.mkDerivation ({ enableParallelBuilding = true; + requiredSystemFeatures = [ "big-parallel" ]; meta = { description = "Collection of modular and reusable compiler and toolchain technologies"; homepage = "https://llvm.org/"; diff --git a/nixpkgs/pkgs/development/compilers/llvm/9/compiler-rt.nix b/nixpkgs/pkgs/development/compilers/llvm/9/compiler-rt.nix index c7723a982914..7d712017eae9 100644 --- a/nixpkgs/pkgs/development/compilers/llvm/9/compiler-rt.nix +++ b/nixpkgs/pkgs/development/compilers/llvm/9/compiler-rt.nix @@ -54,7 +54,10 @@ stdenv.mkDerivation rec { # can build this. If we didn't do it, basically the entire nixpkgs on Darwin would have an unfree dependency and we'd # get no binary cache for the entire platform. If you really find yourself wanting the TSAN, make this controllable by # a flag and turn the flag off during the stdenv build. - postPatch = stdenv.lib.optionalString stdenv.isDarwin '' + postPatch = '' + substituteInPlace cmake/builtin-config-ix.cmake \ + --replace 'set(X86 i386)' 'set(X86 i386 i486 i586 i686)' + '' + stdenv.lib.optionalString stdenv.isDarwin '' substituteInPlace cmake/config-ix.cmake \ --replace 'set(COMPILER_RT_HAS_TSAN TRUE)' 'set(COMPILER_RT_HAS_TSAN FALSE)' '' + stdenv.lib.optionalString (useLLVM) '' diff --git a/nixpkgs/pkgs/development/compilers/llvm/9/llvm.nix b/nixpkgs/pkgs/development/compilers/llvm/9/llvm.nix index f69f45b858b7..013e5bb36b94 100644 --- a/nixpkgs/pkgs/development/compilers/llvm/9/llvm.nix +++ b/nixpkgs/pkgs/development/compilers/llvm/9/llvm.nix @@ -16,6 +16,7 @@ , enableSharedLibraries ? true , enablePFM ? !(stdenv.isDarwin || stdenv.isAarch64 # broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245 + || stdenv.isAarch32 # broken for the armv7l builder ) , enablePolly ? false }: @@ -160,6 +161,7 @@ in stdenv.mkDerivation (rec { enableParallelBuilding = true; + requiredSystemFeatures = [ "big-parallel" ]; meta = { description = "Collection of modular and reusable compiler and toolchain technologies"; homepage = "https://llvm.org/"; diff --git a/nixpkgs/pkgs/development/compilers/mercury/default.nix b/nixpkgs/pkgs/development/compilers/mercury/default.nix index 5c26d5ab117b..d534e2483d63 100644 --- a/nixpkgs/pkgs/development/compilers/mercury/default.nix +++ b/nixpkgs/pkgs/development/compilers/mercury/default.nix @@ -3,11 +3,11 @@ stdenv.mkDerivation rec { pname = "mercury"; - version = "20.01.1"; + version = "20.01.2"; src = fetchurl { url = "https://dl.mercurylang.org/release/mercury-srcdist-${version}.tar.gz"; - sha256 = "0vxp9f0jmr228n13p6znhbxncav6ay0bnl4ypy6r3lw5lh7z172p"; + sha256 = "084ml6kswgaqjgmib3gq7zjnqsimz3f35w13ff6z0dv4d9csmq4m"; }; buildInputs = [ gcc flex bison texinfo jdk erlang makeWrapper diff --git a/nixpkgs/pkgs/development/compilers/mint/default.nix b/nixpkgs/pkgs/development/compilers/mint/default.nix index 7f5af5e834b0..d1d103c047fb 100644 --- a/nixpkgs/pkgs/development/compilers/mint/default.nix +++ b/nixpkgs/pkgs/development/compilers/mint/default.nix @@ -1,27 +1,36 @@ -{ lib, fetchFromGitHub, crystal, zlib, openssl, duktape, which, libyaml }: -crystal.buildCrystalPackage rec { - version = "0.7.1"; +{ lib, fetchFromGitHub, crystal_0_33, openssl }: + +let crystal = crystal_0_33; +in crystal.buildCrystalPackage rec { + version = "0.9.0"; pname = "mint"; + src = fetchFromGitHub { owner = "mint-lang"; repo = "mint"; rev = version; - sha256 = "18cg96kl4dn89bj6fm3080zzyd1r7rsfi17agdjjayd2v9fgs95l"; + sha256 = "0y1qr616x7s0pjgih6s1n4wiwb8kn8l1knnzmib6j4jmqax0jhz0"; }; - buildInputs = [ openssl ]; + postPatch = '' + export HOME=$TMP + ''; + + format = "shards"; # Update with # nix-shell -p crystal2nix --run crystal2nix # with mint's shard.lock file in the current directory shardsFile = ./shards.nix; - crystalBinaries.mint.src = "src/mint.cr"; - meta = { + buildInputs = [ openssl ]; + + meta = with lib; { description = "A refreshing language for the front-end web"; homepage = "https://mint-lang.com/"; - license = lib.licenses.bsd3; - maintainers = with lib.maintainers; [ manveru ]; + license = licenses.bsd3; + maintainers = with maintainers; [ manveru ]; platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ]; + broken = lib.versionOlder crystal.version "0.33"; }; } diff --git a/nixpkgs/pkgs/development/compilers/mint/shards.nix b/nixpkgs/pkgs/development/compilers/mint/shards.nix index b3583ac2cbaa..8e2b6b6ad4df 100644 --- a/nixpkgs/pkgs/development/compilers/mint/shards.nix +++ b/nixpkgs/pkgs/development/compilers/mint/shards.nix @@ -2,26 +2,26 @@ admiral = { owner = "jwaldrip"; repo = "admiral.cr"; - rev = "v1.7.3"; - sha256 = "0b98qjy43wsrc08am7lkhcdsxc7gplf9hcmbvd4p3dw4g107rk91"; + rev = "v1.9.0"; + sha256 = "0y8gsh1qz42bc9jawcrn0i49mzzfvf8znmivd8lybapf0f53fblz"; }; ameba = { - owner = "veelenga"; + owner = "crystal-ameba"; repo = "ameba"; - rev = "v0.10.1"; - sha256 = "0dcw7px7g0c5pxpdlirhirqzhcc7gdwdfiwb9kgm4x1k74ghjgxq"; + rev = "v0.12.0"; + sha256 = "0g68yijbm2j4ig536fwq49d1z7x2iv9kp4g3gjklf5zn1sbqhm12"; }; baked_file_system = { owner = "schovi"; repo = "baked_file_system"; - rev = "v0.9.7"; - sha256 = "1fi6zag1a6h4xwrfizy01dls3hhraqw0cmpwj7rjv1qcddjgig5z"; + rev = "v0.9.8"; + sha256 = "12l375jllg1lxvfh610dz0a39p803xw6q9fxlmnc6hy55i0gm0y3"; }; diff = { owner = "MakeNowJust"; repo = "crystal-diff"; - rev = "51962dc36f9bbb1b926d557f7cb8993a6c73cc63"; - sha256 = "1nwnsxm8srfw8jg0yfi2v19x6j3dadx62hq0xpxra40qcqz9dbnp"; + rev = "v1.1.0"; + sha256 = "1q5q2d5mp1r8c6k5v4755sb3b6awiz85d1j280djzhbd0pggk3z7"; }; dotenv = { owner = "gdotdesign"; @@ -32,14 +32,14 @@ exception_page = { owner = "crystal-loot"; repo = "exception_page"; - rev = "v0.1.2"; - sha256 = "0j5ishhyriq9p339yaawrmawl9wgmp1paniq30a8d6a0568h3avq"; + rev = "v0.1.4"; + sha256 = "0bsp2m89sl0bg9d5szbs1nxyk7yk58rkk24aibr39hhb5zi70pqi"; }; kemal = { owner = "kemalcr"; repo = "kemal"; - rev = "v0.25.1"; - sha256 = "1334i905xj6vlmp8acyybwwlaxsgmf90b59da7brzpnf28wci782"; + rev = "v0.26.1"; + sha256 = "169pwkjmk7x6j8i0rf5rpyk1y0hl7jaf9h6yrq4ha2ag9yq9i8fr"; }; kilt = { owner = "jeromegn"; diff --git a/nixpkgs/pkgs/development/compilers/open-watcom-bin/default.nix b/nixpkgs/pkgs/development/compilers/open-watcom-bin/default.nix new file mode 100644 index 000000000000..a9c6b221065c --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/open-watcom-bin/default.nix @@ -0,0 +1,122 @@ +{ stdenvNoCC, fetchurl, qemu, expect, writeScript, writeScriptBin, ncurses, bash, coreutils }: + +let + + # We execute all OpenWatcom binaries in qemu-user, because otherwise + # some binaries (most notably the installer itself and wlib) fail to + # use the stat() systemcall. The failure mode is that it returns + # EOVERFLOW for completely legitimate requests. This seems like an + # incompatibility of new Linux kernels to run this ancient binary. + wrapLegacyBinary = writeScript "wrapLegacyBinary" '' + #!${bash}/bin/bash + + set -eu + + if [ $# -ne 2 ]; then + echo "Usage: $0 unwrapped-binary wrapped-binary" + exit 1 + fi + + IN="$(${coreutils}/bin/realpath $1)" + OUT="$2" + ARGV0="$(basename $2)" + + cat > "$OUT" <<EOF + #!${bash}/bin/bash + + TERMINFO=${ncurses}/share/terminfo TERM=vt100 exec ${qemu}/bin/qemu-i386 -0 $ARGV0 $IN "\$@" + EOF + + chmod +x "$OUT" + ''; + + wrapInPlace = writeScriptBin "wrapInPlace" '' + #!${bash}/bin/bash + + set -eu + + if [ $# -ne 1 ]; then + echo "Usage: $0 unwrapped-binary" + exit 1 + fi + + TARGET="$1" + + mv "$TARGET" "$TARGET-unwrapped" + chmod +x "$TARGET-unwrapped" + + exec ${wrapLegacyBinary} "$TARGET-unwrapped" "$TARGET" + ''; + + # Do a scripted installation of OpenWatcom with its original installer. + # + # If maintaining this expect script turns out to be too much of a + # hassle, we can switch to just using `unzip' on the installer and + # the correct file permissions manually. + performInstall = writeScriptBin "performInstall" '' + #!${expect}/bin/expect -f + + spawn [lindex $argv 0] + + # Wait for button saying "I agree" with escape sequences. + expect "gree" + + # Navigate to "I Agree!" and hit enter. + send "\t\t\n" + + expect "Install Open Watcom" + + # Where do we want to install to. + send "$env(out)\n" + + expect "will be installed" + + # Select Full Installation, Next + send "fn" + + expect "Setup will now copy" + + # Next + send "n" + + expect "completed successfully" + send "\n" + ''; + +in +stdenvNoCC.mkDerivation rec { + pname = "open-watcom-bin"; + version = "1.9"; + + src = fetchurl { + url = "http://ftp.openwatcom.org/install/open-watcom-c-linux-${version}"; + sha256 = "1wzkvc6ija0cjj5mcyjng5b7hnnc5axidz030c0jh05pgvi4nj7p"; + }; + + nativeBuildInputs = [ wrapInPlace performInstall ]; + + dontUnpack = true; + dontConfigure = true; + + buildPhase = '' + cp ${src} install-bin-unwrapped + wrapInPlace install-bin-unwrapped + ''; + + installPhase = '' + performInstall ./install-bin-unwrapped + + for e in $(find $out/binl -type f -executable); do + echo "Wrapping $e" + wrapInPlace "$e" + done + ''; + + meta = with stdenvNoCC.lib; { + description = "A C/C++ Compiler (binary distribution)"; + homepage = "http://www.openwatcom.org/"; + license = licenses.watcom; + platforms = [ "x86_64-linux" "i686-linux" ]; + maintainers = [ maintainers.blitz ]; + }; +} diff --git a/nixpkgs/pkgs/development/compilers/openjdk/12.nix b/nixpkgs/pkgs/development/compilers/openjdk/12.nix index 29992fdae687..16c2fd766bce 100644 --- a/nixpkgs/pkgs/development/compilers/openjdk/12.nix +++ b/nixpkgs/pkgs/development/compilers/openjdk/12.nix @@ -114,7 +114,7 @@ let # Set JAVA_HOME automatically. mkdir -p $out/nix-support cat <<EOF > $out/nix-support/setup-hook - if [ -z "\$JAVA_HOME" ]; then export JAVA_HOME=$out/lib/openjdk; fi + if [ -z "\''${JAVA_HOME-}" ]; then export JAVA_HOME=$out/lib/openjdk; fi EOF ''; diff --git a/nixpkgs/pkgs/development/compilers/openjdk/13.nix b/nixpkgs/pkgs/development/compilers/openjdk/13.nix new file mode 100644 index 000000000000..b3842ba7cad2 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/openjdk/13.nix @@ -0,0 +1,155 @@ +{ stdenv, lib, fetchurl, bash, pkgconfig, autoconf, cpio, file, which, unzip +, zip, perl, cups, freetype, alsaLib, libjpeg, giflib, libpng, zlib, lcms2 +, libX11, libICE, libXrender, libXext, libXt, libXtst, libXi, libXinerama +, libXcursor, libXrandr, fontconfig, openjdk13-bootstrap +, setJavaClassPath +, headless ? false +, enableJavaFX ? openjfx.meta.available, openjfx +, enableGnome2 ? true, gtk3, gnome_vfs, glib, GConf +}: + +let + major = "13"; + update = ".0.2"; + build = "-ga"; + + openjdk = stdenv.mkDerivation rec { + pname = "openjdk" + lib.optionalString headless "-headless"; + version = "${major}${update}${build}"; + + src = fetchurl { + url = "http://hg.openjdk.java.net/jdk-updates/jdk${major}u/archive/jdk-${version}.tar.gz"; + sha256 = "1871ziss7ny19rw8f7bay5vznmhpqbfi4ihn3yygs06wyxhm0zmv"; + }; + + nativeBuildInputs = [ pkgconfig autoconf ]; + buildInputs = [ + cpio file which unzip zip perl zlib cups freetype alsaLib libjpeg giflib + libpng zlib lcms2 libX11 libICE libXrender libXext libXtst libXt libXtst + libXi libXinerama libXcursor libXrandr fontconfig openjdk13-bootstrap + ] ++ lib.optionals (!headless && enableGnome2) [ + gtk3 gnome_vfs GConf glib + ]; + + patches = [ + ./fix-java-home-jdk10.patch + ./read-truststore-from-env-jdk10.patch + ./currency-date-range-jdk10.patch + ./increase-javadoc-heap-jdk13.patch + # -Wformat etc. are stricter in newer gccs, per + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79677 + # so grab the work-around from + # https://src.fedoraproject.org/rpms/java-openjdk/pull-request/24 + (fetchurl { + url = "https://src.fedoraproject.org/rpms/java-openjdk/raw/06c001c7d87f2e9fe4fedeef2d993bcd5d7afa2a/f/rh1673833-remove_removal_of_wformat_during_test_compilation.patch"; + sha256 = "082lmc30x64x583vqq00c8y0wqih3y4r0mp1c4bqq36l22qv6b6r"; + }) + ] ++ lib.optionals (!headless && enableGnome2) [ + ./swing-use-gtk-jdk13.patch + ]; + + prePatch = '' + chmod +x configure + patchShebangs --build configure + ''; + + configureFlags = [ + "--with-boot-jdk=${openjdk13-bootstrap.home}" + "--enable-unlimited-crypto" + "--with-native-debug-symbols=internal" + "--with-libjpeg=system" + "--with-giflib=system" + "--with-libpng=system" + "--with-zlib=system" + "--with-lcms=system" + "--with-stdc++lib=dynamic" + ] ++ lib.optional stdenv.isx86_64 "--with-jvm-features=zgc" + ++ lib.optional headless "--enable-headless-only" + ++ lib.optional (!headless && enableJavaFX) "--with-import-modules=${openjfx}"; + + separateDebugInfo = true; + + NIX_CFLAGS_COMPILE = "-Wno-error"; + + NIX_LDFLAGS = toString (lib.optionals (!headless) [ + "-lfontconfig" "-lcups" "-lXinerama" "-lXrandr" "-lmagic" + ] ++ lib.optionals (!headless && enableGnome2) [ + "-lgtk-3" "-lgio-2.0" "-lgnomevfs-2" "-lgconf-2" + ]); + + buildFlags = [ "all" ]; + + installPhase = '' + mkdir -p $out/lib + + mv build/*/images/jdk $out/lib/openjdk + + # Remove some broken manpages. + rm -rf $out/lib/openjdk/man/ja* + + # Mirror some stuff in top-level. + mkdir -p $out/share + ln -s $out/lib/openjdk/include $out/include + ln -s $out/lib/openjdk/man $out/share/man + + # jni.h expects jni_md.h to be in the header search path. + ln -s $out/include/linux/*_md.h $out/include/ + + # Remove crap from the installation. + rm -rf $out/lib/openjdk/demo + ${lib.optionalString headless '' + rm $out/lib/openjdk/lib/{libjsound,libfontmanager}.so + ''} + + ln -s $out/lib/openjdk/bin $out/bin + ''; + + preFixup = '' + # Propagate the setJavaClassPath setup hook so that any package + # that depends on the JDK has $CLASSPATH set up properly. + mkdir -p $out/nix-support + #TODO or printWords? cf https://github.com/NixOS/nixpkgs/pull/27427#issuecomment-317293040 + echo -n "${setJavaClassPath}" > $out/nix-support/propagated-build-inputs + + # Set JAVA_HOME automatically. + mkdir -p $out/nix-support + cat <<EOF > $out/nix-support/setup-hook + if [ -z "\''${JAVA_HOME-}" ]; then export JAVA_HOME=$out/lib/openjdk; fi + EOF + ''; + + postFixup = '' + # Build the set of output library directories to rpath against + LIBDIRS="" + for output in $outputs; do + if [ "$output" = debug ]; then continue; fi + LIBDIRS="$(find $(eval echo \$$output) -name \*.so\* -exec dirname {} \+ | sort | uniq | tr '\n' ':'):$LIBDIRS" + done + # Add the local library paths to remove dependencies on the bootstrap + for output in $outputs; do + if [ "$output" = debug ]; then continue; fi + OUTPUTDIR=$(eval echo \$$output) + BINLIBS=$(find $OUTPUTDIR/bin/ -type f; find $OUTPUTDIR -name \*.so\*) + echo "$BINLIBS" | while read i; do + patchelf --set-rpath "$LIBDIRS:$(patchelf --print-rpath "$i")" "$i" || true + patchelf --shrink-rpath "$i" || true + done + done + ''; + + disallowedReferences = [ openjdk13-bootstrap ]; + + meta = with stdenv.lib; { + homepage = "http://openjdk.java.net/"; + license = licenses.gpl2; + description = "The open-source Java Development Kit"; + maintainers = with maintainers; [ edwtjo ]; + platforms = [ "i686-linux" "x86_64-linux" "aarch64-linux" "armv7l-linux" "armv6l-linux" ]; + }; + + passthru = { + architecture = ""; + home = "${openjdk}/lib/openjdk"; + }; + }; +in openjdk diff --git a/nixpkgs/pkgs/development/compilers/openjdk/darwin/default.nix b/nixpkgs/pkgs/development/compilers/openjdk/darwin/default.nix index 775fd3cd3c43..c6498cb45302 100644 --- a/nixpkgs/pkgs/development/compilers/openjdk/darwin/default.nix +++ b/nixpkgs/pkgs/development/compilers/openjdk/darwin/default.nix @@ -7,11 +7,11 @@ let }; jdk = stdenv.mkDerivation rec { - name = "zulu13.29.9-ca-jdk13.0.2"; + name = "zulu14.28.21-ca-jdk14.0.1"; src = fetchurl { url = "https://cdn.azul.com/zulu/bin/${name}-macosx_x64.tar.gz"; - sha256 = "1x8ja3x880a1izrwi7bdrwz1ljdvracjx627slzjd2xk8c4211pf"; + sha256 = "1pc0y3fxhlf42a51qbdha1fabci61yzq70kk5c1rzk0ai78d92q8"; curlOpts = "-H Referer:https://www.azul.com/downloads/zulu/"; }; diff --git a/nixpkgs/pkgs/development/compilers/openjdk/default.nix b/nixpkgs/pkgs/development/compilers/openjdk/default.nix index b3842ba7cad2..063976d8765f 100644 --- a/nixpkgs/pkgs/development/compilers/openjdk/default.nix +++ b/nixpkgs/pkgs/development/compilers/openjdk/default.nix @@ -1,7 +1,7 @@ { stdenv, lib, fetchurl, bash, pkgconfig, autoconf, cpio, file, which, unzip , zip, perl, cups, freetype, alsaLib, libjpeg, giflib, libpng, zlib, lcms2 , libX11, libICE, libXrender, libXext, libXt, libXtst, libXi, libXinerama -, libXcursor, libXrandr, fontconfig, openjdk13-bootstrap +, libXcursor, libXrandr, fontconfig, openjdk14-bootstrap , setJavaClassPath , headless ? false , enableJavaFX ? openjfx.meta.available, openjfx @@ -9,8 +9,8 @@ }: let - major = "13"; - update = ".0.2"; + major = "14"; + update = ".0.1"; build = "-ga"; openjdk = stdenv.mkDerivation rec { @@ -19,14 +19,14 @@ let src = fetchurl { url = "http://hg.openjdk.java.net/jdk-updates/jdk${major}u/archive/jdk-${version}.tar.gz"; - sha256 = "1871ziss7ny19rw8f7bay5vznmhpqbfi4ihn3yygs06wyxhm0zmv"; + sha256 = "0ic7dcrzk62jc65yrshs6xlclmsha7z52bia5s2bkllw1zpmdmip"; }; nativeBuildInputs = [ pkgconfig autoconf ]; buildInputs = [ cpio file which unzip zip perl zlib cups freetype alsaLib libjpeg giflib libpng zlib lcms2 libX11 libICE libXrender libXext libXtst libXt libXtst - libXi libXinerama libXcursor libXrandr fontconfig openjdk13-bootstrap + libXi libXinerama libXcursor libXrandr fontconfig openjdk14-bootstrap ] ++ lib.optionals (!headless && enableGnome2) [ gtk3 gnome_vfs GConf glib ]; @@ -54,7 +54,7 @@ let ''; configureFlags = [ - "--with-boot-jdk=${openjdk13-bootstrap.home}" + "--with-boot-jdk=${openjdk14-bootstrap.home}" "--enable-unlimited-crypto" "--with-native-debug-symbols=internal" "--with-libjpeg=system" @@ -137,7 +137,7 @@ let done ''; - disallowedReferences = [ openjdk13-bootstrap ]; + disallowedReferences = [ openjdk14-bootstrap ]; meta = with stdenv.lib; { homepage = "http://openjdk.java.net/"; diff --git a/nixpkgs/pkgs/development/compilers/openjdk/openjfx/13.nix b/nixpkgs/pkgs/development/compilers/openjdk/openjfx/14.nix index 54267a757b88..12d9448595e3 100644 --- a/nixpkgs/pkgs/development/compilers/openjdk/openjfx/13.nix +++ b/nixpkgs/pkgs/development/compilers/openjdk/openjfx/14.nix @@ -1,22 +1,24 @@ -{ stdenv, lib, fetchurl, writeText, openjdk11_headless, gradleGen +{ stdenv, lib, fetchFromGitHub, writeText, openjdk11_headless, gradleGen , pkgconfig, perl, cmake, gperf, gtk2, gtk3, libXtst, libXxf86vm, glib, alsaLib , ffmpeg, python, ruby }: let - major = "13"; - update = ".0.2"; - build = "1"; - repover = "${major}${update}+${build}"; + major = "14"; + update = ""; + build = "-ga"; + repover = "${major}${update}${build}"; gradle_ = (gradleGen.override { java = openjdk11_headless; - }).gradle_4_10; + }).gradle_5_6; makePackage = args: stdenv.mkDerivation ({ - version = "${major}${update}-${build}"; + version = "${major}${update}${build}"; - src = fetchurl { - url = "https://hg.openjdk.java.net/openjfx/${major}-dev/rt/archive/${repover}.tar.gz"; - sha256 = "1si9wpb9malnf8zzz57l6b80088z2370zfxp1b0kk6rs0cnvpr74"; + src = fetchFromGitHub { + owner = "openjdk"; + repo = "jfx"; + rev = repover; + sha256 = "16aj15xksc266gv3y42m0g277pfvp71901lrngndcnpr7i2zshnr"; }; buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsaLib ffmpeg ]; @@ -75,9 +77,6 @@ in makePackage { COMPILE_WEBKIT = true ''; - #openjdk build fails if licenses are identical, so we must patch this trivial difference - patches = [ ./openjfx-mesa-license.patch ]; - preBuild = '' swtJar="$(find ${deps} -name org.eclipse.swt\*.jar)" substituteInPlace build.gradle \ diff --git a/nixpkgs/pkgs/development/compilers/openjdk/openjfx/openjfx-mesa-license.patch b/nixpkgs/pkgs/development/compilers/openjdk/openjfx/openjfx-mesa-license.patch deleted file mode 100644 index d3bf9e17c22b..000000000000 --- a/nixpkgs/pkgs/development/compilers/openjdk/openjfx/openjfx-mesa-license.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- a/modules/javafx.graphics/src/main/legal/mesa3d.md 1969-12-31 19:00:01.000000000 -0500 -+++ b/modules/javafx.graphics/src/main/legal/mesa3d.md 2019-08-08 01:05:04.000000000 -0400 -@@ -1,7 +1,7 @@ - ## Mesa 3-D Graphics Library v5.0 - - ### Mesa License --``` -+<pre> - - Mesa 3-D graphics library - Version: 5.0 -@@ -25,4 +25,4 @@ - AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - --``` -+</pre> diff --git a/nixpkgs/pkgs/development/compilers/scala/2.13.nix b/nixpkgs/pkgs/development/compilers/scala/2.13.nix index fb6d663f7490..04086321bef1 100644 --- a/nixpkgs/pkgs/development/compilers/scala/2.13.nix +++ b/nixpkgs/pkgs/development/compilers/scala/2.13.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, makeWrapper, jre, gnugrep, coreutils }: stdenv.mkDerivation rec { - name = "scala-2.13.1"; + name = "scala-2.13.2"; src = fetchurl { url = "https://www.scala-lang.org/files/archive/${name}.tgz"; - sha256 = "1nq49acx3j6vnw0lhyrfqa23f671y3kc9lja4nki0j73jk2cq639"; + sha256 = "1gvdxwlhgjmn8i5a8kcp19700rscjq9ylb35p8vj7nqys94zjkap"; }; propagatedBuildInputs = [ jre ] ; diff --git a/nixpkgs/pkgs/development/compilers/scala/dotty-bare.nix b/nixpkgs/pkgs/development/compilers/scala/dotty-bare.nix index 4bfc966bb457..d3f126052f5d 100644 --- a/nixpkgs/pkgs/development/compilers/scala/dotty-bare.nix +++ b/nixpkgs/pkgs/development/compilers/scala/dotty-bare.nix @@ -1,12 +1,12 @@ { stdenv, fetchurl, makeWrapper, jre, ncurses }: stdenv.mkDerivation rec { - version = "0.20.0-RC1"; + version = "0.23.0-RC1"; pname = "dotty-bare"; src = fetchurl { url = "https://github.com/lampepfl/dotty/releases/download/${version}/dotty-${version}.tar.gz"; - sha256 = "08qs3m32cbh6516gcwraa1b5k935awmjxls6kg6xll722hkdd9l6"; + sha256 = "0c64dw2qp8mhgsll8viqaiy34wq1ablkbc4bi813a1r4nqg57sv0"; }; propagatedBuildInputs = [ jre ncurses.dev ] ; diff --git a/nixpkgs/pkgs/development/compilers/unison/default.nix b/nixpkgs/pkgs/development/compilers/unison/default.nix index a8867d314656..c17f85b4936a 100644 --- a/nixpkgs/pkgs/development/compilers/unison/default.nix +++ b/nixpkgs/pkgs/development/compilers/unison/default.nix @@ -4,18 +4,18 @@ stdenv.mkDerivation rec { pname = "unison-code-manager"; - milestone_id = "M1h"; + milestone_id = "M1l"; version = "1.0.${milestone_id}-alpha"; src = if (stdenv.isDarwin) then fetchurl { url = "https://github.com/unisonweb/unison/releases/download/release/${milestone_id}/unison-osx.tar.gz"; - sha256 = "0iivm5gmbk0fq0zr3lvck6p1c2i7i54l3rf70z677529w9irzchp"; + sha256 = "0qbxakrp3p3k3k8a1m2g24ivs3c8j5rj7ij84i7k548505rva9qr"; } else fetchurl { url = "https://github.com/unisonweb/unison/releases/download/release/${milestone_id}/unison-linux64.tar.gz"; - sha256 = "0fb84c1yn8pidflh7kq696j3v4blkvbk1fsqp36h30p7vv676yci"; + sha256 = "152yzv7j4nyp228ngzbhki9fid1xdqrjvl1rwxc05wq30jwwqx0x"; }; # The tarball is just the prebuilt binary, in the archive root. |