diff options
Diffstat (limited to 'nixpkgs/pkgs/development/compilers')
171 files changed, 2783 insertions, 4301 deletions
diff --git a/nixpkgs/pkgs/development/compilers/acme/default.nix b/nixpkgs/pkgs/development/compilers/acme/default.nix index 9aadbd2459bf..3f8110b5b5a4 100644 --- a/nixpkgs/pkgs/development/compilers/acme/default.nix +++ b/nixpkgs/pkgs/development/compilers/acme/default.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation rec { sha256 = "1dzvip90yf1wg0fhfghn96dwrhg289d06b624px9a2wwy3vp5ryg"; }; - sourceRoot = "code-0-r${src.rev}/src"; + sourceRoot = "${src.name}/src"; postPatch = '' substituteInPlace Makefile \ diff --git a/nixpkgs/pkgs/development/compilers/august/default.nix b/nixpkgs/pkgs/development/compilers/august/default.nix new file mode 100644 index 000000000000..4dcb9038f078 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/august/default.nix @@ -0,0 +1,30 @@ +{ lib +, rustPlatform +, fetchFromGitHub +}: + +rustPlatform.buildRustPackage { + pname = "august"; + version = "unstable-2023-08-13"; + + src = fetchFromGitHub { + owner = "yoav-lavi"; + repo = "august"; + rev = "42b8a1bf5ca079aca1769d92315f70b193a9cd4a"; + hash = "sha256-58DZMoRH9PBbM4sok/XbUcwSXBeqUAmFZpffdMKQ+dE="; + }; + + cargoHash = "sha256-/GvBbsSL0dZ0xTystIpb8sk1nNg5hmP4yceCHlh7EQE="; + + postInstall = '' + mv $out/bin/{august-cli,ag} + ''; + + meta = with lib; { + description = "An Emmet-like language that produces JSON, TOML, or YAML"; + homepage = "https://github.com/yoav-lavi/august"; + license = with licenses; [ asl20 mit ]; + maintainers = with maintainers; [ figsoda ]; + mainProgram = "ag"; + }; +} diff --git a/nixpkgs/pkgs/development/compilers/bigloo/default.nix b/nixpkgs/pkgs/development/compilers/bigloo/default.nix index 759a8aaeaa60..9bf22ba6dcf2 100644 --- a/nixpkgs/pkgs/development/compilers/bigloo/default.nix +++ b/nixpkgs/pkgs/development/compilers/bigloo/default.nix @@ -45,8 +45,14 @@ stdenv.mkDerivation rec { checkTarget = "test"; - # Hack to avoid TMPDIR in RPATHs. - preFixup = ''rm -rf "$(pwd)" ''; + # remove forbidden references to $TMPDIR + preFixup = lib.optionalString stdenv.isLinux '' + for f in "$out"/bin/*; do + if isELF "$f"; then + patchelf --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE" "$f" + fi + done + ''; meta = { description = "Efficient Scheme compiler"; diff --git a/nixpkgs/pkgs/development/compilers/circt/default.nix b/nixpkgs/pkgs/development/compilers/circt/default.nix index e53de0e4ee12..19765f97a174 100644 --- a/nixpkgs/pkgs/development/compilers/circt/default.nix +++ b/nixpkgs/pkgs/development/compilers/circt/default.nix @@ -13,12 +13,12 @@ let in stdenv.mkDerivation rec { pname = "circt"; - version = "1.49.0"; + version = "1.51.0"; src = fetchFromGitHub { owner = "llvm"; repo = "circt"; rev = "firtool-${version}"; - sha256 = "sha256-pHMysxnczKilfjJafobU18/gaWnfrHMpPUd6RQ+CXSg="; + sha256 = "sha256-IEMIFbMBLEKgntDiRfVH6qgj9a5RLWQnKrMnl5A3AYQ="; fetchSubmodules = true; }; diff --git a/nixpkgs/pkgs/development/compilers/cudatoolkit/auto-add-opengl-runpath-hook.sh b/nixpkgs/pkgs/development/compilers/cudatoolkit/auto-add-opengl-runpath-hook.sh index 0b0da336514a..395229ca79b7 100644 --- a/nixpkgs/pkgs/development/compilers/cudatoolkit/auto-add-opengl-runpath-hook.sh +++ b/nixpkgs/pkgs/development/compilers/cudatoolkit/auto-add-opengl-runpath-hook.sh @@ -1,14 +1,24 @@ -# Run autoOpenGLRunpath on all files +# shellcheck shell=bash +# Run addOpenGLRunpath on all dynamically linked, ELF files echo "Sourcing auto-add-opengl-runpath-hook" -autoAddOpenGLRunpathPhase () { - # TODO: support multiple outputs - for file in $(find ${out,lib,bin} -type f); do - addOpenGLRunpath $file - done -} +autoAddOpenGLRunpathPhase() ( + local outputPaths + mapfile -t outputPaths < <(for o in $(getAllOutputNames); do echo "${!o}"; done) + find "${outputPaths[@]}" -type f -executable -print0 | while IFS= read -rd "" f; do + if isELF "$f"; then + # patchelf returns an error on statically linked ELF files + if patchelf --print-interpreter "$f" >/dev/null 2>&1; then + echo "autoAddOpenGLRunpathHook: patching $f" + addOpenGLRunpath "$f" + elif [ -n "${DEBUG-}" ]; then + echo "autoAddOpenGLRunpathHook: skipping ELF file $f" + fi + fi + done +) if [ -z "${dontUseAutoAddOpenGLRunpath-}" ]; then - echo "Using autoAddOpenGLRunpathPhase" - postFixupHooks+=(autoAddOpenGLRunpathPhase) + echo "Using autoAddOpenGLRunpathPhase" + postFixupHooks+=(autoAddOpenGLRunpathPhase) fi diff --git a/nixpkgs/pkgs/development/compilers/elm/default.nix b/nixpkgs/pkgs/development/compilers/elm/default.nix index 55b55b931aab..b96bd24deddb 100644 --- a/nixpkgs/pkgs/development/compilers/elm/default.nix +++ b/nixpkgs/pkgs/development/compilers/elm/default.nix @@ -142,14 +142,7 @@ in lib.makeScope pkgs.newScope (self: with self; { elm-test-rs = callPackage ./packages/elm-test-rs.nix { }; - elm-test = nodePkgs.elm-test // { - meta = with lib; nodePkgs.elm-test.meta // { - description = "Runs elm-test suites from Node.js"; - homepage = "https://github.com/rtfeldman/node-test-runner"; - license = licenses.bsd3; - maintainers = [ maintainers.turbomack ]; - }; - }; + elm-test = callPackage ./packages/elm-test.nix { }; } // (hs810Pkgs self).elmPkgs // (hs92Pkgs self).elmPkgs // (with elmLib; with (hs810Pkgs self).elmPkgs; { elm-verify-examples = let patched = patchBinwrap [elmi-to-json] nodePkgs.elm-verify-examples // { diff --git a/nixpkgs/pkgs/development/compilers/elm/packages/elm-test.nix b/nixpkgs/pkgs/development/compilers/elm/packages/elm-test.nix new file mode 100644 index 000000000000..fc943a80a3fa --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/elm/packages/elm-test.nix @@ -0,0 +1,32 @@ +{ lib +, buildNpmPackage +, fetchFromGitHub +}: + +buildNpmPackage rec { + pname = "elm-test"; + version = "0.19.1-revision12"; + + src = fetchFromGitHub { + owner = "rtfeldman"; + repo = "node-test-runner"; + rev = version; + hash = "sha256-cnxAOFcPTJjtHi4VYCO9oltb5iOeDnLvRgnuJnNzjsY="; + }; + + npmDepsHash = "sha256-QljHVrmF6uBem9sW67CYduCro3BqF34EPGn1BtKqom0="; + + postPatch = '' + sed -i '/elm-tooling install/d' package.json + ''; + + dontNpmBuild = true; + + meta = { + changelog = "https://github.com/rtfeldman/node-test-runner/blob/${src.rev}/CHANGELOG.md"; + description = "Runs elm-test suites from Node.js"; + homepage = "https://github.com/rtfeldman/node-test-runner"; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ turbomack ]; + }; +} diff --git a/nixpkgs/pkgs/development/compilers/erg/default.nix b/nixpkgs/pkgs/development/compilers/erg/default.nix index 8706c05febcd..a3ed2397c8eb 100644 --- a/nixpkgs/pkgs/development/compilers/erg/default.nix +++ b/nixpkgs/pkgs/development/compilers/erg/default.nix @@ -9,16 +9,16 @@ rustPlatform.buildRustPackage rec { pname = "erg"; - version = "0.6.17"; + version = "0.6.18"; src = fetchFromGitHub { owner = "erg-lang"; repo = "erg"; rev = "v${version}"; - hash = "sha256-KHfKV0i3jYwzD/PQ0TSOlxjUnc08pk0yKrLQlg5eQvg="; + hash = "sha256-bpKzC7xHP4vfl2WcyMEsFK1aAbkP3dtlpyNvXUWHWKg="; }; - cargoHash = "sha256-PD1C3IsupjyQndD971zbfHYxizOQd/t770u48o/aGmk="; + cargoHash = "sha256-wIp+zQpHLmZNwgbSXQKV45YwO5qpZqdcUE6gnF/Wzhk="; nativeBuildInputs = [ makeWrapper diff --git a/nixpkgs/pkgs/development/compilers/flutter/engine-artifacts/default.nix b/nixpkgs/pkgs/development/compilers/flutter/engine-artifacts/default.nix index 249e9217325b..603b1456018d 100644 --- a/nixpkgs/pkgs/development/compilers/flutter/engine-artifacts/default.nix +++ b/nixpkgs/pkgs/development/compilers/flutter/engine-artifacts/default.nix @@ -6,13 +6,47 @@ , fetchzip , autoPatchelfHook , gtk3 +, flutterVersion , unzip +, stdenvNoCC }: let hashes = (import ./hashes.nix).${engineVersion} or (throw "There are no known artifact hashes for Flutter engine version ${engineVersion}."); + noticeText = stdenvNoCC.mkDerivation (finalAttrs: { + pname = "flutter-notice"; + version = engineVersion; + dontUnpack = true; + src = fetchurl { + pname = "flutter-sky_engine-LICENSE"; + version = engineVersion; + url = "https://raw.githubusercontent.com/flutter/engine/${engineVersion}/sky/packages/sky_engine/LICENSE"; + sha256 = hashes.skyNotice; + }; + flutterNotice = fetchurl { + pname = "flutter-LICENSE"; + version = engineVersion; + url = "https://raw.githubusercontent.com/flutter/flutter/${flutterVersion}/LICENSE"; + sha256 = hashes.flutterNotice; + }; + installPhase = + '' + SRC_TEXT="$(cat $src)" + FLUTTER_NOTICE_TEXT="$(cat $flutterNotice)" + cat << EOF > $out + This artifact is from the Flutter SDK's engine. + This file carries third-party notices for its dependencies. + See also other files, that have LICENSE in the name, in the artifact directory. + + Appendix 1/2: merged sky_engine LICENSE file (also found at ${finalAttrs.src.url}) + $SRC_TEXT + Appendix 2/2: Flutter license (also found at ${finalAttrs.flutterNotice.url}) + $FLUTTER_NOTICE_TEXT + EOF + ''; + }); artifacts = { common = { @@ -165,6 +199,17 @@ let destination = "$out/${if subdirectory == true then archiveBasename else if subdirectory != null then subdirectory else "."}"; in '' + # ship the notice near all artifacts. if the artifact directory is / multiple directories are nested in $src, link it there. If there isn't a directory, link it in root + # this *isn't the same as the subdirectory variable above* + DIR_CNT="$(echo */ | wc -w)" + if [[ "$DIR_CNT" == 0 ]]; then + ln -s ${noticeText} LICENSE.README + else + for dir in */ + do + ln -s ${noticeText} "$dir/LICENSE.README" + done + fi mkdir -p "${destination}" cp -r . "${destination}" ''; diff --git a/nixpkgs/pkgs/development/compilers/flutter/engine-artifacts/hashes.nix b/nixpkgs/pkgs/development/compilers/flutter/engine-artifacts/hashes.nix index fb5134739f76..1c8a5dc4059f 100644 --- a/nixpkgs/pkgs/development/compilers/flutter/engine-artifacts/hashes.nix +++ b/nixpkgs/pkgs/development/compilers/flutter/engine-artifacts/hashes.nix @@ -1,5 +1,7 @@ { "1a65d409c7a1438a34d21b60bf30a6fd5db59314" = { + skyNotice = "sha256-+EitMZAAvJ1mIlfm5ZTfY+pk8tfyu33XM7P8qOdj+J8="; + flutterNotice = "sha256-pZjblLYpD/vhC17PkRBXtqlDNRxyf92p5fKJHWhwCiA="; android-arm = { "artifacts.zip" = "sha256-KDMiI6SQoZHfFV5LJJZ7VOGyEKC4UxzRc777j4BbXgM="; }; @@ -113,6 +115,8 @@ }; }; "45f6e009110df4f34ec2cf99f63cf73b71b7a420" = { + skyNotice = "sha256-n9B26rLlfUqdR6s+2+PNK4H/fN95UE0T7/Vic19W6yo="; + flutterNotice = "sha256-pZjblLYpD/vhC17PkRBXtqlDNRxyf92p5fKJHWhwCiA="; android-arm = { "artifacts.zip" = "sha256-NOpUM+iFSPVzr99Dz0DBdDUQnMC0ad1eZnVhtqu9HnU="; }; diff --git a/nixpkgs/pkgs/development/compilers/flutter/wrapper.nix b/nixpkgs/pkgs/development/compilers/flutter/wrapper.nix index 5685ddebd781..a650b1853fd4 100644 --- a/nixpkgs/pkgs/development/compilers/flutter/wrapper.nix +++ b/nixpkgs/pkgs/development/compilers/flutter/wrapper.nix @@ -56,7 +56,10 @@ }: let - engineArtifacts = callPackage ./engine-artifacts { inherit (flutter) engineVersion; }; + engineArtifacts = callPackage ./engine-artifacts { + inherit (flutter) engineVersion; + flutterVersion = flutter.version; + }; mkCommonArtifactLinkCommand = { artifact }: '' mkdir -p $out/artifacts/engine/common diff --git a/nixpkgs/pkgs/development/compilers/fstar/default.nix b/nixpkgs/pkgs/development/compilers/fstar/default.nix index a21aa31ef407..ee45e1e9ab1e 100644 --- a/nixpkgs/pkgs/development/compilers/fstar/default.nix +++ b/nixpkgs/pkgs/development/compilers/fstar/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "fstar"; - version = "2023.02.01"; + version = "2023.04.25"; src = fetchFromGitHub { owner = "FStarLang"; repo = "FStar"; rev = "v${version}"; - hash = "sha256-sLhbIGF7j1tH8zKsPq1qOSwHvYDrVCyfln9UbE3IYv0="; + hash = "sha256-LF8eXi/es337QJ2fs5u9pLqegJkh1kDLjK8p4CcSGGc="; }; strictDeps = true; @@ -20,6 +20,7 @@ stdenv.mkDerivation rec { removeReferencesTo ] ++ (with ocamlPackages; [ ocaml + dune_3 findlib ocamlbuild menhir @@ -45,8 +46,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; postPatch = '' - patchShebangs ulib/gen_mllib.sh - substituteInPlace src/ocaml-output/Makefile --replace '$(COMMIT)' 'v${version}' + patchShebangs ulib/install-ulib.sh ''; preInstall = '' diff --git a/nixpkgs/pkgs/development/compilers/gambit/build.nix b/nixpkgs/pkgs/development/compilers/gambit/build.nix index 9481078fd941..33391c156969 100644 --- a/nixpkgs/pkgs/development/compilers/gambit/build.nix +++ b/nixpkgs/pkgs/development/compilers/gambit/build.nix @@ -1,6 +1,11 @@ -{ gccStdenv, lib, git, openssl, autoconf, pkgs, makeStaticLibraries, gcc, coreutils, gnused, gnugrep, - src, version, git-version, stampYmd ? 0, stampHms ? 0, - gambit-support, optimizationSetting ? "-O1", gambit-params ? pkgs.gambit-support.stable-params }: +{ gccStdenv, lib, pkgs, + git, openssl, autoconf, gcc, coreutils, gnused, gnugrep, + makeStaticLibraries, + src, version, git-version, + stampYmd ? 0, stampHms ? 0, + gambit-support, + optimizationSetting ? "-O1", + gambit-params ? pkgs.gambit-support.stable-params }: # Note that according to a benchmark run by Marc Feeley on May 2018, # clang is 10x (with default settings) to 15% (with -O2) slower than GCC at compiling @@ -45,6 +50,7 @@ gccStdenv.mkDerivation rec { "--enable-shared" "--enable-absolute-shared-libs" # Yes, NixOS will want an absolute path, and fix it. "--enable-openssl" + "--enable-dynamic-clib" #"--enable-default-compile-options='(compactness 9)'" # Make life easier on the JS backend "--enable-default-runtime-options=${gambit-params.defaultRuntimeOptions}" # "--enable-rtlib-debug" # used by Geiser, but only on recent-enough gambit, and messes js runtime @@ -62,6 +68,7 @@ gccStdenv.mkDerivation rec { # "--enable-coverage" # "--enable-inline-jumps" # "--enable-char-size=1" # default is 4 + # "--enable-march=native" # Nope, makes it not work on machines older than the builder ] ++ gambit-params.extraOptions # Do not enable poll on darwin due to https://github.com/gambit/gambit/issues/498 ++ lib.optional (!gccStdenv.isDarwin) "--enable-poll"; diff --git a/nixpkgs/pkgs/development/compilers/gambit/gambit-support.nix b/nixpkgs/pkgs/development/compilers/gambit/gambit-support.nix index f78c99a50700..6e42b9252f24 100644 --- a/nixpkgs/pkgs/development/compilers/gambit/gambit-support.nix +++ b/nixpkgs/pkgs/development/compilers/gambit/gambit-support.nix @@ -16,12 +16,13 @@ rec { --replace "echo > stamp.h;" "(echo '#define ___STAMP_VERSION \"${git-version}\"'; echo '#define ___STAMP_YMD ${toString stampYmd}'; echo '#define ___STAMP_HMS ${toString stampHms}';) > stamp.h;"; ''; modules = true; - extraOptions = []; + #extraOptions = []; + extraOptions = ["--enable-trust-c-tco" "CFLAGS=-foptimize-sibling-calls"]; }; unstable-params = stable-params // { stable = false; - extraOptions = ["--enable-trust-c-tco"]; + extraOptions = ["--enable-trust-c-tco"]; # "CFLAGS=-foptimize-sibling-calls" not necessary in latest unstable }; export-gambopt = params : "export GAMBOPT=${params.buildRuntimeOptions} ;"; diff --git a/nixpkgs/pkgs/development/compilers/gambit/unstable.nix b/nixpkgs/pkgs/development/compilers/gambit/unstable.nix index 26761d67d35d..092cbdb72483 100644 --- a/nixpkgs/pkgs/development/compilers/gambit/unstable.nix +++ b/nixpkgs/pkgs/development/compilers/gambit/unstable.nix @@ -1,15 +1,15 @@ { callPackage, fetchFromGitHub, gambit-support }: callPackage ./build.nix { - version = "unstable-2023-07-30"; - git-version = "4.9.5-3-ge059fffd"; - stampYmd = 20230730; - stampHms = 151945; + version = "unstable-2023-08-06"; + git-version = "4.9.5-5-gf1fbe9aa"; + stampYmd = 20230806; + stampHms = 195822; src = fetchFromGitHub { owner = "gambit"; repo = "gambit"; - rev = "e059fffdfbd91e27c350ff2ebd671adefadd5212"; - sha256 = "0q7hdfchl6lw53xawmmjvhyjdmqxjdsnzjqv9vpkl2qa4vyir5fs"; + rev = "f1fbe9aa0f461e89f2a91bc050c1373ee6d66482"; + sha256 = "0b0gd6cwj8zxwcqglpsnmanysiq4mvma2mrgdfr6qy99avhbhzxm"; }; gambit-params = gambit-support.unstable-params; } diff --git a/nixpkgs/pkgs/development/compilers/gcc/10/default.nix b/nixpkgs/pkgs/development/compilers/gcc/10/default.nix deleted file mode 100644 index c61093c67c03..000000000000 --- a/nixpkgs/pkgs/development/compilers/gcc/10/default.nix +++ /dev/null @@ -1,299 +0,0 @@ -{ lib, stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs -, langC ? true, langCC ? true, langFortran ? false -, langAda ? false -, langObjC ? stdenv.targetPlatform.isDarwin -, langObjCpp ? stdenv.targetPlatform.isDarwin -, langD ? false -, langGo ? false -, reproducibleBuild ? true -, profiledCompiler ? false -, langJit ? false -, staticCompiler ? false -, enableShared ? stdenv.targetPlatform.hasSharedLibraries -, enableLTO ? stdenv.hostPlatform.hasSharedLibraries -, texinfo ? null -, perl ? null # optional, for texi2pod (then pod2man) -, gmp, mpfr, libmpc, gettext, which, patchelf, binutils -, isl ? null # optional, for the Graphite optimization framework. -, zlib ? null -, gnat-bootstrap ? null -, enableMultilib ? false -, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins -, name ? "gcc" -, libcCross ? null -, threadsCross ? null # for MinGW -, withoutTargetLibc ? false -, gnused ? null -, cloog ? null # unused; just for compat with gcc4, as we override the parameter on some places -, buildPackages -, libxcrypt -, callPackage -}: - -# Make sure we get GNU sed. -assert stdenv.buildPlatform.isDarwin -> gnused != null; - -# The go frontend is written in c++ -assert langGo -> langCC; -assert langAda -> gnat-bootstrap != null; - -# threadsCross is just for MinGW -assert threadsCross != {} -> stdenv.targetPlatform.isWindows; - -# profiledCompiler builds inject non-determinism in one of the compilation stages. -# If turned on, we can't provide reproducible builds anymore -assert reproducibleBuild -> profiledCompiler == false; - -with lib; -with builtins; - -let majorVersion = "10"; - version = "${majorVersion}.4.0"; - - inherit (stdenv) buildPlatform hostPlatform targetPlatform; - - patches = [ - # Fix https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80431 - ../fix-bug-80431.patch - ../11/fix-struct-redefinition-on-glibc-2.36.patch - ] ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch - ++ optional noSysDirs ../no-sys-dirs.patch - ++ optional (noSysDirs && hostPlatform.isRiscV) ../no-sys-dirs-riscv.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 langD ../libphobos.patch - ++ optional langFortran ../gfortran-driving.patch - ++ optional (targetPlatform.libc == "musl" && targetPlatform.isPower) ../ppc-musl.patch - - # Obtain latest patch with ../update-mcfgthread-patches.sh - ++ optional (!withoutTargetLibc && targetPlatform.isMinGW && threadsCross.model == "mcf") ./Added-mcf-thread-model-support-from-mcfgthread.patch - - ++ optional (buildPlatform.system == "aarch64-darwin" && targetPlatform != buildPlatform) (fetchpatch { - url = "https://raw.githubusercontent.com/richard-vd/musl-cross-make/5e9e87f06fc3220e102c29d3413fbbffa456fcd6/patches/gcc-${version}/0008-darwin-aarch64-self-host-driver.patch"; - sha256 = "sha256-XtykrPd5h/tsnjY1wGjzSOJ+AyyNLsfnjuOZ5Ryq9vA="; - }); - - /* Cross-gcc settings (build == host != target) */ - crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt"; - stageNameAddon = if withoutTargetLibc then "stage-static" else "stage-final"; - crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-"; - - callFile = lib.callPackageWith { - # lets - inherit - majorVersion - version - buildPlatform - hostPlatform - targetPlatform - patches - crossMingw - stageNameAddon - crossNameAddon - ; - # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc10.cc.override)" | jq '.[]' --raw-output' - inherit - binutils - buildPackages - cloog - withoutTargetLibc - enableLTO - enableMultilib - enablePlugin - enableShared - fetchpatch - fetchurl - gettext - gmp - gnat-bootstrap - gnused - isl - langAda - langC - langCC - langD - langFortran - langGo - langJit - langObjC - langObjCpp - lib - libcCross - libmpc - libxcrypt - mpfr - name - noSysDirs - patchelf - perl - profiledCompiler - reproducibleBuild - staticCompiler - stdenv - targetPackages - texinfo - threadsCross - which - zip - zlib - ; - }; - -in - -lib.pipe (stdenv.mkDerivation ({ - pname = "${crossNameAddon}${name}"; - inherit version; - - builder = ../builder.sh; - - src = fetchurl { - url = "mirror://gcc/releases/gcc-${version}/gcc-${version}.tar.xz"; - sha256 = "1wg4xdizkksmwi66mvv2v4pk3ja8x64m7v9gzhykzd3wrmdpsaf9"; - }; - - inherit patches; - - outputs = [ "out" "man" "info" ] ++ lib.optional (!langJit) "lib"; - setOutputFlags = false; - NIX_NO_SELF_RPATH = true; - - libc_dev = stdenv.cc.libc_dev; - - hardeningDisable = [ "format" "pie" ]; - - postPatch = '' - configureScripts=$(find . -name configure) - for configureScript in $configureScripts; do - patchShebangs $configureScript - done - '' - # This should kill all the stdinc frameworks that gcc and friends like to - # insert into default search paths. - + 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 ''${!outputLib}/lib/\$(SHLIB_INSTALL_NAME)" - - substituteInPlace libgfortran/configure \ - --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname" - '' - + ( - lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null) - # 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 - '' - + lib.optionalString (targetPlatform.libc == "musl") - '' - sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR' - '' - )) - ) - + lib.optionalString targetPlatform.isAvr '' - makeFlagsArray+=( - '-s' # workaround for hitting hydra log limit - 'LIMITS_H_TEST=false' - ) - ''; - - inherit noSysDirs staticCompiler withoutTargetLibc - libcCross crossMingw; - - inherit (callFile ../common/dependencies.nix { }) - depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget; - - NIX_LDFLAGS = lib.optionalString hostPlatform.isSunOS "-lm"; - - preConfigure = (callFile ../common/pre-configure.nix { }) + '' - ln -sf ${libxcrypt}/include/crypt.h libsanitizer/sanitizer_common/crypt.h - ''; - - dontDisableStatic = true; - - configurePlatforms = [ "build" "host" "target" ]; - - configureFlags = callFile ../common/configure-flags.nix { }; - - targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null; - - buildFlags = optional - (targetPlatform == hostPlatform && hostPlatform == buildPlatform) - (if profiledCompiler then "profiledbootstrap" else "bootstrap"); - - # https://gcc.gnu.org/PR109898 - enableParallelInstalling = false; - - inherit (callFile ../common/strip-attributes.nix { }) - stripDebugList - stripDebugListTarget - preFixup; - - # 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 (callFile ../common/extra-target-flags.nix { }) - EXTRA_FLAGS_FOR_TARGET - EXTRA_LDFLAGS_FOR_TARGET - ; - - passthru = { - inherit langC langCC langObjC langObjCpp langAda langFortran langGo langD version; - isGNU = true; - hardeningUnsupportedFlags = [ "fortify3" ]; - }; - - enableParallelBuilding = true; - inherit enableMultilib enableShared; - - meta = { - inherit (callFile ../common/meta.nix { }) - homepage - license - description - longDescription - platforms - maintainers - ; - badPlatforms = [ "aarch64-darwin" ]; - }; - -} - -// optionalAttrs (enableMultilib) { dontMoveLib64 = true; } -)) -[ - (callPackage ../common/libgcc.nix { inherit version langC langCC langJit targetPlatform hostPlatform withoutTargetLibc enableShared; }) -] diff --git a/nixpkgs/pkgs/development/compilers/gcc/11/default.nix b/nixpkgs/pkgs/development/compilers/gcc/11/default.nix deleted file mode 100644 index 92abdebe49b3..000000000000 --- a/nixpkgs/pkgs/development/compilers/gcc/11/default.nix +++ /dev/null @@ -1,313 +0,0 @@ -{ lib, stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs -, langC ? true, langCC ? true, langFortran ? false -, langAda ? false -, langObjC ? stdenv.targetPlatform.isDarwin -, langObjCpp ? stdenv.targetPlatform.isDarwin -, langD ? false -, langGo ? false -, reproducibleBuild ? true -, profiledCompiler ? false -, langJit ? false -, staticCompiler ? false -, enableShared ? stdenv.targetPlatform.hasSharedLibraries -, enableLTO ? stdenv.hostPlatform.hasSharedLibraries -, texinfo ? null -, perl ? null # optional, for texi2pod (then pod2man) -, gmp, mpfr, libmpc, gettext, which, patchelf, binutils -, isl ? null # optional, for the Graphite optimization framework. -, zlib ? null -, gnat-bootstrap ? null -, enableMultilib ? false -, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins -, name ? "gcc" -, libcCross ? null -, threadsCross ? null # for MinGW -, withoutTargetLibc ? false -, gnused ? null -, cloog # unused; just for compat with gcc4, as we override the parameter on some places -, buildPackages -, libxcrypt -, disableGdbPlugin ? !enablePlugin -, nukeReferences -, callPackage -}: - -# Make sure we get GNU sed. -assert stdenv.buildPlatform.isDarwin -> gnused != null; - -# The go frontend is written in c++ -assert langGo -> langCC; -assert langAda -> gnat-bootstrap != null; - -# threadsCross is just for MinGW -assert threadsCross != {} -> stdenv.targetPlatform.isWindows; - -# profiledCompiler builds inject non-determinism in one of the compilation stages. -# If turned on, we can't provide reproducible builds anymore -assert reproducibleBuild -> profiledCompiler == false; - -with lib; -with builtins; - -let majorVersion = "11"; - version = "${majorVersion}.4.0"; - disableBootstrap = !stdenv.hostPlatform.isDarwin; - - inherit (stdenv) buildPlatform hostPlatform targetPlatform; - - patches = [ - # Fix https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80431 - ../fix-bug-80431.patch - ] ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch - ++ optional noSysDirs ../no-sys-dirs.patch - ++ optional (noSysDirs && hostPlatform.isRiscV) ../no-sys-dirs-riscv.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-11.patch - ++ optional langD ../libphobos.patch - ++ optional langFortran ../gfortran-driving.patch - ++ optional (targetPlatform.libc == "musl" && targetPlatform.isPower) ../ppc-musl.patch - - ++ optionals stdenv.isDarwin [ - (fetchpatch { - # There are no upstream release tags in https://github.com/iains/gcc-11-branch. - # ff4bf32 is the commit from https://github.com/gcc-mirror/gcc/releases/tag/releases%2Fgcc-11.4.0 - url = "https://github.com/iains/gcc-11-branch/compare/ff4bf326d03e750a8d4905ea49425fe7d15a04b8..gcc-11.4-darwin-r0.diff"; - hash = "sha256-6prPgR2eGVJs7vKd6iM1eZsEPCD1ShzLns2Z+29vlt4="; - }) - ] - # https://github.com/osx-cross/homebrew-avr/issues/280#issuecomment-1272381808 - ++ optional (stdenv.isDarwin && targetPlatform.isAvr) ./avr-gcc-11.3-darwin.patch - - # Obtain latest patch with ../update-mcfgthread-patches.sh - ++ optional (!withoutTargetLibc && targetPlatform.isMinGW && threadsCross.model == "mcf") ./Added-mcf-thread-model-support-from-mcfgthread.patch - - # openjdk build fails without this on -march=opteron; is upstream in gcc12 - ++ [ ./gcc-issue-103910.patch ]; - - /* Cross-gcc settings (build == host != target) */ - crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt"; - stageNameAddon = if withoutTargetLibc then "stage-static" else "stage-final"; - crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-"; - - callFile = lib.callPackageWith { - # lets - inherit - majorVersion - version - buildPlatform - hostPlatform - targetPlatform - patches - crossMingw - stageNameAddon - crossNameAddon - ; - # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc11.cc.override)" | jq '.[]' --raw-output' - inherit - binutils - buildPackages - cloog - withoutTargetLibc - enableLTO - enableMultilib - enablePlugin - disableGdbPlugin - enableShared - disableBootstrap - fetchpatch - fetchurl - gettext - gmp - gnat-bootstrap - gnused - isl - langAda - langC - langCC - langD - langFortran - langGo - langJit - langObjC - langObjCpp - lib - libcCross - libmpc - libxcrypt - mpfr - name - noSysDirs - patchelf - perl - profiledCompiler - reproducibleBuild - staticCompiler - stdenv - targetPackages - texinfo - threadsCross - which - zip - zlib - ; - }; - -in - -lib.pipe (stdenv.mkDerivation ({ - pname = "${crossNameAddon}${name}"; - inherit version; - - builder = ../builder.sh; - - src = fetchurl { - url = "mirror://gcc/releases/gcc-${version}/gcc-${version}.tar.xz"; - hash = "sha256-Py2yIrAH6KSiPNW6VnJu8I6LHx6yBV7nLBQCzqc6jdk="; - }; - - inherit patches; - - outputs = [ "out" "man" "info" ] ++ lib.optional (!langJit) "lib"; - setOutputFlags = false; - NIX_NO_SELF_RPATH = true; - - libc_dev = stdenv.cc.libc_dev; - - hardeningDisable = [ "format" "pie" ] - ++ optional langAda "fortify3"; - - postPatch = '' - configureScripts=$(find . -name configure) - for configureScript in $configureScripts; do - patchShebangs $configureScript - done - '' - # This should kill all the stdinc frameworks that gcc and friends like to - # insert into default search paths. - + 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 ''${!outputLib}/lib/\$(SHLIB_INSTALL_NAME)" - - substituteInPlace libgfortran/configure \ - --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname" - '' - + ( - lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null) - # 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 - '' - + lib.optionalString (targetPlatform.libc == "musl") - '' - sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR' - '' - )) - ) - + lib.optionalString targetPlatform.isAvr '' - makeFlagsArray+=( - '-s' # workaround for hitting hydra log limit - 'LIMITS_H_TEST=false' - ) - ''; - - inherit noSysDirs staticCompiler withoutTargetLibc - libcCross crossMingw; - - inherit (callFile ../common/dependencies.nix { }) - depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget; - - NIX_LDFLAGS = lib.optionalString hostPlatform.isSunOS "-lm"; - - preConfigure = (callFile ../common/pre-configure.nix { }) + '' - ln -sf ${libxcrypt}/include/crypt.h libsanitizer/sanitizer_common/crypt.h - ''; - - dontDisableStatic = true; - - configurePlatforms = [ "build" "host" "target" ]; - - configureFlags = callFile ../common/configure-flags.nix { }; - - targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null; - - buildFlags = - let target = lib.optionalString (profiledCompiler) "profiled" - + lib.optionalString (targetPlatform == hostPlatform && hostPlatform == buildPlatform && !disableBootstrap) "bootstrap"; - in lib.optional (target != "") target; - - # https://gcc.gnu.org/PR109898 - enableParallelInstalling = false; - - inherit (callFile ../common/strip-attributes.nix { }) - stripDebugList - stripDebugListTarget - preFixup; - - # 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 (callFile ../common/extra-target-flags.nix { }) - EXTRA_FLAGS_FOR_TARGET - EXTRA_LDFLAGS_FOR_TARGET - ; - - passthru = { - inherit langC langCC langObjC langObjCpp langAda langFortran langGo langD version; - isGNU = true; - hardeningUnsupportedFlags = [ "fortify3" ]; - }; - - enableParallelBuilding = true; - inherit enableShared enableMultilib; - - meta = { - inherit (callFile ../common/meta.nix { }) - homepage - license - description - longDescription - platforms - maintainers - ; - }; -} - -// optionalAttrs (enableMultilib) { dontMoveLib64 = true; } -)) -[ - (callPackage ../common/libgcc.nix { inherit version langC langCC langJit targetPlatform hostPlatform withoutTargetLibc enableShared; }) - (callPackage ../common/checksum.nix { inherit langC langCC; }) -] diff --git a/nixpkgs/pkgs/development/compilers/gcc/11/fix-struct-redefinition-on-glibc-2.36.patch b/nixpkgs/pkgs/development/compilers/gcc/11/fix-struct-redefinition-on-glibc-2.36.patch deleted file mode 100644 index 3f5f64a3d074..000000000000 --- a/nixpkgs/pkgs/development/compilers/gcc/11/fix-struct-redefinition-on-glibc-2.36.patch +++ /dev/null @@ -1,41 +0,0 @@ -From d2356ebb0084a0d80dbfe33040c9afe938c15d19 Mon Sep 17 00:00:00 2001 -From: Martin Liska <mliska@suse.cz> -Date: Mon, 11 Jul 2022 22:03:14 +0200 -Subject: [PATCH] libsanitizer: cherry-pick 9cf13067cb5088626ba7 from upstream - -9cf13067cb5088626ba7ee1ec4c42ec59c7995a0 [sanitizer] Remove #include <linux/fs.h> to resolve fsconfig_command/mount_attr conflict with glibc 2.36 - -(cherry picked from commit 2701442d0cf6292f6624443c15813d6d1a3562fe) ---- - .../sanitizer_platform_limits_posix.cpp | 10 ++++++---- - 1 file changed, 6 insertions(+), 4 deletions(-) - -diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp -index 025e575b5bc7..5743516c0460 100644 ---- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp -+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp -@@ -72,7 +72,9 @@ - #include <sys/vt.h> - #include <linux/cdrom.h> - #include <linux/fd.h> -+#if SANITIZER_ANDROID - #include <linux/fs.h> -+#endif - #include <linux/hdreg.h> - #include <linux/input.h> - #include <linux/ioctl.h> -@@ -828,10 +830,10 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr); - unsigned IOCTL_EVIOCGPROP = IOCTL_NOT_PRESENT; - unsigned IOCTL_EVIOCSKEYCODE_V2 = IOCTL_NOT_PRESENT; - #endif -- unsigned IOCTL_FS_IOC_GETFLAGS = FS_IOC_GETFLAGS; -- unsigned IOCTL_FS_IOC_GETVERSION = FS_IOC_GETVERSION; -- unsigned IOCTL_FS_IOC_SETFLAGS = FS_IOC_SETFLAGS; -- unsigned IOCTL_FS_IOC_SETVERSION = FS_IOC_SETVERSION; -+ unsigned IOCTL_FS_IOC_GETFLAGS = _IOR('f', 1, long); -+ unsigned IOCTL_FS_IOC_GETVERSION = _IOR('v', 1, long); -+ unsigned IOCTL_FS_IOC_SETFLAGS = _IOW('f', 2, long); -+ unsigned IOCTL_FS_IOC_SETVERSION = _IOW('v', 2, long); - unsigned IOCTL_GIO_CMAP = GIO_CMAP; - unsigned IOCTL_GIO_FONT = GIO_FONT; - unsigned IOCTL_GIO_UNIMAP = GIO_UNIMAP; diff --git a/nixpkgs/pkgs/development/compilers/gcc/12/default.nix b/nixpkgs/pkgs/development/compilers/gcc/12/default.nix deleted file mode 100644 index 9665c2a9fe85..000000000000 --- a/nixpkgs/pkgs/development/compilers/gcc/12/default.nix +++ /dev/null @@ -1,359 +0,0 @@ -{ lib, stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs -, langC ? true, langCC ? true, langFortran ? false -, langAda ? false -, langObjC ? stdenv.targetPlatform.isDarwin -, langObjCpp ? stdenv.targetPlatform.isDarwin -, langD ? false -, langGo ? false -, reproducibleBuild ? true -, profiledCompiler ? false -, langJit ? false -, staticCompiler ? false -, enableShared ? stdenv.targetPlatform.hasSharedLibraries -, enableLTO ? stdenv.hostPlatform.hasSharedLibraries -, texinfo ? null -, perl ? null # optional, for texi2pod (then pod2man) -, gmp, mpfr, libmpc, gettext, which, patchelf, binutils -, isl ? null # optional, for the Graphite optimization framework. -, zlib ? null -, libucontext ? null -, gnat-bootstrap ? null -, enableMultilib ? false -, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins -, name ? "gcc" -, libcCross ? null -, threadsCross ? null # for MinGW -, withoutTargetLibc ? false -, gnused ? null -, cloog # unused; just for compat with gcc4, as we override the parameter on some places -, buildPackages -, libxcrypt -, disableGdbPlugin ? !enablePlugin -, nukeReferences -, callPackage -}: - -# Make sure we get GNU sed. -assert stdenv.buildPlatform.isDarwin -> gnused != null; - -# The go frontend is written in c++ -assert langGo -> langCC; -assert langAda -> gnat-bootstrap != null; - -# TODO: fixup D bootstapping, probably by using gdc11 (and maybe other changes). -# error: GDC is required to build d -assert !langD; - -# threadsCross is just for MinGW -assert threadsCross != {} -> stdenv.targetPlatform.isWindows; - -# profiledCompiler builds inject non-determinism in one of the compilation stages. -# If turned on, we can't provide reproducible builds anymore -assert reproducibleBuild -> profiledCompiler == false; - -with lib; -with builtins; - -let majorVersion = "12"; - version = "${majorVersion}.3.0"; - disableBootstrap = !stdenv.hostPlatform.isDarwin && !profiledCompiler; - - inherit (stdenv) buildPlatform hostPlatform targetPlatform; - - patches = - optional (targetPlatform != hostPlatform) ../libstdc++-target.patch - ++ optional noSysDirs ../gcc-12-no-sys-dirs.patch - ++ optional noSysDirs ../no-sys-dirs-riscv.patch - ++ [ - ../gnat-cflags-11.patch - ../gcc-12-gfortran-driving.patch - ../ppc-musl.patch - - # backport ICE fix on ccache code - ./lambda-ICE-PR109241.patch - ] - # We only apply this patch when building a native toolchain for aarch64-darwin, as it breaks building - # a foreign one: https://github.com/iains/gcc-12-branch/issues/18 - ++ optionals (stdenv.isDarwin && stdenv.isAarch64 && buildPlatform == hostPlatform && hostPlatform == targetPlatform) [ - (fetchurl { - name = "gcc-12-darwin-aarch64-support.patch"; - url = "https://raw.githubusercontent.com/Homebrew/formula-patches/f1188b90d610e2ed170b22512ff7435ba5c891e2/gcc/gcc-12.3.0.diff"; - sha256 = "sha256-naL5ZNiurqfDBiPSU8PTbTmLqj25B+vjjiqc4fAFgYs="; - }) - ] ++ optional langD ../libphobos.patch - - # backport fixes to build gccgo with musl libc - ++ optionals (langGo && stdenv.hostPlatform.isMusl) [ - (fetchpatch { - excludes = [ "gcc/go/gofrontend/MERGE" ]; - url = "https://github.com/gcc-mirror/gcc/commit/cf79b1117bd177d3d4c6ed24b6fa243c3628ac2d.diff"; - hash = "sha256-mS5ZiYi5D8CpGXrWg3tXlbhp4o86ew1imCTwaHLfl+I="; - }) - (fetchpatch { - excludes = [ "gcc/go/gofrontend/MERGE" ]; - url = "https://github.com/gcc-mirror/gcc/commit/7f195a2270910a6ed08bd76e3a16b0a6503f9faf.diff"; - hash = "sha256-Ze/cFM0dQofKH00PWPDoklXUlwWhwA1nyTuiDAZ6FKo="; - }) - (fetchpatch { - excludes = [ "gcc/go/gofrontend/MERGE" ]; - url = "https://github.com/gcc-mirror/gcc/commit/762fd5e5547e464e25b4bee435db6df4eda0de90.diff"; - hash = "sha256-o28upwTcHAnHG2Iq0OewzwSBEhHs+XpBGdIfZdT81pk="; - }) - (fetchpatch { - excludes = [ "gcc/go/gofrontend/MERGE" ]; - url = "https://github.com/gcc-mirror/gcc/commit/e73d9fcafbd07bc3714fbaf8a82db71d50015c92.diff"; - hash = "sha256-1SjYCVHLEUihdON2TOC3Z2ufM+jf2vH0LvYtZL+c1Fo="; - }) - (fetchpatch { - excludes = [ "gcc/go/gofrontend/MERGE" ]; - url = "https://github.com/gcc-mirror/gcc/commit/b6c6a3d64f2e4e9347733290aca3c75898c44b2e.diff"; - hash = "sha256-RycJ3YCHd3MXtYFjxP0zY2Wuw7/C4bWoBAQtTKJZPOQ="; - }) - (fetchpatch { - excludes = [ "gcc/go/gofrontend/MERGE" ]; - url = "https://github.com/gcc-mirror/gcc/commit/2b1a604a9b28fbf4f382060bebd04adb83acc2f9.diff"; - hash = "sha256-WiBQG0Xbk75rHk+AMDvsbrm+dc7lDH0EONJXSdEeMGE="; - }) - (fetchpatch { - url = "https://github.com/gcc-mirror/gcc/commit/c86b726c048eddc1be320c0bf64a897658bee13d.diff"; - hash = "sha256-QSIlqDB6JRQhbj/c3ejlmbfWz9l9FurdSWxpwDebnlI="; - }) - ] - - # Fix detection of bootstrap compiler Ada support (cctools as) on Nix Darwin - ++ optional (stdenv.isDarwin && langAda) ../ada-cctools-as-detection-configure.patch - - # Use absolute path in GNAT dylib install names on Darwin - ++ optional (stdenv.isDarwin && langAda) ../gnat-darwin-dylib-install-name.patch - - # Obtain latest patch with ../update-mcfgthread-patches.sh - ++ optional (!withoutTargetLibc && targetPlatform.isMinGW && threadsCross.model == "mcf") ./Added-mcf-thread-model-support-from-mcfgthread.patch; - - /* Cross-gcc settings (build == host != target) */ - crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt"; - stageNameAddon = if withoutTargetLibc then "stage-static" else "stage-final"; - crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-"; - - callFile = lib.callPackageWith { - # lets - inherit - majorVersion - version - buildPlatform - hostPlatform - targetPlatform - patches - crossMingw - stageNameAddon - crossNameAddon - ; - # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc12.cc.override)" | jq '.[]' --raw-output' - inherit - binutils - buildPackages - cloog - withoutTargetLibc - disableBootstrap - disableGdbPlugin - enableLTO - enableMultilib - enablePlugin - enableShared - fetchpatch - fetchurl - gettext - gmp - gnat-bootstrap - gnused - isl - langAda - langC - langCC - langD - langFortran - langGo - langJit - langObjC - langObjCpp - lib - libcCross - libmpc - libucontext - libxcrypt - mpfr - name - noSysDirs - nukeReferences - patchelf - perl - profiledCompiler - reproducibleBuild - staticCompiler - stdenv - targetPackages - texinfo - threadsCross - which - zip - zlib - ; - }; - -in - -lib.pipe (stdenv.mkDerivation ({ - pname = "${crossNameAddon}${name}"; - inherit version; - - builder = ../builder.sh; - - src = fetchurl { - url = "mirror://gcc/releases/gcc-${version}/gcc-${version}.tar.xz"; - sha256 = "sha256-lJpdT5nnhkIak7Uysi/6tVeN5zITaZdbka7Jet/ajDs="; - }; - - inherit patches; - - outputs = [ "out" "man" "info" ] ++ lib.optional (!langJit) "lib"; - setOutputFlags = false; - NIX_NO_SELF_RPATH = true; - - libc_dev = stdenv.cc.libc_dev; - - hardeningDisable = [ "format" "pie" ]; - - postPatch = '' - configureScripts=$(find . -name configure) - for configureScript in $configureScripts; do - patchShebangs $configureScript - done - '' - # This should kill all the stdinc frameworks that gcc and friends like to - # insert into default search paths. - + lib.optionalString hostPlatform.isDarwin '' - substituteInPlace gcc/config/darwin-c.cc \ - --replace 'if (stdinc)' 'if (0)' - - substituteInPlace libgcc/config/t-slibgcc-darwin \ - --replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name ''${!outputLib}/lib/\$(SHLIB_INSTALL_NAME)" - - substituteInPlace libgfortran/configure \ - --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname" - '' - + ( - lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null) - # 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 - '' - + lib.optionalString (targetPlatform.libc == "musl") - '' - sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR' - '' - ) - )) - + lib.optionalString targetPlatform.isAvr '' - makeFlagsArray+=( - '-s' # workaround for hitting hydra log limit - 'LIMITS_H_TEST=false' - ) - ''; - - inherit noSysDirs staticCompiler withoutTargetLibc - libcCross crossMingw; - - inherit (callFile ../common/dependencies.nix { }) depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget; - - NIX_LDFLAGS = lib.optionalString hostPlatform.isSunOS "-lm"; - - - preConfigure = (callFile ../common/pre-configure.nix { }) + '' - ln -sf ${libxcrypt}/include/crypt.h libsanitizer/sanitizer_common/crypt.h - ''; - - dontDisableStatic = true; - - configurePlatforms = [ "build" "host" "target" ]; - - configureFlags = callFile ../common/configure-flags.nix { }; - - targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null; - - buildFlags = - # we do not yet have Nix-driven profiling - assert profiledCompiler -> !disableBootstrap; - let target = - lib.optionalString (profiledCompiler) "profiled" + - lib.optionalString (targetPlatform == hostPlatform && hostPlatform == buildPlatform && !disableBootstrap) "bootstrap"; - in lib.optional (target != "") target; - - # https://gcc.gnu.org/PR109898 - enableParallelInstalling = false; - - inherit (callFile ../common/strip-attributes.nix { }) - stripDebugList - stripDebugListTarget - preFixup; - - # 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 (callFile ../common/extra-target-flags.nix { }) - EXTRA_FLAGS_FOR_TARGET - EXTRA_LDFLAGS_FOR_TARGET - ; - - passthru = { - inherit langC langCC langObjC langObjCpp langAda langFortran langGo langD version; - isGNU = true; - }; - - enableParallelBuilding = true; - inherit enableShared enableMultilib; - - meta = { - inherit (callFile ../common/meta.nix { }) - homepage - license - description - longDescription - platforms - maintainers - ; - }; -} - -// optionalAttrs (enableMultilib) { dontMoveLib64 = true; } -)) -[ - (callPackage ../common/libgcc.nix { inherit version langC langCC langJit targetPlatform hostPlatform withoutTargetLibc enableShared; }) - (callPackage ../common/checksum.nix { inherit langC langCC; }) -] - diff --git a/nixpkgs/pkgs/development/compilers/gcc/13/default.nix b/nixpkgs/pkgs/development/compilers/gcc/13/default.nix deleted file mode 100644 index 1b73c251ce6f..000000000000 --- a/nixpkgs/pkgs/development/compilers/gcc/13/default.nix +++ /dev/null @@ -1,353 +0,0 @@ -{ lib, stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs -, langC ? true, langCC ? true, langFortran ? false -, langAda ? false -, langObjC ? stdenv.targetPlatform.isDarwin -, langObjCpp ? stdenv.targetPlatform.isDarwin -, langD ? false -, langGo ? false -, reproducibleBuild ? true -, profiledCompiler ? false -, langJit ? false -, staticCompiler ? false -, enableShared ? stdenv.targetPlatform.hasSharedLibraries -, enableLTO ? stdenv.hostPlatform.hasSharedLibraries -, texinfo ? null -, perl ? null # optional, for texi2pod (then pod2man) -, gmp, mpfr, libmpc, gettext, which, patchelf, binutils -, isl ? null # optional, for the Graphite optimization framework. -, zlib ? null -, libucontext ? null -, gnat-bootstrap ? null -, enableMultilib ? false -, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins -, name ? "gcc" -, libcCross ? null -, threadsCross ? null # for MinGW -, withoutTargetLibc ? false -, gnused ? null -, cloog # unused; just for compat with gcc4, as we override the parameter on some places -, buildPackages -, libxcrypt -, disableGdbPlugin ? !enablePlugin -, nukeReferences -, callPackage -}: - -# Make sure we get GNU sed. -assert stdenv.buildPlatform.isDarwin -> gnused != null; - -# The go frontend is written in c++ -assert langGo -> langCC; -assert langAda -> gnat-bootstrap != null; - -# TODO: fixup D bootstapping, probably by using gdc11 (and maybe other changes). -# error: GDC is required to build d -assert !langD; - -# threadsCross is just for MinGW -assert threadsCross != {} -> stdenv.targetPlatform.isWindows; - -# profiledCompiler builds inject non-determinism in one of the compilation stages. -# If turned on, we can't provide reproducible builds anymore -assert reproducibleBuild -> profiledCompiler == false; - -with lib; -with builtins; - -let majorVersion = "13"; - version = "${majorVersion}.1.0"; - disableBootstrap = !stdenv.hostPlatform.isDarwin && !profiledCompiler; - - inherit (stdenv) buildPlatform hostPlatform targetPlatform; - - patches = - optional (targetPlatform != hostPlatform) ../libstdc++-target.patch - ++ optional noSysDirs ../gcc-12-no-sys-dirs.patch - ++ optional noSysDirs ../no-sys-dirs-riscv.patch - ++ [ - ../gnat-cflags-11.patch - ../gcc-12-gfortran-driving.patch - ../ppc-musl.patch - ] - # We only apply this patch when building a native toolchain for aarch64-darwin, as it breaks building - # a foreign one: https://github.com/iains/gcc-12-branch/issues/18 - ++ optional (stdenv.isDarwin && stdenv.isAarch64 && buildPlatform == hostPlatform && hostPlatform == targetPlatform) (fetchpatch { - name = "gcc-13-darwin-aarch64-support.patch"; - url = "https://github.com/Homebrew/formula-patches/raw/5c206c47e2a08d522ec9795bb314346fff5fc4c5/gcc/gcc-13.1.0.diff"; - sha256 = "sha256-sMgA7nwE2ULa54t5g6VE6eJQYa69XvQrefi9U9f2t4g="; - }) - ++ optional langD ../libphobos.patch - - # backport fixes to build gccgo with musl libc - ++ optionals (langGo && stdenv.hostPlatform.isMusl) [ - (fetchpatch { - excludes = [ "gcc/go/gofrontend/MERGE" ]; - url = "https://github.com/gcc-mirror/gcc/commit/cf79b1117bd177d3d4c6ed24b6fa243c3628ac2d.diff"; - hash = "sha256-mS5ZiYi5D8CpGXrWg3tXlbhp4o86ew1imCTwaHLfl+I="; - }) - (fetchpatch { - excludes = [ "gcc/go/gofrontend/MERGE" ]; - url = "https://github.com/gcc-mirror/gcc/commit/7f195a2270910a6ed08bd76e3a16b0a6503f9faf.diff"; - hash = "sha256-Ze/cFM0dQofKH00PWPDoklXUlwWhwA1nyTuiDAZ6FKo="; - }) - (fetchpatch { - excludes = [ "gcc/go/gofrontend/MERGE" ]; - url = "https://github.com/gcc-mirror/gcc/commit/762fd5e5547e464e25b4bee435db6df4eda0de90.diff"; - hash = "sha256-o28upwTcHAnHG2Iq0OewzwSBEhHs+XpBGdIfZdT81pk="; - }) - (fetchpatch { - excludes = [ "gcc/go/gofrontend/MERGE" ]; - url = "https://github.com/gcc-mirror/gcc/commit/e73d9fcafbd07bc3714fbaf8a82db71d50015c92.diff"; - hash = "sha256-1SjYCVHLEUihdON2TOC3Z2ufM+jf2vH0LvYtZL+c1Fo="; - }) - (fetchpatch { - excludes = [ "gcc/go/gofrontend/MERGE" ]; - url = "https://github.com/gcc-mirror/gcc/commit/b6c6a3d64f2e4e9347733290aca3c75898c44b2e.diff"; - hash = "sha256-RycJ3YCHd3MXtYFjxP0zY2Wuw7/C4bWoBAQtTKJZPOQ="; - }) - (fetchpatch { - excludes = [ "gcc/go/gofrontend/MERGE" ]; - url = "https://github.com/gcc-mirror/gcc/commit/2b1a604a9b28fbf4f382060bebd04adb83acc2f9.diff"; - hash = "sha256-WiBQG0Xbk75rHk+AMDvsbrm+dc7lDH0EONJXSdEeMGE="; - }) - (fetchpatch { - url = "https://github.com/gcc-mirror/gcc/commit/c86b726c048eddc1be320c0bf64a897658bee13d.diff"; - hash = "sha256-QSIlqDB6JRQhbj/c3ejlmbfWz9l9FurdSWxpwDebnlI="; - }) - ] - - # Fix detection of bootstrap compiler Ada support (cctools as) on Nix Darwin - ++ optional (stdenv.isDarwin && langAda) ../ada-cctools-as-detection-configure.patch - - # Use absolute path in GNAT dylib install names on Darwin - ++ optional (stdenv.isDarwin && langAda) ../gnat-darwin-dylib-install-name.patch - ; - - /* Cross-gcc settings (build == host != target) */ - crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt"; - stageNameAddon = if withoutTargetLibc then "stage-static" else "stage-final"; - crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-"; - - callFile = lib.callPackageWith { - # lets - inherit - majorVersion - version - buildPlatform - hostPlatform - targetPlatform - patches - crossMingw - stageNameAddon - crossNameAddon - ; - # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc13.cc.override)" | jq '.[]' --raw-output' - inherit - binutils - buildPackages - cloog - withoutTargetLibc - disableBootstrap - disableGdbPlugin - enableLTO - enableMultilib - enablePlugin - enableShared - fetchpatch - fetchurl - gettext - gmp - gnat-bootstrap - gnused - isl - langAda - langC - langCC - langD - langFortran - langGo - langJit - langObjC - langObjCpp - lib - libcCross - libmpc - libucontext - libxcrypt - mpfr - name - noSysDirs - nukeReferences - patchelf - perl - profiledCompiler - reproducibleBuild - staticCompiler - stdenv - targetPackages - texinfo - threadsCross - which - zip - zlib - ; - }; - -in - -lib.pipe (stdenv.mkDerivation ({ - pname = "${crossNameAddon}${name}"; - inherit version; - - builder = ../builder.sh; - - src = fetchurl { - url = "mirror://gcc/releases/gcc-${version}/gcc-${version}.tar.xz"; - sha256 = "sha256-YdaE8Kpedqxlha2ImKJCeq3ol57V5/hUkihsTfwT7oY="; - }; - - inherit patches; - - outputs = [ "out" "man" "info" ] ++ lib.optional (!langJit) "lib"; - setOutputFlags = false; - NIX_NO_SELF_RPATH = true; - - libc_dev = stdenv.cc.libc_dev; - - hardeningDisable = [ "format" "pie" ]; - - postPatch = '' - configureScripts=$(find . -name configure) - for configureScript in $configureScripts; do - patchShebangs $configureScript - done - '' - # This should kill all the stdinc frameworks that gcc and friends like to - # insert into default search paths. - + lib.optionalString hostPlatform.isDarwin '' - substituteInPlace gcc/config/darwin-c.cc \ - --replace 'if (stdinc)' 'if (0)' - - substituteInPlace libgcc/config/t-slibgcc-darwin \ - --replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name ''${!outputLib}/lib/\$(SHLIB_INSTALL_NAME)" - - substituteInPlace libgfortran/configure \ - --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname" - '' - + ( - lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null) - # 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 - '' - + lib.optionalString (targetPlatform.libc == "musl") - '' - sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR' - '' - ) - )) - + lib.optionalString targetPlatform.isAvr '' - makeFlagsArray+=( - '-s' # workaround for hitting hydra log limit - 'LIMITS_H_TEST=false' - ) - ''; - - inherit noSysDirs staticCompiler withoutTargetLibc - libcCross crossMingw; - - inherit (callFile ../common/dependencies.nix { }) depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget; - - NIX_LDFLAGS = lib.optionalString hostPlatform.isSunOS "-lm"; - - - preConfigure = (callFile ../common/pre-configure.nix { }) + '' - ln -sf ${libxcrypt}/include/crypt.h libsanitizer/sanitizer_common/crypt.h - ''; - - dontDisableStatic = true; - - configurePlatforms = [ "build" "host" "target" ]; - - configureFlags = callFile ../common/configure-flags.nix { }; - - targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null; - - buildFlags = - # we do not yet have Nix-driven profiling - assert profiledCompiler -> !disableBootstrap; - let target = - lib.optionalString (profiledCompiler) "profiled" + - lib.optionalString (targetPlatform == hostPlatform && hostPlatform == buildPlatform && !disableBootstrap) "bootstrap"; - in lib.optional (target != "") target; - - inherit (callFile ../common/strip-attributes.nix { }) - stripDebugList - stripDebugListTarget - preFixup; - - # https://gcc.gnu.org/PR109898 - enableParallelInstalling = false; - - # 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 (callFile ../common/extra-target-flags.nix { }) - EXTRA_FLAGS_FOR_TARGET - EXTRA_LDFLAGS_FOR_TARGET - ; - - passthru = { - inherit langC langCC langObjC langObjCpp langAda langFortran langGo langD version; - isGNU = true; - }; - - enableParallelBuilding = true; - inherit enableShared enableMultilib; - - meta = { - inherit (callFile ../common/meta.nix { }) - homepage - license - description - longDescription - platforms - maintainers - ; - }; -} - -// optionalAttrs (enableMultilib) { dontMoveLib64 = true; } -)) -[ - (callPackage ../common/libgcc.nix { inherit version langC langCC langJit targetPlatform hostPlatform withoutTargetLibc enableShared; }) - (callPackage ../common/checksum.nix { inherit langC langCC; }) -] - diff --git a/nixpkgs/pkgs/development/compilers/gcc/4.8/default.nix b/nixpkgs/pkgs/development/compilers/gcc/4.8/default.nix deleted file mode 100644 index fa856eff96e5..000000000000 --- a/nixpkgs/pkgs/development/compilers/gcc/4.8/default.nix +++ /dev/null @@ -1,327 +0,0 @@ -{ lib, stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs -, langC ? true, langCC ? true, langFortran ? false -, langObjC ? stdenv.targetPlatform.isDarwin -, langObjCpp ? stdenv.targetPlatform.isDarwin -, langJava ? false -, langGo ? false -, reproducibleBuild ? true -, profiledCompiler ? false -, langJit ? false -, staticCompiler ? false -, enableShared ? stdenv.targetPlatform.hasSharedLibraries -, enableLTO ? stdenv.hostPlatform.hasSharedLibraries -, texinfo ? null -, perl ? null # optional, for texi2pod (then pod2man); required for Java -, gmp, mpfr, libmpc, gettext, which, patchelf, binutils -, cloog ? null, isl ? null # optional, for the Graphite optimization framework. -, zlib ? null, boehmgc ? null -, zip ? null, unzip ? null, pkg-config ? null -, gtk2 ? null, libart_lgpl ? null -, libX11 ? null, libXt ? null, libSM ? null, libICE ? null, libXtst ? null -, libXrender ? null, xorgproto ? null -, libXrandr ? null, libXi ? null -, x11Support ? langJava -, enableMultilib ? false -, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins -, name ? "gcc" -, libcCross ? null -, threadsCross ? null # for MinGW -, withoutTargetLibc ? false -, gnused ? null -, buildPackages -, callPackage -}: - -assert langJava -> zip != null && unzip != null - && zlib != null && boehmgc != null - && perl != null; # for `--enable-java-home' - -# We enable the isl cloog backend. -assert cloog != null -> isl != null; - -# Make sure we get GNU sed. -assert stdenv.buildPlatform.isDarwin -> gnused != null; - -# The go frontend is written in c++ -assert langGo -> langCC; - -# threadsCross is just for MinGW -assert threadsCross != {} -> stdenv.targetPlatform.isWindows; - -# profiledCompiler builds inject non-determinism in one of the compilation stages. -# If turned on, we can't provide reproducible builds anymore -assert reproducibleBuild -> profiledCompiler == false; - -with lib; -with builtins; - -let majorVersion = "4"; - version = "${majorVersion}.8.5"; - - inherit (stdenv) buildPlatform hostPlatform targetPlatform; - - patches = [ ../parallel-bconfig.patch ] - ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch - ++ optional noSysDirs ../no-sys-dirs.patch - ++ optional langFortran ../gfortran-driving.patch - ++ optional hostPlatform.isDarwin ../gfortran-darwin-NXConstStr.patch - ++ [(fetchpatch { - name = "libc_name_p.diff"; # needed to build with gcc6 - url = "https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=ec1cc0263f1"; - sha256 = "01jd7pdarh54ki498g6sz64ijl9a1l5f9v8q2696aaxalvh2vwzl"; - excludes = [ "gcc/cp/ChangeLog" ]; - })] - ++ [ # glibc-2.26 - ../struct-ucontext-4.8.patch - ../sigsegv-not-declared.patch - ../res_state-not-declared.patch - # gcc-11 compatibility - (fetchpatch { - name = "gcc4-char-reload.patch"; - url = "https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=d57c99458933a21fdf94f508191f145ad8d5ec58"; - includes = [ "gcc/reload.h" ]; - sha256 = "sha256-66AMP7/ajunGKAN5WJz/yPn42URZ2KN51yPrFdsxEuM="; - }) - ]; - - javaEcj = fetchurl { - # The `$(top_srcdir)/ecj.jar' file is automatically picked up at - # `configure' time. - - # XXX: Eventually we might want to take it from upstream. - url = "ftp://sourceware.org/pub/java/ecj-4.3.jar"; - sha256 = "0jz7hvc0s6iydmhgh5h2m15yza7p2rlss2vkif30vm9y77m97qcx"; - }; - - # Antlr (optional) allows the Java `gjdoc' tool to be built. We want a - # binary distribution here to allow the whole chain to be bootstrapped. - javaAntlr = fetchurl { - url = "https://www.antlr.org/download/antlr-4.4-complete.jar"; - sha256 = "02lda2imivsvsis8rnzmbrbp8rh1kb8vmq4i67pqhkwz7lf8y6dz"; - }; - - xlibs = [ - libX11 libXt libSM libICE libXtst libXrender libXrandr libXi - xorgproto - ]; - - javaAwtGtk = langJava && x11Support; - - /* Cross-gcc settings (build == host != target) */ - crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt"; - stageNameAddon = if withoutTargetLibc then "stage-static" else "stage-final"; - crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-"; - - callFile = lib.callPackageWith { - # lets - inherit - majorVersion - version - buildPlatform - hostPlatform - targetPlatform - patches - javaEcj - javaAntlr - xlibs - javaAwtGtk - crossMingw - stageNameAddon - crossNameAddon - ; - # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc48.cc.override)" | jq '.[]' --raw-output' - inherit - binutils - boehmgc - buildPackages - cloog - withoutTargetLibc - enableLTO - enableMultilib - enablePlugin - enableShared - fetchpatch - fetchurl - gettext - gmp - gnused - gtk2 - isl - langC - langCC - langFortran - langGo - langJava - langJit - langObjC - langObjCpp - lib - libICE - libSM - libX11 - libXi - libXrandr - libXrender - libXt - libXtst - libart_lgpl - libcCross threadsCross - libmpc - mpfr - name - noSysDirs - patchelf - perl - pkg-config - profiledCompiler - reproducibleBuild - staticCompiler - stdenv - targetPackages - texinfo - unzip - which - x11Support - xorgproto - zip - zlib - ; - }; - -in - -# We need all these X libraries when building AWT with GTK. -assert x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == []; - -lib.pipe (stdenv.mkDerivation ({ - pname = "${crossNameAddon}${name}"; - inherit version; - - builder = ../builder.sh; - - src = fetchurl { - url = "mirror://gnu/gcc/gcc-${version}/gcc-${version}.tar.bz2"; - sha256 = "08yggr18v373a1ihj0rg2vd6psnic42b518xcgp3r9k81xz1xyr2"; - }; - - inherit patches; - - hardeningDisable = [ "format" "pie" ]; - - outputs = [ "out" "lib" "man" "info" ]; - setOutputFlags = false; - NIX_NO_SELF_RPATH = true; - - libc_dev = stdenv.cc.libc_dev; - - postPatch = - 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' and \`UCLIBC_DYNAMIC_LINKER' macros..." - for header in "gcc/config/"*-gnu.h "gcc/config/"*"/"*.h - do - grep -q LIBC_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' - done - '' - else null; - - inherit noSysDirs staticCompiler langJava withoutTargetLibc - libcCross crossMingw; - - inherit (callFile ../common/dependencies.nix { }) - depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget; - - preConfigure = callFile ../common/pre-configure.nix { }; - - dontDisableStatic = true; - - configurePlatforms = [ "build" "host" "target" ]; - - configureFlags = callFile ../common/configure-flags.nix { }; - - targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null; - - buildFlags = optional - (targetPlatform == hostPlatform && hostPlatform == buildPlatform) - (if profiledCompiler then "profiledbootstrap" else "bootstrap"); - - inherit (callFile ../common/strip-attributes.nix { }) - stripDebugList - stripDebugListTarget - preFixup; - - # https://gcc.gnu.org/PR109898 - enableParallelInstalling = false; - - doCheck = false; # requires a lot of tools, causes a dependency cycle for stdenv - - # 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. - # - # Note: When building the Java AWT GTK peer, the build system doesn't honor - # `--with-gmp' et al., e.g., when building - # `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just add - # them to $CPATH and $LIBRARY_PATH in this case. - # - # 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 - ++ optional langJava boehmgc - ++ optionals javaAwtGtk xlibs - ++ optionals javaAwtGtk [ gmp mpfr ] - )); - - LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([] - ++ optional (zlib != null) zlib - ++ optional langJava boehmgc - ++ optionals javaAwtGtk xlibs - ++ optionals javaAwtGtk [ gmp mpfr ] - )); - - inherit (callFile ../common/extra-target-flags.nix { }) - EXTRA_FLAGS_FOR_TARGET - EXTRA_LDFLAGS_FOR_TARGET - ; - - passthru = { - inherit langC langCC langObjC langObjCpp langFortran langGo version; - isGNU = true; - hardeningUnsupportedFlags = [ "stackprotector" "fortify3" ]; - }; - - enableParallelBuilding = true; - inherit enableShared enableMultilib; - - meta = { - inherit (callFile ../common/meta.nix { }) - homepage - license - description - longDescription - platforms - maintainers - ; - badPlatforms = lib.platforms.darwin; - }; -} - -// optionalAttrs (enableMultilib) { dontMoveLib64 = true; } -)) -[ - (callPackage ../common/libgcc.nix { inherit version langC langCC langJit targetPlatform hostPlatform withoutTargetLibc enableShared; }) -] diff --git a/nixpkgs/pkgs/development/compilers/gcc/4.9/default.nix b/nixpkgs/pkgs/development/compilers/gcc/4.9/default.nix deleted file mode 100644 index bab79f968db3..000000000000 --- a/nixpkgs/pkgs/development/compilers/gcc/4.9/default.nix +++ /dev/null @@ -1,354 +0,0 @@ -{ lib, stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs -, langC ? true, langCC ? true, langFortran ? false -, langObjC ? stdenv.targetPlatform.isDarwin -, langObjCpp ? stdenv.targetPlatform.isDarwin -, langJava ? false -, langGo ? false -, reproducibleBuild ? true -, profiledCompiler ? false -, langJit ? false -, staticCompiler ? false -, enableShared ? stdenv.targetPlatform.hasSharedLibraries -, enableLTO ? stdenv.hostPlatform.hasSharedLibraries -, texinfo ? null -, perl ? null # optional, for texi2pod (then pod2man); required for Java -, gmp, mpfr, libmpc, gettext, which, patchelf, binutils -, cloog ? null, isl ? null # optional, for the Graphite optimization framework. -, zlib ? null, boehmgc ? null -, zip ? null, unzip ? null, pkg-config ? null -, gtk2 ? null, libart_lgpl ? null -, libX11 ? null, libXt ? null, libSM ? null, libICE ? null, libXtst ? null -, libXrender ? null, xorgproto ? null -, libXrandr ? null, libXi ? null -, x11Support ? langJava -, enableMultilib ? false -, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins -, name ? "gcc" -, libcCross ? null -, threadsCross ? null # for MinGW -, withoutTargetLibc ? false -, gnused ? null -, buildPackages -, callPackage -}: - -assert langJava -> zip != null && unzip != null - && zlib != null && boehmgc != null - && perl != null; # for `--enable-java-home' - -# We enable the isl cloog backend. -assert cloog != null -> isl != null; - -# Make sure we get GNU sed. -assert stdenv.buildPlatform.isDarwin -> gnused != null; - -# The go frontend is written in c++ -assert langGo -> langCC; - -# threadsCross is just for MinGW -assert threadsCross != {} -> stdenv.targetPlatform.isWindows; - -# profiledCompiler builds inject non-determinism in one of the compilation stages. -# If turned on, we can't provide reproducible builds anymore -assert reproducibleBuild -> profiledCompiler == false; - -with lib; -with builtins; - -let majorVersion = "4"; - version = "${majorVersion}.9.4"; - - inherit (stdenv) buildPlatform hostPlatform targetPlatform; - - patches = - [ ../9/fix-struct-redefinition-on-glibc-2.36.patch ../use-source-date-epoch.patch - ../parallel-bconfig.patch ./parallel-strsignal.patch - ./libsanitizer.patch - (fetchpatch { - name = "avoid-ustat-glibc-2.28.patch"; - url = "https://gitweb.gentoo.org/proj/gcc-patches.git/plain/4.9.4/gentoo/100_all_avoid-ustat-glibc-2.28.patch?id=55fcb515620a8f7d3bb77eba938aa0fcf0d67c96"; - sha256 = "0b32sb4psv5lq0ij9fwhi1b4pjbwdjnv24nqprsk14dsc6xmi1g0"; - }) - ] - ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch - ++ optional noSysDirs ../no-sys-dirs.patch - ++ optional langFortran ../gfortran-driving.patch - ++ [ ../struct-ucontext.patch ../struct-sigaltstack-4.9.patch ] # glibc-2.26 - # Retpoline patches pulled from the branch hjl/indirect/gcc-4_9-branch (by H.J. Lu, the author of GCC upstream retpoline commits) - ++ builtins.map ({commit, sha256}: fetchpatch {url = "https://github.com/hjl-tools/gcc/commit/${commit}.patch"; inherit sha256;}) - [{ commit = "e623d21608e96ecd6b65f0d06312117d20488a38"; sha256 = "1ix8i4d2r3ygbv7npmsdj790rhxqrnfwcqzv48b090r9c3ij8ay3"; } - { commit = "2015a09e332309f12de1dadfe179afa6a29368b8"; sha256 = "0xcfs0cbb63llj2gbcdrvxim79ax4k4aswn0a3yjavxsj71s1n91"; } - { commit = "6b11591f4494f705e8746e7d58b7f423191f4e92"; sha256 = "0aydyhsm2ig0khgbp27am7vq7liyqrq6kfhfi2ki0ij0ab1hfbga"; } - { commit = "203c7d9c3e9cb0f88816b481ef8e7e87b3ecc373"; sha256 = "0wqn16y7wy5kg8ngfcni5qdwfphl01axczibbk49bxclwnzvldqa"; } - { commit = "f039c6f284b2c9ce97c8353d6034978795c4872e"; sha256 = "13fkgdb17lpyxfksz1zanxhgpsm0jrss9w61nbl7an4im22hz7ci"; } - { commit = "ed42606bdab1c5d9e5ad828cd6fe1a0557f193b7"; sha256 = "0gdnn8v3p03imj3qga2mzdhpgbmjcklkxdl97jvz5xia2ikzknxm"; } - { commit = "5278e062ef292fd2fbf987d25389785f4c5c0f99"; sha256 = "0j81x758wf8v7j4rx5wc1cy7yhkvhlhv3wmnarwakxiwsspq0vrs"; } - { commit = "76f1ffbbb6cd9f6ecde6c82cd16e20a27242e890"; sha256 = "1py56y6gp7fjf4f8bbsfwh5bs1gnmlqda1ycsmnwlzfm0cshdp0c"; } - { commit = "4ca48b2b688b135c0390f54ea9077ef10aedd52c"; sha256 = "15r019pzr3k0lpgyvdc92c8fayw8b5lrzncna4bqmamcsdz7vsaw"; } - { commit = "98c7bf9ddc80db965d69d61521b1c7a1cec32d9a"; sha256 = "1d7pfdv1q23nf0wadw7jbp6d6r7pnzjpbyxgbdfv7j1vr9l1bp60"; } - { commit = "3dc76b53ad896494ca62550a7a752fecbca3f7a2"; sha256 = "0jvdzfpvfdmklfcjwqblwq1i22iqis7ljpvm7adra5d7zf2xk7xz"; } - { commit = "1e961ed49b18e176c7457f53df2433421387c23b"; sha256 = "04dnqqs4qsvz4g8cq6db5id41kzys7hzhcaycwmc9rpqygs2ajwz"; } - { commit = "e137c72d099f9b3b47f4cc718aa11eab14df1a9c"; sha256 = "1ms0dmz74yf6kwgjfs4d2fhj8y6mcp2n184r3jk44wx2xc24vgb2"; }] - - ++ [ - ../libsanitizer-no-cyclades-9.patch - # gcc-11 compatibility - (fetchpatch { - name = "gcc4-char-reload.patch"; - url = "https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=d57c99458933a21fdf94f508191f145ad8d5ec58"; - includes = [ "gcc/reload.h" ]; - sha256 = "sha256-66AMP7/ajunGKAN5WJz/yPn42URZ2KN51yPrFdsxEuM="; - }) - ]; - - javaEcj = fetchurl { - # The `$(top_srcdir)/ecj.jar' file is automatically picked up at - # `configure' time. - - # XXX: Eventually we might want to take it from upstream. - url = "ftp://sourceware.org/pub/java/ecj-4.3.jar"; - sha256 = "0jz7hvc0s6iydmhgh5h2m15yza7p2rlss2vkif30vm9y77m97qcx"; - }; - - # Antlr (optional) allows the Java `gjdoc' tool to be built. We want a - # binary distribution here to allow the whole chain to be bootstrapped. - javaAntlr = fetchurl { - url = "https://www.antlr.org/download/antlr-4.4-complete.jar"; - sha256 = "02lda2imivsvsis8rnzmbrbp8rh1kb8vmq4i67pqhkwz7lf8y6dz"; - }; - - xlibs = [ - libX11 libXt libSM libICE libXtst libXrender libXrandr libXi - xorgproto - ]; - - javaAwtGtk = langJava && x11Support; - - /* Cross-gcc settings (build == host != target) */ - crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt"; - stageNameAddon = if withoutTargetLibc then "stage-static" else "stage-final"; - crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-"; - - callFile = lib.callPackageWith { - # lets - inherit - majorVersion - version - buildPlatform - hostPlatform - targetPlatform - patches - javaEcj - javaAntlr - xlibs - javaAwtGtk - crossMingw - stageNameAddon - crossNameAddon - ; - # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc49.cc.override)" | jq '.[]' --raw-output' - inherit - binutils - boehmgc - buildPackages - cloog - withoutTargetLibc - enableLTO - enableMultilib - enablePlugin - enableShared - fetchpatch - fetchurl - gettext - gmp - gnused - gtk2 - isl - langC - langCC - langFortran - langGo - langJava - langJit - langObjC - langObjCpp - lib - libICE - libSM - libX11 - libXi - libXrandr - libXrender - libXt - libXtst - libart_lgpl - libcCross threadsCross - libmpc - mpfr - name - noSysDirs - patchelf - perl - pkg-config - profiledCompiler - reproducibleBuild - staticCompiler - stdenv - targetPackages - texinfo - unzip - which - x11Support - xorgproto - zip - zlib - ; - }; - -in - -# We need all these X libraries when building AWT with GTK. -assert x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == []; - -lib.pipe (stdenv.mkDerivation ({ - pname = "${crossNameAddon}${name}"; - inherit version; - - builder = ../builder.sh; - - src = fetchurl { - url = "mirror://gnu/gcc/gcc-${version}/gcc-${version}.tar.bz2"; - sha256 = "14l06m7nvcvb0igkbip58x59w3nq6315k6jcz3wr9ch1rn9d44bc"; - }; - - inherit patches; - - hardeningDisable = [ "format" "pie" ]; - - # When targeting darwin, libgcc_ext.10.{4,5}.dylib are created as - # MH_DYLIB_STUB files, which install_name_tool can't change, so we - # get a cycle between $out and $lib. - outputs = if langJava || langGo || targetPlatform.isDarwin then ["out" "man" "info"] - else [ "out" "lib" "man" "info" ]; - setOutputFlags = false; - NIX_NO_SELF_RPATH = true; - - libc_dev = stdenv.cc.libc_dev; - - postPatch = - 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' and \`UCLIBC_DYNAMIC_LINKER' macros..." - for header in "gcc/config/"*-gnu.h "gcc/config/"*"/"*.h - do - grep -q LIBC_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' - done - '' - else null; - - inherit noSysDirs staticCompiler langJava withoutTargetLibc - libcCross crossMingw; - - inherit (callFile ../common/dependencies.nix { }) - depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget; - - preConfigure = callFile ../common/pre-configure.nix { }; - - dontDisableStatic = true; - - configurePlatforms = [ "build" "host" "target" ]; - - configureFlags = callFile ../common/configure-flags.nix { }; - - targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null; - - buildFlags = optional - (targetPlatform == hostPlatform && hostPlatform == buildPlatform) - (if profiledCompiler then "profiledbootstrap" else "bootstrap"); - - # https://gcc.gnu.org/PR109898 - enableParallelInstalling = false; - - inherit (callFile ../common/strip-attributes.nix { }) - stripDebugList - stripDebugListTarget - preFixup; - - doCheck = false; # requires a lot of tools, causes a dependency cycle for stdenv - - # 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. - # - # Note: When building the Java AWT GTK peer, the build system doesn't honor - # `--with-gmp' et al., e.g., when building - # `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just add - # them to $CPATH and $LIBRARY_PATH in this case. - # - # 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 - ++ optional langJava boehmgc - ++ optionals javaAwtGtk xlibs - ++ optionals javaAwtGtk [ gmp mpfr ] - )); - - LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([] - ++ optional (zlib != null) zlib - ++ optional langJava boehmgc - ++ optionals javaAwtGtk xlibs - ++ optionals javaAwtGtk [ gmp mpfr ] - )); - - inherit (callFile ../common/extra-target-flags.nix { }) - EXTRA_FLAGS_FOR_TARGET - EXTRA_LDFLAGS_FOR_TARGET - ; - - passthru = { - inherit langC langCC langObjC langObjCpp langFortran langGo version; - isGNU = true; - hardeningUnsupportedFlags = [ "fortify3" ]; - }; - - enableParallelBuilding = true; - inherit enableShared enableMultilib; - - meta = { - inherit (callFile ../common/meta.nix { }) - homepage - license - description - longDescription - platforms - maintainers - ; - badPlatforms = [ "aarch64-darwin" ]; - }; -} - -// optionalAttrs (enableMultilib) { dontMoveLib64 = true; } - -// optionalAttrs (langJava) { - postFixup = '' - target="$(echo "$out/libexec/gcc"/*/*/ecj*)" - patchelf --set-rpath "$(patchelf --print-rpath "$target"):$out/lib" "$target" - '';} -)) -[ - (callPackage ../common/libgcc.nix { inherit version langC langCC langJit targetPlatform hostPlatform withoutTargetLibc enableShared; }) -] diff --git a/nixpkgs/pkgs/development/compilers/gcc/6/default.nix b/nixpkgs/pkgs/development/compilers/gcc/6/default.nix deleted file mode 100644 index f443babb4b70..000000000000 --- a/nixpkgs/pkgs/development/compilers/gcc/6/default.nix +++ /dev/null @@ -1,372 +0,0 @@ -{ lib, stdenv, targetPackages, fetchurl, fetchpatch, fetchFromGitHub, noSysDirs -, langC ? true, langCC ? true, langFortran ? false -, langAda ? false -, langObjC ? stdenv.targetPlatform.isDarwin -, langObjCpp ? stdenv.targetPlatform.isDarwin -, langJava ? false -, langGo ? false -, reproducibleBuild ? true -, profiledCompiler ? false -, langJit ? false -, staticCompiler ? false -, enableShared ? stdenv.targetPlatform.hasSharedLibraries -, enableLTO ? stdenv.hostPlatform.hasSharedLibraries -, texinfo ? null -, flex -, perl ? null # optional, for texi2pod (then pod2man); required for Java -, gmp, mpfr, libmpc, gettext, which, patchelf, binutils -, isl ? null # optional, for the Graphite optimization framework. -, zlib ? null, boehmgc ? null -, gnat-bootstrap ? null -, zip ? null, unzip ? null, pkg-config ? null -, gtk2 ? null, libart_lgpl ? null -, libX11 ? null, libXt ? null, libSM ? null, libICE ? null, libXtst ? null -, libXrender ? null, xorgproto ? null -, libXrandr ? null, libXi ? null -, x11Support ? langJava -, enableMultilib ? false -, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins -, name ? "gcc" -, libcCross ? null -, threadsCross ? null # for MinGW -, withoutTargetLibc ? false -, gnused ? null -, cloog ? null # unused; just for compat with gcc4, as we override the parameter on some places -, buildPackages -, callPackage -}: - -assert langJava -> zip != null && unzip != null - && zlib != null && boehmgc != null - && perl != null; # for `--enable-java-home' - -# Make sure we get GNU sed. -assert stdenv.buildPlatform.isDarwin -> gnused != null; - -# The go frontend is written in c++ -assert langGo -> langCC; - -assert langAda -> gnat-bootstrap != null; - -# threadsCross is just for MinGW -assert threadsCross != {} -> stdenv.targetPlatform.isWindows; - -# profiledCompiler builds inject non-determinism in one of the compilation stages. -# If turned on, we can't provide reproducible builds anymore -assert reproducibleBuild -> profiledCompiler == false; - -with lib; -with builtins; - -let majorVersion = "6"; - version = "${majorVersion}.5.0"; - - inherit (stdenv) buildPlatform hostPlatform targetPlatform; - - patches = [ ../9/fix-struct-redefinition-on-glibc-2.36.patch ] - ++ optionals (!stdenv.targetPlatform.isRedox) [ - ../use-source-date-epoch.patch ./0001-Fix-build-for-glibc-2.31.patch - - # Fix https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80431 - ../fix-bug-80431.patch - ] ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch - ++ optional noSysDirs ../no-sys-dirs.patch - ++ optional langAda ../gnat-cflags.patch - ++ optional langAda ./gnat-glibc234.patch - ++ optional langFortran ../gfortran-driving.patch - ++ optional (targetPlatform.libc == "musl") ../libgomp-dont-force-initial-exec.patch - ++ optional langGo ./gogcc-workaround-glibc-2.36.patch - - # Obtain latest patch with ../update-mcfgthread-patches.sh - ++ optional (!withoutTargetLibc && targetPlatform.isMinGW && threadsCross.model == "mcf") ./Added-mcf-thread-model-support-from-mcfgthread.patch - ++ optional (targetPlatform.libc == "musl" && targetPlatform.isx86_32) (fetchpatch { - url = "https://git.alpinelinux.org/aports/plain/main/gcc/gcc-6.1-musl-libssp.patch?id=5e4b96e23871ee28ef593b439f8c07ca7c7eb5bb"; - sha256 = "1jf1ciz4gr49lwyh8knfhw6l5gvfkwzjy90m7qiwkcbsf4a3fqn2"; - }) - - ++ [ ../libsanitizer-no-cyclades-9.patch ]; - - javaEcj = fetchurl { - # The `$(top_srcdir)/ecj.jar' file is automatically picked up at - # `configure' time. - - # XXX: Eventually we might want to take it from upstream. - url = "ftp://sourceware.org/pub/java/ecj-4.3.jar"; - sha256 = "0jz7hvc0s6iydmhgh5h2m15yza7p2rlss2vkif30vm9y77m97qcx"; - }; - - # Antlr (optional) allows the Java `gjdoc' tool to be built. We want a - # binary distribution here to allow the whole chain to be bootstrapped. - javaAntlr = fetchurl { - url = "https://www.antlr.org/download/antlr-4.4-complete.jar"; - sha256 = "02lda2imivsvsis8rnzmbrbp8rh1kb8vmq4i67pqhkwz7lf8y6dz"; - }; - - xlibs = [ - libX11 libXt libSM libICE libXtst libXrender libXrandr libXi - xorgproto - ]; - - javaAwtGtk = langJava && x11Support; - - /* Cross-gcc settings (build == host != target) */ - crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt"; - stageNameAddon = if withoutTargetLibc then "stage-static" else "stage-final"; - crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-"; - - callFile = lib.callPackageWith { - # lets - inherit - majorVersion - version - buildPlatform - hostPlatform - targetPlatform - patches - javaEcj - javaAntlr - xlibs - javaAwtGtk - crossMingw - stageNameAddon - crossNameAddon - ; - # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc6.cc.override)" | jq '.[]' --raw-output' - inherit - binutils - boehmgc - buildPackages - cloog - withoutTargetLibc - enableLTO - enableMultilib - enablePlugin - enableShared - fetchFromGitHub - fetchpatch - fetchurl - flex - gettext - gmp - gnat-bootstrap - gnused - gtk2 - isl - langAda - langC - langCC - langFortran - langGo - langJava - langJit - langObjC - langObjCpp - lib - libICE - libSM - libX11 - libXi - libXrandr - libXrender - libXt - libXtst - libart_lgpl - libcCross - libmpc - mpfr - name - noSysDirs - patchelf - perl - pkg-config - profiledCompiler - reproducibleBuild - staticCompiler - stdenv - targetPackages - texinfo - threadsCross - unzip - which - x11Support - xorgproto - zip - zlib - ; - }; -in - -# We need all these X libraries when building AWT with GTK. -assert x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == []; - -lib.pipe (stdenv.mkDerivation ({ - pname = "${crossNameAddon}${name}"; - inherit version; - - builder = ../builder.sh; - - src = if stdenv.targetPlatform.isVc4 then fetchFromGitHub { - owner = "itszor"; - repo = "gcc-vc4"; - rev = "e90ff43f9671c760cf0d1dd62f569a0fb9bf8918"; - sha256 = "0gxf66hwqk26h8f853sybphqa5ca0cva2kmrw5jsiv6139g0qnp8"; - } else if stdenv.targetPlatform.isRedox then fetchFromGitHub { - owner = "redox-os"; - repo = "gcc"; - rev = "f360ac095028d286fc6dde4d02daed48f59813fa"; # `redox` branch - sha256 = "1an96h8l58pppyh3qqv90g8hgcfd9hj7igvh2gigmkxbrx94khfl"; - } else fetchurl { - url = "mirror://gnu/gcc/gcc-${version}/gcc-${version}.tar.xz"; - sha256 = "0i89fksfp6wr1xg9l8296aslcymv2idn60ip31wr9s4pwin7kwby"; - }; - - inherit patches; - - outputs = if langJava || langGo || langJit then ["out" "man" "info"] - else [ "out" "lib" "man" "info" ]; - setOutputFlags = false; - NIX_NO_SELF_RPATH = true; - - libc_dev = stdenv.cc.libc_dev; - - hardeningDisable = [ "format" "pie" ]; - - postPatch = - # This should kill all the stdinc frameworks that gcc and friends like to - # insert into default search paths. - 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 ''${!outputLib}/lib/\$(SHLIB_INSTALL_NAME)" - - substituteInPlace libgfortran/configure \ - --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname" - '' - + ( - lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null) - # 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 - '' - + lib.optionalString (targetPlatform.libc == "musl") - '' - sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR' - '' - )) - ); - - inherit noSysDirs staticCompiler langJava withoutTargetLibc - libcCross crossMingw; - - inherit (callFile ../common/dependencies.nix { }) - depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget; - - NIX_LDFLAGS = lib.optionalString hostPlatform.isSunOS "-lm"; - - preConfigure = callFile ../common/pre-configure.nix { }; - - dontDisableStatic = true; - - configurePlatforms = [ "build" "host" "target" ]; - - configureFlags = callFile ../common/configure-flags.nix { }; - - targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null; - - buildFlags = optional - (targetPlatform == hostPlatform && hostPlatform == buildPlatform) - (if profiledCompiler then "profiledbootstrap" else "bootstrap"); - - # https://gcc.gnu.org/PR109898 - enableParallelInstalling = false; - - inherit (callFile ../common/strip-attributes.nix { }) - stripDebugList - stripDebugListTarget - preFixup; - - doCheck = false; # requires a lot of tools, causes a dependency cycle for stdenv - - # 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. - # - # Note: When building the Java AWT GTK peer, the build system doesn't honor - # `--with-gmp' et al., e.g., when building - # `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just add - # them to $CPATH and $LIBRARY_PATH in this case. - # - # 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 - ++ optional langJava boehmgc - ++ optionals javaAwtGtk xlibs - ++ optionals javaAwtGtk [ gmp mpfr ] - )); - - LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([] - ++ optional (zlib != null) zlib - ++ optional langJava boehmgc - ++ optionals javaAwtGtk xlibs - ++ optionals javaAwtGtk [ gmp mpfr ] - )); - - inherit (callFile ../common/extra-target-flags.nix { }) - EXTRA_FLAGS_FOR_TARGET - EXTRA_LDFLAGS_FOR_TARGET - ; - - passthru = { - inherit langC langCC langObjC langObjCpp langFortran langAda langGo version; - isGNU = true; - hardeningUnsupportedFlags = [ "fortify3" ]; - }; - - enableParallelBuilding = true; - inherit enableShared enableMultilib; - - meta = { - inherit (callFile ../common/meta.nix { }) - homepage - license - description - longDescription - platforms - maintainers - ; - badPlatforms = [ "aarch64-darwin" ]; - }; -} - -// optionalAttrs (enableMultilib) { dontMoveLib64 = true; } - -// optionalAttrs (langJava && !stdenv.hostPlatform.isDarwin) { - postFixup = '' - target="$(echo "$out/libexec/gcc"/*/*/ecj*)" - patchelf --set-rpath "$(patchelf --print-rpath "$target"):$out/lib" "$target" - '';} -)) -[ - (callPackage ../common/libgcc.nix { inherit version langC langCC langJit targetPlatform hostPlatform withoutTargetLibc enableShared; }) -] diff --git a/nixpkgs/pkgs/development/compilers/gcc/7/default.nix b/nixpkgs/pkgs/development/compilers/gcc/7/default.nix deleted file mode 100644 index 5b6ea7ead50a..000000000000 --- a/nixpkgs/pkgs/development/compilers/gcc/7/default.nix +++ /dev/null @@ -1,306 +0,0 @@ -{ lib, stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs -, langC ? true, langCC ? true, langFortran ? false -, langObjC ? stdenv.targetPlatform.isDarwin -, langObjCpp ? stdenv.targetPlatform.isDarwin -, langGo ? false -, reproducibleBuild ? true -, profiledCompiler ? false -, langJit ? false -, staticCompiler ? false -, enableShared ? stdenv.targetPlatform.hasSharedLibraries -, enableLTO ? stdenv.hostPlatform.hasSharedLibraries -, texinfo ? null -, perl ? null # optional, for texi2pod (then pod2man) -, gmp, mpfr, libmpc, gettext, which, patchelf, binutils -, isl ? null # optional, for the Graphite optimization framework. -, zlib ? null -, enableMultilib ? false -, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins -, name ? "gcc" -, libcCross ? null -, threadsCross ? null # for MinGW -, withoutTargetLibc ? false -, gnused ? null -, cloog ? null # unused; just for compat with gcc4, as we override the parameter on some places -, buildPackages -, callPackage -}: - -# Make sure we get GNU sed. -assert stdenv.buildPlatform.isDarwin -> gnused != null; - -# The go frontend is written in c++ -assert langGo -> langCC; - -# threadsCross is just for MinGW -assert threadsCross != {} -> stdenv.targetPlatform.isWindows; - -# profiledCompiler builds inject non-determinism in one of the compilation stages. -# If turned on, we can't provide reproducible builds anymore -assert reproducibleBuild -> profiledCompiler == false; - -with lib; -with builtins; - -let majorVersion = "7"; - version = "${majorVersion}.5.0"; - - inherit (stdenv) buildPlatform hostPlatform targetPlatform; - - patches = - [ # https://gcc.gnu.org/ml/gcc-patches/2018-02/msg00633.html - ./riscv-pthread-reentrant.patch - # https://gcc.gnu.org/ml/gcc-patches/2018-03/msg00297.html - ./riscv-no-relax.patch - # Fix for asan w/glibc-2.34. Although there's no upstream backport to v7, - # the patch from gcc 8 seems to work perfectly fine. - ./gcc8-asan-glibc-2.34.patch - - ./0001-Fix-build-for-glibc-2.31.patch - - # Fix https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80431 - ../fix-bug-80431.patch - - ../9/fix-struct-redefinition-on-glibc-2.36.patch - ] - ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch - ++ optionals targetPlatform.isNetBSD [ - ../libstdc++-netbsd-ctypes.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/7.1.0/0900-remove-selftests.patch?id=11271540bfe6adafbc133caf6b5b902a816f5f02"; - sha256 = "0mrvxsdwip2p3l17dscpc1x8vhdsciqw1z5q9i6p5g9yg1cqnmgs"; - }) - ++ optional langFortran ../gfortran-driving.patch - ++ optional (targetPlatform.libc == "musl" && targetPlatform.isPower) ../ppc-musl.patch - ++ optional (targetPlatform.libc == "musl" && targetPlatform.isx86_32) (fetchpatch { - url = "https://git.alpinelinux.org/aports/plain/main/gcc/gcc-6.1-musl-libssp.patch?id=5e4b96e23871ee28ef593b439f8c07ca7c7eb5bb"; - sha256 = "1jf1ciz4gr49lwyh8knfhw6l5gvfkwzjy90m7qiwkcbsf4a3fqn2"; - }) - ++ optional (targetPlatform.libc == "musl") ../libgomp-dont-force-initial-exec.patch - - # Obtain latest patch with ../update-mcfgthread-patches.sh - ++ optional (!withoutTargetLibc && targetPlatform.isMinGW && threadsCross.model == "mcf") ./Added-mcf-thread-model-support-from-mcfgthread.patch - - ++ [ ../libsanitizer-no-cyclades-9.patch ]; - - /* Cross-gcc settings (build == host != target) */ - crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt"; - stageNameAddon = if withoutTargetLibc then "stage-static" else "stage-final"; - crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-"; - - callFile = lib.callPackageWith { - # lets - inherit - majorVersion - version - buildPlatform - hostPlatform - targetPlatform - patches - crossMingw - stageNameAddon - crossNameAddon - ; - # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc7.cc.override)" | jq '.[]' --raw-output' - inherit - binutils - buildPackages - cloog - withoutTargetLibc - enableLTO - enableMultilib - enablePlugin - enableShared - fetchpatch - fetchurl - gettext - gmp - gnused - isl - langC - langCC - langFortran - langGo - langJit - langObjC - langObjCpp - lib - libcCross - libmpc - mpfr - name - noSysDirs - patchelf - perl - profiledCompiler - reproducibleBuild - staticCompiler - stdenv - targetPackages - texinfo - threadsCross - which - zip - zlib - ; - }; - -in - -lib.pipe (stdenv.mkDerivation ({ - pname = "${crossNameAddon}${name}"; - inherit version; - - builder = ../builder.sh; - - src = fetchurl { - url = "mirror://gcc/releases/gcc-${version}/gcc-${version}.tar.xz"; - sha256 = "0qg6kqc5l72hpnj4vr6l0p69qav0rh4anlkk3y55540zy3klc6dq"; - }; - - inherit patches; - - outputs = [ "out" "man" "info" ] ++ lib.optional (!langJit) "lib"; - setOutputFlags = false; - NIX_NO_SELF_RPATH = true; - - libc_dev = stdenv.cc.libc_dev; - - hardeningDisable = [ "format" "pie" ]; - - postPatch = '' - configureScripts=$(find . -name configure) - for configureScript in $configureScripts; do - patchShebangs $configureScript - done - '' - # This should kill all the stdinc frameworks that gcc and friends like to - # insert into default search paths. - + 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 ''${!outputLib}/lib/\$(SHLIB_INSTALL_NAME)" - - substituteInPlace libgfortran/configure \ - --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname" - '' - + ( - lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null) - # 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 - '' - + lib.optionalString (targetPlatform.libc == "musl") - '' - sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR' - '' - )) - ) - + lib.optionalString targetPlatform.isAvr '' - makeFlagsArray+=( - 'LIMITS_H_TEST=false' - ) - ''; - - inherit noSysDirs staticCompiler withoutTargetLibc - libcCross crossMingw; - - inherit (callFile ../common/dependencies.nix { }) - depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget; - - env.NIX_CFLAGS_COMPILE = lib.optionalString (stdenv.cc.isClang && langFortran) "-Wno-unused-command-line-argument"; - NIX_LDFLAGS = lib.optionalString hostPlatform.isSunOS "-lm"; - - preConfigure = callFile ../common/pre-configure.nix { }; - - dontDisableStatic = true; - - configurePlatforms = [ "build" "host" "target" ]; - - configureFlags = (callFile ../common/configure-flags.nix { }) - ++ optional (targetPlatform.isAarch64) "--enable-fix-cortex-a53-843419" - ++ optional targetPlatform.isNetBSD "--disable-libcilkrts" - ; - - targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null; - - buildFlags = optional - (targetPlatform == hostPlatform && hostPlatform == buildPlatform) - (if profiledCompiler then "profiledbootstrap" else "bootstrap"); - - # https://gcc.gnu.org/PR109898 - enableParallelInstalling = false; - - inherit (callFile ../common/strip-attributes.nix { }) - stripDebugList - stripDebugListTarget - preFixup; - - doCheck = false; # requires a lot of tools, causes a dependency cycle for stdenv - - # 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 (callFile ../common/extra-target-flags.nix { }) - EXTRA_FLAGS_FOR_TARGET - EXTRA_LDFLAGS_FOR_TARGET - ; - - passthru = { - inherit langC langCC langObjC langObjCpp langFortran langGo version; - isGNU = true; - hardeningUnsupportedFlags = [ "fortify3" ]; - }; - - enableParallelBuilding = true; - inherit enableShared enableMultilib; - - meta = { - inherit (callFile ../common/meta.nix { }) - homepage - license - description - longDescription - platforms - maintainers - ; - badPlatforms = [ "aarch64-darwin" ]; - }; -} - -// optionalAttrs (enableMultilib) { dontMoveLib64 = true; } -)) -[ - (callPackage ../common/libgcc.nix { inherit version langC langCC langJit targetPlatform hostPlatform withoutTargetLibc enableShared; }) -] diff --git a/nixpkgs/pkgs/development/compilers/gcc/8/default.nix b/nixpkgs/pkgs/development/compilers/gcc/8/default.nix deleted file mode 100644 index f903e264b0af..000000000000 --- a/nixpkgs/pkgs/development/compilers/gcc/8/default.nix +++ /dev/null @@ -1,281 +0,0 @@ -{ lib, stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs -, langC ? true, langCC ? true, langFortran ? false -, langObjC ? stdenv.targetPlatform.isDarwin -, langObjCpp ? stdenv.targetPlatform.isDarwin -, langGo ? false -, reproducibleBuild ? true -, profiledCompiler ? false -, langJit ? false -, staticCompiler ? false -, enableShared ? stdenv.targetPlatform.hasSharedLibraries -, enableLTO ? stdenv.hostPlatform.hasSharedLibraries -, texinfo ? null -, perl ? null # optional, for texi2pod (then pod2man) -, gmp, mpfr, libmpc, gettext, which, patchelf, binutils -, isl ? null # optional, for the Graphite optimization framework. -, zlib ? null -, enableMultilib ? false -, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins -, name ? "gcc" -, libcCross ? null -, threadsCross ? null # for MinGW -, withoutTargetLibc ? false -, gnused ? null -, cloog ? null # unused; just for compat with gcc4, as we override the parameter on some places -, buildPackages -, callPackage -}: - -# Make sure we get GNU sed. -assert stdenv.buildPlatform.isDarwin -> gnused != null; - -# The go frontend is written in c++ -assert langGo -> langCC; - -# threadsCross is just for MinGW -assert threadsCross != {} -> stdenv.targetPlatform.isWindows; - -# profiledCompiler builds inject non-determinism in one of the compilation stages. -# If turned on, we can't provide reproducible builds anymore -assert reproducibleBuild -> profiledCompiler == false; - -with lib; -with builtins; - -let majorVersion = "8"; - version = "${majorVersion}.5.0"; - - inherit (stdenv) buildPlatform hostPlatform targetPlatform; - - patches = [ - # Fix https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80431 - ../fix-bug-80431.patch - ../9/fix-struct-redefinition-on-glibc-2.36.patch - ] ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch - ++ optional targetPlatform.isNetBSD ../libstdc++-netbsd-ctypes.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 langFortran ../gfortran-driving.patch - ++ optional (targetPlatform.libc == "musl" && targetPlatform.isPower) ../ppc-musl.patch - ++ optional (targetPlatform.libc == "musl") ../libgomp-dont-force-initial-exec.patch - - # Obtain latest patch with ../update-mcfgthread-patches.sh - ++ optional (!withoutTargetLibc && targetPlatform.isMinGW && threadsCross.model == "mcf") ./Added-mcf-thread-model-support-from-mcfgthread.patch - ++ [ ../libsanitizer-no-cyclades-9.patch ]; - - /* Cross-gcc settings (build == host != target) */ - crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt"; - stageNameAddon = if withoutTargetLibc then "stage-static" else "stage-final"; - crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-"; - - callFile = lib.callPackageWith { - # lets - inherit - majorVersion - version - buildPlatform - hostPlatform - targetPlatform - patches - crossMingw - stageNameAddon - crossNameAddon - ; - # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc8.cc.override)" | jq '.[]' --raw-output' - inherit - binutils - buildPackages - cloog - withoutTargetLibc - enableLTO - enableMultilib - enablePlugin - enableShared - fetchpatch - fetchurl - gettext - gmp - gnused - isl - langC - langCC - langFortran - langGo - langJit - langObjC - langObjCpp - lib - libcCross - libmpc - mpfr - name - noSysDirs - patchelf - perl - profiledCompiler - reproducibleBuild - staticCompiler - stdenv - targetPackages - texinfo - threadsCross - which - zip - zlib - ; - }; - -in - -lib.pipe (stdenv.mkDerivation ({ - pname = "${crossNameAddon}${name}"; - inherit version; - - builder = ../builder.sh; - - src = fetchurl { - url = "mirror://gcc/releases/gcc-${version}/gcc-${version}.tar.xz"; - sha256 = "0l7d4m9jx124xsk6xardchgy2k5j5l2b15q322k31f0va4d8826k"; - }; - - inherit patches; - - outputs = [ "out" "man" "info" ] ++ lib.optional (!langJit) "lib"; - setOutputFlags = false; - NIX_NO_SELF_RPATH = true; - - libc_dev = stdenv.cc.libc_dev; - - hardeningDisable = [ "format" "pie" ]; - - postPatch = '' - configureScripts=$(find . -name configure) - for configureScript in $configureScripts; do - patchShebangs $configureScript - done - '' - # This should kill all the stdinc frameworks that gcc and friends like to - # insert into default search paths. - + 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 ''${!outputLib}/lib/\$(SHLIB_INSTALL_NAME)" - - substituteInPlace libgfortran/configure \ - --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname" - '' - + ( - lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null) - # 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 - '' - + lib.optionalString (targetPlatform.libc == "musl") - '' - sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR' - '' - )) - ) - + lib.optionalString targetPlatform.isAvr '' - makeFlagsArray+=( - 'LIMITS_H_TEST=false' - ) - ''; - - inherit noSysDirs staticCompiler withoutTargetLibc - libcCross crossMingw; - - inherit (callFile ../common/dependencies.nix { }) - depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget; - - NIX_LDFLAGS = lib.optionalString hostPlatform.isSunOS "-lm"; - - preConfigure = callFile ../common/pre-configure.nix { }; - - dontDisableStatic = true; - - configurePlatforms = [ "build" "host" "target" ]; - - configureFlags = callFile ../common/configure-flags.nix { }; - - targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null; - - buildFlags = optional - (targetPlatform == hostPlatform && hostPlatform == buildPlatform) - (if profiledCompiler then "profiledbootstrap" else "bootstrap"); - - # https://gcc.gnu.org/PR109898 - enableParallelInstalling = false; - - inherit (callFile ../common/strip-attributes.nix { }) - stripDebugList - stripDebugListTarget - preFixup; - - # 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 (callFile ../common/extra-target-flags.nix { }) - EXTRA_FLAGS_FOR_TARGET - EXTRA_LDFLAGS_FOR_TARGET - ; - - passthru = { - inherit langC langCC langObjC langObjCpp langFortran langGo version; - isGNU = true; - hardeningUnsupportedFlags = [ "fortify3" ]; - }; - - enableParallelBuilding = true; - inherit enableShared enableMultilib; - - meta = { - inherit (callFile ../common/meta.nix { }) - homepage - license - description - longDescription - platforms - maintainers - ; - badPlatforms = [ "aarch64-darwin" ]; - }; -} - -// optionalAttrs (enableMultilib) { dontMoveLib64 = true; } -)) -[ - (callPackage ../common/libgcc.nix { inherit version langC langCC langJit targetPlatform hostPlatform withoutTargetLibc enableShared; }) -] diff --git a/nixpkgs/pkgs/development/compilers/gcc/9/default.nix b/nixpkgs/pkgs/development/compilers/gcc/9/default.nix deleted file mode 100644 index 289212a13635..000000000000 --- a/nixpkgs/pkgs/development/compilers/gcc/9/default.nix +++ /dev/null @@ -1,296 +0,0 @@ -{ lib, stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs -, langC ? true, langCC ? true, langFortran ? false -, langAda ? false -, langObjC ? stdenv.targetPlatform.isDarwin -, langObjCpp ? stdenv.targetPlatform.isDarwin -, langD ? false -, langGo ? false -, reproducibleBuild ? true -, profiledCompiler ? false -, langJit ? false -, staticCompiler ? false -, enableShared ? stdenv.targetPlatform.hasSharedLibraries -, enableLTO ? stdenv.hostPlatform.hasSharedLibraries -, texinfo ? null -, perl ? null # optional, for texi2pod (then pod2man) -, gmp, mpfr, libmpc, gettext, which, patchelf, binutils -, isl ? null # optional, for the Graphite optimization framework. -, zlib ? null -, gnat-bootstrap ? null -, enableMultilib ? false -, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins -, name ? "gcc" -, libcCross ? null -, threadsCross ? null # for MinGW -, withoutTargetLibc ? false -, gnused ? null -, cloog # unused; just for compat with gcc4, as we override the parameter on some places -, buildPackages -, callPackage -}: - -# Note: this package is used for bootstrapping fetchurl, and thus -# cannot use fetchpatch! All mutable patches (generated by GitHub or -# cgit) that are needed here should be included directly in Nixpkgs as -# files. - -# Make sure we get GNU sed. -assert stdenv.buildPlatform.isDarwin -> gnused != null; - -# The go frontend is written in c++ -assert langGo -> langCC; -assert langAda -> gnat-bootstrap != null; - -# threadsCross is just for MinGW -assert threadsCross != {} -> stdenv.targetPlatform.isWindows; - -# profiledCompiler builds inject non-determinism in one of the compilation stages. -# If turned on, we can't provide reproducible builds anymore -assert reproducibleBuild -> profiledCompiler == false; - -with lib; -with builtins; - -let majorVersion = "9"; - version = "${majorVersion}.5.0"; - - inherit (stdenv) buildPlatform hostPlatform targetPlatform; - - patches = [ - ./fix-struct-redefinition-on-glibc-2.36.patch - # Fix https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80431 - ../fix-bug-80431.patch - ] ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch - ++ optional targetPlatform.isNetBSD ../libstdc++-netbsd-ctypes.patch - ++ optional noSysDirs ../no-sys-dirs.patch - ++ optional (noSysDirs && hostPlatform.isRiscV) ../no-sys-dirs-riscv-gcc9.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 langD ../libphobos.patch - ++ optional langFortran ../gfortran-driving.patch - ++ optional (targetPlatform.libc == "musl" && targetPlatform.isPower) ../ppc-musl.patch - - # Obtain latest patch with ../update-mcfgthread-patches.sh - ++ optional (!withoutTargetLibc && targetPlatform.isMinGW && threadsCross.model == "mcf") ./Added-mcf-thread-model-support-from-mcfgthread.patch - ; - - /* Cross-gcc settings (build == host != target) */ - crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt"; - stageNameAddon = if withoutTargetLibc then "stage-static" else "stage-final"; - crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-"; - - callFile = lib.callPackageWith { - # lets - inherit - majorVersion - version - buildPlatform - hostPlatform - targetPlatform - patches - crossMingw - stageNameAddon - crossNameAddon - ; - # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc9.cc.override)" | jq '.[]' --raw-output' - inherit - binutils - buildPackages - cloog - withoutTargetLibc - enableLTO - enableMultilib - enablePlugin - enableShared - fetchpatch - fetchurl - gettext - gmp - gnat-bootstrap - gnused - isl - langAda - langC - langCC - langD - langFortran - langGo - langJit - langObjC - langObjCpp - lib - libcCross - libmpc - mpfr - name - noSysDirs - patchelf - perl - profiledCompiler - reproducibleBuild - staticCompiler - stdenv - targetPackages - texinfo - threadsCross - which - zip - zlib - ; - }; - -in - -lib.pipe (stdenv.mkDerivation ({ - pname = "${crossNameAddon}${name}"; - inherit version; - - builder = ../builder.sh; - - src = fetchurl { - url = "mirror://gcc/releases/gcc-${version}/gcc-${version}.tar.xz"; - sha256 = "13ygjmd938m0wmy946pxdhz9i1wq7z4w10l6pvidak0xxxj9yxi7"; - }; - - inherit patches; - - outputs = [ "out" "man" "info" ] ++ lib.optional (!langJit) "lib"; - setOutputFlags = false; - NIX_NO_SELF_RPATH = true; - - libc_dev = stdenv.cc.libc_dev; - - hardeningDisable = [ "format" "pie" ]; - - postPatch = '' - configureScripts=$(find . -name configure) - for configureScript in $configureScripts; do - patchShebangs $configureScript - done - '' - # This should kill all the stdinc frameworks that gcc and friends like to - # insert into default search paths. - + 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 ''${!outputLib}/lib/\$(SHLIB_INSTALL_NAME)" - - substituteInPlace libgfortran/configure \ - --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname" - '' - + ( - lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null) - # 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 - '' - + lib.optionalString (targetPlatform.libc == "musl") - '' - sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR' - '' - )) - ) - + lib.optionalString targetPlatform.isAvr '' - makeFlagsArray+=( - 'LIMITS_H_TEST=false' - ) - ''; - - inherit noSysDirs staticCompiler withoutTargetLibc - libcCross crossMingw; - - inherit (callFile ../common/dependencies.nix { }) - depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget; - - NIX_LDFLAGS = lib.optionalString hostPlatform.isSunOS "-lm"; - - preConfigure = callFile ../common/pre-configure.nix { }; - - dontDisableStatic = true; - - configurePlatforms = [ "build" "host" "target" ]; - - configureFlags = callFile ../common/configure-flags.nix { }; - - targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null; - - buildFlags = optional - (targetPlatform == hostPlatform && hostPlatform == buildPlatform) - (if profiledCompiler then "profiledbootstrap" else "bootstrap"); - - # https://gcc.gnu.org/PR109898 - enableParallelInstalling = false; - - inherit (callFile ../common/strip-attributes.nix { }) - stripDebugList - stripDebugListTarget - preFixup; - - # 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 (callFile ../common/extra-target-flags.nix { }) - EXTRA_FLAGS_FOR_TARGET - EXTRA_LDFLAGS_FOR_TARGET - ; - - passthru = { - inherit langC langCC langObjC langObjCpp langAda langFortran langGo langD version; - isGNU = true; - hardeningUnsupportedFlags = [ "fortify3" ]; - }; - - enableParallelBuilding = true; - inherit enableShared enableMultilib; - - meta = { - inherit (callFile ../common/meta.nix { }) - homepage - license - description - longDescription - platforms - maintainers - ; - badPlatforms = [ "aarch64-darwin" ]; - }; -} - - -// optionalAttrs (enableMultilib) { dontMoveLib64 = true; } -) -) [ - (callPackage ../common/libgcc.nix { inherit version langC langCC langJit targetPlatform hostPlatform withoutTargetLibc enableShared; }) -] diff --git a/nixpkgs/pkgs/development/compilers/gcc/builder.sh b/nixpkgs/pkgs/development/compilers/gcc/builder.sh deleted file mode 100644 index d9016c45e579..000000000000 --- a/nixpkgs/pkgs/development/compilers/gcc/builder.sh +++ /dev/null @@ -1,290 +0,0 @@ -if [ -e .attrs.sh ]; then source .attrs.sh; fi -source $stdenv/setup - - -oldOpts="$(shopt -po nounset)" || true -set -euo pipefail - - -export NIX_FIXINC_DUMMY="$NIX_BUILD_TOP/dummy" -mkdir "$NIX_FIXINC_DUMMY" - - -if test "$staticCompiler" = "1"; then - EXTRA_LDFLAGS="-static" -else - EXTRA_LDFLAGS="-Wl,-rpath,${!outputLib}/lib" -fi - - -# GCC interprets empty paths as ".", which we don't want. -if test -z "${CPATH-}"; then unset CPATH; fi -if test -z "${LIBRARY_PATH-}"; then unset LIBRARY_PATH; fi -echo "\$CPATH is \`${CPATH-}'" -echo "\$LIBRARY_PATH is \`${LIBRARY_PATH-}'" - -if test "$noSysDirs" = "1"; then - - declare \ - EXTRA_FLAGS_FOR_BUILD EXTRA_FLAGS EXTRA_FLAGS_FOR_TARGET \ - EXTRA_LDFLAGS_FOR_BUILD EXTRA_LDFLAGS_FOR_TARGET - - # Extract flags from Bintools Wrappers - for post in '_FOR_BUILD' ''; do - curBintools="NIX_BINTOOLS${post}" - - declare -a extraLDFlags=() - if [[ -e "${!curBintools}/nix-support/orig-libc" ]]; then - # Figure out what extra flags when linking to pass to the gcc - # compilers being generated to make sure that they use our libc. - extraLDFlags=($(< "${!curBintools}/nix-support/libc-ldflags") $(< "${!curBintools}/nix-support/libc-ldflags-before" || true)) - if [ -e ${!curBintools}/nix-support/ld-set-dynamic-linker ]; then - extraLDFlags=-dynamic-linker=$(< ${!curBintools}/nix-support/dynamic-linker) - fi - - # The path to the Libc binaries such as `crti.o'. - libc_libdir="$(< "${!curBintools}/nix-support/orig-libc")/lib" - else - # Hack: support impure environments. - extraLDFlags=("-L/usr/lib64" "-L/usr/lib") - libc_libdir="/usr/lib" - fi - extraLDFlags=("-L$libc_libdir" "-rpath" "$libc_libdir" - "${extraLDFlags[@]}") - for i in "${extraLDFlags[@]}"; do - declare EXTRA_LDFLAGS${post}+=" -Wl,$i" - done - done - - # Extract flags from CC Wrappers - for post in '_FOR_BUILD' ''; do - curCC="NIX_CC${post}" - curFIXINC="NIX_FIXINC_DUMMY${post}" - - declare -a extraFlags=() - if [[ -e "${!curCC}/nix-support/orig-libc" ]]; then - # Figure out what extra compiling flags to pass to the gcc compilers - # being generated to make sure that they use our libc. - extraFlags=($(< "${!curCC}/nix-support/libc-crt1-cflags") $(< "${!curCC}/nix-support/libc-cflags")) - - # The path to the Libc headers - libc_devdir="$(< "${!curCC}/nix-support/orig-libc-dev")" - - # Use *real* header files, otherwise a limits.h is generated that - # does not include Libc's limits.h (notably missing SSIZE_MAX, - # which breaks the build). - declare NIX_FIXINC_DUMMY${post}="$libc_devdir/include" - else - # Hack: support impure environments. - extraFlags=("-isystem" "/usr/include") - declare NIX_FIXINC_DUMMY${post}=/usr/include - fi - - extraFlags=("-I${!curFIXINC}" "${extraFlags[@]}") - - # BOOT_CFLAGS defaults to `-g -O2'; since we override it below, make - # sure to explictly add them so that files compiled with the bootstrap - # compiler are optimized and (optionally) contain debugging information - # (info "(gccinstall) Building"). - if test -n "${dontStrip-}"; then - extraFlags=("-O2" "-g" "${extraFlags[@]}") - else - # Don't pass `-g' at all; this saves space while building. - extraFlags=("-O2" "${extraFlags[@]}") - fi - - declare EXTRA_FLAGS${post}="${extraFlags[*]}" - done - - if test -z "${targetConfig-}"; then - # host = target, so the flags are the same - EXTRA_FLAGS_FOR_TARGET="$EXTRA_FLAGS" - EXTRA_LDFLAGS_FOR_TARGET="$EXTRA_LDFLAGS" - fi - - # CFLAGS_FOR_TARGET are needed for the libstdc++ configure script to find - # the startfiles. - # FLAGS_FOR_TARGET are needed for the target libraries to receive the -Bxxx - # for the startfiles. - makeFlagsArray+=( - "BUILD_SYSTEM_HEADER_DIR=$NIX_FIXINC_DUMMY_FOR_BUILD" - "SYSTEM_HEADER_DIR=$NIX_FIXINC_DUMMY_FOR_BUILD" - "NATIVE_SYSTEM_HEADER_DIR=$NIX_FIXINC_DUMMY" - - "LDFLAGS_FOR_BUILD=$EXTRA_LDFLAGS_FOR_BUILD" - #"LDFLAGS=$EXTRA_LDFLAGS" - "LDFLAGS_FOR_TARGET=$EXTRA_LDFLAGS_FOR_TARGET" - - "CFLAGS_FOR_BUILD=$EXTRA_FLAGS_FOR_BUILD $EXTRA_LDFLAGS_FOR_BUILD" - "CXXFLAGS_FOR_BUILD=$EXTRA_FLAGS_FOR_BUILD $EXTRA_LDFLAGS_FOR_BUILD" - "FLAGS_FOR_BUILD=$EXTRA_FLAGS_FOR_BUILD $EXTRA_LDFLAGS_FOR_BUILD" - - # It seems there is a bug in GCC 5 - #"CFLAGS=$EXTRA_FLAGS $EXTRA_LDFLAGS" - #"CXXFLAGS=$EXTRA_FLAGS $EXTRA_LDFLAGS" - - "CFLAGS_FOR_TARGET=$EXTRA_FLAGS_FOR_TARGET $EXTRA_LDFLAGS_FOR_TARGET" - "CXXFLAGS_FOR_TARGET=$EXTRA_FLAGS_FOR_TARGET $EXTRA_LDFLAGS_FOR_TARGET" - "FLAGS_FOR_TARGET=$EXTRA_FLAGS_FOR_TARGET $EXTRA_LDFLAGS_FOR_TARGET" - ) - - if test -z "${targetConfig-}"; then - makeFlagsArray+=( - "BOOT_CFLAGS=$EXTRA_FLAGS $EXTRA_LDFLAGS" - "BOOT_LDFLAGS=$EXTRA_FLAGS_FOR_TARGET $EXTRA_LDFLAGS_FOR_TARGET" - ) - fi - - if test "$withoutTargetLibc" == 1; then - # We don't want the gcc build to assume there will be a libc providing - # limits.h in this stage - makeFlagsArray+=( - 'LIMITS_H_TEST=false' - ) - else - makeFlagsArray+=( - 'LIMITS_H_TEST=true' - ) - fi -fi - -eval "$oldOpts" - -providedPreConfigure="$preConfigure"; -preConfigure() { - if test -n "$newlibSrc"; then - tar xvf "$newlibSrc" -C .. - ln -s ../newlib-*/newlib newlib - # Patch to get armvt5el working: - sed -i -e 's/ arm)/ arm*)/' newlib/configure.host - fi - - # Bug - they packaged zlib - if test -d "zlib"; then - # This breaks the build without-headers, which should build only - # the target libgcc as target libraries. - # See 'configure:5370' - rm -Rf zlib - fi - - if test -n "$crossMingw" -a -n "$withoutTargetLibc"; then - mkdir -p ../mingw - # --with-build-sysroot expects that: - cp -R $libcCross/include ../mingw - configureFlags="$configureFlags --with-build-sysroot=`pwd`/.." - fi - - # Eval the preConfigure script from nix expression. - eval "$providedPreConfigure" - - # Perform the build in a different directory. - mkdir ../build - cd ../build - configureScript=../$sourceRoot/configure -} - - -postConfigure() { - # Avoid store paths when embedding ./configure flags into gcc. - # Mangled arguments are still useful when reporting bugs upstream. - sed -e "/TOPLEVEL_CONFIGURE_ARGUMENTS=/ s|$NIX_STORE/[a-z0-9]\{32\}-|$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-|g" -i Makefile -} - - -preInstall() { - mkdir -p "$out/${targetConfig}/lib" - mkdir -p "${!outputLib}/${targetConfig}/lib" - # Make ‘lib64’ symlinks to ‘lib’. - if [ -n "$linkLib64toLib" ]; then - ln -s lib "$out/${targetConfig}/lib64" - ln -s lib "${!outputLib}/${targetConfig}/lib64" - fi - # Make ‘lib32’ symlinks to ‘lib’. - if [ -n "$linkLib32toLib" ]; then - ln -s lib "$out/${targetConfig}/lib32" - ln -s lib "${!outputLib}/${targetConfig}/lib32" - fi -} - - -postInstall() { - # Move runtime libraries to lib output. - moveToOutput "${targetConfig+$targetConfig/}lib/lib*.so*" "${!outputLib}" - moveToOutput "${targetConfig+$targetConfig/}lib/lib*.la" "${!outputLib}" - moveToOutput "${targetConfig+$targetConfig/}lib/lib*.dylib" "${!outputLib}" - moveToOutput "${targetConfig+$targetConfig/}lib/lib*.dll.a" "${!outputLib}" - moveToOutput "share/gcc-*/python" "${!outputLib}" - - if [ -z "$enableShared" ]; then - moveToOutput "${targetConfig+$targetConfig/}lib/lib*.a" "${!outputLib}" - fi - - for i in "${!outputLib}/${targetConfig}"/lib/*.{la,py}; do - substituteInPlace "$i" --replace "$out" "${!outputLib}" - done - - if [ -n "$enableMultilib" ]; then - moveToOutput "${targetConfig+$targetConfig/}lib64/lib*.so*" "${!outputLib}" - moveToOutput "${targetConfig+$targetConfig/}lib64/lib*.la" "${!outputLib}" - moveToOutput "${targetConfig+$targetConfig/}lib64/lib*.dylib" "${!outputLib}" - - for i in "${!outputLib}/${targetConfig}"/lib64/*.{la,py}; do - substituteInPlace "$i" --replace "$out" "${!outputLib}" - done - fi - - # Remove `fixincl' to prevent a retained dependency on the - # previous gcc. - rm -rf $out/libexec/gcc/*/*/install-tools - rm -rf $out/lib/gcc/*/*/install-tools - - # More dependencies with the previous gcc or some libs (gccbug stores the build command line) - rm -rf $out/bin/gccbug - - if type "install_name_tool"; then - for i in "${!outputLib}"/lib/*.*.dylib "${!outputLib}"/lib/*.so.[0-9]; do - install_name_tool -id "$i" "$i" || true - for old_path in $(otool -L "$i" | grep "$out" | awk '{print $1}'); do - new_path=`echo "$old_path" | sed "s,$out,${!outputLib},"` - install_name_tool -change "$old_path" "$new_path" "$i" || true - done - done - fi - - # Cross-compiler specific: - # --with-headers=$dir option triggers gcc to make a private copy - # of $dir headers and use it later as `-isysroot`. This prevents - # cc-wrapper from overriding libc headers with `-idirafter`. - # It should be safe to drop it and rely solely on the cc-wrapper. - local sysinc_dir=$out/${targetConfig+$targetConfig/}sys-include - if [ -d "$sysinc_dir" ]; then - chmod -R u+w "$out/${targetConfig+$targetConfig/}sys-include" - rm -rfv "$out/${targetConfig+$targetConfig/}sys-include" - fi - - # Get rid of some "fixed" header files - rm -rfv $out/lib/gcc/*/*/include-fixed/{root,linux,sys/mount.h,bits/statx.h} - - # Replace hard links for i686-pc-linux-gnu-gcc etc. with symlinks. - for i in $out/bin/*-gcc*; do - if cmp -s $out/bin/gcc $i; then - ln -sfn gcc $i - fi - done - - for i in $out/bin/c++ $out/bin/*-c++* $out/bin/*-g++*; do - if cmp -s $out/bin/g++ $i; then - ln -sfn g++ $i - fi - done - - # Two identical man pages are shipped (moving and compressing is done later) - for i in "$out"/share/man/man1/*g++.1; do - if test -e "$i"; then - man_prefix=`echo "$i" | sed "s,.*/\(.*\)g++.1,\1,"` - ln -sf "$man_prefix"gcc.1 "$i" - fi - done -} - -genericBuild diff --git a/nixpkgs/pkgs/development/compilers/gcc/common/builder.nix b/nixpkgs/pkgs/development/compilers/gcc/common/builder.nix new file mode 100644 index 000000000000..6df4e32ddb76 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/gcc/common/builder.nix @@ -0,0 +1,284 @@ +{ lib +, stdenv +, enableMultilib +}: + +let + forceLibgccToBuildCrtStuff = + import ./libgcc-buildstuff.nix { inherit lib stdenv; }; +in + +originalAttrs: (stdenv.mkDerivation (finalAttrs: originalAttrs // { + passthru = (originalAttrs.passthru or {}) // { inherit forceLibgccToBuildCrtStuff; }; + preUnpack = '' + oldOpts="$(shopt -po nounset)" || true + set -euo pipefail + + export NIX_FIXINC_DUMMY="$NIX_BUILD_TOP/dummy" + mkdir "$NIX_FIXINC_DUMMY" + + if test "$staticCompiler" = "1"; then + EXTRA_LDFLAGS="-static" + else + EXTRA_LDFLAGS="-Wl,-rpath,''${!outputLib}/lib" + fi + + # GCC interprets empty paths as ".", which we don't want. + if test -z "''${CPATH-}"; then unset CPATH; fi + if test -z "''${LIBRARY_PATH-}"; then unset LIBRARY_PATH; fi + echo "\$CPATH is \`''${CPATH-}'" + echo "\$LIBRARY_PATH is \`''${LIBRARY_PATH-}'" + + if test "$noSysDirs" = "1"; then + + declare -g \ + EXTRA_FLAGS_FOR_BUILD EXTRA_FLAGS EXTRA_FLAGS_FOR_TARGET \ + EXTRA_LDFLAGS_FOR_BUILD EXTRA_LDFLAGS_FOR_TARGET + + # Extract flags from Bintools Wrappers + for post in '_FOR_BUILD' ""; do + curBintools="NIX_BINTOOLS''${post}" + + declare -a extraLDFlags=() + if [[ -e "''${!curBintools}/nix-support/orig-libc" ]]; then + # Figure out what extra flags when linking to pass to the gcc + # compilers being generated to make sure that they use our libc. + extraLDFlags=($(< "''${!curBintools}/nix-support/libc-ldflags") $(< "''${!curBintools}/nix-support/libc-ldflags-before" || true)) + if [ -e ''${!curBintools}/nix-support/ld-set-dynamic-linker ]; then + extraLDFlags=-dynamic-linker=$(< ''${!curBintools}/nix-support/dynamic-linker) + fi + + # The path to the Libc binaries such as `crti.o'. + libc_libdir="$(< "''${!curBintools}/nix-support/orig-libc")/lib" + else + # Hack: support impure environments. + extraLDFlags=("-L/usr/lib64" "-L/usr/lib") + libc_libdir="/usr/lib" + fi + extraLDFlags=("-L$libc_libdir" "-rpath" "$libc_libdir" + "''${extraLDFlags[@]}") + for i in "''${extraLDFlags[@]}"; do + declare -g EXTRA_LDFLAGS''${post}+=" -Wl,$i" + done + done + + # Extract flags from CC Wrappers + for post in '_FOR_BUILD' ""; do + curCC="NIX_CC''${post}" + curFIXINC="NIX_FIXINC_DUMMY''${post}" + + declare -a extraFlags=() + if [[ -e "''${!curCC}/nix-support/orig-libc" ]]; then + # Figure out what extra compiling flags to pass to the gcc compilers + # being generated to make sure that they use our libc. + extraFlags=($(< "''${!curCC}/nix-support/libc-crt1-cflags") $(< "''${!curCC}/nix-support/libc-cflags")) + + # The path to the Libc headers + libc_devdir="$(< "''${!curCC}/nix-support/orig-libc-dev")" + + # Use *real* header files, otherwise a limits.h is generated that + # does not include Libc's limits.h (notably missing SSIZE_MAX, + # which breaks the build). + declare -g NIX_FIXINC_DUMMY''${post}="$libc_devdir/include" + else + # Hack: support impure environments. + extraFlags=("-isystem" "/usr/include") + declare -g NIX_FIXINC_DUMMY''${post}=/usr/include + fi + + extraFlags=("-I''${!curFIXINC}" "''${extraFlags[@]}") + + # BOOT_CFLAGS defaults to `-g -O2'; since we override it below, make + # sure to explictly add them so that files compiled with the bootstrap + # compiler are optimized and (optionally) contain debugging information + # (info "(gccinstall) Building"). + if test -n "''${dontStrip-}"; then + extraFlags=("-O2" "-g" "''${extraFlags[@]}") + else + # Don't pass `-g' at all; this saves space while building. + extraFlags=("-O2" "''${extraFlags[@]}") + fi + + declare -g EXTRA_FLAGS''${post}="''${extraFlags[*]}" + done + + if test -z "''${targetConfig-}"; then + # host = target, so the flags are the same + EXTRA_FLAGS_FOR_TARGET="$EXTRA_FLAGS" + EXTRA_LDFLAGS_FOR_TARGET="$EXTRA_LDFLAGS" + fi + + # CFLAGS_FOR_TARGET are needed for the libstdc++ configure script to find + # the startfiles. + # FLAGS_FOR_TARGET are needed for the target libraries to receive the -Bxxx + # for the startfiles. + makeFlagsArray+=( + "BUILD_SYSTEM_HEADER_DIR=$NIX_FIXINC_DUMMY_FOR_BUILD" + "SYSTEM_HEADER_DIR=$NIX_FIXINC_DUMMY_FOR_BUILD" + "NATIVE_SYSTEM_HEADER_DIR=$NIX_FIXINC_DUMMY" + + "LDFLAGS_FOR_BUILD=$EXTRA_LDFLAGS_FOR_BUILD" + #"LDFLAGS=$EXTRA_LDFLAGS" + "LDFLAGS_FOR_TARGET=$EXTRA_LDFLAGS_FOR_TARGET" + + "CFLAGS_FOR_BUILD=$EXTRA_FLAGS_FOR_BUILD $EXTRA_LDFLAGS_FOR_BUILD" + "CXXFLAGS_FOR_BUILD=$EXTRA_FLAGS_FOR_BUILD $EXTRA_LDFLAGS_FOR_BUILD" + "FLAGS_FOR_BUILD=$EXTRA_FLAGS_FOR_BUILD $EXTRA_LDFLAGS_FOR_BUILD" + + # It seems there is a bug in GCC 5 + #"CFLAGS=$EXTRA_FLAGS $EXTRA_LDFLAGS" + #"CXXFLAGS=$EXTRA_FLAGS $EXTRA_LDFLAGS" + + "CFLAGS_FOR_TARGET=$EXTRA_FLAGS_FOR_TARGET $EXTRA_LDFLAGS_FOR_TARGET" + "CXXFLAGS_FOR_TARGET=$EXTRA_FLAGS_FOR_TARGET $EXTRA_LDFLAGS_FOR_TARGET" + "FLAGS_FOR_TARGET=$EXTRA_FLAGS_FOR_TARGET $EXTRA_LDFLAGS_FOR_TARGET" + ) + + if test -z "''${targetConfig-}"; then + makeFlagsArray+=( + "BOOT_CFLAGS=$EXTRA_FLAGS $EXTRA_LDFLAGS" + "BOOT_LDFLAGS=$EXTRA_FLAGS_FOR_TARGET $EXTRA_LDFLAGS_FOR_TARGET" + ) + fi + + if test "$withoutTargetLibc" == 1; then + # We don't want the gcc build to assume there will be a libc providing + # limits.h in this stage + makeFlagsArray+=( + 'LIMITS_H_TEST=false' + ) + else + makeFlagsArray+=( + 'LIMITS_H_TEST=true' + ) + fi + fi + + eval "$oldOpts" + ''; + + preConfigure = (originalAttrs.preConfigure or "") + '' + if test -n "$newlibSrc"; then + tar xvf "$newlibSrc" -C .. + ln -s ../newlib-*/newlib newlib + # Patch to get armvt5el working: + sed -i -e 's/ arm)/ arm*)/' newlib/configure.host + fi + + # Bug - they packaged zlib + if test -d "zlib"; then + # This breaks the build without-headers, which should build only + # the target libgcc as target libraries. + # See 'configure:5370' + rm -Rf zlib + fi + + if test -n "$crossMingw" -a -n "$withoutTargetLibc"; then + mkdir -p ../mingw + # --with-build-sysroot expects that: + cp -R $libcCross/include ../mingw + configureFlags="$configureFlags --with-build-sysroot=`pwd`/.." + fi + + # Perform the build in a different directory. + mkdir ../build + cd ../build + configureScript=../$sourceRoot/configure + ''; + + postConfigure = '' + # Avoid store paths when embedding ./configure flags into gcc. + # Mangled arguments are still useful when reporting bugs upstream. + sed -e "/TOPLEVEL_CONFIGURE_ARGUMENTS=/ s|$NIX_STORE/[a-z0-9]\{32\}-|$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-|g" -i Makefile + ''; + + preInstall = '' + mkdir -p "$out/''${targetConfig}/lib" + mkdir -p "''${!outputLib}/''${targetConfig}/lib" + '' + + # Make `lib64` symlinks to `lib`. + lib.optionalString (!enableMultilib && stdenv.hostPlatform.is64bit && !stdenv.hostPlatform.isMips64n32) '' + ln -s lib "$out/''${targetConfig}/lib64" + ln -s lib "''${!outputLib}/''${targetConfig}/lib64" + '' + + # On mips platforms, gcc follows the IRIX naming convention: + # + # $PREFIX/lib = mips32 + # $PREFIX/lib32 = mips64n32 + # $PREFIX/lib64 = mips64 + # + # Make `lib32` symlinks to `lib`. + lib.optionalString (!enableMultilib && stdenv.targetPlatform.isMips64n32) '' + ln -s lib "$out/''${targetConfig}/lib32" + ln -s lib "''${!outputLib}/''${targetConfig}/lib32" + ''; + + postInstall = '' + # Move runtime libraries to lib output. + moveToOutput "''${targetConfig+$targetConfig/}lib/lib*.so*" "''${!outputLib}" + moveToOutput "''${targetConfig+$targetConfig/}lib/lib*.la" "''${!outputLib}" + moveToOutput "''${targetConfig+$targetConfig/}lib/lib*.dylib" "''${!outputLib}" + moveToOutput "''${targetConfig+$targetConfig/}lib/lib*.dll.a" "''${!outputLib}" + moveToOutput "share/gcc-*/python" "''${!outputLib}" + + if [ -z "$enableShared" ]; then + moveToOutput "''${targetConfig+$targetConfig/}lib/lib*.a" "''${!outputLib}" + fi + + for i in "''${!outputLib}/''${targetConfig}"/lib/*.{la,py}; do + substituteInPlace "$i" --replace "$out" "''${!outputLib}" + done + + if [ -n "$enableMultilib" ]; then + moveToOutput "''${targetConfig+$targetConfig/}lib64/lib*.so*" "''${!outputLib}" + moveToOutput "''${targetConfig+$targetConfig/}lib64/lib*.la" "''${!outputLib}" + moveToOutput "''${targetConfig+$targetConfig/}lib64/lib*.dylib" "''${!outputLib}" + + for i in "''${!outputLib}/''${targetConfig}"/lib64/*.{la,py}; do + substituteInPlace "$i" --replace "$out" "''${!outputLib}" + done + fi + + # Remove `fixincl' to prevent a retained dependency on the + # previous gcc. + rm -rf $out/libexec/gcc/*/*/install-tools + rm -rf $out/lib/gcc/*/*/install-tools + + # More dependencies with the previous gcc or some libs (gccbug stores the build command line) + rm -rf $out/bin/gccbug + + if type "install_name_tool"; then + for i in "''${!outputLib}"/lib/*.*.dylib "''${!outputLib}"/lib/*.so.[0-9]; do + install_name_tool -id "$i" "$i" || true + for old_path in $(otool -L "$i" | grep "$out" | awk '{print $1}'); do + new_path=`echo "$old_path" | sed "s,$out,''${!outputLib},"` + install_name_tool -change "$old_path" "$new_path" "$i" || true + done + done + fi + + # Get rid of some "fixed" header files + rm -rfv $out/lib/gcc/*/*/include-fixed/{root,linux,sys/mount.h,bits/statx.h} + + # Replace hard links for i686-pc-linux-gnu-gcc etc. with symlinks. + for i in $out/bin/*-gcc*; do + if cmp -s $out/bin/gcc $i; then + ln -sfn gcc $i + fi + done + + for i in $out/bin/c++ $out/bin/*-c++* $out/bin/*-g++*; do + if cmp -s $out/bin/g++ $i; then + ln -sfn g++ $i + fi + done + + # Two identical man pages are shipped (moving and compressing is done later) + for i in "$out"/share/man/man1/*g++.1; do + if test -e "$i"; then + man_prefix=`echo "$i" | sed "s,.*/\(.*\)g++.1,\1,"` + ln -sf "$man_prefix"gcc.1 "$i" + fi + done + ''; +})) diff --git a/nixpkgs/pkgs/development/compilers/gcc/common/libgcc-buildstuff.nix b/nixpkgs/pkgs/development/compilers/gcc/common/libgcc-buildstuff.nix new file mode 100644 index 000000000000..e7dc570a560c --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/gcc/common/libgcc-buildstuff.nix @@ -0,0 +1,37 @@ +{ lib +, stdenv +}: + +# Trick to build a gcc that is capable of emitting shared libraries *without* having the +# targetPlatform libc available beforehand. Taken from: +# https://web.archive.org/web/20170222224855/http://frank.harvard.edu/~coldwell/toolchain/ +# https://web.archive.org/web/20170224235700/http://frank.harvard.edu/~coldwell/toolchain/t-linux.diff +let + # crt{i,n}.o are the first and last (respectively) object file + # linked when producing an executable. Traditionally these + # files are delivered as part of the C library, but on GNU + # systems they are in fact built by GCC. Since libgcc needs to + # build before glibc, we can't wait for them to be copied by + # glibc. At this early pre-glibc stage these files sometimes + # have different names. + crtstuff-ofiles = + if stdenv.targetPlatform.isPower + then "ecrti.o ecrtn.o ncrti.o ncrtn.o" + else "crti.o crtn.o"; + + # Normally, `SHLIB_LC` is set to `-lc`, which means that + # `libgcc_s.so` cannot be built until `libc.so` is available. + # The assignment below clobbers this variable, removing the + # `-lc`. + # + # On PowerPC we add `-mnewlib`, which means "libc has not been + # built yet". This causes libgcc's Makefile to use the + # gcc-built `{e,n}crt{n,i}.o` instead of failing to find the + # versions which have been repackaged in libc as `crt{n,i}.o` + # + SHLIB_LC = lib.optionalString stdenv.targetPlatform.isPower "-mnewlib"; + +in '' + echo 'libgcc.a: ${crtstuff-ofiles}' >> libgcc/Makefile.in + echo 'SHLIB_LC=${SHLIB_LC}' >> libgcc/Makefile.in + '' diff --git a/nixpkgs/pkgs/development/compilers/gcc/common/libgcc.nix b/nixpkgs/pkgs/development/compilers/gcc/common/libgcc.nix index b14d111e361f..4ab6eb2b3b44 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/common/libgcc.nix +++ b/nixpkgs/pkgs/development/compilers/gcc/common/libgcc.nix @@ -44,14 +44,14 @@ lib.optional (lib.versionAtLeast version "11.0") !langJit && !stdenv.hostPlatform.isDarwin && enableShared - ; + ; - # For some reason libgcc_s.so has major-version "2" on m68k but - # "1" everywhere else. Might be worth changing this to "*". - libgcc_s-version-major = - if targetPlatform.isM68k - then "2" - else "1"; + # For some reason libgcc_s.so has major-version "2" on m68k but + # "1" everywhere else. Might be worth changing this to "*". + libgcc_s-version-major = + if targetPlatform.isM68k + then "2" + else "1"; in (pkg: pkg.overrideAttrs (previousAttrs: lib.optionalAttrs ((!langC) || langJit || enableLibGccOutput) { diff --git a/nixpkgs/pkgs/development/compilers/gcc/common/pre-configure.nix b/nixpkgs/pkgs/development/compilers/gcc/common/pre-configure.nix index e386693b22c7..5cb2f186fd1d 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/common/pre-configure.nix +++ b/nixpkgs/pkgs/development/compilers/gcc/common/pre-configure.nix @@ -112,52 +112,5 @@ in lib.optionalString (hostPlatform.isSunOS && hostPlatform.is64bit) '' export inhibit_libc=true '' -# Trick to build a gcc that is capable of emitting shared libraries *without* having the -# targetPlatform libc available beforehand. Taken from: -# https://web.archive.org/web/20170222224855/http://frank.harvard.edu/~coldwell/toolchain/ -# https://web.archive.org/web/20170224235700/http://frank.harvard.edu/~coldwell/toolchain/t-linux.diff + lib.optionalString (targetPlatform != hostPlatform && withoutTargetLibc && enableShared) - (let - - # crt{i,n}.o are the first and last (respectively) object file - # linked when producing an executable. Traditionally these - # files are delivered as part of the C library, but on GNU - # systems they are in fact built by GCC. Since libgcc needs to - # build before glibc, we can't wait for them to be copied by - # glibc. At this early pre-glibc stage these files sometimes - # have different names. - crtstuff-ofiles = - if targetPlatform.isPower - then "ecrti.o ecrtn.o ncrti.o ncrtn.o" - else "crti.o crtn.o"; - - # Normally, `SHLIB_LC` is set to `-lc`, which means that - # `libgcc_s.so` cannot be built until `libc.so` is available. - # The assignment below clobbers this variable, removing the - # `-lc`. - # - # On PowerPC we add `-mnewlib`, which means "libc has not been - # built yet". This causes libgcc's Makefile to use the - # gcc-built `{e,n}crt{n,i}.o` instead of failing to find the - # versions which have been repackaged in libc as `crt{n,i}.o` - # - SHLIB_LC = lib.optionalString targetPlatform.isPower "-mnewlib"; - - in '' - echo 'libgcc.a: ${crtstuff-ofiles}' >> libgcc/Makefile.in - echo 'SHLIB_LC=${SHLIB_LC}' >> libgcc/Makefile.in - '') - -+ lib.optionalString (!enableMultilib && hostPlatform.is64bit && !hostPlatform.isMips64n32) '' - export linkLib64toLib=1 -'' - -# On mips platforms, gcc follows the IRIX naming convention: -# -# $PREFIX/lib = mips32 -# $PREFIX/lib32 = mips64n32 -# $PREFIX/lib64 = mips64 -# -+ lib.optionalString (!enableMultilib && targetPlatform.isMips64n32) '' - export linkLib32toLib=1 -'' + (import ./libgcc-buildstuff.nix { inherit lib stdenv; }) diff --git a/nixpkgs/pkgs/development/compilers/gcc/default.nix b/nixpkgs/pkgs/development/compilers/gcc/default.nix new file mode 100644 index 000000000000..f467aa32f7d1 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/gcc/default.nix @@ -0,0 +1,457 @@ +{ lib, stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs +, langC ? true, langCC ? true, langFortran ? false +, langAda ? false +, langObjC ? stdenv.targetPlatform.isDarwin +, langObjCpp ? stdenv.targetPlatform.isDarwin +, langD ? false +, langGo ? false +, reproducibleBuild ? true +, profiledCompiler ? false +, langJit ? false +, staticCompiler ? false +, enableShared ? stdenv.targetPlatform.hasSharedLibraries +, enableLTO ? stdenv.hostPlatform.hasSharedLibraries +, texinfo ? null +, perl ? null # optional, for texi2pod (then pod2man) +, gmp, mpfr, libmpc, gettext, which, patchelf, binutils +, isl ? null # optional, for the Graphite optimization framework. +, zlib ? null +, libucontext ? null +, gnat-bootstrap ? null +, enableMultilib ? false +, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins +, name ? "gcc" +, libcCross ? null +, threadsCross ? null # for MinGW +, withoutTargetLibc ? false +, gnused ? null +, cloog # unused; just for compat with gcc4, as we override the parameter on some places +, buildPackages +, libxcrypt +, disableGdbPlugin ? !enablePlugin +, nukeReferences +, callPackage +, majorMinorVersion + +# only for gcc<=6.x +, langJava ? false +, flex +, boehmgc ? null +, zip ? null, unzip ? null, pkg-config ? null +, gtk2 ? null, libart_lgpl ? null +, libX11 ? null, libXt ? null, libSM ? null, libICE ? null, libXtst ? null +, libXrender ? null, xorgproto ? null +, libXrandr ? null, libXi ? null +, x11Support ? langJava +}: + +let + version = { + "13" = "13.2.0"; + "12" = "12.3.0"; + "11" = "11.4.0"; + "10" = "10.5.0"; + "9" = "9.5.0"; + "8" = "8.5.0"; + "7" = "7.5.0"; + "6" = "6.5.0"; + "4.9"= "4.9.4"; + "4.8"= "4.8.5"; + }."${majorMinorVersion}"; + + majorVersion = lib.versions.major version; + atLeast13 = lib.versionAtLeast version "13"; + atLeast12 = lib.versionAtLeast version "12"; + atLeast11 = lib.versionAtLeast version "11"; + atLeast10 = lib.versionAtLeast version "10"; + atLeast9 = lib.versionAtLeast version "9"; + atLeast8 = lib.versionAtLeast version "8"; + atLeast7 = lib.versionAtLeast version "7"; + atLeast6 = lib.versionAtLeast version "6"; + atLeast49 = lib.versionAtLeast version "4.9"; + is13 = majorVersion == "13"; + is12 = majorVersion == "12"; + is11 = majorVersion == "11"; + is10 = majorVersion == "10"; + is9 = majorVersion == "9"; + is8 = majorVersion == "8"; + is7 = majorVersion == "7"; + is6 = majorVersion == "6"; + is49 = majorVersion == "4" && lib.versions.minor version == "9"; + is48 = majorVersion == "4" && lib.versions.minor version == "8"; +in + +# We enable the isl cloog backend. +assert !atLeast6 -> (cloog != null -> isl != null); + +assert langJava -> !atLeast7 && zip != null && unzip != null && zlib != null && boehmgc != null && perl != null; # for `--enable-java-home' + +# Make sure we get GNU sed. +assert stdenv.buildPlatform.isDarwin -> gnused != null; + +# The go frontend is written in c++ +assert langGo -> langCC; +assert (atLeast6 && !is7 && !is8) -> (langAda -> gnat-bootstrap != null); + +# TODO: fixup D bootstapping, probably by using gdc11 (and maybe other changes). +# error: GDC is required to build d +assert atLeast12 -> !langD; + +# threadsCross is just for MinGW +assert threadsCross != {} -> stdenv.targetPlatform.isWindows; + +# profiledCompiler builds inject non-determinism in one of the compilation stages. +# If turned on, we can't provide reproducible builds anymore +assert reproducibleBuild -> profiledCompiler == false; + +with lib; +with builtins; + +let inherit version; + disableBootstrap = atLeast11 && !stdenv.hostPlatform.isDarwin && (atLeast12 -> !profiledCompiler); + + inherit (stdenv) buildPlatform hostPlatform targetPlatform; + + patches = callFile ./patches {}; + + /* Cross-gcc settings (build == host != target) */ + crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt"; + stageNameAddon = if withoutTargetLibc then "stage-static" else "stage-final"; + crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-"; + + javaAwtGtk = langJava && x11Support; + xlibs = [ + libX11 libXt libSM libICE libXtst libXrender libXrandr libXi + xorgproto + ]; + callFile = lib.callPackageWith ({ + # lets + inherit + majorVersion + version + buildPlatform + hostPlatform + targetPlatform + patches + crossMingw + stageNameAddon + crossNameAddon + ; + # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc${majorVersion}.cc.override)" | jq '.[]' --raw-output' + inherit + binutils + buildPackages + cloog + withoutTargetLibc + disableBootstrap + disableGdbPlugin + enableLTO + enableMultilib + enablePlugin + enableShared + fetchpatch + fetchurl + gettext + gmp + gnat-bootstrap + gnused + isl + langAda + langC + langCC + langD + langFortran + langGo + langJit + langObjC + langObjCpp + lib + libcCross + libmpc + libucontext + libxcrypt + mpfr + name + noSysDirs + nukeReferences + patchelf + perl + profiledCompiler + reproducibleBuild + staticCompiler + stdenv + targetPackages + texinfo + threadsCross + which + zip + zlib + ; + } // lib.optionalAttrs (!atLeast7) { + inherit + boehmgc + flex + gnat-bootstrap + gtk2 + langAda + langJava + libICE + libSM + libX11 + libXi + libXrandr + libXrender + libXt + libXtst + libart_lgpl + pkg-config + unzip + x11Support + xorgproto + javaAwtGtk + xlibs + ; + javaEcj = fetchurl { + # The `$(top_srcdir)/ecj.jar' file is automatically picked up at + # `configure' time. + + # XXX: Eventually we might want to take it from upstream. + url = "ftp://sourceware.org/pub/java/ecj-4.3.jar"; + sha256 = "0jz7hvc0s6iydmhgh5h2m15yza7p2rlss2vkif30vm9y77m97qcx"; + }; + + # Antlr (optional) allows the Java `gjdoc' tool to be built. We want a + # binary distribution here to allow the whole chain to be bootstrapped. + javaAntlr = fetchurl { + url = "https://www.antlr.org/download/antlr-4.4-complete.jar"; + sha256 = "02lda2imivsvsis8rnzmbrbp8rh1kb8vmq4i67pqhkwz7lf8y6dz"; + }; + }); + +in + +# We need all these X libraries when building AWT with GTK. +assert !atLeast7 -> (x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == []); + +lib.pipe ((callFile ./common/builder.nix {}) ({ + pname = "${crossNameAddon}${name}"; + inherit version; + + src = if is6 && stdenv.targetPlatform.isVc4 then fetchFromGitHub { + owner = "itszor"; + repo = "gcc-vc4"; + rev = "e90ff43f9671c760cf0d1dd62f569a0fb9bf8918"; + sha256 = "0gxf66hwqk26h8f853sybphqa5ca0cva2kmrw5jsiv6139g0qnp8"; + } else if is6 && stdenv.targetPlatform.isRedox then fetchFromGitHub { + owner = "redox-os"; + repo = "gcc"; + rev = "f360ac095028d286fc6dde4d02daed48f59813fa"; # `redox` branch + sha256 = "1an96h8l58pppyh3qqv90g8hgcfd9hj7igvh2gigmkxbrx94khfl"; + } else fetchurl { + url = if atLeast7 + then "mirror://gcc/releases/gcc-${version}/gcc-${version}.tar.xz" + else if atLeast6 + then "mirror://gnu/gcc/gcc-${version}/gcc-${version}.tar.xz" + else "mirror://gnu/gcc/gcc-${version}/gcc-${version}.tar.bz2"; + ${if is10 || is11 || is13 then "hash" else "sha256"} = { + "13.2.0" = "sha256-4nXnZEKmBnNBon8Exca4PYYTFEAEwEE1KIY9xrXHQ9o="; + "12.3.0" = "sha256-lJpdT5nnhkIak7Uysi/6tVeN5zITaZdbka7Jet/ajDs="; + "11.4.0" = "sha256-Py2yIrAH6KSiPNW6VnJu8I6LHx6yBV7nLBQCzqc6jdk="; + "10.5.0" = "sha256-JRCVQ/30bzl8NHtdi3osflaUpaUczkucbh6opxyjB8E="; + "9.5.0" = "13ygjmd938m0wmy946pxdhz9i1wq7z4w10l6pvidak0xxxj9yxi7"; + "8.5.0" = "0l7d4m9jx124xsk6xardchgy2k5j5l2b15q322k31f0va4d8826k"; + "7.5.0" = "0qg6kqc5l72hpnj4vr6l0p69qav0rh4anlkk3y55540zy3klc6dq"; + "6.5.0" = "0i89fksfp6wr1xg9l8296aslcymv2idn60ip31wr9s4pwin7kwby"; + "4.9.4" = "14l06m7nvcvb0igkbip58x59w3nq6315k6jcz3wr9ch1rn9d44bc"; + "4.8.5" = "08yggr18v373a1ihj0rg2vd6psnic42b518xcgp3r9k81xz1xyr2"; + }."${version}"; + }; + + inherit patches; + + outputs = + if atLeast7 + then [ "out" "man" "info" ] ++ lib.optional (!langJit) "lib" + else if atLeast49 && (langJava || langGo || (if atLeast6 then langJit else targetPlatform.isDarwin)) then ["out" "man" "info"] + else [ "out" "lib" "man" "info" ]; + + setOutputFlags = false; + NIX_NO_SELF_RPATH = true; + + libc_dev = stdenv.cc.libc_dev; + + hardeningDisable = [ "format" "pie" ] + ++ lib.optionals (is11 && langAda) [ "fortify3" ]; + + postPatch = lib.optionalString atLeast7 '' + configureScripts=$(find . -name configure) + for configureScript in $configureScripts; do + patchShebangs $configureScript + done + '' + # This should kill all the stdinc frameworks that gcc and friends like to + # insert into default search paths. + + lib.optionalString (atLeast6 && hostPlatform.isDarwin) '' + substituteInPlace gcc/config/darwin-c.c${lib.optionalString atLeast12 "c"} \ + --replace 'if (stdinc)' 'if (0)' + + substituteInPlace libgcc/config/t-slibgcc-darwin \ + --replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name ''${!outputLib}/lib/\$(SHLIB_INSTALL_NAME)" + + substituteInPlace libgfortran/configure \ + --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname" + '' + + ( + lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null) + # 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'${lib.optionalString atLeast6 ", \\`UCLIBC_DYNAMIC_LINKER',"} and \`${if atLeast6 then "MUSL" else "UCLIBC"}_DYNAMIC_LINKER' macros..." + for header in "gcc/config/"*-gnu.h "gcc/config/"*"/"*.h + do + grep -q ${lib.optionalString (!atLeast6) "LIBC"}_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'${lib.optionalString atLeast6 " \\"} + '' + lib.optionalString atLeast6 '' +${""} -e 's|define[[:blank:]]*MUSL_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define MUSL_DYNAMIC_LINKER\1 "${libc.out}\2"|g' + '' + '' +${""} done + '' + lib.optionalString (atLeast6 && targetPlatform.libc == "musl") '' + sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR' + '' + ) + )) + + lib.optionalString (atLeast7 && targetPlatform.isAvr) ('' + makeFlagsArray+=( + '' + (lib.optionalString atLeast10 '' + '-s' # workaround for hitting hydra log limit + '') + '' + 'LIMITS_H_TEST=false' + ) + ''); + + inherit noSysDirs staticCompiler withoutTargetLibc + libcCross crossMingw; + + inherit (callFile ./common/dependencies.nix { }) depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget; + + preConfigure = (callFile ./common/pre-configure.nix { }) + lib.optionalString atLeast10 '' + ln -sf ${libxcrypt}/include/crypt.h libsanitizer/sanitizer_common/crypt.h + ''; + + dontDisableStatic = true; + + configurePlatforms = [ "build" "host" "target" ]; + + configureFlags = (callFile ./common/configure-flags.nix { }) + ++ optional (is7 && targetPlatform.isAarch64) "--enable-fix-cortex-a53-843419" + ++ optional (is7 && targetPlatform.isNetBSD) "--disable-libcilkrts"; + + targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null; + + buildFlags = + # we do not yet have Nix-driven profiling + assert atLeast12 -> (profiledCompiler -> !disableBootstrap); + if atLeast11 + then let target = + lib.optionalString (profiledCompiler) "profiled" + + lib.optionalString (targetPlatform == hostPlatform && hostPlatform == buildPlatform && !disableBootstrap) "bootstrap"; + in lib.optional (target != "") target + else + optional + (targetPlatform == hostPlatform && hostPlatform == buildPlatform) + (if profiledCompiler then "profiledbootstrap" else "bootstrap"); + + inherit (callFile ./common/strip-attributes.nix { }) + stripDebugList + stripDebugListTarget + preFixup; + + # https://gcc.gnu.org/PR109898 + enableParallelInstalling = false; + + # 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. + # + # Note: When building the Java AWT GTK peer, the build system doesn't honor + # `--with-gmp' et al., e.g., when building + # `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just add + # them to $CPATH and $LIBRARY_PATH in this case. + # + # 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 + ++ optional langJava boehmgc + ++ optionals javaAwtGtk xlibs + ++ optionals javaAwtGtk [ gmp mpfr ] + )); + + LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ( + optional (zlib != null) zlib + ++ optional langJava boehmgc + ++ optionals javaAwtGtk xlibs + ++ optionals javaAwtGtk [ gmp mpfr ] + )); + + inherit (callFile ./common/extra-target-flags.nix { }) + EXTRA_FLAGS_FOR_TARGET + EXTRA_LDFLAGS_FOR_TARGET + ; + + passthru = { + inherit langC langCC langObjC langObjCpp langAda langFortran langGo langD version; + isGNU = true; + } // lib.optionalAttrs (!atLeast12) { + hardeningUnsupportedFlags = lib.optionals is48 [ "stackprotector" ] ++ [ "fortify3" ]; + }; + + enableParallelBuilding = true; + inherit enableShared enableMultilib; + + meta = { + inherit (callFile ./common/meta.nix { }) + homepage + license + description + longDescription + platforms + maintainers + ; + } // lib.optionalAttrs (!atLeast11) { + badPlatforms = if !is49 then [ "aarch64-darwin" ] else lib.platforms.darwin; + }; +} // optionalAttrs is7 { + env.NIX_CFLAGS_COMPILE = lib.optionalString (stdenv.cc.isClang && langFortran) "-Wno-unused-command-line-argument"; +} // optionalAttrs (!atLeast7) { + env.langJava = langJava; +} // optionalAttrs atLeast6 { + NIX_LDFLAGS = lib.optionalString hostPlatform.isSunOS "-lm"; +} // optionalAttrs (!atLeast8) { + doCheck = false; # requires a lot of tools, causes a dependency cycle for stdenv +} // optionalAttrs enableMultilib { + dontMoveLib64 = true; +} // optionalAttrs (((is49 && !stdenv.hostPlatform.isDarwin) || is6) && langJava) { + postFixup = '' + target="$(echo "$out/libexec/gcc"/*/*/ecj*)" + patchelf --set-rpath "$(patchelf --print-rpath "$target"):$out/lib" "$target" + ''; +} +)) +([ + (callPackage ./common/libgcc.nix { inherit version langC langCC langJit targetPlatform hostPlatform withoutTargetLibc enableShared; }) +] ++ optionals atLeast11 [ + (callPackage ./common/checksum.nix { inherit langC langCC; }) +]) + diff --git a/nixpkgs/pkgs/development/compilers/gcc/10/Added-mcf-thread-model-support-from-mcfgthread.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/10/Added-mcf-thread-model-support-from-mcfgthread.patch index d9809e828f10..d9809e828f10 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/10/Added-mcf-thread-model-support-from-mcfgthread.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/10/Added-mcf-thread-model-support-from-mcfgthread.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/11/Added-mcf-thread-model-support-from-mcfgthread.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/11/Added-mcf-thread-model-support-from-mcfgthread.patch index 77202438e47d..77202438e47d 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/11/Added-mcf-thread-model-support-from-mcfgthread.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/11/Added-mcf-thread-model-support-from-mcfgthread.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/11/avr-gcc-11.3-darwin.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/11/avr-gcc-11.3-darwin.patch index 787862fbcffa..787862fbcffa 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/11/avr-gcc-11.3-darwin.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/11/avr-gcc-11.3-darwin.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/11/gcc-issue-103910.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/11/gcc-issue-103910.patch index c3edd960f097..c3edd960f097 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/11/gcc-issue-103910.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/11/gcc-issue-103910.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/12/Added-mcf-thread-model-support-from-mcfgthread.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/12/Added-mcf-thread-model-support-from-mcfgthread.patch index 77202438e47d..77202438e47d 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/12/Added-mcf-thread-model-support-from-mcfgthread.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/12/Added-mcf-thread-model-support-from-mcfgthread.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/12/lambda-ICE-PR109241.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/12/lambda-ICE-PR109241.patch index a27a8a08d9d5..a27a8a08d9d5 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/12/lambda-ICE-PR109241.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/12/lambda-ICE-PR109241.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/patches/13/no-sys-dirs-riscv.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/13/no-sys-dirs-riscv.patch new file mode 100644 index 000000000000..add4d59b41ae --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/13/no-sys-dirs-riscv.patch @@ -0,0 +1,13 @@ +--- a/gcc/config/riscv/linux.h ++++ b/gcc/config/riscv/linux.h +@@ -69,9 +69,5 @@ + + #define TARGET_ASM_FILE_END file_end_indicate_exec_stack + +-#define STARTFILE_PREFIX_SPEC \ +- "/lib" XLEN_SPEC "/" ABI_SPEC "/ " \ +- "/usr/lib" XLEN_SPEC "/" ABI_SPEC "/ " \ +- "/lib/ " \ +- "/usr/lib/ " ++#define STARTFILE_PREFIX_SPEC "" + diff --git a/nixpkgs/pkgs/development/compilers/gcc/4.9/libsanitizer.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/4.9/libsanitizer.patch index f1a438a4e5f0..f1a438a4e5f0 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/4.9/libsanitizer.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/4.9/libsanitizer.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/4.9/parallel-strsignal.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/4.9/parallel-strsignal.patch index 4c98ca273a54..4c98ca273a54 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/4.9/parallel-strsignal.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/4.9/parallel-strsignal.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/6/0001-Fix-build-for-glibc-2.31.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/6/0001-Fix-build-for-glibc-2.31.patch index 0cd04e218caf..0cd04e218caf 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/6/0001-Fix-build-for-glibc-2.31.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/6/0001-Fix-build-for-glibc-2.31.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/6/Added-mcf-thread-model-support-from-mcfgthread.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/6/Added-mcf-thread-model-support-from-mcfgthread.patch index 25e3a902cbf2..25e3a902cbf2 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/6/Added-mcf-thread-model-support-from-mcfgthread.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/6/Added-mcf-thread-model-support-from-mcfgthread.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/6/fix-objdump-check.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/6/fix-objdump-check.patch index f9adbe9eb1ca..f9adbe9eb1ca 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/6/fix-objdump-check.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/6/fix-objdump-check.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/6/gnat-glibc234.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/6/gnat-glibc234.patch index 2d29cd7fa77f..2d29cd7fa77f 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/6/gnat-glibc234.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/6/gnat-glibc234.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/6/gogcc-workaround-glibc-2.36.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/6/gogcc-workaround-glibc-2.36.patch index bc11f990e5e9..bc11f990e5e9 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/6/gogcc-workaround-glibc-2.36.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/6/gogcc-workaround-glibc-2.36.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/7/0001-Fix-build-for-glibc-2.31.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/7/0001-Fix-build-for-glibc-2.31.patch index d8aad14942bf..d8aad14942bf 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/7/0001-Fix-build-for-glibc-2.31.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/7/0001-Fix-build-for-glibc-2.31.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/7/Added-mcf-thread-model-support-from-mcfgthread.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/7/Added-mcf-thread-model-support-from-mcfgthread.patch index 0c5d0ee9e460..0c5d0ee9e460 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/7/Added-mcf-thread-model-support-from-mcfgthread.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/7/Added-mcf-thread-model-support-from-mcfgthread.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/7/gcc8-asan-glibc-2.34.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/7/gcc8-asan-glibc-2.34.patch index 5645b97c1d89..5645b97c1d89 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/7/gcc8-asan-glibc-2.34.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/7/gcc8-asan-glibc-2.34.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/7/riscv-no-relax.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/7/riscv-no-relax.patch index 93d9cd1d60f5..93d9cd1d60f5 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/7/riscv-no-relax.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/7/riscv-no-relax.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/7/riscv-pthread-reentrant.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/7/riscv-pthread-reentrant.patch index c7527ffb2b16..c7527ffb2b16 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/7/riscv-pthread-reentrant.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/7/riscv-pthread-reentrant.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/8/Added-mcf-thread-model-support-from-mcfgthread.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/8/Added-mcf-thread-model-support-from-mcfgthread.patch index d9809e828f10..d9809e828f10 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/8/Added-mcf-thread-model-support-from-mcfgthread.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/8/Added-mcf-thread-model-support-from-mcfgthread.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/9/Added-mcf-thread-model-support-from-mcfgthread.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/9/Added-mcf-thread-model-support-from-mcfgthread.patch index d9809e828f10..d9809e828f10 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/9/Added-mcf-thread-model-support-from-mcfgthread.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/9/Added-mcf-thread-model-support-from-mcfgthread.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/9/avoid-cycling-subreg-reloads.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/9/avoid-cycling-subreg-reloads.patch index 17a4e0a2447b..17a4e0a2447b 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/9/avoid-cycling-subreg-reloads.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/9/avoid-cycling-subreg-reloads.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/9/fix-struct-redefinition-on-glibc-2.36.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/9/fix-struct-redefinition-on-glibc-2.36.patch index 5b4abfd02e0b..5b4abfd02e0b 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/9/fix-struct-redefinition-on-glibc-2.36.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/9/fix-struct-redefinition-on-glibc-2.36.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/9/gcc9-asan-glibc-2.34.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/9/gcc9-asan-glibc-2.34.patch index 1aea1f9b18a1..1aea1f9b18a1 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/9/gcc9-asan-glibc-2.34.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/9/gcc9-asan-glibc-2.34.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/ada-cctools-as-detection-configure.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/ada-cctools-as-detection-configure.patch index e6b5b3653322..e6b5b3653322 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/ada-cctools-as-detection-configure.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/ada-cctools-as-detection-configure.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/patches/default.nix b/nixpkgs/pkgs/development/compilers/gcc/patches/default.nix new file mode 100644 index 000000000000..79dbad30a0a9 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/default.nix @@ -0,0 +1,245 @@ +{ lib, stdenv +, langC +, langAda +, langObjC +, langObjCpp +, langD +, langFortran +, langGo +, reproducibleBuild +, profiledCompiler +, langJit +, staticCompiler +, enableShared +, enableLTO +, version +, fetchpatch +, majorVersion +, targetPlatform +, hostPlatform +, noSysDirs +, buildPlatform +, fetchurl +, withoutTargetLibc +, threadsCross +}: + +let + atLeast13 = lib.versionAtLeast version "13"; + atLeast12 = lib.versionAtLeast version "12"; + atLeast11 = lib.versionAtLeast version "11"; + atLeast10 = lib.versionAtLeast version "10"; + atLeast9 = lib.versionAtLeast version "9"; + atLeast8 = lib.versionAtLeast version "8"; + atLeast7 = lib.versionAtLeast version "7"; + atLeast6 = lib.versionAtLeast version "6"; + atLeast49 = lib.versionAtLeast version "4.9"; + is13 = majorVersion == "13"; + is12 = majorVersion == "12"; + is11 = majorVersion == "11"; + is10 = majorVersion == "10"; + is9 = majorVersion == "9"; + is8 = majorVersion == "8"; + is7 = majorVersion == "7"; + is6 = majorVersion == "6"; + is49 = majorVersion == "4" && lib.versions.minor version == "9"; + is48 = majorVersion == "4" && lib.versions.minor version == "8"; + inherit (lib) optionals optional; +in + +optionals (is49 || is6) [ + ./9/fix-struct-redefinition-on-glibc-2.36.patch +] ++ optionals (is49 || (is6 && !stdenv.targetPlatform.isRedox)) [ + ./use-source-date-epoch.patch +] ++ optionals (is6 && !stdenv.targetPlatform.isRedox) [ + ./6/0001-Fix-build-for-glibc-2.31.patch +] ++ optionals (!atLeast6) [ + ./parallel-bconfig.patch +] ++ optionals (is49) [ + (./. + "/${lib.versions.major version}.${lib.versions.minor version}/parallel-strsignal.patch") + (./. + "/${lib.versions.major version}.${lib.versions.minor version}/libsanitizer.patch") + (fetchpatch { + name = "avoid-ustat-glibc-2.28.patch"; + url = "https://gitweb.gentoo.org/proj/gcc-patches.git/plain/4.9.4/gentoo/100_all_avoid-ustat-glibc-2.28.patch?id=55fcb515620a8f7d3bb77eba938aa0fcf0d67c96"; + sha256 = "0b32sb4psv5lq0ij9fwhi1b4pjbwdjnv24nqprsk14dsc6xmi1g0"; + }) +] ++ optionals (is7) [ + # https://gcc.gnu.org/ml/gcc-patches/2018-02/msg00633.html + (./. + "/${majorVersion}/riscv-pthread-reentrant.patch") + # https://gcc.gnu.org/ml/gcc-patches/2018-03/msg00297.html + (./. + "/${majorVersion}/riscv-no-relax.patch") + # Fix for asan w/glibc-2.34. Although there's no upstream backport to v7, + # the patch from gcc 8 seems to work perfectly fine. + (./. + "/${majorVersion}/gcc8-asan-glibc-2.34.patch") + (./. + "/${majorVersion}/0001-Fix-build-for-glibc-2.31.patch") +] ++ optional (majorVersion == "9") ./9/fix-struct-redefinition-on-glibc-2.36.patch +++ optional (atLeast6 && !atLeast12) ./fix-bug-80431.patch +++ optional (is7 || is8) ./9/fix-struct-redefinition-on-glibc-2.36.patch +++ optional (targetPlatform != hostPlatform) ./libstdc++-target.patch +++ optional (atLeast7 && !atLeast10 && targetPlatform.isNetBSD) ./libstdc++-netbsd-ctypes.patch +++ optional (noSysDirs) (if atLeast12 then ./gcc-12-no-sys-dirs.patch else ./no-sys-dirs.patch) +++ optionals (is6 && langAda) [ + ./gnat-cflags.patch + ./6/gnat-glibc234.patch +] ++ optional (noSysDirs && atLeast10 && !atLeast13 && (is10 || (!atLeast12 -> hostPlatform.isRiscV))) ./no-sys-dirs-riscv.patch +++ optional (noSysDirs && is13) ./13/no-sys-dirs-riscv.patch +++ optional (noSysDirs && is9 && hostPlatform.isRiscV) ./no-sys-dirs-riscv-gcc9.patch +++ optionals (langAda || atLeast12) [ + ./gnat-cflags-11.patch +] ++ optionals (langAda && (is9 || is10)) [ + ./gnat-cflags.patch +] ++ optionals atLeast12 [ + ./gcc-12-gfortran-driving.patch + ./ppc-musl.patch +] ++ optionals is12 [ + # backport ICE fix on ccache code + ./12/lambda-ICE-PR109241.patch +] +# We only apply this patch when building a native toolchain for aarch64-darwin, as it breaks building +# a foreign one: https://github.com/iains/gcc-12-branch/issues/18 +++ optionals (stdenv.isDarwin && stdenv.isAarch64 && buildPlatform == hostPlatform && hostPlatform == targetPlatform) ({ + "13" = [ (fetchpatch { + name = "gcc-13-darwin-aarch64-support.patch"; + url = "https://raw.githubusercontent.com/Homebrew/formula-patches/3c5cbc8e9cf444a1967786af48e430588e1eb481/gcc/gcc-13.2.0.diff"; + sha256 = "sha256-Y5r3U3dwAFG6+b0TNCFd18PNxYu2+W/5zDbZ5cHvv+U="; + }) ]; + "12" = [ (fetchurl { + name = "gcc-12-darwin-aarch64-support.patch"; + url = "https://raw.githubusercontent.com/Homebrew/formula-patches/f1188b90d610e2ed170b22512ff7435ba5c891e2/gcc/gcc-12.3.0.diff"; + sha256 = "sha256-naL5ZNiurqfDBiPSU8PTbTmLqj25B+vjjiqc4fAFgYs="; + }) ]; +}."${majorVersion}" or []) +++ optional (atLeast9 && langD) ./libphobos.patch +++ optional (is7 && hostPlatform != buildPlatform) (fetchpatch { # XXX: Refine when this should be applied + url = "https://git.busybox.net/buildroot/plain/package/gcc/7.1.0/0900-remove-selftests.patch?id=11271540bfe6adafbc133caf6b5b902a816f5f02"; + sha256 = "0mrvxsdwip2p3l17dscpc1x8vhdsciqw1z5q9i6p5g9yg1cqnmgs"; +}) +++ optional (!atLeast12 && langFortran) ./gfortran-driving.patch +++ optional (!atLeast49 && hostPlatform.isDarwin) ./gfortran-darwin-NXConstStr.patch +++ optionals (is49) [ + # glibc-2.26 + ./struct-ucontext.patch + ./struct-sigaltstack-4.9.patch +] +# TODO: deduplicate this with copy above -- leaving duplicated for now in order to avoid changing eval results by reordering +++ optional (atLeast7 && !atLeast12 && targetPlatform.libc == "musl" && targetPlatform.isPower) ./ppc-musl.patch +++ optional ((is6 || is7) && targetPlatform.libc == "musl" && targetPlatform.isx86_32) (fetchpatch { + url = "https://git.alpinelinux.org/aports/plain/main/gcc/gcc-6.1-musl-libssp.patch?id=5e4b96e23871ee28ef593b439f8c07ca7c7eb5bb"; + sha256 = "1jf1ciz4gr49lwyh8knfhw6l5gvfkwzjy90m7qiwkcbsf4a3fqn2"; +}) +++ optional ((is6 || is7 || is8) && !atLeast9 && targetPlatform.libc == "musl") ./libgomp-dont-force-initial-exec.patch +++ optional (is6 && langGo) ./gogcc-workaround-glibc-2.36.patch +# TODO: deduplicate this with copy above -- leaving duplicated for now in order to avoid changing eval results by reordering +++ optionals (is11 && stdenv.isDarwin) [ + (fetchpatch { + # There are no upstream release tags in https://github.com/iains/gcc-11-branch. + # ff4bf32 is the commit from https://github.com/gcc-mirror/gcc/releases/tag/releases%2Fgcc-11.4.0 + url = "https://github.com/iains/gcc-11-branch/compare/ff4bf326d03e750a8d4905ea49425fe7d15a04b8..gcc-11.4-darwin-r0.diff"; + hash = "sha256-6prPgR2eGVJs7vKd6iM1eZsEPCD1ShzLns2Z+29vlt4="; + }) +] +# https://github.com/osx-cross/homebrew-avr/issues/280#issuecomment-1272381808 +++ optional (is11 && stdenv.isDarwin && targetPlatform.isAvr) ./avr-gcc-11.3-darwin.patch + +# backport fixes to build gccgo with musl libc +++ optionals (atLeast12 && langGo && stdenv.hostPlatform.isMusl) [ + (fetchpatch { + excludes = [ "gcc/go/gofrontend/MERGE" ]; + url = "https://github.com/gcc-mirror/gcc/commit/cf79b1117bd177d3d4c6ed24b6fa243c3628ac2d.diff"; + hash = "sha256-mS5ZiYi5D8CpGXrWg3tXlbhp4o86ew1imCTwaHLfl+I="; + }) + (fetchpatch { + excludes = [ "gcc/go/gofrontend/MERGE" ]; + url = "https://github.com/gcc-mirror/gcc/commit/7f195a2270910a6ed08bd76e3a16b0a6503f9faf.diff"; + hash = "sha256-Ze/cFM0dQofKH00PWPDoklXUlwWhwA1nyTuiDAZ6FKo="; + }) + (fetchpatch { + excludes = [ "gcc/go/gofrontend/MERGE" ]; + url = "https://github.com/gcc-mirror/gcc/commit/762fd5e5547e464e25b4bee435db6df4eda0de90.diff"; + hash = "sha256-o28upwTcHAnHG2Iq0OewzwSBEhHs+XpBGdIfZdT81pk="; + }) + (fetchpatch { + excludes = [ "gcc/go/gofrontend/MERGE" ]; + url = "https://github.com/gcc-mirror/gcc/commit/e73d9fcafbd07bc3714fbaf8a82db71d50015c92.diff"; + hash = "sha256-1SjYCVHLEUihdON2TOC3Z2ufM+jf2vH0LvYtZL+c1Fo="; + }) + (fetchpatch { + excludes = [ "gcc/go/gofrontend/MERGE" ]; + url = "https://github.com/gcc-mirror/gcc/commit/b6c6a3d64f2e4e9347733290aca3c75898c44b2e.diff"; + hash = "sha256-RycJ3YCHd3MXtYFjxP0zY2Wuw7/C4bWoBAQtTKJZPOQ="; + }) + (fetchpatch { + excludes = [ "gcc/go/gofrontend/MERGE" ]; + url = "https://github.com/gcc-mirror/gcc/commit/2b1a604a9b28fbf4f382060bebd04adb83acc2f9.diff"; + hash = "sha256-WiBQG0Xbk75rHk+AMDvsbrm+dc7lDH0EONJXSdEeMGE="; + }) + (fetchpatch { + url = "https://github.com/gcc-mirror/gcc/commit/c86b726c048eddc1be320c0bf64a897658bee13d.diff"; + hash = "sha256-QSIlqDB6JRQhbj/c3ejlmbfWz9l9FurdSWxpwDebnlI="; + }) +] + +# Fix detection of bootstrap compiler Ada support (cctools as) on Nix Darwin +++ optional (atLeast12 && stdenv.isDarwin && langAda) ./ada-cctools-as-detection-configure.patch + +# Use absolute path in GNAT dylib install names on Darwin +++ optional (atLeast12 && stdenv.isDarwin && langAda) ./gnat-darwin-dylib-install-name.patch + +# Obtain latest patch with ../update-mcfgthread-patches.sh +++ optional (atLeast6 && !atLeast13 && !withoutTargetLibc && targetPlatform.isMinGW && threadsCross.model == "mcf") + (./. + "/${majorVersion}/Added-mcf-thread-model-support-from-mcfgthread.patch") + +# Retpoline patches pulled from the branch hjl/indirect/gcc-4_9-branch (by H.J. Lu, the author of GCC upstream retpoline commits) +++ optionals is49 + (builtins.map ({commit, sha256}: fetchpatch {url = "https://github.com/hjl-tools/gcc/commit/${commit}.patch"; inherit sha256;}) + [{ commit = "e623d21608e96ecd6b65f0d06312117d20488a38"; sha256 = "1ix8i4d2r3ygbv7npmsdj790rhxqrnfwcqzv48b090r9c3ij8ay3"; } + { commit = "2015a09e332309f12de1dadfe179afa6a29368b8"; sha256 = "0xcfs0cbb63llj2gbcdrvxim79ax4k4aswn0a3yjavxsj71s1n91"; } + { commit = "6b11591f4494f705e8746e7d58b7f423191f4e92"; sha256 = "0aydyhsm2ig0khgbp27am7vq7liyqrq6kfhfi2ki0ij0ab1hfbga"; } + { commit = "203c7d9c3e9cb0f88816b481ef8e7e87b3ecc373"; sha256 = "0wqn16y7wy5kg8ngfcni5qdwfphl01axczibbk49bxclwnzvldqa"; } + { commit = "f039c6f284b2c9ce97c8353d6034978795c4872e"; sha256 = "13fkgdb17lpyxfksz1zanxhgpsm0jrss9w61nbl7an4im22hz7ci"; } + { commit = "ed42606bdab1c5d9e5ad828cd6fe1a0557f193b7"; sha256 = "0gdnn8v3p03imj3qga2mzdhpgbmjcklkxdl97jvz5xia2ikzknxm"; } + { commit = "5278e062ef292fd2fbf987d25389785f4c5c0f99"; sha256 = "0j81x758wf8v7j4rx5wc1cy7yhkvhlhv3wmnarwakxiwsspq0vrs"; } + { commit = "76f1ffbbb6cd9f6ecde6c82cd16e20a27242e890"; sha256 = "1py56y6gp7fjf4f8bbsfwh5bs1gnmlqda1ycsmnwlzfm0cshdp0c"; } + { commit = "4ca48b2b688b135c0390f54ea9077ef10aedd52c"; sha256 = "15r019pzr3k0lpgyvdc92c8fayw8b5lrzncna4bqmamcsdz7vsaw"; } + { commit = "98c7bf9ddc80db965d69d61521b1c7a1cec32d9a"; sha256 = "1d7pfdv1q23nf0wadw7jbp6d6r7pnzjpbyxgbdfv7j1vr9l1bp60"; } + { commit = "3dc76b53ad896494ca62550a7a752fecbca3f7a2"; sha256 = "0jvdzfpvfdmklfcjwqblwq1i22iqis7ljpvm7adra5d7zf2xk7xz"; } + { commit = "1e961ed49b18e176c7457f53df2433421387c23b"; sha256 = "04dnqqs4qsvz4g8cq6db5id41kzys7hzhcaycwmc9rpqygs2ajwz"; } + { commit = "e137c72d099f9b3b47f4cc718aa11eab14df1a9c"; sha256 = "1ms0dmz74yf6kwgjfs4d2fhj8y6mcp2n184r3jk44wx2xc24vgb2"; }]) + +++ optional (atLeast49 && !atLeast9) ./libsanitizer-no-cyclades-9.patch +++ optional (is49 && !atLeast6) [ + # gcc-11 compatibility + (fetchpatch { + name = "gcc4-char-reload.patch"; + url = "https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=d57c99458933a21fdf94f508191f145ad8d5ec58"; + includes = [ "gcc/reload.h" ]; + sha256 = "sha256-66AMP7/ajunGKAN5WJz/yPn42URZ2KN51yPrFdsxEuM="; + }) +] + +# openjdk build fails without this on -march=opteron; is upstream in gcc12 +++ optionals (is11) [ ./11/gcc-issue-103910.patch ] + +++ optional (is10 && buildPlatform.system == "aarch64-darwin" && targetPlatform != buildPlatform) (fetchpatch { + url = "https://raw.githubusercontent.com/richard-vd/musl-cross-make/5e9e87f06fc3220e102c29d3413fbbffa456fcd6/patches/gcc-${version}/0008-darwin-aarch64-self-host-driver.patch"; + sha256 = "sha256-XtykrPd5h/tsnjY1wGjzSOJ+AyyNLsfnjuOZ5Ryq9vA="; +}) +++ lib.optionals is48 [ + (fetchpatch { + name = "libc_name_p.diff"; # needed to build with gcc6 + url = "https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=ec1cc0263f1"; + sha256 = "01jd7pdarh54ki498g6sz64ijl9a1l5f9v8q2696aaxalvh2vwzl"; + excludes = [ "gcc/cp/ChangeLog" ]; + }) + # glibc-2.26 + ./struct-ucontext-4.8.patch + ./sigsegv-not-declared.patch + ./res_state-not-declared.patch + # gcc-11 compatibility + (fetchpatch { + name = "gcc4-char-reload.patch"; + url = "https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=d57c99458933a21fdf94f508191f145ad8d5ec58"; + includes = [ "gcc/reload.h" ]; + sha256 = "sha256-66AMP7/ajunGKAN5WJz/yPn42URZ2KN51yPrFdsxEuM="; + }) +] diff --git a/nixpkgs/pkgs/development/compilers/gcc/fix-bug-80431.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/fix-bug-80431.patch index 2d688b8c7997..2d688b8c7997 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/fix-bug-80431.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/fix-bug-80431.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/gcc-12-gfortran-driving.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/gcc-12-gfortran-driving.patch index 0ad1f256063f..0ad1f256063f 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/gcc-12-gfortran-driving.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/gcc-12-gfortran-driving.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/gcc-12-no-sys-dirs.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/gcc-12-no-sys-dirs.patch index 67a94298440f..67a94298440f 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/gcc-12-no-sys-dirs.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/gcc-12-no-sys-dirs.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/gfortran-darwin-NXConstStr.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/gfortran-darwin-NXConstStr.patch index a7e158ca364b..a7e158ca364b 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/gfortran-darwin-NXConstStr.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/gfortran-darwin-NXConstStr.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/gfortran-driving.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/gfortran-driving.patch index 70708886b405..70708886b405 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/gfortran-driving.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/gfortran-driving.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/gnat-cflags-11.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/gnat-cflags-11.patch index 03ef28664524..03ef28664524 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/gnat-cflags-11.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/gnat-cflags-11.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/gnat-cflags.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/gnat-cflags.patch index a16266bbf39c..a16266bbf39c 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/gnat-cflags.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/gnat-cflags.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/gnat-darwin-dylib-install-name.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/gnat-darwin-dylib-install-name.patch index 01e5de86a438..01e5de86a438 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/gnat-darwin-dylib-install-name.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/gnat-darwin-dylib-install-name.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/libgomp-dont-force-initial-exec.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/libgomp-dont-force-initial-exec.patch index afd1f7456d32..afd1f7456d32 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/libgomp-dont-force-initial-exec.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/libgomp-dont-force-initial-exec.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/libphobos.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/libphobos.patch index a16ea5416ffb..a16ea5416ffb 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/libphobos.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/libphobos.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/libsanitizer-no-cyclades-9.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/libsanitizer-no-cyclades-9.patch index 072403d1495f..072403d1495f 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/libsanitizer-no-cyclades-9.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/libsanitizer-no-cyclades-9.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/libsanitizer-no-cyclades.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/libsanitizer-no-cyclades.patch index e2155cd0c982..e2155cd0c982 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/libsanitizer-no-cyclades.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/libsanitizer-no-cyclades.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/libstdc++-netbsd-ctypes.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/libstdc++-netbsd-ctypes.patch index 28fff80b786d..28fff80b786d 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/libstdc++-netbsd-ctypes.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/libstdc++-netbsd-ctypes.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/libstdc++-target.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/libstdc++-target.patch index fb622b395806..fb622b395806 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/libstdc++-target.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/libstdc++-target.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/no-sys-dirs-riscv-gcc9.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/no-sys-dirs-riscv-gcc9.patch index afe3f26360e4..afe3f26360e4 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/no-sys-dirs-riscv-gcc9.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/no-sys-dirs-riscv-gcc9.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/no-sys-dirs-riscv.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/no-sys-dirs-riscv.patch index 00e2838af6fd..00e2838af6fd 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/no-sys-dirs-riscv.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/no-sys-dirs-riscv.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/no-sys-dirs.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/no-sys-dirs.patch index 36df51904acf..36df51904acf 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/no-sys-dirs.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/no-sys-dirs.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/parallel-bconfig.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/parallel-bconfig.patch index bc56ac698f5a..bc56ac698f5a 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/parallel-bconfig.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/parallel-bconfig.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/ppc-musl.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/ppc-musl.patch index bc90888a3797..bc90888a3797 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/ppc-musl.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/ppc-musl.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/res_state-not-declared.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/res_state-not-declared.patch index e970487786d0..e970487786d0 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/res_state-not-declared.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/res_state-not-declared.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/sigsegv-not-declared.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/sigsegv-not-declared.patch index f9cfaec82026..f9cfaec82026 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/sigsegv-not-declared.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/sigsegv-not-declared.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/struct-sigaltstack-4.9.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-sigaltstack-4.9.patch index fc126b4813d6..fc126b4813d6 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/struct-sigaltstack-4.9.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-sigaltstack-4.9.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/struct-sigaltstack.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-sigaltstack.patch index 6e1ddb252c24..6e1ddb252c24 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/struct-sigaltstack.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-sigaltstack.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/struct-ucontext-4.5.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-ucontext-4.5.patch index a84e9ffe2681..a84e9ffe2681 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/struct-ucontext-4.5.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-ucontext-4.5.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/struct-ucontext-4.8.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-ucontext-4.8.patch index 630ef6586e45..630ef6586e45 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/struct-ucontext-4.8.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-ucontext-4.8.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/struct-ucontext-libjava.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-ucontext-libjava.patch index 3892a56954e0..3892a56954e0 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/struct-ucontext-libjava.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-ucontext-libjava.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/struct-ucontext.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-ucontext.patch index c7fb6d1f71cf..c7fb6d1f71cf 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/struct-ucontext.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-ucontext.patch diff --git a/nixpkgs/pkgs/development/compilers/gcc/update-mcfgthread-patches.sh b/nixpkgs/pkgs/development/compilers/gcc/patches/update-mcfgthread-patches.sh index c4fd79b26c34..c4fd79b26c34 100755 --- a/nixpkgs/pkgs/development/compilers/gcc/update-mcfgthread-patches.sh +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/update-mcfgthread-patches.sh diff --git a/nixpkgs/pkgs/development/compilers/gcc/use-source-date-epoch.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/use-source-date-epoch.patch index 65a5ab028c1c..65a5ab028c1c 100644 --- a/nixpkgs/pkgs/development/compilers/gcc/use-source-date-epoch.patch +++ b/nixpkgs/pkgs/development/compilers/gcc/patches/use-source-date-epoch.patch diff --git a/nixpkgs/pkgs/development/compilers/gcl/2.6.13-pre.nix b/nixpkgs/pkgs/development/compilers/gcl/2.6.13-pre.nix index 3e11738b462b..a4d01cba729f 100644 --- a/nixpkgs/pkgs/development/compilers/gcl/2.6.13-pre.nix +++ b/nixpkgs/pkgs/development/compilers/gcl/2.6.13-pre.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { sed -e 's/<= obj-date/<= (if (= 0 obj-date) 1 obj-date)/' -i lsp/make.lisp ''; - sourceRoot = "gcl/gcl"; + sourceRoot = "${src.name}/gcl"; # breaks when compiling in parallel enableParallelBuilding = false; diff --git a/nixpkgs/pkgs/development/compilers/gerbil/build.nix b/nixpkgs/pkgs/development/compilers/gerbil/build.nix index 110378244fd0..227f11b7c584 100644 --- a/nixpkgs/pkgs/development/compilers/gerbil/build.nix +++ b/nixpkgs/pkgs/development/compilers/gerbil/build.nix @@ -29,7 +29,7 @@ stdenv.mkDerivation rec { grep -Fl '#!/usr/bin/env' `find . -type f -executable` | while read f ; do substituteInPlace "$f" --replace '#!/usr/bin/env' '#!${coreutils}/bin/env' ; done ; -''; + ''; ## TODO: make static compilation work. ## For that, get all the packages below to somehow expose static libraries, @@ -92,8 +92,8 @@ stdenv.mkDerivation rec { meta = { description = "Gerbil Scheme"; homepage = "https://github.com/vyzo/gerbil"; - license = lib.licenses.lgpl21; # also asl20, like Gambit - # NB regarding platforms: regularly tested on Linux, only occasionally on macOS. + license = lib.licenses.lgpl21Only; # dual, also asl20, like Gambit + # NB regarding platforms: regularly tested on Linux and on macOS. # Please report success and/or failure to fare. platforms = lib.platforms.unix; maintainers = with lib.maintainers; [ fare ]; diff --git a/nixpkgs/pkgs/development/compilers/gerbil/default.nix b/nixpkgs/pkgs/development/compilers/gerbil/default.nix index 3367ae581b2e..eeafde520de9 100644 --- a/nixpkgs/pkgs/development/compilers/gerbil/default.nix +++ b/nixpkgs/pkgs/development/compilers/gerbil/default.nix @@ -1,12 +1,12 @@ { callPackage, fetchFromGitHub }: callPackage ./build.nix rec { - version = "0.16"; + version = "0.17"; git-version = version; src = fetchFromGitHub { owner = "vyzo"; repo = "gerbil"; rev = "v${version}"; - sha256 = "0vng0kxpnwsg8jbjdpyn4sdww36jz7zfpfbzayg9sdpz6bjxjy0f"; + sha256 = "0xzi9mhrmzcajhlz5qcnz4yjlljvbkbm9426iifgjn47ac0965zw"; }; } diff --git a/nixpkgs/pkgs/development/compilers/gerbil/ftw.nix b/nixpkgs/pkgs/development/compilers/gerbil/ftw.nix new file mode 100644 index 000000000000..2f2c9956826d --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/gerbil/ftw.nix @@ -0,0 +1,27 @@ +{ lib, fetchFromGitHub, gerbilPackages, ... }: + +{ + pname = "ftw"; + version = "unstable-2022-01-14"; + git-version = "8ba16b3"; + softwareName = "FTW: For The Web!"; + gerbil-package = "drewc/ftw"; + + gerbilInputs = with gerbilPackages; [ gerbil-utils ]; + + pre-src = { + fun = fetchFromGitHub; + owner = "drewc"; + repo = "ftw"; + rev = "8ba16b3c1cdc2150df5af8ef3c92040ef8b563b9"; + sha256 = "153i6whm5jfcj9s1qpxz03sq67969lq11brssyjc3yv3wyb1b07h"; + }; + + meta = with lib; { + description = "Simple web handlers for Gerbil Scheme"; + homepage = "https://github.com/drewc/ftw"; + license = licenses.mit; + platforms = platforms.unix; + maintainers = with maintainers; [ fare ]; + }; +} diff --git a/nixpkgs/pkgs/development/compilers/gerbil/gerbil-crypto.nix b/nixpkgs/pkgs/development/compilers/gerbil/gerbil-crypto.nix index 38943471a376..3d53c4da879e 100644 --- a/nixpkgs/pkgs/development/compilers/gerbil/gerbil-crypto.nix +++ b/nixpkgs/pkgs/development/compilers/gerbil/gerbil-crypto.nix @@ -1,28 +1,29 @@ -{ pkgs, lib, fetchFromGitHub, gerbil-unstable, gerbil-support, gambit-support }: +{ pkgs, lib, fetchFromGitHub, gerbilPackages, ... }: -gerbil-support.gerbilPackage { +{ pname = "gerbil-crypto"; - version = "unstable-2020-08-01"; - git-version = "0.0-6-ga228862"; + version = "unstable-2023-03-27"; + git-version = "0.0-18-ge57f887"; gerbil-package = "clan/crypto"; - gerbil = gerbil-unstable; - gerbilInputs = [gerbil-support.gerbilPackages-unstable.gerbil-utils]; + gerbilInputs = with gerbilPackages; [ gerbil-utils gerbil-poo ]; nativeBuildInputs = [ pkgs.pkg-config ]; - buildInputs = [pkgs.secp256k1 ]; - gambit-params = gambit-support.unstable-params; + buildInputs = [ pkgs.secp256k1 ]; version-path = "version"; softwareName = "Gerbil-crypto"; - src = fetchFromGitHub { + + pre-src = { + fun = fetchFromGitHub; owner = "fare"; repo = "gerbil-crypto"; - rev = "a22886260849ec92c3a34bfeedc1574e41e49e33"; - sha256 = "0qbanw2vnw2ymmr4pr1jap29cyc3icbhyq0apibpfnj2znns7w47"; + rev = "e57f88742d9b41640b4a7d9bd3e86c688d4a83f9"; + sha256 = "08hrk3s82hbigvza75vgx9kc7qf64yhhn3xm5calc859sy6ai4ka"; }; - meta = { + + meta = with lib; { description = "Gerbil Crypto: Extra Cryptographic Primitives for Gerbil"; homepage = "https://github.com/fare/gerbil-crypto"; - license = lib.licenses.asl20; - platforms = lib.platforms.unix; - maintainers = with lib.maintainers; [ fare ]; + license = licenses.asl20; + platforms = platforms.unix; + maintainers = with maintainers; [ fare ]; }; } diff --git a/nixpkgs/pkgs/development/compilers/gerbil/gerbil-ethereum.nix b/nixpkgs/pkgs/development/compilers/gerbil/gerbil-ethereum.nix index e498818d2e61..d2d95284f09d 100644 --- a/nixpkgs/pkgs/development/compilers/gerbil/gerbil-ethereum.nix +++ b/nixpkgs/pkgs/development/compilers/gerbil/gerbil-ethereum.nix @@ -1,28 +1,49 @@ -{ pkgs, lib, fetchFromGitHub, gerbil-unstable, gerbil-support, gambit-support }: +{ lib, fetchFromGitHub, gerbilPackages, gerbil-support, gerbil, ... }: -gerbil-support.gerbilPackage { +rec { pname = "gerbil-ethereum"; - version = "unstable-2020-10-18"; - git-version = "0.0-26-gf27ada8"; + version = "unstable-2023-05-30"; + git-version = "0.0-375-g989a5ca"; + softwareName = "Gerbil-ethereum"; gerbil-package = "mukn/ethereum"; - gerbil = gerbil-unstable; - gerbilInputs = with gerbil-support.gerbilPackages-unstable; - [gerbil-utils gerbil-crypto gerbil-poo gerbil-persist]; - buildInputs = []; - gambit-params = gambit-support.unstable-params; version-path = "version"; - softwareName = "Gerbil-ethereum"; - src = fetchFromGitHub { + + gerbilInputs = with gerbilPackages; [ gerbil-utils gerbil-crypto gerbil-poo gerbil-persist ]; + + pre-src = { + fun = fetchFromGitHub; owner = "fare"; repo = "gerbil-ethereum"; - rev = "f27ada8e7f4de4f8fbdfede9fe055914b254d8e7"; - sha256 = "1lykjqim6a44whj1r8kkpiz68wghkfqx5vjlrc2ldxlmgd4r9gvd"; + rev = "989a5ca78958e42c4a1ec242786ade89f1887e48"; + sha256 = "0bs2knhx3hy3k72yidgaplwjd48y86arqscdik8hgxwmhm9z8kwp"; }; - meta = { + + postInstall = '' + cp scripts/{croesus.prv,genesis.json,logback.xml,yolo-evm.conf,yolo-kevm.conf,run-ethereum-test-net.ss} $out/gerbil/lib/mukn/ethereum/scripts/ + mkdir -p $out/bin + cat > $out/bin/run-ethereum-test-net <<EOF + #!/bin/sh + #| + ORIG_GERBIL_LOADPATH="\$GERBIL_LOADPATH" + ORIG_GERBIL_PATH="\$GERBIL_PATH" + ORIG_GERBIL_HOME="\$GERBIL_HOME" + unset GERBIL_HOME + GERBIL_LOADPATH="${gerbil-support.gerbilLoadPath (["$out"] ++ gerbilInputs)}" + GERBIL_PATH="\$HOME/.cache/gerbil-ethereum/gerbil" + export GERBIL_PATH GERBIL_LOADPATH GLOW_SOURCE ORIG_GERBIL_PATH ORIG_GERBIL_LOADPATH + exec ${gerbil}/bin/gxi "\$0" "\$@" + |# + (import :mukn/ethereum/scripts/run-ethereum-test-net :clan/multicall) + (apply call-entry-point (cdr (command-line))) + EOF + chmod a+x $out/bin/run-ethereum-test-net + ''; + + meta = with lib; { description = "Gerbil Ethereum: a Scheme alternative to web3.js"; homepage = "https://github.com/fare/gerbil-ethereum"; - license = lib.licenses.asl20; - platforms = lib.platforms.unix; - maintainers = with lib.maintainers; [ fare ]; + license = licenses.asl20; + platforms = platforms.unix; + maintainers = with maintainers; [ fare ]; }; } diff --git a/nixpkgs/pkgs/development/compilers/gerbil/gerbil-libp2p.nix b/nixpkgs/pkgs/development/compilers/gerbil/gerbil-libp2p.nix index 336f5af89c3b..17fab159c6d5 100644 --- a/nixpkgs/pkgs/development/compilers/gerbil/gerbil-libp2p.nix +++ b/nixpkgs/pkgs/development/compilers/gerbil/gerbil-libp2p.nix @@ -1,27 +1,27 @@ -{ pkgs, lib, fetchFromGitHub, gerbil-unstable, gerbil-support, gambit-support }: +{ lib, fetchFromGitHub, ... }: -gerbil-support.gerbilPackage { +{ pname = "gerbil-libp2p"; - version = "unstable-2018-12-27"; - git-version = "2376b3f"; - gerbil-package = "vyzo"; - gerbil = gerbil-unstable; - gerbilInputs = []; - buildInputs = []; # Note: at *runtime*, depends on go-libp2p-daemon - gambit-params = gambit-support.unstable-params; - version-path = "version"; + version = "unstable-2022-02-03"; + git-version = "15b3246"; softwareName = "Gerbil-libp2p"; - src = fetchFromGitHub { + gerbil-package = "vyzo"; + + buildInputs = []; # Note: at *runtime*, this depends on go-libp2p-daemon running + + pre-src = { + fun = fetchFromGitHub; owner = "vyzo"; repo = "gerbil-libp2p"; - rev = "2376b3f39cee04dd4ec455c8ea4e5faa93c2bf88"; - sha256 = "0jcy7hfg953078msigyfwp2g4ii44pi6q7vcpmq01cbbvxpxz6zw"; + rev = "15b32462e683d89ffce0ff15ad373d293ea0ee5d"; + sha256 = "059lydp7d6pjgrd4pdnqq2zffzlba62ch102f01rgzf9aps3c8lz"; }; - meta = { + + meta = with lib; { description = "Gerbil libp2p: use libp2p from Gerbil"; homepage = "https://github.com/vyzo/gerbil-libp2p"; - license = lib.licenses.mit; - platforms = lib.platforms.unix; - maintainers = with lib.maintainers; [ fare ]; + license = licenses.mit; + platforms = platforms.unix; + maintainers = with maintainers; [ fare ]; }; } diff --git a/nixpkgs/pkgs/development/compilers/gerbil/gerbil-persist.nix b/nixpkgs/pkgs/development/compilers/gerbil/gerbil-persist.nix index 74485c19c2d0..3912d2e8f7f5 100644 --- a/nixpkgs/pkgs/development/compilers/gerbil/gerbil-persist.nix +++ b/nixpkgs/pkgs/development/compilers/gerbil/gerbil-persist.nix @@ -1,27 +1,27 @@ -{ pkgs, lib, fetchFromGitHub, gerbil-unstable, gerbil-support, gambit-support }: - -gerbil-support.gerbilPackage { +{ lib, fetchFromGitHub, gerbilPackages, ... }: +{ pname = "gerbil-persist"; - version = "unstable-2020-08-31"; - git-version = "0.0-8-gd211390"; + version = "unstable-2023-03-02"; + git-version = "0.1.0-24-ge2305f5"; + softwareName = "Gerbil-persist"; gerbil-package = "clan/persist"; - gerbil = gerbil-unstable; - gerbilInputs = with gerbil-support.gerbilPackages-unstable; [gerbil-utils gerbil-crypto gerbil-poo]; - buildInputs = []; - gambit-params = gambit-support.unstable-params; version-path = "version"; - softwareName = "Gerbil-persist"; - src = fetchFromGitHub { + + gerbilInputs = with gerbilPackages; [ gerbil-utils gerbil-crypto gerbil-poo ]; + + pre-src = { + fun = fetchFromGitHub; owner = "fare"; repo = "gerbil-persist"; - rev = "d211390c8a199cf2b8c7400cd98977524e960015"; - sha256 = "13s6ws8ziwalfp23nalss41qnz667z2712lr3y123sypm5n5axk7"; + rev = "e2305f53571e55292179286ca2d88e046ec6638b"; + sha256 = "1vsi4rfzpqg4hhn53d2r26iw715vzwz0hiai9r34z4diwzqixfgn"; }; - meta = { + + meta = with lib; { description = "Gerbil Persist: Persistent data and activities"; homepage = "https://github.com/fare/gerbil-persist"; - license = lib.licenses.asl20; - platforms = lib.platforms.unix; - maintainers = with lib.maintainers; [ fare ]; + license = licenses.asl20; + platforms = platforms.unix; + maintainers = with maintainers; [ fare ]; }; } diff --git a/nixpkgs/pkgs/development/compilers/gerbil/gerbil-poo.nix b/nixpkgs/pkgs/development/compilers/gerbil/gerbil-poo.nix index c6580ea0c77a..20c790c7ba87 100644 --- a/nixpkgs/pkgs/development/compilers/gerbil/gerbil-poo.nix +++ b/nixpkgs/pkgs/development/compilers/gerbil/gerbil-poo.nix @@ -1,27 +1,28 @@ -{ pkgs, lib, fetchFromGitHub, gerbil-unstable, gerbil-support, gambit-support }: +{ lib, fetchFromGitHub, gerbilPackages, ... }: -gerbil-support.gerbilPackage { - pname = "gerbil-ethereum"; - version = "unstable-2020-10-17"; - git-version = "0.0-35-g44d490d"; +{ + pname = "gerbil-poo"; + version = "unstable-2023-04-28"; + git-version = "0.0-106-g418b582"; + softwareName = "Gerbil-POO"; gerbil-package = "clan/poo"; - gerbil = gerbil-unstable; - gerbilInputs = with gerbil-support.gerbilPackages-unstable; [gerbil-utils gerbil-crypto]; - buildInputs = []; - gambit-params = gambit-support.unstable-params; version-path = "version"; - softwareName = "Gerbil-POO"; - src = fetchFromGitHub { + + gerbilInputs = with gerbilPackages; [ gerbil-utils ]; + + pre-src = { + fun = fetchFromGitHub; owner = "fare"; repo = "gerbil-poo"; - rev = "44d490d95b9d1b5d54eaedf2602419af8e086837"; - sha256 = "082ndpy281saybcnp3bdidcibkk2ih6glrkbb5fdj1524ban4d0k"; + rev = "418b582ae72e1494cf3a5f334d31d4f6503578f5"; + sha256 = "0qdzs7l6hp45dji5bc3879k4c8k9x6cj4qxz68cskjhn8wrc5lr8"; }; - meta = { + + meta = with lib; { description = "Gerbil POO: Prototype Object Orientation for Gerbil Scheme"; homepage = "https://github.com/fare/gerbil-poo"; - license = lib.licenses.asl20; - platforms = lib.platforms.unix; - maintainers = with lib.maintainers; [ fare ]; + license = licenses.asl20; + platforms = platforms.unix; + maintainers = with maintainers; [ fare ]; }; } diff --git a/nixpkgs/pkgs/development/compilers/gerbil/gerbil-support.nix b/nixpkgs/pkgs/development/compilers/gerbil/gerbil-support.nix index f51076fd5d4d..3d57e2a73c52 100644 --- a/nixpkgs/pkgs/development/compilers/gerbil/gerbil-support.nix +++ b/nixpkgs/pkgs/development/compilers/gerbil/gerbil-support.nix @@ -1,54 +1,112 @@ -{ pkgs, lib, gccStdenv, callPackage, fetchFromGitHub }: -# See ../gambit/build.nix regarding gccStdenv - -rec { - # Gerbil libraries - gerbilPackages-unstable = { - gerbil-libp2p = callPackage ./gerbil-libp2p.nix { }; - gerbil-utils = callPackage ./gerbil-utils.nix { }; - gerbil-crypto = callPackage ./gerbil-crypto.nix { }; - gerbil-poo = callPackage ./gerbil-poo.nix { }; - gerbil-persist = callPackage ./gerbil-persist.nix { }; - gerbil-ethereum = callPackage ./gerbil-ethereum.nix { }; - smug-gerbil = callPackage ./smug-gerbil.nix { }; +{ pkgs, lib, callPackage, ... }: + + with pkgs.gerbil-support; { + + prePackages-unstable = + let pks = [ ./gerbil-libp2p.nix ./smug-gerbil.nix ./ftw.nix + ./gerbil-utils.nix ./gerbil-crypto.nix ./gerbil-poo.nix + ./gerbil-persist.nix ./gerbil-ethereum.nix ./glow-lang.nix ]; + call = pkg: callPackage pkg prePackage-defaults; + pkgName = pkg: lib.removeSuffix ".nix" (baseNameOf pkg); + f = pkg: { name = pkgName pkg; value = call pkg; }; in + builtins.listToAttrs (map f pks); + + prePackage-defaults = { + gerbil = pkgs.gerbil-unstable; + gambit-params = pkgs.gambit-support.unstable-params; + gerbilPackages = gerbilPackages-unstable; + git-version = ""; + version-path = ""; + gerbilInputs = []; + nativeBuildInputs = []; + buildInputs = []; + buildScript = "./build.ss"; + postInstall = ""; + softwareName = ""; }; + gerbilPackages-unstable = + builtins.mapAttrs (_: gerbilPackage) prePackages-unstable; + + resolve-pre-src = pre-src: pre-src.fun (removeAttrs pre-src ["fun"]); + + gerbilVersionFromGit = pkg: + let version-path = "${pkg.passthru.pre-pkg.version-path}.ss"; in + if builtins.pathExists version-path then + let m = + builtins.match "\\(import :clan/versioning.*\\)\n\\(register-software \"([-_.A-Za-z0-9]+)\" \"([-_.A-Za-z0-9]+)\"\\) ;; ([-0-9]+)\n" + (builtins.readFile version-path); in + { version = builtins.elemAt m 2; git-version = builtins.elemAt m 1; } + else { version = "0.0"; + git-version = let gitpath = "${toString pkg.src}/.git"; in + if builtins.pathExists gitpath then lib.commitIdFromGitRepo gitpath else "0"; }; + + gerbilSkippableFiles = [".git" ".build" ".build_outputs" "run" "result" "dep" "BLAH" + "version.ss" "tmp.nix"]; + + gerbilSourceFilter = path: type: + let baseName = baseNameOf path; in + ! (builtins.elem baseName gerbilSkippableFiles || lib.hasSuffix "~" baseName); + + gerbilFilterSource = builtins.filterSource gerbilSourceFilter; + # Use this function in any package that uses Gerbil libraries, to define the GERBIL_LOADPATH. gerbilLoadPath = - gerbilInputs : builtins.concatStringsSep ":" (map (x : x + "/gerbil/lib") gerbilInputs); + gerbilInputs: builtins.concatStringsSep ":" (map (x: x + "/gerbil/lib") gerbilInputs); + + path-src = path: { fun = _: path; }; + + view = lib.debug.traceSeqN 4; + + sha256-of-pre-src = pre-src: if pre-src ? sha256 then pre-src.sha256 else "none"; + + overrideSrcIfShaDiff = name: new-pre-src: super: + let old-sha256 = sha256-of-pre-src super.${name}.pre-src; + new-sha256 = sha256-of-pre-src new-pre-src; in + if old-sha256 == new-sha256 then {} else + view "Overriding ${name} old-sha256: ${old-sha256} new-sha256: ${new-sha256}" + { ${name} = super.${name} // { + pre-src = new-pre-src; + version = "override"; + git-version = if new-pre-src ? rev then lib.substring 0 7 new-pre-src.rev else "unknown";};}; + + pkgsOverrideGerbilPackageSrc = name: pre-src: pkgs: super: { + gerbil-support = (super-support: + { prePackages-unstable = + (super-ppu: super-ppu // (overrideSrcIfShaDiff name pre-src super-ppu)) + super-support.prePackages-unstable;}) super.gerbil-support;}; # Use this function to create a Gerbil library. See gerbil-utils as an example. - gerbilPackage = { - pname, version, src, meta, gerbil-package, - git-version ? "", version-path ? "", - gerbil ? pkgs.gerbil-unstable, - gambit-params ? pkgs.gambit-support.stable-params, - gerbilInputs ? [], - nativeBuildInputs ? [], - buildInputs ? [], - buildScript ? "./build.ss", - softwareName ? ""} : - let buildInputs_ = buildInputs; in - gccStdenv.mkDerivation rec { - inherit src meta pname version nativeBuildInputs; - passthru = { inherit gerbil-package version-path ;}; + gerbilPackage = prePackage: + let pre-pkg = prePackage-defaults // prePackage; + inherit (pre-pkg) pname version pre-src git-version meta + softwareName gerbil-package version-path gerbil gambit-params + gerbilInputs nativeBuildInputs buildInputs buildScript postInstall; + buildInputs_ = buildInputs; in + pkgs.gccStdenv.mkDerivation rec { # See ../gambit/build.nix regarding why we use gccStdenv + inherit meta pname version nativeBuildInputs postInstall; + passthru = { + inherit pre-pkg; + }; + src = resolve-pre-src pre-src; buildInputs = [ gerbil ] ++ gerbilInputs ++ buildInputs_; + postPatch = '' set -e ; - if [ -n "${version-path}.ss" ] ; then - echo -e '(import :clan/versioning${builtins.concatStringsSep "" - (map (x : lib.optionalString (x.passthru.version-path != "") - " :${x.passthru.gerbil-package}/${x.passthru.version-path}") + ${lib.optionalString (version-path != "") + ''echo -e '(import :clan/versioning${builtins.concatStringsSep "" + (map (x: let px = x.passthru.pre-pkg; in + lib.optionalString (px.version-path != "") + " :${px.gerbil-package}/${px.version-path}") gerbilInputs) - })\n(register-software "${softwareName}" "v${git-version}")\n' > "${passthru.version-path}.ss" - fi + })\n(register-software "${softwareName}" "v${git-version}")\n' > "${version-path}.ss"''} patchShebangs . ; ''; postConfigure = '' export GERBIL_BUILD_CORES=$NIX_BUILD_CORES export GERBIL_PATH=$PWD/.build - export GERBIL_LOADPATH=${gerbilLoadPath gerbilInputs} + export GERBIL_LOADPATH=${gerbilLoadPath (["$out"] ++ gerbilInputs)} ${pkgs.gambit-support.export-gambopt gambit-params} ''; @@ -60,18 +118,36 @@ rec { installPhase = '' runHook preInstall - mkdir -p $out/gerbil/lib - cp -fa .build/lib $out/gerbil/ - bins=(.build/bin/*) - if [ 0 -lt ''${#bins} ] ; then - cp -fa .build/bin $out/gerbil/ - mkdir $out/bin - cd $out/bin - ln -s ../gerbil/bin/* . + mkdir -p $out/gerbil + cp -fa .build/* $out/gerbil/ + if [[ -d $out/gerbil/bin ]] ; then + ( cd $out/gerbil + bins=$(find ../gerbil/bin -type f) + if [[ -n $bins ]] ; then + ( mkdir -p ../bin + cd .. + ln -s $bins bin + ) + fi + ) fi runHook postInstall ''; dontFixup = true; + + checkPhase = '' + runHook preCheck + if [[ -f unit-tests.ss ]] ; then + export GERBIL_APPLICATION_HOME=$PWD + ./unit-tests.ss version + ./unit-tests.ss + else + echo "No gerbil-utils style unit-tests.ss detected for ${pname} ${version}."; + fi + runHook postCheck + ''; + + doCheck = true; }; } diff --git a/nixpkgs/pkgs/development/compilers/gerbil/gerbil-utils.nix b/nixpkgs/pkgs/development/compilers/gerbil/gerbil-utils.nix index 6d89e1181f2d..4e7042fe4f3c 100644 --- a/nixpkgs/pkgs/development/compilers/gerbil/gerbil-utils.nix +++ b/nixpkgs/pkgs/development/compilers/gerbil/gerbil-utils.nix @@ -1,25 +1,26 @@ -{ lib, fetchFromGitHub, gerbil-unstable, gerbil-support, gambit-support }: +{ lib, fetchFromGitHub, ... }: -gerbil-support.gerbilPackage { +{ pname = "gerbil-utils"; - version = "unstable-2020-10-18"; - git-version = "0.2-36-g8b481b7"; + version = "unstable-2023-07-22"; + git-version = "0.2-198-g2fb01ce"; + softwareName = "Gerbil-utils"; gerbil-package = "clan"; - gerbil = gerbil-unstable; - gambit-params = gambit-support.unstable-params; version-path = "version"; - softwareName = "Gerbil-utils"; - src = fetchFromGitHub { + + pre-src = { + fun = fetchFromGitHub; owner = "fare"; repo = "gerbil-utils"; - rev = "8b481b787e13e07e14d0718d670aab016131a090"; - sha256 = "0br8k5b2wcv4wcp65r2bfhji3af2qgqjspf41syqslq9awx47f3m"; + rev = "2fb01ce0b302f232f5c4daf4987457b6357d609d"; + sha256 = "127q98gk1x6y1nlkkpnbnkz989ybpszy7aiy43hzai2q6xn4nv72"; }; - meta = { + + meta = with lib; { description = "Gerbil Clan: Community curated Collection of Common Utilities"; homepage = "https://github.com/fare/gerbil-utils"; - license = lib.licenses.lgpl21; - platforms = lib.platforms.unix; - maintainers = with lib.maintainers; [ fare ]; + license = licenses.lgpl21; + platforms = platforms.unix; + maintainers = with maintainers; [ fare ]; }; } diff --git a/nixpkgs/pkgs/development/compilers/gerbil/glow-lang.nix b/nixpkgs/pkgs/development/compilers/gerbil/glow-lang.nix new file mode 100644 index 000000000000..c6e5aa10fa3a --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/gerbil/glow-lang.nix @@ -0,0 +1,55 @@ +{ lib, fetchFromGitHub, gerbil-support, gerbilPackages, gerbil, ... }: + +rec { + pname = "glow-lang"; + version = "unstable-2023-04-26"; + git-version = "0.3.2-222-gb19cd980"; + softwareName = "Glow"; + gerbil-package = "mukn/glow"; + version-path = "version"; + + gerbilInputs = with gerbilPackages; + [ gerbil-utils gerbil-crypto gerbil-poo gerbil-persist gerbil-ethereum + gerbil-libp2p smug-gerbil ftw ]; + + pre-src = { + fun = fetchFromGitHub; + owner = "Glow-Lang"; + repo = "glow"; + rev = "b19cd98082dfc5156d1b4fc83cde161572d6a211"; + sha256 = "0k3qy5826pxqr9ylnnpq4iikxf4j50987vhpa5qiv99j0p643xr3"; + }; + + postPatch = '' + substituteInPlace "runtime/glow-path.ss" --replace \ + '(def glow-install-path (source-path "dapps"))' \ + '(def glow-install-path "$out")' + ''; + + postInstall = '' + mkdir -p $out/bin $out/gerbil/lib/mukn/glow $out/share/glow/dapps + cp main.ss $out/gerbil/lib/mukn/glow/ + cp dapps/{buy_sig,coin_flip,rps_simple}.glow $out/share/glow/dapps/ + cat > $out/bin/glow <<EOF + #!/bin/sh + ORIG_GERBIL_LOADPATH="\$GERBIL_LOADPATH" + ORIG_GERBIL_PATH="\$GERBIL_PATH" + ORIG_GERBIL_HOME="\$GERBIL_HOME" + unset GERBIL_HOME + GERBIL_LOADPATH="${gerbil-support.gerbilLoadPath (["$out"] ++ gerbilInputs)}" + GLOW_SOURCE="\''${GLOW_SOURCE:-$out/share/glow}" + GERBIL_PATH="\$HOME/.cache/glow/gerbil" + export GERBIL_PATH GERBIL_LOADPATH GLOW_SOURCE ORIG_GERBIL_PATH ORIG_GERBIL_LOADPATH ORIG_GERBIL_HOME + exec ${gerbil}/bin/gxi $out/gerbil/lib/mukn/glow/main.ss "\$@" + EOF + chmod a+x $out/bin/glow + ''; + + meta = with lib; { + description = "Glow: language for safe Decentralized Applications (DApps)"; + homepage = "https://glow-lang.org"; + license = licenses.asl20; + platforms = platforms.unix; + maintainers = with maintainers; [ fare ]; + }; +} diff --git a/nixpkgs/pkgs/development/compilers/gerbil/smug-gerbil.nix b/nixpkgs/pkgs/development/compilers/gerbil/smug-gerbil.nix index 732cdb500b9b..518ec0238f6b 100644 --- a/nixpkgs/pkgs/development/compilers/gerbil/smug-gerbil.nix +++ b/nixpkgs/pkgs/development/compilers/gerbil/smug-gerbil.nix @@ -1,30 +1,25 @@ -{ pkgs, lib, fetchFromGitHub, gerbil-unstable, gerbil-support, gambit-support }: +{ lib, fetchFromGitHub, ... }: -gerbil-support.gerbilPackage { +{ pname = "smug-gerbil"; - version = "unstable-2019-12-24"; - git-version = "95d60d4"; - gerbil-package = "drewc/smug"; - gerbil = gerbil-unstable; - gerbilInputs = []; - buildInputs = []; - gambit-params = gambit-support.unstable-params; - version-path = ""; #"version"; + version = "unstable-2020-12-12"; + git-version = "0.4.20"; softwareName = "Smug-Gerbil"; - src = fetchFromGitHub { + gerbil-package = "drewc/smug"; + + pre-src = { + fun = fetchFromGitHub; owner = "drewc"; repo = "smug-gerbil"; - rev = "95d60d486c1603743c6d3c525e6d5f5761b984e5"; - sha256 = "0ys07z78gq60z833si2j7xa1scqvbljlx1zb32vdf32f1b27c04j"; + rev = "cf23a47d0891aa9e697719309d04dd25dd1d840b"; + sha256 = "13fdijd71m3fzp9fw9xp6ddgr38q1ly6wnr53salp725w6i4wqid"; }; - meta = { + + meta = with lib; { description = "Super Monadic Über Go-into : Parsers and Gerbil Scheme"; homepage = "https://github.com/drewc/smug-gerbil"; - license = lib.licenses.mit; - platforms = lib.platforms.unix; - maintainers = with lib.maintainers; [ fare ]; + license = licenses.mit; + platforms = platforms.unix; + maintainers = with maintainers; [ fare ]; }; - buildScript = '' - for i in primitive simple tokens smug ; do gxc -O $i.ss ; done - ''; } diff --git a/nixpkgs/pkgs/development/compilers/gerbil/unstable.nix b/nixpkgs/pkgs/development/compilers/gerbil/unstable.nix index d4ff3ca7a98a..4da9fcd16aaf 100644 --- a/nixpkgs/pkgs/development/compilers/gerbil/unstable.nix +++ b/nixpkgs/pkgs/development/compilers/gerbil/unstable.nix @@ -1,13 +1,13 @@ { callPackage, fetchFromGitHub, gambit-unstable, gambit-support }: callPackage ./build.nix rec { - version = "unstable-2020-11-05"; - git-version = "0.16-152-g808929ae"; + version = "unstable-2023-08-07"; + git-version = "0.17.0-187-gba545b77"; src = fetchFromGitHub { owner = "vyzo"; repo = "gerbil"; - rev = "808929aeb8823959191f35df53bc0c0150911b4b"; - sha256 = "0d9k2gkrs9qvlnk7xa3gjzs3gln3ydds7yd2313pvbw4q2lcz8iw"; + rev = "ba545b77e8e85118089232e3cd263856e414b24b"; + sha256 = "1f4v1qawx2i8333kshj4pbj5r21z0868pwrr3r710n6ng3pd9gqn"; }; inherit gambit-support; gambit = gambit-unstable; diff --git a/nixpkgs/pkgs/development/compilers/ghc/8.10.2-binary.nix b/nixpkgs/pkgs/development/compilers/ghc/8.10.2-binary.nix index 368bc76bf0e2..ccd5d50aa75d 100644 --- a/nixpkgs/pkgs/development/compilers/ghc/8.10.2-binary.nix +++ b/nixpkgs/pkgs/development/compilers/ghc/8.10.2-binary.nix @@ -447,7 +447,6 @@ stdenv.mkDerivation rec { # long as the evaluator runs on a platform that supports # `pkgsMusl`. platforms = builtins.attrNames ghcBinDists.${distSetName}; - hydraPlatforms = builtins.filter (p: minimal || p != "aarch64-linux") platforms; maintainers = with lib.maintainers; [ guibou ] ++ lib.teams.haskell.members; diff --git a/nixpkgs/pkgs/development/compilers/ghc/8.10.7.nix b/nixpkgs/pkgs/development/compilers/ghc/8.10.7.nix index a7fdf026f152..6eedcb6374be 100644 --- a/nixpkgs/pkgs/development/compilers/ghc/8.10.7.nix +++ b/nixpkgs/pkgs/development/compilers/ghc/8.10.7.nix @@ -28,8 +28,7 @@ , # If enabled, use -fPIC when compiling static libs. enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform - # aarch64 outputs otherwise exceed 2GB limit -, enableProfiledLibs ? !stdenv.targetPlatform.isAarch64 +, enableProfiledLibs ? true , # Whether to build dynamic libs for the standard library (on the target # platform). Static libs are always built. diff --git a/nixpkgs/pkgs/development/compilers/ghc/8.8.4.nix b/nixpkgs/pkgs/development/compilers/ghc/8.8.4.nix index d6a8d9adde34..b00b6183121d 100644 --- a/nixpkgs/pkgs/development/compilers/ghc/8.8.4.nix +++ b/nixpkgs/pkgs/development/compilers/ghc/8.8.4.nix @@ -27,8 +27,7 @@ , # If enabled, use -fPIC when compiling static libs. enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform - # aarch64 outputs otherwise exceed 2GB limit -, enableProfiledLibs ? !stdenv.targetPlatform.isAarch64 +, enableProfiledLibs ? true , # Whether to build dynamic libs for the standard library (on the target # platform). Static libs are always built. diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.0.2.nix b/nixpkgs/pkgs/development/compilers/ghc/9.0.2.nix index 2404363b8b5b..f5f0c9317147 100644 --- a/nixpkgs/pkgs/development/compilers/ghc/9.0.2.nix +++ b/nixpkgs/pkgs/development/compilers/ghc/9.0.2.nix @@ -30,8 +30,7 @@ , # If enabled, use -fPIC when compiling static libs. enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform - # aarch64 outputs otherwise exceed 2GB limit -, enableProfiledLibs ? !stdenv.targetPlatform.isAarch64 +, enableProfiledLibs ? true , # Whether to build dynamic libs for the standard library (on the target # platform). Static libs are always built. diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.2.4-binary.nix b/nixpkgs/pkgs/development/compilers/ghc/9.2.4-binary.nix index 93380fd14519..d3a57b6c9f0f 100644 --- a/nixpkgs/pkgs/development/compilers/ghc/9.2.4-binary.nix +++ b/nixpkgs/pkgs/development/compilers/ghc/9.2.4-binary.nix @@ -429,7 +429,6 @@ stdenv.mkDerivation rec { # long as the evaluator runs on a platform that supports # `pkgsMusl`. platforms = builtins.attrNames ghcBinDists.${distSetName}; - hydraPlatforms = builtins.filter (p: minimal || p != "aarch64-linux") platforms; maintainers = lib.teams.haskell.members; }; } diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.2.4.nix b/nixpkgs/pkgs/development/compilers/ghc/9.2.4.nix index 75265f8edff0..e34f33e9ca33 100644 --- a/nixpkgs/pkgs/development/compilers/ghc/9.2.4.nix +++ b/nixpkgs/pkgs/development/compilers/ghc/9.2.4.nix @@ -30,8 +30,7 @@ , # If enabled, use -fPIC when compiling static libs. enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform - # aarch64 outputs otherwise exceed 2GB limit -, enableProfiledLibs ? !stdenv.targetPlatform.isAarch64 +, enableProfiledLibs ? true , # Whether to build dynamic libs for the standard library (on the target # platform). Static libs are always built. @@ -217,7 +216,7 @@ stdenv.mkDerivation (rec { # These cause problems as they're not eliminated by GHC's dead code # elimination on aarch64-darwin. (see # https://github.com/NixOS/nixpkgs/issues/140774 for details). - ./Cabal-3.6-paths-fix-cycle-aarch64-darwin.patch + ./Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch ]; postPatch = "patchShebangs ."; diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.2.5.nix b/nixpkgs/pkgs/development/compilers/ghc/9.2.5.nix index a157705bde9a..abbb42b631fe 100644 --- a/nixpkgs/pkgs/development/compilers/ghc/9.2.5.nix +++ b/nixpkgs/pkgs/development/compilers/ghc/9.2.5.nix @@ -30,8 +30,7 @@ , # If enabled, use -fPIC when compiling static libs. enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform - # aarch64 outputs otherwise exceed 2GB limit -, enableProfiledLibs ? !stdenv.targetPlatform.isAarch64 +, enableProfiledLibs ? true , # Whether to build dynamic libs for the standard library (on the target # platform). Static libs are always built. @@ -217,7 +216,7 @@ stdenv.mkDerivation (rec { # These cause problems as they're not eliminated by GHC's dead code # elimination on aarch64-darwin. (see # https://github.com/NixOS/nixpkgs/issues/140774 for details). - ./Cabal-3.6-paths-fix-cycle-aarch64-darwin.patch + ./Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch ]; postPatch = "patchShebangs ."; diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.2.6.nix b/nixpkgs/pkgs/development/compilers/ghc/9.2.6.nix index ad6352425bcc..53ee00f7b373 100644 --- a/nixpkgs/pkgs/development/compilers/ghc/9.2.6.nix +++ b/nixpkgs/pkgs/development/compilers/ghc/9.2.6.nix @@ -30,8 +30,7 @@ , # If enabled, use -fPIC when compiling static libs. enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform - # aarch64 outputs otherwise exceed 2GB limit -, enableProfiledLibs ? !stdenv.targetPlatform.isAarch64 +, enableProfiledLibs ? true , # Whether to build dynamic libs for the standard library (on the target # platform). Static libs are always built. @@ -217,7 +216,7 @@ stdenv.mkDerivation (rec { # These cause problems as they're not eliminated by GHC's dead code # elimination on aarch64-darwin. (see # https://github.com/NixOS/nixpkgs/issues/140774 for details). - ./Cabal-3.6-paths-fix-cycle-aarch64-darwin.patch + ./Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch ]; postPatch = "patchShebangs ."; diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.2.7.nix b/nixpkgs/pkgs/development/compilers/ghc/9.2.7.nix index e7957e3fe34e..dcde1b65a568 100644 --- a/nixpkgs/pkgs/development/compilers/ghc/9.2.7.nix +++ b/nixpkgs/pkgs/development/compilers/ghc/9.2.7.nix @@ -30,8 +30,7 @@ , # If enabled, use -fPIC when compiling static libs. enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform - # aarch64 outputs otherwise exceed 2GB limit -, enableProfiledLibs ? !stdenv.targetPlatform.isAarch64 +, enableProfiledLibs ? true , # Whether to build dynamic libs for the standard library (on the target # platform). Static libs are always built. @@ -217,7 +216,7 @@ stdenv.mkDerivation (rec { # These cause problems as they're not eliminated by GHC's dead code # elimination on aarch64-darwin. (see # https://github.com/NixOS/nixpkgs/issues/140774 for details). - ./Cabal-3.6-paths-fix-cycle-aarch64-darwin.patch + ./Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch ]; postPatch = "patchShebangs ."; diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.2.8.nix b/nixpkgs/pkgs/development/compilers/ghc/9.2.8.nix index 13e787df8e4a..443526a0b719 100644 --- a/nixpkgs/pkgs/development/compilers/ghc/9.2.8.nix +++ b/nixpkgs/pkgs/development/compilers/ghc/9.2.8.nix @@ -30,8 +30,7 @@ , # If enabled, use -fPIC when compiling static libs. enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform - # aarch64 outputs otherwise exceed 2GB limit -, enableProfiledLibs ? !stdenv.targetPlatform.isAarch64 +, enableProfiledLibs ? true , # Whether to build dynamic libs for the standard library (on the target # platform). Static libs are always built. @@ -217,7 +216,7 @@ stdenv.mkDerivation (rec { # These cause problems as they're not eliminated by GHC's dead code # elimination on aarch64-darwin. (see # https://github.com/NixOS/nixpkgs/issues/140774 for details). - ./Cabal-3.6-paths-fix-cycle-aarch64-darwin.patch + ./Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch ]; postPatch = "patchShebangs ."; diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.4.2.nix b/nixpkgs/pkgs/development/compilers/ghc/9.4.2.nix index eef9f06a0a8d..afe78cbb87c0 100644 --- a/nixpkgs/pkgs/development/compilers/ghc/9.4.2.nix +++ b/nixpkgs/pkgs/development/compilers/ghc/9.4.2.nix @@ -32,8 +32,7 @@ , # If enabled, use -fPIC when compiling static libs. enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform - # aarch64 outputs otherwise exceed 2GB limit -, enableProfiledLibs ? !stdenv.targetPlatform.isAarch64 +, enableProfiledLibs ? true , # Whether to build dynamic libs for the standard library (on the target # platform). Static libs are always built. @@ -190,6 +189,15 @@ stdenv.mkDerivation (rec { outputs = [ "out" "doc" ]; patches = [ + # Don't generate code that doesn't compile when --enable-relocatable is passed to Setup.hs + # Can be removed if the Cabal library included with ghc backports the linked fix + (fetchpatch { + url = "https://github.com/haskell/cabal/commit/6c796218c92f93c95e94d5ec2d077f6956f68e98.patch"; + stripLen = 1; + extraPrefix = "libraries/Cabal/"; + sha256 = "sha256-yRQ6YmMiwBwiYseC5BsrEtDgFbWvst+maGgDtdD0vAY="; + }) + # Fix docs build with sphinx >= 6.0 # https://gitlab.haskell.org/ghc/ghc/-/issues/22766 (fetchpatch { @@ -197,6 +205,14 @@ stdenv.mkDerivation (rec { url = "https://gitlab.haskell.org/ghc/ghc/-/commit/10e94a556b4f90769b7fd718b9790d58ae566600.patch"; sha256 = "0kmhfamr16w8gch0lgln2912r8aryjky1hfcda3jkcwa5cdzgjdv"; }) + ] ++ lib.optionals (stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64) [ + # Prevent the paths module from emitting symbols that we don't use + # when building with separate outputs. + # + # These cause problems as they're not eliminated by GHC's dead code + # elimination on aarch64-darwin. (see + # https://github.com/NixOS/nixpkgs/issues/140774 for details). + ./Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch ]; postPatch = "patchShebangs ."; diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.4.3.nix b/nixpkgs/pkgs/development/compilers/ghc/9.4.3.nix index 9d6bfed13e0c..a2ae0cf400c7 100644 --- a/nixpkgs/pkgs/development/compilers/ghc/9.4.3.nix +++ b/nixpkgs/pkgs/development/compilers/ghc/9.4.3.nix @@ -32,8 +32,7 @@ , # If enabled, use -fPIC when compiling static libs. enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform - # aarch64 outputs otherwise exceed 2GB limit -, enableProfiledLibs ? !stdenv.targetPlatform.isAarch64 +, enableProfiledLibs ? true , # Whether to build dynamic libs for the standard library (on the target # platform). Static libs are always built. @@ -190,6 +189,15 @@ stdenv.mkDerivation (rec { outputs = [ "out" "doc" ]; patches = [ + # Don't generate code that doesn't compile when --enable-relocatable is passed to Setup.hs + # Can be removed if the Cabal library included with ghc backports the linked fix + (fetchpatch { + url = "https://github.com/haskell/cabal/commit/6c796218c92f93c95e94d5ec2d077f6956f68e98.patch"; + stripLen = 1; + extraPrefix = "libraries/Cabal/"; + sha256 = "sha256-yRQ6YmMiwBwiYseC5BsrEtDgFbWvst+maGgDtdD0vAY="; + }) + # Fix docs build with sphinx >= 6.0 # https://gitlab.haskell.org/ghc/ghc/-/issues/22766 (fetchpatch { @@ -197,6 +205,14 @@ stdenv.mkDerivation (rec { url = "https://gitlab.haskell.org/ghc/ghc/-/commit/10e94a556b4f90769b7fd718b9790d58ae566600.patch"; sha256 = "0kmhfamr16w8gch0lgln2912r8aryjky1hfcda3jkcwa5cdzgjdv"; }) + ] ++ lib.optionals (stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64) [ + # Prevent the paths module from emitting symbols that we don't use + # when building with separate outputs. + # + # These cause problems as they're not eliminated by GHC's dead code + # elimination on aarch64-darwin. (see + # https://github.com/NixOS/nixpkgs/issues/140774 for details). + ./Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch ]; postPatch = "patchShebangs ."; diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.4.4.nix b/nixpkgs/pkgs/development/compilers/ghc/9.4.4.nix index 1c63c1c23080..13d01a342637 100644 --- a/nixpkgs/pkgs/development/compilers/ghc/9.4.4.nix +++ b/nixpkgs/pkgs/development/compilers/ghc/9.4.4.nix @@ -32,8 +32,7 @@ , # If enabled, use -fPIC when compiling static libs. enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform - # aarch64 outputs otherwise exceed 2GB limit -, enableProfiledLibs ? !stdenv.targetPlatform.isAarch64 +, enableProfiledLibs ? true , # Whether to build dynamic libs for the standard library (on the target # platform). Static libs are always built. @@ -206,6 +205,14 @@ stdenv.mkDerivation (rec { url = "https://gitlab.haskell.org/ghc/ghc/-/commit/10e94a556b4f90769b7fd718b9790d58ae566600.patch"; sha256 = "0kmhfamr16w8gch0lgln2912r8aryjky1hfcda3jkcwa5cdzgjdv"; }) + ] ++ lib.optionals (stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64) [ + # Prevent the paths module from emitting symbols that we don't use + # when building with separate outputs. + # + # These cause problems as they're not eliminated by GHC's dead code + # elimination on aarch64-darwin. (see + # https://github.com/NixOS/nixpkgs/issues/140774 for details). + ./Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch ]; postPatch = "patchShebangs ."; diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.4.5.nix b/nixpkgs/pkgs/development/compilers/ghc/9.4.5.nix index 19af148c9c88..da333a613800 100644 --- a/nixpkgs/pkgs/development/compilers/ghc/9.4.5.nix +++ b/nixpkgs/pkgs/development/compilers/ghc/9.4.5.nix @@ -32,8 +32,7 @@ , # If enabled, use -fPIC when compiling static libs. enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform - # aarch64 outputs otherwise exceed 2GB limit -, enableProfiledLibs ? !stdenv.targetPlatform.isAarch64 +, enableProfiledLibs ? true , # Whether to build dynamic libs for the standard library (on the target # platform). Static libs are always built. @@ -206,6 +205,14 @@ stdenv.mkDerivation (rec { url = "https://gitlab.haskell.org/ghc/ghc/-/commit/10e94a556b4f90769b7fd718b9790d58ae566600.patch"; sha256 = "0kmhfamr16w8gch0lgln2912r8aryjky1hfcda3jkcwa5cdzgjdv"; }) + ] ++ lib.optionals (stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64) [ + # Prevent the paths module from emitting symbols that we don't use + # when building with separate outputs. + # + # These cause problems as they're not eliminated by GHC's dead code + # elimination on aarch64-darwin. (see + # https://github.com/NixOS/nixpkgs/issues/140774 for details). + ./Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch ]; postPatch = "patchShebangs ."; diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.4.6-bytestring-posix-source.patch b/nixpkgs/pkgs/development/compilers/ghc/9.4.6-bytestring-posix-source.patch new file mode 100644 index 000000000000..644ab295191f --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/ghc/9.4.6-bytestring-posix-source.patch @@ -0,0 +1,15 @@ +Make sure that the appropriate feature flags are set when +Rts.h is included, so that clockid_t is defined. + +diff --git a/cbits/is-valid-utf8.c b/cbits/is-valid-utf8.c +index 01b3b41..c69596a 100644 +--- a/libraries/bytestring/cbits/is-valid-utf8.c ++++ b/libraries/bytestring/cbits/is-valid-utf8.c +@@ -29,6 +29,7 @@ SUCH DAMAGE. + */ + #pragma GCC push_options + #pragma GCC optimize("-O2") ++#include "rts/PosixSource.h" + #include <stdbool.h> + #include <stddef.h> + #include <stdint.h> diff --git a/nixpkgs/pkgs/development/compilers/ghc/9.4.6.nix b/nixpkgs/pkgs/development/compilers/ghc/9.4.6.nix new file mode 100644 index 000000000000..95cb31a411ff --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/ghc/9.4.6.nix @@ -0,0 +1,392 @@ +# DO NOT port this expression to hadrian. It is not possible to build a GHC +# cross compiler with 9.4.* and hadrian. +{ lib, stdenv, pkgsBuildTarget, pkgsHostTarget, targetPackages + +# build-tools +, bootPkgs +, autoconf, automake, coreutils, fetchpatch, fetchurl, perl, python3, m4, sphinx +, xattr, autoSignDarwinBinariesHook +, bash + +, libiconv ? null, ncurses +, glibcLocales ? null + +, # GHC can be built with system libffi or a bundled one. + libffi ? null + +, useLLVM ? !(stdenv.targetPlatform.isx86 + || stdenv.targetPlatform.isPower + || stdenv.targetPlatform.isSparc + || (stdenv.targetPlatform.isAarch64 && stdenv.targetPlatform.isDarwin)) +, # LLVM is conceptually a run-time-only dependency, but for + # non-x86, we need LLVM to bootstrap later stages, so it becomes a + # build-time dependency too. + buildTargetLlvmPackages, llvmPackages + +, # If enabled, GHC will be built with the GPL-free but slightly slower native + # bignum backend instead of the faster but GPLed gmp backend. + enableNativeBignum ? !(lib.meta.availableOn stdenv.hostPlatform gmp + && lib.meta.availableOn stdenv.targetPlatform gmp) +, gmp + +, # If enabled, use -fPIC when compiling static libs. + enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform + +, enableProfiledLibs ? true + +, # Whether to build dynamic libs for the standard library (on the target + # platform). Static libs are always built. + enableShared ? with stdenv.targetPlatform; !isWindows && !useiOSPrebuilt && !isStatic + +, # Whether to 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 ? lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform) + (if useLLVM then "perf-cross" else "perf-cross-ncg") + +, # Whether to build sphinx documentation. + enableDocs ? ( + # Docs disabled for musl and cross because it's a large task to keep + # all `sphinx` dependencies building in those environments. + # `sphinx` pulls in among others: + # Ruby, Python, Perl, Rust, OpenGL, Xorg, gtk, LLVM. + (stdenv.targetPlatform == stdenv.hostPlatform) + && !stdenv.hostPlatform.isMusl + ) + +, enableHaddockProgram ? + # Disabled for cross; see note [HADDOCK_DOCS]. + (stdenv.targetPlatform == stdenv.hostPlatform) + +, # 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.isiOS +}: + +assert !enableNativeBignum -> gmp != null; + +# Cross cannot currently build the `haddock` program for silly reasons, +# see note [HADDOCK_DOCS]. +assert (stdenv.targetPlatform != stdenv.hostPlatform) -> !enableHaddockProgram; + +let + inherit (stdenv) buildPlatform hostPlatform targetPlatform; + + inherit (bootPkgs) ghc; + + # TODO(@Ericson2314) Make unconditional + targetPrefix = lib.optionalString + (targetPlatform != hostPlatform) + "${targetPlatform.config}-"; + + buildMK = '' + BuildFlavour = ${ghcFlavour} + ifneq \"\$(BuildFlavour)\" \"\" + include mk/flavours/\$(BuildFlavour).mk + endif + BUILD_SPHINX_HTML = ${if enableDocs then "YES" else "NO"} + BUILD_SPHINX_PDF = NO + '' + + # Note [HADDOCK_DOCS]: + # Unfortunately currently `HADDOCK_DOCS` controls both whether the `haddock` + # program is built (which we generally always want to have a complete GHC install) + # and whether it is run on the GHC sources to generate hyperlinked source code + # (which is impossible for cross-compilation); see: + # https://gitlab.haskell.org/ghc/ghc/-/issues/20077 + # This implies that currently a cross-compiled GHC will never have a `haddock` + # program, so it can never generate haddocks for any packages. + # If this is solved in the future, we'd like to unconditionally + # build the haddock program (removing the `enableHaddockProgram` option). + '' + HADDOCK_DOCS = ${if enableHaddockProgram then "YES" else "NO"} + # Build haddocks for boot packages with hyperlinking + EXTRA_HADDOCK_OPTS += --hyperlinked-source --quickjump + + DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"} + BIGNUM_BACKEND = ${if enableNativeBignum then "native" else "gmp"} + '' + lib.optionalString (targetPlatform != hostPlatform) '' + Stage1Only = ${if targetPlatform.system == hostPlatform.system then "NO" else "YES"} + CrossCompilePrefix = ${targetPrefix} + '' + lib.optionalString (!enableProfiledLibs) '' + GhcLibWays = "v dyn" + '' + + # -fexternal-dynamic-refs apparently (because it's not clear from the documentation) + # makes the GHC RTS able to load static libraries, which may be needed for TemplateHaskell. + # This solution was described in https://www.tweag.io/blog/2020-09-30-bazel-static-haskell + lib.optionalString enableRelocatedStaticLibs '' + GhcLibHcOpts += -fPIC -fexternal-dynamic-refs + GhcRtsHcOpts += -fPIC -fexternal-dynamic-refs + '' + lib.optionalString targetPlatform.useAndroidPrebuilt '' + EXTRA_CC_OPTS += -std=gnu99 + ''; + + # Splicer will pull out correct variations + libDeps = platform: lib.optional enableTerminfo ncurses + ++ [libffi] + ++ lib.optional (!enableNativeBignum) gmp + ++ lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv; + + # TODO(@sternenseemann): is buildTarget LLVM unnecessary? + # GHC doesn't seem to have {LLC,OPT}_HOST + toolsForTarget = [ + pkgsBuildTarget.targetPackages.stdenv.cc + ] ++ lib.optional useLLVM buildTargetLlvmPackages.llvm; + + targetCC = builtins.head toolsForTarget; + + # Sometimes we have to dispatch between the bintools wrapper and the unwrapped + # derivation for certain tools depending on the platform. + bintoolsFor = { + # GHC needs install_name_tool on all darwin platforms. On aarch64-darwin it is + # part of the bintools wrapper (due to codesigning requirements), but not on + # x86_64-darwin. + install_name_tool = + if stdenv.targetPlatform.isAarch64 + then targetCC.bintools + else targetCC.bintools.bintools; + # Same goes for strip. + strip = + # TODO(@sternenseemann): also use wrapper if linker == "bfd" or "gold" + if stdenv.targetPlatform.isAarch64 && stdenv.targetPlatform.isDarwin + then targetCC.bintools + else targetCC.bintools.bintools; + }; + + # Use gold either following the default, or to avoid the BFD linker due to some bugs / perf issues. + # But we cannot avoid BFD when using musl libc due to https://sourceware.org/bugzilla/show_bug.cgi?id=23856 + # see #84670 and #49071 for more background. + useLdGold = targetPlatform.linker == "gold" || + (targetPlatform.linker == "bfd" && (targetCC.bintools.bintools.hasGold or false) && !targetPlatform.isMusl); + + # Makes debugging easier to see which variant is at play in `nix-store -q --tree`. + variantSuffix = lib.concatStrings [ + (lib.optionalString stdenv.hostPlatform.isMusl "-musl") + (lib.optionalString enableNativeBignum "-native-bignum") + ]; + +in + +# C compiler, bintools and LLVM are used at build time, but will also leak into +# the resulting GHC's settings file and used at runtime. This means that we are +# currently only able to build GHC if hostPlatform == buildPlatform. +assert targetCC == pkgsHostTarget.targetPackages.stdenv.cc; +assert buildTargetLlvmPackages.llvm == llvmPackages.llvm; +assert stdenv.targetPlatform.isDarwin -> buildTargetLlvmPackages.clang == llvmPackages.clang; + +stdenv.mkDerivation (rec { + version = "9.4.6"; + pname = "${targetPrefix}ghc${variantSuffix}"; + + src = fetchurl { + url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz"; + sha256 = "1b705cf52692f9d4d6707cdf8e761590f5f56ec8ea6a65e36610db392d3d24b9"; + }; + + enableParallelBuilding = true; + + outputs = [ "out" "doc" ]; + + patches = [ + # Don't generate code that doesn't compile when --enable-relocatable is passed to Setup.hs + # Can be removed if the Cabal library included with ghc backports the linked fix + (fetchpatch { + url = "https://github.com/haskell/cabal/commit/6c796218c92f93c95e94d5ec2d077f6956f68e98.patch"; + stripLen = 1; + extraPrefix = "libraries/Cabal/"; + sha256 = "sha256-yRQ6YmMiwBwiYseC5BsrEtDgFbWvst+maGgDtdD0vAY="; + }) + + # Work around a type not being defined when including Rts.h in bytestring's cbits + # due to missing feature macros. See https://gitlab.haskell.org/ghc/ghc/-/issues/23810. + ./9.4.6-bytestring-posix-source.patch + ] ++ lib.optionals (stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64) [ + # Prevent the paths module from emitting symbols that we don't use + # when building with separate outputs. + # + # These cause problems as they're not eliminated by GHC's dead code + # elimination on aarch64-darwin. (see + # https://github.com/NixOS/nixpkgs/issues/140774 for details). + ./Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch + ]; + + postPatch = "patchShebangs ."; + + # GHC needs the locale configured during the Haddock phase. + LANG = "en_US.UTF-8"; + + # GHC is a bit confused on its cross terminology. + # TODO(@sternenseemann): investigate coreutils dependencies and pass absolute paths + 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}c++" + # Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177 + export LD="${targetCC.bintools}/bin/${targetCC.bintools.targetPrefix}ld${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="${bintoolsFor.strip}/bin/${bintoolsFor.strip.targetPrefix}strip" + '' + lib.optionalString (stdenv.targetPlatform.linker == "cctools") '' + export OTOOL="${targetCC.bintools.bintools}/bin/${targetCC.bintools.targetPrefix}otool" + export INSTALL_NAME_TOOL="${bintoolsFor.install_name_tool}/bin/${bintoolsFor.install_name_tool.targetPrefix}install_name_tool" + '' + lib.optionalString useLLVM '' + export LLC="${lib.getBin buildTargetLlvmPackages.llvm}/bin/llc" + export OPT="${lib.getBin buildTargetLlvmPackages.llvm}/bin/opt" + '' + lib.optionalString (useLLVM && stdenv.targetPlatform.isDarwin) '' + # LLVM backend on Darwin needs clang: https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/codegens.html#llvm-code-generator-fllvm + export CLANG="${buildTargetLlvmPackages.clang}/bin/${buildTargetLlvmPackages.clang.targetPrefix}clang" + '' + '' + + echo -n "${buildMK}" > mk/build.mk + + sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure + '' + lib.optionalString (stdenv.isLinux && hostPlatform.libc == "glibc") '' + export LOCALE_ARCHIVE="${glibcLocales}/lib/locale/locale-archive" + '' + lib.optionalString (!stdenv.isDarwin) '' + export NIX_LDFLAGS+=" -rpath $out/lib/ghc-${version}" + '' + lib.optionalString stdenv.isDarwin '' + export NIX_LDFLAGS+=" -no_dtrace_dof" + + # GHC tries the host xattr /usr/bin/xattr by default which fails since it expects python to be 2.7 + export XATTR=${lib.getBin xattr}/bin/xattr + '' + 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 + '' + 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 + '' + # HACK: allow bootstrapping with GHC 8.10 which works fine, as we don't have + # binary 9.0 packaged. Bootstrapping with 9.2 is broken without hadrian. + + '' + substituteInPlace configure --replace \ + 'MinBootGhcVersion="9.0"' \ + 'MinBootGhcVersion="8.10"' + ''; + + # TODO(@Ericson2314): Always pass "--target" and always prefix. + configurePlatforms = [ "build" "host" ] + ++ 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" + ] ++ lib.optionals (libffi != null) [ + "--with-system-libffi" + "--with-ffi-includes=${targetPackages.libffi.dev}/include" + "--with-ffi-libraries=${targetPackages.libffi.out}/lib" + ] ++ lib.optionals (targetPlatform == hostPlatform && !enableNativeBignum) [ + "--with-gmp-includes=${targetPackages.gmp.dev}/include" + "--with-gmp-libraries=${targetPackages.gmp.out}/lib" + ] ++ lib.optionals (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [ + "--with-iconv-includes=${libiconv}/include" + "--with-iconv-libraries=${libiconv}/lib" + ] ++ lib.optionals (targetPlatform != hostPlatform) [ + "--enable-bootstrap-with-devel-snapshot" + ] ++ lib.optionals useLdGold [ + "CFLAGS=-fuse-ld=gold" + "CONF_GCC_LINKER_OPTS_STAGE1=-fuse-ld=gold" + "CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold" + ] ++ lib.optionals (disableLargeAddressSpace) [ + "--disable-large-address-space" + ]; + + # 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. + dontAddExtraLibs = true; + + nativeBuildInputs = [ + perl autoconf automake m4 python3 + ghc bootPkgs.alex bootPkgs.happy bootPkgs.hscolour + ] ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [ + autoSignDarwinBinariesHook + ] ++ lib.optionals enableDocs [ + sphinx + ]; + + # For building runtime libs + depsBuildTarget = toolsForTarget; + + buildInputs = [ perl bash ] ++ (libDeps hostPlatform); + + depsTargetTarget = map lib.getDev (libDeps targetPlatform); + depsTargetTargetPropagated = map (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" ] ++ lib.optional (!targetPlatform.isDarwin) "--keep-file-symbols"; + + checkTarget = "test"; + + hardeningDisable = + [ "format" ] + # In nixpkgs, musl based builds currently enable `pie` hardening by default + # (see `defaultHardeningFlags` in `make-derivation.nix`). + # But GHC cannot currently produce outputs that are ready for `-pie` linking. + # Thus, disable `pie` hardening, otherwise `recompile with -fPIE` errors appear. + # See: + # * https://github.com/NixOS/nixpkgs/issues/129247 + # * https://gitlab.haskell.org/ghc/ghc/-/issues/19580 + ++ lib.optional stdenv.targetPlatform.isMusl "pie"; + + # big-parallel allows us to build with more than 2 cores on + # Hydra which already warrants a significant speedup + requiredSystemFeatures = [ "big-parallel" ]; + + postInstall = '' + # Install the bash completion file. + install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${targetPrefix}ghc + ''; + + passthru = { + inherit bootPkgs targetPrefix; + + inherit llvmPackages; + inherit enableShared; + + # This is used by the haskell builder to query + # the presence of the haddock program. + hasHaddock = enableHaddockProgram; + + # Our Cabal compiler name + haskellCompilerName = "ghc-${version}"; + }; + + meta = { + homepage = "http://haskell.org/ghc"; + description = "The Glasgow Haskell Compiler"; + maintainers = with lib.maintainers; [ + guibou + ] ++ lib.teams.haskell.members; + timeout = 24 * 3600; + inherit (ghc.meta) license platforms; + }; + +} // lib.optionalAttrs targetPlatform.useAndroidPrebuilt { + dontStrip = true; + dontPatchELF = true; + noAuditTmpdir = true; +}) diff --git a/nixpkgs/pkgs/development/compilers/ghc/Cabal-3.6-paths-fix-cycle-aarch64-darwin.patch b/nixpkgs/pkgs/development/compilers/ghc/Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch index 1f7a79cc6885..1f7a79cc6885 100644 --- a/nixpkgs/pkgs/development/compilers/ghc/Cabal-3.6-paths-fix-cycle-aarch64-darwin.patch +++ b/nixpkgs/pkgs/development/compilers/ghc/Cabal-3.6-3.8-paths-fix-cycle-aarch64-darwin.patch diff --git a/nixpkgs/pkgs/development/compilers/ghc/common-hadrian.nix b/nixpkgs/pkgs/development/compilers/ghc/common-hadrian.nix index 099a7fd2568f..94755f1beec8 100644 --- a/nixpkgs/pkgs/development/compilers/ghc/common-hadrian.nix +++ b/nixpkgs/pkgs/development/compilers/ghc/common-hadrian.nix @@ -57,8 +57,7 @@ , # If enabled, use -fPIC when compiling static libs. enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform - # aarch64 outputs otherwise exceed 2GB limit -, enableProfiledLibs ? !stdenv.targetPlatform.isAarch64 +, enableProfiledLibs ? true , # Whether to build dynamic libs for the standard library (on the target # platform). Static libs are always built. @@ -155,6 +154,8 @@ ghcSrc = ghcSrc; ghcVersion = version; userSettings = hadrianUserSettings; + # Disable haddock generating pretty source listings to stay under 3GB on aarch64-linux + enableHyperlinkedSource = !(stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isLinux); } , # Whether to build sphinx documentation. diff --git a/nixpkgs/pkgs/development/compilers/go/1.18.nix b/nixpkgs/pkgs/development/compilers/go/1.18.nix index de74e99d9bb4..5490bc1fc598 100644 --- a/nixpkgs/pkgs/development/compilers/go/1.18.nix +++ b/nixpkgs/pkgs/development/compilers/go/1.18.nix @@ -166,7 +166,8 @@ stdenv.mkDerivation rec { runHook preInstall mkdir -p $GOROOT_FINAL cp -a bin pkg src lib misc api doc $GOROOT_FINAL - ln -s $GOROOT_FINAL/bin $out/bin + mkdir -p $out/bin + ln -s $GOROOT_FINAL/bin/* $out/bin runHook postInstall ''; diff --git a/nixpkgs/pkgs/development/compilers/go/1.19.nix b/nixpkgs/pkgs/development/compilers/go/1.19.nix index 0ce8fcc659a8..d123c69319ee 100644 --- a/nixpkgs/pkgs/development/compilers/go/1.19.nix +++ b/nixpkgs/pkgs/development/compilers/go/1.19.nix @@ -166,7 +166,8 @@ stdenv.mkDerivation rec { runHook preInstall mkdir -p $GOROOT_FINAL cp -a bin pkg src lib misc api doc $GOROOT_FINAL - ln -s $GOROOT_FINAL/bin $out/bin + mkdir -p $out/bin + ln -s $GOROOT_FINAL/bin/* $out/bin runHook postInstall ''; diff --git a/nixpkgs/pkgs/development/compilers/go/1.20.nix b/nixpkgs/pkgs/development/compilers/go/1.20.nix index 18fa8db98792..3364ea354019 100644 --- a/nixpkgs/pkgs/development/compilers/go/1.20.nix +++ b/nixpkgs/pkgs/development/compilers/go/1.20.nix @@ -46,11 +46,11 @@ let in stdenv.mkDerivation rec { pname = "go"; - version = "1.20.6"; + version = "1.20.7"; src = fetchurl { url = "https://go.dev/dl/go${version}.src.tar.gz"; - hash = "sha256-Yu5bxvtVuLro9wXgy434bWRTYmtOz5MnnihnCS4Lf3A="; + hash = "sha256-LF7pyeweczsNu8K9/tP2IwblHYFyvzj09OVCsnUg9Zc="; }; strictDeps = true; @@ -158,7 +158,8 @@ stdenv.mkDerivation rec { runHook preInstall mkdir -p $GOROOT_FINAL cp -a bin pkg src lib misc api doc $GOROOT_FINAL - ln -s $GOROOT_FINAL/bin $out/bin + mkdir -p $out/bin + ln -s $GOROOT_FINAL/bin/* $out/bin runHook postInstall ''; diff --git a/nixpkgs/pkgs/development/compilers/go/1.21.nix b/nixpkgs/pkgs/development/compilers/go/1.21.nix new file mode 100644 index 000000000000..c95211c6d9e3 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/go/1.21.nix @@ -0,0 +1,183 @@ +{ lib +, stdenv +, fetchurl +, tzdata +, substituteAll +, iana-etc +, Security +, Foundation +, xcbuild +, mailcap +, buildPackages +, pkgsBuildTarget +, threadsCross +, testers +, skopeo +, buildGo121Module +}: + +let + useGccGoBootstrap = stdenv.buildPlatform.isMusl || stdenv.buildPlatform.isRiscV; + goBootstrap = if useGccGoBootstrap then buildPackages.gccgo12 else buildPackages.callPackage ./bootstrap117.nix { }; + + skopeoTest = skopeo.override { buildGoModule = buildGo121Module; }; + + goarch = platform: { + "aarch64" = "arm64"; + "arm" = "arm"; + "armv5tel" = "arm"; + "armv6l" = "arm"; + "armv7l" = "arm"; + "i686" = "386"; + "mips" = "mips"; + "mips64el" = "mips64le"; + "mipsel" = "mipsle"; + "powerpc64le" = "ppc64le"; + "riscv64" = "riscv64"; + "s390x" = "s390x"; + "x86_64" = "amd64"; + }.${platform.parsed.cpu.name} or (throw "Unsupported system: ${platform.parsed.cpu.name}"); + + # We need a target compiler which is still runnable at build time, + # to handle the cross-building case where build != host == target + targetCC = pkgsBuildTarget.targetPackages.stdenv.cc; + + isCross = stdenv.buildPlatform != stdenv.targetPlatform; +in +stdenv.mkDerivation rec { + pname = "go"; + version = "1.21.0"; + + src = fetchurl { + url = "https://go.dev/dl/go${version}.src.tar.gz"; + hash = "sha256-gY1G7ehWgt1VGtN47zek0kcAbxLsWbW3VWAdLOEUNpo="; + }; + + strictDeps = true; + buildInputs = [ ] + ++ lib.optionals stdenv.isLinux [ stdenv.cc.libc.out ] + ++ lib.optionals (stdenv.hostPlatform.libc == "glibc") [ stdenv.cc.libc.static ]; + + depsTargetTargetPropagated = lib.optionals stdenv.targetPlatform.isDarwin [ Foundation Security xcbuild ]; + + depsBuildTarget = lib.optional isCross targetCC; + + depsTargetTarget = lib.optional stdenv.targetPlatform.isWindows threadsCross.package; + + postPatch = '' + patchShebangs . + ''; + + patches = [ + (substituteAll { + src = ./iana-etc-1.17.patch; + iana = iana-etc; + }) + # Patch the mimetype database location which is missing on NixOS. + # but also allow static binaries built with NixOS to run outside nix + (substituteAll { + src = ./mailcap-1.17.patch; + inherit mailcap; + }) + # prepend the nix path to the zoneinfo files but also leave the original value for static binaries + # that run outside a nix server + (substituteAll { + src = ./tzdata-1.19.patch; + inherit tzdata; + }) + ./remove-tools-1.11.patch + ./go_no_vendor_checks-1.21.patch + ]; + + 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 isCross then + "${targetCC}/bin/${targetCC.targetPrefix}cc" + else + null; + CXX_FOR_TARGET = + if isCross then + "${targetCC}/bin/${targetCC.targetPrefix}c++" + else + null; + + GOARM = toString (lib.intersectLists [ (stdenv.hostPlatform.parsed.cpu.version or "") ] [ "5" "6" "7" ]); + GO386 = "softfloat"; # from Arch: don't assume sse2 on i686 + CGO_ENABLED = 1; + + GOROOT_BOOTSTRAP = if useGccGoBootstrap then goBootstrap else "${goBootstrap}/share/go"; + + buildPhase = '' + runHook preBuild + export GOCACHE=$TMPDIR/go-cache + # this is compiled into the binary + export GOROOT_FINAL=$out/share/go + + export PATH=$(pwd)/bin:$PATH + + ${lib.optionalString isCross '' + # Independent from host/target, CC should produce code for the building system. + # We only set it when cross-compiling. + export CC=${buildPackages.stdenv.cc}/bin/cc + ''} + ulimit -a + + pushd src + ./make.bash + popd + runHook postBuild + ''; + + preInstall = '' + # 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.system != stdenv.hostPlatform.system) then '' + mv bin/*_*/* bin + rmdir bin/*_* + ${lib.optionalString (!(GOHOSTARCH == GOARCH && GOOS == GOHOSTOS)) '' + rm -rf pkg/${GOHOSTOS}_${GOHOSTARCH} pkg/tool/${GOHOSTOS}_${GOHOSTARCH} + ''} + '' else lib.optionalString (stdenv.hostPlatform.system != stdenv.targetPlatform.system) '' + rm -rf bin/*_* + ${lib.optionalString (!(GOHOSTARCH == GOARCH && GOOS == GOHOSTOS)) '' + rm -rf pkg/${GOOS}_${GOARCH} pkg/tool/${GOOS}_${GOARCH} + ''} + ''); + + installPhase = '' + runHook preInstall + mkdir -p $GOROOT_FINAL + cp -a bin pkg src lib misc api doc go.env $GOROOT_FINAL + mkdir -p $out/bin + ln -s $GOROOT_FINAL/bin/* $out/bin + runHook postInstall + ''; + + disallowedReferences = [ goBootstrap ]; + + passthru = { + inherit goBootstrap skopeoTest; + tests = { + skopeo = testers.testVersion { package = skopeoTest; }; + }; + }; + + meta = with lib; { + changelog = "https://go.dev/doc/devel/release#go${lib.versions.majorMinor version}"; + description = "The Go Programming language"; + homepage = "https://go.dev/"; + license = licenses.bsd3; + maintainers = teams.golang.members; + platforms = platforms.darwin ++ platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/development/compilers/go/go_no_vendor_checks-1.21.patch b/nixpkgs/pkgs/development/compilers/go/go_no_vendor_checks-1.21.patch new file mode 100644 index 000000000000..1adbf46398c5 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/go/go_no_vendor_checks-1.21.patch @@ -0,0 +1,23 @@ +Starting from go1.14, go verifes that vendor/modules.txt matches the requirements +and replacements listed in the main module go.mod file, and it is a hard failure if +vendor/modules.txt is missing. + +Relax module consistency checks and switch back to pre go1.14 behaviour if +vendor/modules.txt is missing regardless of go version requirement in go.mod. + +This has been ported from FreeBSD: https://reviews.freebsd.org/D24122 +See https://github.com/golang/go/issues/37948 for discussion. + +diff --git a/src/cmd/go/internal/modload/vendor.go b/src/cmd/go/internal/modload/vendor.go +index ffc79bb93f..2d0311975d 100644 +--- a/src/cmd/go/internal/modload/vendor.go ++++ b/src/cmd/go/internal/modload/vendor.go +@@ -144,7 +144,7 @@ func checkVendorConsistency(index *modFileIndex, modFile *modfile.File) { + readVendorList(MainModules.mustGetSingleMainModule()) + + pre114 := false +- if gover.Compare(index.goVersion, "1.14") < 0 { ++ if gover.Compare(index.goVersion, "1.14") < 0 || (os.Getenv("GO_NO_VENDOR_CHECKS") == "1" && len(vendorMeta) == 0) { + // Go versions before 1.14 did not include enough information in + // vendor/modules.txt to check for consistency. + // If we know that we're on an earlier version, relax the consistency check. diff --git a/nixpkgs/pkgs/development/compilers/jasmin-compiler/default.nix b/nixpkgs/pkgs/development/compilers/jasmin-compiler/default.nix index 9f539f698182..7bb0d3742a97 100644 --- a/nixpkgs/pkgs/development/compilers/jasmin-compiler/default.nix +++ b/nixpkgs/pkgs/development/compilers/jasmin-compiler/default.nix @@ -2,21 +2,15 @@ stdenv.mkDerivation rec { pname = "jasmin-compiler"; - version = "2023.06.0"; + version = "2023.06.1"; src = fetchurl { url = "https://github.com/jasmin-lang/jasmin/releases/download/v${version}/jasmin-compiler-v${version}.tar.bz2"; - hash = "sha256-yQBQGDNZQhNATs62nqWsgl/HzQCH24EHPp87B3I0Dxo="; + hash = "sha256-3+eIR8wkBlcUQVDsugHo/rHNHbE2vpE9gutp55kRY4Y="; }; sourceRoot = "jasmin-compiler-v${version}/compiler"; - # Released tarball contains extraneous `dune` files - # See https://github.com/jasmin-lang/jasmin/pull/495 - preBuild = '' - rm -rf tests - ''; - nativeBuildInputs = with ocamlPackages; [ ocaml findlib dune_3 menhir camlidl cmdliner ]; buildInputs = [ diff --git a/nixpkgs/pkgs/development/compilers/jetbrains-jdk/jcef.nix b/nixpkgs/pkgs/development/compilers/jetbrains-jdk/jcef.nix index d3785703da33..165c9bea58ee 100644 --- a/nixpkgs/pkgs/development/compilers/jetbrains-jdk/jcef.nix +++ b/nixpkgs/pkgs/development/compilers/jetbrains-jdk/jcef.nix @@ -76,11 +76,11 @@ buildType = if debugBuild then "Debug" else "Release"; in stdenv.mkDerivation rec { pname = "jcef-jetbrains"; - rev = "3dfde2a70f1f914c6a84ba967123a0e38f51053f"; + rev = "1ac1c682c497f2b864f86050796461f22935ea64"; # This is the commit number - # Currently from the 231 branch: https://github.com/JetBrains/jcef/tree/231 + # Currently from the branch: https://github.com/JetBrains/jcef/tree/232 # Run `git rev-list --count HEAD` - version = "654"; + version = "672"; nativeBuildInputs = [ cmake python3 jdk17 git rsync ant ninja ]; buildInputs = [ libX11 libXdamage nss nspr ]; @@ -89,19 +89,19 @@ in stdenv.mkDerivation rec { owner = "jetbrains"; repo = "jcef"; inherit rev; - hash = "sha256-g8jWzRI2uYzu8O7JHENn0u9yY08fvY6g0Uym02oYUMI="; + hash = "sha256-3HuW8upR/bZoK8euVti2KpCZh9xxfqgyHmgoG1NjxOI="; }; cef-bin = let - fileName = "cef_binary_104.4.26+g4180781+chromium-104.0.5112.102_linux64_minimal"; + fileName = "cef_binary_111.2.1+g870da30+chromium-111.0.5563.64_linux64_minimal"; urlName = builtins.replaceStrings ["+"] ["%2B"] fileName; in fetchzip rec { name = fileName; url = "https://cef-builds.spotifycdn.com/${urlName}.tar.bz2"; - hash = "sha256-0PAWWBR+9TO8hhejydWz8R6Df3d9A/Mb0VL8stlPz5Q="; + hash = "sha256-r+zXTmDN5s/bYLvbCnHufYdXIqQmCDlbWgs5pdOpLTw="; }; clang-fmt = fetchurl { - url = "https://storage.googleapis.com/chromium-clang-format/942fc8b1789144b8071d3fc03ff0fcbe1cf81ac8"; - hash = "sha256-5iAU49tQmLS7zkS+6iGT+6SEdERRo1RkyRpiRvc9nVY="; + url = "https://storage.googleapis.com/chromium-clang-format/dd736afb28430c9782750fc0fd5f0ed497399263"; + hash = "sha256-4H6FVO9jdZtxH40CSfS+4VESAHgYgYxfCBFSMHdT0hE="; }; configurePhase = '' diff --git a/nixpkgs/pkgs/development/compilers/ligo/2706.diff b/nixpkgs/pkgs/development/compilers/ligo/2706.diff deleted file mode 100644 index 8eab82e1461e..000000000000 --- a/nixpkgs/pkgs/development/compilers/ligo/2706.diff +++ /dev/null @@ -1,58 +0,0 @@ ---- a/src/passes/02-parsing/cameligo/dune -+++ b/src/passes/02-parsing/cameligo/dune -@@ -20,7 +20,9 @@ - (action - (with-stdout-to - %{targets} -- (run menhir-recover --external-tokens Lexing_cameligo.Token Parser.cmly)))) -+ (run menhir-recover -+ --external-tokens Lexing_cameligo.Token.MenhirInterpreter -+ Parser.cmly)))) - - ;; Build of the CameLIGO parser as a library - -diff --git a/src/passes/02-parsing/jsligo/dune b/src/passes/02-parsing/jsligo/dune -index d691ab0af0fe6ae87119405c19e49e2b5c2d1a23..3b13a06e69737037df0df12aa087506f402d8430 100644 ---- a/src/passes/02-parsing/jsligo/dune -+++ b/src/passes/02-parsing/jsligo/dune -@@ -20,7 +20,9 @@ - (action - (with-stdout-to - %{targets} -- (run menhir-recover --external-tokens Lexing_jsligo.Token Parser.cmly)))) -+ (run menhir-recover -+ --external-tokens Lexing_jsligo.Token.MenhirInterpreter -+ Parser.cmly)))) - - ;; Build of the JsLIGO parser as a library - -diff --git a/src/passes/02-parsing/pascaligo/dune b/src/passes/02-parsing/pascaligo/dune -index 0516a8b790d2eb3ebdb833051bd66241ca44832c..e650decc7ba9907551e1016fee1a53b806fb593e 100644 ---- a/src/passes/02-parsing/pascaligo/dune -+++ b/src/passes/02-parsing/pascaligo/dune -@@ -20,7 +20,9 @@ - (action - (with-stdout-to - %{targets} -- (run menhir-recover --external-tokens Lexing_pascaligo.Token Parser.cmly)))) -+ (run menhir-recover -+ --external-tokens Lexing_pascaligo.Token.MenhirInterpreter -+ Parser.cmly)))) - - ;; Build of the PascaLIGO parser as a library - -diff --git a/src/passes/02-parsing/pyligo/dune b/src/passes/02-parsing/pyligo/dune -index abb0165f6f185d21ea4a52a152cef188ae9dde4b..5930d86ab721e9dd683e5c4f2873b196ac5859b4 100644 ---- a/src/passes/02-parsing/pyligo/dune -+++ b/src/passes/02-parsing/pyligo/dune -@@ -20,7 +20,9 @@ - (action - (with-stdout-to - %{targets} -- (run menhir-recover --external-tokens Lexing_pyligo.Token Parser.cmly)))) -+ (run menhir-recover -+ --external-tokens Lexing_pyligo.Token.MenhirInterpreter -+ Parser.cmly)))) - - ;; Build of the PyLIGO parser as a library - diff --git a/nixpkgs/pkgs/development/compilers/ligo/default.nix b/nixpkgs/pkgs/development/compilers/ligo/default.nix index 05fea9caddbb..8257eab56aa2 100644 --- a/nixpkgs/pkgs/development/compilers/ligo/default.nix +++ b/nixpkgs/pkgs/development/compilers/ligo/default.nix @@ -15,18 +15,15 @@ ocamlPackages.buildDunePackage rec { pname = "ligo"; - version = "0.69.0"; + version = "0.72.0"; src = fetchFromGitLab { owner = "ligolang"; repo = "ligo"; rev = version; - sha256 = "sha256-Swt4uihsAtHVMkc0DxATwB8FvgxwtSJTN3E5cBtyXf8="; + sha256 = "sha256-DQ3TxxLxi8/W1+uBX7NEBIsVXBKnJBa6YNRBFleNrEA="; fetchSubmodules = true; }; - # https://gitlab.com/ligolang/ligo/-/merge_requests/2706.diff - patches = [ ./2706.diff ]; - postPatch = '' substituteInPlace "vendors/tezos-ligo/src/lib_hacl/hacl.ml" \ --replace \ @@ -78,6 +75,7 @@ ocamlPackages.buildDunePackage rec { decompress ppx_deriving ppx_deriving_yojson + ppx_yojson_conv ppx_expect ppx_import terminal_size diff --git a/nixpkgs/pkgs/development/compilers/llvm/10/clang/default.nix b/nixpkgs/pkgs/development/compilers/llvm/10/clang/default.nix index 3d503c9b9139..ad4e91304158 100644 --- a/nixpkgs/pkgs/development/compilers/llvm/10/clang/default.nix +++ b/nixpkgs/pkgs/development/compilers/llvm/10/clang/default.nix @@ -73,12 +73,13 @@ let --replace "\''${_IMPORT_PREFIX}/lib/libclang." "$lib/lib/libclang." \ --replace "\''${_IMPORT_PREFIX}/lib/libclang-cpp." "$lib/lib/libclang-cpp." - mkdir -p $python/bin $python/share/clang/ + mkdir -p $python/bin $python/share/{clang,scan-view} mv $out/bin/{git-clang-format,scan-view} $python/bin if [ -e $out/bin/set-xcode-analyzer ]; then mv $out/bin/set-xcode-analyzer $python/bin fi mv $out/share/clang/*.py $python/share/clang + mv $out/share/scan-view/*.py $python/share/scan-view rm $out/bin/c-index-test patchShebangs $python/bin diff --git a/nixpkgs/pkgs/development/compilers/llvm/11/clang/default.nix b/nixpkgs/pkgs/development/compilers/llvm/11/clang/default.nix index a721c243b46a..f0d41a3ab734 100644 --- a/nixpkgs/pkgs/development/compilers/llvm/11/clang/default.nix +++ b/nixpkgs/pkgs/development/compilers/llvm/11/clang/default.nix @@ -78,12 +78,13 @@ let --replace "\''${_IMPORT_PREFIX}/lib/libclang." "$lib/lib/libclang." \ --replace "\''${_IMPORT_PREFIX}/lib/libclang-cpp." "$lib/lib/libclang-cpp." - mkdir -p $python/bin $python/share/clang/ + mkdir -p $python/bin $python/share/{clang,scan-view} mv $out/bin/{git-clang-format,scan-view} $python/bin if [ -e $out/bin/set-xcode-analyzer ]; then mv $out/bin/set-xcode-analyzer $python/bin fi mv $out/share/clang/*.py $python/share/clang + mv $out/share/scan-view/*.py $python/share/scan-view rm $out/bin/c-index-test patchShebangs $python/bin diff --git a/nixpkgs/pkgs/development/compilers/llvm/12/clang/default.nix b/nixpkgs/pkgs/development/compilers/llvm/12/clang/default.nix index acccb55c2f89..7ecd4efc0837 100644 --- a/nixpkgs/pkgs/development/compilers/llvm/12/clang/default.nix +++ b/nixpkgs/pkgs/development/compilers/llvm/12/clang/default.nix @@ -72,12 +72,13 @@ let --replace "\''${_IMPORT_PREFIX}/lib/libclang." "$lib/lib/libclang." \ --replace "\''${_IMPORT_PREFIX}/lib/libclang-cpp." "$lib/lib/libclang-cpp." - mkdir -p $python/bin $python/share/clang/ + mkdir -p $python/bin $python/share/{clang,scan-view} mv $out/bin/{git-clang-format,scan-view} $python/bin if [ -e $out/bin/set-xcode-analyzer ]; then mv $out/bin/set-xcode-analyzer $python/bin fi mv $out/share/clang/*.py $python/share/clang + mv $out/share/scan-view/*.py $python/share/scan-view rm $out/bin/c-index-test patchShebangs $python/bin diff --git a/nixpkgs/pkgs/development/compilers/llvm/13/clang/default.nix b/nixpkgs/pkgs/development/compilers/llvm/13/clang/default.nix index 5e06e85c02a9..a070e64c7ddd 100644 --- a/nixpkgs/pkgs/development/compilers/llvm/13/clang/default.nix +++ b/nixpkgs/pkgs/development/compilers/llvm/13/clang/default.nix @@ -66,12 +66,13 @@ let --replace "\''${_IMPORT_PREFIX}/lib/libclang." "$lib/lib/libclang." \ --replace "\''${_IMPORT_PREFIX}/lib/libclang-cpp." "$lib/lib/libclang-cpp." - mkdir -p $python/bin $python/share/clang/ + mkdir -p $python/bin $python/share/{clang,scan-view} mv $out/bin/{git-clang-format,scan-view} $python/bin if [ -e $out/bin/set-xcode-analyzer ]; then mv $out/bin/set-xcode-analyzer $python/bin fi mv $out/share/clang/*.py $python/share/clang + mv $out/share/scan-view/*.py $python/share/scan-view rm $out/bin/c-index-test patchShebangs $python/bin diff --git a/nixpkgs/pkgs/development/compilers/llvm/14/clang/default.nix b/nixpkgs/pkgs/development/compilers/llvm/14/clang/default.nix index 901e41a58fa7..976ff7580ac3 100644 --- a/nixpkgs/pkgs/development/compilers/llvm/14/clang/default.nix +++ b/nixpkgs/pkgs/development/compilers/llvm/14/clang/default.nix @@ -69,12 +69,13 @@ let --replace "\''${_IMPORT_PREFIX}/lib/libclang." "$lib/lib/libclang." \ --replace "\''${_IMPORT_PREFIX}/lib/libclang-cpp." "$lib/lib/libclang-cpp." - mkdir -p $python/bin $python/share/clang/ + mkdir -p $python/bin $python/share/{clang,scan-view} mv $out/bin/{git-clang-format,scan-view} $python/bin if [ -e $out/bin/set-xcode-analyzer ]; then mv $out/bin/set-xcode-analyzer $python/bin fi mv $out/share/clang/*.py $python/share/clang + mv $out/share/scan-view/*.py $python/share/scan-view rm $out/bin/c-index-test patchShebangs $python/bin diff --git a/nixpkgs/pkgs/development/compilers/llvm/5/clang/default.nix b/nixpkgs/pkgs/development/compilers/llvm/5/clang/default.nix index 0428e3a170cb..6e968a6bd2a6 100644 --- a/nixpkgs/pkgs/development/compilers/llvm/5/clang/default.nix +++ b/nixpkgs/pkgs/development/compilers/llvm/5/clang/default.nix @@ -67,12 +67,13 @@ let substituteInPlace $out/lib/cmake/clang/ClangTargets-release.cmake \ --replace "\''${_IMPORT_PREFIX}/lib/libclang." "$lib/lib/libclang." - mkdir -p $python/bin $python/share/clang/ + mkdir -p $python/bin $python/share/{clang,scan-view} mv $out/bin/{git-clang-format,scan-view} $python/bin if [ -e $out/bin/set-xcode-analyzer ]; then mv $out/bin/set-xcode-analyzer $python/bin fi mv $out/share/clang/*.py $python/share/clang + mv $out/share/scan-view/*.py $python/share/scan-view rm $out/bin/c-index-test patchShebangs $python/bin diff --git a/nixpkgs/pkgs/development/compilers/llvm/6/clang/default.nix b/nixpkgs/pkgs/development/compilers/llvm/6/clang/default.nix index 3efb3c02c79e..baf601ffbfc2 100644 --- a/nixpkgs/pkgs/development/compilers/llvm/6/clang/default.nix +++ b/nixpkgs/pkgs/development/compilers/llvm/6/clang/default.nix @@ -67,12 +67,13 @@ let substituteInPlace $out/lib/cmake/clang/ClangTargets-release.cmake \ --replace "\''${_IMPORT_PREFIX}/lib/libclang." "$lib/lib/libclang." - mkdir -p $python/bin $python/share/clang/ + mkdir -p $python/bin $python/share/{clang,scan-view} mv $out/bin/{git-clang-format,scan-view} $python/bin if [ -e $out/bin/set-xcode-analyzer ]; then mv $out/bin/set-xcode-analyzer $python/bin fi mv $out/share/clang/*.py $python/share/clang + mv $out/share/scan-view/*.py $python/share/scan-view rm $out/bin/c-index-test patchShebangs $python/bin diff --git a/nixpkgs/pkgs/development/compilers/llvm/7/clang/default.nix b/nixpkgs/pkgs/development/compilers/llvm/7/clang/default.nix index b044e1662426..c3f2bcb73ffe 100644 --- a/nixpkgs/pkgs/development/compilers/llvm/7/clang/default.nix +++ b/nixpkgs/pkgs/development/compilers/llvm/7/clang/default.nix @@ -79,12 +79,13 @@ let substituteInPlace $out/lib/cmake/clang/ClangTargets-release.cmake \ --replace "\''${_IMPORT_PREFIX}/lib/libclang." "$lib/lib/libclang." - mkdir -p $python/bin $python/share/clang/ + mkdir -p $python/bin $python/share/{clang,scan-view} mv $out/bin/{git-clang-format,scan-view} $python/bin if [ -e $out/bin/set-xcode-analyzer ]; then mv $out/bin/set-xcode-analyzer $python/bin fi mv $out/share/clang/*.py $python/share/clang + mv $out/share/scan-view/*.py $python/share/scan-view rm $out/bin/c-index-test patchShebangs $python/bin diff --git a/nixpkgs/pkgs/development/compilers/llvm/8/clang/default.nix b/nixpkgs/pkgs/development/compilers/llvm/8/clang/default.nix index d03178d6897a..0d0af5ab6aa6 100644 --- a/nixpkgs/pkgs/development/compilers/llvm/8/clang/default.nix +++ b/nixpkgs/pkgs/development/compilers/llvm/8/clang/default.nix @@ -85,12 +85,13 @@ let substituteInPlace $out/lib/cmake/clang/ClangTargets-release.cmake \ --replace "\''${_IMPORT_PREFIX}/lib/libclang." "$lib/lib/libclang." - mkdir -p $python/bin $python/share/clang/ + mkdir -p $python/bin $python/share/{clang,scan-view} mv $out/bin/{git-clang-format,scan-view} $python/bin if [ -e $out/bin/set-xcode-analyzer ]; then mv $out/bin/set-xcode-analyzer $python/bin fi mv $out/share/clang/*.py $python/share/clang + mv $out/share/scan-view/*.py $python/share/scan-view rm $out/bin/c-index-test patchShebangs $python/bin diff --git a/nixpkgs/pkgs/development/compilers/llvm/9/clang/default.nix b/nixpkgs/pkgs/development/compilers/llvm/9/clang/default.nix index 4a48cb94c4ae..75814fc11c48 100644 --- a/nixpkgs/pkgs/development/compilers/llvm/9/clang/default.nix +++ b/nixpkgs/pkgs/development/compilers/llvm/9/clang/default.nix @@ -80,12 +80,13 @@ let --replace "\''${_IMPORT_PREFIX}/lib/libclang." "$lib/lib/libclang." \ --replace "\''${_IMPORT_PREFIX}/lib/libclang-cpp." "$lib/lib/libclang-cpp." - mkdir -p $python/bin $python/share/clang/ + mkdir -p $python/bin $python/share/{clang,scan-view} mv $out/bin/{git-clang-format,scan-view} $python/bin if [ -e $out/bin/set-xcode-analyzer ]; then mv $out/bin/set-xcode-analyzer $python/bin fi mv $out/share/clang/*.py $python/share/clang + mv $out/share/scan-view/*.py $python/share/scan-view rm $out/bin/c-index-test patchShebangs $python/bin diff --git a/nixpkgs/pkgs/development/compilers/llvm/git/clang/default.nix b/nixpkgs/pkgs/development/compilers/llvm/git/clang/default.nix index 894db1a4975f..733f5462d320 100644 --- a/nixpkgs/pkgs/development/compilers/llvm/git/clang/default.nix +++ b/nixpkgs/pkgs/development/compilers/llvm/git/clang/default.nix @@ -81,12 +81,13 @@ let --replace "\''${_IMPORT_PREFIX}/lib/libclang." "$lib/lib/libclang." \ --replace "\''${_IMPORT_PREFIX}/lib/libclang-cpp." "$lib/lib/libclang-cpp." - mkdir -p $python/bin $python/share/clang/ + mkdir -p $python/bin $python/share/{clang,scan-view} mv $out/bin/{git-clang-format,scan-view} $python/bin if [ -e $out/bin/set-xcode-analyzer ]; then mv $out/bin/set-xcode-analyzer $python/bin fi mv $out/share/clang/*.py $python/share/clang + mv $out/share/scan-view/*.py $python/share/scan-view rm $out/bin/c-index-test patchShebangs $python/bin diff --git a/nixpkgs/pkgs/development/compilers/mercury/default.nix b/nixpkgs/pkgs/development/compilers/mercury/default.nix index 134c9e114370..573c18cd9284 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 = "22.01.6"; + version = "22.01.7"; src = fetchurl { url = "https://dl.mercurylang.org/release/mercury-srcdist-${version}.tar.gz"; - sha256 = "sha256-dpRW+DRGJZPIvUv6/y1TLAFjrPOldKBtpwn87nOgIt8="; + sha256 = "sha256-PctyVKlV2cnHoBSAXjMTSPvWY7op9D6kIMypYDRgvGw="; }; nativeBuildInputs = [ makeWrapper ]; @@ -54,9 +54,10 @@ stdenv.mkDerivation rec { allowing modularity, separate compilation, and numerous optimization/time trade-offs. ''; - homepage = "http://mercurylang.org"; - license = lib.licenses.gpl2; - platforms = lib.platforms.linux ++ lib.platforms.darwin; + homepage = "https://mercurylang.org/"; + changelog = "https://dl.mercurylang.org/release/release-notes-${version}.html"; + license = lib.licenses.gpl2Only; + platforms = lib.platforms.all; maintainers = [ ]; }; } diff --git a/nixpkgs/pkgs/development/compilers/nextpnr/default.nix b/nixpkgs/pkgs/development/compilers/nextpnr/default.nix index 2f6e4c86ac9e..d56f7e716301 100644 --- a/nixpkgs/pkgs/development/compilers/nextpnr/default.nix +++ b/nixpkgs/pkgs/development/compilers/nextpnr/default.nix @@ -11,29 +11,33 @@ let boostPython = boost.override { python = python3; enablePython = true; }; -in -stdenv.mkDerivation rec { + pname = "nextpnr"; version = "0.6"; - srcs = [ - (fetchFromGitHub { - owner = "YosysHQ"; - repo = "nextpnr"; - rev = "${pname}-${version}"; - hash = "sha256-S6qvTzvkS2tBMvuTpmuCx6h0OcKP5NBbmgRgOpAVtnA="; - name = "nextpnr"; - }) - (fetchFromGitHub { - owner = "YosysHQ"; - repo = "nextpnr-tests"; - rev = "00c55a9eb9ea2e062b51fe0d64741412b185d95d"; - sha256 = "sha256-83suMftMtnaRFq3T2/I7Uahb11WZlXhwYt6Q/rqi2Yo="; - name = "nextpnr-tests"; - }) - ]; + main_src = fetchFromGitHub { + owner = "YosysHQ"; + repo = "nextpnr"; + rev = "${pname}-${version}"; + hash = "sha256-S6qvTzvkS2tBMvuTpmuCx6h0OcKP5NBbmgRgOpAVtnA="; + name = "nextpnr"; + }; + + test_src = fetchFromGitHub { + owner = "YosysHQ"; + repo = "nextpnr-tests"; + rev = "00c55a9eb9ea2e062b51fe0d64741412b185d95d"; + sha256 = "sha256-83suMftMtnaRFq3T2/I7Uahb11WZlXhwYt6Q/rqi2Yo="; + name = "nextpnr-tests"; + }; +in + +stdenv.mkDerivation rec { + inherit pname version; + + srcs = [ main_src test_src ]; - sourceRoot = "nextpnr"; + sourceRoot = main_src.name; nativeBuildInputs = [ cmake ] @@ -66,7 +70,7 @@ stdenv.mkDerivation rec { ''; preBuild = '' - ln -s ../nextpnr-tests tests + ln -s ../${test_src.name} tests ''; doCheck = true; diff --git a/nixpkgs/pkgs/development/compilers/nim/default.nix b/nixpkgs/pkgs/development/compilers/nim/default.nix index 131a27b6f544..f18671242130 100644 --- a/nixpkgs/pkgs/development/compilers/nim/default.nix +++ b/nixpkgs/pkgs/development/compilers/nim/default.nix @@ -2,8 +2,8 @@ # https://nim-lang.org/docs/nimc.html { lib, callPackage, buildPackages, stdenv, fetchurl, fetchgit, fetchFromGitHub -, makeWrapper, openssl, pcre, readline, boehmgc, sqlite, nim-unwrapped -, nimble-unwrapped, Security }: +, makeWrapper, openssl, pcre, readline, boehmgc, sqlite, Security, nim-unwrapped +, nim-unwrapped-2, nimble-unwrapped, nim }: let parseCpu = platform: @@ -72,25 +72,15 @@ let nimHost = parsePlatform stdenv.hostPlatform; nimTarget = parsePlatform stdenv.targetPlatform; - bootstrapCompiler = stdenv.mkDerivation { - pname = "nim-bootstrap"; - inherit (nim-unwrapped) version src preBuild; - enableParallelBuilding = true; - installPhase = '' - runHook preInstall - install -Dt $out/bin bin/nim - runHook postInstall - ''; - }; in { - nim-unwrapped = stdenv.mkDerivation rec { + nim-unwrapped = stdenv.mkDerivation (finalAttrs: { pname = "nim-unwrapped"; version = "1.6.14"; strictDeps = true; src = fetchurl { - url = "https://nim-lang.org/download/nim-${version}.tar.xz"; + url = "https://nim-lang.org/download/nim-${finalAttrs.version}.tar.xz"; hash = "sha256-0HDS8oriQA33/kpJ7OufRc1TmQaxB0gYVqCveo+oLck="; }; @@ -108,7 +98,18 @@ in { # Mangle store paths of modules to prevent runtime dependence. ] ++ lib.optional (!stdenv.hostPlatform.isWindows) ./toLocation.patch; - configurePhase = '' + configurePhase = let + bootstrapCompiler = stdenv.mkDerivation { + pname = "nim-bootstrap"; + inherit (finalAttrs) version src preBuild; + enableParallelBuilding = true; + installPhase = '' + runHook preInstall + install -Dt $out/bin bin/nim + runHook postInstall + ''; + }; + in '' runHook preConfigure cp ${bootstrapCompiler}/bin/nim bin/ echo 'define:nixbuild' >> config/nim.cfg @@ -154,7 +155,25 @@ in { mainProgram = "nim"; maintainers = with maintainers; [ ehmry ]; }; - }; + }); + + nim-unwrapped-2 = nim-unwrapped.overrideAttrs (finalAttrs: rec { + version = "2.0.0"; + src = fetchurl { + url = "https://nim-lang.org/download/nim-${version}.tar.xz"; + hash = "sha256-vWEB2EADb7eOk6ad9s8/n9DCHNdUtpX/hKO0rdjtCvc="; + }; + patches = [ + ./NIM_CONFIG_DIR.patch + # Override compiler configuration via an environmental variable + + ./nixbuild.patch + # Load libraries at runtime by absolute path + + ./extra-mangling.patch + # Mangle store paths of modules to prevent runtime dependence. + ]; + }); nimble-unwrapped = stdenv.mkDerivation rec { pname = "nimble-unwrapped"; @@ -169,8 +188,7 @@ in { }; depsBuildBuild = [ nim-unwrapped ]; - buildInputs = [ openssl ] - ++ lib.optional stdenv.isDarwin Security; + buildInputs = [ openssl ] ++ lib.optional stdenv.isDarwin Security; nimFlags = [ "--cpu:${nimHost.cpu}" "--os:${nimHost.os}" "-d:release" ]; @@ -194,147 +212,157 @@ in { mainProgram = "nimble"; }; }; - - nim = let - nim' = buildPackages.nim-unwrapped; - nimble' = buildPackages.nimble-unwrapped; - inherit (stdenv) targetPlatform; - self = stdenv.mkDerivation { - name = "${targetPlatform.config}-nim-wrapper-${nim'.version}"; - inherit (nim') version; - preferLocalBuild = true; - strictDeps = true; - - nativeBuildInputs = [ makeWrapper ]; - - # Needed for any nim package that uses the standard library's - # 'std/sysrand' module. - depsTargetTargetPropagated = lib.optional stdenv.isDarwin Security; - - patches = [ - ./nim.cfg.patch - # Remove configurations that clash with ours - ]; - - unpackPhase = '' - runHook preUnpack - tar xf ${nim'.src} nim-$version/config - cd nim-$version - runHook postUnpack - ''; - - dontConfigure = true; - - buildPhase = - # Configure the Nim compiler to use $CC and $CXX as backends - # The compiler is configured by two configuration files, each with - # a different DSL. The order of evaluation matters and that order - # is not documented, so duplicate the configuration across both files. - '' - runHook preBuild - cat >> config/config.nims << WTF - - switch("os", "${nimTarget.os}") - switch("cpu", "${nimTarget.cpu}") - switch("define", "nixbuild") - - # Configure the compiler using the $CC set by Nix at build time - import strutils - let cc = getEnv"CC" - if cc.contains("gcc"): - switch("cc", "gcc") - elif cc.contains("clang"): - switch("cc", "clang") - WTF - - mv config/nim.cfg config/nim.cfg.old - cat > config/nim.cfg << WTF - os = "${nimTarget.os}" - cpu = "${nimTarget.cpu}" - define:"nixbuild" - WTF - - cat >> config/nim.cfg < config/nim.cfg.old - rm config/nim.cfg.old - - cat >> config/nim.cfg << WTF - - clang.cpp.exe %= "\$CXX" - clang.cpp.linkerexe %= "\$CXX" - clang.exe %= "\$CC" - clang.linkerexe %= "\$CC" - gcc.cpp.exe %= "\$CXX" - gcc.cpp.linkerexe %= "\$CXX" - gcc.exe %= "\$CC" - gcc.linkerexe %= "\$CC" - WTF - - runHook postBuild +} // (let + wrapNim = { nim', nimble', patches }: + let + targetPlatformConfig = stdenv.targetPlatform.config; + self = stdenv.mkDerivation (finalAttrs: { + name = "${targetPlatformConfig}-nim-wrapper-${nim'.version}"; + inherit (nim') version; + preferLocalBuild = true; + strictDeps = true; + + nativeBuildInputs = [ makeWrapper ]; + + # Needed for any nim package that uses the standard library's + # 'std/sysrand' module. + depsTargetTargetPropagated = lib.optional stdenv.isDarwin Security; + + inherit patches; + + unpackPhase = '' + runHook preUnpack + tar xf ${nim'.src} nim-$version/config + cd nim-$version + runHook postUnpack ''; - wrapperArgs = lib.optionals (!(stdenv.isDarwin && stdenv.isAarch64)) [ - "--prefix PATH : ${lib.makeBinPath [ buildPackages.gdb ]}:${ - placeholder "out" - }/bin" - # Used by nim-gdb - - "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ openssl pcre ]}" - # These libraries may be referred to by the standard library. - # This is broken for cross-compilation because the package - # set will be shifted back by nativeBuildInputs. - - "--set NIM_CONFIG_PATH ${placeholder "out"}/etc/nim" - # Use the custom configuration - ]; + dontConfigure = true; + + buildPhase = + # Configure the Nim compiler to use $CC and $CXX as backends + # The compiler is configured by two configuration files, each with + # a different DSL. The order of evaluation matters and that order + # is not documented, so duplicate the configuration across both files. + '' + runHook preBuild + cat >> config/config.nims << WTF + + switch("os", "${nimTarget.os}") + switch("cpu", "${nimTarget.cpu}") + switch("define", "nixbuild") + + # Configure the compiler using the $CC set by Nix at build time + import strutils + let cc = getEnv"CC" + if cc.contains("gcc"): + switch("cc", "gcc") + elif cc.contains("clang"): + switch("cc", "clang") + WTF + + mv config/nim.cfg config/nim.cfg.old + cat > config/nim.cfg << WTF + os = "${nimTarget.os}" + cpu = "${nimTarget.cpu}" + define:"nixbuild" + WTF + + cat >> config/nim.cfg < config/nim.cfg.old + rm config/nim.cfg.old + + cat >> config/nim.cfg << WTF + + clang.cpp.exe %= "\$CXX" + clang.cpp.linkerexe %= "\$CXX" + clang.exe %= "\$CC" + clang.linkerexe %= "\$CC" + gcc.cpp.exe %= "\$CXX" + gcc.cpp.linkerexe %= "\$CXX" + gcc.exe %= "\$CC" + gcc.linkerexe %= "\$CC" + WTF + + runHook postBuild + ''; + + wrapperArgs = lib.optionals (!(stdenv.isDarwin && stdenv.isAarch64)) [ + "--prefix PATH : ${lib.makeBinPath [ buildPackages.gdb ]}:${ + placeholder "out" + }/bin" + # Used by nim-gdb + + "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ openssl pcre ]}" + # These libraries may be referred to by the standard library. + # This is broken for cross-compilation because the package + # set will be shifted back by nativeBuildInputs. + + "--set NIM_CONFIG_PATH ${placeholder "out"}/etc/nim" + # Use the custom configuration + ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin $out/etc + + cp -r config $out/etc/nim + + for binpath in ${nim'}/bin/nim?*; do + local binname=`basename $binpath` + makeWrapper \ + $binpath $out/bin/${targetPlatformConfig}-$binname \ + $wrapperArgs + ln -s $out/bin/${targetPlatformConfig}-$binname $out/bin/$binname + done - installPhase = '' - runHook preInstall - - mkdir -p $out/bin $out/etc - - cp -r config $out/etc/nim + makeWrapper \ + ${nim'}/nim/bin/nim $out/bin/${targetPlatformConfig}-nim \ + --set-default CC $(command -v $CC) \ + --set-default CXX $(command -v $CXX) \ + $wrapperArgs + ln -s $out/bin/${targetPlatformConfig}-nim $out/bin/nim - for binpath in ${nim'}/bin/nim?*; do - local binname=`basename $binpath` makeWrapper \ - $binpath $out/bin/${targetPlatform.config}-$binname \ + ${nim'}/bin/testament $out/bin/${targetPlatformConfig}-testament \ $wrapperArgs - ln -s $out/bin/${targetPlatform.config}-$binname $out/bin/$binname - done - - makeWrapper \ - ${nim'}/nim/bin/nim $out/bin/${targetPlatform.config}-nim \ - --set-default CC $(command -v $CC) \ - --set-default CXX $(command -v $CXX) \ - $wrapperArgs - ln -s $out/bin/${targetPlatform.config}-nim $out/bin/nim - - makeWrapper \ - ${nim'}/bin/testament $out/bin/${targetPlatform.config}-testament \ - $wrapperArgs - ln -s $out/bin/${targetPlatform.config}-testament $out/bin/testament - - makeWrapper \ - ${nimble'}/bin/nimble $out/bin/${targetPlatform.config}-nimble \ - --suffix PATH : $out/bin - ln -s $out/bin/${targetPlatform.config}-nimble $out/bin/nimble - - runHook postInstall - ''; - - passthru = { - nim = nim'; - nimble = nimble'; - }; + ln -s $out/bin/${targetPlatformConfig}-testament $out/bin/testament - meta = nim'.meta // { - description = nim'.meta.description - + " (${targetPlatform.config} wrapper)"; - platforms = with lib.platforms; unix ++ genode; - }; + '' + lib.strings.optionalString (nimble' != null) '' + makeWrapper \ + ${nimble'}/bin/nimble $out/bin/${targetPlatformConfig}-nimble \ + --suffix PATH : $out/bin + ln -s $out/bin/${targetPlatformConfig}-nimble $out/bin/nimble + + '' + '' + runHook postInstall + ''; + + passthru = { + nim = nim'; + nimble = nimble'; + }; + + meta = nim'.meta // { + description = nim'.meta.description + + " (${targetPlatformConfig} wrapper)"; + platforms = with lib.platforms; unix ++ genode; + }; + }); + in self // { + pkgs = callPackage ../../../top-level/nim-packages.nix { nim = self; }; }; - in self // { - pkgs = callPackage ../../../top-level/nim-packages.nix { nim = self; }; +in { + + nim = wrapNim { + nim' = buildPackages.nim-unwrapped; + nimble' = buildPackages.nimble-unwrapped; + patches = [ ./nim.cfg.patch ]; }; -} + nim2 = wrapNim { + nim' = buildPackages.nim-unwrapped-2; + nimble' = null; + patches = [ ./nim2.cfg.patch ]; + }; +}) diff --git a/nixpkgs/pkgs/development/compilers/nim/nim2.cfg.patch b/nixpkgs/pkgs/development/compilers/nim/nim2.cfg.patch new file mode 100644 index 000000000000..ef23d3a84623 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/nim/nim2.cfg.patch @@ -0,0 +1,41 @@ +diff --git a/config/nim.cfg b/config/nim.cfg +index 1470de780..8a12f741a 100644 +--- a/config/nim.cfg ++++ b/config/nim.cfg +@@ -9,8 +9,6 @@ + # Environment variables can be accessed like so: + # gcc.path %= "$CC_PATH" + +-cc = gcc +- + # additional options always passed to the compiler: + --parallel_build: "0" # 0 to auto-detect number of processors + +@@ -22,27 +20,6 @@ cc = gcc + + threads:on + +-# Examples of how to setup a cross-compiler: +-# Nim can target architectures and OSes different than the local host +-# Syntax: <arch>.<os>.gcc.exe = "<compiler executable>" +-# <arch>.<os>.gcc.linkerexe = "<linker executable>" +- +-# ARM e.g. Raspberry Pi 2: gcc-arm-linux-gnueabihf package on Debian/Ubuntu +-arm.linux.gcc.exe = "arm-linux-gnueabihf-gcc" +-arm.linux.gcc.linkerexe = "arm-linux-gnueabihf-gcc" +-# ARM64/aarch64 e.g. Raspberry Pi 3: gcc-aarch64-linux-gnu package on Debian/Ubuntu +-arm64.linux.gcc.exe = "aarch64-linux-gnu-gcc" +-arm64.linux.gcc.linkerexe = "aarch64-linux-gnu-gcc" +-# RISC-V: gcc-riscv64-linux-gnu package on Debian/Ubuntu +-riscv32.linux.gcc.exe = "riscv64-linux-gnu-gcc" +-riscv32.linux.gcc.linkerexe = "riscv64-linux-gnu-gcc" +-riscv64.linux.gcc.exe = "riscv64-linux-gnu-gcc" +-riscv64.linux.gcc.linkerexe = "riscv64-linux-gnu-gcc" +- +-# For OpenWRT, you will also need to adjust PATH to point to your toolchain. +-mips.linux.gcc.exe = "mips-openwrt-linux-gcc" +-mips.linux.gcc.linkerexe = "mips-openwrt-linux-gcc" +- + + path="$lib/deprecated/core" + path="$lib/deprecated/pure" diff --git a/nixpkgs/pkgs/development/compilers/odin/default.nix b/nixpkgs/pkgs/development/compilers/odin/default.nix index 340c56284f88..81a7faf73905 100644 --- a/nixpkgs/pkgs/development/compilers/odin/default.nix +++ b/nixpkgs/pkgs/development/compilers/odin/default.nix @@ -12,13 +12,13 @@ let inherit (llvmPackages) stdenv; in stdenv.mkDerivation rec { pname = "odin"; - version = "dev-2023-07"; + version = "dev-2023-08"; src = fetchFromGitHub { owner = "odin-lang"; repo = "Odin"; rev = version; - hash = "sha256-ksCK1Qmjbg5ZgFoq0I4cjrWaCxd+UW7f1NLcSjCPMwE="; + hash = "sha256-pmgrauhB5/JWBkwrAm7tCml9IYQhXyGXsNVDKTntA0M="; }; nativeBuildInputs = [ diff --git a/nixpkgs/pkgs/development/compilers/openjdk/darwin/11.nix b/nixpkgs/pkgs/development/compilers/openjdk/darwin/11.nix index 1ca2901b048d..48de37679385 100644 --- a/nixpkgs/pkgs/development/compilers/openjdk/darwin/11.nix +++ b/nixpkgs/pkgs/development/compilers/openjdk/darwin/11.nix @@ -11,26 +11,26 @@ let dist = { x86_64-darwin = { arch = "x64"; - zuluVersion = "11.48.21"; - jdkVersion = "11.0.11"; - sha256 = - if enableJavaFX then "18bd9cd66d6abc6f8c627bc70278dc8fd4860e138e1dc9e170eddb89727ccc7b" - else "0v0n7h7i04pvna41wpdq2k9qiy70sbbqzqzvazfdvgm3gb22asw6"; + zuluVersion = "11.66.15"; + jdkVersion = "11.0.20"; + hash = + if enableJavaFX then "sha256-pVgCJkgYTlFeL7nkkMWLeJ/J8ELhgvWb7gzf3erZP7Y=" + else "sha256-vKqxHP5Yb651g8bZ0xHGQ4Q1T7JjjrmgEuykw/Gh2f0="; }; aarch64-darwin = { arch = "aarch64"; - zuluVersion = "11.48.21"; - jdkVersion = "11.0.11"; - sha256 = - if enableJavaFX then "ef0de2705c6c2d586812f7f3736b70e22b069545b38034816016f9f264ad43f9" - else "066whglrxx81c95grv2kxdbvyh32728ixhml2v44ildh549n4lhc"; + zuluVersion = "11.66.15"; + jdkVersion = "11.0.20"; + hash = + if enableJavaFX then "sha256-VoZo34SCUU+HHnTl6iLe0QBC+4VDkPP14N98oqSg9EQ=" + else "sha256-djK8Kfikt9SSuT87x1p7YWMIlNuF0TZFYDWrKiTTiIU="; }; }."${stdenv.hostPlatform.system}"; jce-policies = fetchurl { url = "https://web.archive.org/web/20211126120343/http://cdn.azul.com/zcek/bin/ZuluJCEPolicies.zip"; - sha256 = "0nk7m0lgcbsvldq2wbfni2pzq8h818523z912i7v8hdcij5s48c0"; + hash = "sha256-gCGii4ysQbRPFCH9IQoKCCL8r4jWLS5wo1sv9iioZ1o="; }; javaPackage = if enableJavaFX then "ca-fx-jdk" else "ca-jdk"; @@ -41,7 +41,7 @@ let src = fetchurl { url = "https://cdn.azul.com/zulu/bin/zulu${dist.zuluVersion}-${javaPackage}${dist.jdkVersion}-macosx_${dist.arch}.tar.gz"; - inherit (dist) sha256; + inherit (dist) hash; curlOpts = "-H Referer:https://www.azul.com/downloads/zulu/"; }; diff --git a/nixpkgs/pkgs/development/compilers/openjdk/darwin/16.nix b/nixpkgs/pkgs/development/compilers/openjdk/darwin/16.nix index b8f6b2d62ad4..657b3eeafeab 100644 --- a/nixpkgs/pkgs/development/compilers/openjdk/darwin/16.nix +++ b/nixpkgs/pkgs/development/compilers/openjdk/darwin/16.nix @@ -11,26 +11,26 @@ let dist = { x86_64-darwin = { arch = "x64"; - zuluVersion = "16.30.15"; - jdkVersion = "16.0.1"; - sha256 = - if enableJavaFX then "cbb3b96d80a0675893f21dc51ba3f532049c501bd7dc4c8d1ee930e63032c745" - else "1jihn125dmxr9y5h9jq89zywm3z6rbwv5q7msfzsf2wzrr13jh0z"; + zuluVersion = "16.32.15"; + jdkVersion = "16.0.2"; + hash = + if enableJavaFX then "sha256-6URaSBNHQWLauO//kCuKXb4Z7AqyshWnoeJEyVRKgaY=" + else "sha256-NXgBj/KixTknaCYbo3B+rOo11NImH5CDUIU0LhTCtMo="; }; aarch64-darwin = { arch = "aarch64"; - zuluVersion = "16.30.19"; - jdkVersion = "16.0.1"; - sha256 = - if enableJavaFX then "a49b23abfd83784d2ac935fc24e25ab7cb09b8ffc8e47c32ed446e05b8a21396" - else "1i0bcjx3acb5dhslf6cabdcnd6mrz9728vxw9hb4al5y3f5fll4w"; + zuluVersion = "16.32.15"; + jdkVersion = "16.0.2"; + hash = + if enableJavaFX then "sha256-QuyhIAxUY3Vv1adGihW+LIsXtpDX2taCmFsMFj9o5vs=" + else "sha256-3bUfDcLLyahLeURFAgLAVapBZHvqtam8GHbWTA6MQog="; }; }."${stdenv.hostPlatform.system}"; jce-policies = fetchurl { url = "https://web.archive.org/web/20211126120343/http://cdn.azul.com/zcek/bin/ZuluJCEPolicies.zip"; - sha256 = "0nk7m0lgcbsvldq2wbfni2pzq8h818523z912i7v8hdcij5s48c0"; + hash = "sha256-gCGii4ysQbRPFCH9IQoKCCL8r4jWLS5wo1sv9iioZ1o="; }; javaPackage = if enableJavaFX then "ca-fx-jdk" else "ca-jdk"; @@ -41,7 +41,7 @@ let src = fetchurl { url = "https://cdn.azul.com/zulu/bin/zulu${dist.zuluVersion}-${javaPackage}${dist.jdkVersion}-macosx_${dist.arch}.tar.gz"; - inherit (dist) sha256; + inherit (dist) hash; curlOpts = "-H Referer:https://www.azul.com/downloads/zulu/"; }; diff --git a/nixpkgs/pkgs/development/compilers/openjdk/darwin/17.nix b/nixpkgs/pkgs/development/compilers/openjdk/darwin/17.nix index 51f12864de82..3034e164e640 100644 --- a/nixpkgs/pkgs/development/compilers/openjdk/darwin/17.nix +++ b/nixpkgs/pkgs/development/compilers/openjdk/darwin/17.nix @@ -1,36 +1,47 @@ -{ lib, stdenv, fetchurl, unzip, setJavaClassPath }: +{ lib +, stdenv +, fetchurl +, unzip +, setJavaClassPath +, enableJavaFX ? false +}: let # Details from https://www.azul.com/downloads/?version=java-17-lts&os=macos&package=jdk # Note that the latest build may differ by platform dist = { x86_64-darwin = { arch = "x64"; - zuluVersion = "17.34.19"; - jdkVersion = "17.0.3"; - sha256 = "sha256-qImyxVC2y2QhxuVZwamKPyo46+n+7ytIFXpYI0e6w2c="; + zuluVersion = "17.44.15"; + jdkVersion = "17.0.8"; + hash = + if enableJavaFX then "sha256-gmDku/AkWzO+eDRitezM9wCtTYDrUMtXyMulxqi9tNI=" + else "sha256-Ci18gBkAv/UUIQw9KlnfibcQMXwQRGx6K7L/NBB7b7Q="; }; aarch64-darwin = { arch = "aarch64"; - zuluVersion = "17.34.19"; - jdkVersion = "17.0.3"; - sha256 = "sha256-eaRX8Qa/Mqr9JhpHSEcf0Q9c4qmqLMgWqRhkEEwAjf8="; + zuluVersion = "17.44.15"; + jdkVersion = "17.0.8"; + hash = + if enableJavaFX then "sha256-mvyfqpnAoA05HJB9EBewW2MDuhQBOvp6svzyayV1irI=" + else "sha256-8b81QY6DGXVOsTKM8QDzJnYjXV0ipCbYWaaz6oF2A6k="; }; }."${stdenv.hostPlatform.system}"; jce-policies = fetchurl { - # Ugh, unversioned URLs... I hope this doesn't change often enough to cause pain before we move to a Darwin source build of OpenJDK! - url = "http://cdn.azul.com/zcek/bin/ZuluJCEPolicies.zip"; - sha256 = "0nk7m0lgcbsvldq2wbfni2pzq8h818523z912i7v8hdcij5s48c0"; + url = "https://web.archive.org/web/20211126120343/http://cdn.azul.com/zcek/bin/ZuluJCEPolicies.zip"; + hash = "sha256-gCGii4ysQbRPFCH9IQoKCCL8r4jWLS5wo1sv9iioZ1o="; }; + javaPackage = if enableJavaFX then "ca-fx-jdk" else "ca-jdk"; + jdk = stdenv.mkDerivation rec { - pname = "zulu${dist.zuluVersion}-ca-jdk"; + pname = "zulu${dist.zuluVersion}-${javaPackage}"; version = dist.jdkVersion; src = fetchurl { - url = "https://cdn.azul.com/zulu/bin/zulu${dist.zuluVersion}-ca-jdk${dist.jdkVersion}-macosx_${dist.arch}.tar.gz"; - inherit (dist) sha256; + url = "https://cdn.azul.com/zulu/bin/zulu${dist.zuluVersion}-${javaPackage}${dist.jdkVersion}-macosx_${dist.arch}.tar.gz"; + inherit (dist) hash; curlOpts = "-H Referer:https://www.azul.com/downloads/zulu/"; }; diff --git a/nixpkgs/pkgs/development/compilers/openjdk/darwin/18.nix b/nixpkgs/pkgs/development/compilers/openjdk/darwin/18.nix index 4744407e5fd2..30a61b4b1faa 100644 --- a/nixpkgs/pkgs/development/compilers/openjdk/darwin/18.nix +++ b/nixpkgs/pkgs/development/compilers/openjdk/darwin/18.nix @@ -1,36 +1,47 @@ -{ lib, stdenv, fetchurl, unzip, setJavaClassPath }: +{ lib +, stdenv +, fetchurl +, unzip +, setJavaClassPath +, enableJavaFX ? false +}: let # Details from https://www.azul.com/downloads/?version=java-18-sts&os=macos&package=jdk # Note that the latest build may differ by platform dist = { x86_64-darwin = { arch = "x64"; - zuluVersion = "18.28.13"; - jdkVersion = "18.0.0"; - sha256 = "0hc5m3d4q3n7sighq3pxkdg93vsrgj1kzla1py9nfnm9pnj9l2kq"; + zuluVersion = "18.32.13"; + jdkVersion = "18.0.2.1"; + hash = + if enableJavaFX then "sha256-ZVZ1gbpJwxTduq2PPOCKqbSl+shq2NTFgqG++OXvFcg=" + else "sha256-uHPcyOgxUdTgzmIVRp/awtwve9zSt+1TZNef7DUuoRg="; }; aarch64-darwin = { arch = "aarch64"; - zuluVersion = "18.28.13"; - jdkVersion = "18.0.0"; - sha256 = "0ch4jp2d4pjvxbmbswvjwf7w2flajrvjg5f16ggiy80y8l0y15cm"; + zuluVersion = "18.32.13"; + jdkVersion = "18.0.2.1"; + hash = + if enableJavaFX then "sha256-tNx0a1u9iamcN9VFOJ3eqDEA6C204dtIBJZvuAH2Vjk=" + else "sha256-jAZDgxtWMq/74yKAxA69oOU0C9nXvKG5MjmZLsK04iM="; }; }."${stdenv.hostPlatform.system}"; jce-policies = fetchurl { - # Ugh, unversioned URLs... I hope this doesn't change often enough to cause pain before we move to a Darwin source build of OpenJDK! - url = "http://cdn.azul.com/zcek/bin/ZuluJCEPolicies.zip"; - sha256 = "0nk7m0lgcbsvldq2wbfni2pzq8h818523z912i7v8hdcij5s48c0"; + url = "https://web.archive.org/web/20211126120343/http://cdn.azul.com/zcek/bin/ZuluJCEPolicies.zip"; + hash = "sha256-gCGii4ysQbRPFCH9IQoKCCL8r4jWLS5wo1sv9iioZ1o="; }; + javaPackage = if enableJavaFX then "ca-fx-jdk" else "ca-jdk"; + jdk = stdenv.mkDerivation rec { - pname = "zulu${dist.zuluVersion}-ca-jdk"; + pname = "zulu${dist.zuluVersion}-${javaPackage}"; version = dist.jdkVersion; src = fetchurl { - url = "https://cdn.azul.com/zulu/bin/zulu${dist.zuluVersion}-ca-jdk${dist.jdkVersion}-macosx_${dist.arch}.tar.gz"; - inherit (dist) sha256; + url = "https://cdn.azul.com/zulu/bin/zulu${dist.zuluVersion}-${javaPackage}${dist.jdkVersion}-macosx_${dist.arch}.tar.gz"; + inherit (dist) hash; curlOpts = "-H Referer:https://www.azul.com/downloads/zulu/"; }; diff --git a/nixpkgs/pkgs/development/compilers/openjdk/darwin/19.nix b/nixpkgs/pkgs/development/compilers/openjdk/darwin/19.nix index e582c4016a54..a087de1b5727 100644 --- a/nixpkgs/pkgs/development/compilers/openjdk/darwin/19.nix +++ b/nixpkgs/pkgs/development/compilers/openjdk/darwin/19.nix @@ -1,36 +1,47 @@ -{ lib, stdenv, fetchurl, unzip, setJavaClassPath }: +{ lib +, stdenv +, fetchurl +, unzip +, setJavaClassPath +, enableJavaFX ? false +}: let # Details from https://www.azul.com/downloads/?version=java-19-sts&os=macos&package=jdk # Note that the latest build may differ by platform dist = { x86_64-darwin = { arch = "x64"; - zuluVersion = "19.30.11"; - jdkVersion = "19.0.1"; - sha256 = "1h0qj0xgpxjy506ikbgdn74pi4860lsnh5n3q3bayfmn0pxc5ksn"; + zuluVersion = if enableJavaFX then "19.32.15" else "19.32.13"; + jdkVersion = "19.0.2"; + hash = + if enableJavaFX then "sha256-AwLcIId0gH5D6DUU8CgJ3qnKVQm28LXYirBeXBHwPYE=" + else "sha256-KARXWumsY+OcqpEOV2EL9SsPni1nGSipjRji/Mn2KsE="; }; aarch64-darwin = { arch = "aarch64"; - zuluVersion = "19.30.11"; - jdkVersion = "19.0.1"; - sha256 = "0g8i371h5fv686xhiff0431sgvdk80lbp2lkz86jpfdv9lgg0qnk"; + zuluVersion = if enableJavaFX then "19.32.15" else "19.32.13"; + jdkVersion = "19.0.2"; + hash = + if enableJavaFX then "sha256-/R2rrcBr64qPGEtvhruXBhPwnvurt/hiR1ICzZAdYxE=" + else "sha256-F30FjZaLL756X/Xs6xjNwW9jds4pEATxoxOeeLL7Y5E="; }; }."${stdenv.hostPlatform.system}"; jce-policies = fetchurl { - # Ugh, unversioned URLs... I hope this doesn't change often enough to cause pain before we move to a Darwin source build of OpenJDK! - url = "http://cdn.azul.com/zcek/bin/ZuluJCEPolicies.zip"; - sha256 = "0nk7m0lgcbsvldq2wbfni2pzq8h818523z912i7v8hdcij5s48c0"; + url = "https://web.archive.org/web/20211126120343/http://cdn.azul.com/zcek/bin/ZuluJCEPolicies.zip"; + hash = "sha256-gCGii4ysQbRPFCH9IQoKCCL8r4jWLS5wo1sv9iioZ1o="; }; + javaPackage = if enableJavaFX then "ca-fx-jdk" else "ca-jdk"; + jdk = stdenv.mkDerivation rec { - pname = "zulu${dist.zuluVersion}-ca-jdk"; + pname = "zulu${dist.zuluVersion}-${javaPackage}"; version = dist.jdkVersion; src = fetchurl { - url = "https://cdn.azul.com/zulu/bin/zulu${dist.zuluVersion}-ca-jdk${dist.jdkVersion}-macosx_${dist.arch}.tar.gz"; - inherit (dist) sha256; + url = "https://cdn.azul.com/zulu/bin/zulu${dist.zuluVersion}-${javaPackage}${dist.jdkVersion}-macosx_${dist.arch}.tar.gz"; + inherit (dist) hash; curlOpts = "-H Referer:https://www.azul.com/downloads/zulu/"; }; diff --git a/nixpkgs/pkgs/development/compilers/openjdk/darwin/20.nix b/nixpkgs/pkgs/development/compilers/openjdk/darwin/20.nix index e26592462e50..b0c62aafd78d 100644 --- a/nixpkgs/pkgs/development/compilers/openjdk/darwin/20.nix +++ b/nixpkgs/pkgs/development/compilers/openjdk/darwin/20.nix @@ -1,36 +1,47 @@ -{ lib, stdenv, fetchurl, unzip, setJavaClassPath }: +{ lib +, stdenv +, fetchurl +, unzip +, setJavaClassPath +, enableJavaFX ? false +}: let # Details from https://www.azul.com/downloads/?version=java-19-sts&os=macos&package=jdk # Note that the latest build may differ by platform dist = { x86_64-darwin = { arch = "x64"; - zuluVersion = "20.30.11"; - jdkVersion = "20.0.1"; - sha256 = "0hg2n2mdbpxsgpw3c58w8y1f3im6schvfqahji352p9ljbdykzmy"; + zuluVersion = "20.32.11"; + jdkVersion = "20.0.2"; + hash = + if enableJavaFX then "sha256-hyxQAivZAXtqMebe30L+EYa7p+TdSdKNYj7Rl/ZwRNQ=" + else "sha256-Ev9KG6DvuBnsZrOguLsO1KQzudHCBcJNwKh45Inpnfo="; }; aarch64-darwin = { arch = "aarch64"; - zuluVersion = "20.30.11"; - jdkVersion = "20.0.1"; - sha256 = "0bc9h1y0b2azyfl3f5sqj19sh02xs995d1kdn55m4lfhc00rzr81"; + zuluVersion = "20.32.11"; + jdkVersion = "20.0.2"; + hash = + if enableJavaFX then "sha256-iPQzZS4CwaoqT8cSzg4kWCT1OyGBSJLq+NETcbucLo4=" + else "sha256-15uNZ6uMfSASV3QU2q2oA/jBk2PCHOfSjn1GY7/7qIY="; }; }."${stdenv.hostPlatform.system}"; jce-policies = fetchurl { - # Ugh, unversioned URLs... I hope this doesn't change often enough to cause pain before we move to a Darwin source build of OpenJDK! - url = "http://cdn.azul.com/zcek/bin/ZuluJCEPolicies.zip"; - sha256 = "0nk7m0lgcbsvldq2wbfni2pzq8h818523z912i7v8hdcij5s48c0"; + url = "https://web.archive.org/web/20211126120343/http://cdn.azul.com/zcek/bin/ZuluJCEPolicies.zip"; + hash = "sha256-gCGii4ysQbRPFCH9IQoKCCL8r4jWLS5wo1sv9iioZ1o="; }; + javaPackage = if enableJavaFX then "ca-fx-jdk" else "ca-jdk"; + jdk = stdenv.mkDerivation rec { - pname = "zulu${dist.zuluVersion}-ca-jdk"; + pname = "zulu${dist.zuluVersion}-${javaPackage}"; version = dist.jdkVersion; src = fetchurl { - url = "https://cdn.azul.com/zulu/bin/zulu${dist.zuluVersion}-ca-jdk${dist.jdkVersion}-macosx_${dist.arch}.tar.gz"; - inherit (dist) sha256; + url = "https://cdn.azul.com/zulu/bin/zulu${dist.zuluVersion}-${javaPackage}${dist.jdkVersion}-macosx_${dist.arch}.tar.gz"; + inherit (dist) hash; curlOpts = "-H Referer:https://www.azul.com/downloads/zulu/"; }; diff --git a/nixpkgs/pkgs/development/compilers/openjdk/darwin/8.nix b/nixpkgs/pkgs/development/compilers/openjdk/darwin/8.nix index 3048c53f10f2..9bfd9a8db1a3 100644 --- a/nixpkgs/pkgs/development/compilers/openjdk/darwin/8.nix +++ b/nixpkgs/pkgs/development/compilers/openjdk/darwin/8.nix @@ -11,26 +11,26 @@ let dist = { x86_64-darwin = { arch = "x64"; - zuluVersion = "8.54.0.21"; - jdkVersion = "8.0.292"; - sha256 = - if enableJavaFX then "e671f8990229b1ca2a76faabb21ba2f1a9e1f7211392e0f657225559be9b05c8" - else "1pgl0bir4r5v349gkxk54k6v62w241q7vw4gjxhv2g6pfq6hv7in"; + zuluVersion = "8.72.0.17"; + jdkVersion = "8.0.382"; + hash = + if enableJavaFX then "sha256-/x8FqygivzddXsOwIV8aj/u+LPXMmokgu97vLAVEv80=" + else "sha256-3dTPIPGUeT6nb3gncNvEa4VTRyQIBJpp8oZadrT2ToE="; }; aarch64-darwin = { arch = "aarch64"; - zuluVersion = "8.54.0.21"; - jdkVersion = "8.0.292"; - sha256 = - if enableJavaFX then "8e901075cde2c31f531a34e8321ea4201970936abf54240a232e9389952afe84" - else "05w89wfjlfbpqfjnv6wisxmaf13qb28b2223f9264jyx30qszw1c"; + zuluVersion = "8.72.0.17"; + jdkVersion = "8.0.382"; + hash = + if enableJavaFX then "sha256-FkQ+0MzSZWUzc/HmiDVZEHGOrdKAVCdK5pm9wXXzzaU=" + else "sha256-rN5AI4xAWppE4kJlzMod0JmGyHdHjTXYtx8/wOW6CFk="; }; }."${stdenv.hostPlatform.system}"; jce-policies = fetchurl { url = "https://web.archive.org/web/20211126120343/http://cdn.azul.com/zcek/bin/ZuluJCEPolicies.zip"; - sha256 = "0nk7m0lgcbsvldq2wbfni2pzq8h818523z912i7v8hdcij5s48c0"; + hash = "sha256-gCGii4ysQbRPFCH9IQoKCCL8r4jWLS5wo1sv9iioZ1o="; }; javaPackage = if enableJavaFX then "ca-fx-jdk" else "ca-jdk"; @@ -44,7 +44,7 @@ let src = fetchurl { url = "https://cdn.azul.com/zulu/bin/zulu${dist.zuluVersion}-${javaPackage}${dist.jdkVersion}-macosx_${dist.arch}.tar.gz"; - inherit (dist) sha256; + inherit (dist) hash; curlOpts = "-H Referer:https://www.azul.com/downloads/zulu/"; }; diff --git a/nixpkgs/pkgs/development/compilers/rust/1_70.nix b/nixpkgs/pkgs/development/compilers/rust/1_71.nix index 2a22c4643e55..75780b55af81 100644 --- a/nixpkgs/pkgs/development/compilers/rust/1_70.nix +++ b/nixpkgs/pkgs/development/compilers/rust/1_71.nix @@ -19,8 +19,8 @@ } @ args: import ./default.nix { - rustcVersion = "1.70.0"; - rustcSha256 = "sha256-sr+uAAt6UEDk7Eu8UKCfIVSBkMt1cLDtdzWDaEE70nw="; + rustcVersion = "1.71.1"; + rustcSha256 = "sha256-b6kNUNHVKadfbMNJeE3lfX7AuiQZsJvefTNcJb1ORy4="; llvmSharedForBuild = pkgsBuildBuild.llvmPackages_16.libllvm.override { enableSharedLibraries = true; }; llvmSharedForHost = pkgsBuildHost.llvmPackages_16.libllvm.override { enableSharedLibraries = true; }; @@ -34,25 +34,25 @@ import ./default.nix { # Note: the version MUST be one version prior to the version we're # building - bootstrapVersion = "1.69.0"; + bootstrapVersion = "1.70.0"; # fetch hashes by running `print-hashes.sh ${bootstrapVersion}` bootstrapHashes = { - i686-unknown-linux-gnu = "08b2b4f58c0861f40ae159c39cc12f6d41b6858e04a43c6c0aeb36707e2971d0"; - x86_64-unknown-linux-gnu = "2ca4a306047c0b8b4029c382910fcbc895badc29680e0332c9df990fd1c70d4f"; - x86_64-unknown-linux-musl = "071cb04819b15d8801584a1395b28d0472ce99c0e716296e3c0bb4e6318cf171"; - arm-unknown-linux-gnueabihf = "64c82735b4e5606af61be0d01317da436a9590b969e503cdbd19e24636e15845"; - armv7-unknown-linux-gnueabihf = "a509f02d910041c97847e2ccc4ee908c761b7dc5b3c4715922d2b1c573a09675"; - aarch64-unknown-linux-gnu = "88af5aa7a40c8f1b40416a1f27de8ffbe09c155d933f69d3e109c0ccee92353b"; - aarch64-unknown-linux-musl = "76aaf3e4fd7b552feb2d70752c43896a960a2a7c940002f58a5c3f03d2b3c862"; - x86_64-apple-darwin = "9818dab2c3726d63dfbfde12c9273e62e484ef6d6f6e05a6431a3e089c335454"; - aarch64-apple-darwin = "36228cac303298243fb84235db87a5ecf2af49db28585a82af091caefd598677"; - powerpc64le-unknown-linux-gnu = "8ef68b77971c079dbe23b54a2cfb52da012873d96399c424bc223635306e9a58"; - riscv64gc-unknown-linux-gnu = "e1976bf7d0edb7e7789a1ad7ff8086fdb5306a932650fa8182a5d009883fa6c5"; - mips64el-unknown-linux-gnuabi64 = "c4bf3043451d6122a3845db825cbe35b5ca61a44659a00004f6cca1299ad9d72"; + i686-unknown-linux-gnu = "119dfd4ee3da6c8fc36444dd15a12187e1f9b34ee6792fb75a6a25d09ea7e865"; + x86_64-unknown-linux-gnu = "8499c0b034dd881cd9a880c44021632422a28dc23d7a81ca0a97b04652245982"; + x86_64-unknown-linux-musl = "d97c2ac1d9f17e754fa6b7d48c28531d16278547e3fa47050a01da037ddb6de3"; + arm-unknown-linux-gnueabihf = "ac98b513c31789d0c3201dfe2bbcc81b9437f7e1a15695d09402efec7934c20e"; + armv7-unknown-linux-gnueabihf = "23e6029c2a7363b307af539f0c81f4bb9f0ade12b588658343c8a8cfa41526ae"; + aarch64-unknown-linux-gnu = "3aa012fc4d9d5f17ca30af41f87e1c2aacdac46b51adc5213e7614797c6fd24c"; + aarch64-unknown-linux-musl = "6381de0b55f1741ac322bf1b56701d8aab4e509ff5302043941170f8df34228e"; + x86_64-apple-darwin = "e5819fdbfc7f1a4d5d82cb4c3b7662250748450b45a585433bfb75648bc45547"; + aarch64-apple-darwin = "75cbc356a06c9b2daf6b9249febda0f0c46df2a427f7cc8467c7edbd44636e53"; + powerpc64le-unknown-linux-gnu = "ba8cb5e3078b1bc7c6b27ab53cfa3af14001728db9a047d0bdf29b8f05a4db34"; + riscv64gc-unknown-linux-gnu = "5964f78e5fb30506101a929162a42be6260b887660b71592c5f38466753440c3"; + mips64el-unknown-linux-gnuabi64 = "de5fd0b249fbb95b9b67928ba08d7ec49f18f0ae25cbe1b0ede3c02390d7b93a"; }; - selectRustPackage = pkgs: pkgs.rust_1_70; + selectRustPackage = pkgs: pkgs.rust_1_71; rustcPatches = [ ]; } diff --git a/nixpkgs/pkgs/development/compilers/rust/binary.nix b/nixpkgs/pkgs/development/compilers/rust/binary.nix index 1de90cdddacf..bf03077f4aa8 100644 --- a/nixpkgs/pkgs/development/compilers/rust/binary.nix +++ b/nixpkgs/pkgs/development/compilers/rust/binary.nix @@ -56,7 +56,7 @@ rec { # binaries. The lib.rmeta object inside the ar archive should contain an # .rmeta section, but it is removed. Luckily, this doesn't appear to be an # issue for Rust builds produced by Nix. - dontStrip = stdenv.isDarwin; + dontStrip = true; setupHooks = ./setup-hook.sh; }; diff --git a/nixpkgs/pkgs/development/compilers/rust/cargo-auditable.nix b/nixpkgs/pkgs/development/compilers/rust/cargo-auditable.nix index dbbfff4dc6b6..b86ed5d7d4e1 100644 --- a/nixpkgs/pkgs/development/compilers/rust/cargo-auditable.nix +++ b/nixpkgs/pkgs/development/compilers/rust/cargo-auditable.nix @@ -1,4 +1,4 @@ -{ lib, fetchFromGitHub, makeRustPlatform, rustc, cargo, installShellFiles, stdenv }: +{ lib, buildPackages, fetchFromGitHub, makeRustPlatform, installShellFiles, stdenv }: let args = rec { @@ -30,8 +30,8 @@ let }; rustPlatform = makeRustPlatform { - inherit rustc; - cargo = cargo.override { + inherit (buildPackages) rustc; + cargo = buildPackages.cargo.override { auditable = false; }; }; diff --git a/nixpkgs/pkgs/development/compilers/rust/default.nix b/nixpkgs/pkgs/development/compilers/rust/default.nix index 35f5ab79c106..77c8b3d592fa 100644 --- a/nixpkgs/pkgs/development/compilers/rust/default.nix +++ b/nixpkgs/pkgs/development/compilers/rust/default.nix @@ -48,7 +48,7 @@ in # Like `buildRustPackages`, but may also contain prebuilt binaries to # break cycle. Just like `bootstrapTools` for nixpkgs as a whole, # nothing in the final package set should refer to this. - bootstrapRustPackages = self.buildRustPackages.overrideScope' (_: _: + bootstrapRustPackages = self.buildRustPackages.overrideScope (_: _: lib.optionalAttrs (stdenv.buildPlatform == stdenv.hostPlatform) (selectRustPackage buildPackages).packages.prebuilt); bootRustPlatform = makeRustPlatform bootstrapRustPackages; diff --git a/nixpkgs/pkgs/development/compilers/rust/rustc.nix b/nixpkgs/pkgs/development/compilers/rust/rustc.nix index 7b924b9f8d4f..53f7257ecfc5 100644 --- a/nixpkgs/pkgs/development/compilers/rust/rustc.nix +++ b/nixpkgs/pkgs/development/compilers/rust/rustc.nix @@ -75,6 +75,7 @@ in stdenv.mkDerivation rec { "--release-channel=stable" "--set=build.rustc=${rustc}/bin/rustc" "--set=build.cargo=${cargo}/bin/cargo" + "--tools=rustc,rust-analyzer-proc-macro-srv" "--enable-rpath" "--enable-vendor" "--build=${rust.toRustTargetSpec stdenv.buildPlatform}" @@ -149,10 +150,6 @@ in stdenv.mkDerivation rec { ${optionalString (!withBundledLLVM) "rm -rf src/llvm"} - # Fix the configure script to not require curl as we won't use it - sed -i configure \ - -e '/probe_need CFG_CURL curl/d' - # Useful debugging parameter # export VERBOSE=1 '' + lib.optionalString (stdenv.targetPlatform.isMusl && !stdenv.targetPlatform.isStatic) '' diff --git a/nixpkgs/pkgs/development/compilers/swift/compiler/default.nix b/nixpkgs/pkgs/development/compilers/swift/compiler/default.nix index 821d61229d8d..30fb18db8fd2 100644 --- a/nixpkgs/pkgs/development/compilers/swift/compiler/default.nix +++ b/nixpkgs/pkgs/development/compilers/swift/compiler/default.nix @@ -2,6 +2,7 @@ , stdenv , callPackage , cmake +, bash , coreutils , gnugrep , perl @@ -133,7 +134,8 @@ let sed < '${clang}/bin/clang' > "$targetFile" \ -e 's|^\s*exec|exec -a "$0"|g' \ -e 's|^\[\[ "${clang.cc}/bin/clang" = \*++ ]]|[[ "$0" = *++ ]]|' \ - -e "s|${clang.cc}/bin/clang|$unwrappedClang|g" + -e "s|${clang.cc}/bin/clang|$unwrappedClang|g" \ + -e "s|^\(\s*\)\($unwrappedClang\) \"@\\\$responseFile\"|\1argv0=\$0\n\1${bash}/bin/bash -c \"exec -a '\$argv0' \2 '@\$responseFile'\"|" chmod a+x "$targetFile" ''; diff --git a/nixpkgs/pkgs/development/compilers/tinygo/default.nix b/nixpkgs/pkgs/development/compilers/tinygo/default.nix index 0d2541a5a1ab..24fa6a984738 100644 --- a/nixpkgs/pkgs/development/compilers/tinygo/default.nix +++ b/nixpkgs/pkgs/development/compilers/tinygo/default.nix @@ -18,12 +18,23 @@ , avrdude , gdb , openocd +, runCommand , tinygoTests ? [ "smoketest" ] }: let llvmMajor = lib.versions.major llvm.version; inherit (llvmPackages) llvm clang compiler-rt lld; + + # only doing this because only on darwin placing clang.cc in nativeBuildInputs + # doesn't build + bootstrapTools = runCommand "tinygo-bootstap-tools" { } '' + mkdir -p $out + ln -s ${lib.getBin clang.cc}/bin/clang $out/clang-${llvmMajor} + ln -s ${lib.getBin lld}/bin/ld.lld $out/ld.lld-${llvmMajor} + ln -s ${lib.getBin lld}/bin/wasm-ld $out/wasm-ld-${llvmMajor} + ln -s ${gdb}/bin/gdb $out/gdb-multiarch + ''; in buildGoModule rec { @@ -100,20 +111,13 @@ buildGoModule rec { # Disable windows and darwin cross-compile tests sed -i "/GOOS=windows/d" Makefile sed -i "/GOOS=darwin/d" Makefile - - # tinygo needs versioned binaries - mkdir -p $out/libexec/tinygo - ln -s ${lib.getBin clang.cc}/bin/clang $out/libexec/tinygo/clang-${llvmMajor} - ln -s ${lib.getBin lld}/bin/ld.lld $out/libexec/tinygo/ld.lld-${llvmMajor} - ln -s ${lib.getBin lld}/bin/wasm-ld $out/libexec/tinygo/wasm-ld-${llvmMajor} - ln -s ${gdb}/bin/gdb $out/libexec/tinygo/gdb-multiarch '' + lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' substituteInPlace Makefile \ --replace "./build/tinygo" "${buildPackages.tinygo}/bin/tinygo" ''; preBuild = '' - export PATH=$out/libexec/tinygo:$PATH + export PATH=${bootstrapTools}:$PATH export HOME=$TMPDIR ''; @@ -149,7 +153,7 @@ buildGoModule rec { make build/release wrapProgram $out/bin/tinygo \ - --prefix PATH : ${lib.makeBinPath [ go avrdude openocd avrgcc binaryen ]}:$out/libexec/tinygo + --prefix PATH : ${lib.makeBinPath [ go avrdude openocd avrgcc binaryen ]}:${bootstrapTools} runHook postInstall ''; diff --git a/nixpkgs/pkgs/development/compilers/tvm/default.nix b/nixpkgs/pkgs/development/compilers/tvm/default.nix index a26096b540fc..e72cc3cdb93a 100644 --- a/nixpkgs/pkgs/development/compilers/tvm/default.nix +++ b/nixpkgs/pkgs/development/compilers/tvm/default.nix @@ -2,14 +2,14 @@ stdenv.mkDerivation rec { pname = "tvm"; - version = "0.12.0"; + version = "0.13.0"; src = fetchFromGitHub { owner = "apache"; repo = "incubator-tvm"; rev = "v${version}"; fetchSubmodules = true; - sha256 = "sha256-NHfYx45Zad+jsILR24c2U+Xmb2rKaTyl8xl5uxAFtak="; + sha256 = "sha256-WG0vU3lxX5FNs0l37mTE1T7rSEEtfTEisE3cMphzeAk="; }; nativeBuildInputs = [ cmake ]; diff --git a/nixpkgs/pkgs/development/compilers/unison/default.nix b/nixpkgs/pkgs/development/compilers/unison/default.nix index f34992c8a36e..ad2a80551dc3 100644 --- a/nixpkgs/pkgs/development/compilers/unison/default.nix +++ b/nixpkgs/pkgs/development/compilers/unison/default.nix @@ -11,17 +11,17 @@ stdenv.mkDerivation (finalAttrs: { pname = "unison-code-manager"; - version = "M5b"; + version = "M5c"; src = if stdenv.isDarwin then fetchurl { url = "https://github.com/unisonweb/unison/releases/download/release/${finalAttrs.version}/ucm-macos.tar.gz"; - hash = "sha256-Uknt1NrywmGs8YovlnN8TU8iaYgT1jeYP4SQCuK1u+I="; + hash = "sha256-LTpsKwiV0ZxReLcuzoJYuMP1jN6v8M/z6mUqH9s5A+g="; } else fetchurl { url = "https://github.com/unisonweb/unison/releases/download/release/${finalAttrs.version}/ucm-linux.tar.gz"; - hash = "sha256-CZLGA4fFFysxHkwedC8RBLmHWwr3BM8xqps7hN3TC/g="; + hash = "sha256-6gSX8HOv/K4zFTz1O4VvrpWR9+iQyLOO6vIRv6oVw/c="; }; # The tarball is just the prebuilt binary, in the archive root. @@ -46,8 +46,9 @@ stdenv.mkDerivation (finalAttrs: { description = "Modern, statically-typed purely functional language"; homepage = "https://unisonweb.org/"; license = with licenses; [ mit bsd3 ]; + mainProgram = "ucm"; maintainers = [ maintainers.virusdave ]; platforms = [ "x86_64-darwin" "x86_64-linux" "aarch64-darwin" ]; - mainProgram = "ucm"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; }; }) diff --git a/nixpkgs/pkgs/development/compilers/yosys/default.nix b/nixpkgs/pkgs/development/compilers/yosys/default.nix index a25142fa9fd5..6ce2cc9f162e 100644 --- a/nixpkgs/pkgs/development/compilers/yosys/default.nix +++ b/nixpkgs/pkgs/development/compilers/yosys/default.nix @@ -71,13 +71,13 @@ let in stdenv.mkDerivation rec { pname = "yosys"; - version = "0.31"; + version = "0.32"; src = fetchFromGitHub { owner = "YosysHQ"; repo = "yosys"; rev = "${pname}-${version}"; - hash = "sha256-BGeqI0U2AdKgsQQw3f/C0l1ENPTlQ3Eoa8TaLRE+aWI="; + hash = "sha256-ER61pIvXNjV74A9LwxeXDXoQFkVgqjdI9KiYQyOobk8="; }; enableParallelBuilding = true; diff --git a/nixpkgs/pkgs/development/compilers/zig/0.10.nix b/nixpkgs/pkgs/development/compilers/zig/0.10.nix index c21a51afa5b3..d02b9ff1c976 100644 --- a/nixpkgs/pkgs/development/compilers/zig/0.10.nix +++ b/nixpkgs/pkgs/development/compilers/zig/0.10.nix @@ -6,6 +6,7 @@ , libxml2 , zlib , coreutils +, callPackage }@args: import ./generic.nix args { @@ -18,7 +19,7 @@ import ./generic.nix args { patches = [ # Backport alignment related panics from zig-master to 0.10. # Upstream issue: https://github.com/ziglang/zig/issues/14559 - ./zig_14559.patch + ./002-0.10-macho-fixes.patch ]; cmakeFlags = [ diff --git a/nixpkgs/pkgs/development/compilers/zig/0.11.nix b/nixpkgs/pkgs/development/compilers/zig/0.11.nix index 7c4fcedc0538..b393f42c6513 100644 --- a/nixpkgs/pkgs/development/compilers/zig/0.11.nix +++ b/nixpkgs/pkgs/development/compilers/zig/0.11.nix @@ -6,6 +6,7 @@ , libxml2 , zlib , coreutils +, callPackage }@args: import ./generic.nix args { diff --git a/nixpkgs/pkgs/development/compilers/zig/0.9.1.nix b/nixpkgs/pkgs/development/compilers/zig/0.9.nix index a05d5ae893cf..d648c9c2eb64 100644 --- a/nixpkgs/pkgs/development/compilers/zig/0.9.1.nix +++ b/nixpkgs/pkgs/development/compilers/zig/0.9.nix @@ -6,6 +6,7 @@ , libxml2 , zlib , coreutils +, callPackage }@args: import ./generic.nix args { @@ -15,12 +16,11 @@ import ./generic.nix args { patches = [ # Fix index out of bounds reading RPATH (cherry-picked from 0.10-dev) - ./rpath.patch + ./000-0.9-read-dynstr-at-rpath-offset.patch # Fix build on macOS 13 (cherry-picked from 0.10-dev) - ./ventura.patch + ./001-0.9-bump-macos-supported-version.patch ]; - # TODO: remove on next upgrade prePatch = let zig_0_10_0 = fetchFromGitHub { diff --git a/nixpkgs/pkgs/development/compilers/zig/rpath.patch b/nixpkgs/pkgs/development/compilers/zig/000-0.9-read-dynstr-at-rpath-offset.patch index 70633193f944..70633193f944 100644 --- a/nixpkgs/pkgs/development/compilers/zig/rpath.patch +++ b/nixpkgs/pkgs/development/compilers/zig/000-0.9-read-dynstr-at-rpath-offset.patch diff --git a/nixpkgs/pkgs/development/compilers/zig/ventura.patch b/nixpkgs/pkgs/development/compilers/zig/001-0.9-bump-macos-supported-version.patch index 07b90e223553..07b90e223553 100644 --- a/nixpkgs/pkgs/development/compilers/zig/ventura.patch +++ b/nixpkgs/pkgs/development/compilers/zig/001-0.9-bump-macos-supported-version.patch diff --git a/nixpkgs/pkgs/development/compilers/zig/zig_14559.patch b/nixpkgs/pkgs/development/compilers/zig/002-0.10-macho-fixes.patch index 95f0bdf701e2..95f0bdf701e2 100644 --- a/nixpkgs/pkgs/development/compilers/zig/zig_14559.patch +++ b/nixpkgs/pkgs/development/compilers/zig/002-0.10-macho-fixes.patch diff --git a/nixpkgs/pkgs/development/compilers/zig/generic.nix b/nixpkgs/pkgs/development/compilers/zig/generic.nix index 5cc75cbbf6eb..a0dbea04869e 100644 --- a/nixpkgs/pkgs/development/compilers/zig/generic.nix +++ b/nixpkgs/pkgs/development/compilers/zig/generic.nix @@ -6,6 +6,7 @@ , libxml2 , zlib , coreutils +, callPackage , ... }: @@ -53,12 +54,18 @@ stdenv.mkDerivation (finalAttrs: { runHook postInstallCheck ''; + passthru = { + hook = callPackage ./hook.nix { + zig = finalAttrs.finalPackage; + }; + }; + meta = { description = "General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software"; homepage = "https://ziglang.org/"; changelog = "https://ziglang.org/download/${finalAttrs.version}/release-notes.html"; license = lib.licenses.mit; - maintainers = with lib.maintainers; [ aiotter andrewrk AndersonTorres figsoda ]; + maintainers = with lib.maintainers; [ andrewrk ] ++ lib.teams.zig.members; platforms = lib.platforms.unix; }; } // removeAttrs args [ "hash" ]) diff --git a/nixpkgs/pkgs/development/compilers/zig/hook.nix b/nixpkgs/pkgs/development/compilers/zig/hook.nix index df6304a34378..254a64597dd3 100644 --- a/nixpkgs/pkgs/development/compilers/zig/hook.nix +++ b/nixpkgs/pkgs/development/compilers/zig/hook.nix @@ -8,6 +8,14 @@ makeSetupHook { propagatedBuildInputs = [ zig ]; + substitutions = { + zig_default_flags = + if lib.versionAtLeast zig.version "0.11" then + "-Doptimize=ReleaseSafe -Dcpu=baseline" + else + "-Drelease-safe=true -Dcpu=baseline"; + }; + passthru = { inherit zig; }; meta = { diff --git a/nixpkgs/pkgs/development/compilers/zig/setup-hook.sh b/nixpkgs/pkgs/development/compilers/zig/setup-hook.sh index f514180692ea..f84a02a3268c 100644 --- a/nixpkgs/pkgs/development/compilers/zig/setup-hook.sh +++ b/nixpkgs/pkgs/development/compilers/zig/setup-hook.sh @@ -20,7 +20,7 @@ # https://github.com/NixOS/nixpkgs/pull/241741#issuecomment-1624227485 # https://github.com/ziglang/zig/issues/14281#issuecomment-1624220653 -readonly zigDefaultFlagsArray=("-Drelease-safe=true" "-Dcpu=baseline") +readonly zigDefaultFlagsArray=(@zig_default_flags@) function zigSetGlobalCacheDir { ZIG_GLOBAL_CACHE_DIR=$(mktemp -d) diff --git a/nixpkgs/pkgs/development/compilers/zig/shell-completions.nix b/nixpkgs/pkgs/development/compilers/zig/shell-completions.nix new file mode 100644 index 000000000000..74beb5f63d65 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/zig/shell-completions.nix @@ -0,0 +1,39 @@ +{ lib +, stdenv +, fetchFromGitHub +, installShellFiles +}: + +stdenv.mkDerivation rec { + pname = "zig-shell-completions"; + version = "unstable-2023-08-17"; + + src = fetchFromGitHub { + owner = "ziglang"; + repo = "shell-completions"; + rev = "de9f83166d792cce6a0524e63d2755952dd9872c"; + hash = "sha256-92n41/AWbHYkXiBtbWw+hXZKJCE7KW9igd8cLSBQfHo="; + }; + + nativeBuildInputs = [ installShellFiles ]; + + dontConfigure = true; + dontBuild = true; + + installPhase = '' + runHook preInstall + + installShellCompletion --bash --name zig.bash _zig.bash + installShellCompletion --zsh --name _zig _zig + + runHook postInstall + ''; + + meta = with lib; { + homepage = "https://github.com/ziglang/shell-completions"; + description = "Shell completions for the Zig compiler"; + license = licenses.mit; + maintainers = with maintainers; [ aaronjheng ]; + platforms = platforms.all; + }; +} |