diff options
Diffstat (limited to 'pkgs/development/compilers')
335 files changed, 9156 insertions, 10472 deletions
diff --git a/pkgs/development/compilers/abcl/default.nix b/pkgs/development/compilers/abcl/default.nix index 317d0d92266d4..f02e77753bc52 100644 --- a/pkgs/development/compilers/abcl/default.nix +++ b/pkgs/development/compilers/abcl/default.nix @@ -62,7 +62,7 @@ stdenv.mkDerivation (finalAttrs: { passthru.updateScript = ./update.sh; meta = { - description = "A JVM-based Common Lisp implementation"; + description = "JVM-based Common Lisp implementation"; homepage = "https://common-lisp.net/project/armedbear/"; license = lib.licenses.gpl2Classpath; mainProgram = "abcl"; diff --git a/pkgs/development/compilers/acme/default.nix b/pkgs/development/compilers/acme/default.nix index cc6426a309a55..855abe1844d6e 100644 --- a/pkgs/development/compilers/acme/default.nix +++ b/pkgs/development/compilers/acme/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { makeFlags = [ "BINDIR=$(out)/bin" ]; meta = with lib; { - description = "A multi-platform cross assembler for 6502/6510/65816 CPUs"; + description = "Multi-platform cross assembler for 6502/6510/65816 CPUs"; mainProgram = "acme"; homepage = "https://sourceforge.net/projects/acme-crossass/"; license = licenses.gpl2Plus; diff --git a/pkgs/development/compilers/adoptopenjdk-bin/jdk15-darwin.nix b/pkgs/development/compilers/adoptopenjdk-bin/jdk15-darwin.nix index b9d706653065b..369822fa1ef74 100644 --- a/pkgs/development/compilers/adoptopenjdk-bin/jdk15-darwin.nix +++ b/pkgs/development/compilers/adoptopenjdk-bin/jdk15-darwin.nix @@ -4,8 +4,8 @@ let sources = lib.importJSON ./sources.json; in { - jdk-hotspot = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk15.mac.jdk.hotspot; }; - jre-hotspot = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk15.mac.jre.hotspot; }; - jdk-openj9 = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk15.mac.jdk.openj9; }; - jre-openj9 = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk15.mac.jre.openj9; }; + jdk-hotspot = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk15.mac.jdk.hotspot; knownVulnerabilities = [ "Support ended" ]; }; + jre-hotspot = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk15.mac.jre.hotspot; knownVulnerabilities = [ "Support ended" ]; }; + jdk-openj9 = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk15.mac.jdk.openj9; knownVulnerabilities = [ "Support ended" ]; }; + jre-openj9 = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk15.mac.jre.openj9; knownVulnerabilities = [ "Support ended" ]; }; } diff --git a/pkgs/development/compilers/adoptopenjdk-bin/jdk15-linux.nix b/pkgs/development/compilers/adoptopenjdk-bin/jdk15-linux.nix index 7c6d1d36021e4..52641c690bf03 100644 --- a/pkgs/development/compilers/adoptopenjdk-bin/jdk15-linux.nix +++ b/pkgs/development/compilers/adoptopenjdk-bin/jdk15-linux.nix @@ -5,8 +5,8 @@ let sources = lib.importJSON ./sources.json; in { - jdk-hotspot = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk15.${variant}.jdk.hotspot; }; - jre-hotspot = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk15.${variant}.jre.hotspot; }; - jdk-openj9 = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk15.${variant}.jdk.openj9; }; - jre-openj9 = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk15.${variant}.jre.openj9; }; + jdk-hotspot = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk15.${variant}.jdk.hotspot; knownVulnerabilities = [ "Support ended" ]; }; + jre-hotspot = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk15.${variant}.jre.hotspot; knownVulnerabilities = [ "Support ended" ]; }; + jdk-openj9 = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk15.${variant}.jdk.openj9; knownVulnerabilities = [ "Support ended" ]; }; + jre-openj9 = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk15.${variant}.jre.openj9; knownVulnerabilities = [ "Support ended" ]; }; } diff --git a/pkgs/development/compilers/adoptopenjdk-bin/jdk16-darwin.nix b/pkgs/development/compilers/adoptopenjdk-bin/jdk16-darwin.nix index a7473710d14ba..454e92834bb0a 100644 --- a/pkgs/development/compilers/adoptopenjdk-bin/jdk16-darwin.nix +++ b/pkgs/development/compilers/adoptopenjdk-bin/jdk16-darwin.nix @@ -4,8 +4,8 @@ let sources = lib.importJSON ./sources.json; in { - jdk-hotspot = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk16.mac.jdk.hotspot; }; - jre-hotspot = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk16.mac.jre.hotspot; }; - jdk-openj9 = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk16.mac.jdk.openj9; }; - jre-openj9 = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk16.mac.jre.openj9; }; + jdk-hotspot = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk16.mac.jdk.hotspot; knownVulnerabilities = [ "Support ended" ]; }; + jre-hotspot = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk16.mac.jre.hotspot; knownVulnerabilities = [ "Support ended" ]; }; + jdk-openj9 = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk16.mac.jdk.openj9; knownVulnerabilities = [ "Support ended" ]; }; + jre-openj9 = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk16.mac.jre.openj9; knownVulnerabilities = [ "Support ended" ]; }; } diff --git a/pkgs/development/compilers/adoptopenjdk-bin/jdk16-linux.nix b/pkgs/development/compilers/adoptopenjdk-bin/jdk16-linux.nix index 3d803901d3414..3a50ad669c2e7 100644 --- a/pkgs/development/compilers/adoptopenjdk-bin/jdk16-linux.nix +++ b/pkgs/development/compilers/adoptopenjdk-bin/jdk16-linux.nix @@ -5,8 +5,8 @@ let sources = lib.importJSON ./sources.json; in { - jdk-hotspot = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk16.${variant}.jdk.hotspot; }; - jre-hotspot = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk16.${variant}.jre.hotspot; }; - jdk-openj9 = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk16.${variant}.jdk.openj9; }; - jre-openj9 = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk16.${variant}.jre.openj9; }; + jdk-hotspot = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk16.${variant}.jdk.hotspot; knownVulnerabilities = [ "Support ended" ]; }; + jre-hotspot = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk16.${variant}.jre.hotspot; knownVulnerabilities = [ "Support ended" ]; }; + jdk-openj9 = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk16.${variant}.jdk.openj9; knownVulnerabilities = [ "Support ended" ]; }; + jre-openj9 = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk16.${variant}.jre.openj9; knownVulnerabilities = [ "Support ended" ]; }; } diff --git a/pkgs/development/compilers/alan/2.nix b/pkgs/development/compilers/alan/2.nix index a80b6ab35cb0a..ce175dba687a3 100644 --- a/pkgs/development/compilers/alan/2.nix +++ b/pkgs/development/compilers/alan/2.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { meta = with lib; { homepage = "https://www.alanif.se/"; - description = "The Alan interactive fiction language (legacy version)"; + description = "Alan interactive fiction language (legacy version)"; license = licenses.artistic2; platforms = platforms.linux; maintainers = with maintainers; [ neilmayhew ]; diff --git a/pkgs/development/compilers/alan/default.nix b/pkgs/development/compilers/alan/default.nix index 61f7b1c0f7b81..296f9331c8152 100644 --- a/pkgs/development/compilers/alan/default.nix +++ b/pkgs/development/compilers/alan/default.nix @@ -40,7 +40,7 @@ stdenv.mkDerivation rec { meta = with lib; { homepage = "https://www.alanif.se/"; - description = "The Alan interactive fiction language"; + description = "Alan interactive fiction language"; license = licenses.artistic2; platforms = platforms.linux; maintainers = with maintainers; [ neilmayhew ]; diff --git a/pkgs/development/compilers/ante/default.nix b/pkgs/development/compilers/ante/default.nix index 906ee0f16c2aa..e3b4738b7b215 100644 --- a/pkgs/development/compilers/ante/default.nix +++ b/pkgs/development/compilers/ante/default.nix @@ -51,7 +51,7 @@ rustPlatform.buildRustPackage { meta = with lib; { homepage = "https://antelang.org/"; - description = "A low-level functional language for exploring refinement types, lifetime inference, and algebraic effects"; + description = "Low-level functional language for exploring refinement types, lifetime inference, and algebraic effects"; mainProgram = "ante"; license = with licenses; [ mit ]; maintainers = with maintainers; [ ehllie ]; diff --git a/pkgs/development/compilers/armips/default.nix b/pkgs/development/compilers/armips/default.nix index 6e3a3ef4d964b..1f0094a203cf9 100644 --- a/pkgs/development/compilers/armips/default.nix +++ b/pkgs/development/compilers/armips/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { meta = with lib; { homepage = "https://github.com/Kingcom/armips"; - description = "Assembler for various ARM and MIPS platforms."; + description = "Assembler for various ARM and MIPS platforms"; mainProgram = "armips"; license = licenses.mit; maintainers = with maintainers; [ marius851000 ]; diff --git a/pkgs/development/compilers/as31/default.nix b/pkgs/development/compilers/as31/default.nix index 9cff12dd306d9..3f7cc35e6d97a 100644 --- a/pkgs/development/compilers/as31/default.nix +++ b/pkgs/development/compilers/as31/default.nix @@ -35,7 +35,7 @@ stdenv.mkDerivation rec { meta = with lib; { homepage = "http://wiki.erazor-zone.de/wiki:projects:linux:as31"; - description = "An 8031/8051 assembler"; + description = "8031/8051 assembler"; mainProgram = "as31"; license = licenses.gpl2Plus; maintainers = with maintainers; [ AndersonTorres ]; diff --git a/pkgs/development/compilers/aspectj/default.nix b/pkgs/development/compilers/aspectj/default.nix index 50c54b66b73c4..55b9cf5af86c4 100644 --- a/pkgs/development/compilers/aspectj/default.nix +++ b/pkgs/development/compilers/aspectj/default.nix @@ -6,7 +6,7 @@ }: let - version = "1.9.21.2"; + version = "1.9.22.1"; versionSnakeCase = builtins.replaceStrings [ "." ] [ "_" ] version; in stdenvNoCC.mkDerivation { @@ -17,7 +17,7 @@ stdenvNoCC.mkDerivation { src = fetchurl { url = "https://github.com/eclipse/org.aspectj/releases/download/V${versionSnakeCase}/aspectj-${version}.jar"; - hash = "sha256-wqQtyopS03zX+GJme5YZwWiACqO4GAYFr3XAjzqSFnQ="; + hash = "sha256-NIyYVhJIGXz+vNVoAQzYsDfmOYc4QrRzJGWeQjS4X0U="; }; dontUnpack = true; @@ -48,7 +48,7 @@ stdenvNoCC.mkDerivation { meta = { homepage = "https://www.eclipse.org/aspectj/"; - description = "A seamless aspect-oriented extension to the Java programming language"; + description = "Seamless aspect-oriented extension to the Java programming language"; license = lib.licenses.epl10; platforms = lib.platforms.unix; sourceProvenance = with lib.sourceTypes; [ binaryBytecode ]; diff --git a/pkgs/development/compilers/assemblyscript/default.nix b/pkgs/development/compilers/assemblyscript/default.nix deleted file mode 100644 index b0fd15d47941a..0000000000000 --- a/pkgs/development/compilers/assemblyscript/default.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ lib -, buildNpmPackage -, fetchFromGitHub -}: - -buildNpmPackage rec { - pname = "assemblyscript"; - version = "0.27.23"; - - src = fetchFromGitHub { - owner = "AssemblyScript"; - repo = pname; - rev = "v${version}"; - sha256 = "sha256-pKb46AfL5MGKiH1AjyPeHw7ZeLnIiPYmf8b2bOkuRe0="; - }; - - npmDepsHash = "sha256-io/3T0LE1kupjtMg8rpQlRmIn048X0jqhKKj/W7Ilo0="; - - meta = with lib; { - homepage = "https://github.com/AssemblyScript/${pname}"; - description = "A TypeScript-like language for WebAssembly"; - license = licenses.asl20; - maintainers = with maintainers; [ lucperkins ]; - }; -} diff --git a/pkgs/development/compilers/atasm/default.nix b/pkgs/development/compilers/atasm/default.nix index d79fc686b2692..4e73fa6d4ecde 100644 --- a/pkgs/development/compilers/atasm/default.nix +++ b/pkgs/development/compilers/atasm/default.nix @@ -56,7 +56,7 @@ stdenv.mkDerivation rec { meta = with lib; { homepage = "https://github.com/CycoPH/atasm"; - description = "A commandline 6502 assembler compatible with Mac/65"; + description = "Commandline 6502 assembler compatible with Mac/65"; license = licenses.gpl2Plus; changelog = "https://github.com/CycoPH/atasm/releases/tag/V${version}"; maintainers = with maintainers; [ AndersonTorres ]; diff --git a/pkgs/development/compilers/august/default.nix b/pkgs/development/compilers/august/default.nix index 4dcb9038f0787..2e8aec11763c0 100644 --- a/pkgs/development/compilers/august/default.nix +++ b/pkgs/development/compilers/august/default.nix @@ -21,7 +21,7 @@ rustPlatform.buildRustPackage { ''; meta = with lib; { - description = "An Emmet-like language that produces JSON, TOML, or YAML"; + description = "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 ]; diff --git a/pkgs/development/compilers/ballerina/default.nix b/pkgs/development/compilers/ballerina/default.nix index 5a58d9afd9a83..f32cc203b67d4 100644 --- a/pkgs/development/compilers/ballerina/default.nix +++ b/pkgs/development/compilers/ballerina/default.nix @@ -1,6 +1,6 @@ { ballerina, lib, writeText, runCommand, makeWrapper, fetchzip, stdenv, openjdk }: let - version = "2201.8.6"; + version = "2201.9.1"; codeName = "swan-lake"; in stdenv.mkDerivation { pname = "ballerina"; @@ -8,7 +8,7 @@ in stdenv.mkDerivation { src = fetchzip { url = "https://dist.ballerina.io/downloads/${version}/ballerina-${version}-${codeName}.zip"; - hash = "sha256-/oYyYziUTt4OqQfYJdDuRVy9xmMDfhpj24lbisQFfAU="; + hash = "sha256-5ATrR2TZHu4xr+XuGaiSZpIKTDQt6MTxg2DdU1qVjMI="; }; nativeBuildInputs = [ makeWrapper ]; @@ -36,7 +36,7 @@ in stdenv.mkDerivation { ''; meta = with lib; { - description = "An open-source programming language for the cloud"; + description = "Open-source programming language for the cloud"; mainProgram = "bal"; license = licenses.asl20; platforms = openjdk.meta.platforms; diff --git a/pkgs/development/compilers/bfc/default.nix b/pkgs/development/compilers/bfc/default.nix index c6d351e4c1913..83710df4c13b5 100644 --- a/pkgs/development/compilers/bfc/default.nix +++ b/pkgs/development/compilers/bfc/default.nix @@ -33,7 +33,7 @@ rustPlatform.buildRustPackage rec { doCheck = false; meta = with lib; { - description = "An industrial-grade brainfuck compiler"; + description = "Industrial-grade brainfuck compiler"; mainProgram = "bfc"; homepage = "https://bfc.wilfred.me.uk"; license = licenses.gpl2Plus; diff --git a/pkgs/development/compilers/blueprint/default.nix b/pkgs/development/compilers/blueprint/default.nix index c37d5c91c2760..5c1aa1b2a2cd6 100644 --- a/pkgs/development/compilers/blueprint/default.nix +++ b/pkgs/development/compilers/blueprint/default.nix @@ -63,7 +63,7 @@ stdenv.mkDerivation (finalAttrs: { }; meta = with lib; { - description = "A markup language for GTK user interface files"; + description = "Markup language for GTK user interface files"; mainProgram = "blueprint-compiler"; homepage = "https://gitlab.gnome.org/jwestman/blueprint-compiler"; license = licenses.lgpl3Plus; diff --git a/pkgs/development/compilers/bs-platform/build-bs-platform.nix b/pkgs/development/compilers/bs-platform/build-bs-platform.nix index c73bb72b9d0f8..1097e7d3f81fb 100644 --- a/pkgs/development/compilers/bs-platform/build-bs-platform.nix +++ b/pkgs/development/compilers/bs-platform/build-bs-platform.nix @@ -1,7 +1,7 @@ # This file is based on https://github.com/turboMaCk/bs-platform.nix/blob/master/build-bs-platform.nix # to make potential future updates simpler -{ lib, stdenv, fetchFromGitHub, ninja, runCommand, nodejs, python3, +{ lib, stdenv, ninja, runCommand, nodejs, python3, ocaml-version, version, src, patches ? [], ocaml ? (import ./ocaml.nix { @@ -15,7 +15,8 @@ tar zxvf ${src}/vendor/ninja.tar.gz -C $out ''; patches = []; - })) + })), + ... }: let diff --git a/pkgs/development/compilers/bs-platform/default.nix b/pkgs/development/compilers/bs-platform/default.nix index ea56b85dec9ee..a1b8ad550ac36 100644 --- a/pkgs/development/compilers/bs-platform/default.nix +++ b/pkgs/development/compilers/bs-platform/default.nix @@ -18,7 +18,7 @@ in }; }).overrideAttrs (attrs: { meta = with lib; { - description = "A JavaScript backend for OCaml focused on smooth integration and clean generated code"; + description = "JavaScript backend for OCaml focused on smooth integration and clean generated code"; homepage = "https://bucklescript.github.io"; license = licenses.lgpl3; maintainers = with maintainers; [ turbomack gamb ]; diff --git a/pkgs/development/compilers/bupc/default.nix b/pkgs/development/compilers/bupc/default.nix index 947a154a3d3c7..ddec40e49cb9c 100644 --- a/pkgs/development/compilers/bupc/default.nix +++ b/pkgs/development/compilers/bupc/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { buildInputs = [ perl ]; meta = with lib; { - description = "A compiler for the Berkely Unified Parallel C language"; + description = "Compiler for the Berkely Unified Parallel C language"; longDescription = '' Unified Parallel C (UPC) is an extension of the C programming language designed for high performance computing on large-scale parallel diff --git a/pkgs/development/compilers/c0/default.nix b/pkgs/development/compilers/c0/default.nix index de728cb32c9ff..4c3f5ba201dea 100644 --- a/pkgs/development/compilers/c0/default.nix +++ b/pkgs/development/compilers/c0/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { pname = "c0"; - version = "unstable-2023-09-05"; + version = "0-unstable-2023-09-05"; src = fetchFromBitbucket { owner = "c0-lang"; @@ -73,7 +73,7 @@ stdenv.mkDerivation rec { }; meta = with lib; { - description = "A small safe subset of the C programming language, augmented with contracts"; + description = "Small safe subset of the C programming language, augmented with contracts"; homepage = "https://c0.cs.cmu.edu/"; license = licenses.mit; maintainers = [ ]; diff --git a/pkgs/development/compilers/c3c/default.nix b/pkgs/development/compilers/c3c/default.nix index b68ffc045f646..2577f1321d749 100644 --- a/pkgs/development/compilers/c3c/default.nix +++ b/pkgs/development/compilers/c3c/default.nix @@ -3,39 +3,59 @@ , fetchFromGitHub , cmake , python3 +, curl +, libxml2 +, libffi +, xar +, testers }: -llvmPackages.stdenv.mkDerivation rec { +llvmPackages.stdenv.mkDerivation (finalAttrs: { pname = "c3c"; - version = "unstable-2021-07-30"; + version = "0.5.5"; src = fetchFromGitHub { owner = "c3lang"; - repo = pname; - rev = "2246b641b16e581aec9059c8358858e10a548d94"; - sha256 = "VdMKdQsedDQCnsmTxO4HnBj5GH/EThspnotvrAscSqE="; + repo = "c3c"; + rev = "refs/tags/${finalAttrs.version}"; + hash = "sha256-iOljE1BRVc92NJZj+nr1G6KkBTCwJEUOadXHUDNoPGk="; }; - nativeBuildInputs = [ cmake ]; + postPatch = '' + substituteInPlace CMakeLists.txt \ + --replace-fail "\''${LLVM_LIBRARY_DIRS}" "${llvmPackages.lld.lib}/lib ${llvmPackages.llvm.lib}/lib" + ''; + + nativeBuildInputs = [ + cmake + ]; buildInputs = [ llvmPackages.llvm llvmPackages.lld + curl + libxml2 + libffi + ] ++ lib.optionals llvmPackages.stdenv.isDarwin [ + xar ]; nativeCheckInputs = [ python3 ]; - doCheck = true; + doCheck = llvmPackages.stdenv.system == "x86_64-linux"; checkPhase = '' + runHook preCheck ( cd ../resources/testproject; ../../build/c3c build ) ( cd ../test; python src/tester.py ../build/c3c test_suite ) + runHook postCheck ''; - installPhase = '' - install -Dm755 c3c $out/bin/c3c - cp -r lib $out - ''; + passthru.tests = { + version = testers.testVersion { + package = finalAttrs.finalPackage; + }; + }; meta = with lib; { description = "Compiler for the C3 language"; @@ -43,5 +63,6 @@ llvmPackages.stdenv.mkDerivation rec { license = licenses.lgpl3Only; maintainers = with maintainers; [ luc65r ]; platforms = platforms.all; + mainProgram = "c3c"; }; -} +}) diff --git a/pkgs/development/compilers/cakelisp/default.nix b/pkgs/development/compilers/cakelisp/default.nix index c71f2dd48e21c..c52c93c5e6c7e 100644 --- a/pkgs/development/compilers/cakelisp/default.nix +++ b/pkgs/development/compilers/cakelisp/default.nix @@ -3,12 +3,12 @@ stdenv.mkDerivation { pname = "cakelisp"; # using unstable as it's the only version that builds against gcc-13 - version = "0.3.0-unstable-2024-04-18"; + version = "0.3.0-unstable-2024-04-25"; src = fetchgit { url = "https://macoy.me/code/macoy/cakelisp"; - rev = "115ab436056602b7f3a1ca30be40edbfcc88299d"; - hash = "sha256-rgBtT24aopXLTeDffjXGvJ3RgT+QLlr50Ju9a6ccyzc="; + rev = "eb4427f555c3def9d65612672ccfe59e11b14059"; + hash = "sha256-wFyqAbHrBMFKqMYlBjS6flYHPn3Rxtaiqb1rRmlZrB4="; }; buildInputs = [ gcc ]; @@ -43,7 +43,7 @@ stdenv.mkDerivation { }; meta = with lib; { - description = "A performance-oriented Lisp-like language"; + description = "Performance-oriented Lisp-like language"; mainProgram = "cakelisp"; homepage = "https://macoy.me/code/macoy/cakelisp"; license = licenses.gpl3Plus; diff --git a/pkgs/development/compilers/carp/default.nix b/pkgs/development/compilers/carp/default.nix index 69ca47571ecc7..9e54e19ba699e 100644 --- a/pkgs/development/compilers/carp/default.nix +++ b/pkgs/development/compilers/carp/default.nix @@ -52,7 +52,7 @@ haskellPackages.mkDerivation rec { --prefix PATH : ${clang}/bin ''; - description = "A statically typed lisp, without a GC, for real-time applications"; + description = "Statically typed lisp, without a GC, for real-time applications"; homepage = "https://github.com/carp-lang/Carp"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ jluttine ]; diff --git a/pkgs/development/compilers/ccl/default.nix b/pkgs/development/compilers/ccl/default.nix index 332e0b1bccf4a..9fe1a8aa8e564 100644 --- a/pkgs/development/compilers/ccl/default.nix +++ b/pkgs/development/compilers/ccl/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchurl, fetchpatch, runCommand, bootstrap_cmds, coreutils, glibc, m4, runtimeShell }: +{ lib, stdenv, fetchurl, bootstrap_cmds, coreutils, glibc, m4, runtimeShell }: let options = rec { diff --git a/pkgs/development/compilers/chez/default.nix b/pkgs/development/compilers/chez/default.nix index ee137a1dfb267..9002db42abc28 100644 --- a/pkgs/development/compilers/chez/default.nix +++ b/pkgs/development/compilers/chez/default.nix @@ -66,7 +66,7 @@ stdenv.mkDerivation (finalAttrs: { }; meta = { - description = "A powerful and incredibly fast R6RS Scheme compiler"; + description = "Powerful and incredibly fast R6RS Scheme compiler"; homepage = "https://cisco.github.io/ChezScheme/"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ thoughtpolice ]; diff --git a/pkgs/development/compilers/chicken/4/chicken.nix b/pkgs/development/compilers/chicken/4/chicken.nix index 29cf5b115b300..b96a1d459d712 100644 --- a/pkgs/development/compilers/chicken/4/chicken.nix +++ b/pkgs/development/compilers/chicken/4/chicken.nix @@ -84,7 +84,7 @@ stdenv.mkDerivation { license = lib.licenses.bsd3; maintainers = with lib.maintainers; [ corngood ]; platforms = lib.platforms.linux ++ lib.platforms.darwin; # Maybe other Unix - description = "A portable compiler for the Scheme programming language"; + description = "Portable compiler for the Scheme programming language"; longDescription = '' CHICKEN is a compiler for the Scheme programming language. CHICKEN produces portable and efficient C, supports almost all diff --git a/pkgs/development/compilers/chicken/5/chicken.nix b/pkgs/development/compilers/chicken/5/chicken.nix index 11ae3e521093a..dd15b5394bc9c 100644 --- a/pkgs/development/compilers/chicken/5/chicken.nix +++ b/pkgs/development/compilers/chicken/5/chicken.nix @@ -71,7 +71,7 @@ stdenv.mkDerivation (finalAttrs: { license = lib.licenses.bsd3; maintainers = with lib.maintainers; [ corngood nagy konst-aa ]; platforms = lib.platforms.unix; - description = "A portable compiler for the Scheme programming language"; + description = "Portable compiler for the Scheme programming language"; longDescription = '' CHICKEN is a compiler for the Scheme programming language. CHICKEN produces portable and efficient C, supports almost all diff --git a/pkgs/development/compilers/ciao/default.nix b/pkgs/development/compilers/ciao/default.nix index 98c26b3e9a08e..29e1032260224 100644 --- a/pkgs/development/compilers/ciao/default.nix +++ b/pkgs/development/compilers/ciao/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { meta = with lib; { homepage = "https://ciao-lang.org/"; - description = "A general purpose, multi-paradigm programming language in the Prolog family"; + description = "General purpose, multi-paradigm programming language in the Prolog family"; license = licenses.lgpl21; maintainers = with maintainers; [ suhr ]; platforms = platforms.unix; diff --git a/pkgs/development/compilers/circt/circt-llvm.nix b/pkgs/development/compilers/circt/circt-llvm.nix index a21b82d93376e..0043702fd8470 100644 --- a/pkgs/development/compilers/circt/circt-llvm.nix +++ b/pkgs/development/compilers/circt/circt-llvm.nix @@ -1,4 +1,5 @@ -{ stdenv +{ lib +, stdenv , cmake , ninja , circt @@ -23,7 +24,7 @@ "-DLLVM_BUILD_EXAMPLES=OFF" "-DLLVM_OPTIMIZED_TABLEGEN=ON" "-DLLVM_ENABLE_PROJECTS=mlir" - "-DLLVM_TARGETS_TO_BUILD=" + "-DLLVM_TARGETS_TO_BUILD=Native" # This option is needed to install llvm-config "-DLLVM_INSTALL_UTILS=ON" @@ -31,6 +32,14 @@ outputs = [ "out" "lib" "dev" ]; + # Get rid of ${extra_libdir} (which ends up containing a path to circt-llvm.dev + # in circt) so that we only have to remove the one fixed rpath. + postPatch = lib.optionalString stdenv.isDarwin '' + substituteInPlace llvm/llvm/cmake/modules/AddLLVM.cmake \ + --replace-fail 'set(_install_rpath "@loader_path/../lib''${LLVM_LIBDIR_SUFFIX}" ''${extra_libdir})' \ + 'set(_install_rpath "@loader_path/../lib''${LLVM_LIBDIR_SUFFIX}")' + ''; + postInstall = '' # move llvm-config to $dev to resolve a circular dependency moveToOutput "bin/llvm-config*" "$dev" @@ -50,6 +59,30 @@ --replace "$out/bin/llvm-config" "$dev/bin/llvm-config" # patch path for llvm-config ''; + # Replace all references to @rpath with absolute paths and remove the rpaths. + # + # This is different from what the regular LLVM package does, which is to make + # everything absolute from the start: however, that doesn't work for us because + # we have `-DBUILD_SHARED_LIBS=ON`, meaning that many more things are + # dynamically rather than statically linked. This includes TableGen, which then + # fails to run halfway through the build because it tries to reference $lib when + # it hasn't been populated yet. + # + # Inspired by fixDarwinDylibNames. + postFixup = lib.optionalString stdenv.isDarwin '' + local flags=(-delete_rpath @loader_path/../lib) + for file in "$lib"/lib/*.dylib; do + flags+=(-change @rpath/"$(basename "$file")" "$file") + done + + for file in "$out"/bin/* "$lib"/lib/*.dylib; do + if [ -L "$file" ]; then continue; fi + echo "$file: fixing dylib references" + # note that -id does nothing on binaries + install_name_tool -id "$file" "''${flags[@]}" "$file" + done + ''; + # circt only use the mlir part of llvm, occasionally there are some unrelated failure from llvm, # disable the llvm check, but keep the circt check enabled. doCheck = false; diff --git a/pkgs/development/compilers/circt/default.nix b/pkgs/development/compilers/circt/default.nix index 58174f3fde0ad..a893166082d5f 100644 --- a/pkgs/development/compilers/circt/default.nix +++ b/pkgs/development/compilers/circt/default.nix @@ -7,6 +7,7 @@ , fetchFromGitHub , ninja , lit +, z3 , gitUpdater , callPackage }: @@ -17,18 +18,18 @@ let in stdenv.mkDerivation rec { pname = "circt"; - version = "1.73.0"; + version = "1.76.0"; src = fetchFromGitHub { owner = "llvm"; repo = "circt"; rev = "firtool-${version}"; - hash = "sha256-C50PiToXrKf94Vg1yv++3xVhIuCW/KVPs0yLv5Fg0dY="; + hash = "sha256-L8ELchwUzweS1gzZ8EfnddZu5xMJIVURViwwtPpxylo="; fetchSubmodules = true; }; requiredSystemFeatures = [ "big-parallel" ]; - nativeBuildInputs = [ cmake ninja git pythonEnv ]; + nativeBuildInputs = [ cmake ninja git pythonEnv z3 ]; buildInputs = [ circt-llvm ]; cmakeFlags = [ @@ -66,6 +67,13 @@ stdenv.mkDerivation rec { outputs = [ "out" "lib" "dev" ]; + # Copy circt-llvm's postFixup stage so that it can make all our dylib references + # absolute as well. + # + # We don't need `postPatch` because circt seems to be automatically inheriting + # the config somehow, presumably via. `-DMLIR_DIR`. + postFixup = circt-llvm.postFixup; + postInstall = '' moveToOutput lib "$lib" ''; diff --git a/pkgs/development/compilers/clasp/clasp-pin-repos-commits.patch b/pkgs/development/compilers/clasp/clasp-pin-repos-commits.patch deleted file mode 100644 index 203ad59514119..0000000000000 --- a/pkgs/development/compilers/clasp/clasp-pin-repos-commits.patch +++ /dev/null @@ -1,90 +0,0 @@ -diff --git a/repos.sexp b/repos.sexp -index d31d4d62d..cd3238585 100644 ---- a/repos.sexp -+++ b/repos.sexp -@@ -5,17 +5,17 @@ - ;;;; 4. src/ - C/C++ dependencies for iclasp - ;;;; 5. extensions/ - extensions and their dependencies - ((:name :ansi-test -- :repository "https://gitlab.common-lisp.net/yitzchak/ansi-test" -+ :repository "https://github.com/clasp-developers/ansi-test.git" - :directory "dependencies/ansi-test/" -- :branch "add-expected-failures") -+ :commit "33ae7c1ddd3e814bbe6f55b9e7a6a92b39404664") - (:name :cl-bench -- :repository "https://gitlab.common-lisp.net/ansi-test/cl-bench.git" -+ :repository "https://github.com/clasp-developers/cl-bench.git" - :directory "dependencies/cl-bench/" -- :branch "master") -+ :commit "7d184b4ef2a6272f0e3de88f6c243edb20f7071a") - (:name :cl-who - :repository "https://github.com/edicl/cl-who.git" - :directory "dependencies/cl-who/" -- :branch "master") -+ :commit "07dafe9b351c32326ce20b5804e798f10d4f273d") - (:name :quicklisp-client - :repository "https://github.com/quicklisp/quicklisp-client.git" - :directory "dependencies/quicklisp-client/" -@@ -23,21 +23,21 @@ - (:name :shasht - :repository "https://github.com/yitzchak/shasht.git" - :directory "dependencies/shasht/" -- :branch "master") -+ :commit "f38e866990c6b5381a854d63f7ea0227c87c2f6d") - (:name :trivial-do - :repository "https://github.com/yitzchak/trivial-do.git" - :directory "dependencies/trivial-do/" -- :branch "master") -+ :commit "a19f93227cb80a6bec8846655ebcc7998020bd7e") - (:name :trivial-gray-streams - :repository "https://github.com/trivial-gray-streams/trivial-gray-streams.git" - :directory "dependencies/trivial-gray-streams/" -- :branch "master") -+ :commit "2b3823edbc78a450db4891fd2b566ca0316a7876") - (:name :acclimation - :repository "https://github.com/robert-strandh/Acclimation.git" - :directory "src/lisp/kernel/contrib/Acclimation/" - :commit "dd15c86b0866fc5d8b474be0da15c58a3c04c45c") - (:name :alexandria -- :repository "https://gitlab.common-lisp.net/alexandria/alexandria.git" -+ :repository "https://github.com/clasp-developers/alexandria.git" - :directory "src/lisp/kernel/contrib/alexandria/" - :commit "v1.4") - (:name :anaphora -@@ -128,7 +128,7 @@ - (:name :lparallel - :repository "https://github.com/yitzchak/lparallel.git" - :directory "src/lisp/kernel/contrib/lparallel/" -- :branch "fix-asdf-feature" -+ :commit "9c98bf629328b27a5a3fbb7a637afd1db439c00f" - :extension :cando) - (:name :parser.common-rules - :repository "https://github.com/scymtym/parser.common-rules.git" -@@ -150,9 +150,9 @@ - :commit "87a447a8eaef9cf4fd1c16d407a49f9adaf8adad" - :extension :cando) - (:name :trivial-features ; Needed both by the host and eclasp -- :repository "https://github.com/yitzchak/trivial-features.git" -+ :repository "https://github.com/trivial-features/trivial-features.git" - :directory "src/lisp/kernel/contrib/trivial-features/" -- :branch "asdf-feature") -+ :commit "d249a62aaf022902398a7141ae17217251fc61db") - (:name :trivial-garbage - :repository "https://github.com/trivial-garbage/trivial-garbage.git" - :directory "src/lisp/kernel/contrib/trivial-garbage/" -@@ -176,7 +176,7 @@ - :directory "src/lisp/kernel/contrib/usocket/" - :commit "7ad6582cc1ce9e7fa5931a10e73b7d2f2688fa81") - (:name :asdf -- :repository "https://gitlab.common-lisp.net/asdf/asdf.git" -+ :repository "https://github.com/clasp-developers/asdf.git" - :directory "src/lisp/modules/asdf/" - :commit "3.3.5") - (:name :mps -@@ -205,4 +205,4 @@ - :repository "https://github.com/seqan/seqan.git" - :directory "extensions/seqan-clasp/seqan/" - :commit "f5f658343c366c9c3d44ba358ffc9317e78a09ed" -- :extension :seqan-clasp)) -\ No newline at end of file -+ :extension :seqan-clasp)) diff --git a/pkgs/development/compilers/clasp/default.nix b/pkgs/development/compilers/clasp/default.nix index 64617d01f156e..0d27b9f62c8ae 100644 --- a/pkgs/development/compilers/clasp/default.nix +++ b/pkgs/development/compilers/clasp/default.nix @@ -1,8 +1,7 @@ { lib , llvmPackages_15 -, fetchFromGitHub +, fetchzip , sbcl -, git , pkg-config , fmt_9 , gmpxx @@ -15,39 +14,28 @@ let inherit (llvmPackages_15) stdenv llvm libclang; - - # Gathered from https://github.com/clasp-developers/clasp/raw/2.2.0/repos.sexp - dependencies = import ./dependencies.nix { - inherit fetchFromGitHub; - }; - - # Shortened version of `_defaultUnpack` - unpackDependency = elem: '' - mkdir -p "source/${elem.directory}" - cp -pr --reflink=auto -- ${elem.src}/* "source/${elem.directory}" - chmod -R u+w -- "source/${elem.directory}" - ''; in -stdenv.mkDerivation { +stdenv.mkDerivation rec { pname = "clasp"; - version = "2.2.0"; + version = "2.6.0"; - src = fetchFromGitHub { - owner = "clasp-developers"; - repo = "clasp"; - rev = "2.2.0"; - hash = "sha256-gvUqUb0dftW1miiBcAPJur0wOunox4y2SUYeeJpR9R4="; + src = fetchzip { + url = "https://github.com/clasp-developers/clasp/releases/download/${version}/clasp-${version}.tar.gz"; + hash = "sha256-SiQ4RMha6dMV7V2fh+UxtAIgEEH/6/hF9fe+bPtoGIw="; }; patches = [ - ./clasp-pin-repos-commits.patch ./remove-unused-command-line-argument.patch ]; + # Workaround for https://github.com/clasp-developers/clasp/issues/1590 + postPatch = '' + echo '(defmethod configure-unit (c (u (eql :git))))' >> src/koga/units.lisp + ''; + nativeBuildInputs = [ sbcl - git pkg-config fmt_9 gmpxx @@ -61,13 +49,12 @@ stdenv.mkDerivation { ninjaFlags = [ "-C" "build" ]; - postUnpack = lib.concatStringsSep "\n" (builtins.map unpackDependency dependencies); - configurePhase = '' export SOURCE_DATE_EPOCH=1 export ASDF_OUTPUT_TRANSLATIONS=$(pwd):$(pwd)/__fasls sbcl --script koga \ --skip-sync \ + --build-mode=bytecode-faso \ --cc=$NIX_CC/bin/cc \ --cxx=$NIX_CC/bin/c++ \ --reproducible-build \ @@ -78,7 +65,7 @@ stdenv.mkDerivation { ''; meta = { - description = "A Common Lisp implementation based on LLVM with C++ integration"; + description = "Common Lisp implementation based on LLVM with C++ integration"; license = lib.licenses.lgpl21Plus ; maintainers = lib.teams.lisp.members; platforms = ["x86_64-linux" "x86_64-darwin"]; @@ -86,5 +73,6 @@ stdenv.mkDerivation { # error: use of undeclared identifier 'aligned_alloc' broken = stdenv.isDarwin; homepage = "https://github.com/clasp-developers/clasp"; + mainProgram = "clasp"; }; } diff --git a/pkgs/development/compilers/clasp/dependencies.nix b/pkgs/development/compilers/clasp/dependencies.nix deleted file mode 100644 index abcd0f17747de..0000000000000 --- a/pkgs/development/compilers/clasp/dependencies.nix +++ /dev/null @@ -1,457 +0,0 @@ -# Gathered from https://github.com/clasp-developers/clasp/raw/2.2.0/repos.sexp -# Generated using https://gist.github.com/philiptaron/8ea1394b049c2ca975e4b03965d9ac00 -# and then light editing using Vim - -{ fetchFromGitHub }: - -[ - { - directory = "dependencies/ansi-test/"; - src = fetchFromGitHub { - owner = "clasp-developers"; - repo = "ansi-test"; - rev = "33ae7c1ddd3e814bbe6f55b9e7a6a92b39404664"; - hash = "sha256-dGF7CScvfPNMRxQXJM4v6Vfc/VjdUXNz0yCjUOsYM3I="; - }; - } - - { - directory = "dependencies/cl-bench/"; - src = fetchFromGitHub { - owner = "clasp-developers"; - repo = "cl-bench"; - rev = "7d184b4ef2a6272f0e3de88f6c243edb20f7071a"; - hash = "sha256-7ZEIWNEj7gzYFMTqW7nnZgjNE1zoTAMeJHj547gRtPs="; - }; - } - - { - directory = "dependencies/cl-who/"; - src = fetchFromGitHub { - owner = "edicl"; - repo = "cl-who"; - rev = "07dafe9b351c32326ce20b5804e798f10d4f273d"; - hash = "sha256-5T762W3qetAjXtHP77ko6YZR6w5bQ04XM6QZPELQu+U="; - }; - } - - { - directory = "dependencies/quicklisp-client/"; - src = fetchFromGitHub { - owner = "quicklisp"; - repo = "quicklisp-client"; - rev = "8b63e00b3a2b3f96e24c113d7601dd03a128ce94"; - hash = "sha256-1HLVPhl8aBaeG8dRLxBh0j0X/0wqFeNYK1CEfiELToA="; - }; - } - - { - directory = "dependencies/shasht/"; - src = fetchFromGitHub { - owner = "yitzchak"; - repo = "shasht"; - rev = "f38e866990c6b5381a854d63f7ea0227c87c2f6d"; - hash = "sha256-Ki5JNevMvVZoUz3tP6cv7qA4xDLzjd2MXmf4x9ew5bw="; - }; - } - - { - directory = "dependencies/trivial-do/"; - src = fetchFromGitHub { - owner = "yitzchak"; - repo = "trivial-do"; - rev = "a19f93227cb80a6bec8846655ebcc7998020bd7e"; - hash = "sha256-Tjd9VJan6pQpur292xtklvb28MDGGjq2+ub5T6o6FG8="; - }; - } - - { - directory = "dependencies/trivial-gray-streams/"; - src = fetchFromGitHub { - owner = "trivial-gray-streams"; - repo = "trivial-gray-streams"; - rev = "2b3823edbc78a450db4891fd2b566ca0316a7876"; - hash = "sha256-9vN74Gum7ihKSrCygC3hRLczNd15nNCWn5r60jjHN8I="; - }; - } - - { - directory = "src/lisp/kernel/contrib/Acclimation/"; - src = fetchFromGitHub { - owner = "robert-strandh"; - repo = "Acclimation"; - rev = "dd15c86b0866fc5d8b474be0da15c58a3c04c45c"; - hash = "sha256-AuoVdv/MU73A8X+GsxyG0K+xgzCKLQfbpu79oTERgmI="; - }; - } - - { - directory = "src/lisp/kernel/contrib/alexandria/"; - src = fetchFromGitHub { - owner = "clasp-developers"; - repo = "alexandria"; - rev = "49e82add16cb9f1ffa72c77cd687271247181ff3"; - hash = "sha256-1Hzxt65dZvgOFIljjjlSGgKYkj+YBLwJCACi5DZsKmQ="; - }; - } - - { - directory = "src/lisp/kernel/contrib/anaphora/"; - src = fetchFromGitHub { - owner = "spwhitton"; - repo = "anaphora"; - rev = "bcf0f7485eec39415be1b2ec6ca31cf04a8ab5c5"; - hash = "sha256-CzApbUmdDmD+BWPcFGJN0rdZu991354EdTDPn8FSRbc="; - }; - } - - { - directory = "src/lisp/kernel/contrib/architecture.builder-protocol/"; - src = fetchFromGitHub { - owner = "scymtym"; - repo = "architecture.builder-protocol"; - rev = "0c1a9ebf9ab14e699c2b9c85fc20265b8c5364dd"; - hash = "sha256-AdZeI4UCMnmuYpmSaWqIt+egdkNN3kzEn/zOqIBTnww="; - }; - } - - { - directory = "src/lisp/kernel/contrib/array-utils/"; - src = fetchFromGitHub { - owner = "Shinmera"; - repo = "array-utils"; - rev = "5acd90fa3d9703cea33e3825334b256d7947632f"; - hash = "sha256-Br3H39F+hqYnTgYtVezuRhwRQJwJlxohu+M033sYPOI="; - }; - } - - { - directory = "src/lisp/kernel/contrib/babel/"; - src = fetchFromGitHub { - owner = "cl-babel"; - repo = "babel"; - rev = "f892d0587c7f3a1e6c0899425921b48008c29ee3"; - hash = "sha256-U2E8u3ZWgH9eG4SV/t9CE1dUpcthuQMXgno/W1Ow2RE="; - }; - } - - { - directory = "src/lisp/kernel/contrib/bordeaux-threads/"; - src = fetchFromGitHub { - owner = "sionescu"; - repo = "bordeaux-threads"; - rev = "3d25cd01176f7c9215ebc792c78313cb99ff02f9"; - hash = "sha256-KoOaIKQZaZgEbtM6PGVwQn/xg+/slt+uloR4EaMlBeg="; - }; - } - - { - directory = "src/lisp/kernel/contrib/cffi/"; - src = fetchFromGitHub { - owner = "cffi"; - repo = "cffi"; - rev = "9c912e7b89eb09dd347d3ebae16e4dc5f53e5717"; - hash = "sha256-umt0HmX7M3SZM2VSrxqxUmNt9heTG/Ulwzphs2NRYTs="; - }; - } - - { - directory = "src/lisp/kernel/contrib/cl-markup/"; - src = fetchFromGitHub { - owner = "arielnetworks"; - repo = "cl-markup"; - rev = "e0eb7debf4bdff98d1f49d0f811321a6a637b390"; - hash = "sha256-50LZDaNfXhOZ6KoTmXClo5Bo2D9q1zbdCLSFkwqZhoI="; - }; - } - - { - directory = "src/lisp/kernel/contrib/cl-ppcre/"; - src = fetchFromGitHub { - owner = "edicl"; - repo = "cl-ppcre"; - rev = "b4056c5aecd9304e80abced0ef9c89cd66ecfb5e"; - hash = "sha256-6xeiSeYVwzAaisLQP/Bjqlc/Rhw8JMy0FT93hDQi5Y8="; - }; - } - - { - directory = "src/lisp/kernel/contrib/cl-svg/"; - src = fetchFromGitHub { - owner = "wmannis"; - repo = "cl-svg"; - rev = "1e988ebd2d6e2ee7be4744208828ef1b59e5dcdc"; - hash = "sha256-nwOvHGK0wIOZxAnZ68xyOhchAp8CBl/wsfRI42v8NYc="; - }; - } - - { - directory = "src/lisp/kernel/contrib/Cleavir/"; - src = fetchFromGitHub { - owner = "s-expressionists"; - repo = "Cleavir"; - rev = "a73d313735447c63b4b11b6f8984f9b1e3e74ec9"; - hash = "sha256-VQ8sB5W7JYnVsvfx2j7d2LQcECst79MCIW9QSuwm8GA="; - }; - } - - { - directory = "src/lisp/kernel/contrib/closer-mop/"; - src = fetchFromGitHub { - owner = "pcostanza"; - repo = "closer-mop"; - rev = "d4d1c7aa6aba9b4ac8b7bb78ff4902a52126633f"; - hash = "sha256-bHBYMBz45EOY727d4BWP75gRV4nzRAWxAlivPRzYrKo="; - }; - } - - { - directory = "src/lisp/kernel/contrib/Concrete-Syntax-Tree/"; - src = fetchFromGitHub { - owner = "s-expressionists"; - repo = "Concrete-Syntax-Tree"; - rev = "4f01430c34f163356f3a2cfbf0a8a6963ff0e5ac"; - hash = "sha256-0XfLkihztWUhqu7DrFiuwcEx/x+EILEivPfsHb5aMZk="; - }; - } - - { - directory = "src/lisp/kernel/contrib/documentation-utils/"; - src = fetchFromGitHub { - owner = "Shinmera"; - repo = "documentation-utils"; - rev = "98630dd5f7e36ae057fa09da3523f42ccb5d1f55"; - hash = "sha256-uMUyzymyS19ODiUjQbE/iJV7HFeVjB45gbnWqfGEGCU="; - }; - } - - { - directory = "src/lisp/kernel/contrib/Eclector/"; - src = fetchFromGitHub { - owner = "s-expressionists"; - repo = "Eclector"; - rev = "dddb4d8af3eae78017baae7fb9b99e73d2a56e6b"; - hash = "sha256-OrkWEI5HGlmejH9gg7OwJz2QXgAgE3kDHwen5yzhKgM="; - }; - } - - { - directory = "src/lisp/kernel/contrib/esrap/"; - src = fetchFromGitHub { - owner = "scymtym"; - repo = "esrap"; - rev = "7588b430ad7c52f91a119b4b1c9a549d584b7064"; - hash = "sha256-C0GiTyRna9BMIMy1/XdMZAkhjpLaoAEF1+ps97xQyMY="; - }; - } - - { - directory = "src/lisp/kernel/contrib/global-vars/"; - src = fetchFromGitHub { - owner = "lmj"; - repo = "global-vars"; - rev = "c749f32c9b606a1457daa47d59630708ac0c266e"; - hash = "sha256-bXxeNNnFsGbgP/any8rR3xBvHE9Rb4foVfrdQRHroxo="; - }; - } - - { - directory = "src/lisp/kernel/contrib/let-plus/"; - src = fetchFromGitHub { - owner = "sharplispers"; - repo = "let-plus"; - rev = "455e657e077235829b197f7ccafd596fcda69e30"; - hash = "sha256-SyZRx9cyuEN/h4t877TOWw35caQqMf2zSGZ9Qg22gAE="; - }; - } - - { - directory = "src/lisp/kernel/contrib/cl-netcdf/"; - src = fetchFromGitHub { - owner = "clasp-developers"; - repo = "cl-netcdf"; - rev = "593c6c47b784ec02e67580aa12a7775ed6260200"; - hash = "sha256-3VCTSsIbk0GovCM+rWPZj2QJdYq+UZksjfRd18UYY5s="; - }; - } - - { - directory = "src/lisp/kernel/contrib/lparallel/"; - src = fetchFromGitHub { - owner = "yitzchak"; - repo = "lparallel"; - rev = "9c98bf629328b27a5a3fbb7a637afd1db439c00f"; - hash = "sha256-sUM1WKXxZk7un64N66feXh21m7yzJsdcaWC3jIOd2W4="; - }; - } - - { - directory = "src/lisp/kernel/contrib/parser.common-rules/"; - src = fetchFromGitHub { - owner = "scymtym"; - repo = "parser.common-rules"; - rev = "b7652db5e3f98440dce2226d67a50e8febdf7433"; - hash = "sha256-ik+bteIjBN6MfMFiRBjn/nP7RBzv63QgoRKVi4F8Ho0="; - }; - } - - { - directory = "src/lisp/kernel/contrib/plump/"; - src = fetchFromGitHub { - owner = "Shinmera"; - repo = "plump"; - rev = "d8ddda7514e12f35510a32399f18e2b26ec69ddc"; - hash = "sha256-FjeZAWD81137lXWyN/RIr+L+anvwh/Glze497fcpHUY="; - }; - } - - { - directory = "src/lisp/kernel/contrib/split-sequence/"; - src = fetchFromGitHub { - owner = "sharplispers"; - repo = "split-sequence"; - rev = "89a10b4d697f03eb32ade3c373c4fd69800a841a"; - hash = "sha256-faF2EiQ+xXWHX9JlZ187xR2mWhdOYCpb4EZCPNoZ9uQ="; - }; - } - - { - directory = "src/lisp/kernel/contrib/static-vectors/"; - src = fetchFromGitHub { - owner = "sionescu"; - repo = "static-vectors"; - rev = "87a447a8eaef9cf4fd1c16d407a49f9adaf8adad"; - hash = "sha256-q4E+VPX/pOyuCdzJZ6CFEIiR58E6JIxJySROl/WcMyI="; - }; - } - - { - directory = "src/lisp/kernel/contrib/trivial-features/"; - src = fetchFromGitHub { - owner = "trivial-features"; - repo = "trivial-features"; - rev = "d249a62aaf022902398a7141ae17217251fc61db"; - hash = "sha256-g50OSfrMRH5hTRy077C1kCln2vz0Qeb1oq9qHh7zY2Q="; - }; - } - - { - directory = "src/lisp/kernel/contrib/trivial-garbage/"; - src = fetchFromGitHub { - owner = "trivial-garbage"; - repo = "trivial-garbage"; - rev = "b3af9c0c25d4d4c271545f1420e5ea5d1c892427"; - hash = "sha256-CCLZHHW3/0Id0uHxrbjf/WM3yC8netkcQ8p9Qtssvc4="; - }; - } - - { - directory = "src/lisp/kernel/contrib/trivial-http/"; - src = fetchFromGitHub { - owner = "gwkkwg"; - repo = "trivial-http"; - rev = "ca45656587f36378305de1a4499c308acc7a03af"; - hash = "sha256-0VKWHJYn1XcXVNHduxKiABe7xFUxj8M4/u92Usvq54o="; - }; - } - - { - directory = "src/lisp/kernel/contrib/trivial-indent/"; - src = fetchFromGitHub { - owner = "Shinmera"; - repo = "trivial-indent"; - rev = "8d92e94756475d67fa1db2a9b5be77bc9c64d96c"; - hash = "sha256-G+YCIB3bKN4RotJUjT/6bnivSBalseFRhIlwsEm5EUk="; - }; - } - - { - directory = "src/lisp/kernel/contrib/trivial-with-current-source-form/"; - src = fetchFromGitHub { - owner = "scymtym"; - repo = "trivial-with-current-source-form"; - rev = "3898e09f8047ef89113df265574ae8de8afa31ac"; - hash = "sha256-IKJOyJYqGBx0b6Oomddvb+2K6q4W508s3xnplleMJIQ="; - }; - } - - { - directory = "src/lisp/kernel/contrib/usocket/"; - src = fetchFromGitHub { - owner = "usocket"; - repo = "usocket"; - rev = "7ad6582cc1ce9e7fa5931a10e73b7d2f2688fa81"; - hash = "sha256-0HiItuc6fV70Rpk/5VevI1I0mGnY1JJvhnyPpx6r0uo="; - }; - } - - { - directory = "src/lisp/modules/asdf/"; - src = fetchFromGitHub { - owner = "clasp-developers"; - repo = "asdf"; - rev = "97b279faf3cc11a5cfdd19b5325025cc8ec1e7bd"; - hash = "sha256-4LhF+abor5NK4HgbGCYM5kSaH7TLISW5w5HXYOm4wqw="; - }; - } - - { - directory = "src/mps/"; - src = fetchFromGitHub { - owner = "Ravenbrook"; - repo = "mps"; - rev = "b8a05a3846430bc36c8200f24d248c8293801503"; - hash = "sha256-Zuc77cdap0xNYEqM8IkMQMUMY0f5QZ84uFmKgXjDXeA="; - }; - } - - { - directory = "src/bdwgc/"; - src = fetchFromGitHub { - owner = "ivmai"; - repo = "bdwgc"; - rev = "036becee374b84fed5d56a6df3ae097b7cc0ff73"; - hash = "sha256-WB1sFfVL6lWL+DEypg3chCJS/w0J4tPGi5tL1o3W73U="; - }; - } - - { - directory = "src/libatomic_ops/"; - src = fetchFromGitHub { - owner = "ivmai"; - repo = "libatomic_ops"; - rev = "4b7d0b9036f9a645b03010dad1c7b7f86ea75772"; - hash = "sha256-zThdbX2/l5/ZZVYobJf9KAd+IjIDIrk+08SUhTQs2gE="; - }; - } - - { - directory = "extensions/cando/"; - src = fetchFromGitHub { - owner = "cando-developers"; - repo = "cando"; - rev = "a6934eddfce2ff1cb7131affce427ce652392f08"; - hash = "sha256-AUmBLrk7lofJNagvI3KhPebvV8GkrDbBXrsAa3a1Bwo="; - }; - } - - { - directory = "extensions/seqan-clasp/"; - src = fetchFromGitHub { - owner = "clasp-developers"; - repo = "seqan-clasp"; - rev = "5caa2e1e6028525276a6b6ba770fa6e334563d58"; - hash = "sha256-xAvAd/kBr8n9SSw/trgWTqDWQLmpOp8+JX5L+JO2+Ls="; - }; - } - - { - directory = "extensions/seqan-clasp/seqan/"; - src = fetchFromGitHub { - owner = "seqan"; - repo = "seqan"; - rev = "f5f658343c366c9c3d44ba358ffc9317e78a09ed"; - hash = "sha256-AzZlONf7SNxCa9+SKQFC/rA6fx6rhWH96caZSmKnlsU="; - }; - } -] diff --git a/pkgs/development/compilers/closure/default.nix b/pkgs/development/compilers/closure/default.nix index ee560d8763014..125324c96dac8 100644 --- a/pkgs/development/compilers/closure/default.nix +++ b/pkgs/development/compilers/closure/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { ''; meta = with lib; { - description = "A tool for making JavaScript download and run faster"; + description = "Tool for making JavaScript download and run faster"; mainProgram = "closure-compiler"; homepage = "https://developers.google.com/closure/compiler/"; sourceProvenance = with sourceTypes; [ binaryBytecode ]; diff --git a/pkgs/development/compilers/cmdstan/default.nix b/pkgs/development/compilers/cmdstan/default.nix index 817234f799915..a6b6833289b7c 100644 --- a/pkgs/development/compilers/cmdstan/default.nix +++ b/pkgs/development/compilers/cmdstan/default.nix @@ -11,14 +11,14 @@ stdenv.mkDerivation rec { pname = "cmdstan"; - version = "2.34.1"; + version = "2.35.0"; src = fetchFromGitHub { owner = "stan-dev"; repo = pname; rev = "v${version}"; fetchSubmodules = true; - hash = "sha256-gze8kd5zSs9nUlSY7AJwpx+jnc9Y21ahzDJmynlqm1Y="; + hash = "sha256-bmzkXbR4KSnpfXjs2MAx8mbNSbNrIWDP/O8S+JGWrcg="; }; postPatch = '' diff --git a/pkgs/development/compilers/cmucl/binary.nix b/pkgs/development/compilers/cmucl/binary.nix index 7ad50a369c62e..130b757856a09 100644 --- a/pkgs/development/compilers/cmucl/binary.nix +++ b/pkgs/development/compilers/cmucl/binary.nix @@ -49,7 +49,7 @@ stdenv.mkDerivation (finalAttrs: { meta = with lib; { homepage = "http://www.cons.org/cmucl/"; - description = "The CMU implementation of Common Lisp"; + description = "CMU implementation of Common Lisp"; longDescription = '' CMUCL is a free implementation of the Common Lisp programming language which runs on most major Unix platforms. It mainly conforms to the diff --git a/pkgs/development/compilers/codon/default.nix b/pkgs/development/compilers/codon/default.nix index e9393956e4737..520c6386490bf 100644 --- a/pkgs/development/compilers/codon/default.nix +++ b/pkgs/development/compilers/codon/default.nix @@ -132,7 +132,7 @@ stdenv.mkDerivation { passthru.updateScript = nix-update-script { }; meta = { - description = "A high-performance, zero-overhead, extensible Python compiler using LLVM"; + description = "High-performance, zero-overhead, extensible Python compiler using LLVM"; homepage = "https://docs.exaloop.io/codon"; maintainers = [ ]; license = lib.licenses.bsl11; diff --git a/pkgs/development/compilers/coffeescript/default.nix b/pkgs/development/compilers/coffeescript/default.nix index 5245a25bba880..a5ef29967e075 100644 --- a/pkgs/development/compilers/coffeescript/default.nix +++ b/pkgs/development/compilers/coffeescript/default.nix @@ -23,7 +23,7 @@ buildNpmPackage rec { dontNpmBuild = true; meta = { - description = "A little language that compiles into JavaScript"; + description = "Little language that compiles into JavaScript"; homepage = "https://github.com/jashkenas/coffeescript"; license = lib.licenses.mit; mainProgram = "coffee"; diff --git a/pkgs/development/compilers/colm/default.nix b/pkgs/development/compilers/colm/default.nix index b1540ff630729..6ec15a0ebdf9a 100644 --- a/pkgs/development/compilers/colm/default.nix +++ b/pkgs/development/compilers/colm/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { ''; meta = with lib; { - description = "A programming language for the analysis and transformation of computer languages"; + description = "Programming language for the analysis and transformation of computer languages"; mainProgram = "colm"; homepage = "http://www.colm.net/open-source/colm"; license = licenses.gpl2; diff --git a/pkgs/development/compilers/corretto/11.nix b/pkgs/development/compilers/corretto/11.nix index 06de7a7bbdf87..b7bd676143c00 100644 --- a/pkgs/development/compilers/corretto/11.nix +++ b/pkgs/development/compilers/corretto/11.nix @@ -1,5 +1,4 @@ -{ corretto11 -, fetchFromGitHub +{ fetchFromGitHub , gradle_7 , jdk11 , lib @@ -10,7 +9,7 @@ }: let - corretto = import ./mk-corretto.nix { + corretto = import ./mk-corretto.nix rec { inherit lib stdenv rsync runCommand testers; jdk = jdk11; gradle = gradle_7; @@ -20,12 +19,12 @@ let # Corretto, too. "--disable-warnings-as-errors" ]; - version = "11.0.20.9.1"; + version = "11.0.23.9.1"; src = fetchFromGitHub { owner = "corretto"; repo = "corretto-11"; - rev = "b880bdc8397ec3dd6b7cd4b837ce846c9e902783"; - sha256 = "sha256-IomJHQn0ZgqsBZ5BrRqVrEOhTq7wjLiIKMQlz53JxsU="; + rev = version; + sha256 = "sha256-qSx0kgXTgvsvBaEqgy7Jrp/c1Imoi5/IOqEWoLenJYI="; }; }; in diff --git a/pkgs/development/compilers/corretto/17.nix b/pkgs/development/compilers/corretto/17.nix index 308750356c2a8..c557012e8cdb8 100644 --- a/pkgs/development/compilers/corretto/17.nix +++ b/pkgs/development/compilers/corretto/17.nix @@ -1,5 +1,5 @@ -{ corretto17 -, fetchFromGitHub +{ fetchFromGitHub +, fetchurl , gradle_7 , jdk17 , lib @@ -10,17 +10,25 @@ }: let - corretto = import ./mk-corretto.nix { + corretto = import ./mk-corretto.nix rec { inherit lib stdenv rsync runCommand testers; jdk = jdk17; gradle = gradle_7; - version = "17.0.8.8.1"; + version = "17.0.11.9.1"; src = fetchFromGitHub { owner = "corretto"; repo = "corretto-17"; - rev = "9a3cc984f76cb5f90598bdb43215bad20e0f7319"; - sha256 = "sha256-/VuB3ocD5VvDqCU7BoTG+fQ0aKvK1TejegRYmswInqQ="; + rev = version; + sha256 = "sha256-LxZSFILFfyh8oBiYEnuBQ0Og2i713qdK2jIiCBnrlj0="; }; }; in -corretto +corretto.overrideAttrs (final: prev: { + # HACK: Removes the FixNullPtrCast patch, as it fails to apply. Need to figure out what causes it to fail to apply. + patches = lib.remove + (fetchurl { + url = "https://git.alpinelinux.org/aports/plain/community/openjdk17/FixNullPtrCast.patch?id=41e78a067953e0b13d062d632bae6c4f8028d91c"; + sha256 = "sha256-LzmSew51+DyqqGyyMw2fbXeBluCiCYsS1nCjt9hX6zo="; + }) + (prev.patches or [ ]); +}) diff --git a/pkgs/development/compilers/corretto/19.nix b/pkgs/development/compilers/corretto/19.nix index ea1fcc1aee1bd..0674b63f21dfa 100644 --- a/pkgs/development/compilers/corretto/19.nix +++ b/pkgs/development/compilers/corretto/19.nix @@ -1,5 +1,4 @@ -{ corretto19 -, fetchFromGitHub +{ fetchFromGitHub , gradle_7 , jdk19 , lib @@ -10,7 +9,7 @@ }: let - corretto = import ./mk-corretto.nix { + corretto = import ./mk-corretto.nix rec { inherit lib stdenv rsync runCommand testers; jdk = jdk19; gradle = gradle_7; @@ -18,7 +17,7 @@ let src = fetchFromGitHub { owner = "corretto"; repo = "corretto-19"; - rev = "72f064a1d716272bd17d4e425d4a264b2c2c7d36"; + rev = version; sha256 = "sha256-mEj/MIbdXU0+fF5RhqjPuSeyclstesGaXB0e48YlKuw="; }; }; diff --git a/pkgs/development/compilers/corretto/21.nix b/pkgs/development/compilers/corretto/21.nix index fed3aa05f7a04..9656ace73cef5 100644 --- a/pkgs/development/compilers/corretto/21.nix +++ b/pkgs/development/compilers/corretto/21.nix @@ -10,7 +10,7 @@ }: let - corretto = import ./mk-corretto.nix { + corretto = import ./mk-corretto.nix rec { inherit lib stdenv rsync runCommand testers; jdk = jdk21; gradle = gradle_7; @@ -18,7 +18,7 @@ let src = fetchFromGitHub { owner = "corretto"; repo = "corretto-21"; - rev = "97b366227b4dc8f5a89bbedea88b0b18c9e21886"; + rev = version; sha256 = "sha256-V8UDyukDCQVTWUg4IpSKoY0qnnQ5fePbm3rxcw06Vr0="; }; }; diff --git a/pkgs/development/compilers/crystal/default.nix b/pkgs/development/compilers/crystal/default.nix index f36ce4c258536..c95298cbfe2a9 100644 --- a/pkgs/development/compilers/crystal/default.nix +++ b/pkgs/development/compilers/crystal/default.nix @@ -249,7 +249,7 @@ let meta = with lib; { inherit (binary.meta) platforms; - description = "A compiled language with Ruby like syntax and type inference"; + description = "Compiled language with Ruby like syntax and type inference"; mainProgram = "crystal"; homepage = "https://crystal-lang.org/"; license = licenses.asl20; diff --git a/pkgs/development/compilers/dart/sources.nix b/pkgs/development/compilers/dart/sources.nix index f4cce2eb2f938..b9b7d689116a3 100644 --- a/pkgs/development/compilers/dart/sources.nix +++ b/pkgs/development/compilers/dart/sources.nix @@ -1,24 +1,24 @@ -let version = "3.3.4"; in +let version = "3.4.2"; in { fetchurl }: { versionUsed = version; "${version}-x86_64-darwin" = fetchurl { url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${version}/sdk/dartsdk-macos-x64-release.zip"; - sha256 = "0jicbpdhwlag51wgjbaxicj3mpvjnxx35g10ji1v8vxzas8msa32"; + sha256 = "1xg2pqmn268yi3b1hc6qky0fzhx38785x70v77px5x3fhzjvh5rs"; }; "${version}-aarch64-darwin" = fetchurl { url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${version}/sdk/dartsdk-macos-arm64-release.zip"; - sha256 = "0l8bsrhk7ycb7q2b3w4j76qkab4py2m535qa466xj6nwlyi99i81"; + sha256 = "1ybbxg6hkwdqva2xjl9srifrfryy6vacgv20lvmkhrqn59yl7m66"; }; "${version}-aarch64-linux" = fetchurl { url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${version}/sdk/dartsdk-linux-arm64-release.zip"; - sha256 = "1jdx0sk3356rn3ik9pfx19fc8ppjivcsnk1c44s72wg83ml3yiy3"; + sha256 = "1pnh2jm29n0hvsj1gp4abm3dcq2mqagcf489ghbx6my1mhif232f"; }; "${version}-x86_64-linux" = fetchurl { url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${version}/sdk/dartsdk-linux-x64-release.zip"; - sha256 = "1cm710bifr2g04h520a8r8jz75ndy4apr1y4kljknvyfc0m94wv7"; + sha256 = "0hsrzgl3xn3lmps5cnp1yr8fvzzy19gj7pgdn22dabx52lx0x9j3"; }; "${version}-i686-linux" = fetchurl { url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${version}/sdk/dartsdk-linux-ia32-release.zip"; - sha256 = "0j5j582lvlwdaqznb8bi96x3sck13l82l0p627bqpn6nm5qv21sj"; + sha256 = "05ldjy3vhl8bhkyjmyq6yxwd503i0jk4vzkd2jk201yzwzwkjpvf"; }; } diff --git a/pkgs/development/compilers/djgpp/default.nix b/pkgs/development/compilers/djgpp/default.nix index 1dabc225d9a42..f212e419840ea 100644 --- a/pkgs/development/compilers/djgpp/default.nix +++ b/pkgs/development/compilers/djgpp/default.nix @@ -92,7 +92,7 @@ stdenv.mkDerivation rec { ''; meta = { - description = "A complete 32-bit GNU-based development system for Intel x86 PCs running DOS"; + description = "Complete 32-bit GNU-based development system for Intel x86 PCs running DOS"; homepage = "https://www.delorie.com/djgpp/"; license = lib.licenses.gpl2Plus; maintainers = with lib.maintainers; [ hughobrien ]; diff --git a/pkgs/development/compilers/dotnet/8/deps.nix b/pkgs/development/compilers/dotnet/8/deps.nix index c38b748b20b64..11e45f1d79c39 100644 --- a/pkgs/development/compilers/dotnet/8/deps.nix +++ b/pkgs/development/compilers/dotnet/8/deps.nix @@ -1,10 +1,10 @@ { fetchNuGet }: [ - (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.ILAsm"; sha256 = "82be279b43a39011b6b4e3cbd46565a407ed6d263a037d2298e6401addafa9b9"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a65e5cb4-26c0-410f-9457-06db3c5254be/nuget/v3/flat2/runtime.linux-arm64.microsoft.netcore.ilasm/8.0.3-servicing.24114.23/runtime.linux-arm64.microsoft.netcore.ilasm.8.0.3-servicing.24114.23.nupkg"; version = "8.0.3-servicing.24114.23"; }) - (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.ILDAsm"; sha256 = "773d55eb6a015a74328e9ed3b14821940b9fe4679ca43c837815891dfc3e2611"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a65e5cb4-26c0-410f-9457-06db3c5254be/nuget/v3/flat2/runtime.linux-arm64.microsoft.netcore.ildasm/8.0.3-servicing.24114.23/runtime.linux-arm64.microsoft.netcore.ildasm.8.0.3-servicing.24114.23.nupkg"; version = "8.0.3-servicing.24114.23"; }) - (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.ILAsm"; sha256 = "0ckmdww2fcir6s91rj9yr4bfx5ix0xdv96yszipgcw23zlv2xkci"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a65e5cb4-26c0-410f-9457-06db3c5254be/nuget/v3/flat2/runtime.linux-x64.microsoft.netcore.ilasm/8.0.3-servicing.24114.23/runtime.linux-x64.microsoft.netcore.ilasm.8.0.3-servicing.24114.23.nupkg"; version = "8.0.3-servicing.24114.23"; }) - (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.ILDAsm"; sha256 = "0qqsbj61rw69l2idakbqfl55a44maklav1csdk8a2gcz6a32riab"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a65e5cb4-26c0-410f-9457-06db3c5254be/nuget/v3/flat2/runtime.linux-x64.microsoft.netcore.ildasm/8.0.3-servicing.24114.23/runtime.linux-x64.microsoft.netcore.ildasm.8.0.3-servicing.24114.23.nupkg"; version = "8.0.3-servicing.24114.23"; }) - (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.ILAsm"; sha256 = "b5d819e6bd3659ecc18b03c5ba0a425dc72645d7b14dcd768df914ae4348dd44"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a65e5cb4-26c0-410f-9457-06db3c5254be/nuget/v3/flat2/runtime.osx-arm64.microsoft.netcore.ilasm/8.0.3-servicing.24114.23/runtime.osx-arm64.microsoft.netcore.ilasm.8.0.3-servicing.24114.23.nupkg"; version = "8.0.3-servicing.24114.23"; }) - (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.ILDAsm"; sha256 = "316473b799e05f6fb6e5f3aaf17fcb5842155cd3fa8853dc31882e0521747e9e"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a65e5cb4-26c0-410f-9457-06db3c5254be/nuget/v3/flat2/runtime.osx-arm64.microsoft.netcore.ildasm/8.0.3-servicing.24114.23/runtime.osx-arm64.microsoft.netcore.ildasm.8.0.3-servicing.24114.23.nupkg"; version = "8.0.3-servicing.24114.23"; }) - (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.ILAsm"; sha256 = "191b604c2e06b6a7bc2706455df3cb8e38eb6168fa1433459eda61357821b73e"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a65e5cb4-26c0-410f-9457-06db3c5254be/nuget/v3/flat2/runtime.osx-x64.microsoft.netcore.ilasm/8.0.3-servicing.24114.23/runtime.osx-x64.microsoft.netcore.ilasm.8.0.3-servicing.24114.23.nupkg"; version = "8.0.3-servicing.24114.23"; }) - (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.ILDAsm"; sha256 = "0f76a150908c05152314f4d3e591040de757983b7940cadac3fb3ead75fdb9cf"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a65e5cb4-26c0-410f-9457-06db3c5254be/nuget/v3/flat2/runtime.osx-x64.microsoft.netcore.ildasm/8.0.3-servicing.24114.23/runtime.osx-x64.microsoft.netcore.ildasm.8.0.3-servicing.24114.23.nupkg"; version = "8.0.3-servicing.24114.23"; }) + (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.ILAsm"; sha256 = "4ceb7c65d355ac08753d7e255ded7261c9e3d6a3692c4641eda432d84cc5c2ef"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a65e5cb4-26c0-410f-9457-06db3c5254be/nuget/v3/flat2/runtime.linux-arm64.microsoft.netcore.ilasm/8.0.4-servicing.24169.9/runtime.linux-arm64.microsoft.netcore.ilasm.8.0.4-servicing.24169.9.nupkg"; version = "8.0.4-servicing.24169.9"; }) + (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.ILDAsm"; sha256 = "467caa1c74ac499a0359b813a54fcf07f664f543e2b495f33213fe5500355494"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a65e5cb4-26c0-410f-9457-06db3c5254be/nuget/v3/flat2/runtime.linux-arm64.microsoft.netcore.ildasm/8.0.4-servicing.24169.9/runtime.linux-arm64.microsoft.netcore.ildasm.8.0.4-servicing.24169.9.nupkg"; version = "8.0.4-servicing.24169.9"; }) + (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.ILAsm"; sha256 = "0q669pidvv27vll5xpap08c2askmaqggsky00ia1d00f3bnnfxbr"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a65e5cb4-26c0-410f-9457-06db3c5254be/nuget/v3/flat2/runtime.linux-x64.microsoft.netcore.ilasm/8.0.4-servicing.24169.9/runtime.linux-x64.microsoft.netcore.ilasm.8.0.4-servicing.24169.9.nupkg"; version = "8.0.4-servicing.24169.9"; }) + (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.ILDAsm"; sha256 = "03q3c45cn8vy3qb9q1b8m965j5z9cg9x9ja0l6271lkr4fq72qp4"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a65e5cb4-26c0-410f-9457-06db3c5254be/nuget/v3/flat2/runtime.linux-x64.microsoft.netcore.ildasm/8.0.4-servicing.24169.9/runtime.linux-x64.microsoft.netcore.ildasm.8.0.4-servicing.24169.9.nupkg"; version = "8.0.4-servicing.24169.9"; }) + (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.ILAsm"; sha256 = "5f84f02ef53e9e05fafddf0ef2a249d5a7990c458c90f42b365cd8b9397b2e8e"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a65e5cb4-26c0-410f-9457-06db3c5254be/nuget/v3/flat2/runtime.osx-arm64.microsoft.netcore.ilasm/8.0.4-servicing.24169.9/runtime.osx-arm64.microsoft.netcore.ilasm.8.0.4-servicing.24169.9.nupkg"; version = "8.0.4-servicing.24169.9"; }) + (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.ILDAsm"; sha256 = "171f006df766e439a3080496dd6e4899649e52085ca6afdb375caa57d04eb998"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a65e5cb4-26c0-410f-9457-06db3c5254be/nuget/v3/flat2/runtime.osx-arm64.microsoft.netcore.ildasm/8.0.4-servicing.24169.9/runtime.osx-arm64.microsoft.netcore.ildasm.8.0.4-servicing.24169.9.nupkg"; version = "8.0.4-servicing.24169.9"; }) + (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.ILAsm"; sha256 = "5e1652bd1d0194300849ffaf1ef3371795f8d63889e685c2ef74434c33608f1e"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a65e5cb4-26c0-410f-9457-06db3c5254be/nuget/v3/flat2/runtime.osx-x64.microsoft.netcore.ilasm/8.0.4-servicing.24169.9/runtime.osx-x64.microsoft.netcore.ilasm.8.0.4-servicing.24169.9.nupkg"; version = "8.0.4-servicing.24169.9"; }) + (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.ILDAsm"; sha256 = "e3b4ef11f3f8f625730fad3f59aa84a82c63f1921eb4145109723cd9f458e20b"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a65e5cb4-26c0-410f-9457-06db3c5254be/nuget/v3/flat2/runtime.osx-x64.microsoft.netcore.ildasm/8.0.4-servicing.24169.9/runtime.osx-x64.microsoft.netcore.ildasm.8.0.4-servicing.24169.9.nupkg"; version = "8.0.4-servicing.24169.9"; }) ] diff --git a/pkgs/development/compilers/dotnet/8/release-info.json b/pkgs/development/compilers/dotnet/8/release-info.json index 60992556a837b..cc1ea74ed3549 100644 --- a/pkgs/development/compilers/dotnet/8/release-info.json +++ b/pkgs/development/compilers/dotnet/8/release-info.json @@ -1,5 +1,5 @@ { - "tarballHash": "sha256-GCzqK/3KGbwTRTwnwZFUCBIQnp8f0bjuUrDNTCghXyQ=", - "artifactsUrl": "https://dotnetcli.azureedge.net/source-built-artifacts/assets/Private.SourceBuilt.Artifacts.8.0.103-servicing.24117.1.centos.8-x64.tar.gz", - "artifactsHash": "sha256-6t7vjX/MQVp7Mk1c9v5sjcwwLUImLPdD/bvnT5ZGBEs=" + "tarballHash": "sha256-BC1K5hjTdhdEYGkC32gXDfdR6A3WVBVvTKqbslE40fc=", + "artifactsUrl": "https://dotnetcli.azureedge.net/source-built-artifacts/assets/Private.SourceBuilt.Artifacts.8.0.104-servicing.24171.1.centos.8-x64.tar.gz", + "artifactsHash": "sha256-+ft4PIFOwfv5Z8VqW6bt71LP/HuvTWRTDYnB71Ti0O8=" } diff --git a/pkgs/development/compilers/dotnet/8/release.json b/pkgs/development/compilers/dotnet/8/release.json index 9a63353dcb4b8..9aa1bd7305be7 100644 --- a/pkgs/development/compilers/dotnet/8/release.json +++ b/pkgs/development/compilers/dotnet/8/release.json @@ -1,10 +1,10 @@ { - "release": "8.0.4", + "release": "8.0.6", "channel": "8.0", - "tag": "v8.0.4", - "sdkVersion": "8.0.104", - "runtimeVersion": "8.0.4", - "aspNetCoreVersion": "8.0.4", + "tag": "v8.0.6", + "sdkVersion": "8.0.106", + "runtimeVersion": "8.0.6", + "aspNetCoreVersion": "8.0.6", "sourceRepository": "https://github.com/dotnet/dotnet", - "sourceVersion": "83659133a1aa2b2d94f9c4ecebfa10d960e27706" + "sourceVersion": "64c5c1aee8dc1faa16021350fcdd0bba15004160" } diff --git a/pkgs/development/compilers/dotnet/9/deps.nix b/pkgs/development/compilers/dotnet/9/deps.nix index d1dcc2bf54dde..969b92810ebf2 100644 --- a/pkgs/development/compilers/dotnet/9/deps.nix +++ b/pkgs/development/compilers/dotnet/9/deps.nix @@ -1,10 +1,10 @@ { fetchNuGet }: [ - (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.ILAsm"; sha256 = "83ea1b2eaf1035365d25ed1119e7c69f72893b9ece82a0771b1f2e342a23bdf3"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.linux-arm64.microsoft.netcore.ilasm/9.0.0-preview.2.24080.1/runtime.linux-arm64.microsoft.netcore.ilasm.9.0.0-preview.2.24080.1.nupkg"; version = "9.0.0-preview.2.24080.1"; }) - (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.ILDAsm"; sha256 = "96166f18c89084cd4b11dd2cd5cb949d088dd33f1c3446ba95c74b2c88273a22"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.linux-arm64.microsoft.netcore.ildasm/9.0.0-preview.2.24080.1/runtime.linux-arm64.microsoft.netcore.ildasm.9.0.0-preview.2.24080.1.nupkg"; version = "9.0.0-preview.2.24080.1"; }) - (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.ILAsm"; sha256 = "09nd4ymm06cqia4r5laikgfffjhjk5m4c1snlz6sbpa29nhh5smr"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.linux-x64.microsoft.netcore.ilasm/9.0.0-preview.2.24080.1/runtime.linux-x64.microsoft.netcore.ilasm.9.0.0-preview.2.24080.1.nupkg"; version = "9.0.0-preview.2.24080.1"; }) - (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.ILDAsm"; sha256 = "0iarbcblf33lcx19xgaa40bjgfsrskfp1205kpl4pv1jw3l4hgkd"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.linux-x64.microsoft.netcore.ildasm/9.0.0-preview.2.24080.1/runtime.linux-x64.microsoft.netcore.ildasm.9.0.0-preview.2.24080.1.nupkg"; version = "9.0.0-preview.2.24080.1"; }) - (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.ILAsm"; sha256 = "5ff20db7bef1c0adb9473a71b95dcfc02034fa40295fdf6bcbd826027d51d47d"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.osx-arm64.microsoft.netcore.ilasm/9.0.0-preview.2.24080.1/runtime.osx-arm64.microsoft.netcore.ilasm.9.0.0-preview.2.24080.1.nupkg"; version = "9.0.0-preview.2.24080.1"; }) - (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.ILDAsm"; sha256 = "7e91613aeda779d2722f818ce137f5c969b7b05888db204d50c32e403ec4729b"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.osx-arm64.microsoft.netcore.ildasm/9.0.0-preview.2.24080.1/runtime.osx-arm64.microsoft.netcore.ildasm.9.0.0-preview.2.24080.1.nupkg"; version = "9.0.0-preview.2.24080.1"; }) - (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.ILAsm"; sha256 = "d38c42cd85d1491a6db85e2800c5a4c19d14580968074a1ff2248b3ea3a0b57a"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.osx-x64.microsoft.netcore.ilasm/9.0.0-preview.2.24080.1/runtime.osx-x64.microsoft.netcore.ilasm.9.0.0-preview.2.24080.1.nupkg"; version = "9.0.0-preview.2.24080.1"; }) - (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.ILDAsm"; sha256 = "0d4879e7d02cdd818ff97f1cb1400ef00ad253691d561a354d34606e818e9c21"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.osx-x64.microsoft.netcore.ildasm/9.0.0-preview.2.24080.1/runtime.osx-x64.microsoft.netcore.ildasm.9.0.0-preview.2.24080.1.nupkg"; version = "9.0.0-preview.2.24080.1"; }) + (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.ILAsm"; sha256 = "5f3c7c39b0cc257afdf7a72e4ce8def0467bb7a857cb255dda34adc58c3b76e8"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.linux-arm64.microsoft.netcore.ilasm/9.0.0-preview.5.24256.1/runtime.linux-arm64.microsoft.netcore.ilasm.9.0.0-preview.5.24256.1.nupkg"; version = "9.0.0-preview.5.24256.1"; }) + (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.ILDAsm"; sha256 = "0ab21ff07d4321d9c4d0de0371d85265adbd8854d3d467ab8be92baf48be295a"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.linux-arm64.microsoft.netcore.ildasm/9.0.0-preview.5.24256.1/runtime.linux-arm64.microsoft.netcore.ildasm.9.0.0-preview.5.24256.1.nupkg"; version = "9.0.0-preview.5.24256.1"; }) + (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.ILAsm"; sha256 = "1f65al2nk2qzip1k8hjx6i9ls4sbx86qv0pbvaswambxqd4rc7dj"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.linux-x64.microsoft.netcore.ilasm/9.0.0-preview.5.24256.1/runtime.linux-x64.microsoft.netcore.ilasm.9.0.0-preview.5.24256.1.nupkg"; version = "9.0.0-preview.5.24256.1"; }) + (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.ILDAsm"; sha256 = "1dlhchclghq19ryb0sz6md77y1hbkhd9p1wig8fg57im04w62s1n"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.linux-x64.microsoft.netcore.ildasm/9.0.0-preview.5.24256.1/runtime.linux-x64.microsoft.netcore.ildasm.9.0.0-preview.5.24256.1.nupkg"; version = "9.0.0-preview.5.24256.1"; }) + (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.ILAsm"; sha256 = "83af33efeb28280b2af68fea1dd84c087095420a2c21a1f439bc0cdeef9b8c47"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.osx-arm64.microsoft.netcore.ilasm/9.0.0-preview.5.24256.1/runtime.osx-arm64.microsoft.netcore.ilasm.9.0.0-preview.5.24256.1.nupkg"; version = "9.0.0-preview.5.24256.1"; }) + (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.ILDAsm"; sha256 = "b77560cd71f013fe211aaf1f3c300a53a123b1e1d852059675b5aa5d7e20ac94"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.osx-arm64.microsoft.netcore.ildasm/9.0.0-preview.5.24256.1/runtime.osx-arm64.microsoft.netcore.ildasm.9.0.0-preview.5.24256.1.nupkg"; version = "9.0.0-preview.5.24256.1"; }) + (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.ILAsm"; sha256 = "0f85a64c48baa58f6ef66bffba85689c5c698d390092ab5d0a71ce02d65a37be"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.osx-x64.microsoft.netcore.ilasm/9.0.0-preview.5.24256.1/runtime.osx-x64.microsoft.netcore.ilasm.9.0.0-preview.5.24256.1.nupkg"; version = "9.0.0-preview.5.24256.1"; }) + (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.ILDAsm"; sha256 = "077f88a286227e1bef45ccb166fe3ffcb7bbcb8dc8d56956e0ffe775e45f49ad"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.osx-x64.microsoft.netcore.ildasm/9.0.0-preview.5.24256.1/runtime.osx-x64.microsoft.netcore.ildasm.9.0.0-preview.5.24256.1.nupkg"; version = "9.0.0-preview.5.24256.1"; }) ] diff --git a/pkgs/development/compilers/dotnet/9/release-info.json b/pkgs/development/compilers/dotnet/9/release-info.json index 584fa364f8c75..2722b9bc079d8 100644 --- a/pkgs/development/compilers/dotnet/9/release-info.json +++ b/pkgs/development/compilers/dotnet/9/release-info.json @@ -1,5 +1,5 @@ { - "tarballHash": "sha256-RbKpnIwSVPhOFCMGtm+Q6p1m0tiAEAV8YwAdIobzMXA=", - "artifactsUrl": "https://dotnetcli.azureedge.net/source-built-artifacts/assets/Private.SourceBuilt.Artifacts.9.0.100-preview.2.24104.1.centos.8-x64.tar.gz", - "artifactsHash": "sha256-Ou1Efq+iWhsqsIDNPZeceoyxGhBST7MOQNpSrWUUKRI=" + "tarballHash": "sha256-RD63MT28wOY+EjN8mlGrhKenAdvoSnzHYqzqyvWmZSI=", + "artifactsUrl": "https://dotnetcli.azureedge.net/source-built-artifacts/assets/Private.SourceBuilt.Artifacts.9.0.100-preview.5.24257.1.centos.9-x64.tar.gz", + "artifactsHash": "sha256-SHhAFlSlRRoUIR/qCox71t5d1PaqSPcfiCSvRiSpDMw=" } diff --git a/pkgs/development/compilers/dotnet/9/release.json b/pkgs/development/compilers/dotnet/9/release.json index 3e600587f0747..8777362f335c1 100644 --- a/pkgs/development/compilers/dotnet/9/release.json +++ b/pkgs/development/compilers/dotnet/9/release.json @@ -1,10 +1,10 @@ { - "release": "9.0.0-preview.2", + "release": "9.0.0-preview.5", "channel": "9.0", - "tag": "v9.0.0-preview.2.24128.5", - "sdkVersion": "9.0.100-preview.2.24158.1", - "runtimeVersion": "9.0.0-preview.2.24128.5", - "aspnetcoreRuntimeVersion": "9.0.0-preview.2.24128.4", + "tag": "v9.0.0-preview.5.24306.7", + "sdkVersion": "9.0.100-preview.5.24307.1", + "runtimeVersion": "9.0.0-preview.5.24306.7", + "aspNetCoreVersion": "9.0.0-preview.5.24306.11", "sourceRepository": "https://github.com/dotnet/dotnet", - "sourceVersion": "14eb446d301de0fa50afd32daf0dcbf1b3716ae5" + "sourceVersion": "78f4e02d8b749da1168368a232b858448545928f" } diff --git a/pkgs/development/compilers/dotnet/build-dotnet.nix b/pkgs/development/compilers/dotnet/build-dotnet.nix index f6802e62c70d1..11ece53971662 100644 --- a/pkgs/development/compilers/dotnet/build-dotnet.nix +++ b/pkgs/development/compilers/dotnet/build-dotnet.nix @@ -26,6 +26,7 @@ assert if type == "sdk" then packages != null else true; , mkNugetDeps , callPackage , dotnetCorePackages +, xmlstarlet }: let @@ -47,6 +48,9 @@ let targetRid = dotnetCorePackages.systemToDotnetRid stdenv.targetPlatform.system; + sigtool = callPackage ./sigtool.nix {}; + signAppHost = callPackage ./sign-apphost.nix {}; + in mkCommon type rec { inherit pname version; @@ -54,7 +58,11 @@ mkCommon type rec { # Some of these dependencies are `dlopen()`ed. nativeBuildInputs = [ makeWrapper - ] ++ lib.optional stdenv.isLinux autoPatchelfHook; + ] ++ lib.optional stdenv.isLinux autoPatchelfHook + ++ lib.optionals (type == "sdk" && stdenv.isDarwin) [ + xmlstarlet + sigtool + ]; buildInputs = [ stdenv.cc.cc @@ -71,6 +79,16 @@ mkCommon type rec { sourceRoot = "."; + postPatch = if type == "sdk" && stdenv.isDarwin then '' + xmlstarlet ed \ + --inplace \ + -s //_:Project -t elem -n Import \ + -i \$prev -t attr -n Project -v "${signAppHost}" \ + sdk/*/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets + + codesign --remove-signature packs/Microsoft.NETCore.App.Host.osx-*/*/runtimes/osx-*/native/{apphost,singlefilehost} + '' else null; + dontPatchELF = true; noDumpEnvVars = true; @@ -108,6 +126,14 @@ mkCommon type rec { $out/packs/Microsoft.NETCore.App.Host.${targetRid}/*/runtimes/${targetRid}/native/*host ''; + # fixes: Could not load ICU data. UErrorCode: 2 + propagatedSandboxProfile = lib.optionalString stdenv.isDarwin '' + (allow file-read* (subpath "/usr/share/icu")) + (allow file-read* (subpath "/private/var/db/mds/system")) + (allow mach-lookup (global-name "com.apple.SecurityServer") + (global-name "com.apple.system.opendirectoryd.membership")) + ''; + passthru = { inherit icu; } // lib.optionalAttrs (type == "sdk") { diff --git a/pkgs/development/compilers/dotnet/common.nix b/pkgs/development/compilers/dotnet/common.nix index 49f3e3be4d779..e26fd0e337708 100644 --- a/pkgs/development/compilers/dotnet/common.nix +++ b/pkgs/development/compilers/dotnet/common.nix @@ -50,9 +50,18 @@ runtime ? finalAttrs.finalPackage, runInputs ? [], run ? null, + runAllowNetworking ? false, }: let - built = runCommand "dotnet-test-${name}" { buildInputs = [ finalAttrs.finalPackage ]; } ('' + sdk = finalAttrs.finalPackage; + built = runCommand "dotnet-test-${name}" { + buildInputs = [ sdk ]; + # make sure ICU works in a sandbox + propagatedSandboxProfile = toString sdk.__propagatedSandboxProfile + '' + (allow network-inbound (local ip)) + (allow mach-lookup (global-name "com.apple.FSEvents")) + ''; + } ('' HOME=$PWD/.home dotnet new nugetconfig dotnet nuget disable source nuget @@ -65,11 +74,19 @@ if run == null then built else - runCommand "${built.name}-run" { src = built; nativeBuildInputs = runInputs; } ( - lib.optionalString (runtime != null) '' - # TODO: use runtime here - export DOTNET_ROOT=${runtime} - '' + run); + runCommand "${built.name}-run" ({ + src = built; + nativeBuildInputs = [ built ] ++ runInputs; + } // lib.optionalAttrs (stdenv.isDarwin && runAllowNetworking) { + sandboxProfile = '' + (allow network-inbound (local ip)) + (allow mach-lookup (global-name "com.apple.FSEvents")) + ''; + __darwinAllowLocalNetworking = true; + }) (lib.optionalString (runtime != null) '' + # TODO: use runtime here + export DOTNET_ROOT=${runtime} + '' + run); # Setting LANG to something other than 'C' forces the runtime to search # for ICU, which will be required in most user environments. @@ -127,6 +144,7 @@ expect <<"EOF" set status 1 spawn $env(src)/test + proc abort { } { exit 2 } expect_before default abort expect -re {Now listening on: ([^\r]+)\r} { set url $expect_out(1,string) @@ -138,11 +156,14 @@ exit 1 } send \x03 + expect_before timeout abort + expect eof catch wait result exit [lindex $result 3] EOF touch $out ''; + runAllowNetworking = true; }; } // args.passthru.tests or {}; } // args.passthru or {}; diff --git a/pkgs/development/compilers/dotnet/packages.nix b/pkgs/development/compilers/dotnet/packages.nix index c7a8e048121e0..4ce789e00b912 100644 --- a/pkgs/development/compilers/dotnet/packages.nix +++ b/pkgs/development/compilers/dotnet/packages.nix @@ -71,7 +71,7 @@ in { aspnetcore = mkCommon "aspnetcore" rec { pname = "dotnet-aspnetcore-runtime"; - version = releaseManifest.aspnetcoreRuntimeVersion or releaseManifest.runtimeVersion; + version = releaseManifest.aspNetCoreVersion or releaseManifest.runtimeVersion; src = vmr; dontUnpack = true; diff --git a/pkgs/development/compilers/dotnet/patch-restored-packages.proj b/pkgs/development/compilers/dotnet/patch-restored-packages.proj index bef12d6308f94..17afb946565f1 100644 --- a/pkgs/development/compilers/dotnet/patch-restored-packages.proj +++ b/pkgs/development/compilers/dotnet/patch-restored-packages.proj @@ -1,8 +1,8 @@ <Project> <Target Name="PatchIlasm" AfterTargets="ResolveIlToolPaths"> - <Exec Command="patch-nupkgs $(NUGET_PACKAGES) 2>&1"/> + <Exec Command="patch-nupkgs '$(NUGET_PACKAGES)' 2>&1"/> </Target> <Target Name="PatchCrossgen" AfterTargets="Restore;_PrepareForReadyToRunCompilation;PrepareForCrossGen"> - <Exec Command="patch-nupkgs $(NUGET_PACKAGES) 2>&1"/> + <Exec Command="patch-nupkgs '$(NUGET_PACKAGES)' 2>&1"/> </Target> </Project> diff --git a/pkgs/development/compilers/dotnet/stage0.nix b/pkgs/development/compilers/dotnet/stage0.nix index e0caad3f9a674..5806a5ee6de82 100644 --- a/pkgs/development/compilers/dotnet/stage0.nix +++ b/pkgs/development/compilers/dotnet/stage0.nix @@ -25,8 +25,6 @@ let patchNupkgs = pkgsBuildHost.callPackage ./patch-nupkgs.nix {}; - signAppHost = callPackage ./sign-apphost.nix {}; - deps = mkNugetDeps { name = "dotnet-vmr-deps"; sourceFile = depsFile; @@ -51,12 +49,6 @@ let -s //Project -t elem -n Import \ -i \$prev -t attr -n Project -v "${./patch-restored-packages.proj}" \ src/*/Directory.Build.targets - '' + lib.optionalString stdenv.isDarwin '' - xmlstarlet ed \ - --inplace \ - -s //Project -t elem -n Import \ - -i \$prev -t attr -n Project -v "${signAppHost}" \ - src/runtime/Directory.Build.targets ''; postConfigure = old.postConfigure or "" + '' diff --git a/pkgs/development/compilers/dotnet/update.nix b/pkgs/development/compilers/dotnet/update.nix index 29206ecbe7682..58304188afa8d 100644 --- a/pkgs/development/compilers/dotnet/update.nix +++ b/pkgs/development/compilers/dotnet/update.nix @@ -101,7 +101,7 @@ in writeScript "update-dotnet-vmr.sh" '' | .[] | .PrivateSourceBuiltArtifactsVersion' eng/Versions.props) if [[ "$artifactsVersion" != "" ]]; then - artifactsUrl=https://dotnetcli.azureedge.net/source-built-artifacts/assets/Private.SourceBuilt.Artifacts.$artifactsVersion.centos.8-x64.tar.gz + artifactsUrl=https://dotnetcli.azureedge.net/source-built-artifacts/assets/Private.SourceBuilt.Artifacts.$artifactsVersion.centos.9-x64.tar.gz else artifactsUrl=$(xq -r '.Project.PropertyGroup | map(select(.PrivateSourceBuiltArtifactsUrl)) diff --git a/pkgs/development/compilers/dotnet/versions/6.0.nix b/pkgs/development/compilers/dotnet/versions/6.0.nix index 1e4331ea48054..56320767e7c74 100644 --- a/pkgs/development/compilers/dotnet/versions/6.0.nix +++ b/pkgs/development/compilers/dotnet/versions/6.0.nix @@ -4,202 +4,202 @@ let packages = { fetchNuGet }: [ - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm"; version = "6.0.29"; sha256 = "1ww2rsf46bm3mrgq590ky2q2qdxx9q63my661xff24f0s4h2iy7r"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm64"; version = "6.0.29"; sha256 = "1kkyqzlmhmms1nl08hlrss75lc8yy8qvb0kx23x0fg1dmyqnnzmw"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-arm64"; version = "6.0.29"; sha256 = "02yxbf6s8ncxl5gp2yq7dl08p2i3iy21bjahy9bpw44cqwcf9crs"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-x64"; version = "6.0.29"; sha256 = "0wdy09kilnasa64jad3j2piggr7iad9z1jhxc24vchq9nalhdbxk"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; version = "6.0.29"; sha256 = "0z359wbz3014rwz7cdcr60qr6mrcwsbwwh36g59a5hncxb1g73rj"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-x64"; version = "6.0.29"; sha256 = "031kalc7mp8w35rwvnb13jbwwi8cgmny7nywsk3717iy6blxldih"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-arm64"; version = "6.0.29"; sha256 = "04zs1sgfxnlbd9csalxlzciwapz64mn4d284l6qr0yj12v6jjzyz"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x64"; version = "6.0.29"; sha256 = "0byixcrwj7ixz60lvg7c6r3f132br4pfrjv0w0fh99b3iwzrf114"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x86"; version = "6.0.29"; sha256 = "08s37g8x0m6ck862cy44g1khp3ncynk7z9czbknpa4fw8s24g4mz"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-arm"; version = "6.0.29"; sha256 = "0lbmyxancwikzhiqhyvlv8vd1868fj0yjchm6kby58b6x7h9fawb"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Ref"; version = "6.0.29"; sha256 = "1ld7aipybxbhwnybimsnhv09ib9ib824zkj11qk3aq7ncz6pfazr"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-arm"; version = "6.0.29"; sha256 = "0yl3i637jhp2si9dls0yd528q9w0cm59w079wyyxgyffyy2g2553"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-arm64"; version = "6.0.29"; sha256 = "0jhcjy60rjwbv2a8qcrkj2im3qv4mvg1ar9gza5199dciigsh968"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm"; version = "6.0.29"; sha256 = "0wy5hs9h0214i2b2jj0yc3r8lr92ai6iszy3llvyzlb4jb5yzgzq"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm64"; version = "6.0.29"; sha256 = "1bxmnw7zmjv1wxggzv7qf27jjfb01f2x8440a67lkzxsnrl0cd4r"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-arm64"; version = "6.0.29"; sha256 = "0q6fwydh0rhm1p8q11zwi7l4qkvw7fh41s4rhfhwx9jn7vxw9adv"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-x64"; version = "6.0.29"; sha256 = "1whzwlnh0cv184smn0ddhd9ssbrlqlj67a12yw4b0l15xsx51n78"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-x64"; version = "6.0.29"; sha256 = "1g9qlb4k3i8zq5kn4y8v7lc9mqhy3ikh2bla30nqv86iwaclrwb7"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-x64"; version = "6.0.29"; sha256 = "03rzclkvl2gc7wakh0xqhnj6zl32b91igrnyhd69pzr3mql5kdll"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-arm64"; version = "6.0.29"; sha256 = "18qk2ahkddzd34zwz4q0gg5cgrcdmg00hlkfxp4h18gyq8i5bc0d"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x64"; version = "6.0.29"; sha256 = "0kh3lrzpz7y42iqa4vdhw4mg51vf4y2x8l4lg767mzbx0sd4xllv"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x86"; version = "6.0.29"; sha256 = "15sz26wgpnfrp9gqspwdhj64lhlnjv8id8s6bblxxkkwa6040ls6"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm"; version = "6.0.29"; sha256 = "0lnq5pqmsgh1fv0q5cxx1bn3lvxmrd4xvx6vsn2mjahzkvpzjgxr"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm64"; version = "6.0.29"; sha256 = "0jzzkdbqikwq96plmwrmjhpv7v6g0l0bz50swbs27vjf45msbj42"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-arm64"; version = "6.0.29"; sha256 = "0ggicsy3zija6v76mv0rddg0ga6spxn4i9skq9fr7s6a9xccbgqb"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-x64"; version = "6.0.29"; sha256 = "17ma2g0j6klpbnxbv402f8hn1rrvq52f3s9wkz8zllh7zbsqin69"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-x64"; version = "6.0.29"; sha256 = "0gv5dnd44xj1yidzd70b01s5a19khbq757llkfykgwf7wl4a89cf"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-x64"; version = "6.0.29"; sha256 = "1bk2n7csgnvqma5yv550037xg4ph4j11gp4m5hn7s4sy23cfc5xp"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-arm64"; version = "6.0.29"; sha256 = "1k4jkjqrbgsnn8r220vh82s20b38h5hrks579a48bsv1288i0zhn"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x64"; version = "6.0.29"; sha256 = "0hhypwr4202n8nvpz10ac1q48ryjr7d4xj34r4c79mw49fvh1n61"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x86"; version = "6.0.29"; sha256 = "01d27mw1zsfx5wdw7515zg68wvwwl7ia579l7bkkbbzbmbb7n6r4"; }) - (fetchNuGet { pname = "Microsoft.NETCore.DotNetAppHost"; version = "6.0.29"; sha256 = "16cqxd6kh9dvxrbsjj3ls317ql7cwj036gdqnbg31dpcl9qmib47"; }) - (fetchNuGet { pname = "Microsoft.NETCore.DotNetHost"; version = "6.0.29"; sha256 = "1alfbxqjq7jyyh62lbw2szjfchmc32ywh10x48hcjkscnqvn32fv"; }) - (fetchNuGet { pname = "Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.29"; sha256 = "1q9hbz6qv8gx2v0vpv21i6m0m2rw2jk1956gc0ybj5l5fppqfzqr"; }) - (fetchNuGet { pname = "Microsoft.NETCore.DotNetHostResolver"; version = "6.0.29"; sha256 = "1sf3jvbscph4yrljhpiiyyqgw70qcwcym0jb74ql3aw0cr3gqbh5"; }) - (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetAppHost"; version = "6.0.29"; sha256 = "01dvbid18120g6fgxcb79qfz9628qwm0kr5j88mincvdzklz4k9n"; }) - (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetHost"; version = "6.0.29"; sha256 = "15f5mscfmj6cn771wzxqszxfjqx93lvfa2dmdiyg9vx8nyciara5"; }) - (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.29"; sha256 = "05m50dprl9y1jq40z5wicizwdb669nbp942lmnk282rkvga79wh6"; }) - (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.29"; sha256 = "11dnr4r4sj9pzmayavs69f274ba4xvynxh4mj46ynkaiwf423imq"; }) - (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetAppHost"; version = "6.0.29"; sha256 = "1f9m1rqfbz6p8h574f9ylw512w6njvdl1a52hcjcjf4y6wjvwm13"; }) - (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetHost"; version = "6.0.29"; sha256 = "1sk1fdz3d6gm44qsaqavqc1zdl1kjc1m29sk2rlpw4lml1aa527x"; }) - (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.29"; sha256 = "1gly6h5vnmp2h3mj2jqym6nwg3swp8ihsq2s56j1b7mdxjnbhilk"; }) - (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.29"; sha256 = "1hnbr15han7261jjnx6pkyhi3bklyd3sbg24x1yqxac36f7xcvwx"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetAppHost"; version = "6.0.29"; sha256 = "06ip2z9j02ak5nqrbm5vzs6lyv8d1g959xmx2h4b24ddj1zrkid0"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHost"; version = "6.0.29"; sha256 = "0j089aayx9g653agaqbwk9101nxdiy278j1k4yaj20a78bw6cdsm"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.29"; sha256 = "163b5p3mwy6v0lp00ardag41gn90vv25jfkrawwhqvzjx9i7gm6x"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.29"; sha256 = "0j2dwpr1mzm43nvw1lqyqk23gxf0iwx2j6lpffq43dpx5n3bdi0a"; }) - (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetAppHost"; version = "6.0.29"; sha256 = "1ax7sjajicibkz4zdvdx65vjpc4xdd6q88zgcqfi22hvfpcdgbni"; }) - (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHost"; version = "6.0.29"; sha256 = "1rxcxafv84lcmskdlhxa8pvm32fvcgn1vnmcrsksb3g1ibvh1bhv"; }) - (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.29"; sha256 = "03qxxkh1wk3rswssglnhrff6k8pajbjalzp95xyg9pyd0xaq5i4k"; }) - (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.29"; sha256 = "0wq6mjg0apqnvv9axdkvka8c0swap8r4n241kvm7xqrlg88dhlvz"; }) - (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetAppHost"; version = "6.0.29"; sha256 = "0a63sh3i71nwwgw83194k903yc3j9z1wnlnfbcj60w5i3kwifnnp"; }) - (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetHost"; version = "6.0.29"; sha256 = "1by4lbzv90lzl1zrgycrpgrq7b3dkc023npixsihx0sw0vc29s1m"; }) - (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.29"; sha256 = "1pvr7bh9hvg55r4d4yjm5zlqmdnpk5jbi76xjkhw7vdwkp9133rh"; }) - (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.29"; sha256 = "0k7k4rhq5d9d2rwpqppddhdw633509v1dxs9ii2cvk8pz0vcl2ll"; }) - (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetAppHost"; version = "6.0.29"; sha256 = "0mvyfmmsn40cmn7n8mavspflrz2rahfzmqy4f8vnhdfb2pmirbkb"; }) - (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetHost"; version = "6.0.29"; sha256 = "1hyyhbpvzvx56lbbk43vdlajz1x5mb17155j7k0lbnpp29gr2hn9"; }) - (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.29"; sha256 = "0012c5f6qmgvky5bff9gpcwmc9rydhrs9vd0j2hcqggdixcfv5f0"; }) - (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.29"; sha256 = "1a1hvalw80kaw2prixzzjr6s4l2q2q73vibqh09cn0hp09zbsr1g"; }) - (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetAppHost"; version = "6.0.29"; sha256 = "0agminm16ksiplxi3lb7csinzbr7r315wl0a32spyy0qbmzpfv4h"; }) - (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetHost"; version = "6.0.29"; sha256 = "19x3w376180dh7l9rn82rv4jgcfl7rbrc1ckr9x6nbkmldgq8bxq"; }) - (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.29"; sha256 = "1jxxx3zh1hzkfxk9m1pawlcg5h5x8bb6jwj0vxb0cflj3yh9scjr"; }) - (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.29"; sha256 = "03zlldqxlc3ykbapmmvpifik2c3wy3w5k5fnrbjl6ak155iblszj"; }) - (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetAppHost"; version = "6.0.29"; sha256 = "006pk987rmif8kv26l91wchj52r1qad673fdn2vbdmh8qmr4jgp9"; }) - (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetHost"; version = "6.0.29"; sha256 = "13z4lgmkkfkw86d5x3pz80rv85h36sbixckbwja7fxc6wzx11a3h"; }) - (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.29"; sha256 = "0sqcrkdsdih5pjb30r9c4g5bdmvjak4i7s9ji1vx83h2hw71d9x9"; }) - (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.29"; sha256 = "1mmkp6a8xhyfipnafj9nbwlnc3blpkgpbvcnq12znlbjg6wgxqz0"; }) - (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetAppHost"; version = "6.0.29"; sha256 = "1hj6qqfy1vs88j2lksz2bd69ra1nk5vp1rnc9wbrd95qhzq0bg96"; }) - (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetHost"; version = "6.0.29"; sha256 = "0y25zkmm2gwi6kmqyc7ajsjpwyb240x99ipfslxfihan9y8lsjg9"; }) - (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.29"; sha256 = "02l0adv6iy71pyf3j6r3vag8945avq30srwlpc1k0jdfwb0rp4ia"; }) - (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.29"; sha256 = "1405a595p5zdsv0czd5fb75f3w6i4w7d4cxns7ar007dc4dnfzhw"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-arm"; version = "6.0.29"; sha256 = "0hp585dlg26zbqgcla0bz8c26bhspnqwccwimyjg3gs0acymm5aa"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-arm64"; version = "6.0.29"; sha256 = "1al87br8qcdplm9j5n57mni5zbvw71jvwax4kjb4yfcq5c9qwdvy"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-arm"; version = "6.0.29"; sha256 = "1n1sj94xzm3f6qx20hmw9zvz188iaxm76pd34zcyzs7izbw1jyq2"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-arm64"; version = "6.0.29"; sha256 = "00w4cw7blwkqhcg20q9xybs00mrcymgnmki393smn3bc439b8vpn"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Ref"; version = "6.0.29"; sha256 = "0d0xy3zmrlfzc7zk6hpx69mr5b6p28aj944403c7akhzpg1zz2r1"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-arm"; version = "6.0.29"; sha256 = "0n5zb3hghyqk1yizzznx0azdqg7rc19gvzrw5214rhf731jsm4rw"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-arm64"; version = "6.0.29"; sha256 = "110wd98zgddiw0znn6b4hrbsixc8shl9hsjd9gch4vxz1ivbsfm6"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-musl-x64"; version = "6.0.29"; sha256 = "0nrrv68px7xvg7291zsgyw9zzmi3kgcdb24p6cnywmyrrjf1ww0f"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-x64"; version = "6.0.29"; sha256 = "0yviz7fjchd4jg71gbq52c3jpk9jpkcz042hhfpz9rj7wij7m7n6"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.osx-arm64"; version = "6.0.29"; sha256 = "0d4sflclyqwx7p9qlb41xfjcpxhjqy0xgah3kr1wb030apr46ina"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.osx-x64"; version = "6.0.29"; sha256 = "1wl49lg346lhnvn5h2vlb393lasbvbh9hrhvzb1fsi9nnwk6v278"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.win-x64"; version = "6.0.29"; sha256 = "192n0rbnwb13m619i70yiym38pdlsfkfh68qcq2pm7r4q1lhw5jm"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.win-x86"; version = "6.0.29"; sha256 = "0r1sp7jjqz2lh92bfnz6xv2jp3q3m4fabq5m1zbw28q6h945q9mp"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetAppHost"; version = "6.0.29"; sha256 = "1lifcf96r5mqh4n8d7gcrnmql7vyj8q42sbd621yrqk68dg2gyz3"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHost"; version = "6.0.29"; sha256 = "07hsmqrx6yk8rjr8270v1agqfqhl9lw8mgxfsyf6g7anrjc8skrz"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.29"; sha256 = "0iqvqmhncmwl2df6lwlxs3anzpwwy1xhaci4zzq57f67qkiwfh57"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.29"; sha256 = "1ix3672jd5m5n93y6r9gkpvrkc9hpj1jzf0wlpwji25n75mjg2hg"; }) - (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetAppHost"; version = "6.0.29"; sha256 = "1qxr84lqn6pzi1rh3941rgyaiv1shsjrj7pgdzmmd0r06ng49avd"; }) - (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetHost"; version = "6.0.29"; sha256 = "065ih4wls3y3wlcwn61ywjmy08k4abz216kvzg7vhg511qlsi7a5"; }) - (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.29"; sha256 = "0mm7mybfvqymxcgdr9vwbxfdv83dp613gqhlpm4s8v38jy8ndx52"; }) - (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.29"; sha256 = "1gr26qlj7v3j3mf5dhizbmdh69y6rs9hnff0yf3pi1p1fc6pljf0"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-arm"; version = "6.0.29"; sha256 = "0in1hpn7a2dmmrgdzh101idn9nb8x8al1kp2a7s9vx8sk42nvhnw"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-arm64"; version = "6.0.29"; sha256 = "1nzihwz9vyhfhjq2a6ws2kn651mlyq0ki675v9jwkcb0sgabagab"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-x64"; version = "6.0.29"; sha256 = "1k7dcy3w7yjpykspcb3n1j8fjba4f7505gv0zs003dzx7379bnis"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-arm"; version = "6.0.29"; sha256 = "13s195fgy7yymvc9qw71nr1vlphmvyq4gyr982bv1x0ci2mzybh9"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-arm64"; version = "6.0.29"; sha256 = "0vhd537vh7rakxzbgy6fmfr379k5fj8gq4s005fasripv0a8k98n"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-x64"; version = "6.0.29"; sha256 = "12l5i81rqm8mvz1hj1hnrdzbdrv9fzxghcdj9mw7xlcynsmazazz"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.osx-x64"; version = "6.0.29"; sha256 = "1y3mzszv3qa0pqvjpn5y8jykww0pcpj97576gj6m63mw7rlk8vcn"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.osx-arm64"; version = "6.0.29"; sha256 = "0z6lnhq0jmj759z99ph00wxwyvr5dh0mpkqp89mzqi98dpxwlnpb"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-arm"; version = "6.0.29"; sha256 = "1s1j8zivvkpkg088kmr9lfqqxz6zc4753hqhz3grxp850vhv1hzy"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-arm"; version = "6.0.29"; sha256 = "0la7fw19zj4aqa8dlp5pg4bvh1m3fsfa1cnzfw3fm1g17bpq210f"; }) - (fetchNuGet { pname = "runtime.win-arm.Microsoft.NETCore.DotNetAppHost"; version = "6.0.29"; sha256 = "1p4jxlqnc8kf18q005nhywj2ca1d3j3kk5234xbsfhr8j2wx211g"; }) - (fetchNuGet { pname = "runtime.win-arm.Microsoft.NETCore.DotNetHost"; version = "6.0.29"; sha256 = "096cldfkih3c3bs8bi7340yiz4ss0dqb3y90n3rshfhln1mik28y"; }) - (fetchNuGet { pname = "runtime.win-arm.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.29"; sha256 = "1k79s6rbxqhfqsh5yxznnfhhsxvgg1bbfsj5dwrpxwxlhcwg8p9k"; }) - (fetchNuGet { pname = "runtime.win-arm.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.29"; sha256 = "0inzz41s033hwd5splr0jrf5b4bnsqlyydrbxjcqxhk975fjfgxl"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Composite"; version = "6.0.29"; sha256 = "1k2k68hrxc3181439nipgv6pwci8x3l92lx26n7wzjqr20g7lknv"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm"; version = "6.0.31"; sha256 = "16xd2i3rzvvkdqswmr4i132s7a71m0i2iml8zbxb81vj0qj99nmi"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm64"; version = "6.0.31"; sha256 = "0blf8hl2irl9r9x6f7cih87ps21rcs3b8r09z5wp7jcb5j1cv8fg"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-arm64"; version = "6.0.31"; sha256 = "13765sv4fi9sr0cq4d1lif461xmaxdm4rlnk9gg01g1wgfjaci9v"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-x64"; version = "6.0.31"; sha256 = "1nyk0bggmwggw06dm5py4qz2f8b4mzc1c0zvqb3zigsrn37mp44s"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; version = "6.0.31"; sha256 = "050dzfy49c4jwcm8dfrz2lqbbyhmgnq485zdhpcnc3w08z0ppbs6"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-x64"; version = "6.0.31"; sha256 = "13kww7x35926wik32z8cnvzhpqp3dwhazkzb569v87x8yww56n3k"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-arm64"; version = "6.0.31"; sha256 = "07hjgb341356qz440i7agz0zmy0267s1ab09n26nmmclmwi33b6c"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x64"; version = "6.0.31"; sha256 = "15zi7yfc862ckv67w69linqnnckb57v2c8xfkd8sc583b55wj65c"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x86"; version = "6.0.31"; sha256 = "0b7k2rhhffg36bsqwdbz4sqfn5frahclfhl4g67f8kdz3xjqnv6s"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-arm"; version = "6.0.31"; sha256 = "1wablrn1g5z4b995zan397iayxilriapcycmd7fd2rlqamay639p"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Ref"; version = "6.0.31"; sha256 = "0hki4z9x60vzcg53s8cxnig4g1xnpqcj629r2cg5q1xw0sknfp5d"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-arm"; version = "6.0.31"; sha256 = "1yf6wkmf0dvifphgai72ik09mxvzqdmwg9bgw76d7lwrjq1i0ij8"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-arm64"; version = "6.0.31"; sha256 = "0w4sab66rjjyar9z139ls6rx29gvgj3rp3cbrsc8z00y9mw2sl22"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm"; version = "6.0.31"; sha256 = "0g76dzpmpffgv2a10znz0fcqkbms2l3br49f45fa72l6ap4dsm0i"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm64"; version = "6.0.31"; sha256 = "05s1c6bd4592xhy0y3w0cjckg11hb4pci729v59k3i3hl0hbad4s"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-arm64"; version = "6.0.31"; sha256 = "10cjff8ddjykawlacjv5zqgdax8vc6g8kdqz9xyk557xi1p1bai9"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-x64"; version = "6.0.31"; sha256 = "1cqkvmasyh53nlj9vciyfpvv2mhv9jnvnfh5w5sm98cqc49dkmkm"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-x64"; version = "6.0.31"; sha256 = "10s0p30qzfn9zibp1ldnqar87hqs47ni3rwqpvwx4jn3589cl9sn"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-x64"; version = "6.0.31"; sha256 = "0k16h1fwnvhw1gcx8ib01bidhrls5m56fiy6wldk3ajgs5dif8i6"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-arm64"; version = "6.0.31"; sha256 = "1rrgp98ssg6xvq4m12hk4wzdrcrc9ks1pbjdvacv7a68zhq9c2ds"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x64"; version = "6.0.31"; sha256 = "0d9lbwlq4xf31lfrkmyv4wsdz39fhha8ink02hkah2yawr4pfbza"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x86"; version = "6.0.31"; sha256 = "127jg9md1xriaj00bh0vqx426y0kiq5l2r9vkd78cihzyfv0asd2"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm"; version = "6.0.31"; sha256 = "0p9z0mx8fmj908nn4ckj78phdwjlwlkd3fy8g04nsgds54wzznnm"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm64"; version = "6.0.31"; sha256 = "1wmlwzy9bc1fs38r0vpn3ragp8pkimcq6sicj978yhk7brn52z1p"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-arm64"; version = "6.0.31"; sha256 = "0jr9llhmdjzv4z813m8g1carsj7fqbsjc2r2315qkicvisjf82yg"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-x64"; version = "6.0.31"; sha256 = "13wfhnjqvk6h9d6s8jvm81fscsc6am3vixpqags8fc38449852v7"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-x64"; version = "6.0.31"; sha256 = "0pw2n3j6vbmbghda1cvkhi3c39a49xk0a4w059mfya017adl6kac"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-x64"; version = "6.0.31"; sha256 = "1cl561dgdk4mj48zw5xwg7a0cafkx8j2wjd4nlv0x3di300k75k5"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-arm64"; version = "6.0.31"; sha256 = "14pbbp2mmnrx42a3zzwavbfshpp4hp04lmpayw3d2fm9nbrzjzlf"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x64"; version = "6.0.31"; sha256 = "105f5iq1r1j7fb1nkvls7hdm864pk7l04w0drqj1msml7ja4fdw5"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x86"; version = "6.0.31"; sha256 = "0ln0hj3xgr4xlghfna43rr68gclhp6dnqnhn4sfwh82z9i2593nr"; }) + (fetchNuGet { pname = "Microsoft.NETCore.DotNetAppHost"; version = "6.0.31"; sha256 = "0cwzp2ym7d6kyp3sf21v7ixfdjcprpw27qv6x1j7h7bp9jfk8cj2"; }) + (fetchNuGet { pname = "Microsoft.NETCore.DotNetHost"; version = "6.0.31"; sha256 = "1dcj6cclv3j3xmhhvk46kak1afp04mamli0j0n9c4pf3ri4p02h0"; }) + (fetchNuGet { pname = "Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.31"; sha256 = "1ld8jxpiapa3zmvikd0r200nx1cwlmm50rl4dyxm3m1xn6hvxkaa"; }) + (fetchNuGet { pname = "Microsoft.NETCore.DotNetHostResolver"; version = "6.0.31"; sha256 = "0mr4x1x42srl363f7v5zdn1l973rfw247vf20i5wrv5hv0qci2pa"; }) + (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetAppHost"; version = "6.0.31"; sha256 = "0i2q45z8qkp0pz44rcsljzxrk25xq62z7i4rnq16mcpiq4ycacd8"; }) + (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetHost"; version = "6.0.31"; sha256 = "16z8z85bn2zd5r4jjbz5f1sjadj8s3fv3l42xfqka9wj3362rrsr"; }) + (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.31"; sha256 = "0svd4zv4ah95n5cw7z2p8ndfvvvk29qyyd1cpw2qkkghj21lqzk5"; }) + (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.31"; sha256 = "0sr995kaxlnzzgdlgdfnw0zf6qi06f54xga6a80sr69qxacg1n7f"; }) + (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetAppHost"; version = "6.0.31"; sha256 = "0ds6i8lcswa8fgbljs1hx3fq0x1h8h9ahb190y751kx53gda4q7j"; }) + (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetHost"; version = "6.0.31"; sha256 = "0v3wc81wlsp97a0ab3kqbf2la8j5d66sdzhjs5fagcmlzhgjybvb"; }) + (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.31"; sha256 = "06a8zdvyr004lhs0pdsin3v8ylmlyqapa5wvyh7q0l4ds9f13h9l"; }) + (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.31"; sha256 = "0k1zsaaj5r91n9iqfdwww0s3kq5ak254brfyhq018jzfgsmwsv1r"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetAppHost"; version = "6.0.31"; sha256 = "1smij7fblrcbdn6960snvb5yz0ylk31ixha26bx4pw1qzdq25dda"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHost"; version = "6.0.31"; sha256 = "17fb7lnzcna3vjmkkf64l6x67vsc9lkk318bydn0rd8xmsvcarlh"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.31"; sha256 = "0z94wlfc7y356m6xbh4yn4f7349dxv3340mmiz3k9m39mcibvh5c"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.31"; sha256 = "0d7fpy0ycqigdr79p4ii8hd2d0pgc70rmn67h6y3hvcqxn4569x8"; }) + (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetAppHost"; version = "6.0.31"; sha256 = "0vx2caca3rs34hhbci4m8sdrapbph1ry6mj5mjymzqgdvl21zgxl"; }) + (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHost"; version = "6.0.31"; sha256 = "0hhflm634mqdr3q9qjc701yjfammc10hch334zs42758nzbpi4f7"; }) + (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.31"; sha256 = "0l5861rmfqqsqr53d2jnal7nggc6mlvy7hj9ln4b5nbk8w2qmsfs"; }) + (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.31"; sha256 = "12dj9crj57k905q2i0r6ragmf6n85q4p1ayf00vfjr5wqylfmm18"; }) + (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetAppHost"; version = "6.0.31"; sha256 = "0aslfapafa9mp3k09yjy6ay4lclb5kmkiic660xqjqw0gk851skb"; }) + (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetHost"; version = "6.0.31"; sha256 = "12w425dbggb34knqxqfqrp6hzyi2d427anmrjqmipsi8hnivnrpd"; }) + (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.31"; sha256 = "0zqfg5g06aqyypk0ka21jzsrb1v38yrgqcsll3ps7xsjd3swx8pp"; }) + (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.31"; sha256 = "07wpsqknjimf0k9gxz49n69jhybj6h1yap4lsyhaclw4nxmhi2vc"; }) + (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetAppHost"; version = "6.0.31"; sha256 = "0akikavmdma4p2fh96i91xfxk8a3dmcm6j0pc0az321fi22g9k1m"; }) + (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetHost"; version = "6.0.31"; sha256 = "11knfd86jpmpnhn2vkqn0rkl7yg8ndfva07j90lm27zznz0fzhbd"; }) + (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.31"; sha256 = "0qg7qi7x98szsi1n0gmjv5nplpnkwhli3jrf64wc9jpf3mv2wd6n"; }) + (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.31"; sha256 = "0rv4fwgqr26s1n1qqkzsp1ghn5m5zimllfh5ydn2rd4z9gvg0ivy"; }) + (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetAppHost"; version = "6.0.31"; sha256 = "1w71y8yffaljg96sy7lqfjpxk0mxbh5k1m9mik2nps1cs4f71l5g"; }) + (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetHost"; version = "6.0.31"; sha256 = "19xb50y6jcn9yj1yblyd5c7gdcj09xvz0lna329a3gm55144pfgq"; }) + (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.31"; sha256 = "1qgfxnvlhbr1y9r89srljdmgnyvjqh8knyhcgpakh3g4bi6j61s3"; }) + (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.31"; sha256 = "1141m8s0q7d73hicr9fgrgc4623rvz6a8mcf70zdq5hrf718nim5"; }) + (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetAppHost"; version = "6.0.31"; sha256 = "1691jld833fyjyy3ahw4hq6k7rlwx6nzz74qf97s5nadbzdqa6b7"; }) + (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetHost"; version = "6.0.31"; sha256 = "0b1i3mgnnp3h13p94n14xfvz28lsqmadqiyc5ib44yb28w72zwrm"; }) + (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.31"; sha256 = "0clgs6fs1gz2rld92hcmf4dksw62xb948l1a8zrsdyir40j0l33s"; }) + (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.31"; sha256 = "1p0cnnvb9i9x2yivvzj3lawy2fdrx2lw934q309anipfsxdzgx13"; }) + (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetAppHost"; version = "6.0.31"; sha256 = "1qy3bgvr9bqi35ncq6f11ihdrbv63vzhs72pl1s56f7wsqx7wpba"; }) + (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetHost"; version = "6.0.31"; sha256 = "06bjzlw0gskrgzrp344nq5qz95rkmqf56zcj1dip1107pzhiz4x7"; }) + (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.31"; sha256 = "0d6cdb1nsiqidwy5sgwq5iznb75cqkjffvyqlw9r7i9knj24yp30"; }) + (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.31"; sha256 = "0srvnrvgn48jjwmxrsqqafz9xvvgc3vc24yfibjcj0aa20mr0zjp"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-arm"; version = "6.0.31"; sha256 = "1dmadshsp686r44sm1l72jkjlym0hbvpycv1vvaivrgrkjsy22yv"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-arm64"; version = "6.0.31"; sha256 = "0sah1gf2lccc93n3lmkgiahlz4jwr02cw20bvcwqyikpldy2awds"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-arm"; version = "6.0.31"; sha256 = "1rinf7daaphinmjfcp1v28gm88wcpjvi59a3an76vvjjgpwcms23"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-arm64"; version = "6.0.31"; sha256 = "115c220p0mbk30biaw0sfqprnaghks7lcvvz6n5rsg0kn4fvy7qs"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Ref"; version = "6.0.31"; sha256 = "19a4ainxj8jxij7ckglbmlnvrjxp72xfgx0r6lbglzh9dhsakwm7"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-arm"; version = "6.0.31"; sha256 = "1y1sdabrcxswlwwlh5a493chxfsfpxrhvs2bkhqpw6bm712df6y4"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-arm64"; version = "6.0.31"; sha256 = "06hcajknx5f3q4hl4950p3wpqylwkrbkady2qyrjil9d9i2nh7dr"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-musl-x64"; version = "6.0.31"; sha256 = "1ybchvd2n4n57sn0ycd4rw5fhlhyc9w66anffdzmzxk0m2nj1ll4"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-x64"; version = "6.0.31"; sha256 = "1glgiqxkppk99h5q7hii1d0zx160qxmmna3qjfvk0yp62cx51nam"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.osx-arm64"; version = "6.0.31"; sha256 = "07wdnlh41x3mblxi8wr5f6n0p9m7j76a6zda5snq25lfsvv75qr7"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.osx-x64"; version = "6.0.31"; sha256 = "1q56hjpxpda23qn678cm11s0klf7259wbiw4js0yrjhzv0bwy2gf"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.win-x64"; version = "6.0.31"; sha256 = "17yzgzbadg8cxrfp9y9lil346jj6lk1ba96pmwcglprmqlf2747s"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.win-x86"; version = "6.0.31"; sha256 = "0j2bachvygz0cnyx1gdj64czsbxypzqhfm3x302jq1lq5mc7g94h"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetAppHost"; version = "6.0.31"; sha256 = "0ypldja725nxa9h3ddn352lm2c6f07vs1485mqgh10ymnv6a4m65"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHost"; version = "6.0.31"; sha256 = "0my18xrinvnb66vm3ni1l6d18l381fd8rpxbjwmcsdznv8p8brg7"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.31"; sha256 = "1i2dyhifzawlsyygykl1rw9y0ybkn8jagklvnvk94mswh55df8k9"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.31"; sha256 = "0lr7qhhgdn20xap6jrsqm444vycmhyjway0g417wk2bp9v22wgf4"; }) + (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetAppHost"; version = "6.0.31"; sha256 = "0gscb2py8shgnsqk4rm1wr29b0g9bk2sxfwlva2vy82i3msx9zcm"; }) + (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetHost"; version = "6.0.31"; sha256 = "0rwg0dbd9bfyhs5n2bwr6pz1ygklhgsx1kfjinyl6prgpz8sghgb"; }) + (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.31"; sha256 = "0wwkhq5lahhxz24ihh16ybzkajgzbncfl8mykndphlgq2y0qznay"; }) + (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.31"; sha256 = "1hdz6j2i206gshm01zrijsgflgab937h8b5idxamdk4rnq9jzhg2"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-arm"; version = "6.0.31"; sha256 = "03q5qamv7yw6gc975i8fccms5d9wlq8zn7kzaimnzykh470adnz7"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-arm64"; version = "6.0.31"; sha256 = "0zp62hsaf6nfg28wc6inraqwihbbcd2mcjjkl5g8dfhfd62wqryq"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-x64"; version = "6.0.31"; sha256 = "08dydwm0sq3hr6bak3p11c9i66jg1prcb75nvdrrx01jsv9gcmab"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-arm"; version = "6.0.31"; sha256 = "16xjxz2y3s6lagfmyhzqwwddbs678nfrwz6ja56sxjkwicisq5qm"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-arm64"; version = "6.0.31"; sha256 = "1kqqij06k5mcjphcnwikyjs02b2z0fdccsmbfa7diw5wmci4hr9n"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-x64"; version = "6.0.31"; sha256 = "0n7cddp4pq5dr7b38mar64cnb3apf6ib9p9wi506shisy8xh7fni"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.osx-x64"; version = "6.0.31"; sha256 = "02x1i47syzjm6j7wi1ldzgh4gpz866qcygr4z0b16qsl36qvzb55"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.osx-arm64"; version = "6.0.31"; sha256 = "1xab7dmxks7kqqnraivgwg4qyvcp11zz7vj1qbryxj6qv7wkv0bg"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-arm"; version = "6.0.31"; sha256 = "0z0isj1zsknp81wdf09qf1f1p1vk3v92f9jbkzx9pnqvfdk3s4wb"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-arm"; version = "6.0.31"; sha256 = "02bi7qlc5d9iz82ld6z6ycczlj3s6c2fy7zi9f917z7v6b278n76"; }) + (fetchNuGet { pname = "runtime.win-arm.Microsoft.NETCore.DotNetAppHost"; version = "6.0.31"; sha256 = "1s889d0rri4xjjk1w47f04jnn1awyxgwa9j01dn0n98qhhl8h8jm"; }) + (fetchNuGet { pname = "runtime.win-arm.Microsoft.NETCore.DotNetHost"; version = "6.0.31"; sha256 = "0c9rx3g3j7jrcbly8482xvjhyf16vns95zs466yj17jm9wnq0gcb"; }) + (fetchNuGet { pname = "runtime.win-arm.Microsoft.NETCore.DotNetHostPolicy"; version = "6.0.31"; sha256 = "0szi3vbsj7gnbf3nq5q0xbf5p4581bglcz3mclwi8z0x2d607c23"; }) + (fetchNuGet { pname = "runtime.win-arm.Microsoft.NETCore.DotNetHostResolver"; version = "6.0.31"; sha256 = "07nxbwjjdzxviyrr4f13bfrbs33kz3bf53lk470r5jchi7msv8l2"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Composite"; version = "6.0.31"; sha256 = "17zn4r2nqkqb4cl0mn1mkd0v11j1j4gwxzcas38ss0snidqddkqj"; }) ]; in rec { - release_6_0 = "6.0.29"; + release_6_0 = "6.0.31"; aspnetcore_6_0 = buildAspNetCore { - version = "6.0.29"; + version = "6.0.31"; srcs = { x86_64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/70ddd1ed-776d-41d2-b192-f02436ef3ca6/337d6dd35177408acb9889289a7743a7/aspnetcore-runtime-6.0.29-linux-x64.tar.gz"; - sha512 = "6dc21e1a8dd597df9c1135065f7350bbde9cc040c3079ec7850b0e5f254051b883c6c6e0056682d2963ec74dadff8eb32d82c13b35c9088f3d7c055d3d3f0863"; + url = "https://download.visualstudio.microsoft.com/download/pr/c8c7ccb6-b0f8-4448-a542-ed153838cac3/f104b5cc6c11109c0b48e2bb8f5b6cef/aspnetcore-runtime-6.0.31-linux-x64.tar.gz"; + sha512 = "ebb20a3461bf9d1e3a5c91761452f5ef2e60873826ad3158493768a18d207319bccc40d6c1a64fd61dd8c22bad51c26689394b0e6a40c4bfe4cca00ce4c00db1"; }; aarch64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/094fe5d6-0520-4c0a-9edf-b53d269f8b20/8c5e69ed04787815037ae373ffb77466/aspnetcore-runtime-6.0.29-linux-arm64.tar.gz"; - sha512 = "6e4a504f37ba4bf7d0316d2a3077c5088962c8b8445b659fa05844697bd11427afabacb6fee34094aa4313dd6dca70c862c1c68b30731b12b4451bd59067bc8f"; + url = "https://download.visualstudio.microsoft.com/download/pr/088b0ba5-2eaa-4815-a5c2-3517b99d059c/f6d18014064903be5fa2f654f51f5ce0/aspnetcore-runtime-6.0.31-linux-arm64.tar.gz"; + sha512 = "5d395554520a62c81e01f045245749d771d728a353631879462ac499e78658377e475bca756668eeafdd65ac55ad55f244f778809c127a553c5c330b76ef9dd8"; }; x86_64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/7b93130d-337d-46b8-8d61-cd702c4f2ae7/e198b8e68a06f1f1f5f46116f9976641/aspnetcore-runtime-6.0.29-osx-x64.tar.gz"; - sha512 = "f4405bcf40a075a5acbd8f4ced424efb0b2de49a5f81481c708a1942c1e92e3a69ea8a4d59b55c025092a59e2715d260521fda56618f250d1484fe18dc4cadf4"; + url = "https://download.visualstudio.microsoft.com/download/pr/9b9addf2-5f49-4d1d-8272-bc348c9d93e4/a4dc2cdc0dcf8215a1c7e436a4c854cc/aspnetcore-runtime-6.0.31-osx-x64.tar.gz"; + sha512 = "79ced204af5aff757fc7680298121269bdc770b62411750f913d3129dad79c8b2eabd54b2986073c219b3aaa4b49f7188ab7694b99361fb725bff8e32db07dc3"; }; aarch64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/cbaf5637-d4ba-41e8-a16f-a66a063a30e2/205c5fd4005a47753549594370bd385d/aspnetcore-runtime-6.0.29-osx-arm64.tar.gz"; - sha512 = "a9ecc77db6f0fd8e5ff70ac58ae3549b766694d30a93cfd41869ceaa298178fd2c0e86e4e763d8d7a5e2236d42faf2e87d798d2853f8391a73a40f5193f4fa71"; + url = "https://download.visualstudio.microsoft.com/download/pr/299cb3a7-badd-474f-9906-33d744bd77e7/cfb103fc34184ce82a012c5a1046292a/aspnetcore-runtime-6.0.31-osx-arm64.tar.gz"; + sha512 = "f19e54b4a4e42db7aae880b86a6dde57dc988aebf852008b70ae56f89ad130e0aba73903357f4e97ead10d013ae3fa7fd28d197ef88f0742391f601ff136951b"; }; }; }; runtime_6_0 = buildNetRuntime { - version = "6.0.29"; + version = "6.0.31"; srcs = { x86_64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/a066873e-e4f6-4538-a225-4170e2950af2/7e3b369dee3fb19cf193823e158f3b6b/dotnet-runtime-6.0.29-linux-x64.tar.gz"; - sha512 = "c9fc66d47e7c5ed77f13d03bd3a6d09f99560bd432aa308392e0604bdf2a378f66f836184dca4a678052989e6e51a5535225de337c32a4a4e17a67abdc554ffa"; + url = "https://download.visualstudio.microsoft.com/download/pr/d67d6174-70c0-4256-b4f3-1f06cb5e8499/4bb51048eee17bda6b0ab7887c227206/dotnet-runtime-6.0.31-linux-x64.tar.gz"; + sha512 = "8df8d8bfe24104f41cc9715bb04fdc1811426c4d16f29336607c68a30d245fb8f36577d639e7da4865204fa85280fb5cdcf47e93183afe6b9e946e0c53df32c8"; }; aarch64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/633cbdd7-57e0-4101-9627-9bda4f29dc9d/93ad01d00720363b0c054f5d88d97a62/dotnet-runtime-6.0.29-linux-arm64.tar.gz"; - sha512 = "27c7121a4953b51bf29a15ffac4155cf86609ded15948f91ecdd19970ff7e19276c528d875f547c2877245767adf1be1ca0eaeb45dc8db460070637bd5ee1ec8"; + url = "https://download.visualstudio.microsoft.com/download/pr/34215580-c4c9-49ee-a9a1-e9cb1a25646b/9ac060d3bd7eaf550d11acd60bd2841a/dotnet-runtime-6.0.31-linux-arm64.tar.gz"; + sha512 = "022c7fc8878544f8abde8cf13ef661327238381c8f4731b4975be294616fda00a4b093036a896baef99eb58b881890d3fa951cc51b0212e766a8a7ce95d2c440"; }; x86_64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/ed218418-03fc-455b-ba08-6743dd753435/87ce2ccb4bd152e7e9435b891349ec9c/dotnet-runtime-6.0.29-osx-x64.tar.gz"; - sha512 = "e04207993febbd8593eb5474016e90910491f4c5b23cfec39498bc6d5ca2c3ce427da4f5f14ff4160766daab1e35dd2d324d0cfd7ffa83c4741a25f9ac811f00"; + url = "https://download.visualstudio.microsoft.com/download/pr/e06ea94c-e84e-48c3-9bcb-5fc65db7701b/22612902257c79e6483990c0d9bf02b5/dotnet-runtime-6.0.31-osx-x64.tar.gz"; + sha512 = "fb6ae3a5f5f31078cbc98d06101ed53b6a23e9a5582c3d660850e7315fe21d776ad2c3ec716ce27cc0ac87c37d99c6dd9bc864d9410917aa4c73cd885010980a"; }; aarch64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/ca51758e-d614-4a55-97ce-bf60ec381931/c2e6633c67dcf4359666cdaa88f1eeae/dotnet-runtime-6.0.29-osx-arm64.tar.gz"; - sha512 = "baf9b30ab7fcdb16878a05429a98c20079e8a5e081f910ddabaee70298dd3d976f3c56569af4efa544533534be50920258982cb97d98bc85f31ce44e6ccabf52"; + url = "https://download.visualstudio.microsoft.com/download/pr/d82928b9-3ce6-4060-bdd5-159afb165b37/002421f6104e66b92b7abb31abe7ffed/dotnet-runtime-6.0.31-osx-arm64.tar.gz"; + sha512 = "57d89d189fd7c33ae9627a06dd543d4783c1e04376173e4a2868a342ca864323e41d5a4050dd82fbd9d7947ca1ea12185e80294c70857b97e3d32eace15940cc"; }; }; }; sdk_6_0_4xx = buildNetSdk { - version = "6.0.421"; + version = "6.0.423"; srcs = { x86_64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/19144d78-6f95-4810-a9f6-3bf86035a244/23f4654fc5352e049b517937f94be839/dotnet-sdk-6.0.421-linux-x64.tar.gz"; - sha512 = "aa2c1fdc06c477acbb8ca938895f22373a96e96bb75028b496ddf3d433a1e347f3f765b414e8e09fbf1da1cc50f575e28572e701693bad2a33f9b92437a7d3fc"; + url = "https://download.visualstudio.microsoft.com/download/pr/111a63f5-e1d4-4d07-b8b2-98642b5fcc59/389661b982fa5b83b09a1f50b9da247a/dotnet-sdk-6.0.423-linux-x64.tar.gz"; + sha512 = "4b4a0e66634211ae04fa030e18ae9e22640f5828307ba85c4bae596ab2d31260519197828dae3b2ec73d6772635e0b375536ea6591b03c67c2b7a5566f016952"; }; aarch64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/30303304-04ea-4569-9f10-3919b4b3105c/5b689d8357866cc2637a021d16096256/dotnet-sdk-6.0.421-linux-arm64.tar.gz"; - sha512 = "2713e16d70d9cb5bd6d3d2da385c75c8cfe6ed3187225efe6715d595b1b1b17d0a48fc7044cb514add8918875c5f281196f09686c11c7524fe9397d8bbe1f8aa"; + url = "https://download.visualstudio.microsoft.com/download/pr/f60a9d6c-1df8-4b84-af48-1961ed476a38/32f60a0f291dce64fb33a502e69e78bf/dotnet-sdk-6.0.423-linux-arm64.tar.gz"; + sha512 = "42f5e89d6d9a9923bbc20398a6272290b5f693cc767aa540233630f849779daa8cc7d8ac87655f6b2c8e0250bf5be986a8e8ae502b6f33c0b3e474d041b77625"; }; x86_64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/270b615f-5281-4c58-980f-d9f7a08db642/3e874492a9cb0d5b87195c596b46d609/dotnet-sdk-6.0.421-osx-x64.tar.gz"; - sha512 = "93570a4efc929050b36ad53adca2be803c4cd8ebd9f2553b0f3e325af0629f9854ed39ec8ed0bde4302985c74143763b3a7bef89b1bcecbcec99e137777181d6"; + url = "https://download.visualstudio.microsoft.com/download/pr/8e5dec4f-d683-4ffa-9704-f4af023d5383/483bb54f830379d5eedd21c47ccaf47b/dotnet-sdk-6.0.423-osx-x64.tar.gz"; + sha512 = "31d8f5aa5b0fc5de1c6f809920cc8ffa0415059daa12ed21888795e600b528376d7b14da5b946ae5493af7214543e6494d9afc8ca017d05ee56dbfd10e2fade0"; }; aarch64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/ed341e9a-7848-4036-bf88-00cffa9fe535/52887ced41272bf177a9ef6ac04563a2/dotnet-sdk-6.0.421-osx-arm64.tar.gz"; - sha512 = "83870fbe802cdea4ca014eb5dc0cd899deed952d8cfeb862f74bf68d80bfa81e814a3d90381615bb6e26dc39bfcbc82f975462665bf65294d25249e2ea365332"; + url = "https://download.visualstudio.microsoft.com/download/pr/c53f9a57-8f7c-4d78-a2a5-32ddcf142cbb/312e8c418f6dd2372dd0e9174b10e6dc/dotnet-sdk-6.0.423-osx-arm64.tar.gz"; + sha512 = "fb31894ae43764c518d7909859a2b598134bc03bbb7996ad0badc1088cfcf4d666f25746f77cfef1aa042c2f9fdb348e6975e1c4a98ff93c1b206a4a0429f995"; }; }; inherit packages; }; sdk_6_0_1xx = buildNetSdk { - version = "6.0.129"; + version = "6.0.131"; srcs = { x86_64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/7bb40f2e-6ef7-43d6-b0cb-b74d974a5675/cf48bfe3825b1d419da055a8d8f16101/dotnet-sdk-6.0.129-linux-x64.tar.gz"; - sha512 = "fb4991e5b0297ea0c65dd84300f0c11bef4589b19012556f67eb10970bd3ee50a58bad59023e1d266a8d9688a71c23458e0d21b8cd9adb75d21c47b59987aabe"; + url = "https://download.visualstudio.microsoft.com/download/pr/439c6d52-892d-4aa6-a6c8-e2f9bcda7121/1fab8b4544b64a5c74fd0277d9115292/dotnet-sdk-6.0.131-linux-x64.tar.gz"; + sha512 = "3df39fbce2d549a258163588a7205bed73dd39a69c6ba7fee785bd8a663e679a4194cb7e20a2e0c289539e1e412ab3a7ac019cd92cac13d219dfb50cd25740a4"; }; aarch64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/ceb30bb4-f3b9-4195-b549-76e49ace533b/60fb639b9c621ba00946765d1be575c0/dotnet-sdk-6.0.129-linux-arm64.tar.gz"; - sha512 = "58185fa68b9a7bd373b8c4ad9f2d14d0379e6758007bfbe52a640cb432eec91267ff7df94fc57ec0d0d16b8ab5a0838a623c31d3cf36384b3a77697d3a8cfd86"; + url = "https://download.visualstudio.microsoft.com/download/pr/9402bde0-16de-4696-973f-2a9667ce34a9/81b5e2ffa23e29e10a473cdff7dc7c7e/dotnet-sdk-6.0.131-linux-arm64.tar.gz"; + sha512 = "5815bc11dbab9c8be4c9b0d20903d3b6df2e825bbb2789f2d90d1b7d7fc3f4de28a450f5906d82675e8f67d34da8b28526bfbd5dfefa109bd895d2ac03f08cd3"; }; x86_64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/2e1ce563-4b66-4bed-b092-a411755b0101/e6abdcbec6cb93a3f3c74f3b25eb0dac/dotnet-sdk-6.0.129-osx-x64.tar.gz"; - sha512 = "b4b70a211eaabc9b3a34fe197ca4c69e4a167484445fbbc6df326c972047c813a6ef9a89830d0105ffa00bc8754f8b728e102fba35f89fd9caafe139d45b4eef"; + url = "https://download.visualstudio.microsoft.com/download/pr/6667b054-8dd2-42bd-b769-521b5e3c95b7/f8a8a2c8c5f57f81e2b3b1581faaf84d/dotnet-sdk-6.0.131-osx-x64.tar.gz"; + sha512 = "eaf8323e2ebadbeb30bf610700b46814bb42efe17cbf7d0ee7322e7cf089a41cbf87e184226536ac580dd60f04009e3dda5878427df788727d065ae3e9f908ff"; }; aarch64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/bd5e3be9-a283-4cfe-afd8-b217d2429ad2/0339d0cf86b7b8fa5831d0788175c34a/dotnet-sdk-6.0.129-osx-arm64.tar.gz"; - sha512 = "065a6b54fc5044d335371c6244c633d3a64d6813ebcef9db19fe0dce4f15c381109b537efab8ff1a9850d83721b0783b4f5f58c048cd6e8f05a32d12eebd430a"; + url = "https://download.visualstudio.microsoft.com/download/pr/512b8abb-992c-4af5-b308-9733d072c2d1/ce40f01dea24d4fd4849bb952c9fdb32/dotnet-sdk-6.0.131-osx-arm64.tar.gz"; + sha512 = "ad4563ada153b3d9f11bec8514f97999b31772089150856e46278638caebcf84b51f1413e49cce2c1e4aff266b91a72c1685b6df6546b9a8a2a415e78046587c"; }; }; inherit packages; diff --git a/pkgs/development/compilers/dotnet/versions/7.0.nix b/pkgs/development/compilers/dotnet/versions/7.0.nix index 21d7884c482d0..fac65c6b2dd05 100644 --- a/pkgs/development/compilers/dotnet/versions/7.0.nix +++ b/pkgs/development/compilers/dotnet/versions/7.0.nix @@ -1,235 +1,235 @@ { buildAspNetCore, buildNetRuntime, buildNetSdk }: -# v7.0 (maintenance) +# v7.0 (eol) let packages = { fetchNuGet }: [ - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm"; version = "7.0.18"; sha256 = "001f6hj331sy712yq1p1yzdgpxmdz0zk8ikgyb18sxf2xflggrk5"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm64"; version = "7.0.18"; sha256 = "171ygqrbjza8d83awyrqpm1rhrdxmq3x5qdpc2w907nidf3h1nwz"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-arm64"; version = "7.0.18"; sha256 = "1b5zgxzg71jgr2rqgxqgnl9b98zq466g6l15nzkqwa4pj3y2i4s9"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-x64"; version = "7.0.18"; sha256 = "0f9dhjgw35i9z96qgq3q7fn0csnd3f17z6db3vw1j126k8zy67yy"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; version = "7.0.18"; sha256 = "0i90lp2pm3x39ypilrvf6v98j3pgj68palw1dimdf04vfi874s7l"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-x64"; version = "7.0.18"; sha256 = "1z11qffsbnfdk2a5yk7q8ck12v0vck60nvcd2wrqawv87pxga033"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-arm64"; version = "7.0.18"; sha256 = "1awf0s6z1grny54s3lbi01978kywx0vdrif0vx6m75n11lps33g1"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x64"; version = "7.0.18"; sha256 = "0kq0l498p54314ajsjpsi0rkm17frhsagw60v0ldr7d6y3faw0yf"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x86"; version = "7.0.18"; sha256 = "19g4h724s358an75wksgcg2q2pp6qkll4rrrb36b174cwr265ahv"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-arm"; version = "7.0.18"; sha256 = "08d6fhhppdh2arzj9vp7qplsfr513p4fvzl190ybz5zrzxx3nayx"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Ref"; version = "7.0.18"; sha256 = "034bccx7g5bn7kjfqsdvr95v7vw2c5cvnifna0v877lb3pbnml6x"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-arm"; version = "7.0.18"; sha256 = "1likvj92lgfmbd4ccyff3byv2089wq7xijjcbgq28vp3zha0lr3a"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-arm64"; version = "7.0.18"; sha256 = "01axi419jqvnv1zpx0fv5ky7d1cdysnn800f6ix8jhrab9h9vlwq"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm"; version = "7.0.18"; sha256 = "1lzmmirxivs9aldpi30j77mhm15fsnr5pi3r4i1nbarqz3jm6kbd"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm64"; version = "7.0.18"; sha256 = "0bwcny3bc7swh57isij2v5y4qbd08zvi126nwkvyw43piaqn77yy"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-arm64"; version = "7.0.18"; sha256 = "0php4saswya3ag0zjb95ybb4xj8z8vpbb3bp1gq4xf6kdmkzaz7n"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-x64"; version = "7.0.18"; sha256 = "0864r2xnczssc4sfrqbvjdqnha0gblrkza4xjk0r0ndiwshyrg3x"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-x64"; version = "7.0.18"; sha256 = "0a0f8icdzps5cjvgxw0pi26vjilnvii5dqljg1a874y9pazamk4q"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-x64"; version = "7.0.18"; sha256 = "1h626c86379jsk2fndiqr3zhhrnz46vz7m4s5pp1kz02pss6wjrf"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-arm64"; version = "7.0.18"; sha256 = "1708v99wr4zgflnpjwpsl7dq3jc42mi03z18055p03vmpqrl25f8"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x64"; version = "7.0.18"; sha256 = "1xfi9h1gkjkssxnn5gdpa2idhrxcf7yfwgmsy30q227lql7z9hxv"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x86"; version = "7.0.18"; sha256 = "18r8vzsgwqnhppx8jw7x8ycamdpsrgfhph9b7s6cj7kzam8vihqn"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm"; version = "7.0.18"; sha256 = "16r1dc61i96df158qk6295lrkpdqd9fy6yqj15027x76xxf234az"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm64"; version = "7.0.18"; sha256 = "098c1iaz3pbwha79vlfbl98cn6zfh3ynnlm2307z5mzb7i4lk7lr"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-arm64"; version = "7.0.18"; sha256 = "16aaf3137rpf93k4k24qdbvy8y0lfj9mqv3zym5ndfd3jw1jh1fh"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-x64"; version = "7.0.18"; sha256 = "0fvb9s3z71pwmqag8zk2bl97dq8jjnpw45mh0gya49wvw15p1436"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-x64"; version = "7.0.18"; sha256 = "1108sk0r71g2rz86yppz7fmlf69ij6gyrazyvyk9hkhl90lrfzyr"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-x64"; version = "7.0.18"; sha256 = "0b0cl249p51pa36fcwng31g2cp2f8m1360g0cfizq4wb4zfa6a62"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-arm64"; version = "7.0.18"; sha256 = "1xn4v5avi78sww9a5n2ijf96sv7jixablpqr8fin21fsgg9clqs1"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x64"; version = "7.0.18"; sha256 = "03d8zp3f5md61kbawpiac4qrlsn5l4xj2k07kn4s6vkg4r3wz2ia"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x86"; version = "7.0.18"; sha256 = "0hz49hsrk389lmbz8hk057vsqg1m9x8r1p2vh9w1kc3y2ljp9gbn"; }) - (fetchNuGet { pname = "Microsoft.NETCore.DotNetAppHost"; version = "7.0.18"; sha256 = "0j5vjd20f492q6sj9i74cflyqzrxr4wbqwdz8yjlaimw00yyg07z"; }) - (fetchNuGet { pname = "Microsoft.NETCore.DotNetHost"; version = "7.0.18"; sha256 = "1nvlbkhp66zangjpzf5cj0gywkd5kv81hzbfk7igdfbpwmganw7b"; }) - (fetchNuGet { pname = "Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.18"; sha256 = "0ng09aacwi2kxws1i695ri8kssn01wb7cd7i3rf3sx4bcyx4ax18"; }) - (fetchNuGet { pname = "Microsoft.NETCore.DotNetHostResolver"; version = "7.0.18"; sha256 = "0x77z0kqs56jnr9yma21pdlpw2gjyxccjdk0cgybc7fg36rzpz5w"; }) - (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetAppHost"; version = "7.0.18"; sha256 = "1ijq8jhvfsij3q4irb6a0mnlp57q3yw41qp3bsymi6pbvg9pwm7j"; }) - (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetHost"; version = "7.0.18"; sha256 = "12rvs32ggwg4h8j2vgyx0aj8kl1yr17d6d7mw1x26qsaj4y0grzh"; }) - (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.18"; sha256 = "0mlaifk2xjh2w61zp2hqi4nnqlwzvzl2mn3k8p5q3d4zzjna8apy"; }) - (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.18"; sha256 = "1ccr55ps2z3vq5bl8mlsfh7ks608fygdrdrw5v7cgf2z7ihihlfh"; }) - (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetAppHost"; version = "7.0.18"; sha256 = "02lj8ch0sq8avqd13p9gk8b7xfwm1rc6qg9q6vpwjdmi80f6zs28"; }) - (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetHost"; version = "7.0.18"; sha256 = "14ap1ap85w17h1cq5dlkzp9wnmrr02gxaq8a33ri84gaknsigv41"; }) - (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.18"; sha256 = "0ipy0s2s54xr9zvy44k13wkk3dd347ks5nz4h27g958ilc9xz3xl"; }) - (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.18"; sha256 = "0w53iz43wrzyyy4rahvgbpc4xv4yrhxh1bqmcjsycvv5vf0svj2x"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetAppHost"; version = "7.0.18"; sha256 = "1x0b90pydgy0i0kbcbfipz4v0pmjd52862rx8d3r68vkfxym7ra1"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHost"; version = "7.0.18"; sha256 = "0glgv2dxyf5k6rl7qd9df4s8vrh8wkx2nwv31hcphb3wsg959kax"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.18"; sha256 = "00y32d2c64kkgrri248rp0api9d9xl80ggfhspfc9n08s3bmcknj"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.18"; sha256 = "0s6g0jw99y1mv008q2mckqx0dkhjcpy49kmvm7kpzb20sw4hqqw5"; }) - (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetAppHost"; version = "7.0.18"; sha256 = "190y1n6yv8xqsrmas96ragzvk54kc58mgr7yg0h50i8mq77f96pb"; }) - (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHost"; version = "7.0.18"; sha256 = "1f6dwf0al9ma9m2n63w1b3yrrl5zpqy2knhrcg76njmk2899w1sc"; }) - (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.18"; sha256 = "0q3qzh2ni435zygimvp35m3c745fafqa87c8gd6ps1fmc5iv9w1p"; }) - (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.18"; sha256 = "039sh5f8pq1nf1gj5w1ghrpqd3bci2a3ys2sh33r3skhys4k21y8"; }) - (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetAppHost"; version = "7.0.18"; sha256 = "0a2vzgc5pgrv0hn6ijah7s0y2i7aw8nak6mai58mx307kwrawsh7"; }) - (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetHost"; version = "7.0.18"; sha256 = "00gq0fgkz198461470gpmixl2b5lgz02yzyz7mz297d2lxixq54y"; }) - (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.18"; sha256 = "1k1ri4y8d49sqyayi3lg8gzybnb9bmgcqzm8qisi8cf2yrlypc23"; }) - (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.18"; sha256 = "1q5zg65jlnp0vv4j4ya3kl70843smzm5ljwx21cx3dlnl92d39v4"; }) - (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetAppHost"; version = "7.0.18"; sha256 = "12hvpqgmil06z28ix5x51rbzm99vdxgqr1090c10b9gcy231bbhn"; }) - (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetHost"; version = "7.0.18"; sha256 = "0n9hvj7a4f44g38x111ajcjmr3ixq2g2wh3yxr2jjpv45znk0nyz"; }) - (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.18"; sha256 = "02fd5il9bihnhmvhybw1sqsb31241kg035vwxgghr17bbyb9yx8r"; }) - (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.18"; sha256 = "1sad1x4sg06rfh2bjrrwy2gk5ik396p7rggcv3p9v9xfl3kbjkwp"; }) - (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetAppHost"; version = "7.0.18"; sha256 = "1mql52lndslpqxb673cv02lif9jxahgm62977r3rdlypljynbymg"; }) - (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetHost"; version = "7.0.18"; sha256 = "0gqnw3hvfpvy1lddl98y3jiv69x11ahkcxcnix9sdzlpf4vvshfl"; }) - (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.18"; sha256 = "1vwjqnyhskvmxnym65a48yh6w9l004a9xk6dfwdqmdxxlv3d14lc"; }) - (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.18"; sha256 = "006i3qylks25j3cirlafml07wrhlcb3pmpzknbx1vr4a8q29498d"; }) - (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetAppHost"; version = "7.0.18"; sha256 = "05jf0dvxa1wqamdapclwrkfdxvll4cah2i81shaf9crhw3wlpmxq"; }) - (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetHost"; version = "7.0.18"; sha256 = "1vyxww3kwz8dw92v0rd3f1phiif01pymbissm3pb9mrf977dkav9"; }) - (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.18"; sha256 = "1p2dbqwqflh9qnhq70m3jlycs9agyfy7ird9g83icav1v504vm89"; }) - (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.18"; sha256 = "1y0kka39xahz3a7fjdngd3bcqw6xv7wwypdnq3vq3agcadm1q0rn"; }) - (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetAppHost"; version = "7.0.18"; sha256 = "1070gji2j2dkb9130c0s3pc5bns4xwkl7y2n4daqz2haqrc1lqr3"; }) - (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetHost"; version = "7.0.18"; sha256 = "1qi51x84nn6b69gpqqxqngc9bp4y6z0r6sqirdgfg370vqly2qhi"; }) - (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.18"; sha256 = "1q6kxjzi300jkinp9dhnvwf84pj4kh11n3jv0vqkivlycbja92dh"; }) - (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.18"; sha256 = "0q97bwr9rrq5p6arziz9y31hliplydbkybp8r3ajrl6qh0xlfbd5"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-arm"; version = "7.0.18"; sha256 = "0hlaxh06z9az86vd8w373hwb40fmz1x43jabl8qdz26cm8hlzngv"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-arm64"; version = "7.0.18"; sha256 = "13pdmcjd64g89wlgj2aiimi22z3nmy6s4wm890h0j3vfgj8q6yhj"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-arm"; version = "7.0.18"; sha256 = "09zc0k8wv42par873a6gkyknbpgfsam7mmnva3yyxbpm7pxn945y"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-arm64"; version = "7.0.18"; sha256 = "0wj6413ijh62g3pbacirjb26qr38nghps29wcqkp4p56sybx24xf"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Ref"; version = "7.0.18"; sha256 = "1vj04hfs9xwm2k3r2xgzrwbbr4mxb4n1ri4xsdds0vr0qbfgrb8p"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-arm"; version = "7.0.18"; sha256 = "1i5an4bhlcwxqbdza35x6l1wmhlsw90nqg9kk9r4qfffyccnsz6y"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-arm64"; version = "7.0.18"; sha256 = "13i6kwkrbifsbjqjx5ik032s1plg1db6wwbvw10qrg82y4x9989g"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-musl-x64"; version = "7.0.18"; sha256 = "0328z9jvp0agf7wwwh8hhz5l1r0xpspx6rszdak6mxjqpgs0nlq3"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-x64"; version = "7.0.18"; sha256 = "0gdvsig08gfcr5jw9a7prqwdm2lk5qz2cq4n0daw1k4572mg4qp2"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.osx-arm64"; version = "7.0.18"; sha256 = "18vy1jkylb3842wc1wjki70rk5wvx3wxfgyvqf15mfgiaw5mp851"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.osx-x64"; version = "7.0.18"; sha256 = "1f98jankwxk9d99pmrdnaflydxcj3wc0wkxc13z6plvl63rprphs"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.win-x64"; version = "7.0.18"; sha256 = "18sdls7flsdzbdd3jfrmlz0ssvzbfwj8ackx6p40mzr9w4hlnli6"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.win-x86"; version = "7.0.18"; sha256 = "0j75anj33h6avdjhvdcqbfbaxj7l07n0850f906ral0mvgfd4ndg"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetAppHost"; version = "7.0.18"; sha256 = "0gqn98lic556yf57cgw2gsfrb31v6l5mn3z7kinnp9h25vhbc8wb"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHost"; version = "7.0.18"; sha256 = "18gq0h1x6x41qpk754s0vwx6lxf9bhmr61hix3aizh1b3brxhmjw"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.18"; sha256 = "0s0pmas9a344kn7srq0pfc8fgwn6p9qkmnhpcnh1yfkpj4k8nd0q"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.18"; sha256 = "0adz0q7y6xqrg9s71vzwnv6cx871m5ya2kfaiqiff32f7296gcq3"; }) - (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetAppHost"; version = "7.0.18"; sha256 = "1ifibwfypiyc9wl538ivlby5l0csisj5visqnfifwwxg4qhhy2vy"; }) - (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetHost"; version = "7.0.18"; sha256 = "0abdf1319zyia7zxqfv32c4fb9rw0qw3qivlbs1ms8qk4c7a5w4j"; }) - (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.18"; sha256 = "1nf81ngbhr40d81hq6c2d21x0cjs7qh269z1ynwdiv3kslb79sf1"; }) - (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.18"; sha256 = "1cqv7vvf1v71r5ndwammwy9rvwrbmhmwwpfwpf9635mgnh0707ph"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-arm"; version = "7.0.18"; sha256 = "0cdj0g3cyhpfbkpqzbxslhx7pc8a406c1w80y4bxd1dxmwi387p2"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-arm64"; version = "7.0.18"; sha256 = "0mhahzk11a5lziij0w5ahfapcf219zkwfihwqaymwlgyzxdzilq1"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-x64"; version = "7.0.18"; sha256 = "01dc6m6hwv4zzbpxbib4338j7rhm6kxgz92f84idjnxc9mjrz823"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-arm"; version = "7.0.18"; sha256 = "006s6a5xhkvpxm0f25g85xiks7cv5gb6zfqakw4hq4r9sisi5mvd"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-arm64"; version = "7.0.18"; sha256 = "1645i1pqd8a700hf7l0bj2hyflyllsrhvw9nc70fid6sin20nm5y"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-x64"; version = "7.0.18"; sha256 = "0sabmz4ifqgc22hr1dp5ci7xlhlfxdzl2zvlf53mwkn79818liar"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.osx-x64"; version = "7.0.18"; sha256 = "1nda77r6bxa21zph5zymnnk1wym8sla2qrnrqrd0a9sqmq82v3bp"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.osx-arm64"; version = "7.0.18"; sha256 = "1imi3c2g4mpc83ppbl4ipq9v73h2pd3497dcpz8mcv1z82ga0pdy"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-arm"; version = "7.0.18"; sha256 = "1iws4awg6ph7xblcckza1xd0wzq05s7fkx86j4acsxqmvi696fp7"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-arm"; version = "7.0.18"; sha256 = "1ix4j79k2azkanpnx63ifjrmfh3qx501rzk3bknf7vh2c0ds2p9d"; }) - (fetchNuGet { pname = "runtime.win-arm.Microsoft.NETCore.DotNetAppHost"; version = "7.0.18"; sha256 = "07n3npyw36jddvixnc89yhkj1nj70a1fxh7skq92720z5i76wwbd"; }) - (fetchNuGet { pname = "runtime.win-arm.Microsoft.NETCore.DotNetHost"; version = "7.0.18"; sha256 = "02girjrnralf4pdz4cv0pvvxvkakriqakgw95ci0ywqn5gv379b0"; }) - (fetchNuGet { pname = "runtime.win-arm.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.18"; sha256 = "1wbals50h7lnnqpgrinvq5hknl6mvfkgjd83i8c54cpimcy20myl"; }) - (fetchNuGet { pname = "runtime.win-arm.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.18"; sha256 = "07n6jq7h5750zznv65jjasis010n4b70416mmnc0rn6vdnz3fsbn"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Composite"; version = "7.0.18"; sha256 = "14h8i3539ghggliix8b7gnzw1wx4cgb6qn7qqx7zaij6b34r9plz"; }) - (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.DotNet.ILCompiler"; version = "7.0.18"; sha256 = "1hmnw40zw3m1bwlb0xdnfl1gf66551cyq9vavvj3mnxpximwbc02"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.DotNet.ILCompiler"; version = "7.0.18"; sha256 = "0a1ln258drgykx1x8hswbfy991mjh017j5f47avgbkq7gxbwvsjx"; }) - (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.DotNet.ILCompiler"; version = "7.0.18"; sha256 = "1j37aizp32bfdjs5p1grjdqzyci37gblgj4vxgr585v1whs5bvnx"; }) - (fetchNuGet { pname = "runtime.linux-x64.Microsoft.DotNet.ILCompiler"; version = "7.0.18"; sha256 = "1j7q7nbw887l7np3sy1snxyvwmlfq4kfhbrdx73ng721mv7bvkdd"; }) - (fetchNuGet { pname = "runtime.osx-x64.Microsoft.DotNet.ILCompiler"; version = "7.0.18"; sha256 = "0518w3ifl093jap27p2xhh923if5r01jg70sbkfh3sgc7vwqjsdd"; }) - (fetchNuGet { pname = "runtime.win-arm64.Microsoft.DotNet.ILCompiler"; version = "7.0.18"; sha256 = "1h2fkbva4ddaswkw3zq4bv7gvkxx811svdczxvjx2vhw2fyw3b45"; }) - (fetchNuGet { pname = "runtime.win-x64.Microsoft.DotNet.ILCompiler"; version = "7.0.18"; sha256 = "07sbkvvx4ixl0yxy91y0avbr7fv2j26p25c9cq42w4jkjzacfjc1"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm"; version = "7.0.20"; sha256 = "0ab1l6r77a11sk450jhhi9flvsn8gp4fz2il2a0vk1lw5rw23047"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm64"; version = "7.0.20"; sha256 = "050wdpwp7hjk5c9xyx0vj1cmslcdl9acldhxs6al3nx83vssa1kv"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-arm64"; version = "7.0.20"; sha256 = "0wi679cxlfx8s5nl3iqgma9nmxzbi73wamxshgpaaj2dg3z5xrqz"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-x64"; version = "7.0.20"; sha256 = "0bgi8rx7dam9727v936h5ap81fx4k9n708002raw9v69p8yva5v6"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; version = "7.0.20"; sha256 = "0h6f18k05w66797yyj7yqbf6jv5k3c5r089mkw43y4gbqz27vbmy"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-x64"; version = "7.0.20"; sha256 = "1xlqjar4j0g1a7wf8ixjpnn6i19zxr3c7pwr6jdn06yzbi20ri7q"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-arm64"; version = "7.0.20"; sha256 = "0l2md2g657arlf703vf9y8x1k0zx50zf4wy4f96m6qgs9jx8s6py"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x64"; version = "7.0.20"; sha256 = "1r2nxc0nm2n5dc7laf65yqbjv23g9fzwcvv8vhrnvir6j3lgxfcl"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x86"; version = "7.0.20"; sha256 = "1n0dz6k338wmadkgb7x0jywz2qxf3427wkjw8xn2zdz4m1fcj58c"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-arm"; version = "7.0.20"; sha256 = "05srdy7bvgasr0yx1mxkilbkls14k0dmp4mzc7jiqv7xspc4jwwn"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Ref"; version = "7.0.20"; sha256 = "00npza90sgnvls4k1k95mhgiw5fpxcrxf60fi17k871m6igdfh1q"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-arm"; version = "7.0.20"; sha256 = "1q86xz3v8p24728bl7sw0flhzk042ygxa23k0qyhxdn0qwzzq6bw"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-arm64"; version = "7.0.20"; sha256 = "1jjb4jsnm0f1q0s8199nympm9vifaa129l0bj4j1z94i1g85nw1w"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm"; version = "7.0.20"; sha256 = "0cn8j76jbbp6vpf00kr1wwr4z1ij0sgdymawff32qvj44wfmhpnl"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm64"; version = "7.0.20"; sha256 = "0cbk7shnry75p95zyg14pszf396pgpyjwzhraqbds5mmncqisvgz"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-arm64"; version = "7.0.20"; sha256 = "02fz22di6ax1819spb4v22nb89glp3h08kk88am6rx3vgb440sbm"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-x64"; version = "7.0.20"; sha256 = "0wvg2rfp4v8cnqkfjv4ifj9q0bd3vljqnbnf719nf1h0ilmcxcjx"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-x64"; version = "7.0.20"; sha256 = "1mq59gpd6p46zl2nl5ijjncghx6fms9nig9zqhxazjd15bqy0l33"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-x64"; version = "7.0.20"; sha256 = "01xpgbphknkjqgsbcngvckg3a8q0y74g409v7hmxsh7rjcradnqd"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-arm64"; version = "7.0.20"; sha256 = "155z494bpri732h1yba6ggmalgwxw68qjpyrbzfj9mi4whwy6p47"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x64"; version = "7.0.20"; sha256 = "021mg80b9x25jpdm2rc6m91wib15bb5arkxjjfa0cp509i5hnshi"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x86"; version = "7.0.20"; sha256 = "0jpxs82ndrbs3r28951v0p31ngfkhcs0k7plgywyvd1lpkvdm2nh"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm"; version = "7.0.20"; sha256 = "0bcnw653m7w7if6z84rf4k3mr7hdmvnlv4icflk0kc5jd98bkvhc"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm64"; version = "7.0.20"; sha256 = "03107bdy4i9sckpwnk9s497sfq1prl4mccbc3mak43vbnfyqrsad"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-arm64"; version = "7.0.20"; sha256 = "1lhlaj2ra25jjr6f6rq5rw4wg981h9js7amld10ccyg2vfrswv9d"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-x64"; version = "7.0.20"; sha256 = "1w5r2nv27h3csd5qd3sx2zmf5drrp3ygb519m4hvn5lazyfah5p6"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-x64"; version = "7.0.20"; sha256 = "0r002hclq07y275qwj5pq0nxmb6k8h8yglcynpvw8m0pz8d9mr9g"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-x64"; version = "7.0.20"; sha256 = "0msncsn0lz0dvc6clvc4blq8a1bv5qap7qx27fdibdx24i5lsjya"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-arm64"; version = "7.0.20"; sha256 = "13x37m9mdg8pvq1rzcrr4bp5yqaayz7173p39s623n8zjxrh60ww"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x64"; version = "7.0.20"; sha256 = "1cv1zmkiz114vk0b0spnnczagbcks5k1fb198lc88pi3c9dpfm0d"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x86"; version = "7.0.20"; sha256 = "0wpf2p1476ns8xd5qvih5llswag133q4s6mj62yzbba890lg5y78"; }) + (fetchNuGet { pname = "Microsoft.NETCore.DotNetAppHost"; version = "7.0.20"; sha256 = "02iri99mhfq9awdymsqhg86pg6qfgfig2r2w96jm9lbx4gkg1rgm"; }) + (fetchNuGet { pname = "Microsoft.NETCore.DotNetHost"; version = "7.0.20"; sha256 = "0g24nr6v86nikikfvg2b3d8im9cp1hib3xiccklbhkpbym3y98dj"; }) + (fetchNuGet { pname = "Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.20"; sha256 = "1dldykby8yfvq7r7kmlg5wi6spy1ngsxbs18ng34lcqjfxjjdnpb"; }) + (fetchNuGet { pname = "Microsoft.NETCore.DotNetHostResolver"; version = "7.0.20"; sha256 = "07ip7aflkg89gsbfm1w7sgidn4lvc3csrirzkbdv2jhm876bxz2y"; }) + (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetAppHost"; version = "7.0.20"; sha256 = "13pvjwqlacls6hz719lwc6rz0ghs29gxywisldwnwwbm9i6wdnga"; }) + (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetHost"; version = "7.0.20"; sha256 = "15qwwdf3c03gs916r3k49wwg411cmrf5xldydkxjjab8pavdlq0s"; }) + (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.20"; sha256 = "1mjwlxy5gy7k2iil1jcrssqspn3hrpm2dqwghzx9dr61wvpl6sq6"; }) + (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.20"; sha256 = "0dwpzaasn5044aqm2xix3czfgrwx0y0jwis6p0x8n8jdqyskpim2"; }) + (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetAppHost"; version = "7.0.20"; sha256 = "0ai75b700v76rmqlblxpkwsd97jidfd5kn3jl0y52yq0ylvc4zyf"; }) + (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetHost"; version = "7.0.20"; sha256 = "1jkh7kjhaghslhlx6x7w03kdxi1xbrgxwdj9qav0ci7nvf5j00v6"; }) + (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.20"; sha256 = "0k5skgnss5hknr4r15gxph54zhk65cnglp117gih8qxyzn0245m7"; }) + (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.20"; sha256 = "1kllpbyldix05ab1pb775ykxwh9lrcji9vqbyp964b8m68r9yf1h"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetAppHost"; version = "7.0.20"; sha256 = "0a5gajmkchf2ad3zwmjaa6mw72snf6hrf3xz581mn8qnjjv68whj"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHost"; version = "7.0.20"; sha256 = "0xsyd8jvj39z99ga9x26g1fi4zi39pf3ym87fr9102bg5rllj8m6"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.20"; sha256 = "18jp8cykpj40r61ji5fpvfj7yw6cw041l6r4q30am9sj80sgq73m"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.20"; sha256 = "086cn7jilskr7q2hfy810f4hshzhm9r6kvd2kjzvjwf93s0qfgya"; }) + (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetAppHost"; version = "7.0.20"; sha256 = "11y8c16m63kb1masa0x7ympwjg93ffyp4yfycd0fcf0zhzyw00bx"; }) + (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHost"; version = "7.0.20"; sha256 = "175qh1czpm8vs0ifbg3iwgz2cn3v0rvd51g1k81k6j00z9gmhrsm"; }) + (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.20"; sha256 = "098177bqda2viwzcabsxrpj1p45jqi5fnyfg9xnnw198gh0iskvj"; }) + (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.20"; sha256 = "180bkmdr4h14a8l2gs9khm835037pw8aqgjz4snx6wxhq7jbdypr"; }) + (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetAppHost"; version = "7.0.20"; sha256 = "0jdvi1pcb3fxqa01633asixs93rg1lfq98vnba018nbqdifqyvf1"; }) + (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetHost"; version = "7.0.20"; sha256 = "09can99m6psr9v93awwkahyxq899sg1l6p8gpp4qscqwpil22r4c"; }) + (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.20"; sha256 = "0idzsi16ny8bjhii6fwjwqn8wmy8x4q2y0zx4d1vmxfx51ym634f"; }) + (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.20"; sha256 = "1k5yigh196dn961bbvbyy8jfvw8ghmk4da313a304b4m9rf6q5c6"; }) + (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetAppHost"; version = "7.0.20"; sha256 = "1rnpmqmgdw2y9snjj3kp2irg1aggkq2lccd7v4q53ghnl55jdil8"; }) + (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetHost"; version = "7.0.20"; sha256 = "0xibpawi6nahdbrdcb71panhx4w5zlmbfxspwmljn2a77sy9caw7"; }) + (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.20"; sha256 = "07qrpww6nd67xjj3jin97jwiymyxgpm9mdg4raxs9ss0pc05l5xv"; }) + (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.20"; sha256 = "0dskgn19yhsq28hvzqs422bq64y5gx5cx33m1m3zq8mfycvscnsv"; }) + (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetAppHost"; version = "7.0.20"; sha256 = "0k70cb1lh6j9qg4pjy6r58z0n5xip3l6i6vkgrdx2rqqvpmq2ky8"; }) + (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetHost"; version = "7.0.20"; sha256 = "1qr458jrmsb9nijll88hp56msjmvnk20q73x7qypvqlydsn2ap3y"; }) + (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.20"; sha256 = "1503pddh5klr3z9kpmbxnr4w472v1w8ggh37iqi79z3b0x72zzi6"; }) + (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.20"; sha256 = "09ddji35a92iq9f4rm5xmz1vi3bki75xskq3iypjbc52ar7wkfl1"; }) + (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetAppHost"; version = "7.0.20"; sha256 = "03338hfl2sb8ca9v3a42b4fgr7qyv3r2khc0ydhif45r0xjx6zrx"; }) + (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetHost"; version = "7.0.20"; sha256 = "0lnm29n2z4r7kjwyfa5gbl8qc5nbbc5qkl9kg8vj2xb9mlk5zsmz"; }) + (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.20"; sha256 = "15ah793265ikivb5iqblcl4x86g4bqgwmhdlhikgv6a18bq32sjz"; }) + (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.20"; sha256 = "1jnz72f7m292863wvpmm12gwdnqwbvm45br1958f0gkgp0zmhyjs"; }) + (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetAppHost"; version = "7.0.20"; sha256 = "18k3qs54a4x342ypc0p54ch6xwx9wpfgb5f6iyw0i0f8jjxspbay"; }) + (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetHost"; version = "7.0.20"; sha256 = "0nyk8x3myh6b0jfka8mvxbhlzl38qiljky8acfkyvw4dzw0y63rb"; }) + (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.20"; sha256 = "0541ykf9hhc56jin59lg5iw96apcg740wg1hrj0m8dagjll2c599"; }) + (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.20"; sha256 = "09dlmiqcscdrvjrg9w5mjlz59ly0la4as4hkadz6j4mqvv2k7j6y"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-arm"; version = "7.0.20"; sha256 = "11bcpf986m4wzrln9v4frh63arrg9r3vmv2lq7x338xnrwxadz8q"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-arm64"; version = "7.0.20"; sha256 = "0i07x8kwsifhzkbx1j8argx31g9dxppqwaysn21cd623d16r2g1i"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-arm"; version = "7.0.20"; sha256 = "0aq01ld9k4064bgki4q4g4fl08i82pnh5xgxaqk3k48nbsbrzvwc"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-arm64"; version = "7.0.20"; sha256 = "18an54s6jldf330ckigig6s1xnadm7zygrlb35qrhawvygbqayal"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Ref"; version = "7.0.20"; sha256 = "1fv6p9idx6g58y0khw7jl23lkwj01l8246mv045i9q6sp3fm9m2v"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-arm"; version = "7.0.20"; sha256 = "0qfv5w1s5pj3c46jx2g75parx12p40rywacvb7v0fbllj2nvm89r"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-arm64"; version = "7.0.20"; sha256 = "10d13b4vl5nhk3iqcpbhdhqgwmymzx875w4yq3pwjkcc2vyhg3j5"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-musl-x64"; version = "7.0.20"; sha256 = "1rbl46pfwh1hkbf5djy1khqyiv2fivkgxs0gcnpx0kpx4lncf73a"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-x64"; version = "7.0.20"; sha256 = "03760jw9bbhcg5gmx5z5xjyccl0sv1lzznk3hx2ynwrwg6dhbkyi"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.osx-arm64"; version = "7.0.20"; sha256 = "1gw4wlraqbr5m5w62wyfx7gsvyj92a8h7i04n9jgc6sfs4yfrsz4"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.osx-x64"; version = "7.0.20"; sha256 = "0fcph5pd0myyzzl3ihnvp6wii4vl09ayri5ba12xgixb3qidskgp"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.win-x64"; version = "7.0.20"; sha256 = "1zxpbwc52xsylc6kwk0sqf24cgyv9b2cz9l3icpl1hnkqims9xy4"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.win-x86"; version = "7.0.20"; sha256 = "1jhw9f2mzx8a1bqdiq7ylk8nccwcqa57sd31ykd7lzq1wbhy2r45"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetAppHost"; version = "7.0.20"; sha256 = "11l84kx7v6y10kzlsr74kwvvz44wzj476m5mkm2xv2b8pv1z0i7z"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHost"; version = "7.0.20"; sha256 = "11xxvyals3q16bzjd7a4gg0nzidsm822aa92yd752jzcxchdn6z0"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.20"; sha256 = "0dg1m80mxvabdkqjgynnws6vlzj9469d5nrjnk5x2zqcsw9kjj08"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.20"; sha256 = "0rdq3z66azlwsak8n8j9jz8pj0lwsvz9f7n6k7x6mlz20wcw4qs6"; }) + (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetAppHost"; version = "7.0.20"; sha256 = "02ymh38rj3pwak3g9qhviv64kqpclcp40paijg7m184y5bli68b3"; }) + (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetHost"; version = "7.0.20"; sha256 = "0s9bca6p8j96as25r22vbcmyyhbavkczdk68ypd7qn4g1s44l34w"; }) + (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.20"; sha256 = "1mi25ilkzw9375lybrmi78g24xzmcz7mnqgjf8y9qvivwsf7ysgn"; }) + (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.20"; sha256 = "15jfwa5fva8qz6g2gnbxnppd9cfs7r8fspc9xb7n9zgxl7w5n6gd"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-arm"; version = "7.0.20"; sha256 = "1xvhyafgxaraf97s364a3jk5dad4hsssqqvzx4i8qwg36fdijcq2"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-arm64"; version = "7.0.20"; sha256 = "1r27bm12x9gwzv0cid1fdzx9hv9bdy6p6a65lypjzvgwfdgnyksv"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-x64"; version = "7.0.20"; sha256 = "039l3qdsz3ima2jgvp8nqby68cr9mvj8q2xd0lmx37drxvck7bx4"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-arm"; version = "7.0.20"; sha256 = "05zybhb8dc22f934gj3f55xvsfvqizq0nf4d29ns3z9d370jklp3"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-arm64"; version = "7.0.20"; sha256 = "01rrnbwjpy138pra53ypixk3cr528fazjsl3vsrvf6jnymgxlb4y"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-x64"; version = "7.0.20"; sha256 = "0g09yyi0a00q9xa51p1k9hvdj20jmy1ss2r2l28zk9s7lwyih7kl"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.osx-x64"; version = "7.0.20"; sha256 = "09kb949p1qc6rz6mf736id8qfsj6dq8azbrpzx19xzpnylqjch47"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.osx-arm64"; version = "7.0.20"; sha256 = "0l76v2w34igvh6i2hgvhfwmkcch1574ylwl1159649pg7c95kj7c"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-arm"; version = "7.0.20"; sha256 = "1jj2mzcn1dd66fic37wnyrvd07fplrsdj4azrvi0qz3qyykc8wmj"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-arm"; version = "7.0.20"; sha256 = "0q8i69qc58kyxzxfz0cqjlbjcz1n3p130nz2q852rvvcxa4644zc"; }) + (fetchNuGet { pname = "runtime.win-arm.Microsoft.NETCore.DotNetAppHost"; version = "7.0.20"; sha256 = "09xk16nb9wrsgjr531dhd7mvpqa7b50akmkqrlndyspma7cbvrzn"; }) + (fetchNuGet { pname = "runtime.win-arm.Microsoft.NETCore.DotNetHost"; version = "7.0.20"; sha256 = "0l82bqvqw5qqhkgrxfscc4dw197b5sh7ic63pymdhixvx0d3fi1h"; }) + (fetchNuGet { pname = "runtime.win-arm.Microsoft.NETCore.DotNetHostPolicy"; version = "7.0.20"; sha256 = "18sarln3kbkqc1ab9jnadcqqxs8iicf7jqldxzbjzhdpmf96vwna"; }) + (fetchNuGet { pname = "runtime.win-arm.Microsoft.NETCore.DotNetHostResolver"; version = "7.0.20"; sha256 = "1vh3ymhv33qysc4vj4gb3g1rgajy4jr4kxfjcsq2myn96aan84i1"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Composite"; version = "7.0.20"; sha256 = "12w9hlq70ynkrgqbr555lnqmbf67iz3kaci2vi07zsn3mmak3z6j"; }) + (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.DotNet.ILCompiler"; version = "7.0.20"; sha256 = "11c31fzq4qfxcsz3p6vzdfnaqs29saf1dnmzq7l90p6ylwsblc7f"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.DotNet.ILCompiler"; version = "7.0.20"; sha256 = "087q3p57snmvvzzqpxp3vwvi2q21kzlk8qh1w6axrcjdci31xmji"; }) + (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.DotNet.ILCompiler"; version = "7.0.20"; sha256 = "1nc8m38jsqai934nn26f6dkl3c0r4sabssjiizcixdyypzlv3hcf"; }) + (fetchNuGet { pname = "runtime.linux-x64.Microsoft.DotNet.ILCompiler"; version = "7.0.20"; sha256 = "0iyn0rkf9vf7vbd58xs24209557dzq1dppjb5d35g39z2kh06k1c"; }) + (fetchNuGet { pname = "runtime.osx-x64.Microsoft.DotNet.ILCompiler"; version = "7.0.20"; sha256 = "1b0ys3g3bg9kxxvs1h1kj79b9n9nl2g6hjhmb3c2cpp4slzlsd3d"; }) + (fetchNuGet { pname = "runtime.win-arm64.Microsoft.DotNet.ILCompiler"; version = "7.0.20"; sha256 = "14nq8b869k43chsn4ba3b3ww9w25fip39ik8rfxa1z8l5k4k6xb0"; }) + (fetchNuGet { pname = "runtime.win-x64.Microsoft.DotNet.ILCompiler"; version = "7.0.20"; sha256 = "1gajqvzf18p0jppvcwky0shkmw4nzwz8hzx4kwblrs41d8xmw39a"; }) ]; in rec { - release_7_0 = "7.0.18"; + release_7_0 = "7.0.20"; aspnetcore_7_0 = buildAspNetCore { - version = "7.0.18"; + version = "7.0.20"; srcs = { x86_64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/39baab6f-96c6-42bf-b772-29830158176b/cde064792e7f22506d692f54993fe5a5/aspnetcore-runtime-7.0.18-linux-x64.tar.gz"; - sha512 = "d2c3af93b9b8280c4e519f052f443e0504ccf7a04b3eef60500b2e3a8874a60a3a545ca936f8433887bfa6388106c19283c5a6a2c78ffdc19889bde3edbefbda"; + url = "https://download.visualstudio.microsoft.com/download/pr/09e67261-215a-4003-bcf8-f90d67dcd02b/b32cf12a5c10b1f74e21c8cb03880891/aspnetcore-runtime-7.0.20-linux-x64.tar.gz"; + sha512 = "62ed9743972043a72e48d5aa2f7fdf3483cf684a32b051315004d1c778e9712bf66e5e7a97a5a53993fa8e92daf5bacaf2cdb3eae44bb9a9e25532b9a80f4f70"; }; aarch64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/119db743-de75-4bfd-ac51-f2a2bfd1dd1b/4e96dcef933e3787a34691a86f8972cf/aspnetcore-runtime-7.0.18-linux-arm64.tar.gz"; - sha512 = "62bc42a8d094be8253be90acba02253c27afb1eb6b06976c3adea74f967f522bf7938eaed25c824d6e36a9fb71f7248ba315cc67577a3c7fb73b0d3d7a41ecac"; + url = "https://download.visualstudio.microsoft.com/download/pr/ae3027ce-cadf-4510-a1aa-125958cf0432/c3d958ba80ec21e9d75ca5e8f43ec2d3/aspnetcore-runtime-7.0.20-linux-arm64.tar.gz"; + sha512 = "dfb1c1bef4d826defd3d995599a5c03e1bf1a64c65d98b675d6c05dbb7380d98233953e68d53fc5ebec60ad4ef75417073fb1fb3256a0176bb964f0e01161f6c"; }; x86_64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/79433d6a-6ac8-4c1e-851b-a9335319d846/c91648d921bcec7bedebdaf83cfe0487/aspnetcore-runtime-7.0.18-osx-x64.tar.gz"; - sha512 = "50cecd47a75498ffd2862b3a470c0e05848853b163925c0fb27a7912fc39f77aa27b91d4e780d7ef90e6bce22510714132cbdc06cee0db7547c9d79258d29895"; + url = "https://download.visualstudio.microsoft.com/download/pr/65fff3f3-1b87-42aa-b1f9-04e7e318c1af/4bfbb002455b9a037e75791e99a18c19/aspnetcore-runtime-7.0.20-osx-x64.tar.gz"; + sha512 = "00677819450d14d9adc2b65f25b9a069bc2b43f72e4db651e77fe0e48320be8eb7c555277281de968e75d0fb19bef960d4dcb27161b8c57bce076ee18bb5ca98"; }; aarch64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/be772e15-f6f4-46a4-b0de-2365ccafa69d/fac2f4ae76ba20f7d16e07b60c2b8801/aspnetcore-runtime-7.0.18-osx-arm64.tar.gz"; - sha512 = "3c56c17545d530a35cc13bad410da1caea33bbcc7c3a857b4d68f48a64f02cbba516d83cd0a3fea9a8ab463dac8140a6c079fb63887c176bdb2a44552dc71852"; + url = "https://download.visualstudio.microsoft.com/download/pr/2833b957-8fb7-45fa-bf85-4960260ae344/fa4678e8c3ceba67771b5195a2343049/aspnetcore-runtime-7.0.20-osx-arm64.tar.gz"; + sha512 = "7de161ea45faef7693d78ca44b585ab73fc183232d3f8d229fde3d05d696818d8d6402ac7ac86ce239a0a6cdae8fc2eafbb445e99443d0c7a4aab3781df35be6"; }; }; }; runtime_7_0 = buildNetRuntime { - version = "7.0.18"; + version = "7.0.20"; srcs = { x86_64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/9f48eeb2-ca25-4828-87d9-1114e751fa6e/df269cfd6b9661bcd776ed979541c0fe/dotnet-runtime-7.0.18-linux-x64.tar.gz"; - sha512 = "9d2aaf11e798d8dbfa74a93cfc53c6bb631cfb041b5dc55c208f980f61808e872dfa9880c7d9d4b42aad934e5350c9e8f327664909054fa0109636158701b4b8"; + url = "https://download.visualstudio.microsoft.com/download/pr/2c5981ff-0f0c-47ab-bff4-0ea4919b395b/cbfdfa7f35d133b0bdef87fa3830bfa0/dotnet-runtime-7.0.20-linux-x64.tar.gz"; + sha512 = "87855297338555a7b577d7e314e5dbf2c2350f8c867a489cd1e535634bad5c123a1871464d37fc9421837ff5d426c2eadecbe0f60bbf3fd32bc2461f47790a40"; }; aarch64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/e7dc89d5-3287-4f82-b1fa-e0a7f12f7736/3206b55ee6d717f4008a46e67048c100/dotnet-runtime-7.0.18-linux-arm64.tar.gz"; - sha512 = "7cf7d3b0b12cec234227529c66f2a2ecab49e63af2c766d7539b6591f709342da4f2b846726630ab6104a19cd94c1eed5ec66e1a773e3477b344941bc1ee5f41"; + url = "https://download.visualstudio.microsoft.com/download/pr/af6e12de-a63c-449f-b35b-b72ec6ee3da5/ae129eca3d734117d14cd5965dca93a3/dotnet-runtime-7.0.20-linux-arm64.tar.gz"; + sha512 = "c245125ee2708252119a1544556e1aa9e00aa18b2303de69877da10c6c17e3f25024b749ca93b53be76ee0e8e4a75d403f7019b8bc2e50ed1278f656cb2f7e06"; }; x86_64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/2bbb4960-9fb2-4bd9-a525-80e6260b5979/adecde0cf003ce421b06e76197627533/dotnet-runtime-7.0.18-osx-x64.tar.gz"; - sha512 = "ba790572b8b37a33766dcdfae319c5021568e49be3d9a55c688655b1b4174faf6cf20b3077fefaf57fa2b12261b682a685345db77034412dc883cfa05b8e8ca9"; + url = "https://download.visualstudio.microsoft.com/download/pr/cbade9d9-be1e-46c0-9f90-13ba882965dc/31c86e8f4beaf0e5ad9ad35a408be7de/dotnet-runtime-7.0.20-osx-x64.tar.gz"; + sha512 = "acdcde92f2f2e43584ee59be447f778f4a152c308975c7bdc5c2372b5bbd3092eb9d2233aec3b82756ba1e352a0877ffc17e4c8cfb20a9de91ca6db54d79b591"; }; aarch64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/38526acb-1b20-4fd6-8a4d-09d72a48c9f8/8db4c13c722425ca9b82fed60d539815/dotnet-runtime-7.0.18-osx-arm64.tar.gz"; - sha512 = "f9a5f09afd9c7cead985cda7db03fa6bd6b684aecedb2b8bfe3bb2569704c233501b1f9888e2e26f273d5ab124b0b9fecf3edf8c7d0b0908f5a499323c67515f"; + url = "https://download.visualstudio.microsoft.com/download/pr/50dbf5c1-942d-4fd8-b646-1f024326ec1c/5fb99e9dae294298a8131757b3ea829e/dotnet-runtime-7.0.20-osx-arm64.tar.gz"; + sha512 = "af1cb62e29c69648ebe334e651c2703cd5e87fa0bb28c670bacb3b3dd1608aeae35ae53402c5eb4ed8bf34abd831a08ccb5ef84e5ec70617d9f8d9969fe7b8fa"; }; }; }; sdk_7_0_4xx = buildNetSdk { - version = "7.0.408"; + version = "7.0.410"; srcs = { x86_64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/a256265b-0ec6-4b63-b943-bc27bcfc98c0/47c8bbd54d7f6dbfe0ca4985c410282e/dotnet-sdk-7.0.408-linux-x64.tar.gz"; - sha512 = "89d39601a27cbbc74a5dbbfc6dda6661220e76b73f7387fec6558222aa144734b44db5788bcb888c7f49d4659c8b0ea60794f93ad1223c86ceafdddf6e6b70e2"; + url = "https://download.visualstudio.microsoft.com/download/pr/0ddc1522-2361-4394-97e9-52318bf51951/c5aef30601a86810f1f8ea89d42c26a0/dotnet-sdk-7.0.410-linux-x64.tar.gz"; + sha512 = "20b8e02979328e4c4a14493f7791ed419aabd0175233db80cd60e2c004b829b3e8301281ea86b27ba818372473accf5a6d553e5354c54917c8e84d25f5855caa"; }; aarch64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/460f951f-0944-442b-8474-555e20394ca8/5fcf6b1845d87d772f919737b3dd5f55/dotnet-sdk-7.0.408-linux-arm64.tar.gz"; - sha512 = "7c5e18f165c2d74345102244a617b475b68c208434512211af154b28896ebe5487caeff96b278e877af384e6e0deb476d38be16d275ad88af1ae177afef561ac"; + url = "https://download.visualstudio.microsoft.com/download/pr/3e408891-74af-4ccb-9ce8-895f6806a97d/3a589bbf6e264059544cef47be672540/dotnet-sdk-7.0.410-linux-arm64.tar.gz"; + sha512 = "2db6a3b9a532d2f59a2b459e634206913a9585c821f3f578a421e3bae346a92dd9b85b76ebde343ca3057275f7ec4d0bca71cbb7f2badb6dcdb516244e84da46"; }; x86_64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/dff43b03-6ca6-413b-a48e-82f593c12d40/5760ef99163056c6850f0fe140e01958/dotnet-sdk-7.0.408-osx-x64.tar.gz"; - sha512 = "b183b1a84b345f8e41701f0f1cdcc68d0bcf286d3aad53bf04d860bc6260bde87a6797f6c55ef807609680c10b6efea6bcdf6732d3fa097ffaa99b505bbea7a9"; + url = "https://download.visualstudio.microsoft.com/download/pr/fc8614cd-f333-4adb-815a-9bbd07e02b16/0ccf5e50cf8fa5c600716395e240aff1/dotnet-sdk-7.0.410-osx-x64.tar.gz"; + sha512 = "782e15c19ce20aa8333566f23c2d3cdb8e89c7626de6330ddf670c4426e30cc854e44ff3341578622aecf210fa66ddcb63a7d2ad629ed92cb5582ab670f953d2"; }; aarch64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/749ab69c-0726-4503-9e92-035f13753374/68cbf2a5d6c8e1184f5d8d8ca3bc49a6/dotnet-sdk-7.0.408-osx-arm64.tar.gz"; - sha512 = "ce1b9f7bc67c80b8774b7a8071438027f322c35c330be2667bf15a80a8826a32d9f8a7d2762ba7f3c7417b31f3ac288f336956f6e701d282e80f02c68b805177"; + url = "https://download.visualstudio.microsoft.com/download/pr/bfba06ea-d182-4a12-8066-fd78413e6cc3/f7940d1e8d8ae641a3a3d65b6bfa1071/dotnet-sdk-7.0.410-osx-arm64.tar.gz"; + sha512 = "c0ef1914f2b298504433bca9cdab02dcf324421ece39657b66523f13b7a7166e726783673a602fb462f3db5c53f59a89381b918e7658d49a57763b43cf75cedc"; }; }; inherit packages; }; sdk_7_0_3xx = buildNetSdk { - version = "7.0.315"; + version = "7.0.317"; srcs = { x86_64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/e4cc9a2f-7fa1-4ac4-b839-3838d8762ee5/caef8745bcdaf1c089ade6cdb89eee5c/dotnet-sdk-7.0.315-linux-x64.tar.gz"; - sha512 = "ffbaca47ee2a3b601abd1e8ccc99981e55d5f904072d5dc76e0c817940bf1ac1b71f5e652f649112bcee7328bcf0408d203b2f7c91d58a6aaa58c8ff553e49f7"; + url = "https://download.visualstudio.microsoft.com/download/pr/3207f51e-26ad-4d43-9249-5e03e93e5895/af409554ce918557a05f8e8102f199ea/dotnet-sdk-7.0.317-linux-x64.tar.gz"; + sha512 = "906ecbfa31b10ae5e2a8ba713d113ccd83e3a9b9e4d3e322482692891542959e76c51db5dd3825fb4a2cf1e951737006a99be7290f309d6822567d3a533a7a9e"; }; aarch64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/12286d30-5894-4ad5-8dfe-8bd03e9fa0ee/58973de54201a7f1963cb524ba421613/dotnet-sdk-7.0.315-linux-arm64.tar.gz"; - sha512 = "a480e012760980121af4eda39dbd0640e824de13f10e916a95e77b7fb591a3c516d40da45fe56dc07cfcbdf24074f4579145d00d45c84ef299ca9ee779c43903"; + url = "https://download.visualstudio.microsoft.com/download/pr/e08e38c2-46b5-45ba-b318-6b0949b3cc2b/1780549adba82e521439b7a0511229ef/dotnet-sdk-7.0.317-linux-arm64.tar.gz"; + sha512 = "22badcdb2cba0f1bedb1fcbdc99269a66a01a232193e00b42823806cee5d46194b8dd008a53e17455072a410f77bd351676f351670be96c13572d8e30cfad180"; }; x86_64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/32b714c0-96fd-4179-b2a5-34cd29061e5b/3db1ea8db28f706a8af10dd57d1cb590/dotnet-sdk-7.0.315-osx-x64.tar.gz"; - sha512 = "7a7d3c32f71a89bf0d9e809b068252c2496109ae226acaef163f7221e4a8231a2faa2e81ba0a95e7aeef7780691cb59b993e999d45076a280da518941b9fd2ed"; + url = "https://download.visualstudio.microsoft.com/download/pr/c03db249-372d-404f-8767-dc7e4a104ade/49d2336dc14b70dc937d8f91716e4fba/dotnet-sdk-7.0.317-osx-x64.tar.gz"; + sha512 = "d3dbd0fe7cbc62388f150adba5d818abee3986863d757ce63088f4feabf801052c08a608acd5036f97191435fe99224acb12c7365be7f77def28553a231ac3c9"; }; aarch64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/1586c0ec-bae9-450c-83fa-987499e2c9c7/8e2855e078b035404b5fea4f658af1d7/dotnet-sdk-7.0.315-osx-arm64.tar.gz"; - sha512 = "f146ca3f530a96fbd14fe550cded99d36b35dfef4536f2a9174985c933db42c9a6d44708cab83c93a701f6482e0cf868e7aee92385cec201b9d0b5d5f348d642"; + url = "https://download.visualstudio.microsoft.com/download/pr/697b6485-989f-48d7-86ac-320529a85b35/5b5ed55e7e4e2c0a1ba2c3e0cceefe95/dotnet-sdk-7.0.317-osx-arm64.tar.gz"; + sha512 = "b5f367e1e20d728d7167c81e4146358e760f136b9ee0fc410d813c14366e38b09a069031aa8ca6d8df438435b6ab4e2e989be309e097169459365d4befaf9f5a"; }; }; inherit packages; }; sdk_7_0_1xx = buildNetSdk { - version = "7.0.118"; + version = "7.0.120"; srcs = { x86_64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/4e25d320-2883-4b20-aee7-035d586e1426/fdbbb8209dd2ba57a87351c55ef80e0c/dotnet-sdk-7.0.118-linux-x64.tar.gz"; - sha512 = "4f34257abcc013683c0747f5510cddf26013f5ea4cd068efd7591b0a6e809038395d57842f163489884046bcc54ac7ffb406fff91701c9e371920efe6396b710"; + url = "https://download.visualstudio.microsoft.com/download/pr/8b678e05-b3c7-43ae-a31a-c007a901d939/934ec0853faa6404aa924c99e019f788/dotnet-sdk-7.0.120-linux-x64.tar.gz"; + sha512 = "cb9faba83ab276c935ef35b31f016ca4617f0d967c5b4bf1e993c2159992fb59d1dd25dce09928915b9ff586ead7acf92ec1dd96937c93317a99ca0c92b616c9"; }; aarch64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/eec4a58d-3546-4c40-bd82-b6533115b5ea/face73d99a1f01f655dfc3f9cfee2bf5/dotnet-sdk-7.0.118-linux-arm64.tar.gz"; - sha512 = "8e5358e3824ec141ee8406e0a67b8d1bf6965a4f9e7487bdee4ff02344078e95bffe4c46c0f1ae975b1caf7164387d35763f1b81abd2e66593b77cc0470cc957"; + url = "https://download.visualstudio.microsoft.com/download/pr/17a7bef9-4696-4b93-a3cb-f4bb9aaf2985/3e19b62d05b8e85b0a46d5dfd99196a5/dotnet-sdk-7.0.120-linux-arm64.tar.gz"; + sha512 = "f530f794afe3c3b9bd87b8ed509a1a13b1c8fe6f2bc6e6cce3e8cd6b56327c0ff27fc138122c2dad68770cc5015737e007ef5706599c189ef0cc7521cbf0b654"; }; x86_64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/7ba2b1de-4494-4865-bd90-3931dd6ec41e/4897e62ba478d5f3b5c48ab0c98370b7/dotnet-sdk-7.0.118-osx-x64.tar.gz"; - sha512 = "48081b4b53f7dd79aa9e11e362ab53d50b7efdb48f18fa8f0828c5e179c79b36b192b9b514e9effb04688838bf87a4d4b3763539fac34dd2f2570e1b8882d7b9"; + url = "https://download.visualstudio.microsoft.com/download/pr/b1da5ec0-e336-4716-b9ff-77f8160e7878/5c40db0a17dc493eb0be8d047d0c6885/dotnet-sdk-7.0.120-osx-x64.tar.gz"; + sha512 = "94deb9988509fcbfffc357114d0f5645fc6b6f6156664040cd5643a191bef10ae2fba4168aa689ff7da1a1b6fa779eb4e53a77a7847beceb7f0ba451d2c20d57"; }; aarch64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/b3541939-7484-4cc4-b8c3-abc2bea28799/610db5c984192e3710151de48f918d1c/dotnet-sdk-7.0.118-osx-arm64.tar.gz"; - sha512 = "25b2fd5a26b870f5b0f407acb3b0cdabe9287d2f7b7c3db81f85e34cecb7a3211a72ee54d0e0adafbbee151387e1bfe51e3681b6a0a347509bddd14b589ba117"; + url = "https://download.visualstudio.microsoft.com/download/pr/3d081107-64cb-46ef-ab37-41560d585efb/5aa6a70b37790bbea98d7b8c380eacaa/dotnet-sdk-7.0.120-osx-arm64.tar.gz"; + sha512 = "dc06801d8de34df698f93e3aa872d57131dd3e33ac4f7cddbc96223911e0ff32fdcea78332da7be0013362c90cd24db2d86c1e275297be6dd162948f2bd38cbc"; }; }; inherit packages; diff --git a/pkgs/development/compilers/dotnet/versions/8.0.nix b/pkgs/development/compilers/dotnet/versions/8.0.nix index a4d2dadfd7d39..e88c122e3a8dd 100644 --- a/pkgs/development/compilers/dotnet/versions/8.0.nix +++ b/pkgs/development/compilers/dotnet/versions/8.0.nix @@ -4,206 +4,229 @@ let packages = { fetchNuGet }: [ - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm"; version = "8.0.4"; sha256 = "0d0sgy8rczy78l0inaymcldmw1h742407c7q5y37hbnrw7p8ix7c"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm64"; version = "8.0.4"; sha256 = "0acxp6p5ln9sym8w65lz32ywpxvzpm78j09xd6bcjcz8n9224az8"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-arm64"; version = "8.0.4"; sha256 = "1plwp944v4a6hj12cg2g378bdl0dwr2jwv22hs7bd2gq56226mjs"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-x64"; version = "8.0.4"; sha256 = "1mhbxrj2d2xqp7lkl7129alhppjfma1a5z9jdp0pcik2dw6qd4xn"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; version = "8.0.4"; sha256 = "0g2sjwgkgni797p6ay51brvc9snbnrbsmv88002lnvqnz9zgbifr"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-x64"; version = "8.0.4"; sha256 = "07iw2h06awcvlicw0cdvvsrllln72jv3wihvpzp89jyfnjibv4xv"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-arm64"; version = "8.0.4"; sha256 = "108rwwmv331w8maspamfq3hpv1azajnfwxcj9mr4r7xn1137z5y9"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x64"; version = "8.0.4"; sha256 = "0fhiimqaqr9nf1d6snbni1g38472pzzb21pjsjkcvb9l4z51hbbl"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x86"; version = "8.0.4"; sha256 = "13s2ycyph5p2nddz6crny7zvkaz5f1xylcc8qg24nbwwmrl9539m"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Ref"; version = "8.0.4"; sha256 = "1s30dsd5ifv4yfdcjb9nm9gsm1wv3jkhy6b7a5xnk9pblpkizv1g"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-arm"; version = "8.0.4"; sha256 = "02d9xv1mzr88lvc7vpn7xpnm2jhbb87bl7jkmaj34fr1r52xg045"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-arm64"; version = "8.0.4"; sha256 = "040pfyazmii6vyp5jp45c9sw1vqxlrlbhaj6in7vscwd0s67cyi3"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm"; version = "8.0.4"; sha256 = "0pd4v31dfk4z5bbdb29477d2k9jxsg0zslba19vzk7azv1p6zcxs"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm64"; version = "8.0.4"; sha256 = "0qbm26aqlyj12wiiy7hpinxammv1a9dzryq3wkm3ij65vfx8r62s"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-arm64"; version = "8.0.4"; sha256 = "0gix41xc788xs8mcdssf4xrpp697h0n159a9j9sdg274cxj8vjhx"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-x64"; version = "8.0.4"; sha256 = "0wf4bmkw90lmwcp9158j4ywsqvik6hryj53zmm1hbaxpfxkjb1bz"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-x64"; version = "8.0.4"; sha256 = "0dji6ypar30bqzba9hvsbqf4wsk2zmp2blzg3czfnfbs3034wl2a"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-x64"; version = "8.0.4"; sha256 = "11rd1hbisjzqyrfz4raj0sl9ip4yznbm7in36j6z41awba2gai9q"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-arm64"; version = "8.0.4"; sha256 = "06k1wbyhphmlqrdfzwhg8pr6nd2mbm47jidzy38mqf4n4qqqb64j"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x64"; version = "8.0.4"; sha256 = "1wvyjsr6yd8ajv8726x7h3fp5kdk6cmgfzyrh0h0vpkn9padac5z"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x86"; version = "8.0.4"; sha256 = "00hp5n92a383rkn54n041r8092y3r7hs50bn3zazn5ngcfh2a02z"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm"; version = "8.0.4"; sha256 = "0fz5hmnfl21a7izs02p3hm6k15f6icnnxhb06wv8fb7fncv2qnjl"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm64"; version = "8.0.4"; sha256 = "00ql8vy9mpf3k3s1j0gd0ykb9zn98qpzibrf1sm4hyg1xmvarj8y"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-arm64"; version = "8.0.4"; sha256 = "00s7an056z82k14aq809264nhxwr3kmj34rwzch8v3kyl4pm955d"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-x64"; version = "8.0.4"; sha256 = "14y5nljc6fcbxz48f2m01kyfc9vqxpqwflh9927s77zfr9w2lid5"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-x64"; version = "8.0.4"; sha256 = "0pi459crkny9bwjl2z4znj9kgnkwl00bnc54jq9asi8zvssvcbfm"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-x64"; version = "8.0.4"; sha256 = "01apjs90laa069qxns2c5mh0fahrhx1771d0iqifbhwbgvcahz9j"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-arm64"; version = "8.0.4"; sha256 = "0f291zqarfa1c1gn4ih05gspr2mdv55rvzr2kdjql5vjk3qkjmh2"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x64"; version = "8.0.4"; sha256 = "128ghs7lkibpiw3i1kszigffcmwwdj3raak1dqli375qmgpafifk"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x86"; version = "8.0.4"; sha256 = "1fgm2q8hj43n6573pbcnj565kx5qshkkh9mfji49pswsva6g475v"; }) - (fetchNuGet { pname = "Microsoft.NETCore.DotNetAppHost"; version = "8.0.4"; sha256 = "1k9n0yjp1jsskacl14avbkjnp1a42dn30vhmvnmlp7bi0hirm451"; }) - (fetchNuGet { pname = "Microsoft.NETCore.DotNetHost"; version = "8.0.4"; sha256 = "1iqrvg36b2as1maik7b7ls1kwszl30njpp4pjkdljhswlh75c9lz"; }) - (fetchNuGet { pname = "Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.4"; sha256 = "1is3dr4m30shxbgqd2g916z192cx2gqvx8iijf05b976qyy0hnvd"; }) - (fetchNuGet { pname = "Microsoft.NETCore.DotNetHostResolver"; version = "8.0.4"; sha256 = "0056k3y221g13l62fb1cdghijhvml8aynn7lax40ark5rxplam3m"; }) - (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetAppHost"; version = "8.0.4"; sha256 = "1qy3zbvfjqa0gw80jxqd9va58zsf1gp5b6phibsi5da3mw6ybc8k"; }) - (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetHost"; version = "8.0.4"; sha256 = "0qpva0m8wn8g7l33ws166s4wr84cl8wd6q3zyp78pc7k309bdfjp"; }) - (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.4"; sha256 = "02fqkrq74c2rra33spcym05vl378xc8iyzamfpm6gjmkq4vfsca6"; }) - (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "8.0.4"; sha256 = "1k7f79x7yd066b0hhnbq1l183c4v5yw7lysbydfwng14z5x6x7h7"; }) - (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetAppHost"; version = "8.0.4"; sha256 = "1sv4yzx5bagrzqjb3wnb9wqw75ihblsdgdvhd3n7dfhckrssxlnx"; }) - (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetHost"; version = "8.0.4"; sha256 = "0brwpdv25lrh6vvq466k25vlhrvgiw7mv61jilm4ngdiyx3261br"; }) - (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.4"; sha256 = "0c9qjlzwr2y3h98xwmf3ql5kh4x8pp4k16brfx82n8ml8js4g5x5"; }) - (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetHostResolver"; version = "8.0.4"; sha256 = "1qy2n7n35wvc5nbik1s5pfirhbp332zbgzs1b3xlnhwdk6nmpcnj"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetAppHost"; version = "8.0.4"; sha256 = "0lgd5nxlz8na182n90y935hmcpry813nakg93ixk2cm5k3i0hy37"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHost"; version = "8.0.4"; sha256 = "1ig0h7b0rasqrg8hv7j7wqh2n6rxs8wzqllbspk88dyjf64mpvif"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.4"; sha256 = "0lm7a3k7ll1m13clkicnw9smnw29m493w6syvwaada67lxndvdqh"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "8.0.4"; sha256 = "1v8yf67dk51paqqvjmljf7x2cc127aykl2ylgqimvs7pn6xajrqb"; }) - (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetAppHost"; version = "8.0.4"; sha256 = "1i1xifc3nrfl5y7xv7iahfw3y9k2w8p8d6qd3p4pkv8rm1i1qqdb"; }) - (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHost"; version = "8.0.4"; sha256 = "0irkqhm47wqj1g32m7pbfyi1igs6js8c7m5xkkfm11a8d3ryy87g"; }) - (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.4"; sha256 = "0zhw9dxss2zql0qrr4jkj0kr9691b02aav01z2cqn0zbfxc5m5ig"; }) - (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHostResolver"; version = "8.0.4"; sha256 = "1h5kzx741pgzl5p0lsfzmqi1qa3c4yad1p11l54k2dxcbg08nzgv"; }) - (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetAppHost"; version = "8.0.4"; sha256 = "06l874c98i3dac7zyv5y416k6lm477733i4pf6205lamw95hgci9"; }) - (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetHost"; version = "8.0.4"; sha256 = "1ciiai9i9cac2fppd5x7whxblgg9jj0n7p5ff83dmylnb04gg0vp"; }) - (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.4"; sha256 = "168nnns2ppjij3bmbfvnfdpwijf689m6ryrhcbbnram1hxzr2ki5"; }) - (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetHostResolver"; version = "8.0.4"; sha256 = "1syw6863rb8p2g6a9r54hflz0dj750fkzm9dv18vib064r7x1lgc"; }) - (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetAppHost"; version = "8.0.4"; sha256 = "07y30dx317kwj089z5laxlw9dwllv27rbh8yhym2ljqajjknaxrs"; }) - (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetHost"; version = "8.0.4"; sha256 = "060z3c7iqqjy4p9chm7b18z8j6439dwb71cahpwxb1y0xm6y4hmr"; }) - (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.4"; sha256 = "0pf30jg23iymn5vvg1vsn6aibdqv26i11cl0zypfmq1bgh3cjh3f"; }) - (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetHostResolver"; version = "8.0.4"; sha256 = "0kmbglad3xp643b82qy6gsydib77i3rmlq23vvvm8i8pg6whzflc"; }) - (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetAppHost"; version = "8.0.4"; sha256 = "0x7pvxvl0vfc9lk6kb70v9rj0i5mc5xk9w1cp382npr1lc6l51m6"; }) - (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetHost"; version = "8.0.4"; sha256 = "0725n81lawhjlhqs7rhj00fx3ymz10xy4bpj5pmvwx78qrfja8bj"; }) - (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.4"; sha256 = "18kr4l7vbndvbq2k332axywk0jagci8892r0wxdxyqa9n0pa311c"; }) - (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "8.0.4"; sha256 = "03ng08sx2nvpkvk3nfcp5f4zh85h7lpq0d272d75n0axhffqmwd6"; }) - (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetAppHost"; version = "8.0.4"; sha256 = "0riwadg1qhqdr50js8jx6diaq4g302xwz1an9ngxd22p8xyy1dj7"; }) - (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetHost"; version = "8.0.4"; sha256 = "08j2dbg06vg09xz6r6jsqm4k6749z4bbpaaligx7zhrqihszvm41"; }) - (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.4"; sha256 = "02nkdqf0hi3f6720d0mqv27mr98wxycryy74grrbgabjjylawazg"; }) - (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetHostResolver"; version = "8.0.4"; sha256 = "08y3vckrv8njar2v02igsqm4lbcf31fk8f2ld8c74s219nmd2c64"; }) - (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetAppHost"; version = "8.0.4"; sha256 = "12vlqrllhgbg6n43yv8vav0bmj0xy0cvw4p1rg7knc63x83jf2rr"; }) - (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetHost"; version = "8.0.4"; sha256 = "1d1yxlyk2yjh5i4aidzc155j11qyjfly2vyhvsdxkh0arh41n96x"; }) - (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.4"; sha256 = "0pwq5vzm34wascaj77h2bhc6rrzbygx2vavr8qn2adz6pia1zvf0"; }) - (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetHostResolver"; version = "8.0.4"; sha256 = "00qr1ydbyvjxi57k0ig9kv1ngn84n0b48hznvwa8n86iqqk886q7"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-arm"; version = "8.0.4"; sha256 = "07mn92340nv63ld5r3ch8hc71p8kjk5zb7bh6n3n43qxmakr3ysc"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-arm64"; version = "8.0.4"; sha256 = "1lgvwyypl2l64qz23p1qdxzap73v3118pjkh0wh8g5qw54nfd3ck"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-arm"; version = "8.0.4"; sha256 = "1hdyb154xmapm4bw1bxs433k2sigjkb663cnxzhsgxwwxf8jd0z7"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-arm64"; version = "8.0.4"; sha256 = "08z2bhm5zva61ddb3psmlrwpi9snr37s96xyf6iqc4gl8pki65h8"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Ref"; version = "8.0.4"; sha256 = "0xi99c6gqhwxgz2yivihs9rxjnfl9h1nwgq4w5v15bjln1blmq9x"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-arm"; version = "8.0.4"; sha256 = "0a02aa93wx92rzy3lmyxpm9qns6g35wfzdf8zks4sm1f7l2jlxhp"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-arm64"; version = "8.0.4"; sha256 = "0m6sqgr37m0228jkkp89dyr6s2iidnrs9xaffhpaq7yhk578y61v"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-musl-x64"; version = "8.0.4"; sha256 = "1ws5zchg550sn6rfadrjfc9aqs62qz10pyqw7ddrgygffvb1sfji"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-x64"; version = "8.0.4"; sha256 = "1xd1zdb5d2cb4ivw3mj9gf3r02i52hmx7jiswbk2dx8q2k79hv6i"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.osx-arm64"; version = "8.0.4"; sha256 = "05gp1385441wwmjf7j08z4gkirzws06rxvwr7k1hj144ix0nyy9l"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.osx-x64"; version = "8.0.4"; sha256 = "1l9yahli9dan9szins7sckmjpwnpm3w9ic5qvwzdzzljn8pp16kl"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.win-x64"; version = "8.0.4"; sha256 = "05j3n1a5r5gh75mvw5pcj8my3l77kh7hdparl2cv030kk7cc401s"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.win-x86"; version = "8.0.4"; sha256 = "05rl747ahxqyvkcdmbcnn5rjr6pg6bc65h0vwc56vwrfd9nif6vq"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetAppHost"; version = "8.0.4"; sha256 = "1i7q1fjf07hpnd9hi9z0bavp9kqkk3z5ny8id8yfcansgf4j9bj7"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHost"; version = "8.0.4"; sha256 = "01vknc74yy1b36yip1gdcjcr7wij0p9kmglj1lidh6mr676mmi87"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.4"; sha256 = "1qms7i24h9rrzljfmw1vrj3ivfagr0lhr3xaack7vcq7n5mqdcf2"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHostResolver"; version = "8.0.4"; sha256 = "1qjzkqm0ra6yhazygw8ypzqcaq6ryvcw19b0msfnw3bkaiip0l7k"; }) - (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetAppHost"; version = "8.0.4"; sha256 = "0m37df28wji42cg3696acbrcq6k67y76rsvlr0gfx5qzgy1nfy8s"; }) - (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetHost"; version = "8.0.4"; sha256 = "0g7qb58r0jd17xbfvhbpd2pwvnmzmpq8jvd5m08xdq9krrx0cvcc"; }) - (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.4"; sha256 = "1b4ihr11yj3zjy7s9zhhailryrlkwrlnpa18z603gic157cbzz2j"; }) - (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "8.0.4"; sha256 = "1fr33r7cgiww338xad3n2f5xhjrq31chx4nj5kqwdh6gszx3ifj9"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-arm"; version = "8.0.4"; sha256 = "16148vl576zmc336q98a975zzqxz0xjwqkwh87ibxrlyz3w78qw2"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-arm64"; version = "8.0.4"; sha256 = "13gwa8ifir2frmsk88swg778lrjf2l0ij0x7pdlihhywy7gly9wi"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-x64"; version = "8.0.4"; sha256 = "1b1ml4mppgfl85lz8s34dk2b3s5j8vdql8k2233zhbcs26d401na"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-arm"; version = "8.0.4"; sha256 = "1d3yfjqnar7g1fzr6005n43q5frkihkgmpwy91m40jjzbivlid6c"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-arm64"; version = "8.0.4"; sha256 = "0qz21s5v01fls5y1n1zjbc0fylk5lynf5yw9fmgabh2s8gi05wxz"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-x64"; version = "8.0.4"; sha256 = "0bbw2v83aask0w18ir0i6q3xhmhxa5rahbcd5a1c6cy3hmj3mkx9"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.osx-x64"; version = "8.0.4"; sha256 = "1kb1y62mgzdyh11qcvb8mk7i2lmxbil7nwnyv2nys2fwqqkp0zdm"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.osx-arm64"; version = "8.0.4"; sha256 = "15yhasq3q0dhw1ssldgxwjdnf8q7az55bly4nmg198ngkw6aiikg"; }) - (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.DotNet.ILCompiler"; version = "8.0.4"; sha256 = "18z2lz3rbas3p0k9jahmdas72p5klfwzhqpky044wyp4knwh62dl"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.DotNet.ILCompiler"; version = "8.0.4"; sha256 = "1ia6kl7v2gmrm52417n4b3h61zvnc7pvyfwa0ighyb16p67zw8rm"; }) - (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.DotNet.ILCompiler"; version = "8.0.4"; sha256 = "012phpsracmrpgrv74ajyx0sva2rzbklz7a5pmi2m656j2mqnx1n"; }) - (fetchNuGet { pname = "runtime.linux-x64.Microsoft.DotNet.ILCompiler"; version = "8.0.4"; sha256 = "0pkdlqjpv15x0d87z85w7n40n804nzzdzjbjbhr9arijhl8ykd24"; }) - (fetchNuGet { pname = "runtime.osx-x64.Microsoft.DotNet.ILCompiler"; version = "8.0.4"; sha256 = "1bgwban9h8paav98v8m7bpfsqq85k52vhar4w50wv6kag81dradc"; }) - (fetchNuGet { pname = "runtime.win-arm64.Microsoft.DotNet.ILCompiler"; version = "8.0.4"; sha256 = "1anp4wazxx42r9hzqbyqdsg01pg344wgp36ksd03dvhkdn51dnyy"; }) - (fetchNuGet { pname = "runtime.win-x64.Microsoft.DotNet.ILCompiler"; version = "8.0.4"; sha256 = "1ppa0jcfwl0g7w71i90wjdfg72gm52pjp9izr5qig0sxfg266jsg"; }) - (fetchNuGet { pname = "Microsoft.NET.ILLink.Tasks"; version = "8.0.4"; sha256 = "055jpbwd3309lplrczs14yfvfhznr4k6cc7b50rdnlrhjvxmhgf3"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm"; version = "8.0.6"; sha256 = "1wgxqrnwhxrss67qm72zwgvf0wzskfpq6jmsj7qrl5z035v6wqsk"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm64"; version = "8.0.6"; sha256 = "16m3qvial8wm0p56wf1135fl1v71fv4lmxqgfp79nrs0p5hrvyy2"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-arm64"; version = "8.0.6"; sha256 = "0qaq8wv1xhr3wm03qiagwyrks18xg81m23q3fw2i1wq61pb3r7b5"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-x64"; version = "8.0.6"; sha256 = "1834b3cxmjpxw9q9b6i7a3rkjy1rmcxv3kvnwzbyszn9k41bfcd0"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; version = "8.0.6"; sha256 = "1cx96knhh3nkjd0qasw8z89c9f9y7agazdf8ba61r8ir3k9nmh9q"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-x64"; version = "8.0.6"; sha256 = "1a7l158y6g2dmrviiisf8qzmnmv5zn5r2cdmrdfwmcsqg9n3dcxx"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-arm64"; version = "8.0.6"; sha256 = "1m71clfwd7gcgpqblp2q8f4m3a72a90jfv6iif7j3v2wjhmg6ckc"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x64"; version = "8.0.6"; sha256 = "16ln87byqnf7bd8jp5p8lr9blzcwpnrxgsznpv3j4kf7a48q3cip"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x86"; version = "8.0.6"; sha256 = "10dk5lwimgbj436asx89wnghlr2x0lm09yc9c642f6dy58g2fgyl"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Ref"; version = "8.0.6"; sha256 = "18y39dkflh9xyga94nhm1xvz9jpz06nd1189k92mp410zv940561"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-arm"; version = "8.0.6"; sha256 = "10h4v3a847h0chxs6q88133x8kbx3g74s8zvb5p0p0akkmljyx69"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-arm64"; version = "8.0.6"; sha256 = "11d6by5vd18vri4cfwfx1yv62dh8bh5q8s63ngrmx84f7vdis30n"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm"; version = "8.0.6"; sha256 = "07ghgyk9j3bhjw5ik8dv57r4yvri3652yzshvbvh6rh6l0b10ylv"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm64"; version = "8.0.6"; sha256 = "0i13a09hrglpfzh130q7cdys49s27k1kafhqkd7d524irnid6hpf"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-arm64"; version = "8.0.6"; sha256 = "1p3h4mhcx1f6m667771blxm13dprrxq3kgpwmxpmiv2qkgqgy63g"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-x64"; version = "8.0.6"; sha256 = "0asaa081vq2m7zcawld8r2zhf1i1ch4sj0qj5c4w2d2wynrc3yl8"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-x64"; version = "8.0.6"; sha256 = "1npwnm05kz368fyx2fli6k74zxlmbkmnpzs0bavcjdqw91m72rn6"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-x64"; version = "8.0.6"; sha256 = "1qhn6d2nax5pak9nw0ly09lkjgx26ir06a9kbqsrd5al2if7vxmm"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-arm64"; version = "8.0.6"; sha256 = "1102pac84v6740nwnh7w40lkdjq1qq0v1f1d93zbml52w1k31hcf"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x64"; version = "8.0.6"; sha256 = "098x9l0adam6nfqjs8lisdjv3zlmic9jvf0qf7b7j0cazpsck437"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x86"; version = "8.0.6"; sha256 = "169drx723b5hgy4jav2pj25hfxjj3vzs0aj86ck7wwiwkzjnn714"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm"; version = "8.0.6"; sha256 = "1slpg1gjhmwr1a2yvbxn1qqjpsrzww6552fbqq6gvghdkbjfis0l"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm64"; version = "8.0.6"; sha256 = "06d6jn7fn61iynhqbykdpy37mdi0l46cidlz2s2gn6vlwpz0h150"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-arm64"; version = "8.0.6"; sha256 = "14zjhrb208zxa0xc2k9lm7s9507rvap9fhwsdrdkf6nd3gvdfmyz"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-x64"; version = "8.0.6"; sha256 = "1dh3nynradl8gnilx02zv4qgqjq81cmszrqx3kamki05dbga4v6q"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-x64"; version = "8.0.6"; sha256 = "0ngsjx4pxwig87y9n9z538y9kh5kwkff3x7f2kkmi5h19kwdkwk8"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-x64"; version = "8.0.6"; sha256 = "0qgcmxhyhbxyrs74l7700psxpfyj17q4mbsrvd7112h8yyvxvspn"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-arm64"; version = "8.0.6"; sha256 = "0q3nyjdh4n5kgsxqkq6sj5kngra40lhq4ms3p097m0aj2225zvfh"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x64"; version = "8.0.6"; sha256 = "10ihdkap0l8dvixp9qwc54n9397smfnivqhcv56vgzva1ys4fp4z"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x86"; version = "8.0.6"; sha256 = "01r85dmhca8k8791l0p8frw94bnaxm5x3imcmpb9nyflw5cqvalc"; }) + (fetchNuGet { pname = "Microsoft.NETCore.DotNetAppHost"; version = "8.0.6"; sha256 = "0izgwc1qv5dfimxnl7aq13qbviyf462cw7igbgzzn1jqrc8j77fx"; }) + (fetchNuGet { pname = "Microsoft.NETCore.DotNetHost"; version = "8.0.6"; sha256 = "1dv5xf8bmh4q14s8vnjpz8xvv76f1hxpl2w485v37a6znd7jcbjn"; }) + (fetchNuGet { pname = "Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.6"; sha256 = "0isvgn41x6x9wdnf8phn84b3w5ir9r6drpawrrbbx099gwzzay4a"; }) + (fetchNuGet { pname = "Microsoft.NETCore.DotNetHostResolver"; version = "8.0.6"; sha256 = "18gi6vrqamlcv6js0bggjj0gf7q9qzj9hfgps480b5qj7a4lsw6z"; }) + (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetAppHost"; version = "8.0.6"; sha256 = "16swhnl9zyf0bijhwy6gixp4brf7nc0avlhh0rh3q3zknfa32mls"; }) + (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetHost"; version = "8.0.6"; sha256 = "07p4s12pkyb7w60g2h18155lida80xwycbyp2c98ak8zrk58j9hi"; }) + (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.6"; sha256 = "09yz8isiaka54h5pgp7d2llzl11262xwmv02q20bla1rmax8d0qj"; }) + (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "8.0.6"; sha256 = "17q5gzg4r9ljflahnp8rip66bm34sbj33hm0a32m3hlkpjjs302h"; }) + (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetAppHost"; version = "8.0.6"; sha256 = "1kynfwp6aqxiazqy970r8dbpwdl88s1acfwinj8wq6dj125brhyc"; }) + (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetHost"; version = "8.0.6"; sha256 = "1xhi7nakjskr3cnsdg5cx0b6ijmmzj4kaawcqwbph06gfbf9s07m"; }) + (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.6"; sha256 = "1sfn8mrfy5w6piirgqrla99v70g6csxc7sibj52r9iyw9x1hwm1z"; }) + (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetHostResolver"; version = "8.0.6"; sha256 = "122h4b1ndpphcap2xigv4l28a4wyhpv4kj9q4zjsliz4dc6bfmnx"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetAppHost"; version = "8.0.6"; sha256 = "1825wj7ijw7r9552lq1wppcaqhp1ncigaw8wn1yg82invmshflf8"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHost"; version = "8.0.6"; sha256 = "1gc39h7lna08dgrp1gxrzh6m4wqlyp12vbsyh7mzlpbiqdi9bbvp"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.6"; sha256 = "02gc74yx87riml3aadsm9yv7y6ylamicc0mpd5wg91b9vzsj236j"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "8.0.6"; sha256 = "0vgh3fpgagkbv0ff6r4fczhg2lq44zshf6sja96ja8wafsjby17s"; }) + (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetAppHost"; version = "8.0.6"; sha256 = "012fl9873nb71v2fgfzg7d35zac7hn13qfqm7201sl0fqs42iyn9"; }) + (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHost"; version = "8.0.6"; sha256 = "0ajr9bwa9jlcf2rwpd7h06q457jhfm01hlzsp6yz3ix8ilbghlv5"; }) + (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.6"; sha256 = "19zqzlq1fbri10xis3q8h2l8fcjmgllsxyp84yz93kwxh82yakl1"; }) + (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHostResolver"; version = "8.0.6"; sha256 = "1yg9zrji6dqhi9nv89bznbqm7rr167axx5s1rnc1p6g8snpy67yz"; }) + (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetAppHost"; version = "8.0.6"; sha256 = "0hn0kyry6hhrilj957qaa7nxb34ix3hsj8293vlnqrsdfcn3r3v2"; }) + (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetHost"; version = "8.0.6"; sha256 = "0jlpz6xpidhj42rnirl5mn8agxxy6nlym0a79nqblznc6nfsk3mp"; }) + (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.6"; sha256 = "1z6n3gfmmpb291r4ns84lz9l7gcjyfbbqwidc7cfidlf0g87j6kn"; }) + (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetHostResolver"; version = "8.0.6"; sha256 = "1s4wpsywinfp59nbpc66l8h4f6r3w2abjdfz0pbw4inqqxdf16qr"; }) + (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetAppHost"; version = "8.0.6"; sha256 = "1vd3la5sl9az2kh5g3i4f3sh6gjwqnq9lijj9d2rzq6wlbg0ygi8"; }) + (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetHost"; version = "8.0.6"; sha256 = "0hrwgjz94swf1zdsplbdddzj5afnchzsrd8wf5h25x6blq0sk8hj"; }) + (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.6"; sha256 = "1yh21ypyzjlzz1r9b1f987pqnhsy1hlb1zw1v4q4zf52v7ja03kn"; }) + (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetHostResolver"; version = "8.0.6"; sha256 = "0k2g7vi1d2d4wddyccxhzbj1zrj50819227lggmd8hmfz50qdm4h"; }) + (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetAppHost"; version = "8.0.6"; sha256 = "1yk87srq1i7n7wihzadsb6yqgi74aybk4n0n8vbgqfgfk19aipif"; }) + (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetHost"; version = "8.0.6"; sha256 = "1j5b7kb0lj0nqp632plpv4hz9blfwvslx82l4nk58lfk9n37dlsk"; }) + (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.6"; sha256 = "0qlk7cdkplc30isb4ljk26x7pnbiad6lfnjj4h4m9l5lz1pfl1fs"; }) + (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "8.0.6"; sha256 = "072bm84fw6q8q1a2dvwn6m176l4vj8kjkzwjgd78ihg34gdiz125"; }) + (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetAppHost"; version = "8.0.6"; sha256 = "131gcwp0nisfil3cf9is09cc9dbrv6kisk2llzfyq7m1wcy3ixqz"; }) + (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetHost"; version = "8.0.6"; sha256 = "0vwfl048xgv2fwhym10b2hg8lmviamaxs7qkf96pn8s67b2h39ks"; }) + (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.6"; sha256 = "0flfn8zkq1ds72wf66f0sqahm6ab4ajc28dcanrpadyc1vxyqm34"; }) + (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetHostResolver"; version = "8.0.6"; sha256 = "02xsrxwag62fnmg490l920c6nnyjvxxashjikf58ysfmvlsxvpbw"; }) + (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetAppHost"; version = "8.0.6"; sha256 = "0mvgb6fjia8ajds872g5ycwb8885d0fhgx9wjp3r9rcxb1cgkl44"; }) + (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetHost"; version = "8.0.6"; sha256 = "1mwiis128nmljsim4phf1ms9r9ww9wg950fr3k0y89j9abdfbdmd"; }) + (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.6"; sha256 = "0kmvd79gf3gax266f8gh41px181anh6mpdj6ys2634f55syfyvb4"; }) + (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetHostResolver"; version = "8.0.6"; sha256 = "0gg64xa48wg9vz4r896grd0xqdv4l8kcqlv0pccfaslmlja6f9dc"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-arm"; version = "8.0.6"; sha256 = "009ych2a5swg9cbbzhyy23rjisa5hcm683hwd4f9sjg9j6yxdyzw"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-arm64"; version = "8.0.6"; sha256 = "1gnky9ippjpdbrksbvff13xyjxyzw8k2bapqiw3mnivy4a4h4zcf"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-arm"; version = "8.0.6"; sha256 = "0miwpwm3y97jz7345c6fknhgrwr8gacrgs5bbb638vfp6vw2jb7h"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-arm64"; version = "8.0.6"; sha256 = "1j9hfqiz5gqsz91q5snywzrql6bvxczj9yk4jmnp47kp9n9fwi2m"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Ref"; version = "8.0.6"; sha256 = "11lg910fgdnh79lmpc0v501a3ykvk99c015w3nsf87pb2hsfgmi8"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-arm"; version = "8.0.6"; sha256 = "0w885xnxlyvrlyvddvlzry3jscy16dg6mxk585fzw046yww60318"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-arm64"; version = "8.0.6"; sha256 = "0sz8pl62mfjr65jca4j15277a48ly943l0agwpg87l61pybxlqny"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-musl-x64"; version = "8.0.6"; sha256 = "0mi44y7nz4n3h70v6v0x4ldfg3ma9wp7yys6l5rm551dbsmfrpbz"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-x64"; version = "8.0.6"; sha256 = "14hhibn8swy9d0n1jz7sbdc8z0qahn40m10ras18yl2cy717bdvw"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.osx-arm64"; version = "8.0.6"; sha256 = "1gapc36yd1a9q12av0hz9jqjlilmqp07zbwpzjdh7pvsp5vygf0x"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.osx-x64"; version = "8.0.6"; sha256 = "0vbhpg42sgjppqskz065z5h6bz4rn5xizffg7znw95vbxwclqmn1"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.win-x64"; version = "8.0.6"; sha256 = "14h3qfwp27zzi6l1rh98z47yja5l7aa8pvc0cx6fcvqrlrpz5c5g"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.win-x86"; version = "8.0.6"; sha256 = "01ss9lni310cjb5d8ifrq5arq83mhvxa6dnisk7rgh0y3qc635nl"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetAppHost"; version = "8.0.6"; sha256 = "0rcvc38vmr58mwyc0fqbdlgh3iaq41y9djlswniplc4m3m0llq4v"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHost"; version = "8.0.6"; sha256 = "1lmngy0101diwbb84f80q71qg10whm38mqfaa8n63qa42q7niski"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.6"; sha256 = "0s2ihbzjvq53npkjp40mzknm1q6s5bv4wpznqa8y2s29f1am8p8s"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHostResolver"; version = "8.0.6"; sha256 = "0l7ysphsimif6l19z1awvqmpkm6a16d4ymxn08qhqf9yl8ywr341"; }) + (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetAppHost"; version = "8.0.6"; sha256 = "1qir2zm02wf133ak5pw8fs7gzmixz1hh867zczclf6l2swnxhb6q"; }) + (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetHost"; version = "8.0.6"; sha256 = "1gci3c46m16yf045w4vsgi8fjvsmqblzkjj2fd4d03h789spqyf6"; }) + (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetHostPolicy"; version = "8.0.6"; sha256 = "0kjqc9x3vna55prp0gc29ndzysdrvzm8lq7fk907xhs1655xly0d"; }) + (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetHostResolver"; version = "8.0.6"; sha256 = "0gqbcgakcimdmdhyif036r00wk1mfbqir5k513nzv4vi2gbxiypj"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-arm"; version = "8.0.6"; sha256 = "1b5155pcj5j3y7irdjn8ba7rhcfm9vd8cwmybdn470r89frq7qf4"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-arm64"; version = "8.0.6"; sha256 = "1hwrgwil7na9my78wgphx9hjd4qjj5ayr1hx73bglf058mi9kgsb"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-x64"; version = "8.0.6"; sha256 = "0f9z837gbyi4179xgrrfmvhach8iq4inknihfwpvrz5jlmg48f3k"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-arm"; version = "8.0.6"; sha256 = "1jzr4zj9wa68rn8zcb6wk4sy8fiih8sibsdvy89029x9f3qgchjr"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-arm64"; version = "8.0.6"; sha256 = "0aigvzg1ppjpr4mgg56hmkfrqg89zn3vyrpwz8cfysjbqz356xx9"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-x64"; version = "8.0.6"; sha256 = "1628i25saxmny4k8zzhh6nkz0njlvmi05f1m2sx976flqd3kxr78"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.osx-x64"; version = "8.0.6"; sha256 = "0fz0a4hm8lf56r5hff4vcz6pfmwfqygddm6cyxj04x63wqd16sl8"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.osx-arm64"; version = "8.0.6"; sha256 = "1bg9d8fcwr7808vbakkgrzry4wf0l7r28xn9hsnh14awsqprngid"; }) + (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.DotNet.ILCompiler"; version = "8.0.6"; sha256 = "0l3pibk6q4hhinf2ki42vcc6kvvi5x4icm8bpcnm9iss6kafchry"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.DotNet.ILCompiler"; version = "8.0.6"; sha256 = "19wwim19f1aqscvya85chbycj30ns5cxr2ga5jfrkxbyni9q557m"; }) + (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.DotNet.ILCompiler"; version = "8.0.6"; sha256 = "1bggciasdgh7yr9vjkfq8fjxzg8lbcj4cd16slcr8kkpqy1lj79s"; }) + (fetchNuGet { pname = "runtime.linux-x64.Microsoft.DotNet.ILCompiler"; version = "8.0.6"; sha256 = "1zz8d3dq0n58qnxb4y1njbgls5nfaaqibgxq4k3s5wnclxp8fmys"; }) + (fetchNuGet { pname = "runtime.osx-x64.Microsoft.DotNet.ILCompiler"; version = "8.0.6"; sha256 = "0l6rsnf39m6fp4p8bs0rl98k36bj4yg2q49hgg89yf7q3r5xka91"; }) + (fetchNuGet { pname = "runtime.win-arm64.Microsoft.DotNet.ILCompiler"; version = "8.0.6"; sha256 = "0cqm5183as2m3nsl9as00qm9928bani6gflndg0fv73r799k5raz"; }) + (fetchNuGet { pname = "runtime.win-x64.Microsoft.DotNet.ILCompiler"; version = "8.0.6"; sha256 = "0yjji845ngsaqxyg2cmngj3vba8v4wyriv0qz4hgn1wbrramml6b"; }) + (fetchNuGet { pname = "Microsoft.NET.ILLink.Tasks"; version = "8.0.6"; sha256 = "0slfrm65izibsxg505vr8m4k6n2a2kl4iqyyr9xkgr8541g7rrs5"; }) ]; in rec { - release_8_0 = "8.0.4"; + release_8_0 = "8.0.6"; aspnetcore_8_0 = buildAspNetCore { - version = "8.0.4"; + version = "8.0.6"; srcs = { x86_64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/0b0bc7f4-c6e5-4cec-a7ed-45c2fac0da4b/ae2090564274152b5a4be9f1e66c5d30/aspnetcore-runtime-8.0.4-linux-x64.tar.gz"; - sha512 = "8ab281977116bf59a672afe5463bce4433378cc8a67d332c564a012939b7dbdd8756df82a115a5ab93f8186c22700a6dc0272b99a0f484db837da96820c78e79"; + url = "https://download.visualstudio.microsoft.com/download/pr/ce31d92b-b514-4f9c-843b-29c466871369/b332eba5641cbc6eed1e3a98480972d2/aspnetcore-runtime-8.0.6-linux-x64.tar.gz"; + sha512 = "16cd54c431d80710a06037f8ea593e04764a80cbaad75e1db4225fbe3e7fce4c4d279f40757b9811e1c092436d2a1ca3be64c74cb190ebf78418a9865992ad12"; }; aarch64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/80ec12e5-b26f-466c-a20c-f96772ea709d/606e7203912400b44cb35d6fcecf60bf/aspnetcore-runtime-8.0.4-linux-arm64.tar.gz"; - sha512 = "0b0b3dffe678211afcaeca5d7e381f2218f156421c79dd06e083b1abd92ceb2b5c04c8a159b7d67b866393b8169de826ede70240226e0164451b329b7d46b570"; + url = "https://download.visualstudio.microsoft.com/download/pr/ccdcbb70-a5e9-4753-b6e3-4461ce56a69d/240803fc1ffba38ab3603778c03e9b87/aspnetcore-runtime-8.0.6-linux-arm64.tar.gz"; + sha512 = "9ed12847e404a0a4fdd8fca33a9a787c5ac2e6745d23821c7890f731f2f8f5682e7f9166b2764b13b612b08e091c71e13359b68acc11bcf990afdef1d42f6473"; }; x86_64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/8edd447c-bd4a-4677-ba33-8bdac6088dc8/a17a23a5d47642eb050288dea0322350/aspnetcore-runtime-8.0.4-osx-x64.tar.gz"; - sha512 = "544257738cd7265a6c3c99e83f331c20c631ee8064e47bd925e37191627223e2f39f19a025360de1f95915bde1a26eede757bea4ffbd115309d186d81d7d6b61"; + url = "https://download.visualstudio.microsoft.com/download/pr/ccd03400-c514-4956-9e9d-ad1bd67d1338/436b9590788dd3df98e73d4c5379c711/aspnetcore-runtime-8.0.6-osx-x64.tar.gz"; + sha512 = "61786ecd784b83eacfe4dd901bdd55474e52d9da85806b3d52184e8e35a3065b476e574c939f3af491a925bf7f04fdf376c53a25c103a187a7939f4736158297"; }; aarch64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/172cfd62-a126-4375-9a48-84cfbcf1b718/959ce27a010020f0e5d393578574bca9/aspnetcore-runtime-8.0.4-osx-arm64.tar.gz"; - sha512 = "15e8a7535e0b4d2deeccec32e6373cc2d79fe1156c2490ec263790723c5f660c03a61978826d825a427ebbad02cd0eef12a14e11cb8fcd9744c5ce2ef7176011"; + url = "https://download.visualstudio.microsoft.com/download/pr/b90758d2-834d-4fe7-b97f-e8294b68d07c/71d63df9474999f831811dd6989d9ba7/aspnetcore-runtime-8.0.6-osx-arm64.tar.gz"; + sha512 = "85d82e90182375ca21326e3d57be0dc5a39d7e64f1a4005950fe21c720f1d1e1615f64030c950fa7a49f6a104f029b9845648cebeb98d48d892aad3309c583c8"; }; }; }; runtime_8_0 = buildNetRuntime { - version = "8.0.4"; + version = "8.0.6"; srcs = { x86_64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/a3ca3d31-f45b-4e53-ab4d-0f2f221cbc5b/47382078b4b72a66387d0fd6ed9ff963/dotnet-runtime-8.0.4-linux-x64.tar.gz"; - sha512 = "5c23889d3e6effa85d46c0e1969ce876c686723ae47bddf2cf9c0b1d99affde3f60c04063c2467027aa4163e9a981ef601250a7e8d14ddc6b365c89b24029c80"; + url = "https://download.visualstudio.microsoft.com/download/pr/021c3de8-14d5-493f-92dc-2c8f8be76961/6ee3407acebf74631bfc01f14301afa6/dotnet-runtime-8.0.6-linux-x64.tar.gz"; + sha512 = "c0c5e93d4e68e2075c4c63336dc74246efb704ac9663411351efdefc4cc7da5a7750f44b8a23aebe959bb4308575bead443a41b2524ae03b29ac41929d27e0e0"; }; aarch64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/761b252b-a0d9-41cd-b1ec-2dc33159c11c/b8285cf82db4ef340a191bfba9a9a73e/dotnet-runtime-8.0.4-linux-arm64.tar.gz"; - sha512 = "d11ce8867dc91d9e9b333753cc7b9677204898485d044dfbbfabe5c5eee43091580a11c3029fca4138cfa9576f84e23fc11bcffa44fcaf5c3d8e617a3cd18802"; + url = "https://download.visualstudio.microsoft.com/download/pr/0039e2c5-d78d-45fb-94c0-e258ff0335fe/c3bff45767f679bbab149398e9ee2c6b/dotnet-runtime-8.0.6-linux-arm64.tar.gz"; + sha512 = "428c5a81938273c5e63b04858dbf2f4e82c9bcfa3bd33f954081238be2fb52aadce99296698eabac72e4be55c61e6c1ff06d2d8d1fd5d6a2d0c7a2917cd50739"; }; x86_64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/c999e42b-38c9-4d9a-9816-9a0ebece8afe/8e4471db5aa0756d812af23817b14259/dotnet-runtime-8.0.4-osx-x64.tar.gz"; - sha512 = "bb303991154582e1aee0b4850bec2ed92b5c4253bed08d76da0c9687c90c46c9ddddd7ffb9050fb7a4d8db6be6e8cd552156589679a3a169341a167952d76407"; + url = "https://download.visualstudio.microsoft.com/download/pr/20271d05-67e0-4356-87a9-0ce5102b5007/b7c91c6470e1c2ffbb493a35dd6883c0/dotnet-runtime-8.0.6-osx-x64.tar.gz"; + sha512 = "44c0ad9fc613975fa0c12b12b91ff8cd8ba0be5e8ed59510e7a5ab22e55267a468b321ce34515daf070ffc8d557c09d7ea3ed3c3407887f706553b5d378e3232"; }; aarch64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/d2cd56cc-5a78-460d-a45d-3893b020949d/8cf9653a23c91ac2b10c70f58edae60e/dotnet-runtime-8.0.4-osx-arm64.tar.gz"; - sha512 = "7aa4ea587348984ca959945a9e52bade7cb9cbcb8c5a32dbcdf0836d2da4148ca68fcf9815b0b274964b5164c9266b1891afc9406c1c7337642f09300efd7649"; + url = "https://download.visualstudio.microsoft.com/download/pr/6f090da0-5f55-44f1-ac17-9bd001b33d66/eae314b23ab350b375e794e136a2ca9e/dotnet-runtime-8.0.6-osx-arm64.tar.gz"; + sha512 = "21ae6420914e45be9fe17bfb0c89948eead27756dedb13fc2c6b9b08d78aee80daa2b8cda358268c819f00ba7ca33ed75e21bed387045b3a62160fea159eaa3c"; }; }; }; + sdk_8_0_3xx = buildNetSdk { + version = "8.0.301"; + srcs = { + x86_64-linux = { + url = "https://download.visualstudio.microsoft.com/download/pr/86497c4f-3dc8-4ee7-9f6a-9e0464059427/293d074c28bbfd9410f4db8e021fa290/dotnet-sdk-8.0.301-linux-x64.tar.gz"; + sha512 = "6e2e1ad5fe3f00e6974ad3eac9c5b74cd09521f19e06eb9aff45a44d6c55e4a2c1cd489364735215d2ea53cec2a7d45892a5ede344a8421be9ad15872c3496a2"; + }; + aarch64-linux = { + url = "https://download.visualstudio.microsoft.com/download/pr/cd9decc0-f3ef-46d6-b7d1-348b757781ad/9ad92a8f4b805feb3d017731e78eca15/dotnet-sdk-8.0.301-linux-arm64.tar.gz"; + sha512 = "cb904a625d5e4ef4db995225d6705b84201dc7d7d09a0b1669baccc86e05419472719025036dd78983b21850f7663d159ae41926364d1d3ca0eab62862f75d29"; + }; + x86_64-darwin = { + url = "https://download.visualstudio.microsoft.com/download/pr/6ef47a54-b1c6-4000-8df4-486f64464c2b/ae87b597b19312fa9f73b9f2f8c687bd/dotnet-sdk-8.0.301-osx-x64.tar.gz"; + sha512 = "5d91fbc584f32f4d48dee303c7eb16b38b2e2fab9549bd54293bac28508a6d53f93782ff102266010f8cd8c15c6436a807a7e6efede2e1051fe206957ba73071"; + }; + aarch64-darwin = { + url = "https://download.visualstudio.microsoft.com/download/pr/c503e53c-0567-4604-b7a8-1d6e7a1357f5/53e78f56b01147a092c0cc273b443550/dotnet-sdk-8.0.301-osx-arm64.tar.gz"; + sha512 = "8d56980b6a6ffd78618a6e9833126d7e67052ca6041bd5f167a32e277aac7094a5cd37b9e7e145d5c9b74da95561535189a077d074ddb0fe710a76c2a2c9b1eb"; + }; + }; + inherit packages; + }; + sdk_8_0_2xx = buildNetSdk { - version = "8.0.204"; + version = "8.0.206"; srcs = { x86_64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/0a1b3cbd-b4af-4d0d-9ed7-0054f0e200b4/4bcc533c66379caaa91770236667aacb/dotnet-sdk-8.0.204-linux-x64.tar.gz"; - sha512 = "b45d3e3bc039d50764bfbe393b26cc929d93b22d69da74af6d35d4038ebcbc2f8410b047cdd0425c954d245e2594755c9f293c09f1ded3c97d33aebfaf878b5f"; + url = "https://download.visualstudio.microsoft.com/download/pr/5fd599e9-4bf8-4603-8a14-87777293837d/1d5f0729055901dce471570bb82a441f/dotnet-sdk-8.0.206-linux-x64.tar.gz"; + sha512 = "d03cbb5ea44a6f4957d7c1fa0f7c19e3df2efcbf569b071082e37ac86776af0729540c3bbddc44668ae2eedcfcb4b098883bb560d26418f1583a558d60c99ef5"; }; aarch64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/1e449990-2934-47ee-97fb-b78f0e587c98/1c92c33593932f7a86efa5aff18960ed/dotnet-sdk-8.0.204-linux-arm64.tar.gz"; - sha512 = "7000b559efe502e9a799e9fccb6bccc2e39eb21331d6cb2be54f389e357436b84f5ccbcc73245df647749ee32d27f7fb8b7737d449312f0db7dd3409f8e12443"; + url = "https://download.visualstudio.microsoft.com/download/pr/f25f9e53-deba-4c1c-b9d2-5e026e5a4d92/c291c78eb71c30b1c66745dec87936ce/dotnet-sdk-8.0.206-linux-arm64.tar.gz"; + sha512 = "eb0489785dc5bf824bc3fc1014815ebd371fbc73eb02b63e5a1650bcadb158cab7e909904889f6e198a180a1742976351208a57796ef38a4205c52fb945b7d09"; }; x86_64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/9548c95b-8495-4b69-b6f0-1fdebdbbf9ff/30827786409718c5a9604711661da3b5/dotnet-sdk-8.0.204-osx-x64.tar.gz"; - sha512 = "a49c3dc8f364dcf2f88353b80267062b557ef4afff333fa4494e84d01234d38c57619aaf7a3e2cacfb16d066ab1523b6e5953cf864e5e8f411dd38855408bb5d"; + url = "https://download.visualstudio.microsoft.com/download/pr/ea0371ce-1119-416c-bab1-578cb8c1fa77/71cb9d66778c8e2a65ca40d8456300ef/dotnet-sdk-8.0.206-osx-x64.tar.gz"; + sha512 = "d7742a0b00c4df835639eeb18f2ae4888ac33d7d7c25d097a8868c5172c878d7df8c5bbd54de9b34f877f07a2dc6c748ea510f783e1842058e8cfd0ad2cda83f"; }; aarch64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/8746698c-596d-406e-b672-49a53d77eea7/74c28673e54213d058eec2c9151714cc/dotnet-sdk-8.0.204-osx-arm64.tar.gz"; - sha512 = "db06baa1d076549e393a9a402c03e81834e15641d2b5fdbd5beb7c4a55b5ed979f5e58ac6baa2048bc55a3a7b3aabe0e3c518310c66a17ecd107b7bf0aaaf2b0"; + url = "https://download.visualstudio.microsoft.com/download/pr/bca24333-c463-4f90-8085-f856962fac39/ef02fb556ff3d92938a2c11e408c7d71/dotnet-sdk-8.0.206-osx-arm64.tar.gz"; + sha512 = "c4a17c17b02d9559e0029328179d22617321e439e9360175f25385d60789f91582a4024ce41690439d85852e4c85f0d0ae20fe818c0f4acf0d7d48ffac2d2b5c"; }; }; inherit packages; }; sdk_8_0_1xx = buildNetSdk { - version = "8.0.104"; + version = "8.0.106"; srcs = { x86_64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/fd4a16ac-5322-4308-b6b0-afa1821e63f6/0abd2e63358335f2235d22fd84b32a60/dotnet-sdk-8.0.104-linux-x64.tar.gz"; - sha512 = "cb7b5e509c16a7e27ccfc03b3a217460b9eac151ca973f262f82d4b4a494f7bdff3229e9aee91df1c110582ee8dd3d310dad39528c3bd292c5d9b7746ba3b6fd"; + url = "https://download.visualstudio.microsoft.com/download/pr/0fe59d31-bc28-4f57-8d1a-285f47b5a0ec/e4c5def191daf9f999efc5812b085924/dotnet-sdk-8.0.106-linux-x64.tar.gz"; + sha512 = "06eecc146b16eef0654fb4fd17faec06c6dc1b7236acc7e4a33e4b13cbea1d725faeb9eda41a0c12e65ec4c89d6624971429ca223638387c66f1d3e4dcd1407b"; }; aarch64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/92652bc8-b312-4f77-ad95-cbbcbc9330ed/549869e13f1bf66b0b089b4e976e96ea/dotnet-sdk-8.0.104-linux-arm64.tar.gz"; - sha512 = "71f5fb65c88bfd14ebc13c5eec04d08b4f7461d1b9f3f5f08c31351a377e08cd002072a4487bfc2496ac7b4d5ba83c97eb979a5732de394c1a02a4528877002f"; + url = "https://download.visualstudio.microsoft.com/download/pr/34676827-2699-4f0d-81e3-347939a91b7e/6f2f3851e005f57f8b6c132ead1952e5/dotnet-sdk-8.0.106-linux-arm64.tar.gz"; + sha512 = "e8f735d20d79b20d24ce5b2f7c25c60604cb6b694b6572488c654cbf14a4d99c269f64f4ca23ab78aefaedf14f35a0ae1f33adf6afac5556e2ebd22ec73e04eb"; }; x86_64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/5f790cbf-88b3-4619-b083-178e1eb6c16f/ab21721125a05ec751b22d689e19a353/dotnet-sdk-8.0.104-osx-x64.tar.gz"; - sha512 = "b451731c7fe151316df57d1e6a23129732ebc0dc3dd53479421b881652bd042d5fb9890c2c8e229fc578b3b05542a8e08986955154e590d8c1e274c5821a5666"; + url = "https://download.visualstudio.microsoft.com/download/pr/8380cce5-930a-43ff-8a27-981e175d9881/4ddeae425c3c344f4afd8adddb03af5b/dotnet-sdk-8.0.106-osx-x64.tar.gz"; + sha512 = "4e6d45b7b1618bdb528a865d1c89e7ec7750f8a73ae7e805675dd9d7d3974f0b19785e743298f0c468144cd7fe9e20e521f65e9fc081b89d8bd9e187b5783c2c"; }; aarch64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/73d8ccae-9bcf-42e4-9a57-b6a4480eea2b/52e136f08e967c6ea9617be542921286/dotnet-sdk-8.0.104-osx-arm64.tar.gz"; - sha512 = "376fda994997e3ebbf15cafbc910ff25a71debd2d31d088cf7947f813ff013568f3f47514ec53d2c02a3e3f8432a5ca9344dab3ee07cc0df650761a3dbc6be68"; + url = "https://download.visualstudio.microsoft.com/download/pr/d595db17-776d-4b09-aefe-44777823a4de/55867e85ac1b03cd5609a936055c8ee1/dotnet-sdk-8.0.106-osx-arm64.tar.gz"; + sha512 = "490c20abc3cf52f76fecf422a6fcc66c98b7500a56986f84e617860a2758f43ddc4b235647837fae69e4c46a9d1ab9177d4bbfe134258797599b69178f6b91f8"; }; }; inherit packages; }; - sdk_8_0 = sdk_8_0_2xx; + sdk_8_0 = sdk_8_0_3xx; } diff --git a/pkgs/development/compilers/dotnet/versions/9.0.nix b/pkgs/development/compilers/dotnet/versions/9.0.nix index 1295f9b35c017..2cf73e2a4a7a1 100644 --- a/pkgs/development/compilers/dotnet/versions/9.0.nix +++ b/pkgs/development/compilers/dotnet/versions/9.0.nix @@ -4,144 +4,143 @@ let packages = { fetchNuGet }: [ - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm"; version = "9.0.0-preview.2.24128.4"; sha256 = "0sxv7581axjyc9d8q2ij0rizbf24d7lrfqphnihxbf2gnphbixqa"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm64"; version = "9.0.0-preview.2.24128.4"; sha256 = "03zyr7dn151hlzgjkks4vixh5air3h4d2ml188521p3sv5kkhr63"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-arm64"; version = "9.0.0-preview.2.24128.4"; sha256 = "054qw93b9gw6fm9iaiki8msjglpw5nhchh96v42hfpggdk84ki1x"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-x64"; version = "9.0.0-preview.2.24128.4"; sha256 = "11f8hmw1rxqcf3qsan6mjd7vrq442hsh90fpmx1gkfflibj8psjz"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; version = "9.0.0-preview.2.24128.4"; sha256 = "1bpa4l0n3ahyk5s62ns35pr13idjnvbmahnpvjg2ay2n8fhr4wrh"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-x64"; version = "9.0.0-preview.2.24128.4"; sha256 = "1z6gwynwfndhkv3gkqqaxbahx48ajx5ir2dfm8rfxg7hrc3x8sdx"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-arm64"; version = "9.0.0-preview.2.24128.4"; sha256 = "0vs4n68qlmqgizbn2i4h1wascx416slw0dmdib3dzxcivzfrv51j"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x64"; version = "9.0.0-preview.2.24128.4"; sha256 = "0cjhbli0p8b0nxvrp75dzk4pm112pwqy9cl1ajgr6ra6g3n9jypf"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x86"; version = "9.0.0-preview.2.24128.4"; sha256 = "0152n8y2gx8jcws6hrqfb91bsd3bfrk89hvls7rw8mazg5hac3yd"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Ref"; version = "9.0.0-preview.2.24128.4"; sha256 = "1m7ynhxz62msv3fzaxpnb1lq5369wn8bwfbk70bxr32fz5smnar0"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-arm"; version = "9.0.0-preview.2.24128.4"; sha256 = "11dg6qs92lc9n1n3h6jmi8iz62na9l3xhk8h7x0k92pcwax8dcwb"; }) - (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-arm64"; version = "9.0.0-preview.2.24128.4"; sha256 = "1rq42nly7hq6bng7x39sh6zgklfsk44mhzxf91nb0nna5rvqy2v5"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm"; version = "9.0.0-preview.2.24128.5"; sha256 = "0plcb424mj45pwd3lwsshrqqsmfcxfhzv9gwcsx4vmhk4p0lgynd"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1h3hq06csy8nn1ms39gi4gpz1vs4rci09w602pal9cdn3qr946yl"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1a1h62xisa7jy0ac0mj5kyqnhs4mrhnr2mnj56i3savyhj0n53gb"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "0bz3ckck2ixyk8brjl5si6d161ml4kdzm4qk85ghvglc6ac192hx"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "06jfjb853z5jxwxw107xbii7xlj9ardhh4k59bnck79vplh7abqd"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "0521d38bwh94lzv3fkj6yir8v4zx1riiaiwk860303ljp79iyxdp"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1wjybjhalhdbxndyalgy3alkr8ra8yj88g7h7ysjlsfxp4gx3xha"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "0xgfbi9r6hnmqh18z2smfp04693fy3l66y30v7337jlvamxmz0hi"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x86"; version = "9.0.0-preview.2.24128.5"; sha256 = "0mjgb3vnkx845lrx7w99q62c5s12n924pi5fh37c52jn1mvaj1za"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm"; version = "9.0.0-preview.2.24128.5"; sha256 = "1adjb3wp3zxjj3vgyf7xk34sqv3zxavss9v2d1zr4hdvrbwsv2hp"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1w00m6hnalndscssc6prsm4dhbn43fclm20h39icll2z4p2jyly2"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "16087b037vlrra853ls9iardxl1g14zm57q3flrylmd8wdhm7caj"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "0p5kq3ccrc5v5cfj7fvqliyh9k0vrgxmw11mcmlv0s2m1ziikvgf"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "0f9g2vj3vb9q3ryqywn76604ah276whpkn93r876sxqkvgsdbnvq"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "0jdq6s36y9733sqsq9ppr08642sv3dgmjg2c36wf0ag1v3vlz2ab"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "0lc5d6jkcz31znv9bi0li4xy1j3kji48xww8v2df3dsjgq62bbjj"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "11h38px2i2hw0g1y5annpffn0xlq26m29xm5mvnjdjsz05khnwhb"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x86"; version = "9.0.0-preview.2.24128.5"; sha256 = "0a7jr03d66jzzzyajs552i1qn0jgzq1rlzpqch30k51ssnrbljpg"; }) - (fetchNuGet { pname = "Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "1a4han0cbhwj63ja5lnkjbaa012769j69hir21nc4k706hyf09pk"; }) - (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "09s4mdzbgmrm5v3a4d9zdw918cwpsg9r84ywla1na6dh6i0400w5"; }) - (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "0c46wbnn1jh6k05khjysmmn0x69p0nh6b17lszvbr2p6v7nbfa78"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "1izlvyk9xl0s888byw2c1n4jpvd6hh1yqx53z5mh0zi9jmc430mi"; }) - (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "1sr07f4zyyllmkzkqs0lqa4b01ig4bcpxghhn37nys7ab2f15619"; }) - (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "1l12jxmlvy116a9dzfqn28ain7c4nwk3fawiw54qiaikc1dbz8zc"; }) - (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "0bcr4zbl1kpnbk34m2i221rb6bl1jiyylak0hvs790bldj47c6lk"; }) - (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "089dll9w3mgf9xx22gk5z2wgw01ydwvw5snn3ij2jwrjakz611hc"; }) - (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "09adk3i17biq3sjzx4amnxjvp6viwch3p6nklb3ybknsncn9ix5v"; }) - (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "1jfi2wzl5lrij3h4v0ix38vs3g57wg2nmv8c7iwmf2k4i8nf523y"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-arm"; version = "9.0.0-preview.2.24128.5"; sha256 = "1030gjhrwqwc01sqdi88ynz1phh4ccpjqfnbs0i3kwjb3sg3iy3k"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "12136vhid3aj3gn40vfrilcypr9n9izhx110q65c57m0kgg41k13"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-arm"; version = "9.0.0-preview.2.24128.5"; sha256 = "0nnsfxbrf8m6zn0s021c6dvq4kif1b2cv2l6rlw4986y92g6147p"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1fhfsjp1caxnn73is92zrrmpinyr5hkzd7mcp1dnrsqllx6v1w52"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Ref"; version = "9.0.0-preview.2.24128.5"; sha256 = "0syi6dlgmvpnfcgkvnwyf1i7gnn1k71nd6rc6fc9b0jwi4ys5y3n"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-arm"; version = "9.0.0-preview.2.24128.5"; sha256 = "08ran7vyfn2f4hhj1hc1hfdw1c2k6whbjyvkj8p78f66zqkh11ic"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "02pk28mghl4jqzyv10ab92iidg581lnpsj49pfw818w324dk2hpp"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-musl-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "01yagr5c4d3347a3ljbsjz27420igvzf856275nj7yn6psini72p"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1wa54f15xp32277h85hxamxdyj62yldi7vpmldsqds3n7r2wg3q2"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.osx-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1a138w5bh1d5ilq4ynpxcawfj6n1dl1jqa5z1a7p7fgry2362pp7"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.osx-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "0nwkqpn1qsk45nqxc4ih3bi4ik13a0hck0jbkc5jrl9301839l15"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.win-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1a1iw32fmhapsr0r7mm6iz69clwvnhqg6q4jqbdlp12id2v9r3l6"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.win-x86"; version = "9.0.0-preview.2.24128.5"; sha256 = "06j1scfv8vb3b9n3jpa0nsx6rxk413xsjr7fpxgsiraqfi9cl4ch"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "15v4idsw83bfypqv17r8a8vwvpsf3fa30gvja9zzbj4v639s2n28"; }) - (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "1nqjazr7dwsahy6qix5fa1bby8qhcxqwpvpp7aj3slpgp88ag795"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-arm"; version = "9.0.0-preview.2.24128.5"; sha256 = "0i2plc6nr1fsx0wa6ff2fda3xig6aaxcnb7v9l1w1da2qw767f23"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1h2sd4pcsh1p1fim0jydl8i70pj54lxywwqdz31b3x7x7r05hjgw"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1f30y1hwcprm1j549v00kq9w5a3jxls7z6pryyjx379axaspd805"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-arm"; version = "9.0.0-preview.2.24128.5"; sha256 = "1b09s5v153wxv0mqr5nvhym5dvavc7jilmflzs6wh7jjn1gq06q8"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1z0s40i0nnxxwhgh85aacfh6qd1sygwz1z94hppnmaamdhqmf6wg"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "13w3kpyilk1n2vy6lnm5h44zskblfnrhdnbjx4f13hwzc1127a2b"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.osx-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "0r79zrqxvvkg1f4vb8yqaa22fb7ix93fkkwsmqpj8f43z71aizjh"; }) - (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.osx-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1l3k9sgiqjvxaagvbfza9q136p36kixl434xg9qhzr8rl6m2g2ih"; }) - (fetchNuGet { pname = "Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.2.24128.5"; sha256 = "1dq6mir5n319a7pjzgvhxlm90py4wslx6y4n68x1g8ifd97cxnhy"; }) - (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.2.24128.5"; sha256 = "07y3hhf3h4p59wyv25wmb58wzayhrqp4wawb777k8x6r448c5xaz"; }) - (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.2.24128.5"; sha256 = "1kyigz0zzlbl22cr31na8lzf7595zvysnck44xlay1if99crkndg"; }) - (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.2.24128.5"; sha256 = "0rr2ka6ivsx54p9c2k4gp4aligkw605j2z1wkviq0aa7mrn2vjiw"; }) - (fetchNuGet { pname = "runtime.linux-x64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.2.24128.5"; sha256 = "1cmjncpcyiyn3mpzlhh5iya2b8pjl37mpssr8wbvhlzi86f6sh1n"; }) - (fetchNuGet { pname = "runtime.osx-x64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.2.24128.5"; sha256 = "11nl8nqkhx012nw1wgjss05sdxkz4j5k5frzbpj19n46pxh3mx9v"; }) - (fetchNuGet { pname = "runtime.win-arm64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.2.24128.5"; sha256 = "0lcrwv09qp47vli4xa6nsjvgglbz9add3pqa6282pl5b221q83rc"; }) - (fetchNuGet { pname = "runtime.win-x64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.2.24128.5"; sha256 = "1i83fpfx50z1yadrfg40m91r2qmji6v1vyipaqp6863646z2fa4z"; }) - (fetchNuGet { pname = "Microsoft.NET.ILLink.Tasks"; version = "9.0.0-preview.2.24128.5"; sha256 = "11n78chcg40lj7cjadsmaynczbviqmw1kp1araixnrkmy2xpdzqd"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm"; version = "9.0.0-preview.5.24306.11"; sha256 = "12mq2k54nijycjmgb9c299bcad7iwgc5prff3cv4ilc8zf0db058"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm64"; version = "9.0.0-preview.5.24306.11"; sha256 = "0z0nby81zf1gzvwkm9hk6xxhbxgjxbcqbfw1k6f6dkhq4r52b19m"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-arm64"; version = "9.0.0-preview.5.24306.11"; sha256 = "0aa2i7kdq2czz8j4r3qf3qkq7kzi07ga19bm5kj35das4v66srn4"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-x64"; version = "9.0.0-preview.5.24306.11"; sha256 = "1inc6v7kk43yy68gwa0vg04j9jr71rbzdpi486xvv4zf29d3nnyc"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; version = "9.0.0-preview.5.24306.11"; sha256 = "0a4bmfdl3paqb8sh3w5pbahsfifdvdx48m52vsi4qjpbaz37jqqm"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-x64"; version = "9.0.0-preview.5.24306.11"; sha256 = "0man1h54lwqid1rpaxr7v811alm1cn6hdyamw5h9sy5k43d6q4jc"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-arm64"; version = "9.0.0-preview.5.24306.11"; sha256 = "1kn4ghd0rcik6zncqj7a8yx4hldc8ms5dz40zcyz8zpnjr0jalgy"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x64"; version = "9.0.0-preview.5.24306.11"; sha256 = "1vvm6fjnb4b07a6s78qrpc0h2xgzkc5n7xd0n8pl8vf221i36cjz"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x86"; version = "9.0.0-preview.5.24306.11"; sha256 = "1ixzkjrrp63dzgx4bpdphcxmwb4bkvpghn2xblsq55lnqgsqrk1c"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Ref"; version = "9.0.0-preview.5.24306.11"; sha256 = "12ly0aq7w3ysaz1lgafsj8b3xz60h1sx80112h016cm9x8qaj60s"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-arm"; version = "9.0.0-preview.5.24306.11"; sha256 = "1jar76bi0apskqva4xvb21mpkm2spar8zg6dijsb1sfckhvprwg5"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-arm64"; version = "9.0.0-preview.5.24306.11"; sha256 = "16igqkvzbmiz18y2pxbxjdbn55505i38ci4dlxk2gc90q9ly9hmp"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm"; version = "9.0.0-preview.5.24306.7"; sha256 = "0yjhaflyvwla7bfc5r0f241lpdgs8f07idgw17c27py3jak4z7nc"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm64"; version = "9.0.0-preview.5.24306.7"; sha256 = "0xqpixi7klisihnnx0nxadxskryh1fk7p998sib3yvp9r02jnqvn"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-arm64"; version = "9.0.0-preview.5.24306.7"; sha256 = "0wjdwmqkphrz421mvqmv30nkpji6zkyv53n0n58s7cg1xhrysgn5"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-x64"; version = "9.0.0-preview.5.24306.7"; sha256 = "17xmgdysdsf9x1b5bbyk92fb0m49q2qxqsabdn0dj7apbnappflv"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-x64"; version = "9.0.0-preview.5.24306.7"; sha256 = "05l7iccmn56hfjfdzw6g2xyhwqn86pmfi0bhxs8zkvfmcxff01km"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-x64"; version = "9.0.0-preview.5.24306.7"; sha256 = "0f8ifac136v8lrqg6p49c6v1fbzs7066d2x1gf70wxr5572s53zz"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-arm64"; version = "9.0.0-preview.5.24306.7"; sha256 = "1i02qz80mk278wyj19m6s05xzzyz11q2yrbanark541b5nvp7f74"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x64"; version = "9.0.0-preview.5.24306.7"; sha256 = "02bk2wwlm262v6mz3k2dx1pj02sdmdmmic79bbkjksfpw1pbg4rm"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x86"; version = "9.0.0-preview.5.24306.7"; sha256 = "03f18kc1kdm6aglcwc60757prmcb8csw5gvl594kgpgmsh819vdf"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm"; version = "9.0.0-preview.5.24306.7"; sha256 = "04yw10x9lkma4jkhaylwi8scxpifvhyq47mv316m49fas2r7xl96"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm64"; version = "9.0.0-preview.5.24306.7"; sha256 = "01jwa6idxn9jv5vp7am34gzf984jvd72cyns1w367p0v3c6yragl"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-arm64"; version = "9.0.0-preview.5.24306.7"; sha256 = "19bgk42zkrb6q0nss1c4fxs5ii7pwjb85zrzsscgsvy3hjqqwzrk"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-x64"; version = "9.0.0-preview.5.24306.7"; sha256 = "10xdihmr8nd1jyqwrfsrym8285ngg5z2apbawy92s14bwjy51cj9"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-x64"; version = "9.0.0-preview.5.24306.7"; sha256 = "10bxll4zphrd2bvyp38z55rcl1fbdd64s53bv7hsjkcfsv26c4wc"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-x64"; version = "9.0.0-preview.5.24306.7"; sha256 = "0a530mpk29cl8iz1k6rwhgrspa5ssjkqnky5ivbx5hz9iq541bq4"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-arm64"; version = "9.0.0-preview.5.24306.7"; sha256 = "1l2ak1kiq2515x16wdijk2rrjrzxc9jkbwd0ip7j3fqkm0wj62b2"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x64"; version = "9.0.0-preview.5.24306.7"; sha256 = "065lhbwjmzf8gcqll5f2lbvgkiiqfjliypvgi4sab0r0m3gjchdb"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x86"; version = "9.0.0-preview.5.24306.7"; sha256 = "02yli22m04wyr418na5mjs2ln6zawva8i8ixcij5bynqdfw2rakv"; }) + (fetchNuGet { pname = "Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.5.24306.7"; sha256 = "1ix5nw7z8ymnxk1vj101namd4r18bqx6dkzv0zrqj4dx2zpadhd4"; }) + (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.5.24306.7"; sha256 = "1janx1brnv64cfjvjmdk4zinqbkmmx525l04fmy7pi6c3hq93fr5"; }) + (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.5.24306.7"; sha256 = "1m8cml0zk772i5a5yy909sb5089h7afphmcn95hm03i6f52kmmf3"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.5.24306.7"; sha256 = "0n04zf1xhdqm0nia3ja3kjz0aq2kasghqw6gamfpd68ln9yimi9q"; }) + (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.5.24306.7"; sha256 = "0h29s18r4n09l8f2znpd2s9p12f8s2winnqqgn80nynsja5zb34q"; }) + (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.5.24306.7"; sha256 = "05cf012c37q9vlq7fd2n76gps9dg20lk88dama26jlbpczj7gv81"; }) + (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.5.24306.7"; sha256 = "0lgfnh0w31afi7ijsbjc305yxp7klxhz61pxcf27pxh7y9vcrvnn"; }) + (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.5.24306.7"; sha256 = "1h12scdq455rb1ffy339a1fmjkgpp7hp4bjhr2fb7lp8kmsppwxl"; }) + (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.5.24306.7"; sha256 = "1z1csk8z1yh4w697ghzk73vm4ry2a0d2sy4b5sk34r0bpxw5lbhh"; }) + (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.5.24306.7"; sha256 = "13p6vi44agpzjq0qghjc4xydy1xy2985v4b0dl5v9j3pgrd1s8qk"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-arm"; version = "9.0.0-preview.5.24306.7"; sha256 = "0dakyl9dl1609jpwc5h6rkbl5s1s2fcfn3isf69z8m5n36vlz2xl"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-arm64"; version = "9.0.0-preview.5.24306.7"; sha256 = "0nc6xh9xcqg64xf14f95mwxqki4ing5hpwwyd30d1j0ndbdf4xyc"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-arm"; version = "9.0.0-preview.5.24306.7"; sha256 = "1rjqx0mdf4jd5g613mxmjzjjyzl7gj6wnixhz8x6k21fwmsrn496"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-arm64"; version = "9.0.0-preview.5.24306.7"; sha256 = "059s063nfxn98cgym7zfn18icd2f7bky1n1b3pbz2d8bc2y6b6qd"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Ref"; version = "9.0.0-preview.5.24306.7"; sha256 = "1584xdik4q3bdgsnshmwxsy7sx9zjh112m1nvrc8sjm3vy4hpl5c"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-arm"; version = "9.0.0-preview.5.24306.7"; sha256 = "0l5n8k8zzw3wjgp0mf85jv470cmvp5cs4m7azf4x2x8p4q5j3pzf"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-arm64"; version = "9.0.0-preview.5.24306.7"; sha256 = "0mryfw8svnmzxnvwkd2vs9f1mxdyami5dlcnibvjgylj0ggi8l53"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-musl-x64"; version = "9.0.0-preview.5.24306.7"; sha256 = "04zy5396cm98h5gf9rdar7mx6c96fx3lh3k6vm86bcs6y4pvmib8"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-x64"; version = "9.0.0-preview.5.24306.7"; sha256 = "00np825qdxnqq6vwazs66afdyvz668lyhsyl1hsflwg312h26kfx"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.osx-arm64"; version = "9.0.0-preview.5.24306.7"; sha256 = "1b8m4r2xzlsrja4w12np2wi71bwh38crvjy80md1gc5g67qkh0nc"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.osx-x64"; version = "9.0.0-preview.5.24306.7"; sha256 = "1j5qpqy7fsg7m637i5p0mfaar6jrfcnwl8kz4virby6an3kgn2fs"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.win-x64"; version = "9.0.0-preview.5.24306.7"; sha256 = "1n9m33v04hbbvg7cac5s31sc6733amsafg8kv39b1v5bmfid6m7w"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.win-x86"; version = "9.0.0-preview.5.24306.7"; sha256 = "0lz2z4gx54zy8sffwbys1ls1qh03xjgzxzkmsngjdhpzbipyslng"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.5.24306.7"; sha256 = "0faq6h29s4l9lgjkhp82wygxjhjmqpigpc2rzhkw519vkc9a38jp"; }) + (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.5.24306.7"; sha256 = "19al895aca67a681zm4ppznpdrf4mcs3qqkpwngmcv13jx9mydzf"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-arm"; version = "9.0.0-preview.5.24306.7"; sha256 = "1ds8w00nxq9i06xklh9klv47q79c0b9blzafkvbay9gclxib310k"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-arm64"; version = "9.0.0-preview.5.24306.7"; sha256 = "19xabxhnb22g6pj8c7bx2zv9ys6qca561fmxq2ac8jl8bdwjzw20"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-x64"; version = "9.0.0-preview.5.24306.7"; sha256 = "0g57liiiavqg3s1j4ra0ppd21ldfwihahqd69mai5h37yr7wggn2"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-arm"; version = "9.0.0-preview.5.24306.7"; sha256 = "15vv4bhdvki49y4zhqpvz1vr8d1iznrbbxk5hypq13k6aypsb3nr"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-arm64"; version = "9.0.0-preview.5.24306.7"; sha256 = "0q5ircv3lrcrjdvkv50gknaix55l9z24rr8x8cb54zcq3fjfn2li"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-x64"; version = "9.0.0-preview.5.24306.7"; sha256 = "0hxf3xk6yn8n04fwj9j7c6a70y9apf31aafn2nhd3yykvvf7618d"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.osx-x64"; version = "9.0.0-preview.5.24306.7"; sha256 = "1pw27c0czrrgp0vqnlcz6zhyrhbjbqh14wbcknrcn1smlm6fl77x"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.osx-arm64"; version = "9.0.0-preview.5.24306.7"; sha256 = "14k0sd0b6rpngw8s1gz833kq89qghnhszgvk9v2rabncb1qlhanv"; }) + (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.5.24306.7"; sha256 = "0c2spsh6m236cmpf6c2hafcrr4w2ks433g024cmpa93a3s6dfvcp"; }) + (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.5.24306.7"; sha256 = "0wla1jr95b7hm6wa2yx080wgy8iaqr7r3q83jp3qdnp3k2y0rgpk"; }) + (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.5.24306.7"; sha256 = "00mkrwlx48dis7fg73gxj1c99zs1na4k6y11q1908a674hni8qlx"; }) + (fetchNuGet { pname = "runtime.linux-x64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.5.24306.7"; sha256 = "02aqy5fjy8r8n1acvmixmlwif5jg6fhaygnk5ishlmw18yvhzp7m"; }) + (fetchNuGet { pname = "runtime.osx-x64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.5.24306.7"; sha256 = "1qbjvdmlg3hj1p9v8nzgcpp5cr7nakn14nksighqc8ck4nf9i68g"; }) + (fetchNuGet { pname = "runtime.win-arm64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.5.24306.7"; sha256 = "1s8m140xbwc2pmyhrrmgfd4r2lppld26m6x3k1kz9gfn7kk4ayjx"; }) + (fetchNuGet { pname = "runtime.win-x64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.5.24306.7"; sha256 = "1f9hn43fs25fbzzhrawfjgz56mknsnmhmdgf1f1pqlpfzwb2bvvn"; }) + (fetchNuGet { pname = "Microsoft.NET.ILLink.Tasks"; version = "9.0.0-preview.5.24306.7"; sha256 = "0ck2agia8lmhvwvzh73yh2ydkqfz4g21404cv4qxjj28l618cjl5"; }) ]; in rec { - release_9_0 = "9.0.0-preview.2"; + release_9_0 = "9.0.0-preview.5"; aspnetcore_9_0 = buildAspNetCore { - version = "9.0.0-preview.2.24128.4"; + version = "9.0.0-preview.5.24306.11"; srcs = { x86_64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/e3e81a61-4493-433a-ac40-ce2bceb3370d/ce1c59a7054d200dd24a7e4987666b8c/aspnetcore-runtime-9.0.0-preview.2.24128.4-linux-x64.tar.gz"; - sha512 = "9d836edc539ace64ef8fa883bdfc881d89f4cf30d048640246dae9d54e46e79f2e82ebcdf366c1b69017d86d1bf1496acef5d56c3133297ea0bddb2df2eb4523"; + url = "https://download.visualstudio.microsoft.com/download/pr/f43de71b-3bf6-49ae-99ec-66499bfa6990/438e1533bbb47d3d7e1f58983677a4f6/aspnetcore-runtime-9.0.0-preview.5.24306.11-linux-x64.tar.gz"; + sha512 = "b4358041bfc42bf614644e7f3c38a4fb73185a8d3541065bfd6758622860b0d0addff6a7ab6e7439d029b0b54238864279d19f1b5096b5d7c0fd10c0435e652e"; }; aarch64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/cb8d7d43-e403-44b3-9ee8-477a947f3e6b/3e38a543b6b9144e0fed12cf18eae7f9/aspnetcore-runtime-9.0.0-preview.2.24128.4-linux-arm64.tar.gz"; - sha512 = "6f7a5575d02197f1908c56d580f0a9049f393ae68a4ad4b73935e981d9c6766e028463d2828d3ba0aeb4049237516fee2e116196e790948fefd65436ea804f35"; + url = "https://download.visualstudio.microsoft.com/download/pr/e8849fb4-309b-4008-b697-4b5af127cc8e/285762b4db9cfb18abad4e005b37f2cb/aspnetcore-runtime-9.0.0-preview.5.24306.11-linux-arm64.tar.gz"; + sha512 = "6e6198d26b16ebae7bf7f7a428b0026d3c7edb20fa0acf844670a98cdb78a8b0d37cad5df22f35dc3379de8069fdc95318f5eeebcd5b03ad99cf595699116abb"; }; x86_64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/dbbdbf43-8860-4aae-b1aa-57d44f976cc8/f4f6c6c4a740de95a332ed2c693d1d6f/aspnetcore-runtime-9.0.0-preview.2.24128.4-osx-x64.tar.gz"; - sha512 = "c0c37a504f8c3113c90b8108f1f784fbb61387475e3eab37d303c49f627e06034ef6e917ee9c780e910cbf565c20050173f240f215fdead4fabb1f3795f3ac08"; + url = "https://download.visualstudio.microsoft.com/download/pr/f07ad200-6654-4341-a594-9a1eb1ca66f9/929c2533f6fe9c402fcb5fee99ee1103/aspnetcore-runtime-9.0.0-preview.5.24306.11-osx-x64.tar.gz"; + sha512 = "104b0b8f216bd36710ee912c92c89c4a5be97774eb21cf090c5c12acbe3ff8a8ec22a2b2bca56feda8aa21690c734d5a4b8293569cbf45172ead6b587d3858fd"; }; aarch64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/9f27cd5d-334b-4dfe-8876-33186210815a/2752edc7662b603b734219e4fee20ba0/aspnetcore-runtime-9.0.0-preview.2.24128.4-osx-arm64.tar.gz"; - sha512 = "81b5860e68e9e660a535568f96d8058ab6f98dd6b0a8305e3e3358ee721da610c08baf0b59a52d7e30184c39784ab18544f9328a55d8490d400d07be734059a4"; + url = "https://download.visualstudio.microsoft.com/download/pr/b4c5eec1-4026-4e58-adfd-64dbf4426b1e/1f05059da0484ade0ba1ce6a3e8f6bd5/aspnetcore-runtime-9.0.0-preview.5.24306.11-osx-arm64.tar.gz"; + sha512 = "f6ed6cc22e20e986cf54ddd0c8868b524efcf84ccbcd5335bdb4ac44fbb08641850448aed5d85bcfd2d403b3a89a73cb932d73db1b590cfc704a58aa8ec79d5f"; }; }; }; runtime_9_0 = buildNetRuntime { - version = "9.0.0-preview.2.24128.5"; + version = "9.0.0-preview.5.24306.7"; srcs = { x86_64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/3d7900df-fefb-4aba-8dbc-e3d755111a85/c849ddf0290aeae485414ba46ad961c3/dotnet-runtime-9.0.0-preview.2.24128.5-linux-x64.tar.gz"; - sha512 = "6433959a75103f2f1108bbc16cfe348f9ba04fec1c8f9b6895019241bfcb7b21fab675cc13971f2c1a66b46b044a95f91e1e2b46e6e8bdd893d277906f82545a"; + url = "https://download.visualstudio.microsoft.com/download/pr/acc83ac1-a75a-453d-beb1-ab0eef7544b6/fc1c9260c812441c5c51370aa57ea1f9/dotnet-runtime-9.0.0-preview.5.24306.7-linux-x64.tar.gz"; + sha512 = "6d5a313eb3213bca2ac209021218d978a7d8291041f4572780dfb48b5ccb7efe9ace509c75dad1db8e6a427c0bd5e4b2596c3e9f66eec5df4e717a66f8c3d7fa"; }; aarch64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/ab7bbaf3-c61e-481d-8dbf-b0dc2bcc80f6/0467f280265fe3b33ddcd345b04cdfa1/dotnet-runtime-9.0.0-preview.2.24128.5-linux-arm64.tar.gz"; - sha512 = "5ae4c5f4acf1465c8aba29a90aa3ee99ab47ffece9f932e9fb4de8937d05feace4c5d3b53d4b8bf226eb99de16a0aad0e71f091827651f0722261513c8a8a2e7"; + url = "https://download.visualstudio.microsoft.com/download/pr/7ac3c308-bdeb-4fff-98b8-b22ff6c479aa/31e3d32e7732b17506d41cb6cd7a51b2/dotnet-runtime-9.0.0-preview.5.24306.7-linux-arm64.tar.gz"; + sha512 = "8e49eb2e279684c665031e04c915d63c19e617bf44194655374c957bb13d7f22c8c0e233196711c029653958f98788732e1bbf200d22fad27f76523d7506a91e"; }; x86_64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/8ccc8b00-80b0-48c4-9948-9adfa67f42e3/b93918f628eee154b3400fe05774d1be/dotnet-runtime-9.0.0-preview.2.24128.5-osx-x64.tar.gz"; - sha512 = "9f83d1d7dbfb8c8df1c7530fed3ddbb1571e60100954051bf07b8ee758edc600d1d988819c91711cd8b4baa05dd97f9900d1edf2ae5035ac74930a920951f380"; + url = "https://download.visualstudio.microsoft.com/download/pr/4a7db5f1-a6b4-4232-ba81-f848a8f6dde7/20b9502eb9b73e2f7ae047ae53cd1f21/dotnet-runtime-9.0.0-preview.5.24306.7-osx-x64.tar.gz"; + sha512 = "617847ec35016e4c51359fb8585563a432b8a9ff2c6656d6c10f2e3db70c20dada36509a73b31622c91ccfd5246f51c1c0df79852035f65521ac3f78943f37ca"; }; aarch64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/6401083b-8213-431e-94b3-bb1bba37d792/551aca92ab4da13513ead1e7865d57e2/dotnet-runtime-9.0.0-preview.2.24128.5-osx-arm64.tar.gz"; - sha512 = "cc7b8626cdec48427ef79f14c0919a09a3500bdc1c2933c6b5cf80886cc590ab20ccbd07bdb3a6081e47b80f372db3b4887b5276a12252887b7360a7f23e9901"; + url = "https://download.visualstudio.microsoft.com/download/pr/42df8bc2-3414-4253-99f0-50d52d4b0c36/a9b0b1664e2dcba0622b9dc6c6a8a8e8/dotnet-runtime-9.0.0-preview.5.24306.7-osx-arm64.tar.gz"; + sha512 = "7c61293b719016dc8212e5564a80a3686a6947d220e2243438616559995c2d415629bf583148513d0691325ebdac91b6a13cbf4d37d7328426b73989edd8ef7c"; }; }; }; sdk_9_0_1xx = buildNetSdk { - version = "9.0.100-preview.2.24157.14"; + version = "9.0.100-preview.5.24307.3"; srcs = { x86_64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/911f82cf-0f87-46c2-8d70-44fab9a0f3c9/137ec23686722b8119bd62def8d7b117/dotnet-sdk-9.0.100-preview.2.24157.14-linux-x64.tar.gz"; - sha512 = "c44df5e11791e4b22720834ed7f28102e33ab475670fa8e132d73d5dd03d8f4ed3f4a548deac67a79e06db6f776c9f632eda4503b6fdc9eef7ffb001cc9963c0"; + url = "https://download.visualstudio.microsoft.com/download/pr/96e19e8f-579e-4a1d-a18e-6773a44d7cd1/092cfc588686cc698c449998b7d5ae35/dotnet-sdk-9.0.100-preview.5.24307.3-linux-x64.tar.gz"; + sha512 = "13b9934b3e7b736ab802a8c580aad95ed4dff6b8f31047c71ce9ffcf4d07e55105d4b0170d309551707b9d232d297cb305c67ed5b5f7026f47ec072ee1bbc121"; }; aarch64-linux = { - url = "https://download.visualstudio.microsoft.com/download/pr/b64ba1b3-ad10-40a2-b588-73db9ed9d99d/f772743c20f55a5a8aea3da2e1480676/dotnet-sdk-9.0.100-preview.2.24157.14-linux-arm64.tar.gz"; - sha512 = "1d591e504352f765a35092394719451c024a628c69efb6a10d0a5d57947c466a004243e799b46147fdf6316a23b4335b1e8fb1fc5513def1dec9f96c6c845dc7"; + url = "https://download.visualstudio.microsoft.com/download/pr/25f41d0d-d27c-4dc5-8884-6c49897d89d1/c51387b8bde1d278a0982b03c3e8c1b1/dotnet-sdk-9.0.100-preview.5.24307.3-linux-arm64.tar.gz"; + sha512 = "3c6f7e6f2f56e86bc8a9633f50129cfa992c52c287dc89551b23cd62fa471199e90392eba7414659c8ff8eecf1dad04016615a98cf85f6c2045d61f6f14c9e73"; }; x86_64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/5d2259a0-cb6e-4079-96fa-e0de6f0448c5/9b299e3cc15adf6153c28c24cba35fef/dotnet-sdk-9.0.100-preview.2.24157.14-osx-x64.tar.gz"; - sha512 = "a5a02f596e3976e65650d6a780903a755d4d700491c670b4f3c2f167224da632b98ad03ab7a087dc18561c5cc3ae6a3be78d5c6ca2f7312c7d7c417d909a481a"; + url = "https://download.visualstudio.microsoft.com/download/pr/a6731f1c-ffd0-4cca-a309-89576e55552c/3000f43ca4b3b51bb034bd7daa514841/dotnet-sdk-9.0.100-preview.5.24307.3-osx-x64.tar.gz"; + sha512 = "ebb84f920a7bb663238a10007d784a7c90f66d073089371fc2c9d5556cba945918fd8b193e02eb3d889676952b79616398aa2555d7d46d080088f01f67ede43e"; }; aarch64-darwin = { - url = "https://download.visualstudio.microsoft.com/download/pr/30628efc-01f0-468d-baf1-fc487e55093a/4c2bf86dbebb6c522d4d667516dc5930/dotnet-sdk-9.0.100-preview.2.24157.14-osx-arm64.tar.gz"; - sha512 = "1c7166a594ba6c07d0233aac44428e561e2131f1f1812cdfee75807d19f1fe53f40f9d93e88d4a478c885993424ec2ec7b9aaf8f174332f587e6ff10813680ec"; + url = "https://download.visualstudio.microsoft.com/download/pr/090175ff-fe42-4064-98fe-b6d90e08162d/bc72a57ada79f0ee7b71d74f5deb66a0/dotnet-sdk-9.0.100-preview.5.24307.3-osx-arm64.tar.gz"; + sha512 = "8c1a13d14f2502d3897871f82abd2c2df8cb41ff9d754e79693b99d0780deb910dad7486e05ec065c4a38490de00d251c64b0b2a734863e0a452f0ed23b1e1a0"; }; }; inherit packages; diff --git a/pkgs/development/compilers/dotnet/vmr.nix b/pkgs/development/compilers/dotnet/vmr.nix index 3638da1117e9b..32e10419d0b8b 100644 --- a/pkgs/development/compilers/dotnet/vmr.nix +++ b/pkgs/development/compilers/dotnet/vmr.nix @@ -2,7 +2,6 @@ , stdenvNoCC , lib , fetchurl -, fetchFromGitHub , dotnetCorePackages , jq , curl @@ -225,7 +224,7 @@ in stdenv.mkDerivation rec { --inplace \ -s //Project -t elem -n Import \ -i \$prev -t attr -n Project -v "${./patch-npm-packages.proj}" \ - src/aspnetcore/eng/SourceBuild.props + src/aspnetcore/eng/DotNetBuild.props '' + lib.optionalString (lib.versionAtLeast version "9") '' # https://github.com/dotnet/source-build/issues/3131#issuecomment-2030215805 @@ -234,8 +233,34 @@ in stdenv.mkDerivation rec { --replace-fail \ "'\$(DotNetBuildSourceOnly)' == 'true'" \ "'\$(DotNetBuildSourceOnly)' == 'true' and \$(PortableBuild) == 'false'" + + # https://github.com/dotnet/source-build/issues/4325 + xmlstarlet ed \ + --inplace \ + -r '//Target[@Name="UnpackTarballs"]/Move' -v Copy \ + eng/init-source-only.proj + + # AOT is currently broken in binary SDKs, and the resulting executable is + # unable to find ICU + xmlstarlet ed \ + --inplace \ + -s //Project -t elem -n PropertyGroup \ + -s \$prev -t elem -n NativeAotSupported -v false \ + src/runtime/src/coreclr/tools/aot/ILCompiler/ILCompiler.props + + # error: _FORTIFY_SOURCE requires compiling with optimization (-O) [-Werror,-W#warnings] + substituteInPlace \ + src/runtime/src/coreclr/ilasm/CMakeLists.txt \ + --replace-fail 'set_source_files_properties( prebuilt/asmparse.cpp PROPERTIES COMPILE_FLAGS "-O0" )' "" + + # https://github.com/dotnet/source-build/issues/4444 + xmlstarlet ed \ + --inplace \ + -s '//Project/Target/MSBuild[@Targets="Restore"]' \ + -t attr -n Properties -v "NUGET_PACKAGES='\$(CurrentRepoSourceBuildPackageCache)'" \ + src/aspnetcore/eng/Tools.props '' - + lib.optionalString isLinux '' + + lib.optionalString isLinux ('' substituteInPlace \ src/runtime/src/native/libs/System.Security.Cryptography.Native/opensslshim.c \ --replace-fail '"libssl.so"' '"${openssl.out}/lib/libssl.so"' @@ -248,18 +273,20 @@ in stdenv.mkDerivation rec { src/runtime/src/native/libs/System.Globalization.Native/pal_icushim.c \ --replace-fail '"libicui18n.so"' '"${icu}/lib/libicui18n.so"' \ --replace-fail '"libicuuc.so"' '"${icu}/lib/libicuuc.so"' - - # TODO: we should really make sure the first one (9.0) or the rest (8.0) - # works, but --replace-fail results in an empty file + '' + + lib.optionalString (lib.versionAtLeast version "9") '' + substituteInPlace \ + src/runtime/src/native/libs/System.Globalization.Native/pal_icushim.c \ + --replace-fail '#define VERSIONED_LIB_NAME_LEN 64' '#define VERSIONED_LIB_NAME_LEN 256' + '' + + lib.optionalString (lib.versionOlder version "9") '' substituteInPlace \ src/runtime/src/native/libs/System.Globalization.Native/pal_icushim.c \ - --replace-warn '#define VERSIONED_LIB_NAME_LEN 64' '#define VERSIONED_LIB_NAME_LEN 256' \ --replace-warn 'libicuucName[64]' 'libicuucName[256]' \ --replace-warn 'libicui18nName[64]' 'libicui18nName[256]' - '' + '') + lib.optionalString isDarwin ('' substituteInPlace \ - src/runtime/src/mono/CMakeLists.txt \ src/runtime/src/native/libs/System.Globalization.Native/CMakeLists.txt \ --replace-fail '/usr/lib/libicucore.dylib' '${darwin.ICU}/lib/libicucore.dylib' @@ -285,6 +312,12 @@ in stdenv.mkDerivation rec { substituteInPlace \ src/runtime/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.targets \ --replace-fail ' -no_code_signature_warning' "" + + # ld: library not found for -ld_classic + substituteInPlace \ + src/runtime/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.targets \ + src/runtime/src/coreclr/tools/aot/ILCompiler/ILCompiler.csproj \ + --replace-fail 'Include="-ld_classic"' "" '' + lib.optionalString (lib.versionOlder version "9") '' # [...]/build.proj(123,5): error : Did not find PDBs for the following SDK files: @@ -295,14 +328,24 @@ in stdenv.mkDerivation rec { substituteInPlace \ build.proj \ --replace-fail 'FailOnMissingPDBs="true"' 'FailOnMissingPDBs="false"' + + substituteInPlace \ + src/runtime/src/mono/CMakeLists.txt \ + --replace-fail '/usr/lib/libicucore.dylib' '${darwin.ICU}/lib/libicucore.dylib' ''); prepFlags = [ "--no-artifacts" "--no-prebuilts" + "--with-packages" dotnetSdk.artifacts ]; - configurePhase = '' + configurePhase = let + prepScript = + if (lib.versionAtLeast version "9") + then "./prep-source-build.sh" + else "./prep.sh"; + in '' runHook preConfigure # The build process tries to overwrite some things in the sdk (e.g. @@ -310,7 +353,7 @@ in stdenv.mkDerivation rec { cp -Tr ${dotnetSdk} .dotnet chmod -R +w .dotnet - ./prep.sh $prepFlags + ${prepScript} $prepFlags runHook postConfigure ''; @@ -368,8 +411,10 @@ in stdenv.mkDerivation rec { mkdir "$out" pushd "artifacts/${assets}/Release" - for archive in *.tar.gz; do - target=$out/''${archive%.tar.gz} + find . -name \*.tar.gz | while read archive; do + target=$out/$(basename "$archive" .tar.gz) + # dotnet 9 currently has two copies of the sdk tarball + [[ ! -e "$target" ]] || continue mkdir "$target" tar -C "$target" -xzf "$PWD/$archive" done diff --git a/pkgs/development/compilers/dtc/default.nix b/pkgs/development/compilers/dtc/default.nix index 60bce2f6e4580..9548f8fe06f8b 100644 --- a/pkgs/development/compilers/dtc/default.nix +++ b/pkgs/development/compilers/dtc/default.nix @@ -47,6 +47,12 @@ stdenv.mkDerivation (finalAttrs: { url = "https://github.com/dgibson/dtc/commit/35f26d2921b68d97fefbd5a2b6e821a2f02ff65d.patch"; sha256 = "sha256-cO4f/jJX/pQL7kk4jpKUhsCVESW2ZuWaTr7z3BuvVkw="; }) + + (fetchpatch { + name = "static.patch"; + url = "https://git.kernel.org/pub/scm/utils/dtc/dtc.git/patch/?id=3fbfdd08afd2a7a25b27433f6f5678c0fe694721"; + hash = "sha256-skK8m1s4xkK6x9AqzxiEK+1uMEmS27dBI1CdEXNFTfU="; + }) ]; env.SETUPTOOLS_SCM_PRETEND_VERSION = finalAttrs.version; diff --git a/pkgs/development/compilers/ecl/default.nix b/pkgs/development/compilers/ecl/default.nix index 26f1ec471a597..c11f471641dad 100644 --- a/pkgs/development/compilers/ecl/default.nix +++ b/pkgs/development/compilers/ecl/default.nix @@ -19,11 +19,11 @@ stdenv.mkDerivation rec { pname = "ecl"; - version = "23.9.9"; + version = "24.5.10"; src = fetchurl { url = "https://common-lisp.net/project/ecl/static/files/release/ecl-${version}.tgz"; - sha256 = "107q6gmxlsya4yv38r1x1axrgyyfgdrfkkz97zfp64bcrasdl6y5"; + hash = "sha256-5Opluxhh4OSVOGv6i8ZzvQFOltPPnZHpA4+RQ1y+Yis="; }; nativeBuildInputs = [ diff --git a/pkgs/development/compilers/edk2/default.nix b/pkgs/development/compilers/edk2/default.nix index 17151cf9f9477..cd15f29e370c9 100644 --- a/pkgs/development/compilers/edk2/default.nix +++ b/pkgs/development/compilers/edk2/default.nix @@ -41,6 +41,11 @@ edk2 = stdenv.mkDerivation rec { url = "https://src.fedoraproject.org/rpms/edk2/raw/08f2354cd280b4ce5a7888aa85cf520e042955c3/f/0021-Tweak-the-tools_def-to-support-cross-compiling.patch"; hash = "sha256-E1/fiFNVx0aB1kOej2DJ2DlBIs9tAAcxoedym2Zhjxw="; }) + # https://github.com/tianocore/edk2/pull/5658 + (fetchpatch { + url = "https://github.com/tianocore/edk2/commit/a34ff4a8f69a7b8a52b9b299153a8fac702c7df1.patch"; + hash = "sha256-u+niqwjuLV5tNPykW4xhb7PW2XvUmXhx5uvftG1UIbU="; + }) ]; srcWithVendoring = fetchFromGitHub { @@ -88,8 +93,8 @@ edk2 = stdenv.mkDerivation rec { mv -v edksetup.sh $out # patchShebangs fails to see these when cross compiling for i in $out/BaseTools/BinWrappers/PosixLike/*; do - substituteInPlace $i --replace '/usr/bin/env bash' ${buildPackages.bash}/bin/bash chmod +x "$i" + patchShebangs --build "$i" done ''; @@ -118,13 +123,13 @@ edk2 = stdenv.mkDerivation rec { prePatch = '' rm -rf BaseTools - ln -sv ${edk2}/BaseTools BaseTools + ln -sv ${buildPackages.edk2}/BaseTools BaseTools ''; configurePhase = '' runHook preConfigure export WORKSPACE="$PWD" - . ${edk2}/edksetup.sh BaseTools + . ${buildPackages.edk2}/edksetup.sh BaseTools runHook postConfigure ''; diff --git a/pkgs/development/compilers/elm/packages/ghc9_2/elm-format/elm-format.nix b/pkgs/development/compilers/elm/packages/ghc9_2/elm-format/elm-format.nix index 82ec995e1ecc2..9389a4cbb6402 100644 --- a/pkgs/development/compilers/elm/packages/ghc9_2/elm-format/elm-format.nix +++ b/pkgs/development/compilers/elm/packages/ghc9_2/elm-format/elm-format.nix @@ -25,7 +25,7 @@ mkDerivation { text ]; homepage = "https://elm-lang.org"; - description = "A source code formatter for Elm"; + description = "Source code formatter for Elm"; license = lib.licenses.bsd3; mainProgram = "elm-format"; } diff --git a/pkgs/development/compilers/elm/packages/ghc9_6/ansi-wl-pprint/default.nix b/pkgs/development/compilers/elm/packages/ghc9_6/ansi-wl-pprint/default.nix index 392ca5ab31b1b..272f0c520e526 100644 --- a/pkgs/development/compilers/elm/packages/ghc9_6/ansi-wl-pprint/default.nix +++ b/pkgs/development/compilers/elm/packages/ghc9_6/ansi-wl-pprint/default.nix @@ -12,6 +12,6 @@ mkDerivation { isExecutable = true; libraryHaskellDepends = [ ansi-terminal base ]; homepage = "http://github.com/ekmett/ansi-wl-pprint"; - description = "The Wadler/Leijen Pretty Printer for colored ANSI terminal output"; + description = "Wadler/Leijen Pretty Printer for colored ANSI terminal output"; license = lib.licenses.bsd3; } diff --git a/pkgs/development/compilers/elm/packages/ghc9_6/default.nix b/pkgs/development/compilers/elm/packages/ghc9_6/default.nix index 13ba7faa03088..0c30c9bea7285 100644 --- a/pkgs/development/compilers/elm/packages/ghc9_6/default.nix +++ b/pkgs/development/compilers/elm/packages/ghc9_6/default.nix @@ -19,7 +19,7 @@ self: pkgs.haskell.packages.ghc96.override { --prefix PATH ':' ${lib.makeBinPath [ nodejs ]} ''; - description = "A delightful language for reliable webapps"; + description = "Delightful language for reliable webapps"; homepage = "https://elm-lang.org/"; license = licenses.bsd3; maintainers = with maintainers; [ domenkozar turbomack ]; diff --git a/pkgs/development/compilers/elm/packages/ghc9_6/elm/default.nix b/pkgs/development/compilers/elm/packages/ghc9_6/elm/default.nix index 1071d50a84c95..65f9ffe40bda4 100644 --- a/pkgs/development/compilers/elm/packages/ghc9_6/elm/default.nix +++ b/pkgs/development/compilers/elm/packages/ghc9_6/elm/default.nix @@ -26,7 +26,7 @@ mkDerivation { vector zip-archive ]; homepage = "https://elm-lang.org"; - description = "The `elm` command line interface"; + description = "`elm` command line interface"; license = lib.licenses.bsd3; mainProgram = "elm"; } diff --git a/pkgs/development/compilers/elm/packages/lamdera/default.nix b/pkgs/development/compilers/elm/packages/lamdera/default.nix index c92d2d144d4b8..79101092e7885 100644 --- a/pkgs/development/compilers/elm/packages/lamdera/default.nix +++ b/pkgs/development/compilers/elm/packages/lamdera/default.nix @@ -33,7 +33,7 @@ stdenv.mkDerivation rec { meta = with lib; { homepage = "https://lamdera.com"; license = licenses.unfree; - description = "A delightful platform for full-stack web apps"; + description = "Delightful platform for full-stack web apps"; platforms = [ "aarch64-linux" "x86_64-linux" "aarch64-darwin" "x86_64-darwin" ]; maintainers = with maintainers; [ Zimmi48 ]; }; diff --git a/pkgs/development/compilers/elm/packages/node/default.nix b/pkgs/development/compilers/elm/packages/node/default.nix index 6d4d38a6d199c..bb58c212649b2 100644 --- a/pkgs/development/compilers/elm/packages/node/default.nix +++ b/pkgs/development/compilers/elm/packages/node/default.nix @@ -70,7 +70,7 @@ with self; with elmLib; { elm-graphql = nodePkgs."@dillonkearns/elm-graphql" // { meta = with lib; nodePkgs."@dillonkearns/elm-graphql".meta // { - description = " Autogenerate type-safe GraphQL queries in Elm."; + description = " Autogenerate type-safe GraphQL queries in Elm"; license = licenses.bsd3; maintainers = [ maintainers.pedrohlc ]; }; @@ -100,7 +100,7 @@ with self; with elmLib; { nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ makeWrapper old.nodejs.pkgs.node-gyp-build ]; meta = with lib; nodePkgs."elm-spa".meta // { - description = "A tool for building single page apps in Elm"; + description = "Tool for building single page apps in Elm"; homepage = "https://www.elm-spa.dev/"; license = licenses.bsd3; maintainers = [ maintainers.ilyakooo0 ]; @@ -110,7 +110,7 @@ with self; with elmLib; { elm-optimize-level-2 = nodePkgs."elm-optimize-level-2" // { meta = with lib; nodePkgs."elm-optimize-level-2".meta // { - description = "A second level of optimization for the Javascript that the Elm Compiler produces"; + description = "Second level of optimization for the Javascript that the Elm Compiler produces"; homepage = "https://github.com/mdgriffith/elm-optimize-level-2"; license = licenses.bsd3; maintainers = [ maintainers.turbomack ]; @@ -125,7 +125,7 @@ with self; with elmLib; { in patched.override (old: { meta = with lib; nodePkgs."elm-land".meta // { - description = "A production-ready framework for building Elm applications."; + description = "Production-ready framework for building Elm applications"; homepage = "https://elm.land/"; license = licenses.bsd3; maintainers = [ maintainers.zupo ]; diff --git a/pkgs/development/compilers/elm/packages/node/elm-pages/default.nix b/pkgs/development/compilers/elm/packages/node/elm-pages/default.nix index 5502e26b415dd..4f057be3a3040 100644 --- a/pkgs/development/compilers/elm/packages/node/elm-pages/default.nix +++ b/pkgs/development/compilers/elm/packages/node/elm-pages/default.nix @@ -19,7 +19,7 @@ nodePkgs."elm-pages".overrideAttrs ( ''; meta = with lib; nodePkgs."elm-pages".meta // { - description = "A statically typed site generator for Elm."; + description = "Statically typed site generator for Elm"; homepage = "https://github.com/dillonkearns/elm-pages"; license = licenses.bsd3; maintainers = [ maintainers.turbomack maintainers.jali-clarke ]; diff --git a/pkgs/development/compilers/elm/packages/node/node-packages.nix b/pkgs/development/compilers/elm/packages/node/node-packages.nix index 0efccbb5ff90a..3c7d770bdf482 100644 --- a/pkgs/development/compilers/elm/packages/node/node-packages.nix +++ b/pkgs/development/compilers/elm/packages/node/node-packages.nix @@ -9283,13 +9283,13 @@ let sha512 = "y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw=="; }; }; - "node-watch-0.5.5" = { + "node-watch-0.7.4" = { name = "node-watch"; packageName = "node-watch"; - version = "0.5.5"; + version = "0.7.4"; src = fetchurl { - url = "https://registry.npmjs.org/node-watch/-/node-watch-0.5.5.tgz"; - sha512 = "z9xN2ibI6P0UylFadN7oMcIMsoTeCENC0rZyRM5MVK9AqzSPx+uGqKG6KMPeC/laOV4wOGZq/GH0PTstRNSqOA=="; + url = "https://registry.npmjs.org/node-watch/-/node-watch-0.7.4.tgz"; + sha512 = "RinNxoz4W1cep1b928fuFhvAQ5ag/+1UlMDV7rbyGthBIgsiEouS4kvRayvvboxii4m8eolKOIBo3OjDqbc+uQ=="; }; }; "nopt-1.0.10" = { @@ -14795,7 +14795,7 @@ in sources."minimist-1.2.0" sources."ms-2.0.0" sources."negotiator-0.6.3" - sources."node-watch-0.5.5" + sources."node-watch-0.7.4" sources."oauth-sign-0.9.0" sources."on-finished-2.3.0" sources."opn-5.4.0" diff --git a/pkgs/development/compilers/emscripten/default.nix b/pkgs/development/compilers/emscripten/default.nix index c31f109f89086..9824f1246f34e 100644 --- a/pkgs/development/compilers/emscripten/default.nix +++ b/pkgs/development/compilers/emscripten/default.nix @@ -136,7 +136,7 @@ stdenv.mkDerivation rec { meta = with lib; { homepage = "https://github.com/emscripten-core/emscripten"; - description = "An LLVM-to-JavaScript Compiler"; + description = "LLVM-to-JavaScript Compiler"; platforms = platforms.all; maintainers = with maintainers; [ qknight matthewbauer raitobezarius willcohen ]; license = licenses.ncsa; diff --git a/pkgs/development/compilers/erg/default.nix b/pkgs/development/compilers/erg/default.nix index 9d02f1f4a9968..3cf038159b323 100644 --- a/pkgs/development/compilers/erg/default.nix +++ b/pkgs/development/compilers/erg/default.nix @@ -9,16 +9,16 @@ rustPlatform.buildRustPackage rec { pname = "erg"; - version = "0.6.35"; + version = "0.6.38"; src = fetchFromGitHub { owner = "erg-lang"; repo = "erg"; rev = "v${version}"; - hash = "sha256-aDYT2bXd2OcRRgYd6ycjeLPQ1LuRxejivhEFkiqZoGw="; + hash = "sha256-byoOvJ4SsRxFSbF4SwdDPlXNdMhypOgktnj4CkmAZuU="; }; - cargoHash = "sha256-I5g+Nqdr/UYS/+F9sGelOSnb2vnT5vHc0/VeRASBsQY="; + cargoHash = "sha256-QNykB9tXXlEyJupO5hkSN2ZqBZDwi0kl6IPHxkkaUxo="; nativeBuildInputs = [ makeWrapper @@ -56,7 +56,7 @@ rustPlatform.buildRustPackage rec { ''; meta = with lib; { - description = "A statically typed language that can deeply improve the Python ecosystem"; + description = "Statically typed language that can deeply improve the Python ecosystem"; mainProgram = "erg"; homepage = "https://github.com/erg-lang/erg"; changelog = "https://github.com/erg-lang/erg/releases/tag/${src.rev}"; diff --git a/pkgs/development/compilers/factor-lang/factor99.nix b/pkgs/development/compilers/factor-lang/factor99.nix index 59595210dd1a9..168cf3ea34993 100644 --- a/pkgs/development/compilers/factor-lang/factor99.nix +++ b/pkgs/development/compilers/factor-lang/factor99.nix @@ -202,7 +202,7 @@ stdenv.mkDerivation { meta = with lib; { homepage = "https://factorcode.org/"; - description = "A concatenative, stack-based programming language"; + description = "Concatenative, stack-based programming language"; longDescription = '' The Factor programming language is a concatenative, stack-based programming language with high-level features including dynamic types, diff --git a/pkgs/development/compilers/fbc/default.nix b/pkgs/development/compilers/fbc/default.nix index f2a223fb6b8a3..7f9c519703923 100644 --- a/pkgs/development/compilers/fbc/default.nix +++ b/pkgs/development/compilers/fbc/default.nix @@ -122,7 +122,7 @@ stdenv.mkDerivation rec { meta = with lib; { homepage = "https://www.freebasic.net/"; - description = "A multi-platform BASIC Compiler"; + description = "Multi-platform BASIC Compiler"; mainProgram = "fbc"; longDescription = '' FreeBASIC is a completely free, open-source, multi-platform BASIC compiler (fbc), diff --git a/pkgs/development/compilers/flix/default.nix b/pkgs/development/compilers/flix/default.nix index 926c98d68043e..37aade7464c93 100644 --- a/pkgs/development/compilers/flix/default.nix +++ b/pkgs/development/compilers/flix/default.nix @@ -2,11 +2,11 @@ stdenvNoCC.mkDerivation rec { pname = "flix"; - version = "0.46.0"; + version = "0.48.0"; src = fetchurl { url = "https://github.com/flix/flix/releases/download/v${version}/flix.jar"; - sha256 = "sha256-jj8h30QsIF5HlunrqUktHY6bCUq9gMNVlAVsAH0F0U0="; + sha256 = "sha256-piwCEqUt4inhn4Ju2FaRjYtvkrNszCaTRE34eXERFLU="; }; dontUnpack = true; @@ -25,7 +25,7 @@ stdenvNoCC.mkDerivation rec { ''; meta = with lib; { - description = "The Flix Programming Language"; + description = "Flix Programming Language"; mainProgram = "flix"; homepage = "https://github.com/flix/flix"; sourceProvenance = with sourceTypes; [ binaryBytecode ]; diff --git a/pkgs/development/compilers/flutter/default.nix b/pkgs/development/compilers/flutter/default.nix index 6d2d904660338..c3ef3ab9db4a0 100644 --- a/pkgs/development/compilers/flutter/default.nix +++ b/pkgs/development/compilers/flutter/default.nix @@ -1,4 +1,4 @@ -{ callPackage, fetchzip, fetchFromGitHub, dart, lib, stdenv }: +{ useNixpkgsEngine ? false, callPackage, fetchzip, fetchFromGitHub, dart, lib, stdenv }@args: let mkCustomFlutter = args: callPackage ./flutter.nix args; wrapFlutter = flutter: callPackage ./wrapper.nix { inherit flutter; }; @@ -8,34 +8,39 @@ let mkFlutter = { version , engineVersion + , engineSwiftShaderHash + , engineSwiftShaderRev + , engineHashes + , enginePatches , dartVersion , flutterHash , dartHash , patches , pubspecLock , artifactHashes - }: + , channel + }@fargs: let args = { - inherit version engineVersion patches pubspecLock artifactHashes; + inherit version engineVersion engineSwiftShaderRev engineSwiftShaderHash engineHashes enginePatches patches pubspecLock artifactHashes useNixpkgsEngine channel; dart = dart.override { version = dartVersion; sources = { "${dartVersion}-x86_64-linux" = fetchzip { - url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${dartVersion}/sdk/dartsdk-linux-x64-release.zip"; + url = "https://storage.googleapis.com/dart-archive/channels/${channel}/release/${dartVersion}/sdk/dartsdk-linux-x64-release.zip"; sha256 = dartHash.x86_64-linux; }; "${dartVersion}-aarch64-linux" = fetchzip { - url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${dartVersion}/sdk/dartsdk-linux-arm64-release.zip"; + url = "https://storage.googleapis.com/dart-archive/channels/${channel}/release/${dartVersion}/sdk/dartsdk-linux-arm64-release.zip"; sha256 = dartHash.aarch64-linux; }; "${dartVersion}-x86_64-darwin" = fetchzip { - url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${dartVersion}/sdk/dartsdk-macos-x64-release.zip"; + url = "https://storage.googleapis.com/dart-archive/channels/${channel}/release/${dartVersion}/sdk/dartsdk-macos-x64-release.zip"; sha256 = dartHash.x86_64-darwin; }; "${dartVersion}-aarch64-darwin" = fetchzip { - url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${dartVersion}/sdk/dartsdk-macos-arm64-release.zip"; + url = "https://storage.googleapis.com/dart-archive/channels/${channel}/release/${dartVersion}/sdk/dartsdk-macos-arm64-release.zip"; sha256 = dartHash.aarch64-darwin; }; }; @@ -63,10 +68,15 @@ let in lib.nameValuePair "v${version}" (wrapFlutter (mkFlutter ({ patches = (getPatches ./patches) ++ (getPatches (versionDir + "/patches")); + enginePatches = (getPatches ./engine/patches) ++ (getPatches (versionDir + "/engine/patches")); } // data)))) (builtins.readDir ./versions); + + stableFlutterVersions = lib.attrsets.filterAttrs (_: v: v.channel == "stable") flutterVersions; + betaFlutterVersions = lib.attrsets.filterAttrs (_: v: v.channel == "beta") flutterVersions; in flutterVersions // { - stable = flutterVersions.${lib.last (lib.naturalSort (builtins.attrNames flutterVersions))}; + beta = flutterVersions.${lib.last (lib.naturalSort (builtins.attrNames betaFlutterVersions))}; + stable = flutterVersions.${lib.last (lib.naturalSort (builtins.attrNames stableFlutterVersions))}; inherit wrapFlutter mkFlutter; } diff --git a/pkgs/development/compilers/flutter/engine/constants.nix b/pkgs/development/compilers/flutter/engine/constants.nix new file mode 100644 index 0000000000000..9b7907fc337f7 --- /dev/null +++ b/pkgs/development/compilers/flutter/engine/constants.nix @@ -0,0 +1,41 @@ +{ lib, targetPlatform }: +rec { + os = + if targetPlatform.isLinux then + "linux" + else if targetPlatform.isDarwin then + "macos" + else if targetPlatform.isWindows then + "windows" + else + throw "Unsupported OS \"${targetPlatform.parsed.kernel.name}\""; + + arch = + if targetPlatform.isx86_64 then + "amd64" + else if targetPlatform.isx86 && targetPlatform.is32bit then + "386" + else if targetPlatform.isAarch64 then + "arm64" + else if targetPlatform.isMips && targetPlatform.parsed.cpu.significantByte == "littleEndian" then + "mipsle" + else if targetPlatform.isMips64 then + "mips64${lib.optionalString (targetPlatform.parsed.cpu.significantByte == "littleEndian") "le"}" + else if targetPlatform.isPower64 then + "ppc64${lib.optionalString (targetPlatform.parsed.cpu.significantByte == "littleEndian") "le"}" + else if targetPlatform.isS390x then + "s390x" + else + throw "Unsupported CPU \"${targetPlatform.parsed.cpu.name}\""; + + alt-arch = + if targetPlatform.isx86_64 then + "x64" + else if targetPlatform.isAarch64 then + "arm64" + else + targetPlatform.parsed.cpu.name; + + platform = "${os}-${arch}"; + alt-platform = "${os}-${alt-arch}"; +} diff --git a/pkgs/development/compilers/flutter/engine/dart.nix b/pkgs/development/compilers/flutter/engine/dart.nix new file mode 100644 index 0000000000000..c872113f4a90e --- /dev/null +++ b/pkgs/development/compilers/flutter/engine/dart.nix @@ -0,0 +1,13 @@ +{ engine, runCommand }: +runCommand "flutter-engine-${engine.version}-dart" { + version = engine.dartSdkVersion; + + inherit engine; + inherit (engine) outName; + + meta = engine.meta // { + description = "Dart SDK compiled from the Flutter Engine"; + }; +} '' + ln -s ${engine}/out/$outName/dart-sdk $out +'' diff --git a/pkgs/development/compilers/flutter/engine/default.nix b/pkgs/development/compilers/flutter/engine/default.nix new file mode 100644 index 0000000000000..4aac2301f866c --- /dev/null +++ b/pkgs/development/compilers/flutter/engine/default.nix @@ -0,0 +1,76 @@ +{ + callPackage, + dartSdkVersion, + flutterVersion, + swiftshaderHash, + swiftshaderRev, + version, + hashes, + url, + patches, + runtimeModes, + isOptimized ? true, + lib, + stdenv, + dart, + mainRuntimeMode ? null, + altRuntimeMode ? null, +}@args: +let + mainRuntimeMode = args.mainRuntimeMode or builtins.elemAt runtimeModes 0; + altRuntimeMode = args.altRuntimeMode or builtins.elemAt runtimeModes 1; + + runtimeModesBuilds = lib.genAttrs runtimeModes ( + runtimeMode: + callPackage ./package.nix { + inherit + dartSdkVersion + flutterVersion + swiftshaderHash + swiftshaderRev + version + hashes + url + patches + runtimeMode + isOptimized + ; + } + ); +in +stdenv.mkDerivation ( + { + pname = "flutter-engine"; + inherit url runtimeModes; + inherit (runtimeModesBuilds.${mainRuntimeMode}) + meta + src + version + dartSdkVersion + isOptimized + runtimeMode + outName + dart + ; + inherit altRuntimeMode; + + dontUnpack = true; + dontBuild = true; + + installPhase = + '' + mkdir -p $out/out + '' + + lib.concatMapStrings ( + runtimeMode: + let + runtimeModeBuild = runtimeModesBuilds.${runtimeMode}; + runtimeModeOut = runtimeModeBuild.outName; + in + '' + ln -sf ${runtimeModeBuild}/out/${runtimeModeOut} $out/out/${runtimeModeOut} + '' + ) runtimeModes; + } + // runtimeModesBuilds +) diff --git a/pkgs/development/compilers/flutter/engine/package.nix b/pkgs/development/compilers/flutter/engine/package.nix new file mode 100644 index 0000000000000..7c2cd5cec2201 --- /dev/null +++ b/pkgs/development/compilers/flutter/engine/package.nix @@ -0,0 +1,315 @@ +{ + lib, + callPackage, + writeText, + symlinkJoin, + targetPlatform, + hostPlatform, + darwin, + clang, + llvm, + tools ? callPackage ./tools.nix { inherit hostPlatform; }, + stdenv, + stdenvNoCC, + dart, + fetchgit, + runCommand, + llvmPackages, + patchelf, + openbox, + xorg, + libglvnd, + libepoxy, + wayland, + freetype, + pango, + glib, + harfbuzz, + cairo, + gdk-pixbuf, + at-spi2-atk, + zlib, + gtk3, + pkg-config, + ninja, + python3, + git, + version, + flutterVersion, + dartSdkVersion, + swiftshaderHash, + swiftshaderRev, + hashes, + patches, + url, + runtimeMode ? "release", + isOptimized ? true, +}: +with lib; +let + expandSingleDep = + dep: lib.optionals (lib.isDerivation dep) ([ dep ] ++ map (output: dep.${output}) dep.outputs); + + expandDeps = deps: flatten (map expandSingleDep deps); + + constants = callPackage ./constants.nix { inherit targetPlatform; }; + + src = callPackage ./source.nix { + inherit + tools + version + hashes + url + ; + }; + + swiftshader = fetchgit { + url = "https://swiftshader.googlesource.com/SwiftShader.git"; + hash = swiftshaderHash; + rev = swiftshaderRev; + }; + + llvm = symlinkJoin { + name = "llvm"; + paths = with llvmPackages; [ + clang + llvmPackages.llvm + ]; + }; + + outName = "host_${runtimeMode}${lib.optionalString (!isOptimized) "_unopt --unoptimized"}"; +in +stdenv.mkDerivation (finalAttrs: { + pname = "flutter-engine-${runtimeMode}${lib.optionalString (!isOptimized) "-unopt"}"; + inherit + version + runtimeMode + patches + isOptimized + dartSdkVersion + src + outName + swiftshader; + + toolchain = symlinkJoin { + name = "flutter-engine-toolchain-${version}"; + + paths = + expandDeps ( + optionals (stdenv.isLinux) [ + gtk3 + wayland + libepoxy + libglvnd + freetype + at-spi2-atk + glib + gdk-pixbuf + harfbuzz + pango + cairo + xorg.libxcb + xorg.libX11 + xorg.libXcursor + xorg.libXrandr + xorg.libXrender + xorg.libXinerama + xorg.libXi + xorg.libXext + xorg.libXfixes + xorg.libXxf86vm + xorg.xorgproto + zlib + ] + ++ optionals (stdenv.isDarwin) [ + clang + llvm + ] + ) + ++ [ + stdenv.cc.libc_dev + stdenv.cc.libc_lib + ]; + + # Needed due to Flutter expecting everything to be relative to $out + # and not true absolute path (ie relative to "/"). + postBuild = '' + mkdir -p $(dirname $(dirname "$out/$out")) + ln -s $(dirname "$out") $out/$(dirname "$out") + ''; + }; + + NIX_CFLAGS_COMPILE = "-I${finalAttrs.toolchain}/include"; + + nativeCheckInputs = lib.optionals stdenv.isLinux [ xorg.xorgserver openbox ]; + + nativeBuildInputs = + [ + python3 + (tools.vpython python3) + git + pkg-config + ninja + dart + ] + ++ lib.optionals (stdenv.isLinux) [ patchelf ] + ++ optionals (stdenv.isDarwin) [ + darwin.system_cmds + darwin.xcode + tools.xcode-select + ] + ++ lib.optionals (stdenv.cc.libc ? bin) [ stdenv.cc.libc.bin ]; + + buildInputs = [ gtk3 ]; + + patchtools = [ + "third_party/dart/tools/sdks/dart-sdk/bin/dart" + "flutter/third_party/gn/gn" + ]; + + dontPatch = true; + + patchgit = [ + "third_party/dart" + "flutter" + "." + ] ++ lib.optional (lib.versionAtLeast flutterVersion "3.21") "flutter/third_party/skia"; + + postUnpack = '' + pushd ${src.name} + + ln -s $swiftshader src/flutter/third_party/swiftshader + + ${lib.optionalString (stdenv.isLinux) '' + for patchtool in ''${patchtools[@]}; do + patchelf src/$patchtool --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) + done + ''} + + for dir in ''${patchgit[@]}; do + pushd src/$dir + rev=$(cat .git/HEAD) + rm -rf .git + git init + git add . + git config user.name "nobody" + git config user.email "nobody@local.host" + git commit -a -m "$rev" --quiet + popd + done + + mkdir -p src/flutter/buildtools/${constants.alt-platform} + ln -s ${llvm} src/flutter/buildtools/${constants.alt-platform}/clang + + dart src/third_party/dart/tools/generate_package_config.dart + cp ${./pkg-config.py} src/build/config/linux/pkg-config.py + echo "${dartSdkVersion}" >src/third_party/dart/sdk/version + + rm -rf src/third_party/angle/.git + python3 src/flutter/tools/pub_get_offline.py + + pushd src/flutter + + for p in ''${patches[@]}; do + patch -p1 -i $p + done + + popd + popd + ''; + + configureFlags = + [ + "--no-prebuilt-dart-sdk" + "--embedder-for-target" + "--no-goma" + ] + ++ optionals (targetPlatform.isx86_64 == false) [ + "--linux" + "--linux-cpu ${constants.alt-arch}" + ]; + + # NOTE: Once https://github.com/flutter/flutter/issues/127606 is fixed, use "--no-prebuilt-dart-sdk" + configurePhase = + '' + runHook preConfigure + + export PYTHONPATH=$src/src/build + '' + + lib.optionalString stdenv.isDarwin '' + export PATH=${darwin.xcode}/Contents/Developer/usr/bin/:$PATH + '' + + '' + python3 ./src/flutter/tools/gn $configureFlags \ + --runtime-mode $runtimeMode \ + --out-dir $out \ + --target-sysroot $toolchain \ + --target-dir $outName \ + --target-triple ${targetPlatform.config} \ + --enable-fontconfig + + runHook postConfigure + ''; + + buildPhase = '' + runHook preBuild + + export TERM=dumb + for tool in flatc scenec gen_snapshot dart impellerc shader_archiver gen_snapshot_product; do + ninja -C $out/out/$outName -j$NIX_BUILD_CORES $tool + ${lib.optionalString (stdenv.isLinux) '' + patchelf $out/out/$outName/$tool --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) + ''} + done + + ninja -C $out/out/$outName -j$NIX_BUILD_CORES + + ${lib.optionalString (stdenv.isLinux) '' + patchelf $out/out/$outName/dart-sdk/bin/dartaotruntime \ + --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) + + find $out/out/$outName/exe.unstripped -executable -type f -exec patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) {} \; + ''} + + runHook postBuild + ''; + + # Tests are broken + doCheck = false; + checkPhase = '' + ln -s $out/out src/out + touch src/out/run_tests.log + sh src/flutter/testing/run_tests.sh $outName + rm src/out/run_tests.log + ''; + + installPhase = '' + runHook preInstall + + rm -rf $out/out/$outName/{obj,gen,exe.unstripped,lib.unstripped,zip_archives} + rm $out/out/$outName/{args.gn,build.ninja,build.ninja.d,compile_commands.json,display_list_rendertests,flutter_tester,toolchain.ninja} + find $out/out/$outName -name '*_unittests' -delete + find $out/out/$outName -name '*_benchmarks' -delete + + runHook postInstall + ''; + + passthru = { + dart = callPackage ./dart.nix { engine = finalAttrs.finalPackage; }; + }; + + meta = { + # Very broken on Darwin + broken = stdenv.isDarwin; + description = "The Flutter engine"; + homepage = "https://flutter.dev"; + maintainers = with maintainers; [ RossComputerGuy ]; + license = licenses.bsd3; + platforms = [ + "x86_64-linux" + "aarch64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; + }; +}) diff --git a/pkgs/development/compilers/flutter/engine/pkg-config.py b/pkgs/development/compilers/flutter/engine/pkg-config.py new file mode 100644 index 0000000000000..1df08211e570d --- /dev/null +++ b/pkgs/development/compilers/flutter/engine/pkg-config.py @@ -0,0 +1,247 @@ +#!/usr/bin/env python3 +# +# Copyright (c) 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + + +import json +import os +import subprocess +import sys +import re +from optparse import OptionParser + +# This script runs pkg-config, optionally filtering out some results, and +# returns the result. +# +# The result will be [ <includes>, <cflags>, <libs>, <lib_dirs>, <ldflags> ] +# where each member is itself a list of strings. +# +# You can filter out matches using "-v <regexp>" where all results from +# pkgconfig matching the given regular expression will be ignored. You can +# specify more than one regular expression my specifying "-v" more than once. +# +# You can specify a sysroot using "-s <sysroot>" where sysroot is the absolute +# system path to the sysroot used for compiling. This script will attempt to +# generate correct paths for the sysroot. +# +# When using a sysroot, you must also specify the architecture via +# "-a <arch>" where arch is either "x86" or "x64". +# +# CrOS systemroots place pkgconfig files at <systemroot>/usr/share/pkgconfig +# and one of <systemroot>/usr/lib/pkgconfig or <systemroot>/usr/lib64/pkgconfig +# depending on whether the systemroot is for a 32 or 64 bit architecture. They +# specify the 'lib' or 'lib64' of the pkgconfig path by defining the +# 'system_libdir' variable in the args.gn file. pkg_config.gni communicates this +# variable to this script with the "--system_libdir <system_libdir>" flag. If no +# flag is provided, then pkgconfig files are assumed to come from +# <systemroot>/usr/lib/pkgconfig. +# +# Additionally, you can specify the option --atleast-version. This will skip +# the normal outputting of a dictionary and instead print true or false, +# depending on the return value of pkg-config for the given package. + + +def SetConfigPath(options): + """Set the PKG_CONFIG_LIBDIR environment variable. + + This takes into account any sysroot and architecture specification from the + options on the given command line. + """ + + sysroot = options.sysroot + assert sysroot + + # Compute the library path name based on the architecture. + arch = options.arch + if sysroot and not arch: + print("You must specify an architecture via -a if using a sysroot.") + sys.exit(1) + + libdir = sysroot + '/' + options.system_libdir + '/pkgconfig' + libdir += ':' + sysroot + '/share/pkgconfig' + os.environ['PKG_CONFIG_LIBDIR'] = libdir + return libdir + + +def GetPkgConfigPrefixToStrip(options, args): + """Returns the prefix from pkg-config where packages are installed. + + This returned prefix is the one that should be stripped from the beginning of + directory names to take into account sysroots. + """ + # Some sysroots, like the Chromium OS ones, may generate paths that are not + # relative to the sysroot. For example, + # /path/to/chroot/build/x86-generic/usr/lib/pkgconfig/pkg.pc may have all + # paths relative to /path/to/chroot (i.e. prefix=/build/x86-generic/usr) + # instead of relative to /path/to/chroot/build/x86-generic (i.e prefix=/usr). + # To support this correctly, it's necessary to extract the prefix to strip + # from pkg-config's |prefix| variable. + prefix = subprocess.check_output([options.pkg_config, + "--variable=prefix"] + args, env=os.environ).decode('utf-8') + return prefix + + +def MatchesAnyRegexp(flag, list_of_regexps): + """Returns true if the first argument matches any regular expression in the + given list.""" + for regexp in list_of_regexps: + if regexp.search(flag) != None: + return True + return False + + +def RewritePath(path, strip_prefix, sysroot): + """Rewrites a path by stripping the prefix and prepending the sysroot.""" + if os.path.isabs(path) and not path.startswith(sysroot): + if path.startswith(strip_prefix): + path = path[len(strip_prefix):] + path = path.lstrip('/') + return os.path.join(sysroot, path) + else: + return path + + +def main(): + # If this is run on non-Linux platforms, just return nothing and indicate + # success. This allows us to "kind of emulate" a Linux build from other + # platforms. + if "linux" not in sys.platform: + print("[[],[],[],[],[]]") + return 0 + + parser = OptionParser() + parser.add_option('-d', '--debug', action='store_true') + parser.add_option('-p', action='store', dest='pkg_config', type='string', + default='pkg-config') + parser.add_option('-v', action='append', dest='strip_out', type='string') + parser.add_option('-s', action='store', dest='sysroot', type='string') + parser.add_option('-a', action='store', dest='arch', type='string') + parser.add_option('--system_libdir', action='store', dest='system_libdir', + type='string', default='lib') + parser.add_option('--atleast-version', action='store', + dest='atleast_version', type='string') + parser.add_option('--libdir', action='store_true', dest='libdir') + parser.add_option('--dridriverdir', action='store_true', dest='dridriverdir') + parser.add_option('--version-as-components', action='store_true', + dest='version_as_components') + (options, args) = parser.parse_args() + + # Make a list of regular expressions to strip out. + strip_out = [] + if options.strip_out != None: + for regexp in options.strip_out: + strip_out.append(re.compile(regexp)) + + if options.sysroot: + libdir = SetConfigPath(options) + if options.debug: + sys.stderr.write('PKG_CONFIG_LIBDIR=%s\n' % libdir) + prefix = GetPkgConfigPrefixToStrip(options, args) + else: + prefix = '' + + if options.atleast_version: + # When asking for the return value, just run pkg-config and print the return + # value, no need to do other work. + if not subprocess.call([options.pkg_config, + "--atleast-version=" + options.atleast_version] + + args): + print("true") + else: + print("false") + return 0 + + if options.version_as_components: + cmd = [options.pkg_config, "--modversion"] + args + try: + version_string = subprocess.check_output(cmd).decode('utf-8') + except: + sys.stderr.write('Error from pkg-config.\n') + return 1 + print(json.dumps(list(map(int, version_string.strip().split("."))))) + return 0 + + + if options.libdir: + cmd = [options.pkg_config, "--variable=libdir"] + args + if options.debug: + sys.stderr.write('Running: %s\n' % cmd) + try: + libdir = subprocess.check_output(cmd).decode('utf-8') + except: + print("Error from pkg-config.") + return 1 + sys.stdout.write(libdir.strip()) + return 0 + + if options.dridriverdir: + cmd = [options.pkg_config, "--variable=dridriverdir"] + args + if options.debug: + sys.stderr.write('Running: %s\n' % cmd) + try: + dridriverdir = subprocess.check_output(cmd).decode('utf-8') + except: + print("Error from pkg-config.") + return 1 + sys.stdout.write(dridriverdir.strip()) + return + + cmd = [options.pkg_config, "--cflags", "--libs"] + args + if options.debug: + sys.stderr.write('Running: %s\n' % ' '.join(cmd)) + + try: + flag_string = subprocess.check_output(cmd).decode('utf-8') + except: + sys.stderr.write('Could not run pkg-config.\n') + return 1 + + # For now just split on spaces to get the args out. This will break if + # pkgconfig returns quoted things with spaces in them, but that doesn't seem + # to happen in practice. + all_flags = flag_string.strip().split(' ') + + + sysroot = options.sysroot + if not sysroot: + sysroot = '' + + includes = [] + cflags = [] + libs = [] + lib_dirs = [] + + for flag in all_flags[:]: + if len(flag) == 0 or MatchesAnyRegexp(flag, strip_out): + continue; + + if flag[:2] == '-l': + libs.append(RewritePath(flag[2:], prefix, sysroot)) + elif flag[:2] == '-L': + lib_dirs.append(RewritePath(flag[2:], prefix, sysroot)) + elif flag[:2] == '-I': + includes.append(RewritePath(flag[2:], prefix, sysroot)) + elif flag[:3] == '-Wl': + # Don't allow libraries to control ld flags. These should be specified + # only in build files. + pass + elif flag == '-pthread': + # Many libs specify "-pthread" which we don't need since we always include + # this anyway. Removing it here prevents a bunch of duplicate inclusions + # on the command line. + pass + else: + cflags.append(flag) + + # Output a GN array, the first one is the cflags, the second are the libs. The + # JSON formatter prints GN compatible lists when everything is a list of + # strings. + print(json.dumps([includes, cflags, libs, lib_dirs])) + return 0 + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/pkgs/development/compilers/flutter/engine/source.nix b/pkgs/development/compilers/flutter/engine/source.nix new file mode 100644 index 0000000000000..413b1874a9812 --- /dev/null +++ b/pkgs/development/compilers/flutter/engine/source.nix @@ -0,0 +1,88 @@ +{ + callPackage, + hostPlatform, + targetPlatform, + fetchgit, + tools ? callPackage ./tools.nix { inherit hostPlatform; }, + curl, + pkg-config, + git, + python3, + runCommand, + writeText, + cacert, + version, + hashes, + url, +}: +let + constants = callPackage ./constants.nix { inherit targetPlatform; }; + boolOption = value: if value then "True" else "False"; +in +runCommand "flutter-engine-source-${version}-${targetPlatform.system}" + { + pname = "flutter-engine-source"; + inherit version; + + inherit (tools) depot_tools; + + nativeBuildInputs = [ + curl + pkg-config + git + tools.cipd + (python3.withPackages ( + ps: with ps; [ + httplib2 + six + ] + )) + ]; + + gclient = writeText "flutter-engine-${version}.gclient" '' + solutions = [{ + "managed": False, + "name": "src/flutter", + "url": "${url}", + "custom_vars": { + "download_fuchsia_deps": False, + "download_android_deps": False, + "download_linux_deps": ${boolOption targetPlatform.isLinux}, + "setup_githooks": False, + "download_esbuild": False, + "download_dart_sdk": False, + }, + }] + ''; + + NIX_SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt"; + GIT_SSL_CAINFO = "${cacert}/etc/ssl/certs/ca-bundle.crt"; + SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt"; + DEPOT_TOOLS_UPDATE = "0"; + DEPOT_TOOLS_COLLECT_METRICS = "0"; + PYTHONDONTWRITEBYTECODE = "1"; + + outputHashAlgo = "sha256"; + outputHashMode = "recursive"; + outputHash = hashes.${targetPlatform.system} or (throw "Hash not set for ${targetPlatform.system}"); + } + '' + source ${../../../../build-support/fetchgit/deterministic-git} + export -f clean_git + export -f make_deterministic_repo + + mkdir -p $out + cp $gclient $out/.gclient + cd $out + + export PATH=$PATH:$depot_tools + python3 $depot_tools/gclient.py sync --no-history --shallow --nohooks 2>&1 >/dev/null + find $out -name '.git' -exec dirname {} \; | xargs bash -c 'make_deterministic_repo $@' _ + find $out -path '*/.git/*' ! -name 'HEAD' -prune -exec rm -rf {} \; + find $out -name '.git' -exec mkdir {}/logs \; + find $out -name '.git' -exec cp {}/HEAD {}/logs/HEAD \; + + rm -rf $out/src/flutter/{buildtools,prebuilts,third_party/swiftshader} + + rm -rf $out/.cipd $out/.gclient $out/.gclient_entries $out/.gclient_previous_custom_vars $out/.gclient_previous_sync_commits + '' diff --git a/pkgs/development/compilers/flutter/engine/tools.nix b/pkgs/development/compilers/flutter/engine/tools.nix new file mode 100644 index 0000000000000..a35398058181b --- /dev/null +++ b/pkgs/development/compilers/flutter/engine/tools.nix @@ -0,0 +1,62 @@ +{ + callPackage, + fetchgit, + fetchurl, + writeText, + runCommand, + hostPlatform, + darwin, + writeShellScriptBin, + depot_toolsCommit ? "7d95eb2eb054447592585c73a8ff7adad97ecba1", + depot_toolsHash ? "sha256-F7KDuVg11qLKkohIjuXpNdxpnSsT6Z3hE9+wFIG2sSk=", + cipdCommit ? "89ada246fcbf10f330011e4991d017332af2365b", + cipdHashes ? { + "linux-386" = "7f264198598af2ef9d8878349d33c1940f1f3739e46d986962c352ec4cce2690"; + "linux-amd64" = "2ada6b46ad1cd1350522c5c05899d273f5c894c7665e30104e7f57084a5aeeb9"; + "linux-arm64" = "96eca7e49f6732c50122b94b793c3a5e62ed77bce1686787a8334906791b4168"; + "linux-armv6l" = "06394601130652c5e1b055a7e4605c21fc7c6643af0b3b3cac8d2691491afa81"; + "linux-mips64" = "f3eda6542b381b7aa8f582698498b0e197972c894590ec35f18faa467c868f5c"; + "linux-mips64le" = "74229ada8e2afd9c8e7c58991126869b2880547780d4a197a27c1dfa96851622"; + "linux-mipsle" = "2f3c18ec0ad48cd44a9ff39bb60e9afded83ca43fb9c7a5ea9949f6fdd4e1394"; + "linux-ppc64" = "79425c0795fb8ba12b39a8856bf7ccb853e85def4317aa6413222f307d4c2dbd"; + "linux-ppc64le" = "f9b3d85dde70f1b78cd7a41d2477834c15ac713a59317490a4cdac9f8f092325"; + "linux-riscv64" = "bd695164563a66e8d3799e8835f90a398fbae9a4eec24e876c92d5f213943482"; + "linux-s390x" = "6f501af80541e733fda23b4208a21ea05919c95d236036a2121e6b6334a2792c"; + "macos-amd64" = "41d05580c0014912d6c32619c720646fd136e4557c9c7d7571ecc8c0462733a1"; + "macos-arm64" = "dc672bd16d9faf277dd562f1dc00644b10c03c5d838d3cc3d3ea29925d76d931"; + "windows-386" = "fa6ed0022a38ffc51ff8a927e3947fe7e59a64b2019dcddca9d3afacf7630444"; + "windows-amd64" = "b5423e4b4429837f7fe4d571ce99c068aa0ccb37ddbebc1978a423fd2b0086df"; + }, +}: +let + constants = callPackage ./constants.nix { targetPlatform = hostPlatform; }; +in +{ + depot_tools = fetchgit { + url = "https://chromium.googlesource.com/chromium/tools/depot_tools.git"; + rev = depot_toolsCommit; + hash = depot_toolsHash; + }; + + cipd = + runCommand "cipd-${cipdCommit}" + { + unwrapped = fetchurl { + name = "cipd-${cipdCommit}-unwrapped"; + url = "https://chrome-infra-packages.appspot.com/client?platform=${constants.platform}&version=git_revision:${cipdCommit}"; + sha256 = cipdHashes.${constants.platform}; + }; + } + '' + mkdir -p $out/bin + install -m755 $unwrapped $out/bin/cipd + ''; + + vpython = + pythonPkg: + runCommand "vpython3" { } "mkdir -p $out/bin && ln -s ${pythonPkg}/bin/python $out/bin/vpython3"; + + xcode-select = writeShellScriptBin "xcode-select" '' + echo ${darwin.xcode}/Contents/Developer + ''; +} diff --git a/pkgs/development/compilers/flutter/flutter-tools.nix b/pkgs/development/compilers/flutter/flutter-tools.nix index cf35ed8cbc455..306765cd0a42a 100644 --- a/pkgs/development/compilers/flutter/flutter-tools.nix +++ b/pkgs/development/compilers/flutter/flutter-tools.nix @@ -2,6 +2,7 @@ , stdenv , systemPlatform , buildDartApplication +, runCommand , git , which , dart @@ -54,5 +55,22 @@ buildDartApplication.override { inherit dart; } rec { popd ''; + sdkSourceBuilders = { + # https://github.com/dart-lang/pub/blob/e1fbda73d1ac597474b82882ee0bf6ecea5df108/lib/src/sdk/dart.dart#L80 + "dart" = name: runCommand "dart-sdk-${name}" { passthru.packageRoot = "."; } '' + for path in '${dart}/pkg/${name}'; do + if [ -d "$path" ]; then + ln -s "$path" "$out" + break + fi + done + + if [ ! -e "$out" ]; then + echo 1>&2 'The Dart SDK does not contain the requested package: ${name}!' + exit 1 + fi + ''; + }; + inherit pubspecLock; } diff --git a/pkgs/development/compilers/flutter/flutter.nix b/pkgs/development/compilers/flutter/flutter.nix index bce45f200c2d8..870c63afa8069 100644 --- a/pkgs/development/compilers/flutter/flutter.nix +++ b/pkgs/development/compilers/flutter/flutter.nix @@ -1,6 +1,14 @@ -{ version +{ useNixpkgsEngine ? false +, version , engineVersion +, engineHashes ? {} +, engineUrl ? "https://github.com/flutter/engine.git@${engineVersion}" +, enginePatches ? [] +, engineRuntimeModes ? [ "release" "debug" ] +, engineSwiftShaderHash +, engineSwiftShaderRev , patches +, channel , dart , src , pubspecLock @@ -13,16 +21,35 @@ , git , which , jq -, flutterTools ? callPackage ./flutter-tools.nix { +, flutterTools ? null +}@args: + +let + engine = if args.useNixpkgsEngine or false then + callPackage ./engine/default.nix { + inherit (args) dart; + dartSdkVersion = args.dart.version; + flutterVersion = version; + swiftshaderRev = engineSwiftShaderRev; + swiftshaderHash = engineSwiftShaderHash; + version = engineVersion; + hashes = engineHashes; + url = engineUrl; + patches = enginePatches; + runtimeModes = engineRuntimeModes; + } else null; + + dart = if args.useNixpkgsEngine or false then + engine.dart else args.dart; + + flutterTools = args.flutterTools or (callPackage ./flutter-tools.nix { inherit dart version; flutterSrc = src; inherit patches; inherit pubspecLock; systemPlatform = stdenv.hostPlatform.system; - } -}: + }); -let unwrapped = stdenv.mkDerivation { name = "flutter-${version}-unwrapped"; @@ -74,7 +101,7 @@ let "devToolsVersion": "$(cat "${dart}/bin/resources/devtools/version.json" | jq -r .version)", "flutterVersion": "${version}", "frameworkVersion": "${version}", - "channel": "stable", + "channel": "${channel}", "repositoryUrl": "https://github.com/flutter/flutter.git", "frameworkRevision": "nixpkgs000000000000000000000000000000000", "frameworkCommitDate": "1970-01-01 00:00:00", @@ -124,12 +151,15 @@ let ''; passthru = { - inherit dart engineVersion artifactHashes; + # TODO: rely on engine.version instead of engineVersion + inherit dart engineVersion artifactHashes channel; tools = flutterTools; # The derivation containing the original Flutter SDK files. # When other derivations wrap this one, any unmodified files # found here should be included as-is, for tooling compatibility. sdk = unwrapped; + } // lib.optionalAttrs (engine != null && engine.meta.available) { + inherit engine; }; meta = with lib; { @@ -141,7 +171,9 @@ let homepage = "https://flutter.dev"; license = licenses.bsd3; platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; - maintainers = with maintainers; [ babariviere ericdallo FlafyDev hacker1024 ]; + maintainers = teams.flutter.members ++ (with maintainers; [ + ericdallo + ]); }; }; in diff --git a/pkgs/development/compilers/flutter/update/get-dart-hashes.nix.in b/pkgs/development/compilers/flutter/update/get-dart-hashes.nix.in index f900c863195ab..941a9769a9cb2 100644 --- a/pkgs/development/compilers/flutter/update/get-dart-hashes.nix.in +++ b/pkgs/development/compilers/flutter/update/get-dart-hashes.nix.in @@ -1,26 +1,27 @@ let dartVersion = "@dart_version@"; platform = "@platform@"; + channel = "@channel@"; in { x86_64-linux = { fetchzip }: fetchzip { - url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${dartVersion}/sdk/dartsdk-linux-x64-release.zip"; + url = "https://storage.googleapis.com/dart-archive/channels/${channel}/release/${dartVersion}/sdk/dartsdk-linux-x64-release.zip"; sha256 = "0000000000000000000000000000000000000000000000000000"; }; aarch64-linux = { fetchzip }: fetchzip { - url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${dartVersion}/sdk/dartsdk-linux-arm64-release.zip"; + url = "https://storage.googleapis.com/dart-archive/channels/${channel}/release/${dartVersion}/sdk/dartsdk-linux-arm64-release.zip"; sha256 = "0000000000000000000000000000000000000000000000000000"; }; x86_64-darwin = { fetchzip }: fetchzip { - url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${dartVersion}/sdk/dartsdk-macos-x64-release.zip"; + url = "https://storage.googleapis.com/dart-archive/channels/${channel}/release/${dartVersion}/sdk/dartsdk-macos-x64-release.zip"; sha256 = "0000000000000000000000000000000000000000000000000000"; }; aarch64-darwin = { fetchzip }: fetchzip { - url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${dartVersion}/sdk/dartsdk-macos-arm64-release.zip"; + url = "https://storage.googleapis.com/dart-archive/channels/${channel}/release/${dartVersion}/sdk/dartsdk-macos-arm64-release.zip"; sha256 = "0000000000000000000000000000000000000000000000000000"; }; }.${platform} diff --git a/pkgs/development/compilers/flutter/update/get-engine-hashes.nix.in b/pkgs/development/compilers/flutter/update/get-engine-hashes.nix.in new file mode 100644 index 0000000000000..f61b9b14fd07a --- /dev/null +++ b/pkgs/development/compilers/flutter/update/get-engine-hashes.nix.in @@ -0,0 +1,23 @@ +{ callPackage, symlinkJoin, lib }: +let + nixpkgsRoot = "@nixpkgs_root@"; + engineVersion = "@engine_version@"; + + systemPlatforms = [ + "x86_64-linux" + "aarch64-linux" + ]; + + derivations = builtins.map + (systemPlatform: callPackage "${nixpkgsRoot}/pkgs/development/compilers/flutter/engine/source.nix" { + targetPlatform = lib.systems.elaborate systemPlatform; + version = engineVersion; + url = "https://github.com/flutter/engine.git@${engineVersion}"; + hashes."${systemPlatform}" = lib.fakeSha256; + }) + systemPlatforms; +in +symlinkJoin { + name = "evaluate-derivations"; + paths = derivations; +} diff --git a/pkgs/development/compilers/flutter/update/get-engine-swiftshader.nix.in b/pkgs/development/compilers/flutter/update/get-engine-swiftshader.nix.in new file mode 100644 index 0000000000000..2dffbe950b86f --- /dev/null +++ b/pkgs/development/compilers/flutter/update/get-engine-swiftshader.nix.in @@ -0,0 +1,5 @@ +{ fetchgit }: +fetchgit { + url = "https://swiftshader.googlesource.com/SwiftShader.git"; + rev = "@engine_swiftshader_rev@"; +} diff --git a/pkgs/development/compilers/flutter/update/update.py b/pkgs/development/compilers/flutter/update/update.py index 618fae5468e5b..cc6d114e694a7 100755 --- a/pkgs/development/compilers/flutter/update/update.py +++ b/pkgs/development/compilers/flutter/update/update.py @@ -14,6 +14,7 @@ import argparse import yaml import json +FAKE_HASH = 'sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=' NIXPKGS_ROOT = subprocess.Popen(['git', 'rev-parse', @@ -85,6 +86,32 @@ def nix_build_to_fail(code): return stderr +def get_engine_hashes(engine_version): + code = load_code("get-engine-hashes.nix", + nixpkgs_root=NIXPKGS_ROOT, + engine_version=engine_version) + + stderr = nix_build_to_fail(code) + + pattern = re.compile( + r"/nix/store/.*-flutter-engine-source-(.+?)-(.+?).drv':\n\s+specified: .*\n\s+got:\s+(.+?)\n") + matches = pattern.findall(stderr) + result_dict = {} + + for match in matches: + _, system, got = match + result_dict[system] = got + + def sort_dict_recursive(d): + return { + k: sort_dict_recursive(v) if isinstance( + v, dict) else v for k, v in sorted( + d.items())} + result_dict = sort_dict_recursive(result_dict) + + return result_dict + + def get_artifact_hashes(flutter_compact_version): code = load_code("get-artifact-hashes.nix", nixpkgs_root=NIXPKGS_ROOT, @@ -111,7 +138,7 @@ def get_artifact_hashes(flutter_compact_version): return result_dict -def get_dart_hashes(dart_version): +def get_dart_hashes(dart_version, channel): platforms = [ "x86_64-linux", "aarch64-linux", @@ -122,6 +149,7 @@ def get_dart_hashes(dart_version): code = load_code( "get-dart-hashes.nix", dart_version=dart_version, + channel=channel, platform=platform) stderr = nix_build_to_fail(code) @@ -173,11 +201,31 @@ def get_pubspec_lock(flutter_compact_version, flutter_src): return yaml.safe_load(pubspec_lock_yaml) +def get_engine_swiftshader_rev(engine_version): + with urllib.request.urlopen(f"https://github.com/flutter/engine/raw/{engine_version}/DEPS") as f: + deps = f.read().decode('utf-8') + pattern = re.compile(r"Var\('swiftshader_git'\) \+ '\/SwiftShader\.git' \+ '@' \+ \'([0-9a-fA-F]{40})\'\,") + rev = pattern.findall(deps)[0] + return rev + +def get_engine_swiftshader_hash(engine_swiftshader_rev): + code = load_code( + "get-engine-swiftshader.nix", + engine_swiftshader_rev=engine_swiftshader_rev, + hash="") + + stderr = nix_build_to_fail(code) + pattern = re.compile(r"got:\s+(.+?)\n") + return pattern.findall(stderr)[0] def write_data( nixpkgs_flutter_version_directory, flutter_version, + channel, engine_hash, + engine_hashes, + engine_swiftshader_hash, + engine_swiftshader_rev, dart_version, dart_hash, flutter_hash, @@ -187,6 +235,10 @@ def write_data( f.write(json.dumps({ "version": flutter_version, "engineVersion": engine_hash, + "engineSwiftShaderHash": engine_swiftshader_hash, + "engineSwiftShaderRev": engine_swiftshader_rev, + "channel": channel, + "engineHashes": engine_hashes, "dartVersion": dart_version, "dartHash": dart_hash, "flutterHash": flutter_hash, @@ -202,7 +254,9 @@ def update_all_packages(): int(x.split('_')[0]), int(x.split('_')[1])), reverse=True) new_content = [ - "flutterPackages = recurseIntoAttrs (callPackage ../development/compilers/flutter { });", + "flutterPackages-bin = recurseIntoAttrs (callPackage ../development/compilers/flutter { });", + "flutterPackages-source = recurseIntoAttrs (callPackage ../development/compilers/flutter { useNixpkgsEngine = true; });", + "flutterPackages = flutterPackages-bin;" "flutter = flutterPackages.stable;", ] + [f"flutter{version.replace('_', '')} = flutterPackages.v{version};" for version in versions] @@ -212,7 +266,7 @@ def update_all_packages(): start = -1 end = -1 for i, line in enumerate(lines): - if "flutterPackages = recurseIntoAttrs (callPackage ../development/compilers/flutter { });" in line: + if "flutterPackages-bin = recurseIntoAttrs (callPackage ../development/compilers/flutter { });" in line: start = i if start != -1 and len(line.strip()) == 0: end = i @@ -229,18 +283,21 @@ def update_all_packages(): # Finds Flutter version, Dart version, and Engine hash. # If the Flutter version is given, it uses that. Otherwise finds the # latest stable Flutter version. -def find_versions(flutter_version=None): +def find_versions(flutter_version=None, channel=None): engine_hash = None dart_version = None releases = json.load(urllib.request.urlopen( "https://storage.googleapis.com/flutter_infra_release/releases/releases_linux.json")) + if not channel: + channel = 'stable' + if not flutter_version: - stable_hash = releases['current_release']['stable'] + hash = releases['current_release'][channel] release = next( filter( - lambda release: release['hash'] == stable_hash, + lambda release: release['hash'] == hash, releases['releases'])) flutter_version = release['version'] @@ -265,21 +322,25 @@ def find_versions(flutter_version=None): filter( lambda release: release['version'] == flutter_version, releases['releases']))['dart_sdk_version'] + + if " " in dart_version: + dart_version = dart_version.split(' ')[2][:-1] except StopIteration: exit( f"Couldn't find Dart version for Flutter version: {flutter_version}") - return (flutter_version, engine_hash, dart_version) + return (flutter_version, engine_hash, dart_version, channel) def main(): parser = argparse.ArgumentParser(description='Update Flutter in Nixpkgs') parser.add_argument('--version', type=str, help='Specify Flutter version') + parser.add_argument('--channel', type=str, help='Specify Flutter release channel') parser.add_argument('--artifact-hashes', action='store_true', help='Whether to get artifact hashes') args = parser.parse_args() - (flutter_version, engine_hash, dart_version) = find_versions(args.version) + (flutter_version, engine_hash, dart_version, channel) = find_versions(args.version, args.channel) flutter_compact_version = '_'.join(flutter_version.split('.')[:2]) @@ -291,11 +352,11 @@ def main(): "\n") return - print(f"Flutter version: {flutter_version} ({flutter_compact_version})") + print(f"Flutter version: {flutter_version} ({flutter_compact_version}) on ({channel})") print(f"Engine hash: {engine_hash}") print(f"Dart version: {dart_version}") - dart_hash = get_dart_hashes(dart_version) + dart_hash = get_dart_hashes(dart_version, channel) (flutter_hash, flutter_src) = get_flutter_hash_and_src(flutter_version) nixpkgs_flutter_version_directory = f"{NIXPKGS_ROOT}/pkgs/development/compilers/flutter/versions/{flutter_compact_version}" @@ -309,6 +370,7 @@ def main(): common_data_args = { "nixpkgs_flutter_version_directory": nixpkgs_flutter_version_directory, "flutter_version": flutter_version, + "channel": channel, "dart_version": dart_version, "engine_hash": engine_hash, "flutter_hash": flutter_hash, @@ -318,6 +380,9 @@ def main(): write_data( pubspec_lock={}, artifact_hashes={}, + engine_hashes={}, + engine_swiftshader_hash=FAKE_HASH, + engine_swiftshader_rev='0', **common_data_args) pubspec_lock = get_pubspec_lock(flutter_compact_version, flutter_src) @@ -325,6 +390,9 @@ def main(): write_data( pubspec_lock=pubspec_lock, artifact_hashes={}, + engine_hashes={}, + engine_swiftshader_hash=FAKE_HASH, + engine_swiftshader_rev='0', **common_data_args) artifact_hashes = get_artifact_hashes(flutter_compact_version) @@ -332,6 +400,30 @@ def main(): write_data( pubspec_lock=pubspec_lock, artifact_hashes=artifact_hashes, + engine_hashes={}, + engine_swiftshader_hash=FAKE_HASH, + engine_swiftshader_rev='0', + **common_data_args) + + engine_hashes = get_engine_hashes(engine_hash) + + write_data( + pubspec_lock=pubspec_lock, + artifact_hashes=artifact_hashes, + engine_hashes=engine_hashes, + engine_swiftshader_hash=FAKE_HASH, + engine_swiftshader_rev='0', + **common_data_args) + + engine_swiftshader_rev = get_engine_swiftshader_rev(engine_hash) + engine_swiftshader_hash = get_engine_swiftshader_hash(engine_swiftshader_rev) + + write_data( + pubspec_lock=pubspec_lock, + artifact_hashes=artifact_hashes, + engine_hashes=engine_hashes, + engine_swiftshader_hash=engine_swiftshader_hash, + engine_swiftshader_rev=engine_swiftshader_rev, **common_data_args) diff --git a/pkgs/development/compilers/flutter/versions/3_13/data.json b/pkgs/development/compilers/flutter/versions/3_13/data.json index 7d8f285f0b211..9bd8b818bf469 100644 --- a/pkgs/development/compilers/flutter/versions/3_13/data.json +++ b/pkgs/development/compilers/flutter/versions/3_13/data.json @@ -1,6 +1,13 @@ { "version": "3.13.8", "engineVersion": "767d8c75e898091b925519803830fc2721658d07", + "engineSwiftShaderHash": "sha256-N6f5aeDroqEwZlUBZi7nhDW8leE/7DqmOtRYOY4wzf4=", + "engineSwiftShaderRev": "5f9ed9b16931c7155171d31f75004f73f0a3abc8", + "channel": "stable", + "engineHashes": { + "aarch64-linux": "sha256-+MIGPmKHkcn3TlFYu6jXv8KBRqdECgtGSqAKQE33iAM=", + "x86_64-linux": "sha256-+MIGPmKHkcn3TlFYu6jXv8KBRqdECgtGSqAKQE33iAM=" + }, "dartVersion": "3.1.4", "dartHash": { "x86_64-linux": "sha256-42wrqzjRcFDWw2aEY6+/faX+QE9PA8FmRWP4M/NkgBE=", @@ -11,52 +18,52 @@ "flutterHash": "sha256-00G030FvZZTsdf9ruFs9jdIHcC5h+xpp4NlmL64qVZA=", "artifactHashes": { "android": { - "x86_64-linux": "sha256-Uc36aBq8wQo2aEvjAPOoixZElWOE/GNRm2GUfhbwT3Y=", + "aarch64-darwin": "sha256-v/6/GTj7732fEOIgSaoM00yaw2qNwOMuvbuoCvii7vQ=", "aarch64-linux": "sha256-Uc36aBq8wQo2aEvjAPOoixZElWOE/GNRm2GUfhbwT3Y=", "x86_64-darwin": "sha256-v/6/GTj7732fEOIgSaoM00yaw2qNwOMuvbuoCvii7vQ=", - "aarch64-darwin": "sha256-v/6/GTj7732fEOIgSaoM00yaw2qNwOMuvbuoCvii7vQ=" + "x86_64-linux": "sha256-Uc36aBq8wQo2aEvjAPOoixZElWOE/GNRm2GUfhbwT3Y=" }, "fuchsia": { - "x86_64-linux": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=", + "aarch64-darwin": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=", "aarch64-linux": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=", "x86_64-darwin": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=", - "aarch64-darwin": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=" + "x86_64-linux": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=" }, "ios": { - "x86_64-linux": "sha256-QwkeGnutTVsm682CqxRtEd9rKUvN7zlAJcqkvAQYwao=", + "aarch64-darwin": "sha256-QwkeGnutTVsm682CqxRtEd9rKUvN7zlAJcqkvAQYwao=", "aarch64-linux": "sha256-QwkeGnutTVsm682CqxRtEd9rKUvN7zlAJcqkvAQYwao=", "x86_64-darwin": "sha256-QwkeGnutTVsm682CqxRtEd9rKUvN7zlAJcqkvAQYwao=", - "aarch64-darwin": "sha256-QwkeGnutTVsm682CqxRtEd9rKUvN7zlAJcqkvAQYwao=" + "x86_64-linux": "sha256-QwkeGnutTVsm682CqxRtEd9rKUvN7zlAJcqkvAQYwao=" }, "linux": { - "x86_64-linux": "sha256-0gIOwux3YBdmcXgwICr8dpftj1CauaBUX8Rt5GG0WSs=", + "aarch64-darwin": "sha256-drGHsuJoOCLqrhVrXczqJRCOtpeWVlqdWW0OSMS/l5M=", "aarch64-linux": "sha256-drGHsuJoOCLqrhVrXczqJRCOtpeWVlqdWW0OSMS/l5M=", "x86_64-darwin": "sha256-0gIOwux3YBdmcXgwICr8dpftj1CauaBUX8Rt5GG0WSs=", - "aarch64-darwin": "sha256-drGHsuJoOCLqrhVrXczqJRCOtpeWVlqdWW0OSMS/l5M=" + "x86_64-linux": "sha256-0gIOwux3YBdmcXgwICr8dpftj1CauaBUX8Rt5GG0WSs=" }, "macos": { - "x86_64-linux": "sha256-9WqCJQ37mcGc5tzfqQoY5CqHWHGTizjXf9p73bdnNWc=", + "aarch64-darwin": "sha256-9WqCJQ37mcGc5tzfqQoY5CqHWHGTizjXf9p73bdnNWc=", "aarch64-linux": "sha256-9WqCJQ37mcGc5tzfqQoY5CqHWHGTizjXf9p73bdnNWc=", "x86_64-darwin": "sha256-9WqCJQ37mcGc5tzfqQoY5CqHWHGTizjXf9p73bdnNWc=", - "aarch64-darwin": "sha256-9WqCJQ37mcGc5tzfqQoY5CqHWHGTizjXf9p73bdnNWc=" + "x86_64-linux": "sha256-9WqCJQ37mcGc5tzfqQoY5CqHWHGTizjXf9p73bdnNWc=" }, "universal": { - "x86_64-linux": "sha256-wATt1UPjo/fh7RFO1vvcUAdo0dMAaaOUIuzYodsM0v0=", + "aarch64-darwin": "sha256-mSpAPKyP9v0dbkXqYkzGOnD5OEjRZigiRElXXcHZ5TE=", "aarch64-linux": "sha256-Z9bszNaIpCccG7OfvE5WFsw36dITiyCQAZ6p29+Yq68=", "x86_64-darwin": "sha256-qN5bAXRfQ78TWF3FLBIxWzUB5y5OrZVQTEilY5J/+2k=", - "aarch64-darwin": "sha256-mSpAPKyP9v0dbkXqYkzGOnD5OEjRZigiRElXXcHZ5TE=" + "x86_64-linux": "sha256-wATt1UPjo/fh7RFO1vvcUAdo0dMAaaOUIuzYodsM0v0=" }, "web": { - "x86_64-linux": "sha256-DVXJOOFxv7tKt3d0NaYMexkphEcr7+gDFV67I6iAYa0=", + "aarch64-darwin": "sha256-DVXJOOFxv7tKt3d0NaYMexkphEcr7+gDFV67I6iAYa0=", "aarch64-linux": "sha256-DVXJOOFxv7tKt3d0NaYMexkphEcr7+gDFV67I6iAYa0=", "x86_64-darwin": "sha256-DVXJOOFxv7tKt3d0NaYMexkphEcr7+gDFV67I6iAYa0=", - "aarch64-darwin": "sha256-DVXJOOFxv7tKt3d0NaYMexkphEcr7+gDFV67I6iAYa0=" + "x86_64-linux": "sha256-DVXJOOFxv7tKt3d0NaYMexkphEcr7+gDFV67I6iAYa0=" }, "windows": { - "x86_64-linux": "sha256-s8fJtwQkuZaGXr6vrPiKfpwP/NfewbETwyp9ERGqHYI=", + "aarch64-darwin": "sha256-s8fJtwQkuZaGXr6vrPiKfpwP/NfewbETwyp9ERGqHYI=", "aarch64-linux": "sha256-s8fJtwQkuZaGXr6vrPiKfpwP/NfewbETwyp9ERGqHYI=", "x86_64-darwin": "sha256-s8fJtwQkuZaGXr6vrPiKfpwP/NfewbETwyp9ERGqHYI=", - "aarch64-darwin": "sha256-s8fJtwQkuZaGXr6vrPiKfpwP/NfewbETwyp9ERGqHYI=" + "x86_64-linux": "sha256-s8fJtwQkuZaGXr6vrPiKfpwP/NfewbETwyp9ERGqHYI=" } }, "pubspecLock": { diff --git a/pkgs/development/compilers/flutter/versions/3_16/data.json b/pkgs/development/compilers/flutter/versions/3_16/data.json index afc0225d49a7f..08cbdff5bc77d 100644 --- a/pkgs/development/compilers/flutter/versions/3_16/data.json +++ b/pkgs/development/compilers/flutter/versions/3_16/data.json @@ -1,6 +1,13 @@ { "version": "3.16.7", "engineVersion": "4a585b79294e830fa89c24924d58a27cc8fbf406", + "engineSwiftShaderHash": "sha256-N6f5aeDroqEwZlUBZi7nhDW8leE/7DqmOtRYOY4wzf4=", + "engineSwiftShaderRev": "5f9ed9b16931c7155171d31f75004f73f0a3abc8", + "channel": "stable", + "engineHashes": { + "aarch64-linux": "sha256-irrfyKvTHqaBgcKg3jJzEDs1B4Q91u/e6Ui01MDI+oU=", + "x86_64-linux": "sha256-irrfyKvTHqaBgcKg3jJzEDs1B4Q91u/e6Ui01MDI+oU=" + }, "dartVersion": "3.2.4", "dartHash": { "x86_64-linux": "sha256-qslf+wgmNz9r+e45o3Bg9/vDj75GkM9gQE2tb5rbIvw=", @@ -11,51 +18,51 @@ "flutterHash": "sha256-j+tc8hMgZMBhju89n4e9tKRrq+CFBGOyeE0y+Z4FtHE=", "artifactHashes": { "android": { + "aarch64-darwin": "sha256-0FBI0CGMcxyttkzrdyjJlkGAjFd/yMuAQS3pDrNXZZw=", "aarch64-linux": "sha256-j8jstEE1RsTVHJbq6f6We0An+CyJz9JH/YClyNA4mwg=", "x86_64-darwin": "sha256-0FBI0CGMcxyttkzrdyjJlkGAjFd/yMuAQS3pDrNXZZw=", - "aarch64-darwin": "sha256-0FBI0CGMcxyttkzrdyjJlkGAjFd/yMuAQS3pDrNXZZw=", "x86_64-linux": "sha256-j8jstEE1RsTVHJbq6f6We0An+CyJz9JH/YClyNA4mwg=" }, "fuchsia": { + "aarch64-darwin": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=", "aarch64-linux": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=", "x86_64-darwin": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=", - "aarch64-darwin": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=", "x86_64-linux": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=" }, "ios": { + "aarch64-darwin": "sha256-V3VXRX8hn45J+NhzKli+NAc3TGiSoeVQRlJte8DDbZw=", "aarch64-linux": "sha256-V3VXRX8hn45J+NhzKli+NAc3TGiSoeVQRlJte8DDbZw=", "x86_64-darwin": "sha256-V3VXRX8hn45J+NhzKli+NAc3TGiSoeVQRlJte8DDbZw=", - "aarch64-darwin": "sha256-V3VXRX8hn45J+NhzKli+NAc3TGiSoeVQRlJte8DDbZw=", "x86_64-linux": "sha256-V3VXRX8hn45J+NhzKli+NAc3TGiSoeVQRlJte8DDbZw=" }, "linux": { + "aarch64-darwin": "sha256-LWpou3L7bAWGn8i4nDT/BZez2Uhf/LbqC2C4Z98hCHQ=", "aarch64-linux": "sha256-LWpou3L7bAWGn8i4nDT/BZez2Uhf/LbqC2C4Z98hCHQ=", "x86_64-darwin": "sha256-BzjmO4F8B9GagYPbdvoT55r+YgZcP4BUaKgJPGZDXOU=", - "aarch64-darwin": "sha256-LWpou3L7bAWGn8i4nDT/BZez2Uhf/LbqC2C4Z98hCHQ=", "x86_64-linux": "sha256-BzjmO4F8B9GagYPbdvoT55r+YgZcP4BUaKgJPGZDXOU=" }, "macos": { + "aarch64-darwin": "sha256-BMFqhhy1O1hK33Pj2cxnCAzK9wwHkwT4gNbJ1GaLrnk=", "aarch64-linux": "sha256-BMFqhhy1O1hK33Pj2cxnCAzK9wwHkwT4gNbJ1GaLrnk=", "x86_64-darwin": "sha256-BMFqhhy1O1hK33Pj2cxnCAzK9wwHkwT4gNbJ1GaLrnk=", - "aarch64-darwin": "sha256-BMFqhhy1O1hK33Pj2cxnCAzK9wwHkwT4gNbJ1GaLrnk=", "x86_64-linux": "sha256-BMFqhhy1O1hK33Pj2cxnCAzK9wwHkwT4gNbJ1GaLrnk=" }, "universal": { + "aarch64-darwin": "sha256-Emus5J3mqPv47PD6xqNUD1KpXhVkX4JpURWuYG6KC14=", "aarch64-linux": "sha256-uB2YZRjioP/koMbPvaBHsezjPO0w5a+BpxZaDuiINIY=", "x86_64-darwin": "sha256-Qwf12gMqrW5nDC9Is08oxWTbKMptRQRAIb58JETq3xA=", - "aarch64-darwin": "sha256-Emus5J3mqPv47PD6xqNUD1KpXhVkX4JpURWuYG6KC14=", "x86_64-linux": "sha256-quSFKx7TZRJpK+4YDt5f9jwr7rZsSsaXMxhJ8vIcczQ=" }, "web": { + "aarch64-darwin": "sha256-rQphVm+T4k5B4OYYw0sJwYBOsNvUOC9fu8IuvXN7hVw=", "aarch64-linux": "sha256-rQphVm+T4k5B4OYYw0sJwYBOsNvUOC9fu8IuvXN7hVw=", "x86_64-darwin": "sha256-rQphVm+T4k5B4OYYw0sJwYBOsNvUOC9fu8IuvXN7hVw=", - "aarch64-darwin": "sha256-rQphVm+T4k5B4OYYw0sJwYBOsNvUOC9fu8IuvXN7hVw=", "x86_64-linux": "sha256-rQphVm+T4k5B4OYYw0sJwYBOsNvUOC9fu8IuvXN7hVw=" }, "windows": { + "aarch64-darwin": "sha256-HL3QLwzze9aO+T/2/xbHqhKV1/ba++MuRnk206hfJdU=", "aarch64-linux": "sha256-HL3QLwzze9aO+T/2/xbHqhKV1/ba++MuRnk206hfJdU=", "x86_64-darwin": "sha256-HL3QLwzze9aO+T/2/xbHqhKV1/ba++MuRnk206hfJdU=", - "aarch64-darwin": "sha256-HL3QLwzze9aO+T/2/xbHqhKV1/ba++MuRnk206hfJdU=", "x86_64-linux": "sha256-HL3QLwzze9aO+T/2/xbHqhKV1/ba++MuRnk206hfJdU=" } }, diff --git a/pkgs/development/compilers/flutter/versions/3_19/data.json b/pkgs/development/compilers/flutter/versions/3_19/data.json index 9eeddd3361ddf..491447493db98 100644 --- a/pkgs/development/compilers/flutter/versions/3_19/data.json +++ b/pkgs/development/compilers/flutter/versions/3_19/data.json @@ -1,6 +1,13 @@ { "version": "3.19.4", "engineVersion": "a5c24f538d05aaf66f7972fb23959d8cafb9f95a", + "engineSwiftShaderHash": "sha256-J8TKwbIQ7hdWCGIu1T//MJlRzT7OTVL0MG/dmMyutPQ=", + "engineSwiftShaderRev": "2fa7e9b99ae4e70ea5ae2cc9c8d3afb43391384f", + "channel": "stable", + "engineHashes": { + "aarch64-linux": "sha256-YTG46ZYCOu0OJGIILV6NGvIEhQU0yHNFSMR38Xvqa9E=", + "x86_64-linux": "sha256-YTG46ZYCOu0OJGIILV6NGvIEhQU0yHNFSMR38Xvqa9E=" + }, "dartVersion": "3.3.2", "dartHash": { "x86_64-linux": "sha256-eO8qcSQNWGEz/5oVaJ5tjRMnGy2aq3PbcF15z/Pi3xQ=", diff --git a/pkgs/development/compilers/flutter/versions/3_19/engine/patches/flutter-140969.patch b/pkgs/development/compilers/flutter/versions/3_19/engine/patches/flutter-140969.patch new file mode 100644 index 0000000000000..bf5d9320a0a39 --- /dev/null +++ b/pkgs/development/compilers/flutter/versions/3_19/engine/patches/flutter-140969.patch @@ -0,0 +1,41 @@ +From dd74740ddceac81e748a7e7834c28135abc59454 Mon Sep 17 00:00:00 2001 +From: Brandon DeRosier <bdero@google.com> +Date: Tue, 16 Jan 2024 11:00:34 -0800 +Subject: [PATCH] [Flutter GPU] Fix playground shader paths. (#49790) + +Resolves https://github.com/flutter/flutter/issues/140969. + +Makes the shader paths absolute to prevent issues caused by the working +directory differing across build environments. +--- + impeller/fixtures/BUILD.gn | 3 ++- + impeller/tools/impeller.gni | 2 +- + 2 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/impeller/fixtures/BUILD.gn b/impeller/fixtures/BUILD.gn +index 9165f06542a2a..5ea90ab3969f3 100644 +--- a/impeller/fixtures/BUILD.gn ++++ b/impeller/fixtures/BUILD.gn +@@ -131,7 +131,8 @@ + "flutter_gpu_texture.vert", + ] + shader_target_flags = [ "--runtime-stage-metal" ] +- shader_bundle = "{\"UnlitFragment\": {\"type\": \"fragment\", \"file\": \"../../flutter/impeller/fixtures/flutter_gpu_unlit.frag\"}, \"UnlitVertex\": {\"type\": \"vertex\", \"file\": \"../../flutter/impeller/fixtures/flutter_gpu_unlit.vert\"}, \"TextureFragment\": {\"type\": \"fragment\", \"file\": \"../../flutter/impeller/fixtures/flutter_gpu_texture.frag\"}, \"TextureVertex\": {\"type\": \"vertex\", \"file\": \"../../flutter/impeller/fixtures/flutter_gpu_texture.vert\"}}" ++ fixtures = rebase_path("//flutter/impeller/fixtures") ++ shader_bundle = "{\"UnlitFragment\": {\"type\": \"fragment\", \"file\": \"${fixtures}/flutter_gpu_unlit.frag\"}, \"UnlitVertex\": {\"type\": \"vertex\", \"file\": \"${fixtures}/flutter_gpu_unlit.vert\"}, \"TextureFragment\": {\"type\": \"fragment\", \"file\": \"${fixtures}/flutter_gpu_texture.frag\"}, \"TextureVertex\": {\"type\": \"vertex\", \"file\": \"${fixtures}/flutter_gpu_texture.vert\"}}" + shader_bundle_output = "playground.shaderbundle" + } + +diff --git a/impeller/tools/impeller.gni b/impeller/tools/impeller.gni +index 6541c3b12173b..2ab7ec0f0b07a 100644 +--- a/impeller/tools/impeller.gni ++++ b/impeller/tools/impeller.gni +@@ -313,7 +313,7 @@ + if (defined(invoker.shader_bundle)) { + assert( + defined(invoker.shader_bundle_output), +- "When shader_bundle is specified, shader_output_bundle must also be specified.") ++ "When shader_bundle is specified, shader_bundle_output must also be specified.") + } + + sksl = false diff --git a/pkgs/development/compilers/flutter/versions/3_22/data.json b/pkgs/development/compilers/flutter/versions/3_22/data.json new file mode 100644 index 0000000000000..140b22bbcb1c6 --- /dev/null +++ b/pkgs/development/compilers/flutter/versions/3_22/data.json @@ -0,0 +1,1014 @@ +{ + "version": "3.22.2", + "engineVersion": "edd8546116457bdf1c5bdfb13ecb9463d2bb5ed4", + "engineSwiftShaderHash": "sha256-J8TKwbIQ7hdWCGIu1T//MJlRzT7OTVL0MG/dmMyutPQ=", + "engineSwiftShaderRev": "2fa7e9b99ae4e70ea5ae2cc9c8d3afb43391384f", + "channel": "stable", + "engineHashes": { + "aarch64-linux": "sha256-OPgevqdMwKhXml+PS5Z1DW0wg843NVN57CiLbXve8kE=", + "x86_64-linux": "sha256-OPgevqdMwKhXml+PS5Z1DW0wg843NVN57CiLbXve8kE=" + }, + "dartVersion": "3.4.3", + "dartHash": { + "x86_64-linux": "sha256-wDIdoWoKlutP8kixd12Lppzv2aYeiTJ1A1Sy6lguXgg=", + "aarch64-linux": "sha256-sJBsZBA71Sht8wdUbPVzPv3Zf+vDJXY9w0a7ZC8/aF8=", + "x86_64-darwin": "sha256-XWDZae1bMeQsIOdv7BiMNneBKt6Xhras/QXtPukGyKA=", + "aarch64-darwin": "sha256-4D1e5EmBoA5eDw50EIVNsMjhCP33fNemmUD8/1WvxOM=" + }, + "flutterHash": "sha256-7ndnIw72YxNB+VeeejEeRD+xxuLXOcWo322s5CMWzBM=", + "artifactHashes": { + "android": { + "aarch64-darwin": "sha256-loGG9c6F0cnc5ue7cD6Tk8b79LGijd9YSfKWjlXk+TI=", + "aarch64-linux": "sha256-lIxH729tt0p+5LkLguf1lBk7YdinXngKPL05W6XdVDg=", + "x86_64-darwin": "sha256-loGG9c6F0cnc5ue7cD6Tk8b79LGijd9YSfKWjlXk+TI=", + "x86_64-linux": "sha256-lIxH729tt0p+5LkLguf1lBk7YdinXngKPL05W6XdVDg=" + }, + "fuchsia": { + "aarch64-darwin": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=", + "aarch64-linux": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=", + "x86_64-darwin": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=", + "x86_64-linux": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=" + }, + "ios": { + "aarch64-darwin": "sha256-d/1d8/Md2tzf/Mu4d3RKHl5Jd8u5HzZSGfBKomt1mlo=", + "aarch64-linux": "sha256-d/1d8/Md2tzf/Mu4d3RKHl5Jd8u5HzZSGfBKomt1mlo=", + "x86_64-darwin": "sha256-d/1d8/Md2tzf/Mu4d3RKHl5Jd8u5HzZSGfBKomt1mlo=", + "x86_64-linux": "sha256-d/1d8/Md2tzf/Mu4d3RKHl5Jd8u5HzZSGfBKomt1mlo=" + }, + "linux": { + "aarch64-darwin": "sha256-UYb2OOB0riL+Qrhpke0vYpo0U4buKYcbJRgYSpugJQc=", + "aarch64-linux": "sha256-UYb2OOB0riL+Qrhpke0vYpo0U4buKYcbJRgYSpugJQc=", + "x86_64-darwin": "sha256-ytfyeJeDnAGDsg98POe3fKAxpq8lNVYlV1wY6p2pkbU=", + "x86_64-linux": "sha256-ytfyeJeDnAGDsg98POe3fKAxpq8lNVYlV1wY6p2pkbU=" + }, + "macos": { + "aarch64-darwin": "sha256-0XEdCeY1KTmtLz/cgZLSfDbjucXk0FpwVIDZuEPqngk=", + "aarch64-linux": "sha256-0XEdCeY1KTmtLz/cgZLSfDbjucXk0FpwVIDZuEPqngk=", + "x86_64-darwin": "sha256-0XEdCeY1KTmtLz/cgZLSfDbjucXk0FpwVIDZuEPqngk=", + "x86_64-linux": "sha256-0XEdCeY1KTmtLz/cgZLSfDbjucXk0FpwVIDZuEPqngk=" + }, + "universal": { + "aarch64-darwin": "sha256-TLDwggTgVTe0+v5lCutysF4ygKPiA1b48ImyNDyl7oA=", + "aarch64-linux": "sha256-rTAX+i+OhyKIevwSFgoWRHw8bHuQCC0Lx/YVlbpwL6c=", + "x86_64-darwin": "sha256-1NztXAPG6HWjk7++TLkq791f5t3Va/wP0I2j3ddmURI=", + "x86_64-linux": "sha256-qWZQdDB+yd7i/Cx15K7KQmzbgzxWDeOwcsHkNeDwRqw=" + }, + "web": { + "aarch64-darwin": "sha256-IFg4+IOJbb2Zi4axzL9FezCzp3kLr2gHmEWUupBmxlg=", + "aarch64-linux": "sha256-IFg4+IOJbb2Zi4axzL9FezCzp3kLr2gHmEWUupBmxlg=", + "x86_64-darwin": "sha256-IFg4+IOJbb2Zi4axzL9FezCzp3kLr2gHmEWUupBmxlg=", + "x86_64-linux": "sha256-IFg4+IOJbb2Zi4axzL9FezCzp3kLr2gHmEWUupBmxlg=" + }, + "windows": { + "x86_64-darwin": "sha256-gTnkbp6cJHiW9nFYIfnHYJ+vMG1nGV5nZLY0LgFQPtg=", + "x86_64-linux": "sha256-gTnkbp6cJHiW9nFYIfnHYJ+vMG1nGV5nZLY0LgFQPtg=" + } + }, + "pubspecLock": { + "packages": { + "_fe_analyzer_shared": { + "dependency": "direct main", + "description": { + "name": "_fe_analyzer_shared", + "sha256": "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "67.0.0" + }, + "analyzer": { + "dependency": "direct main", + "description": { + "name": "analyzer", + "sha256": "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.4.1" + }, + "archive": { + "dependency": "direct main", + "description": { + "name": "archive", + "sha256": "80e5141fafcb3361653ce308776cfd7d45e6e9fbb429e14eec571382c0c5fecb", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.3.2" + }, + "args": { + "dependency": "direct main", + "description": { + "name": "args", + "sha256": "eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.4.2" + }, + "async": { + "dependency": "direct main", + "description": { + "name": "async", + "sha256": "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.11.0" + }, + "boolean_selector": { + "dependency": "direct main", + "description": { + "name": "boolean_selector", + "sha256": "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.1" + }, + "browser_launcher": { + "dependency": "direct main", + "description": { + "name": "browser_launcher", + "sha256": "6ee4c6b1f68a42e769ef6e663c4f56708522f7bce9d2ab6e308a37b612ffa4ec", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.1" + }, + "built_collection": { + "dependency": "direct main", + "description": { + "name": "built_collection", + "sha256": "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "5.1.1" + }, + "built_value": { + "dependency": "direct main", + "description": { + "name": "built_value", + "sha256": "fedde275e0a6b798c3296963c5cd224e3e1b55d0e478d5b7e65e6b540f363a0e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "8.9.1" + }, + "checked_yaml": { + "dependency": "direct dev", + "description": { + "name": "checked_yaml", + "sha256": "feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.3" + }, + "cli_config": { + "dependency": "direct main", + "description": { + "name": "cli_config", + "sha256": "ac20a183a07002b700f0c25e61b7ee46b23c309d76ab7b7640a028f18e4d99ec", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.0" + }, + "clock": { + "dependency": "direct main", + "description": { + "name": "clock", + "sha256": "cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.1" + }, + "collection": { + "dependency": "direct dev", + "description": { + "name": "collection", + "sha256": "ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.18.0" + }, + "completion": { + "dependency": "direct main", + "description": { + "name": "completion", + "sha256": "f11b7a628e6c42b9edc9b0bc3aa490e2d930397546d2f794e8e1325909d11c60", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.1" + }, + "convert": { + "dependency": "direct main", + "description": { + "name": "convert", + "sha256": "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.1" + }, + "coverage": { + "dependency": "direct main", + "description": { + "name": "coverage", + "sha256": "8acabb8306b57a409bf4c83522065672ee13179297a6bb0cb9ead73948df7c76", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.7.2" + }, + "crypto": { + "dependency": "direct main", + "description": { + "name": "crypto", + "sha256": "ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.3" + }, + "csslib": { + "dependency": "direct main", + "description": { + "name": "csslib", + "sha256": "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.0" + }, + "dap": { + "dependency": "direct main", + "description": { + "name": "dap", + "sha256": "fb7c8a64857d90bedf5c51954b83bee9304b607bcb8a03a89ec37afbf2d683a7", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.0" + }, + "dds": { + "dependency": "direct main", + "description": { + "name": "dds", + "sha256": "6228ad1e591ee9c54f7f0de3d679d328fb15a7f8d20984a02db2430c3e83816f", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.4.0" + }, + "dds_service_extensions": { + "dependency": "direct main", + "description": { + "name": "dds_service_extensions", + "sha256": "299ebf18d340693a7705a56aa2cc2d41df4081a6496b43b04163406496cea6d3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.7.0" + }, + "devtools_shared": { + "dependency": "direct main", + "description": { + "name": "devtools_shared", + "sha256": "8d3452f1ca40d8bbe77db4851dd6f08ea12fc17624c037bfc355587cb8b321be", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "8.1.0" + }, + "dtd": { + "dependency": "direct main", + "description": { + "name": "dtd", + "sha256": "0d4a51ab223090d2d6b86477f414052db78cad1b2de020619f454a2a39369fec", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.0" + }, + "dwds": { + "dependency": "direct main", + "description": { + "name": "dwds", + "sha256": "5e7e6d645447ccccd3931340d6e6676608aebc0d64a9a28f370e3b2f4e4eea8a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "23.3.0" + }, + "extension_discovery": { + "dependency": "direct main", + "description": { + "name": "extension_discovery", + "sha256": "20735622d0763865f9d94c3ecdce4441174530870760253e9d364fb4f3da8688", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.0" + }, + "fake_async": { + "dependency": "direct main", + "description": { + "name": "fake_async", + "sha256": "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.3.1" + }, + "ffi": { + "dependency": "direct main", + "description": { + "name": "ffi", + "sha256": "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.2" + }, + "file": { + "dependency": "direct main", + "description": { + "name": "file", + "sha256": "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "7.0.0" + }, + "file_testing": { + "dependency": "direct dev", + "description": { + "name": "file_testing", + "sha256": "0aaadb4025bd350403f4308ad6c4cea953278d9407814b8342558e4946840fb5", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.0" + }, + "fixnum": { + "dependency": "direct main", + "description": { + "name": "fixnum", + "sha256": "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.0" + }, + "flutter_template_images": { + "dependency": "direct main", + "description": { + "name": "flutter_template_images", + "sha256": "fd3e55af73c577b9e3f88d4080d3e366cb5c8ef3fbd50b94dfeca56bb0235df6", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.2.0" + }, + "frontend_server_client": { + "dependency": "direct main", + "description": { + "name": "frontend_server_client", + "sha256": "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.2.0" + }, + "glob": { + "dependency": "direct main", + "description": { + "name": "glob", + "sha256": "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.2" + }, + "graphs": { + "dependency": "direct main", + "description": { + "name": "graphs", + "sha256": "aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.3.1" + }, + "html": { + "dependency": "direct main", + "description": { + "name": "html", + "sha256": "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.15.4" + }, + "http": { + "dependency": "direct main", + "description": { + "name": "http", + "sha256": "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.13.6" + }, + "http_multi_server": { + "dependency": "direct main", + "description": { + "name": "http_multi_server", + "sha256": "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.2.1" + }, + "http_parser": { + "dependency": "direct main", + "description": { + "name": "http_parser", + "sha256": "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.0.2" + }, + "intl": { + "dependency": "direct main", + "description": { + "name": "intl", + "sha256": "d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.19.0" + }, + "io": { + "dependency": "direct main", + "description": { + "name": "io", + "sha256": "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.4" + }, + "js": { + "dependency": "direct dev", + "description": { + "name": "js", + "sha256": "c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.7.1" + }, + "json_annotation": { + "dependency": "direct dev", + "description": { + "name": "json_annotation", + "sha256": "b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.8.1" + }, + "json_rpc_2": { + "dependency": "direct main", + "description": { + "name": "json_rpc_2", + "sha256": "5e469bffa23899edacb7b22787780068d650b106a21c76db3c49218ab7ca447e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.2" + }, + "logging": { + "dependency": "direct main", + "description": { + "name": "logging", + "sha256": "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.0" + }, + "matcher": { + "dependency": "direct main", + "description": { + "name": "matcher", + "sha256": "d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.12.16+1" + }, + "meta": { + "dependency": "direct main", + "description": { + "name": "meta", + "sha256": "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.12.0" + }, + "mime": { + "dependency": "direct main", + "description": { + "name": "mime", + "sha256": "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.5" + }, + "multicast_dns": { + "dependency": "direct main", + "description": { + "name": "multicast_dns", + "sha256": "316cc47a958d4bd3c67bd238fe8b44fdfb6133bad89cb191c0c3bd3edb14e296", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.3.2+6" + }, + "mustache_template": { + "dependency": "direct main", + "description": { + "name": "mustache_template", + "sha256": "a46e26f91445bfb0b60519be280555b06792460b27b19e2b19ad5b9740df5d1c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.0" + }, + "native_assets_builder": { + "dependency": "direct main", + "description": { + "name": "native_assets_builder", + "sha256": "32beacac1b465c63554eee65e5f1379bd0c7b98f5dcf8a9ac86f014ce450a832", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.6.1" + }, + "native_assets_cli": { + "dependency": "direct main", + "description": { + "name": "native_assets_cli", + "sha256": "aa257d7c8d2e4bee8339a077d0ddef97f01b28fadb7a379074142782928ab1c3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.5.3" + }, + "native_stack_traces": { + "dependency": "direct main", + "description": { + "name": "native_stack_traces", + "sha256": "c797830b9910d13b0f4e70ddef15cde034214fe3bdb8092c4ea5ffad2f74013f", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.5.6" + }, + "node_preamble": { + "dependency": "direct dev", + "description": { + "name": "node_preamble", + "sha256": "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.2" + }, + "package_config": { + "dependency": "direct main", + "description": { + "name": "package_config", + "sha256": "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.0" + }, + "path": { + "dependency": "direct main", + "description": { + "name": "path", + "sha256": "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.9.0" + }, + "petitparser": { + "dependency": "direct main", + "description": { + "name": "petitparser", + "sha256": "c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.0.2" + }, + "platform": { + "dependency": "direct main", + "description": { + "name": "platform", + "sha256": "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.4" + }, + "pool": { + "dependency": "direct main", + "description": { + "name": "pool", + "sha256": "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.5.1" + }, + "process": { + "dependency": "direct main", + "description": { + "name": "process", + "sha256": "21e54fd2faf1b5bdd5102afd25012184a6793927648ea81eea80552ac9405b32", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "5.0.2" + }, + "pub_semver": { + "dependency": "direct main", + "description": { + "name": "pub_semver", + "sha256": "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.4" + }, + "pubspec_parse": { + "dependency": "direct dev", + "description": { + "name": "pubspec_parse", + "sha256": "c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.3" + }, + "shelf": { + "dependency": "direct main", + "description": { + "name": "shelf", + "sha256": "ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.4.1" + }, + "shelf_packages_handler": { + "dependency": "direct main", + "description": { + "name": "shelf_packages_handler", + "sha256": "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.2" + }, + "shelf_proxy": { + "dependency": "direct main", + "description": { + "name": "shelf_proxy", + "sha256": "a71d2307f4393211930c590c3d2c00630f6c5a7a77edc1ef6436dfd85a6a7ee3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.4" + }, + "shelf_static": { + "dependency": "direct main", + "description": { + "name": "shelf_static", + "sha256": "a41d3f53c4adf0f57480578c1d61d90342cd617de7fc8077b1304643c2d85c1e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.2" + }, + "shelf_web_socket": { + "dependency": "direct main", + "description": { + "name": "shelf_web_socket", + "sha256": "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.4" + }, + "source_map_stack_trace": { + "dependency": "direct main", + "description": { + "name": "source_map_stack_trace", + "sha256": "84cf769ad83aa6bb61e0aa5a18e53aea683395f196a6f39c4c881fb90ed4f7ae", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.1" + }, + "source_maps": { + "dependency": "direct main", + "description": { + "name": "source_maps", + "sha256": "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.10.12" + }, + "source_span": { + "dependency": "direct main", + "description": { + "name": "source_span", + "sha256": "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.10.0" + }, + "sse": { + "dependency": "direct main", + "description": { + "name": "sse", + "sha256": "fdce3a4ac3ae1c01083d05ded0bcdb7e02857ca2323823548e9e76d2f61638f0", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.1.5" + }, + "stack_trace": { + "dependency": "direct main", + "description": { + "name": "stack_trace", + "sha256": "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.11.1" + }, + "standard_message_codec": { + "dependency": "direct main", + "description": { + "name": "standard_message_codec", + "sha256": "fc7dd712d191b7e33196a0ecf354c4573492bb95995e7166cb6f73b047f9cae0", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.0.1+4" + }, + "stream_channel": { + "dependency": "direct main", + "description": { + "name": "stream_channel", + "sha256": "ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.2" + }, + "string_scanner": { + "dependency": "direct main", + "description": { + "name": "string_scanner", + "sha256": "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.0" + }, + "sync_http": { + "dependency": "direct main", + "description": { + "name": "sync_http", + "sha256": "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.3.1" + }, + "term_glyph": { + "dependency": "direct main", + "description": { + "name": "term_glyph", + "sha256": "a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.1" + }, + "test": { + "dependency": "direct dev", + "description": { + "name": "test", + "sha256": "7ee446762c2c50b3bd4ea96fe13ffac69919352bd3b4b17bac3f3465edc58073", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.25.2" + }, + "test_api": { + "dependency": "direct main", + "description": { + "name": "test_api", + "sha256": "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.7.0" + }, + "test_core": { + "dependency": "direct main", + "description": { + "name": "test_core", + "sha256": "2bc4b4ecddd75309300d8096f781c0e3280ca1ef85beda558d33fcbedc2eead4", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.6.0" + }, + "typed_data": { + "dependency": "direct main", + "description": { + "name": "typed_data", + "sha256": "facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.3.2" + }, + "unified_analytics": { + "dependency": "direct main", + "description": { + "name": "unified_analytics", + "sha256": "57f594f2eff970a74e43aedc9bdec8eb8e3d3c860da8e9e6bcdf7594a07dba6b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "5.8.8+1" + }, + "usage": { + "dependency": "direct main", + "description": { + "name": "usage", + "sha256": "0bdbde65a6e710343d02a56552eeaefd20b735e04bfb6b3ee025b6b22e8d0e15", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.1.1" + }, + "uuid": { + "dependency": "direct main", + "description": { + "name": "uuid", + "sha256": "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.7" + }, + "vm_service": { + "dependency": "direct main", + "description": { + "name": "vm_service", + "sha256": "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "14.2.1" + }, + "vm_service_interface": { + "dependency": "direct main", + "description": { + "name": "vm_service_interface", + "sha256": "28c7c2c2531d94f827cb9ab5f4eacd5864013b559a302b50566b1fab1d9fb1bb", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.1" + }, + "vm_snapshot_analysis": { + "dependency": "direct main", + "description": { + "name": "vm_snapshot_analysis", + "sha256": "5a79b9fbb6be2555090f55b03b23907e75d44c3fd7bdd88da09848aa5a1914c8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.7.6" + }, + "watcher": { + "dependency": "direct main", + "description": { + "name": "watcher", + "sha256": "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.0" + }, + "web": { + "dependency": "direct main", + "description": { + "name": "web", + "sha256": "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.5.1" + }, + "web_socket_channel": { + "dependency": "direct main", + "description": { + "name": "web_socket_channel", + "sha256": "1d8e795e2a8b3730c41b8a98a2dff2e0fb57ae6f0764a1c46ec5915387d257b2", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.4.4" + }, + "webdriver": { + "dependency": "direct main", + "description": { + "name": "webdriver", + "sha256": "003d7da9519e1e5f329422b36c4dcdf18d7d2978d1ba099ea4e45ba490ed845e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.3" + }, + "webkit_inspection_protocol": { + "dependency": "direct main", + "description": { + "name": "webkit_inspection_protocol", + "sha256": "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.1" + }, + "xml": { + "dependency": "direct main", + "description": { + "name": "xml", + "sha256": "b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.5.0" + }, + "yaml": { + "dependency": "direct main", + "description": { + "name": "yaml", + "sha256": "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.2" + }, + "yaml_edit": { + "dependency": "direct main", + "description": { + "name": "yaml_edit", + "sha256": "c566f4f804215d84a7a2c377667f546c6033d5b34b4f9e60dfb09d17c4e97826", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.2.0" + } + }, + "sdks": { + "dart": ">=3.3.0 <4.0.0" + } + } +} diff --git a/pkgs/development/compilers/flutter/versions/3_22/patches/disable-auto-update-shared.patch b/pkgs/development/compilers/flutter/versions/3_22/patches/disable-auto-update-shared.patch new file mode 100644 index 0000000000000..961b41f7327c9 --- /dev/null +++ b/pkgs/development/compilers/flutter/versions/3_22/patches/disable-auto-update-shared.patch @@ -0,0 +1,13 @@ +diff --git a/bin/internal/shared.sh b/bin/internal/shared.sh +index 75d9d3013e..657ad3cb78 100644 +--- a/bin/internal/shared.sh ++++ b/bin/internal/shared.sh +@@ -245,7 +245,7 @@ function shared::execute() { + # and will corrupt each others' downloads. + # + # SHARED_NAME itself is prepared by the caller script. +- upgrade_flutter 7< "$SHARED_NAME" ++ # upgrade_flutter 7< "$SHARED_NAME" + + BIN_NAME="$(basename "$PROG_NAME")" + case "$BIN_NAME" in diff --git a/pkgs/development/compilers/flutter/versions/3_22/patches/gradle-flutter-tools-wrapper.patch b/pkgs/development/compilers/flutter/versions/3_22/patches/gradle-flutter-tools-wrapper.patch new file mode 100644 index 0000000000000..de6080efbba8d --- /dev/null +++ b/pkgs/development/compilers/flutter/versions/3_22/patches/gradle-flutter-tools-wrapper.patch @@ -0,0 +1,44 @@ +This patch introduces an intermediate Gradle build step to alter the behavior +of flutter_tools' Gradle project, specifically moving the creation of `build` +and `.gradle` directories from within the Nix Store to somewhere in `$HOME/.cache/flutter/nix-flutter-tools-gradle/$engineShortRev`. + +Without this patch, flutter_tools' Gradle project tries to generate `build` and `.gradle` +directories within the Nix Store. Resulting in read-only errors when trying to build a +Flutter Android app at runtime. + +This patch takes advantage of the fact settings.gradle takes priority over settings.gradle.kts to build the intermediate Gradle project +when a Flutter app runs `includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle")` + +`rootProject.buildFileName = "/dev/null"` so that the intermediate project doesn't use `build.gradle.kts` that's in the same directory. + +The intermediate project makes a `settings.gradle` file in `$HOME/.cache/flutter/nix-flutter-tools-gradle/<short engine rev>/` and `includeBuild`s it. +This Gradle project will build the actual `packages/flutter_tools/gradle` project by setting +`rootProject.projectDir = new File("$settingsDir")` and `apply from: new File("$settingsDir/settings.gradle.kts")`. + +Now the `.gradle` will be built in `$HOME/.cache/flutter/nix-flutter-tools-gradle/<short engine rev>/`, but `build` doesn't. +To move `build` to `$HOME/.cache/flutter/nix-flutter-tools-gradle/<short engine rev>/` as well, we need to set `buildDirectory`. +diff --git a/packages/flutter_tools/gradle/settings.gradle b/packages/flutter_tools/gradle/settings.gradle +new file mode 100644 +index 0000000000..b2485c94b4 +--- /dev/null ++++ b/packages/flutter_tools/gradle/settings.gradle +@@ -0,0 +1,19 @@ ++rootProject.buildFileName = "/dev/null" ++ ++def engineShortRev = (new File("$settingsDir/../../../bin/internal/engine.version")).text.take(10) ++def dir = new File("$System.env.HOME/.cache/flutter/nix-flutter-tools-gradle/$engineShortRev") ++dir.mkdirs() ++def file = new File(dir, "settings.gradle") ++ ++file.text = """ ++rootProject.projectDir = new File("$settingsDir") ++apply from: new File("$settingsDir/settings.gradle.kts") ++ ++gradle.allprojects { project -> ++ project.beforeEvaluate { ++ project.layout.buildDirectory = new File("$dir/build") ++ } ++} ++""" ++ ++includeBuild(dir) diff --git a/pkgs/development/compilers/flutter/versions/3_23/data.json b/pkgs/development/compilers/flutter/versions/3_23/data.json new file mode 100644 index 0000000000000..a4087fea903ec --- /dev/null +++ b/pkgs/development/compilers/flutter/versions/3_23/data.json @@ -0,0 +1,1030 @@ +{ + "version": "3.23.0-0.1.pre", + "engineVersion": "bb10c5466638e963479ba5e64e601e42d1a43447", + "engineSwiftShaderHash": "sha256-J8TKwbIQ7hdWCGIu1T//MJlRzT7OTVL0MG/dmMyutPQ=", + "engineSwiftShaderRev": "2fa7e9b99ae4e70ea5ae2cc9c8d3afb43391384f", + "channel": "beta", + "engineHashes": { + "aarch64-linux": "sha256-g169BDV6NtiyriMSgK3GOwhkVi9X23SqB9HOxxtGPK4=", + "x86_64-linux": "sha256-g169BDV6NtiyriMSgK3GOwhkVi9X23SqB9HOxxtGPK4=" + }, + "dartVersion": "3.5.0-180.3.beta", + "dartHash": { + "x86_64-linux": "sha256-DXGyUTu9I602lLnDz9BKLfHEAeaMKtbZjxgmPPSTEv0=", + "aarch64-linux": "sha256-WFTHw5V6zWrpF7bx5wOQNOMJe+yn1j4rnfRSkW7hN9c=", + "x86_64-darwin": "sha256-nUFd3jMj1Totc2WPSToLvtSVNjmhKKWEXwzSKo1yT1w=", + "aarch64-darwin": "sha256-O5HYmZVveYGktks7we4uht9ZyaWJli5dSC22lrVqi58=" + }, + "flutterHash": "sha256-OFDPPoLvKG+H4Jylc6/NvvEe5g5I/lo4ViYNIUrgQXw=", + "artifactHashes": { + "android": { + "aarch64-darwin": "sha256-UWZ6/XGOoTjfoENRs2f6ZbTcke76ieme4MnTqKVKYXo=", + "aarch64-linux": "sha256-orYFnnwdiN0jKTff34moVkBmAc2TWNz053mp0IVehmk=", + "x86_64-darwin": "sha256-UWZ6/XGOoTjfoENRs2f6ZbTcke76ieme4MnTqKVKYXo=", + "x86_64-linux": "sha256-orYFnnwdiN0jKTff34moVkBmAc2TWNz053mp0IVehmk=" + }, + "fuchsia": { + "aarch64-darwin": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=", + "aarch64-linux": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=", + "x86_64-darwin": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=", + "x86_64-linux": "sha256-eu0BERdz53CkSexbpu3KA7O6Q4g0s9SGD3t1Snsk3Fk=" + }, + "ios": { + "aarch64-darwin": "sha256-lAo3yua8IbGiaVLt0JqDtehKROnibx60HtaBLupvILI=", + "aarch64-linux": "sha256-lAo3yua8IbGiaVLt0JqDtehKROnibx60HtaBLupvILI=", + "x86_64-darwin": "sha256-lAo3yua8IbGiaVLt0JqDtehKROnibx60HtaBLupvILI=", + "x86_64-linux": "sha256-lAo3yua8IbGiaVLt0JqDtehKROnibx60HtaBLupvILI=" + }, + "linux": { + "aarch64-darwin": "sha256-2d3gPOT2kBgHeTXOFOdEOAHkbv7ctXx51rtX497FEmU=", + "aarch64-linux": "sha256-2d3gPOT2kBgHeTXOFOdEOAHkbv7ctXx51rtX497FEmU=", + "x86_64-darwin": "sha256-LcEITSWg5VdUs9nXRu+mPGxxWqAuRRSbt9RCDeBa+74=", + "x86_64-linux": "sha256-LcEITSWg5VdUs9nXRu+mPGxxWqAuRRSbt9RCDeBa+74=" + }, + "macos": { + "aarch64-darwin": "sha256-b6ETaOTHSU58yLsMorKKhOOA7DkD+RtQ3DIqAJhSDjs=", + "aarch64-linux": "sha256-b6ETaOTHSU58yLsMorKKhOOA7DkD+RtQ3DIqAJhSDjs=", + "x86_64-darwin": "sha256-b6ETaOTHSU58yLsMorKKhOOA7DkD+RtQ3DIqAJhSDjs=", + "x86_64-linux": "sha256-b6ETaOTHSU58yLsMorKKhOOA7DkD+RtQ3DIqAJhSDjs=" + }, + "universal": { + "aarch64-darwin": "sha256-umn+onoRSmfuoL+ls/68xhCo34mgD1xMdMjUstmMC74=", + "aarch64-linux": "sha256-IKGrSAweOTwgesVt2PjUvYeTkpeSDRqXTeZWwd6ikvk=", + "x86_64-darwin": "sha256-C7/NtLOpFwyvUMBk7imz0Ovj/AjJ7vf2v6Sd2PZujiA=", + "x86_64-linux": "sha256-3W/S7/K30xJC6mA9S2n1rgD7lhUvz2ZDSKq7k/uRi2A=" + }, + "web": { + "aarch64-darwin": "sha256-dyT9Cj33MmZdOhQwVuqkrxYjWeZxMXE35BKkRHjSKtQ=", + "aarch64-linux": "sha256-dyT9Cj33MmZdOhQwVuqkrxYjWeZxMXE35BKkRHjSKtQ=", + "x86_64-darwin": "sha256-dyT9Cj33MmZdOhQwVuqkrxYjWeZxMXE35BKkRHjSKtQ=", + "x86_64-linux": "sha256-dyT9Cj33MmZdOhQwVuqkrxYjWeZxMXE35BKkRHjSKtQ=" + }, + "windows": { + "x86_64-darwin": "sha256-0V63HjDy3mqNmGKM/5VVSibg8k7JtSaJ5RXXgk1XltQ=", + "x86_64-linux": "sha256-0V63HjDy3mqNmGKM/5VVSibg8k7JtSaJ5RXXgk1XltQ=" + } + }, + "pubspecLock": { + "packages": { + "_fe_analyzer_shared": { + "dependency": "direct main", + "description": { + "name": "_fe_analyzer_shared", + "sha256": "5aaf60d96c4cd00fe7f21594b5ad6a1b699c80a27420f8a837f4d68473ef09e3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "68.0.0" + }, + "_macros": { + "dependency": "transitive", + "description": "dart", + "source": "sdk", + "version": "0.1.5" + }, + "analyzer": { + "dependency": "direct main", + "description": { + "name": "analyzer", + "sha256": "21f1d3720fd1c70316399d5e2bccaebb415c434592d778cce8acb967b8578808", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.5.0" + }, + "archive": { + "dependency": "direct main", + "description": { + "name": "archive", + "sha256": "80e5141fafcb3361653ce308776cfd7d45e6e9fbb429e14eec571382c0c5fecb", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.3.2" + }, + "args": { + "dependency": "direct main", + "description": { + "name": "args", + "sha256": "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.5.0" + }, + "async": { + "dependency": "direct main", + "description": { + "name": "async", + "sha256": "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.11.0" + }, + "boolean_selector": { + "dependency": "direct main", + "description": { + "name": "boolean_selector", + "sha256": "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.1" + }, + "browser_launcher": { + "dependency": "direct main", + "description": { + "name": "browser_launcher", + "sha256": "6ee4c6b1f68a42e769ef6e663c4f56708522f7bce9d2ab6e308a37b612ffa4ec", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.1" + }, + "built_collection": { + "dependency": "direct main", + "description": { + "name": "built_collection", + "sha256": "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "5.1.1" + }, + "built_value": { + "dependency": "direct main", + "description": { + "name": "built_value", + "sha256": "c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "8.9.2" + }, + "checked_yaml": { + "dependency": "direct dev", + "description": { + "name": "checked_yaml", + "sha256": "feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.3" + }, + "cli_config": { + "dependency": "direct main", + "description": { + "name": "cli_config", + "sha256": "ac20a183a07002b700f0c25e61b7ee46b23c309d76ab7b7640a028f18e4d99ec", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.0" + }, + "clock": { + "dependency": "direct main", + "description": { + "name": "clock", + "sha256": "cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.1" + }, + "collection": { + "dependency": "direct dev", + "description": { + "name": "collection", + "sha256": "ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.18.0" + }, + "completion": { + "dependency": "direct main", + "description": { + "name": "completion", + "sha256": "f11b7a628e6c42b9edc9b0bc3aa490e2d930397546d2f794e8e1325909d11c60", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.1" + }, + "convert": { + "dependency": "direct main", + "description": { + "name": "convert", + "sha256": "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.1" + }, + "coverage": { + "dependency": "direct main", + "description": { + "name": "coverage", + "sha256": "3945034e86ea203af7a056d98e98e42a5518fff200d6e8e6647e1886b07e936e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.8.0" + }, + "crypto": { + "dependency": "direct main", + "description": { + "name": "crypto", + "sha256": "ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.3" + }, + "csslib": { + "dependency": "direct main", + "description": { + "name": "csslib", + "sha256": "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.0" + }, + "dap": { + "dependency": "direct main", + "description": { + "name": "dap", + "sha256": "fb7c8a64857d90bedf5c51954b83bee9304b607bcb8a03a89ec37afbf2d683a7", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.0" + }, + "dds": { + "dependency": "direct main", + "description": { + "name": "dds", + "sha256": "cf3868c2223864529d6e5aa0c07ce9ba0016b9d0e8cb67480c0eb810a42f56bd", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.2.1" + }, + "dds_service_extensions": { + "dependency": "direct main", + "description": { + "name": "dds_service_extensions", + "sha256": "390ae1d0128bb43ffe11f8e3c6cd3a481c1920492d1026883d379cee50bdf1a2", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.0" + }, + "devtools_shared": { + "dependency": "direct main", + "description": { + "name": "devtools_shared", + "sha256": "fbe1657c88dd476a70116e33b0d19f8a23b35fd6db93eab9f01fa32cc21a0c49", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "10.0.0-dev.1" + }, + "dtd": { + "dependency": "direct main", + "description": { + "name": "dtd", + "sha256": "58ac5c2d628e575dbcdfda44a698cd4c1212663e27fe5f8ced37aea85faa0d30", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.2.0" + }, + "dwds": { + "dependency": "direct main", + "description": { + "name": "dwds", + "sha256": "61ebaabb04d779d040b47d3b4d0b3963449ced0920fb8efd81ca6d5e51ccfc1a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "24.0.0" + }, + "extension_discovery": { + "dependency": "direct main", + "description": { + "name": "extension_discovery", + "sha256": "20735622d0763865f9d94c3ecdce4441174530870760253e9d364fb4f3da8688", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.0" + }, + "fake_async": { + "dependency": "direct main", + "description": { + "name": "fake_async", + "sha256": "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.3.1" + }, + "ffi": { + "dependency": "direct main", + "description": { + "name": "ffi", + "sha256": "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.2" + }, + "file": { + "dependency": "direct main", + "description": { + "name": "file", + "sha256": "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "7.0.0" + }, + "file_testing": { + "dependency": "direct dev", + "description": { + "name": "file_testing", + "sha256": "0aaadb4025bd350403f4308ad6c4cea953278d9407814b8342558e4946840fb5", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.0" + }, + "fixnum": { + "dependency": "direct main", + "description": { + "name": "fixnum", + "sha256": "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.0" + }, + "flutter_template_images": { + "dependency": "direct main", + "description": { + "name": "flutter_template_images", + "sha256": "fd3e55af73c577b9e3f88d4080d3e366cb5c8ef3fbd50b94dfeca56bb0235df6", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.2.0" + }, + "frontend_server_client": { + "dependency": "direct main", + "description": { + "name": "frontend_server_client", + "sha256": "f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.0.0" + }, + "glob": { + "dependency": "direct main", + "description": { + "name": "glob", + "sha256": "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.2" + }, + "graphs": { + "dependency": "direct main", + "description": { + "name": "graphs", + "sha256": "aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.3.1" + }, + "html": { + "dependency": "direct main", + "description": { + "name": "html", + "sha256": "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.15.4" + }, + "http": { + "dependency": "direct main", + "description": { + "name": "http", + "sha256": "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.13.6" + }, + "http_multi_server": { + "dependency": "direct main", + "description": { + "name": "http_multi_server", + "sha256": "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.2.1" + }, + "http_parser": { + "dependency": "direct main", + "description": { + "name": "http_parser", + "sha256": "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.0.2" + }, + "intl": { + "dependency": "direct main", + "description": { + "name": "intl", + "sha256": "d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.19.0" + }, + "io": { + "dependency": "direct main", + "description": { + "name": "io", + "sha256": "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.4" + }, + "js": { + "dependency": "direct dev", + "description": { + "name": "js", + "sha256": "c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.7.1" + }, + "json_annotation": { + "dependency": "direct dev", + "description": { + "name": "json_annotation", + "sha256": "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.9.0" + }, + "json_rpc_2": { + "dependency": "direct main", + "description": { + "name": "json_rpc_2", + "sha256": "5e469bffa23899edacb7b22787780068d650b106a21c76db3c49218ab7ca447e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.2" + }, + "logging": { + "dependency": "direct main", + "description": { + "name": "logging", + "sha256": "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.0" + }, + "macros": { + "dependency": "transitive", + "description": { + "name": "macros", + "sha256": "a8403c89b36483b4cbf9f1fcd24562f483cb34a5c9bf101cf2b0d8a083cf1239", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.1.0-main.5" + }, + "matcher": { + "dependency": "direct main", + "description": { + "name": "matcher", + "sha256": "d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.12.16+1" + }, + "meta": { + "dependency": "direct main", + "description": { + "name": "meta", + "sha256": "25dfcaf170a0190f47ca6355bdd4552cb8924b430512ff0cafb8db9bd41fe33b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.14.0" + }, + "mime": { + "dependency": "direct main", + "description": { + "name": "mime", + "sha256": "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.5" + }, + "multicast_dns": { + "dependency": "direct main", + "description": { + "name": "multicast_dns", + "sha256": "316cc47a958d4bd3c67bd238fe8b44fdfb6133bad89cb191c0c3bd3edb14e296", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.3.2+6" + }, + "mustache_template": { + "dependency": "direct main", + "description": { + "name": "mustache_template", + "sha256": "a46e26f91445bfb0b60519be280555b06792460b27b19e2b19ad5b9740df5d1c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.0" + }, + "native_assets_builder": { + "dependency": "direct main", + "description": { + "name": "native_assets_builder", + "sha256": "e6612ad01cbc3c4d1b00a1a42aa25aa567950ab10ae1f95721574923540f3bd8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.7.0" + }, + "native_assets_cli": { + "dependency": "direct main", + "description": { + "name": "native_assets_cli", + "sha256": "f54ddc4a3f8cff1d8d63723b4938902da7586a5a47fe3c1bfa226eb80223f32e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.6.0" + }, + "native_stack_traces": { + "dependency": "direct main", + "description": { + "name": "native_stack_traces", + "sha256": "64d2f4bcf3b69326fb9bc91b4dd3a06f94bb5bbc3a65e25ae6467ace0b34bfd3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.5.7" + }, + "node_preamble": { + "dependency": "direct dev", + "description": { + "name": "node_preamble", + "sha256": "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.2" + }, + "package_config": { + "dependency": "direct main", + "description": { + "name": "package_config", + "sha256": "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.0" + }, + "path": { + "dependency": "direct main", + "description": { + "name": "path", + "sha256": "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.9.0" + }, + "petitparser": { + "dependency": "direct main", + "description": { + "name": "petitparser", + "sha256": "c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.0.2" + }, + "platform": { + "dependency": "direct main", + "description": { + "name": "platform", + "sha256": "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.4" + }, + "pool": { + "dependency": "direct main", + "description": { + "name": "pool", + "sha256": "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.5.1" + }, + "process": { + "dependency": "direct main", + "description": { + "name": "process", + "sha256": "21e54fd2faf1b5bdd5102afd25012184a6793927648ea81eea80552ac9405b32", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "5.0.2" + }, + "pub_semver": { + "dependency": "direct main", + "description": { + "name": "pub_semver", + "sha256": "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.4" + }, + "pubspec_parse": { + "dependency": "direct dev", + "description": { + "name": "pubspec_parse", + "sha256": "c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.3" + }, + "shelf": { + "dependency": "direct main", + "description": { + "name": "shelf", + "sha256": "ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.4.1" + }, + "shelf_packages_handler": { + "dependency": "direct main", + "description": { + "name": "shelf_packages_handler", + "sha256": "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.2" + }, + "shelf_proxy": { + "dependency": "direct main", + "description": { + "name": "shelf_proxy", + "sha256": "a71d2307f4393211930c590c3d2c00630f6c5a7a77edc1ef6436dfd85a6a7ee3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.4" + }, + "shelf_static": { + "dependency": "direct main", + "description": { + "name": "shelf_static", + "sha256": "a41d3f53c4adf0f57480578c1d61d90342cd617de7fc8077b1304643c2d85c1e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.2" + }, + "shelf_web_socket": { + "dependency": "direct main", + "description": { + "name": "shelf_web_socket", + "sha256": "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.4" + }, + "source_map_stack_trace": { + "dependency": "direct main", + "description": { + "name": "source_map_stack_trace", + "sha256": "84cf769ad83aa6bb61e0aa5a18e53aea683395f196a6f39c4c881fb90ed4f7ae", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.1" + }, + "source_maps": { + "dependency": "direct main", + "description": { + "name": "source_maps", + "sha256": "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.10.12" + }, + "source_span": { + "dependency": "direct main", + "description": { + "name": "source_span", + "sha256": "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.10.0" + }, + "sse": { + "dependency": "direct main", + "description": { + "name": "sse", + "sha256": "fdce3a4ac3ae1c01083d05ded0bcdb7e02857ca2323823548e9e76d2f61638f0", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.1.5" + }, + "stack_trace": { + "dependency": "direct main", + "description": { + "name": "stack_trace", + "sha256": "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.11.1" + }, + "standard_message_codec": { + "dependency": "direct main", + "description": { + "name": "standard_message_codec", + "sha256": "fc7dd712d191b7e33196a0ecf354c4573492bb95995e7166cb6f73b047f9cae0", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.0.1+4" + }, + "stream_channel": { + "dependency": "direct main", + "description": { + "name": "stream_channel", + "sha256": "ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.2" + }, + "string_scanner": { + "dependency": "direct main", + "description": { + "name": "string_scanner", + "sha256": "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.0" + }, + "sync_http": { + "dependency": "direct main", + "description": { + "name": "sync_http", + "sha256": "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.3.1" + }, + "term_glyph": { + "dependency": "direct main", + "description": { + "name": "term_glyph", + "sha256": "a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.1" + }, + "test": { + "dependency": "direct dev", + "description": { + "name": "test", + "sha256": "d11b55850c68c1f6c0cf00eabded4e66c4043feaf6c0d7ce4a36785137df6331", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.25.5" + }, + "test_api": { + "dependency": "direct main", + "description": { + "name": "test_api", + "sha256": "2419f20b0c8677b2d67c8ac4d1ac7372d862dc6c460cdbb052b40155408cd794", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.7.1" + }, + "test_core": { + "dependency": "direct main", + "description": { + "name": "test_core", + "sha256": "4d070a6bc36c1c4e89f20d353bfd71dc30cdf2bd0e14349090af360a029ab292", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.6.2" + }, + "typed_data": { + "dependency": "direct main", + "description": { + "name": "typed_data", + "sha256": "facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.3.2" + }, + "unified_analytics": { + "dependency": "direct main", + "description": { + "name": "unified_analytics", + "sha256": "0271998bc95be272accda218841af6dfc7bb4ef666f6c21dd73d6807c2dfff0e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.1.0" + }, + "usage": { + "dependency": "direct main", + "description": { + "name": "usage", + "sha256": "0bdbde65a6e710343d02a56552eeaefd20b735e04bfb6b3ee025b6b22e8d0e15", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.1.1" + }, + "uuid": { + "dependency": "direct main", + "description": { + "name": "uuid", + "sha256": "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.7" + }, + "vm_service": { + "dependency": "direct main", + "description": { + "name": "vm_service", + "sha256": "7475cb4dd713d57b6f7464c0e13f06da0d535d8b2067e188962a59bac2cf280b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "14.2.2" + }, + "vm_service_interface": { + "dependency": "direct main", + "description": { + "name": "vm_service_interface", + "sha256": "f827453d9a3f8ceae04e389810da26f9b67636bdd13aa2dd9405b110c4daf59c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.0" + }, + "vm_snapshot_analysis": { + "dependency": "direct main", + "description": { + "name": "vm_snapshot_analysis", + "sha256": "5a79b9fbb6be2555090f55b03b23907e75d44c3fd7bdd88da09848aa5a1914c8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.7.6" + }, + "watcher": { + "dependency": "direct main", + "description": { + "name": "watcher", + "sha256": "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.0" + }, + "web": { + "dependency": "direct main", + "description": { + "name": "web", + "sha256": "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.5.1" + }, + "web_socket_channel": { + "dependency": "direct main", + "description": { + "name": "web_socket_channel", + "sha256": "58c6666b342a38816b2e7e50ed0f1e261959630becd4c879c4f26bfa14aa5a42", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.4.5" + }, + "webdriver": { + "dependency": "direct main", + "description": { + "name": "webdriver", + "sha256": "003d7da9519e1e5f329422b36c4dcdf18d7d2978d1ba099ea4e45ba490ed845e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.3" + }, + "webkit_inspection_protocol": { + "dependency": "direct main", + "description": { + "name": "webkit_inspection_protocol", + "sha256": "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.1" + }, + "xml": { + "dependency": "direct main", + "description": { + "name": "xml", + "sha256": "b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.5.0" + }, + "yaml": { + "dependency": "direct main", + "description": { + "name": "yaml", + "sha256": "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.2" + }, + "yaml_edit": { + "dependency": "direct main", + "description": { + "name": "yaml_edit", + "sha256": "e9c1a3543d2da0db3e90270dbb1e4eebc985ee5e3ffe468d83224472b2194a5f", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.2.1" + } + }, + "sdks": { + "dart": ">=3.4.0-282.1.beta <4.0.0" + } + } +} diff --git a/pkgs/development/compilers/flutter/wrapper.nix b/pkgs/development/compilers/flutter/wrapper.nix index 4a7aedf97d38e..c988eba2e5aeb 100644 --- a/pkgs/development/compilers/flutter/wrapper.nix +++ b/pkgs/development/compilers/flutter/wrapper.nix @@ -7,7 +7,7 @@ "universal" "web" ] - ++ lib.optional stdenv.hostPlatform.isLinux "linux" + ++ lib.optional (stdenv.hostPlatform.isLinux && !(flutter ? engine)) "linux" ++ lib.optional (stdenv.hostPlatform.isx86_64 || stdenv.hostPlatform.isDarwin) "android" ++ lib.optionals stdenv.hostPlatform.isDarwin [ "macos" "ios" ] , artifactHashes ? flutter.artifactHashes @@ -20,7 +20,7 @@ , makeWrapper , runCommandLocal , writeShellScript -, wrapGAppsHook +, wrapGAppsHook3 , git , which , pkg-config @@ -123,7 +123,7 @@ in nativeBuildInputs = [ makeWrapper ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.DarwinTools ] - ++ lib.optionals supportsLinuxDesktopTarget [ glib wrapGAppsHook ]; + ++ lib.optionals supportsLinuxDesktopTarget [ glib wrapGAppsHook3 ]; passthru = flutter.passthru // { inherit (flutter) version; @@ -145,7 +145,10 @@ in mkdir -p $out/bin makeWrapper '${immutableFlutter}' $out/bin/flutter \ --set-default ANDROID_EMULATOR_USE_SYSTEM_LIBS 1 \ - --suffix PATH : '${lib.makeBinPath (tools ++ buildTools)}' \ + '' + lib.optionalString (flutter ? engine && flutter.engine.meta.available) '' + --set-default FLUTTER_ENGINE "${flutter.engine}" \ + --add-flags "--local-engine-host ${flutter.engine.outName}" \ + '' + '' --suffix PATH : '${lib.makeBinPath (tools ++ buildTools)}' \ --suffix PKG_CONFIG_PATH : "$FLUTTER_PKG_CONFIG_PATH" \ --suffix LIBRARY_PATH : '${lib.makeLibraryPath appStaticBuildDeps}' \ --prefix CXXFLAGS "''\t" '${builtins.concatStringsSep " " (includeFlags ++ extraCxxFlags)}' \ diff --git a/pkgs/development/compilers/flux/default.nix b/pkgs/development/compilers/flux/default.nix index bb3c0da52c61c..6b5620774d3b8 100644 --- a/pkgs/development/compilers/flux/default.nix +++ b/pkgs/development/compilers/flux/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ autoreconfHook pkg-config ]; meta = with lib; { - description = "An interface description language used by DirectFB"; + description = "Interface description language used by DirectFB"; mainProgram = "fluxcomp"; homepage = "https://github.com/deniskropp/flux"; license = licenses.mit; diff --git a/pkgs/development/compilers/fsharp/default.nix b/pkgs/development/compilers/fsharp/default.nix index 0d731e38d8392..d141c6f5d4c5b 100644 --- a/pkgs/development/compilers/fsharp/default.nix +++ b/pkgs/development/compilers/fsharp/default.nix @@ -41,7 +41,7 @@ stdenv.mkDerivation rec { dontStrip = true; meta = { - description = "A functional CLI language"; + description = "Functional CLI language"; homepage = "https://fsharp.org/"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ thoughtpolice raskin ]; diff --git a/pkgs/development/compilers/gbforth/default.nix b/pkgs/development/compilers/gbforth/default.nix index 882a25cdae075..22c559a97350a 100644 --- a/pkgs/development/compilers/gbforth/default.nix +++ b/pkgs/development/compilers/gbforth/default.nix @@ -41,7 +41,7 @@ stdenv.mkDerivation { meta = with lib; { homepage = "https://gbforth.org/"; - description = "A Forth-based Game Boy development kit"; + description = "Forth-based Game Boy development kit"; mainProgram = "gbforth"; longDescription = '' A Forth-based Game Boy development kit. diff --git a/pkgs/development/compilers/gcc/all.nix b/pkgs/development/compilers/gcc/all.nix index 70b4b75369a7d..ba7d53b435838 100644 --- a/pkgs/development/compilers/gcc/all.nix +++ b/pkgs/development/compilers/gcc/all.nix @@ -5,7 +5,7 @@ , callPackage , isl_0_11, isl_0_14, isl_0_17, isl_0_20 , libcCross -, threadsCrossFor +, threadsCross , noSysDirs , texinfo5 , cloog_0_18_0, cloog @@ -25,7 +25,7 @@ let reproducibleBuild = true; profiledCompiler = false; libcCross = if stdenv.targetPlatform != stdenv.buildPlatform then args.libcCross else null; - threadsCross = if stdenv.targetPlatform != stdenv.buildPlatform then threadsCrossFor majorMinorVersion else { }; + threadsCross = if stdenv.targetPlatform != stdenv.buildPlatform then threadsCross else { }; isl = if stdenv.isDarwin then null else if atLeast "9" then isl_0_20 else if atLeast "7" then isl_0_17 diff --git a/pkgs/development/compilers/gcc/common/dependencies.nix b/pkgs/development/compilers/gcc/common/dependencies.nix index a38cdcb9e20f5..fd9036c23ac6c 100644 --- a/pkgs/development/compilers/gcc/common/dependencies.nix +++ b/pkgs/development/compilers/gcc/common/dependencies.nix @@ -15,6 +15,7 @@ , libucontext ? null , libxcrypt ? null , cloog ? null +, darwin ? null , isl ? null , zlib ? null , gnat-bootstrap ? null @@ -85,6 +86,7 @@ in ++ optionals langJava [ boehmgc zip unzip ] ++ optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs) ++ optionals (langGo && stdenv.hostPlatform.isMusl) [ libucontext ] + ++ optionals (lib.versionAtLeast version "14" && stdenv.hostPlatform.isDarwin) [ darwin.apple_sdk.frameworks.CoreServices ] ; # threadsCross.package after gcc6 so i assume its okay for 4.8 and 4.9 too diff --git a/pkgs/development/compilers/gcc/common/platform-flags.nix b/pkgs/development/compilers/gcc/common/platform-flags.nix index cc6a67d640578..9bcdb3070d6b9 100644 --- a/pkgs/development/compilers/gcc/common/platform-flags.nix +++ b/pkgs/development/compilers/gcc/common/platform-flags.nix @@ -8,8 +8,9 @@ let in lib.concatLists [ # --with-arch= is unknown flag on x86_64 and aarch64-darwin. (lib.optional (!targetPlatform.isx86_64 && !isAarch64Darwin && p ? arch) "--with-arch=${p.arch}") + # See supported_defaults in gcc/config.gcc for architecture support. # --with-cpu on aarch64-darwin fails with "Unknown cpu used in --with-cpu=apple-a13". - (lib.optional (!isAarch64Darwin && p ? cpu) "--with-cpu=${p.cpu}") + (lib.optional (with targetPlatform; !isLoongArch64 && !isMips && !isRiscV && !isS390 && !isAarch64Darwin && p ? cpu) "--with-cpu=${p.cpu}") (lib.optional (p ? abi) "--with-abi=${p.abi}") (lib.optional (p ? fpu) "--with-fpu=${p.fpu}") (lib.optional (p ? float) "--with-float=${p.float}") diff --git a/pkgs/development/compilers/gcc/common/pre-configure.nix b/pkgs/development/compilers/gcc/common/pre-configure.nix index 77179d7397687..75f59163bdac3 100644 --- a/pkgs/development/compilers/gcc/common/pre-configure.nix +++ b/pkgs/development/compilers/gcc/common/pre-configure.nix @@ -38,31 +38,6 @@ in lib.optionalString (hostPlatform.isSunOS && hostPlatform.is64bit) '' export GFORTRAN_FOR_TARGET=${pkgsBuildTarget.gfortran}/bin/${stdenv.targetPlatform.config}-gfortran '' -# On x86_64-darwin, the gnat-bootstrap bootstrap compiler that we need to build a -# native GCC with Ada support emits assembly that is accepted by the Clang -# integrated assembler, but not by the GNU assembler in cctools-port that Nix -# usually in the x86_64-darwin stdenv. In particular, x86_64-darwin gnat-bootstrap -# emits MOVQ as the mnemonic for quadword interunit moves, such as between XMM -# and general registers (e.g "movq %xmm0, %rbp"); the cctools-port assembler, -# however, only recognises MOVD for such moves. -# -# Therefore, for native x86_64-darwin builds that support Ada, we have to use -# the Clang integrated assembler to build (at least stage 1 of) GCC, but have to -# target GCC at the cctools-port GNU assembler. In the wrapped x86_64-darwin -# gnat-bootstrap, the former is provided as `as`, while the latter is provided as -# `gas`. -# -+ lib.optionalString ( - langAda - && buildPlatform == hostPlatform - && hostPlatform == targetPlatform - && targetPlatform.isx86_64 - && targetPlatform.isDarwin - ) '' - export AS_FOR_BUILD=${gnat-bootstrap}/bin/as - export AS_FOR_TARGET=${gnat-bootstrap}/bin/gas -'' - # NOTE 2020/3/18: This environment variable prevents configure scripts from # detecting the presence of aligned_alloc on Darwin. There are many facts that # collectively make this fix necessary: diff --git a/pkgs/development/compilers/gcc/default.nix b/pkgs/development/compilers/gcc/default.nix index c3a0efe6aaa11..5e017a21fa1f5 100644 --- a/pkgs/development/compilers/gcc/default.nix +++ b/pkgs/development/compilers/gcc/default.nix @@ -70,6 +70,7 @@ let version = gccVersions.fromMajorMinor majorMinorVersion; majorVersion = versions.major version; + atLeast14 = versionAtLeast version "14"; atLeast13 = versionAtLeast version "13"; atLeast12 = versionAtLeast version "12"; atLeast11 = versionAtLeast version "11"; @@ -79,6 +80,7 @@ let atLeast7 = versionAtLeast version "7"; atLeast6 = versionAtLeast version "6"; atLeast49 = versionAtLeast version "4.9"; + is14 = majorVersion == "14"; is13 = majorVersion == "13"; is12 = majorVersion == "12"; is11 = majorVersion == "11"; @@ -127,6 +129,7 @@ let buildPackages cloog withoutTargetLibc + darwin disableBootstrap disableGdbPlugin enableLTO diff --git a/pkgs/development/compilers/gcc/patches/13/ICE-PR110280.patch b/pkgs/development/compilers/gcc/patches/13/ICE-PR110280.patch deleted file mode 100644 index 7338b3dd1ede3..0000000000000 --- a/pkgs/development/compilers/gcc/patches/13/ICE-PR110280.patch +++ /dev/null @@ -1,60 +0,0 @@ -From f4029de35fb1b293a4fd586574b1b4b73ddf7880 Mon Sep 17 00:00:00 2001 -From: Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> -Date: Wed, 26 Jul 2023 22:36:26 +0530 -Subject: [PATCH] [aarch64/match.pd] Fix ICE observed in PR110280. - -gcc/ChangeLog: - PR tree-optimization/110280 - * match.pd (vec_perm_expr(v, v, mask) -> v): Explicitly build vector - using build_vector_from_val with the element of input operand, and - mask's type if operand and mask's types don't match. - -gcc/testsuite/ChangeLog: - PR tree-optimization/110280 - * gcc.target/aarch64/sve/pr110280.c: New test. - -(cherry picked from commit 85d8e0d8d5342ec8b4e6a54e22741c30b33c6f04) ---- - gcc/match.pd | 9 ++++++++- - gcc/testsuite/gcc.target/aarch64/sve/pr110280.c | 12 ++++++++++++ - 2 files changed, 20 insertions(+), 1 deletion(-) - create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/pr110280.c - -diff --git a/gcc/match.pd b/gcc/match.pd -index 9118244825054..c3bb4fbc0a7a2 100644 ---- a/gcc/match.pd -+++ b/gcc/match.pd -@@ -8292,7 +8292,14 @@ and, - - (simplify - (vec_perm vec_same_elem_p@0 @0 @1) -- @0) -+ (if (types_match (type, TREE_TYPE (@0))) -+ @0 -+ (with -+ { -+ tree elem = uniform_vector_p (@0); -+ } -+ (if (elem) -+ { build_vector_from_val (type, elem); })))) - - /* Push VEC_PERM earlier if that may help FMA perception (PR101895). */ - (simplify -diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pr110280.c b/gcc/testsuite/gcc.target/aarch64/sve/pr110280.c -new file mode 100644 -index 0000000000000..d3279f383629f ---- /dev/null -+++ b/gcc/testsuite/gcc.target/aarch64/sve/pr110280.c -@@ -0,0 +1,12 @@ -+/* { dg-do compile } */ -+/* { dg-options "-O3 -fdump-tree-optimized" } */ -+ -+#include "arm_sve.h" -+ -+svuint32_t l() -+{ -+ _Alignas(16) const unsigned int lanes[4] = {0, 0, 0, 0}; -+ return svld1rq_u32(svptrue_b8(), lanes); -+} -+ -+/* { dg-final { scan-tree-dump-not "VEC_PERM_EXPR" "optimized" } } */ diff --git a/pkgs/development/compilers/gcc/patches/14/gcc-darwin-remove-coreservices.patch b/pkgs/development/compilers/gcc/patches/14/gcc-darwin-remove-coreservices.patch new file mode 100644 index 0000000000000..9d21a3c4c4381 --- /dev/null +++ b/pkgs/development/compilers/gcc/patches/14/gcc-darwin-remove-coreservices.patch @@ -0,0 +1,39 @@ +diff --git a/config/intlmacosx.m4 b/config/intlmacosx.m4 +index 3141bf8c5..7a31862b9 100644 +--- a/config/intlmacosx.m4 ++++ b/config/intlmacosx.m4 +@@ -63,7 +63,7 @@ AC_DEFUN([gt_INTL_MACOSX], + dnl and we have to link it in explicitly, otherwise an exception + dnl NSInvalidArgumentException "unrecognized selector sent to instance" + dnl occurs. +- INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation -Wl,-framework -Wl,CoreServices" ++ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + AC_SUBST([INTL_MACOSX_LIBS]) + ]) +diff --git a/gcc/configure b/gcc/configure +index 23da7d55d..8bd09364d 100755 +--- a/gcc/configure ++++ b/gcc/configure +@@ -13932,7 +13932,7 @@ $as_echo "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes \ + || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then +- INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation -Wl,-framework -Wl,CoreServices" ++ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + +diff --git a/libcpp/configure b/libcpp/configure +index 32d6aaa30..592c33881 100755 +--- a/libcpp/configure ++++ b/libcpp/configure +@@ -7570,7 +7570,7 @@ $as_echo "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes \ + || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then +- INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation -Wl,-framework -Wl,CoreServices" ++ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + diff --git a/pkgs/development/compilers/gcc/patches/14/gnat-darwin-dylib-install-name-14.patch b/pkgs/development/compilers/gcc/patches/14/gnat-darwin-dylib-install-name-14.patch new file mode 100644 index 0000000000000..195f7b10c3483 --- /dev/null +++ b/pkgs/development/compilers/gcc/patches/14/gnat-darwin-dylib-install-name-14.patch @@ -0,0 +1,21 @@ +diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in +index 0666fc00b..0e2d53eb8 100644 +--- a/gcc/ada/gcc-interface/Makefile.in ++++ b/gcc/ada/gcc-interface/Makefile.in +@@ -793,14 +793,14 @@ gnatlib-shared-darwin: + -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ + $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \ + $(SO_OPTS) \ +- -Wl,-install_name,@rpath/libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ -Wl,-install_name,$(ADA_RTL_DSO_DIR)/libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ + -nodefaultrpaths -Wl,-rpath,@loader_path/,-rpath,@loader_path/.. \ + -Wl,-rpath,@loader_path/../../../../ $(MISCLIB) + cd $(RTSDIR); $(GCC_FOR_ADA_RTS) -dynamiclib $(PICFLAG_FOR_TARGET) \ + -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ + $(GNATRTL_TASKING_OBJS) \ + $(SO_OPTS) \ +- -Wl,-install_name,@rpath/libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ -Wl,-install_name,$(ADA_RTL_DSO_DIR)/libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ + -nodefaultrpaths -Wl,-rpath,@loader_path/,-rpath,@loader_path/.. \ + -Wl,-rpath,@loader_path/../../../../ \ + $(THREADSLIB) -Wl,libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) diff --git a/pkgs/development/compilers/gcc/patches/14/libgcc-darwin-detection.patch b/pkgs/development/compilers/gcc/patches/14/libgcc-darwin-detection.patch new file mode 100644 index 0000000000000..27d455aa58b67 --- /dev/null +++ b/pkgs/development/compilers/gcc/patches/14/libgcc-darwin-detection.patch @@ -0,0 +1,12 @@ +diff -u a/libgcc/config.host b/libgcc/config.host +--- a/libgcc/config.host 2023-11-05 11:01:55.778638446 -0500 ++++ b/libgcc/config.host 2023-11-05 11:07:29.405103979 -0500 +@@ -227,7 +227,7 @@ + tmake_file="$tmake_file t-slibgcc-darwin" + # newer toolsets produce warnings when building for unsupported versions. + case ${host} in +- *-*-darwin1[89]* | *-*-darwin2* ) ++ *-*-darwin1[89]* | *-*-darwin2* | *-*-darwin) + tmake_file="t-darwin-min-8 $tmake_file" + ;; + *-*-darwin9* | *-*-darwin1[0-7]*) diff --git a/pkgs/development/compilers/gcc/patches/default.nix b/pkgs/development/compilers/gcc/patches/default.nix index 8f0c8f6d288c8..8f0a499da362a 100644 --- a/pkgs/development/compilers/gcc/patches/default.nix +++ b/pkgs/development/compilers/gcc/patches/default.nix @@ -25,6 +25,7 @@ }: let + atLeast14 = lib.versionAtLeast version "14"; atLeast13 = lib.versionAtLeast version "13"; atLeast12 = lib.versionAtLeast version "12"; atLeast11 = lib.versionAtLeast version "11"; @@ -34,6 +35,7 @@ let atLeast7 = lib.versionAtLeast version "7"; atLeast6 = lib.versionAtLeast version "6"; atLeast49 = lib.versionAtLeast version "4.9"; + is14 = majorVersion == "14"; is13 = majorVersion == "13"; is12 = majorVersion == "12"; is11 = majorVersion == "11"; @@ -63,6 +65,7 @@ in ++ optionals (noSysDirs) ( [(if atLeast12 then ./gcc-12-no-sys-dirs.patch else ./no-sys-dirs.patch)] ++ ({ + "14" = [ ./13/no-sys-dirs-riscv.patch ./13/mangle-NIX_STORE-in-__FILE__.patch ]; "13" = [ ./13/no-sys-dirs-riscv.patch ./13/mangle-NIX_STORE-in-__FILE__.patch ]; "12" = [ ./no-sys-dirs-riscv.patch ./12/mangle-NIX_STORE-in-__FILE__.patch ]; "11" = [ ./no-sys-dirs-riscv.patch ]; @@ -74,7 +77,6 @@ in ++ optional langFortran (if atLeast12 then ./gcc-12-gfortran-driving.patch else ./gfortran-driving.patch) ++ optional atLeast7 ./ppc-musl.patch ++ optional is12 ./12/lambda-ICE-PR109241.patch # backport ICE fix on ccache code -++ optional is13 ./13/ICE-PR110280.patch # backport ICE fix on const_unop ++ optional (atLeast9 && langD) ./libphobos.patch @@ -124,11 +126,18 @@ in ## Darwin +# Fixes detection of Darwin on x86_64-darwin. Otherwise, GCC uses a deployment target of 10.5, which crashes ld64. +++ optional (atLeast14 && stdenv.isDarwin && stdenv.isx86_64) ../patches/14/libgcc-darwin-detection.patch + # Fix detection of bootstrap compiler Ada support (cctools as) on Nix Darwin ++ optional (atLeast12 && stdenv.isDarwin && langAda) ./ada-cctools-as-detection-configure.patch +# Remove CoreServices on Darwin, as it is only needed for macOS SDK 14+ +++ optional (atLeast14 && stdenv.isDarwin && langAda) ../patches/14/gcc-darwin-remove-coreservices.patch + # Use absolute path in GNAT dylib install names on Darwin ++ optionals (stdenv.isDarwin && langAda) ({ + "14" = [ ../patches/14/gnat-darwin-dylib-install-name-14.patch ]; "13" = [ ./gnat-darwin-dylib-install-name-13.patch ]; "12" = [ ./gnat-darwin-dylib-install-name.patch ]; }.${majorVersion} or []) @@ -136,10 +145,15 @@ in # 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) ({ + "14" = [ (fetchpatch { + name = "gcc-14-darwin-aarch64-support.patch"; + url = "https://raw.githubusercontent.com/Homebrew/formula-patches/82b5c1cd38826ab67ac7fc498a8fe74376a40f4a/gcc/gcc-14.1.0.diff"; + sha256 = "sha256-jCY65l1DGdESNyzEmD8FFC/xMmqeqBIQF+BhT4uTBBU="; + }) ]; "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="; + url = "https://raw.githubusercontent.com/Homebrew/formula-patches/bda0faddfbfb392e7b9c9101056b2c5ab2500508/gcc/gcc-13.3.0.diff"; + sha256 = "sha256-RBTCBXIveGwuQGJLzMW/UexpUZdDgdXprp/G2NHkmQo="; }) ]; "12" = [ (fetchurl { name = "gcc-12-darwin-aarch64-support.patch"; diff --git a/pkgs/development/compilers/gcc/versions.nix b/pkgs/development/compilers/gcc/versions.nix index 261ffc6345447..3421152ef12ac 100644 --- a/pkgs/development/compilers/gcc/versions.nix +++ b/pkgs/development/compilers/gcc/versions.nix @@ -1,6 +1,7 @@ let majorMinorToVersionMap = { - "13" = "13.2.0"; + "14" = "14.1.0"; + "13" = "13.3.0"; "12" = "12.3.0"; "11" = "11.4.0"; "10" = "10.5.0"; @@ -19,7 +20,8 @@ let srcHashForVersion = version: { # NOTE: there is no need to remove hashes of obsolete minor # versions when adding a new minor version. - "13.2.0" = "sha256-4nXnZEKmBnNBon8Exca4PYYTFEAEwEE1KIY9xrXHQ9o="; + "14.1.0" = "sha256-4oPGVJh6/j3p2AgLwL15U0tcoNaBpzoR/ytdN2dCaEA="; + "13.3.0" = "sha256-CEXpYhyVQ6E/SE6UWEpJ/8ASmXDpkUYkI1/B0GGgwIM="; "12.3.0" = "sha256-lJpdT5nnhkIak7Uysi/6tVeN5zITaZdbka7Jet/ajDs="; "11.4.0" = "sha256-Py2yIrAH6KSiPNW6VnJu8I6LHx6yBV7nLBQCzqc6jdk="; "10.5.0" = "sha256-JRCVQ/30bzl8NHtdi3osflaUpaUczkucbh6opxyjB8E="; diff --git a/pkgs/development/compilers/gforth/boot-forth.nix b/pkgs/development/compilers/gforth/boot-forth.nix index 74a267687b8f2..657847164bb07 100644 --- a/pkgs/development/compilers/gforth/boot-forth.nix +++ b/pkgs/development/compilers/gforth/boot-forth.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation { configureFlags = lib.optionals stdenv.isDarwin [ "--build=x86_64-apple-darwin" ]; meta = { - description = "The Forth implementation of the GNU project (outdated version used to bootstrap)"; + description = "Forth implementation of the GNU project (outdated version used to bootstrap)"; homepage = "https://www.gnu.org/software/gforth/"; license = lib.licenses.gpl3; platforms = lib.platforms.all; diff --git a/pkgs/development/compilers/gforth/default.nix b/pkgs/development/compilers/gforth/default.nix index b76482ba5963d..56d89fd628f21 100644 --- a/pkgs/development/compilers/gforth/default.nix +++ b/pkgs/development/compilers/gforth/default.nix @@ -38,7 +38,7 @@ in stdenv.mkDerivation rec { ''; meta = { - description = "The Forth implementation of the GNU project"; + description = "Forth implementation of the GNU project"; homepage = "https://github.com/forthy42/gforth"; license = lib.licenses.gpl3; broken = stdenv.isDarwin && stdenv.isAarch64; # segfault when running ./gforthmi diff --git a/pkgs/development/compilers/ghc/8.10.7-binary.nix b/pkgs/development/compilers/ghc/8.10.7-binary.nix index 16642e56bfd92..c29b3c89f4b87 100644 --- a/pkgs/development/compilers/ghc/8.10.7-binary.nix +++ b/pkgs/development/compilers/ghc/8.10.7-binary.nix @@ -434,7 +434,7 @@ stdenv.mkDerivation rec { meta = rec { homepage = "http://haskell.org/ghc"; - description = "The Glasgow Haskell Compiler"; + description = "Glasgow Haskell Compiler"; license = lib.licenses.bsd3; # HACK: since we can't encode the libc / abi in platforms, we need # to make the platform list dependent on the evaluation platform diff --git a/pkgs/development/compilers/ghc/8.10.7.nix b/pkgs/development/compilers/ghc/8.10.7.nix index cc819ff8dcbfd..c8669a2761f82 100644 --- a/pkgs/development/compilers/ghc/8.10.7.nix +++ b/pkgs/development/compilers/ghc/8.10.7.nix @@ -131,23 +131,44 @@ let 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; - }; + # toolPath calculates the absolute path to the name tool associated with a + # given `stdenv.cc` derivation, i.e. it picks the correct derivation to take + # the tool from (cc, cc.bintools, cc.bintools.bintools) and adds the correct + # subpath of the tool. + toolPath = name: cc: + let + tools = { + "cc" = cc; + "c++" = cc; + as = cc.bintools.bintools; + + ar = cc.bintools.bintools; + ranlib = cc.bintools.bintools; + nm = cc.bintools.bintools; + readelf = cc.bintools.bintools; + + ld = cc.bintools; + "ld.gold" = cc.bintools; + + otool = cc.bintools.bintools; + + # 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. We decide based on target platform to have consistent tools + # across all GHC stages. + install_name_tool = + if stdenv.targetPlatform.isAarch64 + then cc.bintools + else cc.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 cc.bintools + else cc.bintools.bintools; + }.${name}; + in + "${tools}/bin/${tools.targetPrefix}${name}"; # 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 @@ -255,19 +276,19 @@ stdenv.mkDerivation (rec { 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++" + export CC="${toolPath "cc" targetCC}" + export CXX="${toolPath "c++" targetCC}" # 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" + export LD="${toolPath "ld${lib.optionalString useLdGold ".gold"}" targetCC}" + export AS="${toolPath "as" targetCC}" + export AR="${toolPath "ar" targetCC}" + export NM="${toolPath "nm" targetCC}" + export RANLIB="${toolPath "ranlib" targetCC}" + export READELF="${toolPath "readelf" targetCC}" + export STRIP="${toolPath "strip" targetCC}" '' + 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" + export OTOOL="${toolPath "otool" targetCC}" + export INSTALL_NAME_TOOL="${toolPath "install_name_tool" targetCC}" '' + lib.optionalString useLLVM '' export LLC="${lib.getBin buildTargetLlvmPackages.llvm}/bin/llc" export OPT="${lib.getBin buildTargetLlvmPackages.llvm}/bin/opt" @@ -398,7 +419,7 @@ stdenv.mkDerivation (rec { meta = { homepage = "http://haskell.org/ghc"; - description = "The Glasgow Haskell Compiler"; + description = "Glasgow Haskell Compiler"; maintainers = with lib.maintainers; [ guibou ] ++ lib.teams.haskell.members; diff --git a/pkgs/development/compilers/ghc/9.0.2.nix b/pkgs/development/compilers/ghc/9.0.2.nix index 175d1fe2450b7..9878218305045 100644 --- a/pkgs/development/compilers/ghc/9.0.2.nix +++ b/pkgs/development/compilers/ghc/9.0.2.nix @@ -1,393 +1,4 @@ -{ lib, stdenv, pkgsBuildTarget, pkgsHostTarget, targetPackages - -# build-tools -, bootPkgs -, autoconf, automake, coreutils, fetchurl, perl, python3, m4, sphinx, xattr -, autoSignDarwinBinariesHook -, bash -, fetchpatch - -, 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) -, # 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 if we are building on musl because it's a large task to keep - # all `sphinx` dependencies building in this environment. - !stdenv.buildPlatform.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) '' - BUILD_PROF_LIBS = NO - '' + - # -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 { +import ./common-make-native-bignum.nix { version = "9.0.2"; - pname = "${targetPrefix}ghc${variantSuffix}"; - - src = fetchurl { - url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz"; - sha256 = "140e42b96346322d1a39eb17602bcdc76e292028ad4a69286b230bab188a9197"; - }; - - enableParallelBuilding = true; - - outputs = [ "out" "doc" ]; - - patches = [ - # Fix docs build with sphinx >= 6.0 - # https://gitlab.haskell.org/ghc/ghc/-/issues/22766 - (fetchpatch { - name = "ghc-docs-sphinx-6.0.patch"; - url = "https://gitlab.haskell.org/ghc/ghc/-/commit/10e94a556b4f90769b7fd718b9790d58ae566600.patch"; - sha256 = "0kmhfamr16w8gch0lgln2912r8aryjky1hfcda3jkcwa5cdzgjdv"; - }) - # Fix docs build with Sphinx >= 7 https://gitlab.haskell.org/ghc/ghc/-/issues/24129 - ./docs-sphinx-7.patch - # fix hyperlinked haddock sources: https://github.com/haskell/haddock/pull/1482 - (fetchpatch { - url = "https://patch-diff.githubusercontent.com/raw/haskell/haddock/pull/1482.patch"; - sha256 = "sha256-8w8QUCsODaTvknCDGgTfFNZa8ZmvIKaKS+2ZJZ9foYk="; - extraPrefix = "utils/haddock/"; - stripLen = 1; - }) - - # Add flag that fixes C++ exception handling; opt-in. Merged in 9.4 and 9.2.2. - # https://gitlab.haskell.org/ghc/ghc/-/merge_requests/7423 - (fetchpatch { - name = "ghc-9.0.2-fcompact-unwind.patch"; - # Note that the test suite is not packaged. - url = "https://gitlab.haskell.org/ghc/ghc/-/commit/c6132c782d974a7701e7f6447bdcd2bf6db4299a.patch?merge_request_iid=7423"; - sha256 = "sha256-b4feGZIaKDj/UKjWTNY6/jH4s2iate0wAgMxG3rAbZI="; - }) - ] ++ 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.2-3.4-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" - '' + 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 - ''; - - # 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 - ] ++ lib.optionals stdenv.isDarwin [ - # TODO(@sternenseemann): backport addition of XATTR env var like - # https://gitlab.haskell.org/ghc/ghc/-/merge_requests/6447 - xattr - ]; - - # 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; -}) + sha256 = "140e42b96346322d1a39eb17602bcdc76e292028ad4a69286b230bab188a9197"; +} diff --git a/pkgs/development/compilers/ghc/9.10.1.nix b/pkgs/development/compilers/ghc/9.10.1.nix new file mode 100644 index 0000000000000..7955661f50e1d --- /dev/null +++ b/pkgs/development/compilers/ghc/9.10.1.nix @@ -0,0 +1,4 @@ +import ./common-hadrian.nix rec { + version = "9.10.1"; + sha256 = "bf386a302d4ee054791ffd51748900f15d71760fd199157922d120cc1f89e2f7"; +} diff --git a/pkgs/development/compilers/ghc/9.2.4-binary.nix b/pkgs/development/compilers/ghc/9.2.4-binary.nix index 77d70d2950707..920b63ce4eab0 100644 --- a/pkgs/development/compilers/ghc/9.2.4-binary.nix +++ b/pkgs/development/compilers/ghc/9.2.4-binary.nix @@ -422,7 +422,7 @@ stdenv.mkDerivation rec { meta = rec { homepage = "http://haskell.org/ghc"; - description = "The Glasgow Haskell Compiler"; + description = "Glasgow Haskell Compiler"; license = lib.licenses.bsd3; # HACK: since we can't encode the libc / abi in platforms, we need # to make the platform list dependent on the evaluation platform diff --git a/pkgs/development/compilers/ghc/9.2.5.nix b/pkgs/development/compilers/ghc/9.2.5.nix index 6c86e05ebbd4c..366b25441bbbd 100644 --- a/pkgs/development/compilers/ghc/9.2.5.nix +++ b/pkgs/development/compilers/ghc/9.2.5.nix @@ -1,389 +1,4 @@ -{ 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) -, # 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 if we are building on musl because it's a large task to keep - # all `sphinx` dependencies building in this environment. - !stdenv.buildPlatform.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) '' - BUILD_PROF_LIBS = NO - '' + - # -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 { +import ./common-make-native-bignum.nix { version = "9.2.5"; - pname = "${targetPrefix}ghc${variantSuffix}"; - - src = fetchurl { - url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz"; - sha256 = "0606797d1b38e2d88ee2243f38ec6b9a1aa93e9b578e95f0de9a9c0a4144021c"; - }; - - enableParallelBuilding = true; - - outputs = [ "out" "doc" ]; - - patches = [ - # Fix docs build with sphinx >= 6.0 - # https://gitlab.haskell.org/ghc/ghc/-/issues/22766 - (fetchpatch { - name = "ghc-docs-sphinx-6.0.patch"; - url = "https://gitlab.haskell.org/ghc/ghc/-/commit/10e94a556b4f90769b7fd718b9790d58ae566600.patch"; - sha256 = "0kmhfamr16w8gch0lgln2912r8aryjky1hfcda3jkcwa5cdzgjdv"; - }) - # Fix docs build with Sphinx >= 7 https://gitlab.haskell.org/ghc/ghc/-/issues/24129 - ./docs-sphinx-7.patch - # fix hyperlinked haddock sources: https://github.com/haskell/haddock/pull/1482 - (fetchpatch { - url = "https://patch-diff.githubusercontent.com/raw/haskell/haddock/pull/1482.patch"; - sha256 = "sha256-8w8QUCsODaTvknCDGgTfFNZa8ZmvIKaKS+2ZJZ9foYk="; - extraPrefix = "utils/haddock/"; - stripLen = 1; - }) - # 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="; - }) - ] ++ 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-at-least-3.6-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 - '' + 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 - ''; - - # 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; -}) + sha256 = "0606797d1b38e2d88ee2243f38ec6b9a1aa93e9b578e95f0de9a9c0a4144021c"; +} diff --git a/pkgs/development/compilers/ghc/9.2.6.nix b/pkgs/development/compilers/ghc/9.2.6.nix index 6ff58f087f8a9..4490cd6f5b311 100644 --- a/pkgs/development/compilers/ghc/9.2.6.nix +++ b/pkgs/development/compilers/ghc/9.2.6.nix @@ -1,389 +1,4 @@ -{ 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) -, # 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 if we are building on musl because it's a large task to keep - # all `sphinx` dependencies building in this environment. - !stdenv.buildPlatform.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) '' - BUILD_PROF_LIBS = NO - '' + - # -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 { +import ./common-make-native-bignum.nix { version = "9.2.6"; - pname = "${targetPrefix}ghc${variantSuffix}"; - - src = fetchurl { - url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz"; - sha256 = "7a54cf0398ad488b4ed219e15d1d1e64c0b6876c43a0564550dd11f0540d7305"; - }; - - enableParallelBuilding = true; - - outputs = [ "out" "doc" ]; - - patches = [ - # Fix docs build with sphinx >= 6.0 - # https://gitlab.haskell.org/ghc/ghc/-/issues/22766 - (fetchpatch { - name = "ghc-docs-sphinx-6.0.patch"; - url = "https://gitlab.haskell.org/ghc/ghc/-/commit/10e94a556b4f90769b7fd718b9790d58ae566600.patch"; - sha256 = "0kmhfamr16w8gch0lgln2912r8aryjky1hfcda3jkcwa5cdzgjdv"; - }) - # Fix docs build with Sphinx >= 7 https://gitlab.haskell.org/ghc/ghc/-/issues/24129 - ./docs-sphinx-7.patch - # fix hyperlinked haddock sources: https://github.com/haskell/haddock/pull/1482 - (fetchpatch { - url = "https://patch-diff.githubusercontent.com/raw/haskell/haddock/pull/1482.patch"; - sha256 = "sha256-8w8QUCsODaTvknCDGgTfFNZa8ZmvIKaKS+2ZJZ9foYk="; - extraPrefix = "utils/haddock/"; - stripLen = 1; - }) - # 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="; - }) - ] ++ 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-at-least-3.6-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 - '' + 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 - ''; - - # 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; -}) + sha256 = "7a54cf0398ad488b4ed219e15d1d1e64c0b6876c43a0564550dd11f0540d7305"; +} diff --git a/pkgs/development/compilers/ghc/9.2.7.nix b/pkgs/development/compilers/ghc/9.2.7.nix index f605bfda1981f..ad840dd0a32fe 100644 --- a/pkgs/development/compilers/ghc/9.2.7.nix +++ b/pkgs/development/compilers/ghc/9.2.7.nix @@ -1,389 +1,4 @@ -{ 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) -, # 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 if we are building on musl because it's a large task to keep - # all `sphinx` dependencies building in this environment. - !stdenv.buildPlatform.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) '' - BUILD_PROF_LIBS = NO - '' + - # -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 { +import ./common-make-native-bignum.nix { version = "9.2.7"; - pname = "${targetPrefix}ghc${variantSuffix}"; - - src = fetchurl { - url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz"; - sha256 = "a253567a17b734a4c0dd0ffa296d33c2a5b5a54a77df988806a2a1e1ca7e88b8"; - }; - - enableParallelBuilding = true; - - outputs = [ "out" "doc" ]; - - patches = [ - # Fix docs build with sphinx >= 6.0 - # https://gitlab.haskell.org/ghc/ghc/-/issues/22766 - (fetchpatch { - name = "ghc-docs-sphinx-6.0.patch"; - url = "https://gitlab.haskell.org/ghc/ghc/-/commit/10e94a556b4f90769b7fd718b9790d58ae566600.patch"; - sha256 = "0kmhfamr16w8gch0lgln2912r8aryjky1hfcda3jkcwa5cdzgjdv"; - }) - # Fix docs build with Sphinx >= 7 https://gitlab.haskell.org/ghc/ghc/-/issues/24129 - ./docs-sphinx-7.patch - # fix hyperlinked haddock sources: https://github.com/haskell/haddock/pull/1482 - (fetchpatch { - url = "https://patch-diff.githubusercontent.com/raw/haskell/haddock/pull/1482.patch"; - sha256 = "sha256-8w8QUCsODaTvknCDGgTfFNZa8ZmvIKaKS+2ZJZ9foYk="; - extraPrefix = "utils/haddock/"; - stripLen = 1; - }) - # 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="; - }) - ] ++ 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-at-least-3.6-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 - '' + 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 - ''; - - # 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; -}) + sha256 = "a253567a17b734a4c0dd0ffa296d33c2a5b5a54a77df988806a2a1e1ca7e88b8"; +} diff --git a/pkgs/development/compilers/ghc/9.2.8.nix b/pkgs/development/compilers/ghc/9.2.8.nix index 72cfdd242f424..dc2bd89b31747 100644 --- a/pkgs/development/compilers/ghc/9.2.8.nix +++ b/pkgs/development/compilers/ghc/9.2.8.nix @@ -1,389 +1,4 @@ -{ 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) -, # 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 if we are building on musl because it's a large task to keep - # all `sphinx` dependencies building in this environment. - !stdenv.buildPlatform.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) '' - BUILD_PROF_LIBS = NO - '' + - # -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 { +import ./common-make-native-bignum.nix { version = "9.2.8"; - pname = "${targetPrefix}ghc${variantSuffix}"; - - src = fetchurl { - url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz"; - sha256 = "sha256-XxPReGv0/RL0tF+qN6vttbs/NtXlj32lMH6L/oilZ6E="; - }; - - enableParallelBuilding = true; - - outputs = [ "out" "doc" ]; - - patches = [ - # Fix docs build with sphinx >= 6.0 - # https://gitlab.haskell.org/ghc/ghc/-/issues/22766 - (fetchpatch { - name = "ghc-docs-sphinx-6.0.patch"; - url = "https://gitlab.haskell.org/ghc/ghc/-/commit/10e94a556b4f90769b7fd718b9790d58ae566600.patch"; - sha256 = "0kmhfamr16w8gch0lgln2912r8aryjky1hfcda3jkcwa5cdzgjdv"; - }) - # Fix docs build with Sphinx >= 7 https://gitlab.haskell.org/ghc/ghc/-/issues/24129 - ./docs-sphinx-7.patch - # fix hyperlinked haddock sources: https://github.com/haskell/haddock/pull/1482 - (fetchpatch { - url = "https://patch-diff.githubusercontent.com/raw/haskell/haddock/pull/1482.patch"; - sha256 = "sha256-8w8QUCsODaTvknCDGgTfFNZa8ZmvIKaKS+2ZJZ9foYk="; - extraPrefix = "utils/haddock/"; - stripLen = 1; - }) - # 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="; - }) - ] ++ 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-at-least-3.6-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 - '' + 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 - ''; - - # 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; -}) + sha256 = "sha256-XxPReGv0/RL0tF+qN6vttbs/NtXlj32lMH6L/oilZ6E="; +} diff --git a/pkgs/development/compilers/ghc/9.4.5.nix b/pkgs/development/compilers/ghc/9.4.5.nix index 298af6596e713..cffbfef1524eb 100644 --- a/pkgs/development/compilers/ghc/9.4.5.nix +++ b/pkgs/development/compilers/ghc/9.4.5.nix @@ -1,396 +1,6 @@ # 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) -, # 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 if we are building on musl because it's a large task to keep - # all `sphinx` dependencies building in this environment. - !stdenv.buildPlatform.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) '' - BUILD_PROF_LIBS = NO - '' + - # -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 { +import ./common-make-native-bignum.nix { version = "9.4.5"; - pname = "${targetPrefix}ghc${variantSuffix}"; - - src = fetchurl { - url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz"; - sha256 = "6256cf9caf6d6dc7b611dcfbb247df2d528e85aa39d22a698e870e5a590e8601"; - }; - - 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="; - }) - - # Fix docs build with sphinx >= 6.0 - # https://gitlab.haskell.org/ghc/ghc/-/issues/22766 - (fetchpatch { - name = "ghc-docs-sphinx-6.0.patch"; - url = "https://gitlab.haskell.org/ghc/ghc/-/commit/10e94a556b4f90769b7fd718b9790d58ae566600.patch"; - sha256 = "0kmhfamr16w8gch0lgln2912r8aryjky1hfcda3jkcwa5cdzgjdv"; - }) - - # Fix docs build with Sphinx >= 7 https://gitlab.haskell.org/ghc/ghc/-/issues/24129 - ./docs-sphinx-7.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-at-least-3.6-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; -}) + sha256 = "6256cf9caf6d6dc7b611dcfbb247df2d528e85aa39d22a698e870e5a590e8601"; +} diff --git a/pkgs/development/compilers/ghc/9.4.6.nix b/pkgs/development/compilers/ghc/9.4.6.nix index 310787e477b24..0d37ba97fdb60 100644 --- a/pkgs/development/compilers/ghc/9.4.6.nix +++ b/pkgs/development/compilers/ghc/9.4.6.nix @@ -1,392 +1,6 @@ # 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) -, # 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 if we are building on musl because it's a large task to keep - # all `sphinx` dependencies building in this environment. - !stdenv.buildPlatform.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) '' - BUILD_PROF_LIBS = NO - '' + - # -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 { +import ./common-make-native-bignum.nix { 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="; - }) - - # Fix docs build with Sphinx >= 7 https://gitlab.haskell.org/ghc/ghc/-/issues/24129 - ./docs-sphinx-7.patch - - # 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-at-least-3.6-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; -}) + sha256 = "1b705cf52692f9d4d6707cdf8e761590f5f56ec8ea6a65e36610db392d3d24b9"; +} diff --git a/pkgs/development/compilers/ghc/9.4.7.nix b/pkgs/development/compilers/ghc/9.4.7.nix index e87f8fc3a9073..2be8c9f092fb3 100644 --- a/pkgs/development/compilers/ghc/9.4.7.nix +++ b/pkgs/development/compilers/ghc/9.4.7.nix @@ -1,388 +1,6 @@ # 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) -, # 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 if we are building on musl because it's a large task to keep - # all `sphinx` dependencies building in this environment. - !stdenv.buildPlatform.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) '' - BUILD_PROF_LIBS = NO - '' + - # -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 { +import ./common-make-native-bignum.nix { version = "9.4.7"; - pname = "${targetPrefix}ghc${variantSuffix}"; - - src = fetchurl { - url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz"; - sha256 = "06775a52b4d13ac09edc6dabc299fd11e59d8886bbcae450af367baee2684c8f"; - }; - - 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="; - }) - - # Fix docs build with Sphinx >= 7 https://gitlab.haskell.org/ghc/ghc/-/issues/24129 - ./docs-sphinx-7.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-at-least-3.6-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; -}) + sha256 = "06775a52b4d13ac09edc6dabc299fd11e59d8886bbcae450af367baee2684c8f"; +} diff --git a/pkgs/development/compilers/ghc/9.4.8.nix b/pkgs/development/compilers/ghc/9.4.8.nix index 5ac2b60b1cd75..a98d7404b7acf 100644 --- a/pkgs/development/compilers/ghc/9.4.8.nix +++ b/pkgs/development/compilers/ghc/9.4.8.nix @@ -1,388 +1,6 @@ # 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) -, # 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 if we are building on musl because it's a large task to keep - # all `sphinx` dependencies building in this environment. - !stdenv.buildPlatform.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) '' - BUILD_PROF_LIBS = NO - '' + - # -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 { +import ./common-make-native-bignum.nix { version = "9.4.8"; - pname = "${targetPrefix}ghc${variantSuffix}"; - - src = fetchurl { - url = "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz"; - sha256 = "0bf407eb67fe3e3c24b0f4c8dea8cb63e07f63ca0f76cf2058565143507ab85e"; - }; - - 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="; - }) - - # Fix docs build with Sphinx >= 7 https://gitlab.haskell.org/ghc/ghc/-/issues/24129 - ./docs-sphinx-7.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-at-least-3.6-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; -}) + sha256 = "0bf407eb67fe3e3c24b0f4c8dea8cb63e07f63ca0f76cf2058565143507ab85e"; +} diff --git a/pkgs/development/compilers/ghc/9.6.3-binary.nix b/pkgs/development/compilers/ghc/9.6.3-binary.nix index b8ad3c1192eb4..65ed655e57974 100644 --- a/pkgs/development/compilers/ghc/9.6.3-binary.nix +++ b/pkgs/development/compilers/ghc/9.6.3-binary.nix @@ -390,7 +390,7 @@ stdenv.mkDerivation rec { meta = rec { homepage = "http://haskell.org/ghc"; - description = "The Glasgow Haskell Compiler"; + description = "Glasgow Haskell Compiler"; license = lib.licenses.bsd3; # HACK: since we can't encode the libc / abi in platforms, we need # to make the platform list dependent on the evaluation platform diff --git a/pkgs/development/compilers/ghc/Cabal-3.12-paths-fix-cycle-aarch64-darwin.patch b/pkgs/development/compilers/ghc/Cabal-3.12-paths-fix-cycle-aarch64-darwin.patch new file mode 100644 index 0000000000000..f094790088c2f --- /dev/null +++ b/pkgs/development/compilers/ghc/Cabal-3.12-paths-fix-cycle-aarch64-darwin.patch @@ -0,0 +1,596 @@ +This patch is based on https://github.com/sternenseemann/cabal/compare/Cabal-v3.12.0.0..e836ef53c1f80bf99a70f9c4ee5976e9f3830215 +and has been postprocessed with `filterdiff --strip=1 --addoldprefix=a/libraries/Cabal/ --addnewprefix=b/libraries/Cabal/`. + +Reasoning and explanation of the patch can be found in the comment in the diff for PathsModule.hs below. + +diffCabal/src/Distribution/Simple/Build/PathsModule.hs b/Cabal/src/Distribution/Simple/Build/PathsModule.hs +index 892e5bd38..391f5b130 100644 +--- a/libraries/Cabal/Cabal/src/Distribution/Simple/Build/PathsModule.hs ++++ b/libraries/Cabal/Cabal/src/Distribution/Simple/Build/PathsModule.hs +@@ -51,6 +51,7 @@ generatePathsModule pkg_descr lbi clbi = + , Z.zIsWindows = isWindows + , Z.zIsI386 = buildArch == I386 + , Z.zIsX8664 = buildArch == X86_64 ++ , Z.zOr = (||) + , Z.zNot = not + , Z.zManglePkgName = showPkgName + , Z.zPrefix = show flat_prefix +@@ -60,8 +61,110 @@ generatePathsModule pkg_descr lbi clbi = + , Z.zDatadir = zDatadir + , Z.zLibexecdir = zLibexecdir + , Z.zSysconfdir = zSysconfdir ++ , -- Sadly we can't be cleverer about this – we can't have literals in the template ++ Z.zShouldEmitDataDir = shouldEmit "DataDir" ++ , Z.zShouldEmitLibDir = shouldEmit "LibDir" ++ , Z.zShouldEmitDynLibDir = shouldEmit "DynLibDir" ++ , Z.zShouldEmitLibexecDir = shouldEmit "LibexecDir" ++ , Z.zShouldEmitSysconfDir = shouldEmit "SysconfDir" ++ , Z.zWarning = zWarning ++ , Z.zShouldEmitWarning = zShouldEmitWarning + } + where ++ -- GHC's NCG backend for aarch64-darwin does not support link-time dead code ++ -- elimination to the extent that NCG does for other targets. Consequently, ++ -- we struggle with unnecessarily retained store path references due to the ++ -- use of `Paths_*` modules – even if `getLibDir` is not used, it'll end up ++ -- in the final library or executables we build. ++ -- ++ -- When using a different output for the executables and library, this ++ -- becomes more sinister: The library will contain a reference to the bin ++ -- output and itself due to `getLibDir` and `getBinDir`, but the executables ++ -- will do so, too. Either due to linking dynamically or because the library ++ -- is linked statically into the executable and retains those references. ++ -- Since Nix disallows cyclical references between two outputs, it becomes ++ -- impossible to use the `Paths_*` module and a separate `bin` output for ++ -- aarch64-darwin. ++ -- ++ -- The solution we have resorted to for now, is to trim the `Paths_*` module ++ -- dynamically depending on what references *could* be used without causing ++ -- a cyclical reference. That has the effect that any code that would not ++ -- cause a cyclical reference with dead code elimination will compile and ++ -- work for aarch64-darwin. If the code would use a `get*Dir` function that ++ -- has been omitted, this would indicate that the code would have caused a ++ -- cyclical reference anyways. ++ -- ++ -- The logic for this makes some pretty big assumptions about installation ++ -- prefixes that probably only hold fully in nixpkgs with ++ -- `haskellPackages.mkDerivation`. Simple uses outside nixpkgs that have ++ -- everything below the same prefix should continue to work as expected, ++ -- though. ++ -- ++ -- We assume the following: ++ -- ++ -- - flat_prefix is `$out`. ++ -- - flat_libdir etc. are always below `$out`. ++ -- ++ -- Since in the normal case due to static linking `$bin` and `$out` will ++ -- have the same references in libraries/executables, we need to either ++ -- prevent usage of `getBinDir` or `getLibDir` to break the cycle in case ++ -- `flat_bindir` is not below `$out`. We have decided to always allow usage ++ -- of `getBinDir`, so `getLibDir` gets dropped if a separate `bin` output is ++ -- used. This has the simple reason that `$out` which contains `flat_libdir` ++ -- tends to be quite big – we would like to have a `bin` output that doesn't ++ -- require keeping that around. ++ pathEmittable :: FilePath -> Bool ++ pathEmittable p ++ -- If the executable installation target is below `$out` the reference ++ -- cycle is within a single output (since libs are installed to `$out`) ++ -- and thus unproblematic. We can use any and all `get*Dir` functions. ++ | flat_prefix `isPrefixOf` flat_bindir = True ++ -- Otherwise, we need to disallow all `get*Dir` functions that would cause ++ -- a reference to `$out` which contains the libraries that would in turn ++ -- reference `$bin`. This always include `flat_libdir` and friends, but ++ -- can also include `flat_datadir` if no separate output for data files is ++ -- used. ++ | otherwise = not (flat_prefix `isPrefixOf` p) ++ ++ -- This list maps the "name" of the directory to whether we want to include ++ -- it in the `Paths_*` module or not. `shouldEmit` performs a lookup in this. ++ dirs :: [(String, Bool)] ++ dirs = ++ map ++ (\(name, path) -> (name, pathEmittable path)) ++ [ ("LibDir", flat_libdir) ++ , ("DynLibDir", flat_dynlibdir) ++ , ("DataDir", flat_datadir) ++ , ("LibexecDir", flat_libexecdir) ++ , ("SysconfDir", flat_sysconfdir) ++ ] ++ ++ shouldEmit :: String -> Bool ++ shouldEmit name = ++ case lookup name dirs of ++ Just b -> b ++ Nothing -> error "panic! BUG in Cabal Paths_ patch for aarch64-darwin, report this at https://github.com/nixos/nixpkgs/issues" ++ ++ -- This is a comma separated list of all functions that have been emitted. ++ -- This is included in a GHC warning which will be attached to the `Paths_*` ++ -- module in case we are dropping any `get*Dir` functions that would ++ -- normally exist. ++ -- ++ -- TODO: getDataFileName is not accounted for at the moment. ++ omittedFunctions :: String ++ omittedFunctions = ++ intercalate ", " $ ++ map (("get" ++) . fst) $ ++ filter (not . snd) dirs ++ ++ zWarning :: String ++ zWarning = ++ show $ ++ "The following functions have been omitted by a nixpkgs-specific patch to Cabal: " ++ ++ omittedFunctions ++ zShouldEmitWarning :: Bool ++ zShouldEmitWarning = any (not . snd) dirs ++ + supports_cpp = supports_language_pragma + supports_rebindable_syntax = ghc_newer_than (mkVersion [7, 0, 1]) + supports_language_pragma = ghc_newer_than (mkVersion [6, 6, 1]) +diffCabal/src/Distribution/Simple/Build/PathsModule/Z.hs b/Cabal/src/Distribution/Simple/Build/PathsModule/Z.hs +index 25c924720..a8278675e 100644 +--- a/libraries/Cabal/Cabal/src/Distribution/Simple/Build/PathsModule/Z.hs ++++ b/libraries/Cabal/Cabal/src/Distribution/Simple/Build/PathsModule/Z.hs +@@ -19,6 +19,14 @@ data Z + zDatadir :: FilePath, + zLibexecdir :: FilePath, + zSysconfdir :: FilePath, ++ zShouldEmitLibDir :: Bool, ++ zShouldEmitDynLibDir :: Bool, ++ zShouldEmitLibexecDir :: Bool, ++ zShouldEmitDataDir :: Bool, ++ zShouldEmitSysconfDir :: Bool, ++ zShouldEmitWarning :: Bool, ++ zWarning :: String, ++ zOr :: (Bool -> Bool -> Bool), + zNot :: (Bool -> Bool), + zManglePkgName :: (PackageName -> String)} + deriving Generic +@@ -54,10 +62,51 @@ render z_root = execWriter $ do + tell "{-# OPTIONS_GHC -w #-}\n" + tell "module Paths_" + tell (zManglePkgName z_root (zPackageName z_root)) +- tell " (\n" ++ tell "\n" ++ tell " " ++ if (zShouldEmitWarning z_root) ++ then do ++ tell "{-# WARNING " ++ tell (zWarning z_root) ++ tell " #-}" ++ return () ++ else do ++ return () ++ tell "\n" ++ tell " (\n" + tell " version,\n" +- tell " getBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir,\n" +- tell " getDataFileName, getSysconfDir\n" ++ tell " getBinDir,\n" ++ if (zOr z_root (zNot z_root (zAbsolute z_root)) (zShouldEmitLibDir z_root)) ++ then do ++ tell " getLibDir,\n" ++ return () ++ else do ++ return () ++ if (zOr z_root (zNot z_root (zAbsolute z_root)) (zShouldEmitDynLibDir z_root)) ++ then do ++ tell " getDynLibDir,\n" ++ return () ++ else do ++ return () ++ if (zOr z_root (zNot z_root (zAbsolute z_root)) (zShouldEmitLibexecDir z_root)) ++ then do ++ tell " getLibexecDir,\n" ++ return () ++ else do ++ return () ++ if (zOr z_root (zNot z_root (zAbsolute z_root)) (zShouldEmitDataDir z_root)) ++ then do ++ tell " getDataFileName,\n" ++ tell " getDataDir,\n" ++ return () ++ else do ++ return () ++ if (zOr z_root (zNot z_root (zAbsolute z_root)) (zShouldEmitSysconfDir z_root)) ++ then do ++ tell " getSysconfDir\n" ++ return () ++ else do ++ return () + tell " ) where\n" + tell "\n" + if (zNot z_root (zAbsolute z_root)) +@@ -106,12 +155,15 @@ render z_root = execWriter $ do + tell (zVersionDigits z_root) + tell " []\n" + tell "\n" +- tell "getDataFileName :: FilePath -> IO FilePath\n" +- tell "getDataFileName name = do\n" +- tell " dir <- getDataDir\n" +- tell " return (dir `joinFileName` name)\n" +- tell "\n" +- tell "getBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir, getSysconfDir :: IO FilePath\n" ++ if (zOr z_root (zNot z_root (zAbsolute z_root)) (zShouldEmitDataDir z_root)) ++ then do ++ tell "getDataFileName :: FilePath -> IO FilePath\n" ++ tell "getDataFileName name = do\n" ++ tell " dir <- getDataDir\n" ++ tell " return (dir `joinFileName` name)\n" ++ return () ++ else do ++ return () + tell "\n" + let + z_var0_function_defs = do +@@ -139,6 +191,7 @@ render z_root = execWriter $ do + tell "\n" + if (zRelocatable z_root) + then do ++ tell "\n" + tell "\n" + tell "getPrefixDirReloc :: FilePath -> IO FilePath\n" + tell "getPrefixDirReloc dirRel = do\n" +@@ -148,31 +201,37 @@ render z_root = execWriter $ do + tell (zBindir z_root) + tell ") `joinFileName` dirRel)\n" + tell "\n" ++ tell "getBinDir :: IO FilePath\n" + tell "getBinDir = catchIO (getEnv \"" + tell (zManglePkgName z_root (zPackageName z_root)) + tell "_bindir\") (\\_ -> getPrefixDirReloc $ " + tell (zBindir z_root) + tell ")\n" ++ tell "getLibDir :: IO FilePath\n" + tell "getLibDir = catchIO (getEnv \"" + tell (zManglePkgName z_root (zPackageName z_root)) + tell "_libdir\") (\\_ -> getPrefixDirReloc $ " + tell (zLibdir z_root) + tell ")\n" ++ tell "getDynLibDir :: IO FilePath\n" + tell "getDynLibDir = catchIO (getEnv \"" + tell (zManglePkgName z_root (zPackageName z_root)) + tell "_dynlibdir\") (\\_ -> getPrefixDirReloc $ " + tell (zDynlibdir z_root) + tell ")\n" ++ tell "getDataDir :: IO FilePath\n" + tell "getDataDir = catchIO (getEnv \"" + tell (zManglePkgName z_root (zPackageName z_root)) + tell "_datadir\") (\\_ -> getPrefixDirReloc $ " + tell (zDatadir z_root) + tell ")\n" ++ tell "getLibexecDir :: IO FilePath\n" + tell "getLibexecDir = catchIO (getEnv \"" + tell (zManglePkgName z_root (zPackageName z_root)) + tell "_libexecdir\") (\\_ -> getPrefixDirReloc $ " + tell (zLibexecdir z_root) + tell ")\n" ++ tell "getSysconfDir :: IO FilePath\n" + tell "getSysconfDir = catchIO (getEnv \"" + tell (zManglePkgName z_root (zPackageName z_root)) + tell "_sysconfdir\") (\\_ -> getPrefixDirReloc $ " +@@ -186,72 +245,119 @@ render z_root = execWriter $ do + if (zAbsolute z_root) + then do + tell "\n" +- tell "bindir, libdir, dynlibdir, datadir, libexecdir, sysconfdir :: FilePath\n" ++ tell "bindir :: FilePath\n" + tell "bindir = " + tell (zBindir z_root) + tell "\n" +- tell "libdir = " +- tell (zLibdir z_root) +- tell "\n" +- tell "dynlibdir = " +- tell (zDynlibdir z_root) ++ tell "getBinDir :: IO FilePath\n" ++ tell "getBinDir = catchIO (getEnv \"" ++ tell (zManglePkgName z_root (zPackageName z_root)) ++ tell "_bindir\") (\\_ -> return bindir)\n" + tell "\n" +- tell "datadir = " +- tell (zDatadir z_root) ++ if (zShouldEmitLibDir z_root) ++ then do ++ tell "libdir :: FilePath\n" ++ tell "libdir = " ++ tell (zLibdir z_root) ++ tell "\n" ++ tell "getLibDir :: IO FilePath\n" ++ tell "getLibDir = catchIO (getEnv \"" ++ tell (zManglePkgName z_root (zPackageName z_root)) ++ tell "_libdir\") (\\_ -> return libdir)\n" ++ return () ++ else do ++ return () + tell "\n" +- tell "libexecdir = " +- tell (zLibexecdir z_root) ++ if (zShouldEmitDynLibDir z_root) ++ then do ++ tell "dynlibdir :: FilePath\n" ++ tell "dynlibdir = " ++ tell (zDynlibdir z_root) ++ tell "\n" ++ tell "getDynLibDir :: IO FilePath\n" ++ tell "getDynLibDir = catchIO (getEnv \"" ++ tell (zManglePkgName z_root (zPackageName z_root)) ++ tell "_dynlibdir\") (\\_ -> return dynlibdir)\n" ++ return () ++ else do ++ return () + tell "\n" +- tell "sysconfdir = " +- tell (zSysconfdir z_root) ++ if (zShouldEmitDataDir z_root) ++ then do ++ tell "datadir :: FilePath\n" ++ tell "datadir = " ++ tell (zDatadir z_root) ++ tell "\n" ++ tell "getDataDir :: IO FilePath\n" ++ tell "getDataDir = catchIO (getEnv \"" ++ tell (zManglePkgName z_root (zPackageName z_root)) ++ tell "_datadir\") (\\_ -> return datadir)\n" ++ return () ++ else do ++ return () + tell "\n" ++ if (zShouldEmitLibexecDir z_root) ++ then do ++ tell "libexecdir :: FilePath\n" ++ tell "libexecdir = " ++ tell (zLibexecdir z_root) ++ tell "\n" ++ tell "getLibexecDir :: IO FilePath\n" ++ tell "getLibexecDir = catchIO (getEnv \"" ++ tell (zManglePkgName z_root (zPackageName z_root)) ++ tell "_libexecdir\") (\\_ -> return libexecdir)\n" ++ return () ++ else do ++ return () + tell "\n" +- tell "getBinDir = catchIO (getEnv \"" +- tell (zManglePkgName z_root (zPackageName z_root)) +- tell "_bindir\") (\\_ -> return bindir)\n" +- tell "getLibDir = catchIO (getEnv \"" +- tell (zManglePkgName z_root (zPackageName z_root)) +- tell "_libdir\") (\\_ -> return libdir)\n" +- tell "getDynLibDir = catchIO (getEnv \"" +- tell (zManglePkgName z_root (zPackageName z_root)) +- tell "_dynlibdir\") (\\_ -> return dynlibdir)\n" +- tell "getDataDir = catchIO (getEnv \"" +- tell (zManglePkgName z_root (zPackageName z_root)) +- tell "_datadir\") (\\_ -> return datadir)\n" +- tell "getLibexecDir = catchIO (getEnv \"" +- tell (zManglePkgName z_root (zPackageName z_root)) +- tell "_libexecdir\") (\\_ -> return libexecdir)\n" +- tell "getSysconfDir = catchIO (getEnv \"" +- tell (zManglePkgName z_root (zPackageName z_root)) +- tell "_sysconfdir\") (\\_ -> return sysconfdir)\n" ++ if (zShouldEmitSysconfDir z_root) ++ then do ++ tell "sysconfdir :: FilePath\n" ++ tell "sysconfdir = " ++ tell (zSysconfdir z_root) ++ tell "\n" ++ tell "getSysconfDir :: IO FilePath\n" ++ tell "getSysconfDir = catchIO (getEnv \"" ++ tell (zManglePkgName z_root (zPackageName z_root)) ++ tell "_sysconfdir\") (\\_ -> return sysconfdir)\n" ++ return () ++ else do ++ return () + tell "\n" + return () + else do + if (zIsWindows z_root) + then do ++ tell "\n" + tell "\n" + tell "prefix :: FilePath\n" + tell "prefix = " + tell (zPrefix z_root) + tell "\n" + tell "\n" ++ tell "getBinDir :: IO FilePath\n" + tell "getBinDir = getPrefixDirRel $ " + tell (zBindir z_root) + tell "\n" ++ tell "getLibDir :: IO FilePath\n" + tell "getLibDir = " + tell (zLibdir z_root) + tell "\n" ++ tell "getDynLibDir :: IO FilePath\n" + tell "getDynLibDir = " + tell (zDynlibdir z_root) + tell "\n" ++ tell "getDataDir :: IO FilePath\n" + tell "getDataDir = catchIO (getEnv \"" + tell (zManglePkgName z_root (zPackageName z_root)) + tell "_datadir\") (\\_ -> " + tell (zDatadir z_root) + tell ")\n" ++ tell "getLibexecDir :: IO FilePath\n" + tell "getLibexecDir = " + tell (zLibexecdir z_root) + tell "\n" ++ tell "getSysconfDir :: IO FilePath\n" + tell "getSysconfDir = " + tell (zSysconfdir z_root) + tell "\n" +diffcabal-dev-scripts/src/GenPathsModule.hs b/cabal-dev-scripts/src/GenPathsModule.hs +index 46ef779e2..e9f5e099f 100644 +--- a/libraries/Cabal/cabal-dev-scripts/src/GenPathsModule.hs ++++ b/libraries/Cabal/cabal-dev-scripts/src/GenPathsModule.hs +@@ -41,6 +41,16 @@ $(capture "decls" [d| + , zLibexecdir :: FilePath + , zSysconfdir :: FilePath + ++ , zShouldEmitLibDir :: Bool ++ , zShouldEmitDynLibDir :: Bool ++ , zShouldEmitLibexecDir :: Bool ++ , zShouldEmitDataDir :: Bool ++ , zShouldEmitSysconfDir :: Bool ++ ++ , zShouldEmitWarning :: Bool ++ , zWarning :: String ++ ++ , zOr :: Bool -> Bool -> Bool + , zNot :: Bool -> Bool + , zManglePkgName :: PackageName -> String + } +difftemplates/Paths_pkg.template.hs b/templates/Paths_pkg.template.hs +index 8e1e03d27..cc5c86701 100644 +--- a/libraries/Cabal/templates/Paths_pkg.template.hs ++++ b/libraries/Cabal/templates/Paths_pkg.template.hs +@@ -14,10 +14,31 @@ + {% endif %} + {-# OPTIONS_GHC -fno-warn-missing-import-lists #-} + {-# OPTIONS_GHC -w #-} +-module Paths_{{ manglePkgName packageName }} ( ++module Paths_{{ manglePkgName packageName }} ++ {% if shouldEmitWarning %}{-# WARNING {{ warning }} #-}{% endif %} ++ ( + version, +- getBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir, +- getDataFileName, getSysconfDir ++ getBinDir, ++{# We only care about the absolute case for our emit logic, since only in this ++ case references are incurred. We are not going to hit isWindows and relocatable ++ has no absolute references to begin with. ++#} ++{% if or (not absolute) shouldEmitLibDir %} ++ getLibDir, ++{% endif %} ++{% if or (not absolute) shouldEmitDynLibDir %} ++ getDynLibDir, ++{% endif %} ++{% if or (not absolute) shouldEmitLibexecDir %} ++ getLibexecDir, ++{% endif %} ++{% if or (not absolute) shouldEmitDataDir %} ++ getDataFileName, ++ getDataDir, ++{% endif %} ++{% if or (not absolute) shouldEmitSysconfDir %} ++ getSysconfDir ++{% endif %} + ) where + + {% if not absolute %} +@@ -56,12 +77,12 @@ catchIO = Exception.catch + version :: Version + version = Version {{ versionDigits }} [] + ++{% if or (not absolute) shouldEmitDataDir %} + getDataFileName :: FilePath -> IO FilePath + getDataFileName name = do + dir <- getDataDir + return (dir `joinFileName` name) +- +-getBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir, getSysconfDir :: IO FilePath ++{% endif %} + + {% defblock function_defs %} + minusFileName :: FilePath -> String -> FilePath +@@ -90,48 +111,93 @@ splitFileName p = (reverse (path2++drive), reverse fname) + + {% if relocatable %} + ++{# Relocatable can not incur any absolute references, so we can ignore it. ++ Additionally, --enable-relocatable is virtually useless in Nix builds ++#} ++ + getPrefixDirReloc :: FilePath -> IO FilePath + getPrefixDirReloc dirRel = do + exePath <- getExecutablePath + let (dir,_) = splitFileName exePath + return ((dir `minusFileName` {{ bindir }}) `joinFileName` dirRel) + ++getBinDir :: IO FilePath + getBinDir = catchIO (getEnv "{{ manglePkgName packageName }}_bindir") (\_ -> getPrefixDirReloc $ {{ bindir }}) ++getLibDir :: IO FilePath + getLibDir = catchIO (getEnv "{{ manglePkgName packageName }}_libdir") (\_ -> getPrefixDirReloc $ {{ libdir }}) ++getDynLibDir :: IO FilePath + getDynLibDir = catchIO (getEnv "{{ manglePkgName packageName }}_dynlibdir") (\_ -> getPrefixDirReloc $ {{ dynlibdir }}) ++getDataDir :: IO FilePath + getDataDir = catchIO (getEnv "{{ manglePkgName packageName }}_datadir") (\_ -> getPrefixDirReloc $ {{ datadir }}) ++getLibexecDir :: IO FilePath + getLibexecDir = catchIO (getEnv "{{ manglePkgName packageName }}_libexecdir") (\_ -> getPrefixDirReloc $ {{ libexecdir }}) ++getSysconfDir :: IO FilePath + getSysconfDir = catchIO (getEnv "{{ manglePkgName packageName }}_sysconfdir") (\_ -> getPrefixDirReloc $ {{ sysconfdir }}) + + {% useblock function_defs %} + + {% elif absolute %} + +-bindir, libdir, dynlibdir, datadir, libexecdir, sysconfdir :: FilePath ++bindir :: FilePath + bindir = {{ bindir }} +-libdir = {{ libdir }} +-dynlibdir = {{ dynlibdir }} +-datadir = {{ datadir }} +-libexecdir = {{ libexecdir }} +-sysconfdir = {{ sysconfdir }} +- ++getBinDir :: IO FilePath + getBinDir = catchIO (getEnv "{{ manglePkgName packageName }}_bindir") (\_ -> return bindir) ++ ++{% if shouldEmitLibDir %} ++libdir :: FilePath ++libdir = {{ libdir }} ++getLibDir :: IO FilePath + getLibDir = catchIO (getEnv "{{ manglePkgName packageName }}_libdir") (\_ -> return libdir) ++{% endif %} ++ ++{% if shouldEmitDynLibDir %} ++dynlibdir :: FilePath ++dynlibdir = {{ dynlibdir }} ++getDynLibDir :: IO FilePath + getDynLibDir = catchIO (getEnv "{{ manglePkgName packageName }}_dynlibdir") (\_ -> return dynlibdir) ++{% endif %} ++ ++{% if shouldEmitDataDir %} ++datadir :: FilePath ++datadir = {{ datadir }} ++getDataDir :: IO FilePath + getDataDir = catchIO (getEnv "{{ manglePkgName packageName }}_datadir") (\_ -> return datadir) ++{% endif %} ++ ++{% if shouldEmitLibexecDir %} ++libexecdir :: FilePath ++libexecdir = {{ libexecdir }} ++getLibexecDir :: IO FilePath + getLibexecDir = catchIO (getEnv "{{ manglePkgName packageName }}_libexecdir") (\_ -> return libexecdir) ++{% endif %} ++ ++{% if shouldEmitSysconfDir %} ++sysconfdir :: FilePath ++sysconfdir = {{ sysconfdir }} ++getSysconfDir :: IO FilePath + getSysconfDir = catchIO (getEnv "{{ manglePkgName packageName }}_sysconfdir") (\_ -> return sysconfdir) ++{% endif %} + + {% elif isWindows %} + ++{# We are only trying to fix the problem for aarch64-darwin with this patch, ++ so let's ignore Windows which we can reach via pkgsCross, for example. ++#} ++ + prefix :: FilePath + prefix = {{ prefix }} + ++getBinDir :: IO FilePath + getBinDir = getPrefixDirRel $ {{ bindir }} ++getLibDir :: IO FilePath + getLibDir = {{ libdir }} ++getDynLibDir :: IO FilePath + getDynLibDir = {{ dynlibdir }} ++getDataDir :: IO FilePath + getDataDir = catchIO (getEnv "{{ manglePkgName packageName }}_datadir") (\_ -> {{ datadir }}) ++getLibexecDir :: IO FilePath + getLibexecDir = {{ libexecdir }} ++getSysconfDir :: IO FilePath + getSysconfDir = {{ sysconfdir }} + + getPrefixDirRel :: FilePath -> IO FilePath diff --git a/pkgs/development/compilers/ghc/common-hadrian.nix b/pkgs/development/compilers/ghc/common-hadrian.nix index 522bcb10222ba..b5fef30332f7f 100644 --- a/pkgs/development/compilers/ghc/common-hadrian.nix +++ b/pkgs/development/compilers/ghc/common-hadrian.nix @@ -13,13 +13,13 @@ , pkgsBuildTarget , pkgsHostTarget , targetPackages +, fetchpatch # build-tools , bootPkgs , autoconf , automake , coreutils -, fetchpatch , fetchurl , fetchgit , perl @@ -29,6 +29,7 @@ , xattr , autoSignDarwinBinariesHook , bash +, srcOnly , libiconv ? null, ncurses , glibcLocales ? null @@ -145,25 +146,69 @@ return $ verbosity >= Verbose '' -, ghcSrc ? (if rev != null then fetchgit else fetchurl) ({ - inherit url sha256; - } // lib.optionalAttrs (rev != null) { - inherit rev; - } // lib.optionalAttrs (postFetch != null) { - inherit postFetch; - }) +, ghcSrc ? + srcOnly { + name = "ghc-${version}"; # -source appended by srcOnly + src = + (if rev != null then fetchgit else fetchurl) ({ + inherit url sha256; + } // lib.optionalAttrs (rev != null) { + inherit rev; + } // lib.optionalAttrs (postFetch != null) { + inherit postFetch; + }); + + patches = + let + # Disable haddock generating pretty source listings to stay under 3GB on aarch64-linux + enableHyperlinkedSource = + lib.versionAtLeast version "9.8" || + !(stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isLinux); + in + [ + # Fix docs build with Sphinx >= 7 https://gitlab.haskell.org/ghc/ghc/-/issues/24129 + (if lib.versionAtLeast version "9.8" + then ./docs-sphinx-7-ghc98.patch + else ./docs-sphinx-7.patch ) + ] + ++ lib.optionals (lib.versionAtLeast version "9.6" && lib.versionOlder version "9.8") [ + (fetchpatch { + name = "fix-fully_static.patch"; + url = "https://gitlab.haskell.org/ghc/ghc/-/commit/1bb24432ff77e11a0340a7d8586e151e15bba2a1.diff"; + hash = "sha256-MpvTmFFsNiPDoOp9BhZyWeapeibQ77zgEV+xzZ1UAXs="; + }) + ] + ++ 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). + (if lib.versionOlder version "9.10" + then ./Cabal-at-least-3.6-paths-fix-cycle-aarch64-darwin.patch + else ./Cabal-3.12-paths-fix-cycle-aarch64-darwin.patch) + ] + # Prevents passing --hyperlinked-source to haddock. This is a custom + # workaround as we wait for this to be configurable via userSettings or + # similar. https://gitlab.haskell.org/ghc/ghc/-/issues/23625 + ++ lib.optionals (!enableHyperlinkedSource) [ + # TODO(@sternenseemann): Doesn't apply for GHC >= 9.8 + ../../tools/haskell/hadrian/disable-hyperlinked-source.patch + ] + # Incorrect bounds on Cabal in hadrian + # https://gitlab.haskell.org/ghc/ghc/-/issues/24100 + ++ lib.optionals (lib.elem version [ "9.8.1" "9.8.2" ]) [ + ../../tools/haskell/hadrian/hadrian-9.8.1-allow-Cabal-3.10.patch + ]; + } # GHC's build system hadrian built from the GHC-to-build's source tree # using our bootstrap GHC. , hadrian ? import ../../tools/haskell/hadrian/make-hadrian.nix { inherit bootPkgs lib; } { - ghcSrc = ghcSrc; + inherit ghcSrc; ghcVersion = version; userSettings = hadrianUserSettings; - # Disable haddock generating pretty source listings to stay under 3GB on aarch64-linux - enableHyperlinkedSource = - # TODO(@sternenseemann): Disabling currently doesn't work with GHC >= 9.8 - lib.versionAtLeast version "9.8" || - !(stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isLinux); } , # Whether to build sphinx documentation. @@ -222,23 +267,44 @@ let 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; - }; + # toolPath calculates the absolute path to the name tool associated with a + # given `stdenv.cc` derivation, i.e. it picks the correct derivation to take + # the tool from (cc, cc.bintools, cc.bintools.bintools) and adds the correct + # subpath of the tool. + toolPath = name: cc: + let + tools = { + "cc" = cc; + "c++" = cc; + as = cc.bintools.bintools; + + ar = cc.bintools.bintools; + ranlib = cc.bintools.bintools; + nm = cc.bintools.bintools; + readelf = cc.bintools.bintools; + + ld = cc.bintools; + "ld.gold" = cc.bintools; + + otool = cc.bintools.bintools; + + # 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. We decide based on target platform to have consistent tools + # across all GHC stages. + install_name_tool = + if stdenv.targetPlatform.isAarch64 + then cc.bintools + else cc.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 cc.bintools + else cc.bintools.bintools; + }.${name}; + in + "${tools}/bin/${tools.targetPrefix}${name}"; # 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 @@ -269,21 +335,6 @@ stdenv.mkDerivation ({ enableParallelBuilding = true; - patches = [ - # Fix docs build with Sphinx >= 7 https://gitlab.haskell.org/ghc/ghc/-/issues/24129 - (if lib.versionAtLeast version "9.8" - then ./docs-sphinx-7-ghc98.patch - else ./docs-sphinx-7.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-at-least-3.6-paths-fix-cycle-aarch64-darwin.patch - ]; - postPatch = '' patchShebangs --build . ''; @@ -299,19 +350,19 @@ stdenv.mkDerivation ({ 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++" + export CC="${toolPath "cc" targetCC}" + export CXX="${toolPath "c++" targetCC}" # 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" + export LD="${toolPath "ld${lib.optionalString useLdGold ".gold"}" targetCC}" + export AS="${toolPath "as" targetCC}" + export AR="${toolPath "ar" targetCC}" + export NM="${toolPath "nm" targetCC}" + export RANLIB="${toolPath "ranlib" targetCC}" + export READELF="${toolPath "readelf" targetCC}" + export STRIP="${toolPath "strip" targetCC}" '' + 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" + export OTOOL="${toolPath "otool" targetCC}" + export INSTALL_NAME_TOOL="${toolPath "install_name_tool" targetCC}" '' + lib.optionalString useLLVM '' export LLC="${lib.getBin buildTargetLlvmPackages.llvm}/bin/llc" export OPT="${lib.getBin buildTargetLlvmPackages.llvm}/bin/opt" @@ -405,8 +456,8 @@ stdenv.mkDerivation ({ "--disable-large-address-space" ] ++ lib.optionals enableDwarf [ "--enable-dwarf-unwind" - "--with-libdw-includes=${lib.getDev elfutils}/include" - "--with-libdw-libraries=${lib.getLib elfutils}/lib" + "--with-libdw-includes=${lib.getDev targetPackages.elfutils}/include" + "--with-libdw-libraries=${lib.getLib targetPackages.elfutils}/lib" ] ++ lib.optionals targetPlatform.isDarwin [ # Darwin uses llvm-ar. GHC will try to use `-L` with `ar` when it is `llvm-ar` # but it doesn’t currently work because Cabal never uses `-L` on Darwin. See: @@ -527,16 +578,12 @@ stdenv.mkDerivation ({ meta = { homepage = "http://haskell.org/ghc"; - description = "The Glasgow Haskell Compiler"; + description = "Glasgow Haskell Compiler"; maintainers = with lib.maintainers; [ guibou ] ++ lib.teams.haskell.members; timeout = 24 * 3600; inherit (ghc.meta) license platforms; - # https://github.com/NixOS/nixpkgs/issues/208959 - broken = - (lib.versionAtLeast version "9.6" && lib.versionOlder version "9.8") - && stdenv.targetPlatform.isStatic; }; dontStrip = targetPlatform.useAndroidPrebuilt || targetPlatform.isWasm; diff --git a/pkgs/development/compilers/ghc/common-make-native-bignum.nix b/pkgs/development/compilers/ghc/common-make-native-bignum.nix new file mode 100644 index 0000000000000..79fced444f562 --- /dev/null +++ b/pkgs/development/compilers/ghc/common-make-native-bignum.nix @@ -0,0 +1,460 @@ +{ version +, sha256 +, url ? "https://downloads.haskell.org/ghc/${version}/ghc-${version}-src.tar.xz" +}: + +{ 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 + || (lib.versionAtLeast version "9.2" && stdenv.targetPlatform.isAarch64)) +, # 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 if we are building on musl because it's a large task to keep + # all `sphinx` dependencies building in this environment. + !stdenv.buildPlatform.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) '' + BUILD_PROF_LIBS = NO + '' + + # -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; + + # toolPath calculates the absolute path to the name tool associated with a + # given `stdenv.cc` derivation, i.e. it picks the correct derivation to take + # the tool from (cc, cc.bintools, cc.bintools.bintools) and adds the correct + # subpath of the tool. + toolPath = name: cc: + let + tools = { + "cc" = cc; + "c++" = cc; + as = cc.bintools.bintools; + + ar = cc.bintools.bintools; + ranlib = cc.bintools.bintools; + nm = cc.bintools.bintools; + readelf = cc.bintools.bintools; + + ld = cc.bintools; + "ld.gold" = cc.bintools; + + otool = cc.bintools.bintools; + + # 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. We decide based on target platform to have consistent tools + # across all GHC stages. + install_name_tool = + if stdenv.targetPlatform.isAarch64 + then cc.bintools + else cc.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 cc.bintools + else cc.bintools.bintools; + }.${name}; + in + "${tools}/bin/${tools.targetPrefix}${name}"; + + # 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 { + pname = "${targetPrefix}ghc${variantSuffix}"; + inherit version; + + src = fetchurl { + inherit url sha256; + }; + + enableParallelBuilding = true; + + outputs = [ "out" "doc" ]; + + patches = lib.optionals (lib.versionOlder version "9.4") [ + # fix hyperlinked haddock sources: https://github.com/haskell/haddock/pull/1482 + (fetchpatch { + url = "https://patch-diff.githubusercontent.com/raw/haskell/haddock/pull/1482.patch"; + sha256 = "sha256-8w8QUCsODaTvknCDGgTfFNZa8ZmvIKaKS+2ZJZ9foYk="; + extraPrefix = "utils/haddock/"; + stripLen = 1; + }) + ] + + ++ lib.optionals (lib.versionOlder version "9.4.6") [ + # Fix docs build with sphinx >= 6.0 + # https://gitlab.haskell.org/ghc/ghc/-/issues/22766 + (fetchpatch { + name = "ghc-docs-sphinx-6.0.patch"; + url = "https://gitlab.haskell.org/ghc/ghc/-/commit/10e94a556b4f90769b7fd718b9790d58ae566600.patch"; + sha256 = "0kmhfamr16w8gch0lgln2912r8aryjky1hfcda3jkcwa5cdzgjdv"; + }) + ] + + ++ [ + # Fix docs build with Sphinx >= 7 https://gitlab.haskell.org/ghc/ghc/-/issues/24129 + ./docs-sphinx-7.patch + ] + + ++ lib.optionals (lib.versionOlder version "9.2.2") [ + # Add flag that fixes C++ exception handling; opt-in. Merged in 9.4 and 9.2.2. + # https://gitlab.haskell.org/ghc/ghc/-/merge_requests/7423 + (fetchpatch { + name = "ghc-9.0.2-fcompact-unwind.patch"; + # Note that the test suite is not packaged. + url = "https://gitlab.haskell.org/ghc/ghc/-/commit/c6132c782d974a7701e7f6447bdcd2bf6db4299a.patch?merge_request_iid=7423"; + sha256 = "sha256-b4feGZIaKDj/UKjWTNY6/jH4s2iate0wAgMxG3rAbZI="; + }) + ] + + ++ lib.optionals (lib.versionAtLeast version "9.2") [ + # 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="; + }) + ] + + ++ lib.optionals (version == "9.4.6") [ + # 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). + (if lib.versionAtLeast version "9.2" + then ./Cabal-at-least-3.6-paths-fix-cycle-aarch64-darwin.patch + else ./Cabal-3.2-3.4-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="${toolPath "cc" targetCC}" + export CXX="${toolPath "c++" targetCC}" + # Use gold to work around https://sourceware.org/bugzilla/show_bug.cgi?id=16177 + export LD="${toolPath "ld${lib.optionalString useLdGold ".gold"}" targetCC}" + export AS="${toolPath "as" targetCC}" + export AR="${toolPath "ar" targetCC}" + export NM="${toolPath "nm" targetCC}" + export RANLIB="${toolPath "ranlib" targetCC}" + export READELF="${toolPath "readelf" targetCC}" + export STRIP="${toolPath "strip" targetCC}" + '' + lib.optionalString (stdenv.targetPlatform.linker == "cctools") '' + export OTOOL="${toolPath "otool" targetCC}" + export INSTALL_NAME_TOOL="${toolPath "install_name_tool" targetCC}" + '' + 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 + '' + + lib.optionalString (lib.versionOlder version "9.2" || lib.versionAtLeast version "9.4") '' + 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" + '' + lib.optionalString (stdenv.isDarwin && lib.versionAtLeast version "9.2") '' + + # 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. + + lib.optionalString (lib.versions.majorMinor version == "9.4") '' + 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 + ] ++ lib.optionals (stdenv.isDarwin && lib.versions.majorMinor version == "9.0") [ + # TODO(@sternenseemann): backport addition of XATTR env var like + # https://gitlab.haskell.org/ghc/ghc/-/merge_requests/6447 + xattr + ]; + + # 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 = "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/pkgs/development/compilers/ghdl/default.nix b/pkgs/development/compilers/ghdl/default.nix index 84109f7436fae..3a28aa03c1108 100644 --- a/pkgs/development/compilers/ghdl/default.nix +++ b/pkgs/development/compilers/ghdl/default.nix @@ -1,6 +1,5 @@ { stdenv , fetchFromGitHub -, fetchpatch , callPackage , gnat , zlib @@ -66,7 +65,7 @@ stdenv.mkDerivation (finalAttrs: { description = "VHDL 2008/93/87 simulator"; license = lib.licenses.gpl2Plus; mainProgram = "ghdl"; - maintainers = with lib.maintainers; [ eclairevoyant lucus16 thoughtpolice ]; + maintainers = with lib.maintainers; [ lucus16 thoughtpolice ]; platforms = lib.platforms.linux; }; }) diff --git a/pkgs/development/compilers/gleam/default.nix b/pkgs/development/compilers/gleam/default.nix index 7e5fd44916b5e..4e2111814deb1 100644 --- a/pkgs/development/compilers/gleam/default.nix +++ b/pkgs/development/compilers/gleam/default.nix @@ -12,13 +12,13 @@ rustPlatform.buildRustPackage rec { pname = "gleam"; - version = "1.1.0"; + version = "1.2.1"; src = fetchFromGitHub { owner = "gleam-lang"; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-3DlsqUBAKF3zgiS26YQY1MzymLg9GnVzH1HMpbYv5Dc="; + hash = "sha256-J3FqaKEeK+Xy8Ri5j7+K+4wpvNeMUHSfj2O68XBPlYs="; }; nativeBuildInputs = [ git pkg-config ]; @@ -26,15 +26,15 @@ rustPlatform.buildRustPackage rec { buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ Security SystemConfiguration ]; - cargoHash = "sha256-KROGDBOsx1WTzv7IhJ3WWLJJ9zvrmZI5poJCr2tFcLY="; + cargoHash = "sha256-l0LFgmsk87mCVu1UiaFtP3mO01CDV3xTz4Kv+l6AAWw="; passthru.updateScript = nix-update-script { }; meta = with lib; { - description = "A statically typed language for the Erlang VM"; + description = "Statically typed language for the Erlang VM"; mainProgram = "gleam"; homepage = "https://gleam.run/"; license = licenses.asl20; - maintainers = teams.beam.members; + maintainers = teams.beam.members ++ [ lib.maintainers.philtaken ]; }; } diff --git a/pkgs/development/compilers/glslang/default.nix b/pkgs/development/compilers/glslang/default.nix index 1f84487239d24..91dfb296318cc 100644 --- a/pkgs/development/compilers/glslang/default.nix +++ b/pkgs/development/compilers/glslang/default.nix @@ -9,13 +9,13 @@ }: stdenv.mkDerivation rec { pname = "glslang"; - version = "14.1.0"; + version = "14.2.0"; src = fetchFromGitHub { owner = "KhronosGroup"; repo = "glslang"; rev = version; - hash = "sha256-trm5bR3/2w+oQppHQBB+b6l0N0sLjTk5+rRGDfnGb+8="; + hash = "sha256-B6jVCeoFjd2H6+7tIses+Kj8DgHS6E2dkVzQAIzDHEc="; }; # These get set at all-packages, keep onto them for child drvs diff --git a/pkgs/development/compilers/gmqcc/default.nix b/pkgs/development/compilers/gmqcc/default.nix index f027fa8fb13d9..144131887fbac 100644 --- a/pkgs/development/compilers/gmqcc/default.nix +++ b/pkgs/development/compilers/gmqcc/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { meta = with lib; { homepage = "https://graphitemaster.github.io/gmqcc/"; - description = "A modern QuakeC compiler"; + description = "Modern QuakeC compiler"; mainProgram = "gmqcc"; longDescription = '' For an enduring period of time the options for a decent compiler for diff --git a/pkgs/development/compilers/gnostic/default.nix b/pkgs/development/compilers/gnostic/default.nix index 082cf4da2af99..e6c2b665c215a 100644 --- a/pkgs/development/compilers/gnostic/default.nix +++ b/pkgs/development/compilers/gnostic/default.nix @@ -18,7 +18,7 @@ buildGoModule rec { meta = with lib; { homepage = "https://github.com/google/gnostic"; - description = "A compiler for APIs described by the OpenAPI Specification with plugins for code generation and other API support tasks"; + description = "Compiler for APIs described by the OpenAPI Specification with plugins for code generation and other API support tasks"; changelog = "https://github.com/google/gnostic/releases/tag/v${version}"; license = licenses.asl20; maintainers = with maintainers; [ urandom ]; diff --git a/pkgs/development/compilers/gnu-cim/default.nix b/pkgs/development/compilers/gnu-cim/default.nix index 54ba6cffff130..bf5b93c712fc5 100644 --- a/pkgs/development/compilers/gnu-cim/default.nix +++ b/pkgs/development/compilers/gnu-cim/default.nix @@ -23,12 +23,12 @@ stdenv.mkDerivation rec { done ''; - CFLAGS = lib.optionalString stdenv.cc.isClang "-Wno-return-type"; + env.CFLAGS = lib.optionalString stdenv.cc.isClang "-Wno-return-type -Wno-error=implicit-function-declaration -Wno-error=implicit-int"; doCheck = true; meta = with lib; { - description = "A GNU compiler for the programming language Simula"; + description = "GNU compiler for the programming language Simula"; longDescription = '' GNU Cim is a compiler for the programming language Simula. It offers a class concept, separate compilation with full type checking, diff --git a/pkgs/development/compilers/gnu-cobol/default.nix b/pkgs/development/compilers/gnu-cobol/default.nix index e3233b059dd2a..5b01856786fed 100644 --- a/pkgs/development/compilers/gnu-cobol/default.nix +++ b/pkgs/development/compilers/gnu-cobol/default.nix @@ -93,7 +93,7 @@ stdenv.mkDerivation rec { ''; meta = with lib; { - description = "An open-source COBOL compiler"; + description = "Open-source COBOL compiler"; homepage = "https://sourceforge.net/projects/gnucobol/"; license = with licenses; [ gpl3Only lgpl3Only ]; maintainers = with maintainers; [ ericsagnes lovesegfault ]; diff --git a/pkgs/development/compilers/gnu-smalltalk/0000-fix_mkorder.patch b/pkgs/development/compilers/gnu-smalltalk/0000-fix_mkorder.patch new file mode 100644 index 0000000000000..7b6fae2d5f03e --- /dev/null +++ b/pkgs/development/compilers/gnu-smalltalk/0000-fix_mkorder.patch @@ -0,0 +1,21 @@ +--- a/packages/gtk/mkorder.awk ++++ b/packages/gtk/mkorder.awk +@@ -33,6 +33,9 @@ + paths[1] = "." + n_paths = 1 + n_prefixes = split(_prefixes, prefixes) ++ ++ ignored_files = [ "glib/gwin32.h" ] ++ + split(_libs, libs) + split(_files, files) + for (i = 1; (i in libs); i++) +@@ -60,7 +63,7 @@ + + function process_file(name, file) { + file = find_file(name) +- if (file in processed) ++ if ((name in ignored_files) or (file in processed)) + return + processed[file] = 1 + if (file == "") diff --git a/pkgs/development/compilers/gnu-smalltalk/default.nix b/pkgs/development/compilers/gnu-smalltalk/default.nix index 1caf96c715cbb..68ebbad63ca2b 100644 --- a/pkgs/development/compilers/gnu-smalltalk/default.nix +++ b/pkgs/development/compilers/gnu-smalltalk/default.nix @@ -25,6 +25,12 @@ in stdenv.mkDerivation rec { sha256 = "1k2ssrapfzhngc7bg1zrnd9n2vyxp9c9m70byvsma6wapbvib6l1"; }; + patches = [ + # The awk script incorrectly parsed `glib/glib.h` and was trying to find `glib/gwin32.h`, + # that isn't included since we're building only for linux. + ./0000-fix_mkorder.patch + ]; + # The dependencies and their justification are explained at # http://smalltalk.gnu.org/download nativeBuildInputs = [ pkg-config ]; @@ -45,7 +51,7 @@ in stdenv.mkDerivation rec { doCheck = false; meta = with lib; { - description = "A free implementation of the Smalltalk-80 language"; + description = "Free implementation of the Smalltalk-80 language"; longDescription = '' GNU Smalltalk is a free implementation of the Smalltalk-80 language. It runs on most POSIX compatible operating systems (including GNU/Linux, of diff --git a/pkgs/development/compilers/go-jsonnet/default.nix b/pkgs/development/compilers/go-jsonnet/default.nix index 909e15c9e5558..8f419a189e82e 100644 --- a/pkgs/development/compilers/go-jsonnet/default.nix +++ b/pkgs/development/compilers/go-jsonnet/default.nix @@ -21,7 +21,7 @@ buildGoModule rec { }; meta = with lib; { - description = "An implementation of Jsonnet in pure Go"; + description = "Implementation of Jsonnet in pure Go"; homepage = "https://github.com/google/go-jsonnet"; license = licenses.asl20; maintainers = with maintainers; [ nshalman aaronjheng ]; diff --git a/pkgs/development/compilers/go/1.21.nix b/pkgs/development/compilers/go/1.21.nix index b9694f7d4baa1..312106f6388c3 100644 --- a/pkgs/development/compilers/go/1.21.nix +++ b/pkgs/development/compilers/go/1.21.nix @@ -47,11 +47,11 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "go"; - version = "1.21.9"; + version = "1.21.11"; src = fetchurl { url = "https://go.dev/dl/go${finalAttrs.version}.src.tar.gz"; - hash = "sha256-WPDFztRaABK84v96nfA+Eoq8yIGOur5QJ7uSuv4g5CE="; + hash = "sha256-Qq7pvytpVsdaetaqPwpRtYIf/qxX9aLnM6LW6uHm2dI="; }; strictDeps = true; @@ -180,7 +180,7 @@ stdenv.mkDerivation (finalAttrs: { meta = with lib; { changelog = "https://go.dev/doc/devel/release#go${lib.versions.majorMinor finalAttrs.version}"; - description = "The Go Programming language"; + description = "Go Programming language"; homepage = "https://go.dev/"; license = licenses.bsd3; maintainers = teams.golang.members; diff --git a/pkgs/development/compilers/go/1.22.nix b/pkgs/development/compilers/go/1.22.nix index 6a3cfd39203d5..d3b8982118aeb 100644 --- a/pkgs/development/compilers/go/1.22.nix +++ b/pkgs/development/compilers/go/1.22.nix @@ -37,6 +37,7 @@ let "riscv64" = "riscv64"; "s390x" = "s390x"; "x86_64" = "amd64"; + "wasm32" = "wasm"; }.${platform.parsed.cpu.name} or (throw "Unsupported system: ${platform.parsed.cpu.name}"); # We need a target compiler which is still runnable at build time, @@ -47,11 +48,11 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "go"; - version = "1.22.2"; + version = "1.22.3"; src = fetchurl { url = "https://go.dev/dl/go${finalAttrs.version}.src.tar.gz"; - hash = "sha256-N06oKyiexzjpaCZ8rFnH1f8YD5SSJQJUeEsgROkN9ak="; + hash = "sha256-gGSO80+QMZPXKlnA3/AZ9fmK4MmqE63gsOy/+ZGnb2g="; }; strictDeps = true; @@ -90,7 +91,7 @@ stdenv.mkDerivation (finalAttrs: { ./go_no_vendor_checks-1.22.patch ]; - GOOS = stdenv.targetPlatform.parsed.kernel.name; + GOOS = if stdenv.targetPlatform.isWasi then "wasip1" else 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 @@ -113,7 +114,8 @@ stdenv.mkDerivation (finalAttrs: { 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; + # Wasi does not support CGO + CGO_ENABLED = if stdenv.targetPlatform.isWasi then 0 else 1; GOROOT_BOOTSTRAP = if useGccGoBootstrap then goBootstrap else "${goBootstrap}/share/go"; @@ -180,11 +182,11 @@ stdenv.mkDerivation (finalAttrs: { meta = with lib; { changelog = "https://go.dev/doc/devel/release#go${lib.versions.majorMinor finalAttrs.version}"; - description = "The Go Programming language"; + description = "Go Programming language"; homepage = "https://go.dev/"; license = licenses.bsd3; maintainers = teams.golang.members; - platforms = platforms.darwin ++ platforms.linux; + platforms = platforms.darwin ++ platforms.linux ++ platforms.wasi; mainProgram = "go"; }; }) diff --git a/pkgs/development/compilers/gwt/2.4.0.nix b/pkgs/development/compilers/gwt/2.4.0.nix index b998266487cfb..b769eb30463a9 100644 --- a/pkgs/development/compilers/gwt/2.4.0.nix +++ b/pkgs/development/compilers/gwt/2.4.0.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { meta = { homepage = "https://www.gwtproject.org/"; - description = "A development toolkit for building and optimizing complex browser-based applications"; + description = "Development toolkit for building and optimizing complex browser-based applications"; license = lib.licenses.asl20; platforms = lib.platforms.unix; }; diff --git a/pkgs/development/compilers/hop/default.nix b/pkgs/development/compilers/hop/default.nix index 00900b6fffe48..0c1f2a09e1238 100644 --- a/pkgs/development/compilers/hop/default.nix +++ b/pkgs/development/compilers/hop/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { ]; meta = with lib; { - description = "A multi-tier programming language for the Web 2.0 and the so-called diffuse Web"; + description = "Multi-tier programming language for the Web 2.0 and the so-called diffuse Web"; homepage = "http://hop.inria.fr/"; license = licenses.gpl2Plus; platforms = platforms.linux; diff --git a/pkgs/development/compilers/hvm/default.nix b/pkgs/development/compilers/hvm/default.nix deleted file mode 100644 index 8342f0ee05b1d..0000000000000 --- a/pkgs/development/compilers/hvm/default.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ lib -, rustPlatform -, fetchCrate -, stdenv -, darwin -}: - -rustPlatform.buildRustPackage rec { - pname = "hvm"; - version = "1.0.9"; - - src = fetchCrate { - inherit pname version; - hash = "sha256-dO0GzbMopX84AKOtJYYW6vojcs4kYcZ8LQ4tXEgUN7I="; - }; - - cargoHash = "sha256-RQnyVRHWrqnKcI3Jy593jDTydG1nGyrScsqSNyJTDJk="; - - buildInputs = lib.optionals stdenv.isDarwin [ - darwin.apple_sdk_11_0.frameworks.IOKit - ]; - - # tests are broken - doCheck = false; - - # enable nightly features - RUSTC_BOOTSTRAP = true; - - meta = with lib; { - description = "A pure functional compile target that is lazy, non-garbage-collected, and parallel"; - mainProgram = "hvm"; - homepage = "https://github.com/higherorderco/hvm"; - license = licenses.mit; - maintainers = with maintainers; [ figsoda ]; - }; -} diff --git a/pkgs/development/compilers/idris2/idris2.nix b/pkgs/development/compilers/idris2/idris2.nix index 421fb93cf03ba..4d28b35bd4a98 100644 --- a/pkgs/development/compilers/idris2/idris2.nix +++ b/pkgs/development/compilers/idris2/idris2.nix @@ -17,10 +17,12 @@ # NOTICE: An `idris2WithPackages` is available at: https://github.com/claymager/idris2-pkgs let - # Taken from Idris2/idris2/flake.nix. Check if the idris2 project does it this - # way, still, every now and then. - platformChez = if stdenv.system == "x86_64-linux" then chez else chez-racket; -# Uses scheme to bootstrap the build of idris2 + platformChez = + if (stdenv.system == "x86_64-linux") || (lib.versionAtLeast chez.version "10.0.0") + then + chez + else + chez-racket; in stdenv.mkDerivation rec { pname = "idris2"; version = "0.7.0"; @@ -88,7 +90,7 @@ in stdenv.mkDerivation rec { passthru.tests = callPackage ./tests.nix { inherit pname; }; meta = { - description = "A purely functional programming language with first class types"; + description = "Purely functional programming language with first class types"; mainProgram = "idris2"; homepage = "https://github.com/idris-lang/Idris2"; license = lib.licenses.bsd3; diff --git a/pkgs/development/compilers/inform6/default.nix b/pkgs/development/compilers/inform6/default.nix index 49af7e6676e33..ccbf8ef5da344 100644 --- a/pkgs/development/compilers/inform6/default.nix +++ b/pkgs/development/compilers/inform6/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "inform6"; - version = "6.41-r11"; + version = "6.42-r1"; src = fetchurl { url = "https://ifarchive.org/if-archive/infocom/compilers/inform6/source/inform-${version}.tar.gz"; - sha256 = "sha256-kfFfjJL03f3af1h/JdvkItuDFu8aGlM3BRa2eBB+ddY="; + sha256 = "sha256-JZaMhA4M+fDgk52tWCJokG9J/a1+FQHL7+VxAT4PgQo="; }; buildInputs = [ perl ]; diff --git a/pkgs/development/compilers/inform7/default.nix b/pkgs/development/compilers/inform7/default.nix index 0fba6d7c4a497..cb464e3484c2c 100644 --- a/pkgs/development/compilers/inform7/default.nix +++ b/pkgs/development/compilers/inform7/default.nix @@ -22,7 +22,7 @@ in stdenv.mkDerivation { ''; meta = with lib; { - description = "A design system for interactive fiction"; + description = "Design system for interactive fiction"; mainProgram = "i7"; homepage = "http://inform7.com/"; license = licenses.artistic2; diff --git a/pkgs/development/compilers/intel-graphics-compiler/default.nix b/pkgs/development/compilers/intel-graphics-compiler/default.nix index d2075d79543c1..02bc670f26cd6 100644 --- a/pkgs/development/compilers/intel-graphics-compiler/default.nix +++ b/pkgs/development/compilers/intel-graphics-compiler/default.nix @@ -20,8 +20,8 @@ let vc_intrinsics_src = fetchFromGitHub { owner = "intel"; repo = "vc-intrinsics"; - rev = "v0.16.0"; - hash = "sha256-d197m80vSICdv4VKnyqdy3flzbKLKmB8jroY2difA7o="; + rev = "v0.18.0"; + hash = "sha256-F2GR3TDUUiygEhdQN+PsMT/CIYBATMQX5wkvwrziS2E="; }; inherit (llvmPackages_14) lld llvm; @@ -31,7 +31,7 @@ in stdenv.mkDerivation rec { pname = "intel-graphics-compiler"; - version = "1.0.16238.4"; + version = "1.0.16695.4"; src = fetchFromGitHub { owner = "intel"; diff --git a/pkgs/development/compilers/intercal/default.nix b/pkgs/development/compilers/intercal/default.nix index 1fde0f320c405..6e6fd63fa5b2d 100644 --- a/pkgs/development/compilers/intercal/default.nix +++ b/pkgs/development/compilers/intercal/default.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { ''; meta = with lib; { - description = "The original esoteric programming language"; + description = "Original esoteric programming language"; longDescription = '' INTERCAL, an abbreviation for "Compiler Language With No Pronounceable Acronym", is a famously esoterical programming diff --git a/pkgs/development/compilers/ispc/default.nix b/pkgs/development/compilers/ispc/default.nix index b7f2ad1228b7f..b8c48c5c6a018 100644 --- a/pkgs/development/compilers/ispc/default.nix +++ b/pkgs/development/compilers/ispc/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitHub, fetchpatch +{ lib, stdenv, fetchFromGitHub , cmake, which, m4, python3, bison, flex, llvmPackages, ncurses, xcode, tbb # the default test target is sse4, but that is not supported by all Hydra agents , testedTargets ? if stdenv.isAarch64 || stdenv.isAarch32 then [ "neon-i32x4" ] else [ "sse2-i32x4" ] @@ -6,13 +6,15 @@ stdenv.mkDerivation rec { pname = "ispc"; - version = "1.23.0"; + version = "1.24.0"; + + dontFixCmake = true; # https://github.com/NixOS/nixpkgs/pull/232522#issuecomment-2133803566 src = fetchFromGitHub { owner = pname; repo = pname; rev = "v${version}"; - sha256 = "sha256-zixPt7YICCG0N8t1pcXEu/sPKCVLQVPCiJsQEqEXl+A="; + sha256 = "sha256-1Ns8w34fXgYrSu3XE89uowjaVoW3MOgKYV1Jb/XRj1Q="; }; nativeBuildInputs = [ cmake which m4 bison flex python3 llvmPackages.libllvm.dev tbb ] ++ lib.lists.optionals stdenv.isDarwin [ xcode ]; diff --git a/pkgs/development/compilers/jasmin-compiler/default.nix b/pkgs/development/compilers/jasmin-compiler/default.nix index 9efe47ae371e8..3e5ff09a70900 100644 --- a/pkgs/development/compilers/jasmin-compiler/default.nix +++ b/pkgs/development/compilers/jasmin-compiler/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "jasmin-compiler"; - version = "2023.06.3"; + version = "2023.06.4"; src = fetchurl { url = "https://github.com/jasmin-lang/jasmin/releases/download/v${version}/jasmin-compiler-v${version}.tar.bz2"; - hash = "sha256-Fp3QMsBaPOA6L6kOgffoHaJAypJDt8JxT8EVDDpPAKs="; + hash = "sha256-b1lrVbXJQeg+7tI7JcR9JTuiel/b/mctU1caT/y/4SA="; }; sourceRoot = "jasmin-compiler-v${version}/compiler"; @@ -39,7 +39,7 @@ stdenv.mkDerivation rec { ''; meta = { - description = "A workbench for high-assurance and high-speed cryptography"; + description = "Workbench for high-assurance and high-speed cryptography"; homepage = "https://github.com/jasmin-lang/jasmin/"; license = lib.licenses.mit; maintainers = [ lib.maintainers.vbgl ]; diff --git a/pkgs/development/compilers/jasmin/default.nix b/pkgs/development/compilers/jasmin/default.nix index 685e6aa9537e2..e10109979f322 100644 --- a/pkgs/development/compilers/jasmin/default.nix +++ b/pkgs/development/compilers/jasmin/default.nix @@ -51,7 +51,7 @@ in stdenv.mkDerivation (finalAttrs: { }; meta = with lib; { - description = "An assembler for the Java Virtual Machine"; + description = "Assembler for the Java Virtual Machine"; downloadPage = "https://sourceforge.net/projects/jasmin/files/latest/download"; homepage = "https://jasmin.sourceforge.net/"; license = licenses.bsd3; diff --git a/pkgs/development/compilers/jetbrains-jdk/17.nix b/pkgs/development/compilers/jetbrains-jdk/17.nix new file mode 100644 index 0000000000000..76d4079baafbf --- /dev/null +++ b/pkgs/development/compilers/jetbrains-jdk/17.nix @@ -0,0 +1,156 @@ +{ lib +, stdenv +, fetchFromGitHub +, jetbrains +, openjdk17 +, openjdk17-bootstrap +, git +, autoconf +, unzip +, rsync +, debugBuild ? false +, withJcef ? true + +, libXdamage +, libXxf86vm +, libXrandr +, libXi +, libXcursor +, libXrender +, libX11 +, libXext +, libxcb +, nss +, nspr +, libdrm +, mesa +, wayland +, udev +}: + +assert debugBuild -> withJcef; + +let + arch = { + "aarch64-linux" = "aarch64"; + "x86_64-linux" = "x64"; + }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); + cpu = stdenv.hostPlatform.parsed.cpu.name; +in +openjdk17.overrideAttrs (oldAttrs: rec { + pname = "jetbrains-jdk" + lib.optionalString withJcef "-jcef"; + javaVersion = "17.0.11"; + build = "1207.24"; + # To get the new tag: + # git clone https://github.com/jetbrains/jetbrainsruntime + # cd jetbrainsruntime + # git reset --hard [revision] + # git log --simplify-by-decoration --decorate=short --pretty=short | grep "jbr-" --color=never | cut -d "(" -f2 | cut -d ")" -f1 | awk '{print $2}' | sort -t "-" -k 2 -g | tail -n 1 | tr -d "," + openjdkTag = "jbr-17.0.8+7"; + version = "${javaVersion}-b${build}"; + + src = fetchFromGitHub { + owner = "JetBrains"; + repo = "JetBrainsRuntime"; + rev = "jb${version}"; + hash = "sha256-a7cJF2iCW/1GK0/GmVbaY5pYcn3YtZy5ngFkyAGRhu0="; + }; + + BOOT_JDK = openjdk17-bootstrap.home; + # run `git log -1 --pretty=%ct` in jdk repo for new value on update + SOURCE_DATE_EPOCH = 1715809405; + + patches = [ ]; + + dontConfigure = true; + + buildPhase = '' + runHook preBuild + + ${lib.optionalString withJcef "cp -r ${jetbrains.jcef} jcef_linux_${arch}"} + + sed \ + -e "s/OPENJDK_TAG=.*/OPENJDK_TAG=${openjdkTag}/" \ + -e "s/SOURCE_DATE_EPOCH=.*//" \ + -e "s/export SOURCE_DATE_EPOCH//" \ + -i jb/project/tools/common/scripts/common.sh + sed -i "s/STATIC_CONF_ARGS/STATIC_CONF_ARGS \$configureFlags/" jb/project/tools/linux/scripts/mkimages_${arch}.sh + sed \ + -e "s/create_image_bundle \"jb/#/" \ + -e "s/echo Creating /exit 0 #/" \ + -i jb/project/tools/linux/scripts/mkimages_${arch}.sh + + patchShebangs . + ./jb/project/tools/linux/scripts/mkimages_${arch}.sh ${build} ${if debugBuild then "fd" else (if withJcef then "jcef" else "nomod")} + + runHook postBuild + ''; + + installPhase = + let + buildType = if debugBuild then "fastdebug" else "release"; + debugSuffix = if debugBuild then "-fastdebug" else ""; + jcefSuffix = if debugBuild || !withJcef then "" else "_jcef"; + jbrsdkDir = "jbrsdk${jcefSuffix}-${javaVersion}-linux-${arch}${debugSuffix}-b${build}"; + in + '' + runHook preInstall + + mv build/linux-${cpu}-server-${buildType}/images/jdk/man build/linux-${cpu}-server-${buildType}/images/${jbrsdkDir} + rm -rf build/linux-${cpu}-server-${buildType}/images/jdk + mv build/linux-${cpu}-server-${buildType}/images/${jbrsdkDir} build/linux-${cpu}-server-${buildType}/images/jdk + '' + oldAttrs.installPhase + "runHook postInstall"; + + postInstall = lib.optionalString withJcef '' + chmod +x $out/lib/openjdk/lib/chrome-sandbox + ''; + + dontStrip = debugBuild; + + postFixup = '' + # Build the set of output library directories to rpath against + LIBDIRS="${lib.makeLibraryPath [ + libXdamage libXxf86vm libXrandr libXi libXcursor libXrender libX11 libXext libxcb + nss nspr libdrm mesa wayland udev + ]}" + for output in $outputs; do + if [ "$output" = debug ]; then continue; fi + LIBDIRS="$(find $(eval echo \$$output) -name \*.so\* -exec dirname {} \+ | sort -u | tr '\n' ':'):$LIBDIRS" + done + # Add the local library paths to remove dependencies on the bootstrap + for output in $outputs; do + if [ "$output" = debug ]; then continue; fi + OUTPUTDIR=$(eval echo \$$output) + BINLIBS=$(find $OUTPUTDIR/bin/ -type f; find $OUTPUTDIR -name \*.so\*) + echo "$BINLIBS" | while read i; do + patchelf --set-rpath "$LIBDIRS:$(patchelf --print-rpath "$i")" "$i" || true + patchelf --shrink-rpath "$i" || true + done + done + ''; + + nativeBuildInputs = [ git autoconf unzip rsync ] ++ oldAttrs.nativeBuildInputs; + + meta = with lib; { + description = "An OpenJDK fork to better support Jetbrains's products."; + longDescription = '' + JetBrains Runtime is a runtime environment for running IntelliJ Platform + based products on Windows, Mac OS X, and Linux. JetBrains Runtime is + based on OpenJDK project with some modifications. These modifications + include: Subpixel Anti-Aliasing, enhanced font rendering on Linux, HiDPI + support, ligatures, some fixes for native crashes not presented in + official build, and other small enhancements. + JetBrains Runtime is not a certified build of OpenJDK. Please, use at + your own risk. + ''; + homepage = "https://confluence.jetbrains.com/display/JBR/JetBrains+Runtime"; + inherit (openjdk17.meta) license platforms mainProgram; + maintainers = with maintainers; [ edwtjo ]; + + broken = stdenv.isDarwin; + }; + + passthru = oldAttrs.passthru // { + home = "${jetbrains.jdk}/lib/openjdk"; + }; +}) diff --git a/pkgs/development/compilers/jetbrains-jdk/default.nix b/pkgs/development/compilers/jetbrains-jdk/default.nix index 1e6b86b17b8e4..5a5b4c2886557 100644 --- a/pkgs/development/compilers/jetbrains-jdk/default.nix +++ b/pkgs/development/compilers/jetbrains-jdk/default.nix @@ -2,8 +2,7 @@ , stdenv , fetchFromGitHub , jetbrains -, openjdk17 -, openjdk17-bootstrap +, jdk , git , autoconf , unzip @@ -37,28 +36,28 @@ let }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); cpu = stdenv.hostPlatform.parsed.cpu.name; in -openjdk17.overrideAttrs (oldAttrs: rec { +jdk.overrideAttrs (oldAttrs: rec { pname = "jetbrains-jdk" + lib.optionalString withJcef "-jcef"; - javaVersion = "17.0.8"; - build = "1000.8"; + javaVersion = "21.0.3"; + build = "465.3"; # To get the new tag: # git clone https://github.com/jetbrains/jetbrainsruntime # cd jetbrainsruntime - # git reset --hard [revision] + # git checkout jbr-release-${javaVersion}b${build} # git log --simplify-by-decoration --decorate=short --pretty=short | grep "jbr-" --color=never | cut -d "(" -f2 | cut -d ")" -f1 | awk '{print $2}' | sort -t "-" -k 2 -g | tail -n 1 | tr -d "," - openjdkTag = "jbr-17.0.7+7"; + openjdkTag = "jbr-21.0.2+3"; version = "${javaVersion}-b${build}"; src = fetchFromGitHub { owner = "JetBrains"; repo = "JetBrainsRuntime"; rev = "jb${version}"; - hash = "sha256-PXS8wRF37D9vzeC4CvmB3szFMbt+NRqhQqtPZcbeAO8="; + hash = "sha256-Pup/XeHExCE6yy2o74wF7VlYU6MI9cg8gb69V3bclIo="; }; - BOOT_JDK = openjdk17-bootstrap.home; + BOOT_JDK = jdk.home; # run `git log -1 --pretty=%ct` in jdk repo for new value on update - SOURCE_DATE_EPOCH = 1691119859; + SOURCE_DATE_EPOCH = 1717225235; patches = [ ]; @@ -74,7 +73,8 @@ openjdk17.overrideAttrs (oldAttrs: rec { -e "s/SOURCE_DATE_EPOCH=.*//" \ -e "s/export SOURCE_DATE_EPOCH//" \ -i jb/project/tools/common/scripts/common.sh - sed -i "s/STATIC_CONF_ARGS/STATIC_CONF_ARGS \$configureFlags/" jb/project/tools/linux/scripts/mkimages_${arch}.sh + configureFlags=$(echo $configureFlags | sed 's/--host=[^ ]*//') + sed -i "s|STATIC_CONF_ARGS|STATIC_CONF_ARGS \$configureFlags|" jb/project/tools/linux/scripts/mkimages_${arch}.sh sed \ -e "s/create_image_bundle \"jb/#/" \ -e "s/echo Creating /exit 0 #/" \ @@ -132,7 +132,7 @@ openjdk17.overrideAttrs (oldAttrs: rec { nativeBuildInputs = [ git autoconf unzip rsync ] ++ oldAttrs.nativeBuildInputs; meta = with lib; { - description = "An OpenJDK fork to better support Jetbrains's products."; + description = "OpenJDK fork to better support Jetbrains's products"; longDescription = '' JetBrains Runtime is a runtime environment for running IntelliJ Platform based products on Windows, Mac OS X, and Linux. JetBrains Runtime is @@ -144,7 +144,7 @@ openjdk17.overrideAttrs (oldAttrs: rec { your own risk. ''; homepage = "https://confluence.jetbrains.com/display/JBR/JetBrains+Runtime"; - inherit (openjdk17.meta) license platforms mainProgram; + inherit (jdk.meta) license platforms mainProgram; maintainers = with maintainers; [ edwtjo ]; broken = stdenv.isDarwin; diff --git a/pkgs/development/compilers/jetbrains-jdk/jcef.nix b/pkgs/development/compilers/jetbrains-jdk/jcef.nix index 770aab0e7de82..0ed9c159b128e 100644 --- a/pkgs/development/compilers/jetbrains-jdk/jcef.nix +++ b/pkgs/development/compilers/jetbrains-jdk/jcef.nix @@ -4,7 +4,7 @@ , stdenv , cmake , python3 -, jdk17 +, jdk , git , libcef , rsync @@ -22,6 +22,7 @@ , atk , at-spi2-atk , libdrm +, libGL , expat , libxcb , libxkbcommon @@ -41,6 +42,8 @@ , cups , libxshmfence , udev +, boost +, thrift }: assert !stdenv.isDarwin; @@ -54,6 +57,7 @@ let atk at-spi2-atk libdrm + libGL expat libxcb libxkbcommon @@ -97,28 +101,28 @@ let in stdenv.mkDerivation rec { pname = "jcef-jetbrains"; - rev = "9f8d4fb20b4658db6b2b6bc08e5dd0d8c7340290"; + rev = "34dfd656652c24da31b89c39d0885f284722eeaa"; # This is the commit number - # Currently from the branch: https://github.com/JetBrains/jcef/tree/232 + # Currently from the branch: https://github.com/JetBrains/jcef/tree/242 # Run `git rev-list --count HEAD` - version = "675"; + version = "867"; - nativeBuildInputs = [ cmake python3 jdk17 git rsync ant ninja strip-nondeterminism stripJavaArchivesHook ]; - buildInputs = [ libX11 libXdamage nss nspr ]; + nativeBuildInputs = [ cmake python3 jdk git rsync ant ninja strip-nondeterminism stripJavaArchivesHook ]; + buildInputs = [ boost libX11 libXdamage nss nspr thrift ]; src = fetchFromGitHub { owner = "jetbrains"; repo = "jcef"; inherit rev; - hash = "sha256-8zsgcWl0lZtC1oud5IlkUdeXxJUlHoRfw8t0FrZUQec="; + hash = "sha256-JlTGKqvgdBpBs2xtFMTVJ/ZksT1uME/8a2g7niH2sq8="; }; cef-bin = let # `cef_binary_${CEF_VERSION}_linux64_minimal`, where CEF_VERSION is from $src/CMakeLists.txt - name = "cef_binary_111.2.1+g870da30+chromium-111.0.5563.64_${platform}_minimal"; + name = "cef_binary_122.1.9+gd14e051+chromium-122.0.6261.94_${platform}_minimal"; hash = { - "linuxarm64" = "sha256-gCDIfWsysXE8lHn7H+YM3Jag+mdbWwTQpJf0GKdXEVs="; - "linux64" = "sha256-r+zXTmDN5s/bYLvbCnHufYdXIqQmCDlbWgs5pdOpLTw="; + "linuxarm64" = "sha256-wABtvz0JHitlkkB748I7yr02Oxs5lXvqDfrBAQiKWHU="; + "linux64" = "sha256-qlutM0IsE1emcMe/3p7kwMIK7ou1rZGvpUkrSMVPnCc="; }.${platform}; urlName = builtins.replaceStrings [ "+" ] [ "%2B" ] name; in @@ -126,6 +130,7 @@ stdenv.mkDerivation rec { url = "https://cef-builds.spotifycdn.com/${urlName}.tar.bz2"; inherit name hash; }; + # Find the hash in tools/buildtools/linux64/clang-format.sha1 clang-fmt = fetchurl { url = "https://storage.googleapis.com/chromium-clang-format/dd736afb28430c9782750fc0fd5f0ed497399263"; hash = "sha256-4H6FVO9jdZtxH40CSfS+4VESAHgYgYxfCBFSMHdT0hE="; @@ -139,6 +144,7 @@ stdenv.mkDerivation rec { cp -r ${cef-bin} third_party/cef/${cef-bin.name} chmod +w -R third_party/cef/${cef-bin.name} patchelf third_party/cef/${cef-bin.name}/${buildType}/libcef.so --set-rpath "${rpath}" --add-needed libudev.so + patchelf third_party/cef/${cef-bin.name}/${buildType}/libGLESv2.so --set-rpath "${rpath}" --add-needed libGL.so.1 patchelf third_party/cef/${cef-bin.name}/${buildType}/chrome-sandbox --set-interpreter $(cat $NIX_BINTOOLS/nix-support/dynamic-linker) sed 's/-O0/-O2/' -i third_party/cef/${cef-bin.name}/cmake/cef_variables.cmake @@ -152,6 +158,14 @@ stdenv.mkDerivation rec { cp ${clang-fmt} tools/buildtools/linux64/clang-format chmod +w tools/buildtools/linux64/clang-format + sed \ + -e 's|include(cmake/vcpkg.cmake)||' \ + -e 's|bring_vcpkg()||' \ + -e 's|vcpkg_install_package(boost-filesystem boost-interprocess thrift)||' \ + -i CMakeLists.txt + + sed -e 's|vcpkg_bring_host_thrift()|set(THRIFT_COMPILER_HOST ${thrift}/bin/thrift)|' -i remote/CMakeLists.txt + mkdir jcef_build cd jcef_build @@ -167,11 +181,15 @@ stdenv.mkDerivation rec { ../tools/compile.sh ${platform} Release ''; - # Mostly taken from jb/tools/common/create_modules.sh + # N.B. For new versions, manually synchronize the following + # definitions with jb/tools/common/create_modules.sh to include + # newly added modules installPhase = '' runHook preInstall export JCEF_ROOT_DIR=$(realpath ..) + export THRIFT_DIR="$JCEF_ROOT_DIR"/third_party/thrift + export THRIFT_JAR=libthrift-0.19.0.jar export OUT_NATIVE_DIR=$JCEF_ROOT_DIR/jcef_build/native/${buildType} export JB_TOOLS_DIR=$(realpath ../jb/tools) export JB_TOOLS_OS_DIR=$JB_TOOLS_DIR/linux @@ -231,6 +249,11 @@ stdenv.mkDerivation rec { '' + '' cd ../jcef + cp "$THRIFT_DIR"/"$THRIFT_JAR" . + cp "$JB_TOOLS_DIR"/common/thrift-module-info.java module-info.java + javac --patch-module org.apache.thrift=$THRIFT_JAR module-info.java + jar uf $THRIFT_JAR module-info.class + rm module-info.class module-info.java cp "$OUT_CLS_DIR"/jcef.jar . mkdir lib cp -R "$OUT_NATIVE_DIR"/* lib @@ -251,6 +274,7 @@ stdenv.mkDerivation rec { jmod create --module-path . --class-path jogl-all.jar --libs lib $out/jmods/jogl.all.jmod cd ../jcef jmod create --module-path . --class-path jcef.jar --libs lib $out/jmods/jcef.jmod + jmod create --module-path . --class-path $THRIFT_JAR $out/jmods/org.apache.thrift.jmod # stripJavaArchivesHook gets rid of jar file timestamps, but not of jmod file timestamps # We have to manually call strip-nondeterminism to do this for jmod files too diff --git a/pkgs/development/compilers/julia/default.nix b/pkgs/development/compilers/julia/default.nix index b1437804287c1..becbd64ea55b2 100644 --- a/pkgs/development/compilers/julia/default.nix +++ b/pkgs/development/compilers/julia/default.nix @@ -30,12 +30,12 @@ in { }); julia_110-bin = wrapJulia (callPackage (import ./generic-bin.nix { - version = "1.10.2"; + version = "1.10.4"; sha256 = { - x86_64-linux = "51bccc9bb245197f24e6b2394e6aa69c0dc1e41b4e300b796e17da34ef64db1e"; - aarch64-linux = "f319ff2812bece0918cb9ea6e0df54cc9412fc5ef8c0589b6a4fea485c07535d"; - x86_64-darwin = "52679b9285b9aa8354afade8cc5a6c98d30af31ee72e4e879d17cef5dd4d4213"; - aarch64-darwin = "c7392237725b54d2d145bf56ce362e502596ea4338523a91bf20ce02379cea80"; + x86_64-linux = "079f61757c3b5b40d2ade052b3cc4816f50f7ef6df668825772562b3746adff1"; + aarch64-linux = "ae4ae6ade84a103cdf30ce91c8d4035a0ef51c3e2e66f90a0c13abeb4e100fc4"; + x86_64-darwin = "259c18a5294dd41cc60117ecb9fc5a8b2f659807284903a65439fb9d3818c763"; + aarch64-darwin = "97b88d7f9b5724118769f3a3bd259f8f7ada48cdecf3d584cf68162dd873dd10"; }; }) { }); @@ -50,10 +50,9 @@ in { }); julia_110 = wrapJulia (callPackage (import ./generic.nix { - version = "1.10.2"; - hash = "sha256-YkaHIK+8QQ608mLtJDOpITJieHLJ9pC3BNwEXMsVVAE="; + version = "1.10.4"; + hash = "sha256-8y5Sd/XYKmOCSILN6/rBWBmbuEgUw8AZo/7MNgFYYZE="; patches = [ - ./patches/1.10/0001-skip-building-docs-as-it-requires-network-access.patch ./patches/1.10/0002-skip-failing-and-flaky-tests.patch ]; }) diff --git a/pkgs/development/compilers/julia/generic.nix b/pkgs/development/compilers/julia/generic.nix index 7f690d44e1634..209e97edcce70 100644 --- a/pkgs/development/compilers/julia/generic.nix +++ b/pkgs/development/compilers/julia/generic.nix @@ -52,10 +52,10 @@ stdenv.mkDerivation rec { "prefix=$(out)" "USE_BINARYBUILDER=0" ] ++ lib.optionals stdenv.isx86_64 [ - # https://github.com/JuliaCI/julia-buildbot/blob/master/master/inventory.py - "JULIA_CPU_TARGET=generic;sandybridge,-xsaveopt,clone_all;haswell,-rdrnd,base(1)" + # https://github.com/JuliaCI/julia-buildkite/blob/main/utilities/build_envs.sh + "JULIA_CPU_TARGET=generic;sandybridge,-xsaveopt,clone_all;haswell,-rdrnd,base(1);x86-64-v4,-rdrnd,base(1)" ] ++ lib.optionals stdenv.isAarch64 [ - "JULIA_CPU_TARGET=generic;cortex-a57;thunderx2t99;armv8.2-a,crypto,fullfp16,lse,rdm" + "JULIA_CPU_TARGET=generic;cortex-a57;thunderx2t99;carmel,clone_all;apple-m1,base(3);neoverse-512tvb,base(3)" ]; # remove forbidden reference to $TMPDIR diff --git a/pkgs/development/compilers/julia/patches/1.10/0001-skip-building-docs-as-it-requires-network-access.patch b/pkgs/development/compilers/julia/patches/1.10/0001-skip-building-docs-as-it-requires-network-access.patch deleted file mode 100644 index 6ff33b342cfdc..0000000000000 --- a/pkgs/development/compilers/julia/patches/1.10/0001-skip-building-docs-as-it-requires-network-access.patch +++ /dev/null @@ -1,34 +0,0 @@ -From da7e7b2c622bcfdc3e6484a64ade50d22d52c4dd Mon Sep 17 00:00:00 2001 -From: Nick Cao <nickcao@nichi.co> -Date: Wed, 10 Jan 2024 19:48:19 -0500 -Subject: [PATCH 1/2] skip building docs as it requires network access - ---- - Makefile | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/Makefile b/Makefile -index 1565014a0f..edd5c65244 100644 ---- a/Makefile -+++ b/Makefile -@@ -265,7 +265,7 @@ define stringreplace - endef - - --install: $(build_depsbindir)/stringreplace docs -+install: $(build_depsbindir)/stringreplace - @$(MAKE) $(QUIET_MAKE) $(JULIA_BUILD_MODE) - @for subdir in $(bindir) $(datarootdir)/julia/stdlib/$(VERSDIR) $(docdir) $(man1dir) $(includedir)/julia $(libdir) $(private_libdir) $(sysconfdir) $(private_libexecdir); do \ - mkdir -p $(DESTDIR)$$subdir; \ -@@ -368,8 +368,6 @@ endif - cp -R -L $(JULIAHOME)/base/* $(DESTDIR)$(datarootdir)/julia/base - cp -R -L $(JULIAHOME)/test/* $(DESTDIR)$(datarootdir)/julia/test - cp -R -L $(build_datarootdir)/julia/* $(DESTDIR)$(datarootdir)/julia -- # Copy documentation -- cp -R -L $(BUILDROOT)/doc/_build/html $(DESTDIR)$(docdir)/ - # Remove various files which should not be installed - -rm -f $(DESTDIR)$(datarootdir)/julia/base/version_git.sh - -rm -f $(DESTDIR)$(datarootdir)/julia/test/Makefile --- -2.43.0 - diff --git a/pkgs/development/compilers/jwasm/default.nix b/pkgs/development/compilers/jwasm/default.nix deleted file mode 100644 index fa004bca3117e..0000000000000 --- a/pkgs/development/compilers/jwasm/default.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ lib -, stdenv -, fetchFromGitHub -}: - -stdenv.mkDerivation (finalAttrs: { - pname = "jwasm"; - version = "2.17"; - - src = fetchFromGitHub { - owner = "Baron-von-Riedesel"; - repo = "JWasm"; - rev = "v${finalAttrs.version}"; - hash = "sha256-22eNtHXF+RQT4UbXIVjn1JP/s6igp5O1oQT7sVl7c1U="; - }; - - outputs = [ "out" "doc" ]; - - dontConfigure = true; - - preBuild = '' - cp ${if stdenv.cc.isClang then "CLUnix.mak" else "GccUnix.mak"} Makefile - substituteInPlace Makefile \ - --replace "/usr/local/bin" "${placeholder "out"}/bin" - ''; - - postInstall = '' - install -Dpm644 $src/Html/License.html \ - $src/Html/Manual.html \ - $src/Html/Readme.html \ - -t $doc/share/doc/jwasm/ - ''; - - meta = with lib; { - homepage = "https://github.com/Baron-von-Riedesel/JWasm/"; - description = "A MASM-compatible x86 assembler"; - changelog = "https://github.com/Baron-von-Riedesel/JWasm/releases/tag/v${finalAttrs.version}"; - license = licenses.gpl2Plus; - maintainers = with maintainers; [ AndersonTorres ]; - platforms = platforms.unix; - broken = stdenv.isDarwin; - }; -}) -# TODO: generalize for Windows builds diff --git a/pkgs/development/compilers/kind2/default.nix b/pkgs/development/compilers/kind2/default.nix index 95eedb80670f0..617f868803635 100644 --- a/pkgs/development/compilers/kind2/default.nix +++ b/pkgs/development/compilers/kind2/default.nix @@ -24,7 +24,7 @@ rustPlatform.buildRustPackage rec { RUSTC_BOOTSTRAP = true; meta = with lib; { - description = "A functional programming language and proof assistant"; + description = "Functional programming language and proof assistant"; mainProgram = "kind2"; homepage = "https://github.com/higherorderco/kind"; license = licenses.mit; diff --git a/pkgs/development/compilers/koka/default.nix b/pkgs/development/compilers/koka/default.nix index 23b7ced0a15eb..c280d2fb7e701 100644 --- a/pkgs/development/compilers/koka/default.nix +++ b/pkgs/development/compilers/koka/default.nix @@ -32,12 +32,12 @@ }: let - version = "3.1.0"; + version = "3.1.2"; src = fetchFromGitHub { owner = "koka-lang"; repo = "koka"; rev = "v${version}"; - sha256 = "sha256-Twm2Hr8BQ0xTdA30e2Az/57525jTUkmv2Zs/+SNiQns="; + sha256 = "sha256-BNkMtYf5maWtKEZzob+218ke1SIkrP7/nboQ2sZKkxI="; fetchSubmodules = true; }; kklib = stdenv.mkDerivation { @@ -65,14 +65,6 @@ mkDerivation rec { isLibrary = false; isExecutable = true; libraryToolDepends = [ hpack ]; - patches = [ - (fetchpatch { - name = "koka-stackage-22.patch"; - url = "https://github.com/koka-lang/koka/commit/95f9b360544996e06d4bb33321a83a6b9605d092.patch"; - sha256 = "1a1sv1r393wkhsnj56awsi8mqxakqdy86p7dg9i9xfv13q2g4h6x"; - includes = [ "src/**" ]; - }) - ]; executableHaskellDepends = [ aeson array diff --git a/pkgs/development/compilers/kotlin/default.nix b/pkgs/development/compilers/kotlin/default.nix index e2fc481d3bc32..b8967d64794f4 100644 --- a/pkgs/development/compilers/kotlin/default.nix +++ b/pkgs/development/compilers/kotlin/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "kotlin"; - version = "1.9.23"; + version = "2.0.0"; src = fetchurl { url = "https://github.com/JetBrains/kotlin/releases/download/v${version}/kotlin-compiler-${version}.zip"; - sha256 = "125yb2yzah7laf38m78pysvcd5a16b129a06rckrpylsmcx7s4wk"; + sha256 = "sha256-71eHMJdhVP0sWWjXWvjCcDs96Ep43/6RP2cDJuFJ2js="; }; propagatedBuildInputs = [ jre ] ; diff --git a/pkgs/development/compilers/kotlin/native.nix b/pkgs/development/compilers/kotlin/native.nix index a38daa96cf17f..044364b37c392 100644 --- a/pkgs/development/compilers/kotlin/native.nix +++ b/pkgs/development/compilers/kotlin/native.nix @@ -50,7 +50,7 @@ stdenv.mkDerivation rec { meta = { homepage = "https://kotlinlang.org/"; - description = "A modern programming language that makes developers happier"; + description = "Modern programming language that makes developers happier"; longDescription = '' Kotlin/Native is a technology for compiling Kotlin code to native binaries, which can run without a virtual machine. It is an LLVM based diff --git a/pkgs/development/compilers/ldc/binary.nix b/pkgs/development/compilers/ldc/binary.nix deleted file mode 100644 index ca7fb4f04de35..0000000000000 --- a/pkgs/development/compilers/ldc/binary.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ lib, stdenv, fetchurl, curl, tzdata, autoPatchelfHook, fixDarwinDylibNames, libxml2 -, version, hashes }: - -let - inherit (stdenv) hostPlatform; - OS = if hostPlatform.isDarwin then "osx" else hostPlatform.parsed.kernel.name; - ARCH = if hostPlatform.isDarwin && hostPlatform.isAarch64 then "arm64" else hostPlatform.parsed.cpu.name; -in stdenv.mkDerivation { - pname = "ldc-bootstrap"; - inherit version; - - src = fetchurl rec { - name = "ldc2-${version}-${OS}-${ARCH}.tar.xz"; - url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/${name}"; - sha256 = hashes."${OS}-${ARCH}" or (throw "missing bootstrap sha256 for ${OS}-${ARCH}"); - }; - - dontConfigure = true; - dontBuild = true; - - nativeBuildInputs = lib.optionals hostPlatform.isLinux [ - autoPatchelfHook - ] ++ lib.optional hostPlatform.isDarwin fixDarwinDylibNames; - - buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ libxml2 stdenv.cc.cc ]; - - propagatedBuildInputs = [ curl tzdata ]; - - installPhase = '' - mkdir -p $out - - mv bin etc import lib LICENSE README $out/ - ''; - - meta = with lib; { - description = "The LLVM-based D Compiler"; - homepage = "https://github.com/ldc-developers/ldc"; - # from https://github.com/ldc-developers/ldc/blob/master/LICENSE - license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ]; - maintainers = with maintainers; [ lionello ]; - platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; - }; -} diff --git a/pkgs/development/compilers/ldc/bootstrap.nix b/pkgs/development/compilers/ldc/bootstrap.nix deleted file mode 100644 index aa25fb77fc526..0000000000000 --- a/pkgs/development/compilers/ldc/bootstrap.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ callPackage }: -callPackage ./binary.nix { - version = "1.30.0"; - hashes = { - # Get these from `nix store prefetch-file https://github.com/ldc-developers/ldc/releases/download/v1.19.0/ldc2-1.19.0-osx-x86_64.tar.xz` etc.. - osx-x86_64 = "sha256-AAWZvxuZC82xvrW6fpYm783TY+H8k3DvqE94ZF1yjmk="; - linux-x86_64 = "sha256-V4TUzEfQhFrwiX07dHOgjdAoGkzausCkhnQIQNAU/eE="; - linux-aarch64 = "sha256-kTeglub75iv/jWWNPCn15aCGAbmck0RQl6L7bFOUu7Y="; - osx-arm64 = "sha256-Nb/owBdIeroB9jLMDvwjo8bvsTC9vFyJPLMTOMsSAd4="; - }; -} diff --git a/pkgs/development/compilers/ldc/default.nix b/pkgs/development/compilers/ldc/default.nix deleted file mode 100644 index 6b07612177038..0000000000000 --- a/pkgs/development/compilers/ldc/default.nix +++ /dev/null @@ -1,4 +0,0 @@ -import ./generic.nix { - version = "1.36.0"; - sha256 = "sha256-oAx5BzEjqIfBf0Rsd4KklVajUSo9Natna31Trhu41u8="; -} diff --git a/pkgs/development/compilers/ldc/generic.nix b/pkgs/development/compilers/ldc/generic.nix deleted file mode 100644 index 07b6986189c09..0000000000000 --- a/pkgs/development/compilers/ldc/generic.nix +++ /dev/null @@ -1,137 +0,0 @@ -{ version, sha256 }: -{ lib, stdenv, fetchurl, cmake, ninja, llvm_17, curl, tzdata -, libconfig, lit, gdb, unzip, darwin, bash -, callPackage, makeWrapper, runCommand, targetPackages -, ldcBootstrap ? callPackage ./bootstrap.nix { } -}: - -let - pathConfig = runCommand "ldc-lib-paths" {} '' - mkdir $out - echo ${tzdata}/share/zoneinfo/ > $out/TZDatabaseDirFile - echo ${curl.out}/lib/libcurl${stdenv.hostPlatform.extensions.sharedLibrary} > $out/LibcurlPathFile - ''; - -in - -stdenv.mkDerivation rec { - pname = "ldc"; - inherit version; - - src = fetchurl { - url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz"; - inherit sha256; - }; - - # https://issues.dlang.org/show_bug.cgi?id=19553 - hardeningDisable = [ "fortify" ]; - - postUnpack = '' - patchShebangs . - '' - + '' - rm ldc-${version}-src/tests/dmd/fail_compilation/mixin_gc.d - rm ldc-${version}-src/tests/dmd/runnable/xtest46_gc.d - rm ldc-${version}-src/tests/dmd/runnable/testptrref_gc.d - - # test depends on current year - rm ldc-${version}-src/tests/dmd/compilable/ddocYear.d - '' - + lib.optionalString stdenv.hostPlatform.isDarwin '' - # https://github.com/NixOS/nixpkgs/issues/34817 - rm -r ldc-${version}-src/tests/plugins/addFuncEntryCall - ''; - - postPatch = '' - # Setting SHELL=$SHELL when dmd testsuite is run doesn't work on Linux somehow - substituteInPlace tests/dmd/Makefile --replace "SHELL=/bin/bash" "SHELL=${bash}/bin/bash" - '' - + lib.optionalString stdenv.hostPlatform.isLinux '' - substituteInPlace runtime/phobos/std/socket.d --replace "assert(ih.addrList[0] == 0x7F_00_00_01);" "" - '' - + lib.optionalString stdenv.hostPlatform.isDarwin '' - substituteInPlace runtime/phobos/std/socket.d --replace "foreach (name; names)" "names = []; foreach (name; names)" - ''; - - nativeBuildInputs = [ - cmake ldcBootstrap lit lit.python llvm_17.dev makeWrapper ninja unzip - ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ - darwin.apple_sdk.frameworks.Foundation - ] - ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ - # https://github.com/NixOS/nixpkgs/pull/36378#issuecomment-385034818 - gdb - ]; - - buildInputs = [ curl tzdata ]; - - cmakeFlags = [ - "-DD_FLAGS=-d-version=TZDatabaseDir;-d-version=LibcurlPath;-J${pathConfig}" - ]; - - postConfigure = '' - export DMD=$PWD/bin/ldmd2 - ''; - - makeFlags = [ "DMD=$DMD" ]; - - fixNames = lib.optionalString stdenv.hostPlatform.isDarwin '' - fixDarwinDylibNames() { - local flags=() - - for fn in "$@"; do - flags+=(-change "$(basename "$fn")" "$fn") - done - - for fn in "$@"; do - if [ -L "$fn" ]; then continue; fi - echo "$fn: fixing dylib" - install_name_tool -id "$fn" "''${flags[@]}" "$fn" - done - } - - fixDarwinDylibNames $(find "$(pwd)/lib" -name "*.dylib") - export DYLD_LIBRARY_PATH=$(pwd)/lib - ''; - - # https://github.com/ldc-developers/ldc/issues/2497#issuecomment-459633746 - additionalExceptions = lib.optionalString stdenv.hostPlatform.isDarwin - "|druntime-test-shared"; - - checkPhase = '' - # Build default lib test runners - ninja -j$NIX_BUILD_CORES all-test-runners - - ${fixNames} - - # Run dmd testsuite - export DMD_TESTSUITE_MAKE_ARGS="-j$NIX_BUILD_CORES DMD=$DMD" - ctest -V -R "dmd-testsuite" - - # Build and run LDC D unittests. - ctest --output-on-failure -R "ldc2-unittest" - - # Run LIT testsuite. - ctest -V -R "lit-tests" - - # Run default lib unittests - ctest -j$NIX_BUILD_CORES --output-on-failure -E "ldc2-unittest|lit-tests|dmd-testsuite${additionalExceptions}" - ''; - - postInstall = '' - wrapProgram $out/bin/ldc2 \ - --prefix PATH ":" "${targetPackages.stdenv.cc}/bin" \ - --set-default CC "${targetPackages.stdenv.cc}/bin/cc" - ''; - - meta = with lib; { - description = "The LLVM-based D compiler"; - homepage = "https://github.com/ldc-developers/ldc"; - # from https://github.com/ldc-developers/ldc/blob/master/LICENSE - license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ]; - mainProgram = "ldc2"; - maintainers = with maintainers; [ lionello jtbx ]; - platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; - }; -} diff --git a/pkgs/development/compilers/ligo/default.nix b/pkgs/development/compilers/ligo/default.nix index 9b57fd0a2e257..5991691165126 100644 --- a/pkgs/development/compilers/ligo/default.nix +++ b/pkgs/development/compilers/ligo/default.nix @@ -125,7 +125,7 @@ ocamlPackages.buildDunePackage rec { meta = with lib; { homepage = "https://ligolang.org/"; downloadPage = "https://ligolang.org/docs/intro/installation"; - description = "A friendly Smart Contract Language for Tezos"; + description = "Friendly Smart Contract Language for Tezos"; mainProgram = "ligo"; license = licenses.mit; platforms = ocamlPackages.ocaml.meta.platforms; diff --git a/pkgs/development/compilers/llvm/12/default.nix b/pkgs/development/compilers/llvm/12/default.nix index 45955dc5e1b36..c7c119a45b8ae 100644 --- a/pkgs/development/compilers/llvm/12/default.nix +++ b/pkgs/development/compilers/llvm/12/default.nix @@ -1,7 +1,7 @@ -{ lowPrio, newScope, pkgs, lib, stdenv, cmake +{ lowPrio, newScope, pkgs, lib, stdenv , preLibcCrossHeaders -, substitute, substituteAll, fetchFromGitHub, fetchpatch -, libxml2, python3, isl, fetchurl, overrideCC, wrapCCWith, wrapBintoolsWith +, substitute, substituteAll, fetchFromGitHub, fetchpatch, fetchurl +, overrideCC, wrapCCWith, wrapBintoolsWith , buildLlvmTools # tools, but from the previous stage, for cross , targetLlvmLibraries # libraries, but from the next stage, for cross , targetLlvm @@ -17,29 +17,36 @@ then null else pkgs.bintools , darwin -}: +# Allows passthrough to packages via newScope. This makes it possible to +# do `(llvmPackages.override { <someLlvmDependency> = bar; }).clang` and get +# an llvmPackages whose packages are overridden in an internally consistent way. +, ... +}@args: let - release_version = "12.0.1"; candidate = ""; # empty or "rcN" dash-candidate = lib.optionalString (candidate != "") "-${candidate}"; - version = "${release_version}${dash-candidate}"; # differentiating these (variables) is important for RCs - fetch = name: sha256: fetchurl { - url = "https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/${name}-${release_version}${candidate}.src.tar.xz"; - inherit sha256; + metadata = rec { + release_version = "12.0.1"; + version = "${release_version}${dash-candidate}"; # differentiating these (variables) is important for RCs + inherit (import ../common/common-let.nix { inherit lib release_version; }) llvm_meta; + fetch = name: sha256: fetchurl { + url = "https://github.com/llvm/llvm-project/releases/download/llvmorg-${metadata.version}/${name}-${metadata.release_version}${candidate}.src.tar.xz"; + inherit sha256; + }; + clang-tools-extra_src = fetch "clang-tools-extra" "1r9a4fdz9ci58b5z2inwvm4z4cdp6scrivnaw05dggkxz7yrwrb5"; }; - clang-tools-extra_src = fetch "clang-tools-extra" "1r9a4fdz9ci58b5z2inwvm4z4cdp6scrivnaw05dggkxz7yrwrb5"; + inherit (metadata) fetch; - inherit (import ../common/common-let.nix { inherit lib release_version; }) llvm_meta; tools = lib.makeExtensible (tools: let - callPackage = newScope (tools // { inherit stdenv cmake libxml2 python3 isl release_version version fetch buildLlvmTools; }); + callPackage = newScope (tools // args // metadata); mkExtraBuildCommands0 = cc: '' rsrc="$out/resource-root" mkdir "$rsrc" - ln -s "${cc.lib}/lib/clang/${release_version}/include" "$rsrc" + ln -s "${cc.lib}/lib/clang/${metadata.release_version}/include" "$rsrc" echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags ''; mkExtraBuildCommands = cc: mkExtraBuildCommands0 cc + '' @@ -58,8 +65,52 @@ let in { - libllvm = callPackage ./llvm { - inherit llvm_meta; + libllvm = callPackage ../common/llvm { + src = fetch "llvm" "1pzx9zrmd7r3481sbhwvkms68fwhffpp4mmz45dgrkjpyl2q96kx"; + polly_src = fetch "polly" "1yfm9ixda4a2sx7ak5vswijx4ydk5lv1c1xh39xmd2kh299y4m12"; + patches = [ + # When cross-compiling we configure llvm-config-native with an approximation + # of the flags used for the normal LLVM build. To avoid the need for building + # a native libLLVM.so (which would fail) we force llvm-config to be linked + # statically against the necessary LLVM components always. + ../common/llvm/llvm-config-link-static.patch + # Fix llvm being miscompiled by some gccs. See llvm/llvm-project#49955 + # Fix llvm being miscompiled by some gccs. See https://github.com/llvm/llvm-project/issues/49955 + ./llvm/fix-llvm-issue-49955.patch + + ./llvm/gnu-install-dirs.patch + # On older CPUs (e.g. Hydra/wendy) we'd be getting an error in this test. + (fetchpatch { + name = "uops-CMOV16rm-noreg.diff"; + url = "https://github.com/llvm/llvm-project/commit/9e9f991ac033.diff"; + sha256 = "sha256:12s8vr6ibri8b48h2z38f3afhwam10arfiqfy4yg37bmc054p5hi"; + stripLen = 1; + }) + + # Fix musl build. + (fetchpatch { + url = "https://github.com/llvm/llvm-project/commit/5cd554303ead0f8891eee3cd6d25cb07f5a7bf67.patch"; + relative = "llvm"; + hash = "sha256-XPbvNJ45SzjMGlNUgt/IgEvM2dHQpDOe6woUJY+nUYA="; + }) + + # Backport gcc-13 fixes with missing includes. + (fetchpatch { + name = "signals-gcc-13.patch"; + url = "https://github.com/llvm/llvm-project/commit/ff1681ddb303223973653f7f5f3f3435b48a1983.patch"; + hash = "sha256-CXwYxQezTq5vdmc8Yn88BUAEly6YZ5VEIA6X3y5NNOs="; + stripLen = 1; + }) + (fetchpatch { + name = "base64-gcc-13.patch"; + url = "https://github.com/llvm/llvm-project/commit/5e9be93566f39ee6cecd579401e453eccfbe81e5.patch"; + hash = "sha256-PAwrVrvffPd7tphpwCkYiz+67szPRzRB2TXBvKfzQ7U="; + stripLen = 1; + }) + ]; + pollyPatches = [ + ./llvm/gnu-install-dirs-polly.patch + ]; }; # `llvm` historically had the binaries. When choosing an output explicitly, @@ -77,7 +128,6 @@ let libllvmLibdir = "${tools.libllvm.lib}/lib"; }) ]; - inherit clang-tools-extra_src llvm_meta; }; clang-unwrapped = tools.libclang; @@ -99,6 +149,9 @@ let # python3 = pkgs.python3; # don't use python-boot # }); + # Wrapper for standalone command line utilities + clang-tools = callPackage ../common/clang-tools { }; + # pick clang appropriate for package set we are targeting clang = /**/ if stdenv.targetPlatform.libc == null then tools.clangNoLibc @@ -130,7 +183,6 @@ let patches = [ ./lld/gnu-install-dirs.patch ]; - inherit llvm_meta; inherit (libraries) libunwind; }; @@ -151,7 +203,6 @@ let resourceDirPatch ./lldb/gnu-install-dirs.patch ]; - inherit llvm_meta; }; # Below, is the LLVM bootstrapping logic. It handles building a @@ -242,7 +293,7 @@ let }); libraries = lib.makeExtensible (libraries: let - callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake libxml2 python3 isl release_version version fetch; }); + callPackage = newScope (libraries // buildLlvmTools // args // metadata); in { compiler-rt-libc = callPackage ../common/compiler-rt { @@ -261,7 +312,6 @@ let ../common/compiler-rt/armv6-sync-ops-no-thumb.patch ../common/compiler-rt/armv6-no-ldrexd-strexd.patch ]; - inherit llvm_meta; stdenv = if stdenv.hostPlatform.useLLVM or false then overrideCC stdenv buildLlvmTools.clangNoCompilerRtWithLibc else stdenv; @@ -283,7 +333,6 @@ let ../common/compiler-rt/armv6-sync-ops-no-thumb.patch ../common/compiler-rt/armv6-no-ldrexd-strexd.patch ]; - inherit llvm_meta; stdenv = if stdenv.hostPlatform.useLLVM or false then overrideCC stdenv buildLlvmTools.clangNoCompilerRt else stdenv; @@ -302,7 +351,7 @@ let src = fetchFromGitHub { owner = "llvm"; repo = "llvm-project"; - rev = "refs/tags/llvmorg-${version}"; + rev = "refs/tags/llvmorg-${metadata.version}"; sparseCheckout = [ "libcxx" "libcxxabi" @@ -327,7 +376,6 @@ let ]; }) ]; - inherit llvm_meta; stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx; }; @@ -336,7 +384,6 @@ let patches = [ ./libunwind/gnu-install-dirs.patch ]; - inherit llvm_meta; stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx; }; @@ -349,9 +396,8 @@ let hash = "sha256-UxIlAifXnexF/MaraPW0Ut6q+sf3e7y1fMdEv1q103A="; }) ]; - inherit llvm_meta targetLlvm; }; }); noExtend = extensible: lib.attrsets.removeAttrs extensible [ "extend" ]; -in { inherit tools libraries release_version; } // (noExtend libraries) // (noExtend tools) +in { inherit tools libraries; inherit (metadata) release_version; } // (noExtend libraries) // (noExtend tools) diff --git a/pkgs/development/compilers/llvm/12/lldb/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/12/lldb/gnu-install-dirs.patch index afc945ce26147..9a4d2b272acbe 100644 --- a/pkgs/development/compilers/llvm/12/lldb/gnu-install-dirs.patch +++ b/pkgs/development/compilers/llvm/12/lldb/gnu-install-dirs.patch @@ -89,3 +89,22 @@ index b5633e2..86e4738 100644 endif() get_target_property(lldb_python_bindings_dir swig_wrapper_python BINARY_DIR) finish_swig_python("lldb-python" "${lldb_python_bindings_dir}" "${lldb_python_target_dir}") +diff --git a/source/API/CMakeLists.txt b/source/API/CMakeLists.txt +index b5633e2..86e4738 100644 +--- a/source/API/CMakeLists.txt 2024-05-30 19:08:14.241656491 -0700 ++++ b/source/API/CMakeLists.txt 2024-05-30 19:08:48.218219667 -0700 +@@ -113,14 +113,6 @@ + ${option_install_prefix} + ) + +-# lib/pythonX.Y/dist-packages/lldb/_lldb.so is a symlink to lib/liblldb.so, +-# which depends on lib/libLLVM*.so (BUILD_SHARED_LIBS) or lib/libLLVM-10git.so +-# (LLVM_LINK_LLVM_DYLIB). Add an additional rpath $ORIGIN/../../../../lib so +-# that _lldb.so can be loaded from Python. +-if(LLDB_ENABLE_PYTHON AND (BUILD_SHARED_LIBS OR LLVM_LINK_LLVM_DYLIB) AND UNIX AND NOT APPLE) +- set_property(TARGET liblldb APPEND PROPERTY INSTALL_RPATH "\$ORIGIN/../../../../lib${LLVM_LIBDIR_SUFFIX}") +-endif() +- + if(Python3_RPATH) + set_property(TARGET liblldb APPEND PROPERTY INSTALL_RPATH "${Python3_RPATH}") + set_property(TARGET liblldb APPEND PROPERTY BUILD_RPATH "${Python3_RPATH}") diff --git a/pkgs/development/compilers/llvm/12/llvm/default.nix b/pkgs/development/compilers/llvm/12/llvm/default.nix deleted file mode 100644 index 4745345a3f712..0000000000000 --- a/pkgs/development/compilers/llvm/12/llvm/default.nix +++ /dev/null @@ -1,357 +0,0 @@ -{ lib, stdenv, llvm_meta -, pkgsBuildBuild -, fetch -, fetchpatch -, cmake -, python3 -, libffi -, enableGoldPlugin ? libbfd.hasPluginAPI -, libbfd -, libpfm -, libxml2 -, ncurses -, version -, release_version -, zlib -, buildLlvmTools -, debugVersion ? false -, doCheck ? stdenv.isLinux && (!stdenv.isx86_32) && (!stdenv.hostPlatform.isMusl) - && (stdenv.hostPlatform == stdenv.buildPlatform) -, enableManpages ? false -, enableSharedLibraries ? !stdenv.hostPlatform.isStatic -# broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245 -# broken for the armv7l builder -, enablePFM ? stdenv.isLinux && !stdenv.hostPlatform.isAarch -, enablePolly ? false -}: - -let - inherit (lib) optional optionals optionalString; - - # Used when creating a version-suffixed symlink of libLLVM.dylib - shortVersion = with lib; - concatStringsSep "." (take 1 (splitString "." release_version)); - - # Ordinarily we would just the `doCheck` and `checkDeps` functionality - # `mkDerivation` gives us to manage our test dependencies (instead of breaking - # out `doCheck` as a package level attribute). - # - # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in - # particular the children it uses to do feature detection. - # - # This means that python deps we add to `checkDeps` (which the python - # interpreter is made aware of via `$PYTHONPATH` – populated by the python - # setup hook) are not picked up by `lit` which causes it to skip tests. - # - # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work - # because this package is shadowed in `$PATH` by the regular `python3` - # package. - # - # So, we "manually" assemble one python derivation for the package to depend - # on, taking into account whether checks are enabled or not: - python = if doCheck then - let - checkDeps = ps: with ps; [ psutil ]; - in python3.withPackages checkDeps - else python3; - -in stdenv.mkDerivation (rec { - pname = "llvm"; - inherit version; - - src = fetch pname "1pzx9zrmd7r3481sbhwvkms68fwhffpp4mmz45dgrkjpyl2q96kx"; - polly_src = fetch "polly" "1yfm9ixda4a2sx7ak5vswijx4ydk5lv1c1xh39xmd2kh299y4m12"; - - unpackPhase = '' - unpackFile $src - mv llvm-${release_version}* llvm - sourceRoot=$PWD/llvm - '' + optionalString enablePolly '' - unpackFile $polly_src - mv polly-* $sourceRoot/tools/polly - ''; - - outputs = [ "out" "lib" "dev" "python" ]; - - nativeBuildInputs = [ cmake python ] - ++ optionals enableManpages [ python3.pkgs.sphinx python3.pkgs.recommonmark ]; - - buildInputs = [ libxml2 libffi ] - ++ optional enablePFM libpfm; # exegesis - - propagatedBuildInputs = optionals (stdenv.buildPlatform == stdenv.hostPlatform) [ ncurses ] - ++ [ zlib ]; - - patches = [ - # When cross-compiling we configure llvm-config-native with an approximation - # of the flags used for the normal LLVM build. To avoid the need for building - # a native libLLVM.so (which would fail) we force llvm-config to be linked - # statically against the necessary LLVM components always. - ../../common/llvm/llvm-config-link-static.patch - # Fix llvm being miscompiled by some gccs. See llvm/llvm-project#49955 - # Fix llvm being miscompiled by some gccs. See https://github.com/llvm/llvm-project/issues/49955 - ./fix-llvm-issue-49955.patch - - ./gnu-install-dirs.patch - # On older CPUs (e.g. Hydra/wendy) we'd be getting an error in this test. - (fetchpatch { - name = "uops-CMOV16rm-noreg.diff"; - url = "https://github.com/llvm/llvm-project/commit/9e9f991ac033.diff"; - sha256 = "sha256:12s8vr6ibri8b48h2z38f3afhwam10arfiqfy4yg37bmc054p5hi"; - stripLen = 1; - }) - - # Fix musl build. - (fetchpatch { - url = "https://github.com/llvm/llvm-project/commit/5cd554303ead0f8891eee3cd6d25cb07f5a7bf67.patch"; - relative = "llvm"; - hash = "sha256-XPbvNJ45SzjMGlNUgt/IgEvM2dHQpDOe6woUJY+nUYA="; - }) - - # Backport gcc-13 fixes with missing includes. - (fetchpatch { - name = "signals-gcc-13.patch"; - url = "https://github.com/llvm/llvm-project/commit/ff1681ddb303223973653f7f5f3f3435b48a1983.patch"; - hash = "sha256-CXwYxQezTq5vdmc8Yn88BUAEly6YZ5VEIA6X3y5NNOs="; - stripLen = 1; - }) - (fetchpatch { - name = "base64-gcc-13.patch"; - url = "https://github.com/llvm/llvm-project/commit/5e9be93566f39ee6cecd579401e453eccfbe81e5.patch"; - hash = "sha256-PAwrVrvffPd7tphpwCkYiz+67szPRzRB2TXBvKfzQ7U="; - stripLen = 1; - }) - ] ++ lib.optional enablePolly ./gnu-install-dirs-polly.patch; - - postPatch = optionalString stdenv.isDarwin '' - substituteInPlace cmake/modules/AddLLVM.cmake \ - --replace 'set(_install_name_dir INSTALL_NAME_DIR "@rpath")' "set(_install_name_dir)" \ - --replace 'set(_install_rpath "@loader_path/../''${CMAKE_INSTALL_LIBDIR}''${LLVM_LIBDIR_SUFFIX}" ''${extra_libdir})' "" - '' + '' - # FileSystem permissions tests fail with various special bits - substituteInPlace unittests/Support/CMakeLists.txt \ - --replace "Path.cpp" "" - rm unittests/Support/Path.cpp - substituteInPlace unittests/IR/CMakeLists.txt \ - --replace "PassBuilderCallbacksTest.cpp" "" - rm unittests/IR/PassBuilderCallbacksTest.cpp - # TODO: Fix failing tests: - rm test/DebugInfo/X86/vla-multi.ll - '' + optionalString stdenv.hostPlatform.isMusl '' - patch -p1 -i ${../../common/llvm/TLI-musl.patch} - substituteInPlace unittests/Support/CMakeLists.txt \ - --replace "add_subdirectory(DynamicLibrary)" "" - rm unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp - # valgrind unhappy with musl or glibc, but fails w/musl only - rm test/CodeGen/AArch64/wineh4.mir - '' + optionalString stdenv.hostPlatform.isAarch32 '' - # skip failing X86 test cases on 32-bit ARM - rm test/DebugInfo/X86/convert-debugloc.ll - rm test/DebugInfo/X86/convert-inlined.ll - rm test/DebugInfo/X86/convert-linked.ll - rm test/tools/dsymutil/X86/op-convert.test - rm test/tools/gold/X86/split-dwarf.ll - rm test/tools/llvm-objcopy/MachO/universal-object.test - '' + optionalString (stdenv.hostPlatform.system == "armv6l-linux") '' - # Seems to require certain floating point hardware (NEON?) - rm test/ExecutionEngine/frem.ll - '' + '' - patchShebangs test/BugPoint/compile-custom.ll.py - '' + '' - # Tweak tests to ignore namespace part of type to support - # gcc-12: https://gcc.gnu.org/PR103598. - # The change below mangles strings like: - # CHECK-NEXT: Starting llvm::Function pass manager run. - # to: - # CHECK-NEXT: Starting {{.*}}Function pass manager run. - for f in \ - test/Other/new-pass-manager.ll \ - test/Other/new-pm-O0-defaults.ll \ - test/Other/new-pm-defaults.ll \ - test/Other/new-pm-lto-defaults.ll \ - test/Other/new-pm-thinlto-defaults.ll \ - test/Other/pass-pipeline-parsing.ll \ - test/Transforms/Inline/cgscc-incremental-invalidate.ll \ - test/Transforms/Inline/clear-analyses.ll \ - test/Transforms/LoopUnroll/unroll-loop-invalidation.ll \ - test/Transforms/SCCP/ipsccp-preserve-analysis.ll \ - test/Transforms/SCCP/preserve-analysis.ll \ - test/Transforms/SROA/dead-inst.ll \ - test/tools/gold/X86/new-pm.ll \ - ; do - echo "PATCH: $f" - substituteInPlace $f \ - --replace 'Starting llvm::' 'Starting {{.*}}' \ - --replace 'Finished llvm::' 'Finished {{.*}}' - done - '' + '' - # gcc-13 fix - sed -i '/#include <string>/i#include <cstdint>' \ - include/llvm/DebugInfo/Symbolize/DIPrinter.h - ''; - - preConfigure = '' - # Workaround for configure flags that need to have spaces - cmakeFlagsArray+=( - -DLLVM_LIT_ARGS='-svj''${NIX_BUILD_CORES} --no-progress-bar' - ) - ''; - - # hacky fix: created binaries need to be run before installation - preBuild = '' - mkdir -p $out/ - ln -sv $PWD/lib $out - ''; - - # E.g. mesa.drivers use the build-id as a cache key (see #93946): - LDFLAGS = optionalString (enableSharedLibraries && !stdenv.isDarwin) "-Wl,--build-id=sha1"; - - hardeningDisable = [ "trivialautovarinit" ]; - - cmakeBuildType = if debugVersion then "Debug" else "Release"; - - cmakeFlags = with stdenv; let - # These flags influence llvm-config's BuildVariables.inc in addition to the - # general build. We need to make sure these are also passed via - # CROSS_TOOLCHAIN_FLAGS_NATIVE when cross-compiling or llvm-config-native - # will return different results from the cross llvm-config. - # - # Some flags don't need to be repassed because LLVM already does so (like - # CMAKE_BUILD_TYPE), others are irrelevant to the result. - flagsForLlvmConfig = [ - "-DLLVM_INSTALL_CMAKE_DIR=${placeholder "dev"}/lib/cmake/llvm/" - "-DLLVM_ENABLE_RTTI=ON" - ] ++ optionals enableSharedLibraries [ - "-DLLVM_LINK_LLVM_DYLIB=ON" - ]; - in flagsForLlvmConfig ++ [ - "-DLLVM_INSTALL_UTILS=ON" # Needed by rustc - "-DLLVM_BUILD_TESTS=${if doCheck then "ON" else "OFF"}" - "-DLLVM_ENABLE_FFI=ON" - "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}" - "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}" - "-DLLVM_ENABLE_DUMP=ON" - ] ++ optionals stdenv.hostPlatform.isStatic [ - # Disables building of shared libs, -fPIC is still injected by cc-wrapper - "-DLLVM_ENABLE_PIC=OFF" - "-DLLVM_BUILD_STATIC=ON" - # libxml2 needs to be disabled because the LLVM build system ignores its .la - # file and doesn't link zlib as well. - # https://github.com/ClangBuiltLinux/tc-build/issues/150#issuecomment-845418812 - "-DLLVM_ENABLE_LIBXML2=OFF" - ] ++ optionals enableManpages [ - "-DLLVM_BUILD_DOCS=ON" - "-DLLVM_ENABLE_SPHINX=ON" - "-DSPHINX_OUTPUT_MAN=ON" - "-DSPHINX_OUTPUT_HTML=OFF" - "-DSPHINX_WARNINGS_AS_ERRORS=OFF" - ] ++ optionals (enableGoldPlugin) [ - "-DLLVM_BINUTILS_INCDIR=${libbfd.dev}/include" - ] ++ optionals isDarwin [ - "-DLLVM_ENABLE_LIBCXX=ON" - "-DCAN_TARGET_i386=false" - ] ++ optionals ((stdenv.hostPlatform != stdenv.buildPlatform) && !(stdenv.buildPlatform.canExecute stdenv.hostPlatform)) [ - "-DCMAKE_CROSSCOMPILING=True" - "-DLLVM_TABLEGEN=${buildLlvmTools.llvm}/bin/llvm-tblgen" - ( - let - nativeCC = pkgsBuildBuild.targetPackages.stdenv.cc; - nativeBintools = nativeCC.bintools.bintools; - nativeToolchainFlags = [ - "-DCMAKE_C_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}cc" - "-DCMAKE_CXX_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}c++" - "-DCMAKE_AR=${nativeBintools}/bin/${nativeBintools.targetPrefix}ar" - "-DCMAKE_STRIP=${nativeBintools}/bin/${nativeBintools.targetPrefix}strip" - "-DCMAKE_RANLIB=${nativeBintools}/bin/${nativeBintools.targetPrefix}ranlib" - ]; - # We need to repass the custom GNUInstallDirs values, otherwise CMake - # will choose them for us, leading to wrong results in llvm-config-native - nativeInstallFlags = [ - "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}" - "-DCMAKE_INSTALL_BINDIR=${placeholder "out"}/bin" - "-DCMAKE_INSTALL_INCLUDEDIR=${placeholder "dev"}/include" - "-DCMAKE_INSTALL_LIBDIR=${placeholder "lib"}/lib" - "-DCMAKE_INSTALL_LIBEXECDIR=${placeholder "lib"}/libexec" - ]; - in "-DCROSS_TOOLCHAIN_FLAGS_NATIVE:list=" - + lib.concatStringsSep ";" (lib.concatLists [ - flagsForLlvmConfig - nativeToolchainFlags - nativeInstallFlags - ]) - ) - ]; - - postBuild = '' - rm -fR $out - ''; - - preCheck = '' - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD/lib - ''; - - postInstall = '' - mkdir -p $python/share - mv $out/share/opt-viewer $python/share/opt-viewer - moveToOutput "bin/llvm-config*" "$dev" - substituteInPlace "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" \ - --replace "\''${_IMPORT_PREFIX}/lib/lib" "$lib/lib/lib" \ - --replace "$out/bin/llvm-config" "$dev/bin/llvm-config" - substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \ - --replace 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}'"$lib"'")' - '' - + optionalString (stdenv.isDarwin && enableSharedLibraries) '' - ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib - ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib - '' - + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' - cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native - ''; - - inherit doCheck; - - checkTarget = "check-all"; - - requiredSystemFeatures = [ "big-parallel" ]; - meta = llvm_meta // { - homepage = "https://llvm.org/"; - description = "A collection of modular and reusable compiler and toolchain technologies"; - longDescription = '' - The LLVM Project is a collection of modular and reusable compiler and - toolchain technologies. Despite its name, LLVM has little to do with - traditional virtual machines. The name "LLVM" itself is not an acronym; it - is the full name of the project. - LLVM began as a research project at the University of Illinois, with the - goal of providing a modern, SSA-based compilation strategy capable of - supporting both static and dynamic compilation of arbitrary programming - languages. Since then, LLVM has grown to be an umbrella project consisting - of a number of subprojects, many of which are being used in production by - a wide variety of commercial and open source projects as well as being - widely used in academic research. Code in the LLVM project is licensed - under the "Apache 2.0 License with LLVM exceptions". - ''; - }; -} // lib.optionalAttrs enableManpages { - pname = "llvm-manpages"; - - buildPhase = '' - make docs-llvm-man - ''; - - propagatedBuildInputs = []; - - installPhase = '' - make -C docs install - ''; - - postPatch = null; - postInstall = null; - - outputs = [ "out" ]; - - doCheck = false; - - meta = llvm_meta // { - description = "man pages for LLVM ${version}"; - }; -}) diff --git a/pkgs/development/compilers/llvm/13/default.nix b/pkgs/development/compilers/llvm/13/default.nix index 018fb0c638505..ffbbe1deb0d4e 100644 --- a/pkgs/development/compilers/llvm/13/default.nix +++ b/pkgs/development/compilers/llvm/13/default.nix @@ -1,7 +1,7 @@ -{ lowPrio, newScope, pkgs, lib, stdenv, cmake +{ lowPrio, newScope, pkgs, lib, stdenv , preLibcCrossHeaders -, fetchpatch -, libxml2, python3, isl, fetchFromGitHub, substitute, substituteAll, overrideCC, wrapCCWith, wrapBintoolsWith +, substitute, substituteAll, fetchFromGitHub, fetchpatch +, overrideCC, wrapCCWith, wrapBintoolsWith , buildLlvmTools # tools, but from the previous stage, for cross , targetLlvmLibraries # libraries, but from the next stage, for cross , targetLlvm @@ -40,8 +40,11 @@ # to you to make sure that the LLVM repo given matches the release configuration # specified. , monorepoSrc ? null - -}: +# Allows passthrough to packages via newScope. This makes it possible to +# do `(llvmPackages.override { <someLlvmDependency> = bar; }).clang` and get +# an llvmPackages whose packages are overridden in an internally consistent way. +, ... +}@args: assert lib.assertMsg @@ -53,19 +56,23 @@ assert let monorepoSrc' = monorepoSrc; in let - # Import releaseInfo separately to avoid infinite recursion - inherit (import ../common/common-let.nix { inherit lib gitRelease officialRelease; }) releaseInfo; - inherit (releaseInfo) release_version version; - inherit (import ../common/common-let.nix { inherit lib fetchFromGitHub release_version gitRelease officialRelease monorepoSrc'; }) llvm_meta monorepoSrc; - - src = monorepoSrc; + metadata = rec { + # Import releaseInfo separately to avoid infinite recursion + inherit (import ../common/common-let.nix { inherit lib gitRelease officialRelease; }) releaseInfo; + inherit (releaseInfo) release_version version; + inherit (import ../common/common-let.nix { inherit lib fetchFromGitHub release_version gitRelease officialRelease monorepoSrc'; }) llvm_meta monorepoSrc; + src = monorepoSrc; + }; tools = lib.makeExtensible (tools: let - callPackage = newScope (tools // { inherit stdenv cmake libxml2 python3 isl release_version version src buildLlvmTools; }); + callPackage = newScope (tools // args // metadata + # Previously monorepoSrc was erroneously not being passed through. + // { monorepoSrc = null; } # Preserve a bug during #307211, TODO: remove; causes llvm 13 rebuild. + ); mkExtraBuildCommands0 = cc: '' rsrc="$out/resource-root" mkdir "$rsrc" - ln -s "${cc.lib}/lib/clang/${release_version}/include" "$rsrc" + ln -s "${cc.lib}/lib/clang/${metadata.release_version}/include" "$rsrc" echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags ''; mkExtraBuildCommands = cc: mkExtraBuildCommands0 cc + '' @@ -84,8 +91,47 @@ in let in { - libllvm = callPackage ./llvm { - inherit llvm_meta; + libllvm = callPackage ../common/llvm { + patches = [ + # When cross-compiling we configure llvm-config-native with an approximation + # of the flags used for the normal LLVM build. To avoid the need for building + # a native libLLVM.so (which would fail) we force llvm-config to be linked + # statically against the necessary LLVM components always. + ../common/llvm/llvm-config-link-static.patch + + ./llvm/gnu-install-dirs.patch + + # Fix random compiler crashes: https://bugs.llvm.org/show_bug.cgi?id=50611 + (fetchpatch { + url = "https://raw.githubusercontent.com/archlinux/svntogit-packages/4764a4f8c920912a2bfd8b0eea57273acfe0d8a8/trunk/no-strict-aliasing-DwarfCompileUnit.patch"; + sha256 = "18l6mrvm2vmwm77ckcnbjvh6ybvn72rhrb799d4qzwac4x2ifl7g"; + stripLen = 1; + }) + + # Fix musl build. + (fetchpatch { + url = "https://github.com/llvm/llvm-project/commit/5cd554303ead0f8891eee3cd6d25cb07f5a7bf67.patch"; + relative = "llvm"; + hash = "sha256-XPbvNJ45SzjMGlNUgt/IgEvM2dHQpDOe6woUJY+nUYA="; + }) + + # Backport gcc-13 fixes with missing includes. + (fetchpatch { + name = "signals-gcc-13.patch"; + url = "https://github.com/llvm/llvm-project/commit/ff1681ddb303223973653f7f5f3f3435b48a1983.patch"; + hash = "sha256-CXwYxQezTq5vdmc8Yn88BUAEly6YZ5VEIA6X3y5NNOs="; + stripLen = 1; + }) + (fetchpatch { + name = "base64-gcc-13.patch"; + url = "https://github.com/llvm/llvm-project/commit/5e9be93566f39ee6cecd579401e453eccfbe81e5.patch"; + hash = "sha256-PAwrVrvffPd7tphpwCkYiz+67szPRzRB2TXBvKfzQ7U="; + stripLen = 1; + }) + ]; + pollyPatches = [ + ./llvm/gnu-install-dirs-polly.patch + ]; }; # `llvm` historically had the binaries. When choosing an output explicitly, @@ -108,7 +154,6 @@ in let libllvmLibdir = "${tools.libllvm.lib}/lib"; }) ]; - inherit llvm_meta; }; clang-unwrapped = tools.libclang; @@ -129,6 +174,9 @@ in let # python3 = pkgs.python3; # don't use python-boot # }); + # Wrapper for standalone command line utilities + clang-tools = callPackage ../common/clang-tools { }; + # pick clang appropriate for package set we are targeting clang = /**/ if stdenv.targetPlatform.libc == null then tools.clangNoLibc @@ -159,7 +207,6 @@ in let patches = [ ./lld/gnu-install-dirs.patch ]; - inherit llvm_meta; }; lldb = callPackage ../common/lldb.nix { @@ -192,7 +239,6 @@ in let && !stdenv.targetPlatform.isAarch64 && (lib.versionOlder darwin.apple_sdk.sdk.version "11.0") ) ./lldb/cpu_subtype_arm64e_replacement.patch; - inherit llvm_meta; }; # Below, is the LLVM bootstrapping logic. It handles building a @@ -283,7 +329,10 @@ in let }); libraries = lib.makeExtensible (libraries: let - callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake libxml2 python3 isl release_version version src; }); + callPackage = newScope (libraries // buildLlvmTools // args // metadata + # Previously monorepoSrc was erroneously not being passed through. + // { monorepoSrc = null; } # Preserve a bug during #307211, TODO: remove; causes llvm 13 rebuild. + ); in { compiler-rt-libc = callPackage ../common/compiler-rt { @@ -304,7 +353,6 @@ in let ../common/compiler-rt/armv6-scudo-no-yield.patch ../common/compiler-rt/armv6-scudo-libatomic.patch ]; - inherit llvm_meta; stdenv = if stdenv.hostPlatform.useLLVM or false then overrideCC stdenv buildLlvmTools.clangNoCompilerRtWithLibc else stdenv; @@ -328,7 +376,6 @@ in let ../common/compiler-rt/armv6-scudo-no-yield.patch ../common/compiler-rt/armv6-scudo-libatomic.patch ]; - inherit llvm_meta; stdenv = if stdenv.hostPlatform.useLLVM or false then overrideCC stdenv buildLlvmTools.clangNoCompilerRt else stdenv; @@ -359,16 +406,15 @@ in let ]; }) ]; - inherit llvm_meta; stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx; - monorepoSrc = src; + # TODO: remove this, causes LLVM 13 packages rebuild. + inherit (metadata) monorepoSrc; # Preserve bug during #307211 refactor. }; libunwind = callPackage ../common/libunwind { patches = [ ./libunwind/gnu-install-dirs.patch ]; - inherit llvm_meta; stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx; }; @@ -380,9 +426,8 @@ in let hash = "sha256-UxIlAifXnexF/MaraPW0Ut6q+sf3e7y1fMdEv1q103A="; }) ]; - inherit llvm_meta targetLlvm; }; }); noExtend = extensible: lib.attrsets.removeAttrs extensible [ "extend" ]; -in { inherit tools libraries release_version; } // (noExtend libraries) // (noExtend tools) +in { inherit tools libraries; inherit (metadata) release_version; } // (noExtend libraries) // (noExtend tools) diff --git a/pkgs/development/compilers/llvm/13/lldb/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/13/lldb/gnu-install-dirs.patch index afc945ce26147..eba6fbabac626 100644 --- a/pkgs/development/compilers/llvm/13/lldb/gnu-install-dirs.patch +++ b/pkgs/development/compilers/llvm/13/lldb/gnu-install-dirs.patch @@ -89,3 +89,22 @@ index b5633e2..86e4738 100644 endif() get_target_property(lldb_python_bindings_dir swig_wrapper_python BINARY_DIR) finish_swig_python("lldb-python" "${lldb_python_bindings_dir}" "${lldb_python_target_dir}") +diff --git a/source/API/CMakeLists.txt b/source/API/CMakeLists.txt +index b5633e2..86e4738 100644 +--- a/source/API/CMakeLists.txt 2024-05-30 21:38:39.829955586 -0700 ++++ b/source/API/CMakeLists.txt 2024-05-30 21:38:48.015673758 -0700 +@@ -112,14 +112,6 @@ + ${option_install_prefix} + ) + +-# lib/pythonX.Y/dist-packages/lldb/_lldb.so is a symlink to lib/liblldb.so, +-# which depends on lib/libLLVM*.so (BUILD_SHARED_LIBS) or lib/libLLVM-10git.so +-# (LLVM_LINK_LLVM_DYLIB). Add an additional rpath $ORIGIN/../../../../lib so +-# that _lldb.so can be loaded from Python. +-if(LLDB_ENABLE_PYTHON AND (BUILD_SHARED_LIBS OR LLVM_LINK_LLVM_DYLIB) AND UNIX AND NOT APPLE) +- set_property(TARGET liblldb APPEND PROPERTY INSTALL_RPATH "\$ORIGIN/../../../../lib${LLVM_LIBDIR_SUFFIX}") +-endif() +- + if(Python3_RPATH) + set_property(TARGET liblldb APPEND PROPERTY INSTALL_RPATH "${Python3_RPATH}") + set_property(TARGET liblldb APPEND PROPERTY BUILD_RPATH "${Python3_RPATH}") diff --git a/pkgs/development/compilers/llvm/13/llvm/default.nix b/pkgs/development/compilers/llvm/13/llvm/default.nix deleted file mode 100644 index 58e742b9b41ea..0000000000000 --- a/pkgs/development/compilers/llvm/13/llvm/default.nix +++ /dev/null @@ -1,315 +0,0 @@ -{ lib, stdenv, llvm_meta -, pkgsBuildBuild -, src -, fetchpatch -, cmake -, python3 -, libffi -, enableGoldPlugin ? libbfd.hasPluginAPI -, libbfd -, libpfm -, libxml2 -, ncurses -, version -, release_version -, zlib -, which -, buildLlvmTools -, debugVersion ? false -, doCheck ? stdenv.isLinux && (!stdenv.isx86_32) && (!stdenv.hostPlatform.isMusl) - && (stdenv.hostPlatform == stdenv.buildPlatform) -, enableManpages ? false -, enableSharedLibraries ? !stdenv.hostPlatform.isStatic -# broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245 -# broken for the armv7l builder -, enablePFM ? stdenv.isLinux && !stdenv.hostPlatform.isAarch -, enablePolly ? false -}: - -let - inherit (lib) optional optionals optionalString; - - # Used when creating a version-suffixed symlink of libLLVM.dylib - shortVersion = with lib; - concatStringsSep "." (take 1 (splitString "." release_version)); - - # Ordinarily we would just the `doCheck` and `checkDeps` functionality - # `mkDerivation` gives us to manage our test dependencies (instead of breaking - # out `doCheck` as a package level attribute). - # - # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in - # particular the children it uses to do feature detection. - # - # This means that python deps we add to `checkDeps` (which the python - # interpreter is made aware of via `$PYTHONPATH` – populated by the python - # setup hook) are not picked up by `lit` which causes it to skip tests. - # - # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work - # because this package is shadowed in `$PATH` by the regular `python3` - # package. - # - # So, we "manually" assemble one python derivation for the package to depend - # on, taking into account whether checks are enabled or not: - python = if doCheck then - let - checkDeps = ps: with ps; [ psutil ]; - in python3.withPackages checkDeps - else python3; - -in stdenv.mkDerivation (rec { - pname = "llvm"; - inherit version; - - inherit src; - sourceRoot = "${src.name}/${pname}"; - - outputs = [ "out" "lib" "dev" "python" ]; - - nativeBuildInputs = [ cmake python ] - ++ optionals enableManpages [ python3.pkgs.sphinx python3.pkgs.recommonmark ]; - - buildInputs = [ libxml2 libffi ] - ++ optional enablePFM libpfm; # exegesis - - propagatedBuildInputs = optionals (stdenv.hostPlatform == stdenv.buildPlatform) [ ncurses ] - ++ [ zlib ]; - - nativeCheckInputs = [ which ]; - - patches = [ - # When cross-compiling we configure llvm-config-native with an approximation - # of the flags used for the normal LLVM build. To avoid the need for building - # a native libLLVM.so (which would fail) we force llvm-config to be linked - # statically against the necessary LLVM components always. - ../../common/llvm/llvm-config-link-static.patch - - ./gnu-install-dirs.patch - - # Fix random compiler crashes: https://bugs.llvm.org/show_bug.cgi?id=50611 - (fetchpatch { - url = "https://raw.githubusercontent.com/archlinux/svntogit-packages/4764a4f8c920912a2bfd8b0eea57273acfe0d8a8/trunk/no-strict-aliasing-DwarfCompileUnit.patch"; - sha256 = "18l6mrvm2vmwm77ckcnbjvh6ybvn72rhrb799d4qzwac4x2ifl7g"; - stripLen = 1; - }) - - # Fix musl build. - (fetchpatch { - url = "https://github.com/llvm/llvm-project/commit/5cd554303ead0f8891eee3cd6d25cb07f5a7bf67.patch"; - relative = "llvm"; - hash = "sha256-XPbvNJ45SzjMGlNUgt/IgEvM2dHQpDOe6woUJY+nUYA="; - }) - - # Backport gcc-13 fixes with missing includes. - (fetchpatch { - name = "signals-gcc-13.patch"; - url = "https://github.com/llvm/llvm-project/commit/ff1681ddb303223973653f7f5f3f3435b48a1983.patch"; - hash = "sha256-CXwYxQezTq5vdmc8Yn88BUAEly6YZ5VEIA6X3y5NNOs="; - stripLen = 1; - }) - (fetchpatch { - name = "base64-gcc-13.patch"; - url = "https://github.com/llvm/llvm-project/commit/5e9be93566f39ee6cecd579401e453eccfbe81e5.patch"; - hash = "sha256-PAwrVrvffPd7tphpwCkYiz+67szPRzRB2TXBvKfzQ7U="; - stripLen = 1; - }) - ] ++ lib.optional enablePolly ./gnu-install-dirs-polly.patch; - - postPatch = optionalString stdenv.isDarwin '' - substituteInPlace cmake/modules/AddLLVM.cmake \ - --replace 'set(_install_name_dir INSTALL_NAME_DIR "@rpath")' "set(_install_name_dir)" \ - --replace 'set(_install_rpath "@loader_path/../''${CMAKE_INSTALL_LIBDIR}''${LLVM_LIBDIR_SUFFIX}" ''${extra_libdir})' "" - '' + '' - # FileSystem permissions tests fail with various special bits - substituteInPlace unittests/Support/CMakeLists.txt \ - --replace "Path.cpp" "" - rm unittests/Support/Path.cpp - substituteInPlace unittests/IR/CMakeLists.txt \ - --replace "PassBuilderCallbacksTest.cpp" "" - rm unittests/IR/PassBuilderCallbacksTest.cpp - rm test/tools/llvm-objcopy/ELF/mirror-permissions-unix.test - '' + optionalString stdenv.hostPlatform.isMusl '' - patch -p1 -i ${../../common/llvm/TLI-musl.patch} - substituteInPlace unittests/Support/CMakeLists.txt \ - --replace "add_subdirectory(DynamicLibrary)" "" - rm unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp - # valgrind unhappy with musl or glibc, but fails w/musl only - rm test/CodeGen/AArch64/wineh4.mir - '' + optionalString stdenv.hostPlatform.isAarch32 '' - # skip failing X86 test cases on 32-bit ARM - rm test/DebugInfo/X86/convert-debugloc.ll - rm test/DebugInfo/X86/convert-inlined.ll - rm test/DebugInfo/X86/convert-linked.ll - rm test/tools/dsymutil/X86/op-convert.test - rm test/tools/gold/X86/split-dwarf.ll - '' + optionalString (stdenv.hostPlatform.system == "armv6l-linux") '' - # Seems to require certain floating point hardware (NEON?) - rm test/ExecutionEngine/frem.ll - '' + '' - patchShebangs test/BugPoint/compile-custom.ll.py - ''; - - preConfigure = '' - # Workaround for configure flags that need to have spaces - cmakeFlagsArray+=( - -DLLVM_LIT_ARGS='-svj''${NIX_BUILD_CORES} --no-progress-bar' - ) - ''; - - # hacky fix: created binaries need to be run before installation - preBuild = '' - mkdir -p $out/ - ln -sv $PWD/lib $out - ''; - - # E.g. mesa.drivers use the build-id as a cache key (see #93946): - LDFLAGS = optionalString (enableSharedLibraries && !stdenv.isDarwin) "-Wl,--build-id=sha1"; - - hardeningDisable = [ "trivialautovarinit" ]; - - cmakeBuildType = if debugVersion then "Debug" else "Release"; - - cmakeFlags = with stdenv; let - # These flags influence llvm-config's BuildVariables.inc in addition to the - # general build. We need to make sure these are also passed via - # CROSS_TOOLCHAIN_FLAGS_NATIVE when cross-compiling or llvm-config-native - # will return different results from the cross llvm-config. - # - # Some flags don't need to be repassed because LLVM already does so (like - # CMAKE_BUILD_TYPE), others are irrelevant to the result. - flagsForLlvmConfig = [ - "-DLLVM_INSTALL_CMAKE_DIR=${placeholder "dev"}/lib/cmake/llvm/" - "-DLLVM_ENABLE_RTTI=ON" - ] ++ optionals enableSharedLibraries [ - "-DLLVM_LINK_LLVM_DYLIB=ON" - ]; - in flagsForLlvmConfig ++ [ - "-DLLVM_INSTALL_UTILS=ON" # Needed by rustc - "-DLLVM_BUILD_TESTS=${if doCheck then "ON" else "OFF"}" - "-DLLVM_ENABLE_FFI=ON" - "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}" - "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}" - "-DLLVM_ENABLE_DUMP=ON" - ] ++ optionals stdenv.hostPlatform.isStatic [ - # Disables building of shared libs, -fPIC is still injected by cc-wrapper - "-DLLVM_ENABLE_PIC=OFF" - "-DLLVM_BUILD_STATIC=ON" - # libxml2 needs to be disabled because the LLVM build system ignores its .la - # file and doesn't link zlib as well. - # https://github.com/ClangBuiltLinux/tc-build/issues/150#issuecomment-845418812 - "-DLLVM_ENABLE_LIBXML2=OFF" - ] ++ optionals enableManpages [ - "-DLLVM_BUILD_DOCS=ON" - "-DLLVM_ENABLE_SPHINX=ON" - "-DSPHINX_OUTPUT_MAN=ON" - "-DSPHINX_OUTPUT_HTML=OFF" - "-DSPHINX_WARNINGS_AS_ERRORS=OFF" - ] ++ optionals (enableGoldPlugin) [ - "-DLLVM_BINUTILS_INCDIR=${libbfd.dev}/include" - ] ++ optionals isDarwin [ - "-DLLVM_ENABLE_LIBCXX=ON" - "-DCAN_TARGET_i386=false" - ] ++ optionals ((stdenv.hostPlatform != stdenv.buildPlatform) && !(stdenv.buildPlatform.canExecute stdenv.hostPlatform)) [ - "-DCMAKE_CROSSCOMPILING=True" - "-DLLVM_TABLEGEN=${buildLlvmTools.llvm}/bin/llvm-tblgen" - ( - let - nativeCC = pkgsBuildBuild.targetPackages.stdenv.cc; - nativeBintools = nativeCC.bintools.bintools; - nativeToolchainFlags = [ - "-DCMAKE_C_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}cc" - "-DCMAKE_CXX_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}c++" - "-DCMAKE_AR=${nativeBintools}/bin/${nativeBintools.targetPrefix}ar" - "-DCMAKE_STRIP=${nativeBintools}/bin/${nativeBintools.targetPrefix}strip" - "-DCMAKE_RANLIB=${nativeBintools}/bin/${nativeBintools.targetPrefix}ranlib" - ]; - # We need to repass the custom GNUInstallDirs values, otherwise CMake - # will choose them for us, leading to wrong results in llvm-config-native - nativeInstallFlags = [ - "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}" - "-DCMAKE_INSTALL_BINDIR=${placeholder "out"}/bin" - "-DCMAKE_INSTALL_INCLUDEDIR=${placeholder "dev"}/include" - "-DCMAKE_INSTALL_LIBDIR=${placeholder "lib"}/lib" - "-DCMAKE_INSTALL_LIBEXECDIR=${placeholder "lib"}/libexec" - ]; - in "-DCROSS_TOOLCHAIN_FLAGS_NATIVE:list=" - + lib.concatStringsSep ";" (lib.concatLists [ - flagsForLlvmConfig - nativeToolchainFlags - nativeInstallFlags - ]) - ) - ]; - - postBuild = '' - rm -fR $out - ''; - - preCheck = '' - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD/lib - ''; - - postInstall = '' - mkdir -p $python/share - mv $out/share/opt-viewer $python/share/opt-viewer - moveToOutput "bin/llvm-config*" "$dev" - substituteInPlace "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" \ - --replace "\''${_IMPORT_PREFIX}/lib/lib" "$lib/lib/lib" \ - --replace "$out/bin/llvm-config" "$dev/bin/llvm-config" - substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \ - --replace 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}'"$lib"'")' - '' - + optionalString (stdenv.isDarwin && enableSharedLibraries) '' - ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib - ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib - '' - + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' - cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native - ''; - - inherit doCheck; - - checkTarget = "check-all"; - - requiredSystemFeatures = [ "big-parallel" ]; - meta = llvm_meta // { - homepage = "https://llvm.org/"; - description = "A collection of modular and reusable compiler and toolchain technologies"; - longDescription = '' - The LLVM Project is a collection of modular and reusable compiler and - toolchain technologies. Despite its name, LLVM has little to do with - traditional virtual machines. The name "LLVM" itself is not an acronym; it - is the full name of the project. - LLVM began as a research project at the University of Illinois, with the - goal of providing a modern, SSA-based compilation strategy capable of - supporting both static and dynamic compilation of arbitrary programming - languages. Since then, LLVM has grown to be an umbrella project consisting - of a number of subprojects, many of which are being used in production by - a wide variety of commercial and open source projects as well as being - widely used in academic research. Code in the LLVM project is licensed - under the "Apache 2.0 License with LLVM exceptions". - ''; - }; -} // lib.optionalAttrs enableManpages { - pname = "llvm-manpages"; - - buildPhase = '' - make docs-llvm-man - ''; - - propagatedBuildInputs = []; - - installPhase = '' - make -C docs install - ''; - - postPatch = null; - postInstall = null; - - outputs = [ "out" ]; - - doCheck = false; - - meta = llvm_meta // { - description = "man pages for LLVM ${version}"; - }; -}) diff --git a/pkgs/development/compilers/llvm/14/default.nix b/pkgs/development/compilers/llvm/14/default.nix index 588dc8fffefdd..06972af065c98 100644 --- a/pkgs/development/compilers/llvm/14/default.nix +++ b/pkgs/development/compilers/llvm/14/default.nix @@ -1,6 +1,7 @@ -{ lowPrio, newScope, pkgs, lib, stdenv, cmake +{ lowPrio, newScope, pkgs, lib, stdenv , preLibcCrossHeaders -, libxml2, python3, fetchFromGitHub, substitute, substituteAll, overrideCC, wrapCCWith, wrapBintoolsWith +, substitute, substituteAll, fetchFromGitHub, fetchpatch +, overrideCC, wrapCCWith, wrapBintoolsWith , buildLlvmTools # tools, but from the previous stage, for cross , targetLlvmLibraries # libraries, but from the next stage, for cross , targetLlvm @@ -39,7 +40,11 @@ # to you to make sure that the LLVM repo given matches the release configuration # specified. , monorepoSrc ? null -}: +# Allows passthrough to packages via newScope. This makes it possible to +# do `(llvmPackages.override { <someLlvmDependency> = bar; }).clang` and get +# an llvmPackages whose packages are overridden in an internally consistent way. +, ... +}@args: assert lib.assertMsg @@ -51,17 +56,20 @@ assert let monorepoSrc' = monorepoSrc; in let - # Import releaseInfo separately to avoid infinite recursion - inherit (import ../common/common-let.nix { inherit lib gitRelease officialRelease; }) releaseInfo; - inherit (releaseInfo) release_version version; - inherit (import ../common/common-let.nix { inherit lib fetchFromGitHub release_version gitRelease officialRelease monorepoSrc'; }) llvm_meta monorepoSrc; + + metadata = rec { + # Import releaseInfo separately to avoid infinite recursion + inherit (import ../common/common-let.nix { inherit lib gitRelease officialRelease; }) releaseInfo; + inherit (releaseInfo) release_version version; + inherit (import ../common/common-let.nix { inherit lib fetchFromGitHub release_version gitRelease officialRelease monorepoSrc'; }) llvm_meta monorepoSrc; + }; tools = lib.makeExtensible (tools: let - callPackage = newScope (tools // { inherit stdenv cmake libxml2 python3 release_version version monorepoSrc buildLlvmTools; }); + callPackage = newScope (tools // args // metadata); mkExtraBuildCommands0 = cc: '' rsrc="$out/resource-root" mkdir "$rsrc" - ln -s "${cc.lib}/lib/clang/${release_version}/include" "$rsrc" + ln -s "${cc.lib}/lib/clang/${metadata.release_version}/include" "$rsrc" echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags ''; mkExtraBuildCommands = cc: mkExtraBuildCommands0 cc + '' @@ -80,8 +88,26 @@ in let in { - libllvm = callPackage ./llvm { - inherit llvm_meta; + libllvm = callPackage ../common/llvm { + patches = [ + ./llvm/gnu-install-dirs.patch + + # Fix musl build. + (fetchpatch { + url = "https://github.com/llvm/llvm-project/commit/5cd554303ead0f8891eee3cd6d25cb07f5a7bf67.patch"; + relative = "llvm"; + hash = "sha256-XPbvNJ45SzjMGlNUgt/IgEvM2dHQpDOe6woUJY+nUYA="; + }) + # fix RuntimeDyld usage on aarch64-linux (e.g. python312Packages.numba tests) + (fetchpatch { + url = "https://github.com/llvm/llvm-project/commit/2e1b838a889f9793d4bcd5dbfe10db9796b77143.patch"; + relative = "llvm"; + hash = "sha256-Ot45P/iwaR4hkcM3xtLwfryQNgHI6pv6ADjv98tgdZA="; + }) + ]; + pollyPatches = [ + ./llvm/gnu-install-dirs-polly.patch + ]; }; # `llvm` historically had the binaries. When choosing an output explicitly, @@ -99,7 +125,6 @@ in let libllvmLibdir = "${tools.libllvm.lib}/lib"; }) ]; - inherit llvm_meta; }; clang-unwrapped = tools.libclang; @@ -120,6 +145,9 @@ in let # python3 = pkgs.python3; # don't use python-boot # }); + # Wrapper for standalone command line utilities + clang-tools = callPackage ../common/clang-tools { }; + # pick clang appropriate for package set we are targeting clang = /**/ if stdenv.targetPlatform.libc == null then tools.clangNoLibc @@ -151,7 +179,6 @@ in let ./lld/gnu-install-dirs.patch ./lld/fix-root-src-dir.patch ]; - inherit llvm_meta; }; lldb = callPackage ../common/lldb.nix { @@ -184,7 +211,6 @@ in let && !stdenv.targetPlatform.isAarch64 && (lib.versionOlder darwin.apple_sdk.sdk.version "11.0") ) ./lldb/cpu_subtype_arm64e_replacement.patch; - inherit llvm_meta; }; # Below, is the LLVM bootstrapping logic. It handles building a @@ -277,7 +303,7 @@ in let }); libraries = lib.makeExtensible (libraries: let - callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake libxml2 python3 release_version version monorepoSrc; }); + callPackage = newScope (libraries // buildLlvmTools // args // metadata); in { compiler-rt-libc = callPackage ../common/compiler-rt { @@ -299,7 +325,6 @@ in let ../common/compiler-rt/armv6-scudo-no-yield.patch ../common/compiler-rt/armv6-scudo-libatomic.patch ]; - inherit llvm_meta; stdenv = if stdenv.hostPlatform.useLLVM or false then overrideCC stdenv buildLlvmTools.clangNoCompilerRtWithLibc else stdenv; @@ -324,7 +349,6 @@ in let ../common/compiler-rt/armv6-scudo-no-yield.patch ../common/compiler-rt/armv6-scudo-libatomic.patch ]; - inherit llvm_meta; stdenv = if stdenv.hostPlatform.useLLVM or false then overrideCC stdenv buildLlvmTools.clangNoCompilerRt else stdenv; @@ -355,7 +379,6 @@ in let ]; }) ]; - inherit llvm_meta; stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx; }; @@ -363,7 +386,6 @@ in let patches = [ ./libunwind/gnu-install-dirs.patch ]; - inherit llvm_meta; stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx; }; @@ -372,9 +394,8 @@ in let ./openmp/gnu-install-dirs.patch ./openmp/run-lit-directly.patch ]; - inherit llvm_meta targetLlvm; }; }); noExtend = extensible: lib.attrsets.removeAttrs extensible [ "extend" ]; -in { inherit tools libraries release_version; } // (noExtend libraries) // (noExtend tools) +in { inherit tools libraries; inherit (metadata) release_version; } // (noExtend libraries) // (noExtend tools) diff --git a/pkgs/development/compilers/llvm/14/llvm/default.nix b/pkgs/development/compilers/llvm/14/llvm/default.nix deleted file mode 100644 index 124d07e4bb2b1..0000000000000 --- a/pkgs/development/compilers/llvm/14/llvm/default.nix +++ /dev/null @@ -1,323 +0,0 @@ -{ lib, stdenv, llvm_meta -, pkgsBuildBuild -, monorepoSrc -, runCommand -, fetchpatch -, cmake -, python3 -, libffi -, enableGoldPlugin ? libbfd.hasPluginAPI -, libbfd -, libpfm -, libxml2 -, ncurses -, version -, release_version -, zlib -, which -, buildLlvmTools -, debugVersion ? false -, doCheck ? stdenv.isLinux && (!stdenv.isx86_32) && (!stdenv.hostPlatform.isMusl) - && (stdenv.hostPlatform == stdenv.buildPlatform) -, enableManpages ? false -, enableSharedLibraries ? !stdenv.hostPlatform.isStatic -# broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245 -# broken for the armv7l builder -, enablePFM ? stdenv.isLinux && !stdenv.hostPlatform.isAarch -, enablePolly ? true -}: - -let - inherit (lib) optional optionals optionalString; - - # Used when creating a version-suffixed symlink of libLLVM.dylib - shortVersion = with lib; - concatStringsSep "." (take 1 (splitString "." release_version)); - - # Ordinarily we would just the `doCheck` and `checkDeps` functionality - # `mkDerivation` gives us to manage our test dependencies (instead of breaking - # out `doCheck` as a package level attribute). - # - # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in - # particular the children it uses to do feature detection. - # - # This means that python deps we add to `checkDeps` (which the python - # interpreter is made aware of via `$PYTHONPATH` – populated by the python - # setup hook) are not picked up by `lit` which causes it to skip tests. - # - # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work - # because this package is shadowed in `$PATH` by the regular `python3` - # package. - # - # So, we "manually" assemble one python derivation for the package to depend - # on, taking into account whether checks are enabled or not: - python = if doCheck then - let - checkDeps = ps: with ps; [ psutil ]; - in python3.withPackages checkDeps - else python3; - -in stdenv.mkDerivation (rec { - pname = "llvm"; - inherit version; - - src = runCommand "${pname}-src-${version}" {} ('' - mkdir -p "$out" - cp -r ${monorepoSrc}/cmake "$out" - cp -r ${monorepoSrc}/${pname} "$out" - cp -r ${monorepoSrc}/third-party "$out" - '' + lib.optionalString enablePolly '' - chmod u+w "$out/${pname}/tools" - cp -r ${monorepoSrc}/polly "$out/${pname}/tools" - ''); - - sourceRoot = "${src.name}/${pname}"; - - outputs = [ "out" "lib" "dev" "python" ]; - - nativeBuildInputs = [ cmake python ] - ++ optionals enableManpages [ python3.pkgs.sphinx python3.pkgs.recommonmark ]; - - buildInputs = [ libxml2 libffi ] - ++ optional enablePFM libpfm; # exegesis - - propagatedBuildInputs = [ ncurses zlib ]; - - nativeCheckInputs = [ which ]; - - patches = [ - ./gnu-install-dirs.patch - - # Fix musl build. - (fetchpatch { - url = "https://github.com/llvm/llvm-project/commit/5cd554303ead0f8891eee3cd6d25cb07f5a7bf67.patch"; - relative = "llvm"; - hash = "sha256-XPbvNJ45SzjMGlNUgt/IgEvM2dHQpDOe6woUJY+nUYA="; - }) - # fix RuntimeDyld usage on aarch64-linux (e.g. python312Packages.numba tests) - (fetchpatch { - url = "https://github.com/llvm/llvm-project/commit/2e1b838a889f9793d4bcd5dbfe10db9796b77143.patch"; - relative = "llvm"; - hash = "sha256-Ot45P/iwaR4hkcM3xtLwfryQNgHI6pv6ADjv98tgdZA="; - }) - ] ++ lib.optional enablePolly ./gnu-install-dirs-polly.patch; - - postPatch = optionalString stdenv.isDarwin '' - substituteInPlace cmake/modules/AddLLVM.cmake \ - --replace 'set(_install_name_dir INSTALL_NAME_DIR "@rpath")' "set(_install_name_dir)" \ - --replace 'set(_install_rpath "@loader_path/../''${CMAKE_INSTALL_LIBDIR}''${LLVM_LIBDIR_SUFFIX}" ''${extra_libdir})' "" - '' + '' - # FileSystem permissions tests fail with various special bits - substituteInPlace unittests/Support/CMakeLists.txt \ - --replace "Path.cpp" "" - rm unittests/Support/Path.cpp - substituteInPlace unittests/IR/CMakeLists.txt \ - --replace "PassBuilderCallbacksTest.cpp" "" - rm unittests/IR/PassBuilderCallbacksTest.cpp - rm test/tools/llvm-objcopy/ELF/mirror-permissions-unix.test - '' + optionalString stdenv.hostPlatform.isMusl '' - patch -p1 -i ${../../common/llvm/TLI-musl.patch} - substituteInPlace unittests/Support/CMakeLists.txt \ - --replace "add_subdirectory(DynamicLibrary)" "" - rm unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp - # valgrind unhappy with musl or glibc, but fails w/musl only - rm test/CodeGen/AArch64/wineh4.mir - '' + optionalString stdenv.hostPlatform.isAarch32 '' - # skip failing X86 test cases on 32-bit ARM - rm test/DebugInfo/X86/convert-debugloc.ll - rm test/DebugInfo/X86/convert-inlined.ll - rm test/DebugInfo/X86/convert-linked.ll - rm test/tools/dsymutil/X86/op-convert.test - rm test/tools/gold/X86/split-dwarf.ll - rm test/tools/llvm-dwarfdump/X86/prettyprint_types.s - rm test/tools/llvm-dwarfdump/X86/simplified-template-names.s - '' + optionalString (stdenv.hostPlatform.system == "armv6l-linux") '' - # Seems to require certain floating point hardware (NEON?) - rm test/ExecutionEngine/frem.ll - '' + optionalString stdenv.hostPlatform.isRiscV '' - rm test/ExecutionEngine/frem.ll - rm test/ExecutionEngine/mov64zext32.ll - rm test/ExecutionEngine/test-interp-vec-arithm_float.ll - rm test/ExecutionEngine/test-interp-vec-arithm_int.ll - rm test/ExecutionEngine/test-interp-vec-logical.ll - rm test/ExecutionEngine/test-interp-vec-setcond-fp.ll - rm test/ExecutionEngine/test-interp-vec-setcond-int.ll - substituteInPlace unittests/Support/CMakeLists.txt \ - --replace "CrashRecoveryTest.cpp" "" - rm unittests/Support/CrashRecoveryTest.cpp - substituteInPlace unittests/ExecutionEngine/Orc/CMakeLists.txt \ - --replace "OrcCAPITest.cpp" "" - rm unittests/ExecutionEngine/Orc/OrcCAPITest.cpp - '' + '' - patchShebangs test/BugPoint/compile-custom.ll.py - ''; - - preConfigure = '' - # Workaround for configure flags that need to have spaces - cmakeFlagsArray+=( - -DLLVM_LIT_ARGS='-svj''${NIX_BUILD_CORES} --no-progress-bar' - ) - ''; - - # hacky fix: created binaries need to be run before installation - preBuild = '' - mkdir -p $out/ - ln -sv $PWD/lib $out - ''; - - # E.g. mesa.drivers use the build-id as a cache key (see #93946): - LDFLAGS = optionalString (enableSharedLibraries && !stdenv.isDarwin) "-Wl,--build-id=sha1"; - - hardeningDisable = [ "trivialautovarinit" ]; - - cmakeBuildType = if debugVersion then "Debug" else "Release"; - - cmakeFlags = with stdenv; let - # These flags influence llvm-config's BuildVariables.inc in addition to the - # general build. We need to make sure these are also passed via - # CROSS_TOOLCHAIN_FLAGS_NATIVE when cross-compiling or llvm-config-native - # will return different results from the cross llvm-config. - # - # Some flags don't need to be repassed because LLVM already does so (like - # CMAKE_BUILD_TYPE), others are irrelevant to the result. - flagsForLlvmConfig = [ - "-DLLVM_INSTALL_CMAKE_DIR=${placeholder "dev"}/lib/cmake/llvm/" - "-DLLVM_ENABLE_RTTI=ON" - ] ++ optionals enableSharedLibraries [ - "-DLLVM_LINK_LLVM_DYLIB=ON" - ]; - in flagsForLlvmConfig ++ [ - "-DLLVM_INSTALL_UTILS=ON" # Needed by rustc - "-DLLVM_BUILD_TESTS=${if doCheck then "ON" else "OFF"}" - "-DLLVM_ENABLE_FFI=ON" - "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}" - "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}" - "-DLLVM_ENABLE_DUMP=ON" - ] ++ optionals stdenv.hostPlatform.isStatic [ - # Disables building of shared libs, -fPIC is still injected by cc-wrapper - "-DLLVM_ENABLE_PIC=OFF" - "-DLLVM_BUILD_STATIC=ON" - "-DLLVM_LINK_LLVM_DYLIB=off" - # libxml2 needs to be disabled because the LLVM build system ignores its .la - # file and doesn't link zlib as well. - # https://github.com/ClangBuiltLinux/tc-build/issues/150#issuecomment-845418812 - "-DLLVM_ENABLE_LIBXML2=OFF" - ] ++ optionals enableManpages [ - "-DLLVM_BUILD_DOCS=ON" - "-DLLVM_ENABLE_SPHINX=ON" - "-DSPHINX_OUTPUT_MAN=ON" - "-DSPHINX_OUTPUT_HTML=OFF" - "-DSPHINX_WARNINGS_AS_ERRORS=OFF" - ] ++ optionals (enableGoldPlugin) [ - "-DLLVM_BINUTILS_INCDIR=${libbfd.dev}/include" - ] ++ optionals isDarwin [ - "-DLLVM_ENABLE_LIBCXX=ON" - "-DCAN_TARGET_i386=false" - ] ++ optionals ((stdenv.hostPlatform != stdenv.buildPlatform) && !(stdenv.buildPlatform.canExecute stdenv.hostPlatform)) [ - "-DCMAKE_CROSSCOMPILING=True" - "-DLLVM_TABLEGEN=${buildLlvmTools.llvm}/bin/llvm-tblgen" - ( - let - nativeCC = pkgsBuildBuild.targetPackages.stdenv.cc; - nativeBintools = nativeCC.bintools.bintools; - nativeToolchainFlags = [ - "-DCMAKE_C_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}cc" - "-DCMAKE_CXX_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}c++" - "-DCMAKE_AR=${nativeBintools}/bin/${nativeBintools.targetPrefix}ar" - "-DCMAKE_STRIP=${nativeBintools}/bin/${nativeBintools.targetPrefix}strip" - "-DCMAKE_RANLIB=${nativeBintools}/bin/${nativeBintools.targetPrefix}ranlib" - ]; - # We need to repass the custom GNUInstallDirs values, otherwise CMake - # will choose them for us, leading to wrong results in llvm-config-native - nativeInstallFlags = [ - "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}" - "-DCMAKE_INSTALL_BINDIR=${placeholder "out"}/bin" - "-DCMAKE_INSTALL_INCLUDEDIR=${placeholder "dev"}/include" - "-DCMAKE_INSTALL_LIBDIR=${placeholder "lib"}/lib" - "-DCMAKE_INSTALL_LIBEXECDIR=${placeholder "lib"}/libexec" - ]; - in "-DCROSS_TOOLCHAIN_FLAGS_NATIVE:list=" - + lib.concatStringsSep ";" (lib.concatLists [ - flagsForLlvmConfig - nativeToolchainFlags - nativeInstallFlags - ]) - ) - ]; - - postBuild = '' - rm -fR $out - ''; - - preCheck = '' - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD/lib - ''; - - postInstall = '' - mkdir -p $python/share - mv $out/share/opt-viewer $python/share/opt-viewer - moveToOutput "bin/llvm-config*" "$dev" - substituteInPlace "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" \ - --replace "\''${_IMPORT_PREFIX}/lib/lib" "$lib/lib/lib" \ - --replace "$out/bin/llvm-config" "$dev/bin/llvm-config" - substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \ - --replace 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}'"$lib"'")' - '' - + optionalString (stdenv.isDarwin && enableSharedLibraries) '' - ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib - ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib - '' - + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' - cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native - ''; - - inherit doCheck; - - checkTarget = "check-all"; - - # For the update script: - passthru.monorepoSrc = monorepoSrc; - - requiredSystemFeatures = [ "big-parallel" ]; - meta = llvm_meta // { - homepage = "https://llvm.org/"; - description = "A collection of modular and reusable compiler and toolchain technologies"; - longDescription = '' - The LLVM Project is a collection of modular and reusable compiler and - toolchain technologies. Despite its name, LLVM has little to do with - traditional virtual machines. The name "LLVM" itself is not an acronym; it - is the full name of the project. - LLVM began as a research project at the University of Illinois, with the - goal of providing a modern, SSA-based compilation strategy capable of - supporting both static and dynamic compilation of arbitrary programming - languages. Since then, LLVM has grown to be an umbrella project consisting - of a number of subprojects, many of which are being used in production by - a wide variety of commercial and open source projects as well as being - widely used in academic research. Code in the LLVM project is licensed - under the "Apache 2.0 License with LLVM exceptions". - ''; - }; -} // lib.optionalAttrs enableManpages { - pname = "llvm-manpages"; - - buildPhase = '' - make docs-llvm-man - ''; - - propagatedBuildInputs = []; - - installPhase = '' - make -C docs install - ''; - - postPatch = null; - postInstall = null; - - outputs = [ "out" ]; - - doCheck = false; - - meta = llvm_meta // { - description = "man pages for LLVM ${version}"; - }; -}) diff --git a/pkgs/development/compilers/llvm/15/default.nix b/pkgs/development/compilers/llvm/15/default.nix index bfcbe2b86e247..e50e35b2c4eb0 100644 --- a/pkgs/development/compilers/llvm/15/default.nix +++ b/pkgs/development/compilers/llvm/15/default.nix @@ -1,6 +1,7 @@ -{ lowPrio, newScope, pkgs, lib, stdenv, cmake, ninja +{ lowPrio, newScope, pkgs, lib, stdenv , preLibcCrossHeaders -, libxml2, python3, fetchFromGitHub, fetchpatch, substitute, substituteAll, overrideCC, wrapCCWith, wrapBintoolsWith +, substitute, substituteAll, fetchFromGitHub, fetchpatch +, overrideCC, wrapCCWith, wrapBintoolsWith , buildLlvmTools # tools, but from the previous stage, for cross , targetLlvmLibraries # libraries, but from the next stage, for cross , targetLlvm @@ -39,7 +40,11 @@ # to you to make sure that the LLVM repo given matches the release configuration # specified. , monorepoSrc ? null -}: +# Allows passthrough to packages via newScope. This makes it possible to +# do `(llvmPackages.override { <someLlvmDependency> = bar; }).clang` and get +# an llvmPackages whose packages are overridden in an internally consistent way. +, ... +}@args: assert lib.assertMsg @@ -51,10 +56,13 @@ assert let monorepoSrc' = monorepoSrc; in let - # Import releaseInfo separately to avoid infinite recursion - inherit (import ../common/common-let.nix { inherit lib gitRelease officialRelease; }) releaseInfo; - inherit (releaseInfo) release_version version; - inherit (import ../common/common-let.nix { inherit lib fetchFromGitHub release_version gitRelease officialRelease monorepoSrc'; }) llvm_meta monorepoSrc; + + metadata = rec { + # Import releaseInfo separately to avoid infinite recursion + inherit (import ../common/common-let.nix { inherit lib gitRelease officialRelease; }) releaseInfo; + inherit (releaseInfo) release_version version; + inherit (import ../common/common-let.nix { inherit lib fetchFromGitHub release_version gitRelease officialRelease monorepoSrc'; }) llvm_meta monorepoSrc; + }; lldbPlugins = lib.makeExtensible (lldbPlugins: let callPackage = newScope (lldbPlugins // { inherit stdenv; inherit (tools) lldb; }); @@ -63,11 +71,11 @@ in let }); tools = lib.makeExtensible (tools: let - callPackage = newScope (tools // { inherit stdenv cmake ninja libxml2 python3 release_version version monorepoSrc buildLlvmTools; }); + callPackage = newScope (tools // args // metadata); mkExtraBuildCommands0 = cc: '' rsrc="$out/resource-root" mkdir "$rsrc" - ln -s "${cc.lib}/lib/clang/${release_version}/include" "$rsrc" + ln -s "${cc.lib}/lib/clang/${metadata.release_version}/include" "$rsrc" echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags ''; mkExtraBuildCommands = cc: mkExtraBuildCommands0 cc + '' @@ -86,8 +94,64 @@ in let in { - libllvm = callPackage ./llvm { - inherit llvm_meta; + libllvm = callPackage ../common/llvm { + patches = [ + ./llvm/gnu-install-dirs.patch + + # Running the tests involves invoking binaries (like `opt`) that depend on + # the LLVM dylibs and reference them by absolute install path (i.e. their + # nix store path). + # + # Because we have not yet run the install phase (we're running these tests + # as part of `checkPhase` instead of `installCheckPhase`) these absolute + # paths do not exist yet; to work around this we point the loader (`ld` on + # unix, `dyld` on macOS) at the `lib` directory which will later become this + # package's `lib` output. + # + # Previously we would just set `LD_LIBRARY_PATH` to include the build `lib` + # dir but: + # - this doesn't generalize well to other platforms; `lit` doesn't forward + # `DYLD_LIBRARY_PATH` (macOS): + # + https://github.com/llvm/llvm-project/blob/0d89963df354ee309c15f67dc47c8ab3cb5d0fb2/llvm/utils/lit/lit/TestingConfig.py#L26 + # - even if `lit` forwarded this env var, we actually cannot set + # `DYLD_LIBRARY_PATH` in the child processes `lit` launches because + # `DYLD_LIBRARY_PATH` (and `DYLD_FALLBACK_LIBRARY_PATH`) is cleared for + # "protected processes" (i.e. the python interpreter that runs `lit`): + # https://stackoverflow.com/a/35570229 + # - other LLVM subprojects deal with this issue by having their `lit` + # configuration set these env vars for us; it makes sense to do the same + # for LLVM: + # + https://github.com/llvm/llvm-project/blob/4c106cfdf7cf7eec861ad3983a3dd9a9e8f3a8ae/clang-tools-extra/test/Unit/lit.cfg.py#L22-L31 + # + # !!! TODO: look into upstreaming this patch + ./llvm/llvm-lit-cfg-add-libs-to-dylib-path.patch + + # `lit` has a mode where it executes run lines as a shell script which is + # constructs; this is problematic for macOS because it means that there's + # another process in between `lit` and the binaries being tested. As noted + # above, this means that `DYLD_LIBRARY_PATH` is cleared which means that our + # tests fail with dyld errors. + # + # To get around this we patch `lit` to reintroduce `DYLD_LIBRARY_PATH`, when + # present in the test configuration. + # + # It's not clear to me why this isn't an issue for LLVM developers running + # on macOS (nothing about this _seems_ nix specific).. + ./llvm/lit-shell-script-runner-set-dyld-library-path.patch + + # Fix musl build. + (fetchpatch { + url = "https://github.com/llvm/llvm-project/commit/5cd554303ead0f8891eee3cd6d25cb07f5a7bf67.patch"; + relative = "llvm"; + hash = "sha256-XPbvNJ45SzjMGlNUgt/IgEvM2dHQpDOe6woUJY+nUYA="; + }) + ]; + pollyPatches = [ + ./llvm/gnu-install-dirs-polly.patch + + # Just like the `llvm-lit-cfg` patch, but for `polly`. + ./llvm/polly-lit-cfg-add-libs-to-dylib-path.patch + ]; }; # `llvm` historically had the binaries. When choosing an output explicitly, @@ -105,7 +169,6 @@ in let libllvmLibdir = "${tools.libllvm.lib}/lib"; }) ]; - inherit llvm_meta; }; clang-unwrapped = tools.libclang; @@ -125,6 +188,9 @@ in let python3 = pkgs.python3; # don't use python-boot }); + # Wrapper for standalone command line utilities + clang-tools = callPackage ../common/clang-tools { }; + # pick clang appropriate for package set we are targeting clang = /**/ if stdenv.targetPlatform.libc == null then tools.clangNoLibc @@ -155,7 +221,6 @@ in let patches = [ ./lld/gnu-install-dirs.patch ]; - inherit llvm_meta; }; lldb = callPackage ../common/lldb.nix { @@ -188,7 +253,6 @@ in let && !stdenv.targetPlatform.isAarch64 && (lib.versionOlder darwin.apple_sdk.sdk.version "11.0") ) ./lldb/cpu_subtype_arm64e_replacement.patch; - inherit llvm_meta; }; # Below, is the LLVM bootstrapping logic. It handles building a @@ -291,7 +355,7 @@ in let }); libraries = lib.makeExtensible (libraries: let - callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake ninja libxml2 python3 release_version version monorepoSrc; }); + callPackage = newScope (libraries // buildLlvmTools // args // metadata); in { compiler-rt-libc = callPackage ../common/compiler-rt { @@ -308,7 +372,6 @@ in let # See: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999829893 ../common/compiler-rt/armv7l-15.patch ]; - inherit llvm_meta; stdenv = if stdenv.hostPlatform.useLLVM or false then overrideCC stdenv buildLlvmTools.clangNoCompilerRtWithLibc else stdenv; @@ -328,7 +391,6 @@ in let # See: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999829893 ../common/compiler-rt/armv7l-15.patch ]; - inherit llvm_meta; stdenv = if stdenv.hostPlatform.useLLVM or false then overrideCC stdenv buildLlvmTools.clangNoCompilerRt else stdenv; @@ -370,7 +432,6 @@ in let ]; }) ]; - inherit llvm_meta; stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx; }; @@ -378,7 +439,6 @@ in let patches = [ ./libunwind/gnu-install-dirs.patch ]; - inherit llvm_meta; stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx; }; @@ -388,9 +448,8 @@ in let ./openmp/gnu-install-dirs.patch ./openmp/run-lit-directly.patch ]; - inherit llvm_meta targetLlvm; }; }); noExtend = extensible: lib.attrsets.removeAttrs extensible [ "extend" ]; -in { inherit tools libraries release_version lldbPlugins; } // (noExtend libraries) // (noExtend tools) +in { inherit tools libraries lldbPlugins; inherit (metadata) release_version; } // (noExtend libraries) // (noExtend tools) diff --git a/pkgs/development/compilers/llvm/15/llvm/default.nix b/pkgs/development/compilers/llvm/15/llvm/default.nix deleted file mode 100644 index d7ebcbcf8b760..0000000000000 --- a/pkgs/development/compilers/llvm/15/llvm/default.nix +++ /dev/null @@ -1,442 +0,0 @@ -{ lib, stdenv, llvm_meta -, pkgsBuildBuild -, monorepoSrc -, runCommand -, fetchpatch -, cmake -, darwin -, ninja -, python3 -, python3Packages -, libffi -, enableGoldPlugin ? libbfd.hasPluginAPI -, libbfd -, libpfm -, libxml2 -, ncurses -, version -, release_version -, zlib -, which -, sysctl -, buildLlvmTools -, debugVersion ? false -, doCheck ? (!stdenv.isx86_32 /* TODO: why */) && (!stdenv.hostPlatform.isMusl) - && (stdenv.hostPlatform == stdenv.buildPlatform) -, enableManpages ? false -, enableSharedLibraries ? !stdenv.hostPlatform.isStatic -, enablePFM ? stdenv.isLinux /* PFM only supports Linux */ - # broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245 - # broken for the armv7l builder - && !stdenv.hostPlatform.isAarch -, enablePolly ? true -}: - -let - inherit (lib) optional optionals optionalString; - - # Used when creating a version-suffixed symlink of libLLVM.dylib - shortVersion = with lib; - concatStringsSep "." (take 1 (splitString "." release_version)); - - # Ordinarily we would just the `doCheck` and `checkDeps` functionality - # `mkDerivation` gives us to manage our test dependencies (instead of breaking - # out `doCheck` as a package level attribute). - # - # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in - # particular the children it uses to do feature detection. - # - # This means that python deps we add to `checkDeps` (which the python - # interpreter is made aware of via `$PYTHONPATH` – populated by the python - # setup hook) are not picked up by `lit` which causes it to skip tests. - # - # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work - # because this package is shadowed in `$PATH` by the regular `python3` - # package. - # - # So, we "manually" assemble one python derivation for the package to depend - # on, taking into account whether checks are enabled or not: - python = if doCheck then - # Note that we _explicitly_ ask for a python interpreter for our host - # platform here; the splicing that would ordinarily take care of this for - # us does not seem to work once we use `withPackages`. - let - checkDeps = ps: with ps; [ psutil ]; - in pkgsBuildBuild.targetPackages.python3.withPackages checkDeps - else python3; - -in stdenv.mkDerivation (rec { - pname = "llvm"; - inherit version; - - src = runCommand "${pname}-src-${version}" {} ('' - mkdir -p "$out" - cp -r ${monorepoSrc}/cmake "$out" - cp -r ${monorepoSrc}/${pname} "$out" - cp -r ${monorepoSrc}/third-party "$out" - '' + lib.optionalString enablePolly '' - chmod u+w "$out/${pname}/tools" - cp -r ${monorepoSrc}/polly "$out/${pname}/tools" - ''); - - sourceRoot = "${src.name}/${pname}"; - - outputs = [ "out" "lib" "dev" "python" ]; - - nativeBuildInputs = [ cmake ninja python ] - ++ optionals enableManpages [ - # Note: we intentionally use `python3Packages` instead of `python3.pkgs`; - # splicing does *not* work with the latter. (TODO: fix) - python3Packages.sphinx python3Packages.recommonmark - ]; - - buildInputs = [ libxml2 libffi ] - ++ optional enablePFM libpfm; # exegesis - - propagatedBuildInputs = [ ncurses zlib ]; - - nativeCheckInputs = [ - which - ] ++ lib.optional stdenv.isDarwin sysctl; - - patches = [ - ./gnu-install-dirs.patch - - # Running the tests involves invoking binaries (like `opt`) that depend on - # the LLVM dylibs and reference them by absolute install path (i.e. their - # nix store path). - # - # Because we have not yet run the install phase (we're running these tests - # as part of `checkPhase` instead of `installCheckPhase`) these absolute - # paths do not exist yet; to work around this we point the loader (`ld` on - # unix, `dyld` on macOS) at the `lib` directory which will later become this - # package's `lib` output. - # - # Previously we would just set `LD_LIBRARY_PATH` to include the build `lib` - # dir but: - # - this doesn't generalize well to other platforms; `lit` doesn't forward - # `DYLD_LIBRARY_PATH` (macOS): - # + https://github.com/llvm/llvm-project/blob/0d89963df354ee309c15f67dc47c8ab3cb5d0fb2/llvm/utils/lit/lit/TestingConfig.py#L26 - # - even if `lit` forwarded this env var, we actually cannot set - # `DYLD_LIBRARY_PATH` in the child processes `lit` launches because - # `DYLD_LIBRARY_PATH` (and `DYLD_FALLBACK_LIBRARY_PATH`) is cleared for - # "protected processes" (i.e. the python interpreter that runs `lit`): - # https://stackoverflow.com/a/35570229 - # - other LLVM subprojects deal with this issue by having their `lit` - # configuration set these env vars for us; it makes sense to do the same - # for LLVM: - # + https://github.com/llvm/llvm-project/blob/4c106cfdf7cf7eec861ad3983a3dd9a9e8f3a8ae/clang-tools-extra/test/Unit/lit.cfg.py#L22-L31 - # - # !!! TODO: look into upstreaming this patch - ./llvm-lit-cfg-add-libs-to-dylib-path.patch - - # `lit` has a mode where it executes run lines as a shell script which is - # constructs; this is problematic for macOS because it means that there's - # another process in between `lit` and the binaries being tested. As noted - # above, this means that `DYLD_LIBRARY_PATH` is cleared which means that our - # tests fail with dyld errors. - # - # To get around this we patch `lit` to reintroduce `DYLD_LIBRARY_PATH`, when - # present in the test configuration. - # - # It's not clear to me why this isn't an issue for LLVM developers running - # on macOS (nothing about this _seems_ nix specific).. - ./lit-shell-script-runner-set-dyld-library-path.patch - - # Fix musl build. - (fetchpatch { - url = "https://github.com/llvm/llvm-project/commit/5cd554303ead0f8891eee3cd6d25cb07f5a7bf67.patch"; - relative = "llvm"; - hash = "sha256-XPbvNJ45SzjMGlNUgt/IgEvM2dHQpDOe6woUJY+nUYA="; - }) - ] ++ lib.optionals enablePolly [ - ./gnu-install-dirs-polly.patch - - # Just like the `llvm-lit-cfg` patch, but for `polly`. - ./polly-lit-cfg-add-libs-to-dylib-path.patch - ]; - - postPatch = optionalString stdenv.isDarwin '' - substituteInPlace cmake/modules/AddLLVM.cmake \ - --replace 'set(_install_name_dir INSTALL_NAME_DIR "@rpath")' "set(_install_name_dir)" \ - --replace 'set(_install_rpath "@loader_path/../''${CMAKE_INSTALL_LIBDIR}''${LLVM_LIBDIR_SUFFIX}" ''${extra_libdir})' "" - - # As of LLVM 15, marked as XFAIL on arm64 macOS but lit doesn't seem to pick - # this up: https://github.com/llvm/llvm-project/blob/c344d97a125b18f8fed0a64aace73c49a870e079/llvm/test/MC/ELF/cfi-version.ll#L7 - rm test/MC/ELF/cfi-version.ll - - # This test tries to call `sw_vers` by absolute path (`/usr/bin/sw_vers`) - # and thus fails under the sandbox: - substituteInPlace unittests/Support/Host.cpp \ - --replace '/usr/bin/sw_vers' "${(builtins.toString darwin.DarwinTools) + "/bin/sw_vers" }" - '' + optionalString (stdenv.isDarwin && stdenv.hostPlatform.isx86) '' - # This test tries to call the intrinsics `@llvm.roundeven.f32` and - # `@llvm.roundeven.f64` which seem to (incorrectly?) lower to `roundevenf` - # and `roundeven` on x86_64 macOS. - # - # However these functions are glibc specific so the test fails: - # - https://www.gnu.org/software/gnulib/manual/html_node/roundevenf.html - # - https://www.gnu.org/software/gnulib/manual/html_node/roundeven.html - # - # TODO(@rrbutani): this seems to run fine on `aarch64-darwin`, why does it - # pass there? - substituteInPlace test/ExecutionEngine/Interpreter/intrinsics.ll \ - --replace "%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)" "" \ - --replace "%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)" "" - - # This test fails on darwin x86_64 because `sw_vers` reports a different - # macOS version than what LLVM finds by reading - # `/System/Library/CoreServices/SystemVersion.plist` (which is passed into - # the sandbox on macOS). - # - # The `sw_vers` provided by nixpkgs reports the macOS version associated - # with the `CoreFoundation` framework with which it was built. Because - # nixpkgs pins the SDK for `aarch64-darwin` and `x86_64-darwin` what - # `sw_vers` reports is not guaranteed to match the macOS version of the host - # that's building this derivation. - # - # Astute readers will note that we only _patch_ this test on aarch64-darwin - # (to use the nixpkgs provided `sw_vers`) instead of disabling it outright. - # So why does this test pass on aarch64? - # - # Well, it seems that `sw_vers` on aarch64 actually links against the _host_ - # CoreFoundation framework instead of the nixpkgs provided one. - # - # Not entirely sure what the right fix is here. I'm assuming aarch64 - # `sw_vers` doesn't intentionally link against the host `CoreFoundation` - # (still digging into how this ends up happening, will follow up) but that - # aside I think the more pertinent question is: should we be patching LLVM's - # macOS version detection logic to use `sw_vers` instead of reading host - # paths? This *is* a way in which details about builder machines can creep - # into the artifacts that are produced, affecting reproducibility, but it's - # not clear to me when/where/for what this even gets used in LLVM. - # - # TODO(@rrbutani): fix/follow-up - substituteInPlace unittests/Support/Host.cpp \ - --replace "getMacOSHostVersion" "DISABLED_getMacOSHostVersion" - - # This test fails with a `dysmutil` crash; have not yet dug into what's - # going on here (TODO(@rrbutani)). - rm test/tools/dsymutil/ARM/obfuscated.test - '' + '' - # FileSystem permissions tests fail with various special bits - substituteInPlace unittests/Support/CMakeLists.txt \ - --replace "Path.cpp" "" - rm unittests/Support/Path.cpp - substituteInPlace unittests/IR/CMakeLists.txt \ - --replace "PassBuilderCallbacksTest.cpp" "" - rm unittests/IR/PassBuilderCallbacksTest.cpp - rm test/tools/llvm-objcopy/ELF/mirror-permissions-unix.test - # timing-based tests are trouble - rm utils/lit/tests/googletest-timeout.py - '' + optionalString stdenv.hostPlatform.isMusl '' - patch -p1 -i ${../../common/llvm/TLI-musl.patch} - substituteInPlace unittests/Support/CMakeLists.txt \ - --replace "add_subdirectory(DynamicLibrary)" "" - rm unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp - # valgrind unhappy with musl or glibc, but fails w/musl only - rm test/CodeGen/AArch64/wineh4.mir - '' + optionalString stdenv.hostPlatform.isAarch32 '' - # skip failing X86 test cases on 32-bit ARM - rm test/DebugInfo/X86/convert-debugloc.ll - rm test/DebugInfo/X86/convert-inlined.ll - rm test/DebugInfo/X86/convert-linked.ll - rm test/tools/dsymutil/X86/op-convert.test - rm test/tools/gold/X86/split-dwarf.ll - rm test/tools/llvm-dwarfdump/X86/prettyprint_types.s - rm test/tools/llvm-dwarfdump/X86/simplified-template-names.s - - # !!! Note: these tests are removed in LLVM 16. - # - # See here for context: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999790443 - rm test/CodeGen/RISCV/rv32zbp.ll - rm test/CodeGen/RISCV/rv64zbp.ll - '' + optionalString (stdenv.hostPlatform.system == "armv6l-linux") '' - # Seems to require certain floating point hardware (NEON?) - rm test/ExecutionEngine/frem.ll - '' + '' - patchShebangs test/BugPoint/compile-custom.ll.py - ''; - - preConfigure = '' - # Workaround for configure flags that need to have spaces - cmakeFlagsArray+=( - -DLLVM_LIT_ARGS="-svj''${NIX_BUILD_CORES} --no-progress-bar" - ) - ''; - - # Defensive check: some paths (that we make symlinks to) depend on the release - # version, for example: - # - https://github.com/llvm/llvm-project/blob/406bde9a15136254f2b10d9ef3a42033b3cb1b16/clang/lib/Headers/CMakeLists.txt#L185 - # - # So we want to sure that the version in the source matches the release - # version we were given. - # - # We do this check here, in the LLVM build, because it happens early. - postConfigure = let - v = lib.versions; - major = v.major release_version; - minor = v.minor release_version; - patch = v.patch release_version; - in '' - # $1: part, $2: expected - check_version() { - part="''${1^^}" - part="$(cat include/llvm/Config/llvm-config.h | grep "#define LLVM_VERSION_''${part} " | cut -d' ' -f3)" - - if [[ "$part" != "$2" ]]; then - echo >&2 \ - "mismatch in the $1 version! we have version ${release_version}" \ - "and expected the $1 version to be '$2'; the source has '$part' instead" - exit 3 - fi - } - - check_version major ${major} - check_version minor ${minor} - check_version patch ${patch} - ''; - - # E.g. mesa.drivers use the build-id as a cache key (see #93946): - LDFLAGS = optionalString (enableSharedLibraries && !stdenv.isDarwin) "-Wl,--build-id=sha1"; - - hardeningDisable = [ "trivialautovarinit" ]; - - cmakeBuildType = if debugVersion then "Debug" else "Release"; - - cmakeFlags = with stdenv; let - # These flags influence llvm-config's BuildVariables.inc in addition to the - # general build. We need to make sure these are also passed via - # CROSS_TOOLCHAIN_FLAGS_NATIVE when cross-compiling or llvm-config-native - # will return different results from the cross llvm-config. - # - # Some flags don't need to be repassed because LLVM already does so (like - # CMAKE_BUILD_TYPE), others are irrelevant to the result. - flagsForLlvmConfig = [ - "-DLLVM_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/llvm" - "-DLLVM_ENABLE_RTTI=ON" - ] ++ optionals enableSharedLibraries [ - "-DLLVM_LINK_LLVM_DYLIB=ON" - ]; - in flagsForLlvmConfig ++ [ - "-DLLVM_INSTALL_UTILS=ON" # Needed by rustc - "-DLLVM_BUILD_TESTS=${if doCheck then "ON" else "OFF"}" - "-DLLVM_ENABLE_FFI=ON" - "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}" - "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}" - "-DLLVM_ENABLE_DUMP=ON" - ] ++ optionals stdenv.hostPlatform.isStatic [ - # Disables building of shared libs, -fPIC is still injected by cc-wrapper - "-DLLVM_ENABLE_PIC=OFF" - "-DLLVM_BUILD_STATIC=ON" - "-DLLVM_LINK_LLVM_DYLIB=off" - # libxml2 needs to be disabled because the LLVM build system ignores its .la - # file and doesn't link zlib as well. - # https://github.com/ClangBuiltLinux/tc-build/issues/150#issuecomment-845418812 - "-DLLVM_ENABLE_LIBXML2=OFF" - ] ++ optionals enableManpages [ - "-DLLVM_BUILD_DOCS=ON" - "-DLLVM_ENABLE_SPHINX=ON" - "-DSPHINX_OUTPUT_MAN=ON" - "-DSPHINX_OUTPUT_HTML=OFF" - "-DSPHINX_WARNINGS_AS_ERRORS=OFF" - ] ++ optionals (enableGoldPlugin) [ - "-DLLVM_BINUTILS_INCDIR=${libbfd.dev}/include" - ] ++ optionals isDarwin [ - "-DLLVM_ENABLE_LIBCXX=ON" - "-DCAN_TARGET_i386=false" - ] ++ optionals ((stdenv.hostPlatform != stdenv.buildPlatform) && !(stdenv.buildPlatform.canExecute stdenv.hostPlatform)) [ - "-DCMAKE_CROSSCOMPILING=True" - "-DLLVM_TABLEGEN=${buildLlvmTools.llvm}/bin/llvm-tblgen" - ( - let - nativeCC = pkgsBuildBuild.targetPackages.stdenv.cc; - nativeBintools = nativeCC.bintools.bintools; - nativeToolchainFlags = [ - "-DCMAKE_C_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}cc" - "-DCMAKE_CXX_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}c++" - "-DCMAKE_AR=${nativeBintools}/bin/${nativeBintools.targetPrefix}ar" - "-DCMAKE_STRIP=${nativeBintools}/bin/${nativeBintools.targetPrefix}strip" - "-DCMAKE_RANLIB=${nativeBintools}/bin/${nativeBintools.targetPrefix}ranlib" - ]; - # We need to repass the custom GNUInstallDirs values, otherwise CMake - # will choose them for us, leading to wrong results in llvm-config-native - nativeInstallFlags = [ - "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}" - "-DCMAKE_INSTALL_BINDIR=${placeholder "out"}/bin" - "-DCMAKE_INSTALL_INCLUDEDIR=${placeholder "dev"}/include" - "-DCMAKE_INSTALL_LIBDIR=${placeholder "lib"}/lib" - "-DCMAKE_INSTALL_LIBEXECDIR=${placeholder "lib"}/libexec" - ]; - in "-DCROSS_TOOLCHAIN_FLAGS_NATIVE:list=" - + lib.concatStringsSep ";" (lib.concatLists [ - flagsForLlvmConfig - nativeToolchainFlags - nativeInstallFlags - ]) - ) - ]; - - postInstall = '' - mkdir -p $python/share - mv $out/share/opt-viewer $python/share/opt-viewer - moveToOutput "bin/llvm-config*" "$dev" - substituteInPlace "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" \ - --replace "\''${_IMPORT_PREFIX}/lib/lib" "$lib/lib/lib" \ - --replace "$out/bin/llvm-config" "$dev/bin/llvm-config" - substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \ - --replace 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "'"$lib"'")' - '' - + optionalString (stdenv.isDarwin && enableSharedLibraries) '' - ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib - ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib - '' - + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' - cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native - ''; - - inherit doCheck; - - checkTarget = "check-all"; - - # For the update script: - passthru.monorepoSrc = monorepoSrc; - - requiredSystemFeatures = [ "big-parallel" ]; - meta = llvm_meta // { - homepage = "https://llvm.org/"; - description = "A collection of modular and reusable compiler and toolchain technologies"; - longDescription = '' - The LLVM Project is a collection of modular and reusable compiler and - toolchain technologies. Despite its name, LLVM has little to do with - traditional virtual machines. The name "LLVM" itself is not an acronym; it - is the full name of the project. - LLVM began as a research project at the University of Illinois, with the - goal of providing a modern, SSA-based compilation strategy capable of - supporting both static and dynamic compilation of arbitrary programming - languages. Since then, LLVM has grown to be an umbrella project consisting - of a number of subprojects, many of which are being used in production by - a wide variety of commercial and open source projects as well as being - widely used in academic research. Code in the LLVM project is licensed - under the "Apache 2.0 License with LLVM exceptions". - ''; - }; -} // lib.optionalAttrs enableManpages { - pname = "llvm-manpages"; - - propagatedBuildInputs = []; - - ninjaFlags = [ "docs-llvm-man" ]; - installTargets = [ "install-docs-llvm-man" ]; - - postPatch = null; - postInstall = null; - - outputs = [ "out" ]; - - doCheck = false; - - meta = llvm_meta // { - description = "man pages for LLVM ${version}"; - }; -}) diff --git a/pkgs/development/compilers/llvm/16/compiler-rt/asan-offset.patch b/pkgs/development/compilers/llvm/16/compiler-rt/asan-offset.patch new file mode 100644 index 0000000000000..46afe5c007347 --- /dev/null +++ b/pkgs/development/compilers/llvm/16/compiler-rt/asan-offset.patch @@ -0,0 +1,11 @@ +--- a/lib/asan/CMakeLists.txt 2022-06-22 16:46:24.000000000 +0000 ++++ b/lib/asan/CMakeLists.txt +@@ -46,7 +46,7 @@ set(ASAN_STATIC_SOURCES + asan_rtl_static.cpp + ) + +-if (NOT WIN32 AND NOT APPLE) ++if (LINUX) + list(APPEND ASAN_STATIC_SOURCES + asan_rtl_x86_64.S + ) diff --git a/pkgs/development/compilers/llvm/16/compiler-rt/freebsd-i386.patch b/pkgs/development/compilers/llvm/16/compiler-rt/freebsd-i386.patch new file mode 100644 index 0000000000000..0a221750552a0 --- /dev/null +++ b/pkgs/development/compilers/llvm/16/compiler-rt/freebsd-i386.patch @@ -0,0 +1,21 @@ +--- a/lib/builtins/fp_lib.h 1969-12-31 16:00:01.000000000 -0800 ++++ b/lib/builtins/fp_lib.h 2023-12-21 23:39:36.066927293 -0800 +@@ -26,18 +26,6 @@ + #include <stdbool.h> + #include <stdint.h> + +-// x86_64 FreeBSD prior v9.3 define fixed-width types incorrectly in +-// 32-bit mode. +-#if defined(__FreeBSD__) && defined(__i386__) +-#include <sys/param.h> +-#if __FreeBSD_version < 903000 // v9.3 +-#define uint64_t unsigned long long +-#define int64_t long long +-#undef UINT64_C +-#define UINT64_C(c) (c##ULL) +-#endif +-#endif +- + #if defined SINGLE_PRECISION + + typedef uint16_t half_rep_t; diff --git a/pkgs/development/compilers/llvm/16/default.nix b/pkgs/development/compilers/llvm/16/default.nix index 5dd07d77cf8c6..80b2424b14cc0 100644 --- a/pkgs/development/compilers/llvm/16/default.nix +++ b/pkgs/development/compilers/llvm/16/default.nix @@ -1,6 +1,7 @@ -{ lowPrio, newScope, pkgs, lib, stdenv, cmake, ninja +{ lowPrio, newScope, pkgs, lib, stdenv , preLibcCrossHeaders -, libxml2, python3, fetchFromGitHub, substituteAll, overrideCC, wrapCCWith, wrapBintoolsWith +, substitute, substituteAll, fetchFromGitHub +, overrideCC, wrapCCWith, wrapBintoolsWith , buildLlvmTools # tools, but from the previous stage, for cross , targetLlvmLibraries # libraries, but from the next stage, for cross , targetLlvm @@ -39,7 +40,11 @@ # to you to make sure that the LLVM repo given matches the release configuration # specified. , monorepoSrc ? null -}: +# Allows passthrough to packages via newScope. This makes it possible to +# do `(llvmPackages.override { <someLlvmDependency> = bar; }).clang` and get +# an llvmPackages whose packages are overridden in an internally consistent way. +, ... +}@args: assert lib.assertMsg @@ -51,10 +56,13 @@ assert let monorepoSrc' = monorepoSrc; in let - # Import releaseInfo separately to avoid infinite recursion - inherit (import ../common/common-let.nix { inherit lib gitRelease officialRelease; }) releaseInfo; - inherit (releaseInfo) release_version version; - inherit (import ../common/common-let.nix { inherit lib fetchFromGitHub release_version gitRelease officialRelease monorepoSrc'; }) llvm_meta monorepoSrc; + + metadata = rec { + # Import releaseInfo separately to avoid infinite recursion + inherit (import ../common/common-let.nix { inherit lib gitRelease officialRelease; }) releaseInfo; + inherit (releaseInfo) release_version version; + inherit (import ../common/common-let.nix { inherit lib fetchFromGitHub release_version gitRelease officialRelease monorepoSrc'; }) llvm_meta monorepoSrc; + }; lldbPlugins = lib.makeExtensible (lldbPlugins: let callPackage = newScope (lldbPlugins // { inherit stdenv; inherit (tools) lldb; }); @@ -63,8 +71,8 @@ in let }); tools = lib.makeExtensible (tools: let - callPackage = newScope (tools // { inherit stdenv cmake ninja libxml2 python3 release_version version monorepoSrc buildLlvmTools; }); - major = lib.versions.major release_version; + callPackage = newScope (tools // args // metadata); + major = lib.versions.major metadata.release_version; mkExtraBuildCommands0 = cc: '' rsrc="$out/resource-root" mkdir "$rsrc" @@ -87,8 +95,57 @@ in let in { - libllvm = callPackage ./llvm { - inherit llvm_meta; + libllvm = callPackage ../common/llvm { + patches = [ + ./llvm/gnu-install-dirs.patch + + # Running the tests involves invoking binaries (like `opt`) that depend on + # the LLVM dylibs and reference them by absolute install path (i.e. their + # nix store path). + # + # Because we have not yet run the install phase (we're running these tests + # as part of `checkPhase` instead of `installCheckPhase`) these absolute + # paths do not exist yet; to work around this we point the loader (`ld` on + # unix, `dyld` on macOS) at the `lib` directory which will later become this + # package's `lib` output. + # + # Previously we would just set `LD_LIBRARY_PATH` to include the build `lib` + # dir but: + # - this doesn't generalize well to other platforms; `lit` doesn't forward + # `DYLD_LIBRARY_PATH` (macOS): + # + https://github.com/llvm/llvm-project/blob/0d89963df354ee309c15f67dc47c8ab3cb5d0fb2/llvm/utils/lit/lit/TestingConfig.py#L26 + # - even if `lit` forwarded this env var, we actually cannot set + # `DYLD_LIBRARY_PATH` in the child processes `lit` launches because + # `DYLD_LIBRARY_PATH` (and `DYLD_FALLBACK_LIBRARY_PATH`) is cleared for + # "protected processes" (i.e. the python interpreter that runs `lit`): + # https://stackoverflow.com/a/35570229 + # - other LLVM subprojects deal with this issue by having their `lit` + # configuration set these env vars for us; it makes sense to do the same + # for LLVM: + # + https://github.com/llvm/llvm-project/blob/4c106cfdf7cf7eec861ad3983a3dd9a9e8f3a8ae/clang-tools-extra/test/Unit/lit.cfg.py#L22-L31 + # + # !!! TODO: look into upstreaming this patch + ./llvm/llvm-lit-cfg-add-libs-to-dylib-path.patch + + # `lit` has a mode where it executes run lines as a shell script which is + # constructs; this is problematic for macOS because it means that there's + # another process in between `lit` and the binaries being tested. As noted + # above, this means that `DYLD_LIBRARY_PATH` is cleared which means that our + # tests fail with dyld errors. + # + # To get around this we patch `lit` to reintroduce `DYLD_LIBRARY_PATH`, when + # present in the test configuration. + # + # It's not clear to me why this isn't an issue for LLVM developers running + # on macOS (nothing about this _seems_ nix specific).. + ./llvm/lit-shell-script-runner-set-dyld-library-path.patch + ]; + pollyPatches = [ + ./llvm/gnu-install-dirs-polly.patch + + # Just like the `llvm-lit-cfg` patch, but for `polly`. + ./llvm/polly-lit-cfg-add-libs-to-dylib-path.patch + ]; }; # `llvm` historically had the binaries. When choosing an output explicitly, @@ -106,7 +163,6 @@ in let libllvmLibdir = "${tools.libllvm.lib}/lib"; }) ]; - inherit llvm_meta; }; clang-unwrapped = tools.libclang; @@ -126,6 +182,9 @@ in let python3 = pkgs.python3; # don't use python-boot }); + # Wrapper for standalone command line utilities + clang-tools = callPackage ../common/clang-tools { }; + # pick clang appropriate for package set we are targeting clang = /**/ if stdenv.targetPlatform.useLLVM or false then tools.clangUseLLVM @@ -156,15 +215,12 @@ in let ./lld/gnu-install-dirs.patch ./lld/add-table-base.patch ]; - inherit llvm_meta; }; - mlir = callPackage ../common/mlir { - inherit llvm_meta; - }; + mlir = callPackage ../common/mlir {}; lldb = callPackage ../common/lldb.nix { - src = callPackage ({ runCommand }: runCommand "lldb-src-${version}" {} '' + src = callPackage ({ runCommand }: runCommand "lldb-src-${metadata.version}" {} '' mkdir -p "$out" cp -r ${monorepoSrc}/cmake "$out" cp -r ${monorepoSrc}/lldb "$out" @@ -198,7 +254,6 @@ in let && !stdenv.targetPlatform.isAarch64 && (lib.versionOlder darwin.apple_sdk.sdk.version "11.0") ) ./lldb/cpu_subtype_arm64e_replacement.patch; - inherit llvm_meta; }; # Below, is the LLVM bootstrapping logic. It handles building a @@ -301,13 +356,11 @@ in let # Has to be in tools despite mostly being a library, # because we use a native helper executable from a # non-cross build in cross builds. - libclc = callPackage ../common/libclc.nix { - inherit buildLlvmTools; - }; + libclc = callPackage ../common/libclc.nix {}; }); libraries = lib.makeExtensible (libraries: let - callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake ninja libxml2 python3 release_version version monorepoSrc; }); + callPackage = newScope (libraries // buildLlvmTools // args // metadata); in { compiler-rt-libc = callPackage ../common/compiler-rt { @@ -324,7 +377,6 @@ in let # See: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999829893 # ../common/compiler-rt/armv7l-15.patch ]; - inherit llvm_meta; stdenv = if stdenv.hostPlatform.useLLVM or false || (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isStatic) then overrideCC stdenv buildLlvmTools.clangNoCompilerRtWithLibc else stdenv; @@ -344,7 +396,6 @@ in let # See: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999829893 # ../common/compiler-rt/armv7l-15.patch ]; - inherit llvm_meta; stdenv = if stdenv.hostPlatform.useLLVM or false then overrideCC stdenv buildLlvmTools.clangNoCompilerRt else stdenv; @@ -363,7 +414,6 @@ in let # so: we use the clang from this LLVM package set instead of the regular # stdenv's compiler. libcxx = callPackage ../common/libcxx { - inherit llvm_meta; stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx; }; @@ -371,7 +421,6 @@ in let patches = [ ./libunwind/gnu-install-dirs.patch ]; - inherit llvm_meta; stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx; }; @@ -381,9 +430,8 @@ in let ./openmp/gnu-install-dirs.patch ./openmp/run-lit-directly.patch ]; - inherit llvm_meta targetLlvm; }; }); noExtend = extensible: lib.attrsets.removeAttrs extensible [ "extend" ]; -in { inherit tools libraries release_version lldbPlugins; } // (noExtend libraries) // (noExtend tools) +in { inherit tools libraries lldbPlugins; inherit (metadata) release_version; } // (noExtend libraries) // (noExtend tools) diff --git a/pkgs/development/compilers/llvm/16/llvm/default.nix b/pkgs/development/compilers/llvm/16/llvm/default.nix deleted file mode 100644 index 0a8d877ba83c8..0000000000000 --- a/pkgs/development/compilers/llvm/16/llvm/default.nix +++ /dev/null @@ -1,435 +0,0 @@ -{ lib, stdenv, llvm_meta -, pkgsBuildBuild -, monorepoSrc -, runCommand -, cmake -, darwin -, ninja -, python3 -, python3Packages -, libffi -# TODO: Gold plugin on LLVM16 has a severe memory corruption bug: https://github.com/llvm/llvm-project/issues/61350. -, enableGoldPlugin ? false -, libbfd -, libpfm -, libxml2 -, ncurses -, version -, release_version -, zlib -, which -, sysctl -, buildLlvmTools -, debugVersion ? false -, doCheck ? (!stdenv.isx86_32 /* TODO: why */) && (!stdenv.hostPlatform.isMusl) - && (stdenv.hostPlatform == stdenv.buildPlatform) -, enableManpages ? false -, enableSharedLibraries ? !stdenv.hostPlatform.isStatic -, enablePFM ? stdenv.isLinux /* PFM only supports Linux */ - # broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245 - # broken for the armv7l builder - && !stdenv.hostPlatform.isAarch -, enablePolly ? true -}: - -let - inherit (lib) optional optionals optionalString; - - # Used when creating a version-suffixed symlink of libLLVM.dylib - shortVersion = with lib; - concatStringsSep "." (take 1 (splitString "." release_version)); - - # Ordinarily we would just the `doCheck` and `checkDeps` functionality - # `mkDerivation` gives us to manage our test dependencies (instead of breaking - # out `doCheck` as a package level attribute). - # - # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in - # particular the children it uses to do feature detection. - # - # This means that python deps we add to `checkDeps` (which the python - # interpreter is made aware of via `$PYTHONPATH` – populated by the python - # setup hook) are not picked up by `lit` which causes it to skip tests. - # - # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work - # because this package is shadowed in `$PATH` by the regular `python3` - # package. - # - # So, we "manually" assemble one python derivation for the package to depend - # on, taking into account whether checks are enabled or not: - python = if doCheck then - # Note that we _explicitly_ ask for a python interpreter for our host - # platform here; the splicing that would ordinarily take care of this for - # us does not seem to work once we use `withPackages`. - let - checkDeps = ps: with ps; [ psutil ]; - in pkgsBuildBuild.targetPackages.python3.withPackages checkDeps - else python3; - -in - assert (lib.assertMsg (!enableGoldPlugin) "Gold plugin cannot be enabled on LLVM16 due to a upstream issue: https://github.com/llvm/llvm-project/issues/61350"); - stdenv.mkDerivation (rec { - pname = "llvm"; - inherit version; - - src = runCommand "${pname}-src-${version}" {} ('' - mkdir -p "$out" - cp -r ${monorepoSrc}/cmake "$out" - cp -r ${monorepoSrc}/${pname} "$out" - cp -r ${monorepoSrc}/third-party "$out" - '' + lib.optionalString enablePolly '' - chmod u+w "$out/${pname}/tools" - cp -r ${monorepoSrc}/polly "$out/${pname}/tools" - ''); - - sourceRoot = "${src.name}/${pname}"; - - outputs = [ "out" "lib" "dev" "python" ]; - - nativeBuildInputs = [ cmake ninja python ] - ++ optionals enableManpages [ - # Note: we intentionally use `python3Packages` instead of `python3.pkgs`; - # splicing does *not* work with the latter. (TODO: fix) - python3Packages.sphinx python3Packages.recommonmark - ]; - - buildInputs = [ libxml2 libffi ] - ++ optional enablePFM libpfm; # exegesis - - propagatedBuildInputs = [ ncurses zlib ]; - - nativeCheckInputs = [ - which - ] ++ lib.optional stdenv.isDarwin sysctl; - - patches = [ - ./gnu-install-dirs.patch - - # Running the tests involves invoking binaries (like `opt`) that depend on - # the LLVM dylibs and reference them by absolute install path (i.e. their - # nix store path). - # - # Because we have not yet run the install phase (we're running these tests - # as part of `checkPhase` instead of `installCheckPhase`) these absolute - # paths do not exist yet; to work around this we point the loader (`ld` on - # unix, `dyld` on macOS) at the `lib` directory which will later become this - # package's `lib` output. - # - # Previously we would just set `LD_LIBRARY_PATH` to include the build `lib` - # dir but: - # - this doesn't generalize well to other platforms; `lit` doesn't forward - # `DYLD_LIBRARY_PATH` (macOS): - # + https://github.com/llvm/llvm-project/blob/0d89963df354ee309c15f67dc47c8ab3cb5d0fb2/llvm/utils/lit/lit/TestingConfig.py#L26 - # - even if `lit` forwarded this env var, we actually cannot set - # `DYLD_LIBRARY_PATH` in the child processes `lit` launches because - # `DYLD_LIBRARY_PATH` (and `DYLD_FALLBACK_LIBRARY_PATH`) is cleared for - # "protected processes" (i.e. the python interpreter that runs `lit`): - # https://stackoverflow.com/a/35570229 - # - other LLVM subprojects deal with this issue by having their `lit` - # configuration set these env vars for us; it makes sense to do the same - # for LLVM: - # + https://github.com/llvm/llvm-project/blob/4c106cfdf7cf7eec861ad3983a3dd9a9e8f3a8ae/clang-tools-extra/test/Unit/lit.cfg.py#L22-L31 - # - # !!! TODO: look into upstreaming this patch - ./llvm-lit-cfg-add-libs-to-dylib-path.patch - - # `lit` has a mode where it executes run lines as a shell script which is - # constructs; this is problematic for macOS because it means that there's - # another process in between `lit` and the binaries being tested. As noted - # above, this means that `DYLD_LIBRARY_PATH` is cleared which means that our - # tests fail with dyld errors. - # - # To get around this we patch `lit` to reintroduce `DYLD_LIBRARY_PATH`, when - # present in the test configuration. - # - # It's not clear to me why this isn't an issue for LLVM developers running - # on macOS (nothing about this _seems_ nix specific).. - ./lit-shell-script-runner-set-dyld-library-path.patch - ] ++ lib.optionals enablePolly [ - ./gnu-install-dirs-polly.patch - - # Just like the `llvm-lit-cfg` patch, but for `polly`. - ./polly-lit-cfg-add-libs-to-dylib-path.patch - ]; - - postPatch = optionalString stdenv.isDarwin '' - substituteInPlace cmake/modules/AddLLVM.cmake \ - --replace 'set(_install_name_dir INSTALL_NAME_DIR "@rpath")' "set(_install_name_dir)" \ - --replace 'set(_install_rpath "@loader_path/../''${CMAKE_INSTALL_LIBDIR}''${LLVM_LIBDIR_SUFFIX}" ''${extra_libdir})' "" - - # As of LLVM 15, marked as XFAIL on arm64 macOS but lit doesn't seem to pick - # this up: https://github.com/llvm/llvm-project/blob/c344d97a125b18f8fed0a64aace73c49a870e079/llvm/test/MC/ELF/cfi-version.ll#L7 - rm test/MC/ELF/cfi-version.ll - - # This test tries to call `sw_vers` by absolute path (`/usr/bin/sw_vers`) - # and thus fails under the sandbox: - substituteInPlace unittests/TargetParser/Host.cpp \ - --replace '/usr/bin/sw_vers' "${(builtins.toString darwin.DarwinTools) + "/bin/sw_vers" }" - - # This test tries to call the intrinsics `@llvm.roundeven.f32` and - # `@llvm.roundeven.f64` which seem to (incorrectly?) lower to `roundevenf` - # and `roundeven` on macOS. - # - # However these functions are glibc specific so the test fails: - # - https://www.gnu.org/software/gnulib/manual/html_node/roundevenf.html - # - https://www.gnu.org/software/gnulib/manual/html_node/roundeven.html - # - substituteInPlace test/ExecutionEngine/Interpreter/intrinsics.ll \ - --replace "%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)" "" \ - --replace "%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)" "" - '' + optionalString (stdenv.isDarwin && stdenv.hostPlatform.isx86) '' - # This test fails on darwin x86_64 because `sw_vers` reports a different - # macOS version than what LLVM finds by reading - # `/System/Library/CoreServices/SystemVersion.plist` (which is passed into - # the sandbox on macOS). - # - # The `sw_vers` provided by nixpkgs reports the macOS version associated - # with the `CoreFoundation` framework with which it was built. Because - # nixpkgs pins the SDK for `aarch64-darwin` and `x86_64-darwin` what - # `sw_vers` reports is not guaranteed to match the macOS version of the host - # that's building this derivation. - # - # Astute readers will note that we only _patch_ this test on aarch64-darwin - # (to use the nixpkgs provided `sw_vers`) instead of disabling it outright. - # So why does this test pass on aarch64? - # - # Well, it seems that `sw_vers` on aarch64 actually links against the _host_ - # CoreFoundation framework instead of the nixpkgs provided one. - # - # Not entirely sure what the right fix is here. I'm assuming aarch64 - # `sw_vers` doesn't intentionally link against the host `CoreFoundation` - # (still digging into how this ends up happening, will follow up) but that - # aside I think the more pertinent question is: should we be patching LLVM's - # macOS version detection logic to use `sw_vers` instead of reading host - # paths? This *is* a way in which details about builder machines can creep - # into the artifacts that are produced, affecting reproducibility, but it's - # not clear to me when/where/for what this even gets used in LLVM. - # - # TODO(@rrbutani): fix/follow-up - substituteInPlace unittests/TargetParser/Host.cpp \ - --replace "getMacOSHostVersion" "DISABLED_getMacOSHostVersion" - - # This test fails with a `dysmutil` crash; have not yet dug into what's - # going on here (TODO(@rrbutani)). - rm test/tools/dsymutil/ARM/obfuscated.test - '' + '' - # FileSystem permissions tests fail with various special bits - substituteInPlace unittests/Support/CMakeLists.txt \ - --replace "Path.cpp" "" - rm unittests/Support/Path.cpp - substituteInPlace unittests/IR/CMakeLists.txt \ - --replace "PassBuilderCallbacksTest.cpp" "" - rm unittests/IR/PassBuilderCallbacksTest.cpp - rm test/tools/llvm-objcopy/ELF/mirror-permissions-unix.test - - # Fails in the presence of anti-virus software or other intrusion-detection software that - # modifies the atime when run. See #284056. - rm test/tools/llvm-objcopy/ELF/strip-preserve-atime.test - - # timing-based tests are trouble - rm utils/lit/tests/googletest-timeout.py - '' + optionalString stdenv.hostPlatform.isMusl '' - patch -p1 -i ${../../common/llvm/TLI-musl.patch} - substituteInPlace unittests/Support/CMakeLists.txt \ - --replace "add_subdirectory(DynamicLibrary)" "" - rm unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp - # valgrind unhappy with musl or glibc, but fails w/musl only - rm test/CodeGen/AArch64/wineh4.mir - '' + optionalString stdenv.hostPlatform.isAarch32 '' - # skip failing X86 test cases on 32-bit ARM - rm test/DebugInfo/X86/convert-debugloc.ll - rm test/DebugInfo/X86/convert-inlined.ll - rm test/DebugInfo/X86/convert-linked.ll - rm test/tools/dsymutil/X86/op-convert.test - rm test/tools/gold/X86/split-dwarf.ll - rm test/tools/llvm-dwarfdump/X86/prettyprint_types.s - rm test/tools/llvm-dwarfdump/X86/simplified-template-names.s - '' + optionalString (stdenv.hostPlatform.system == "armv6l-linux") '' - # Seems to require certain floating point hardware (NEON?) - rm test/ExecutionEngine/frem.ll - '' + '' - patchShebangs test/BugPoint/compile-custom.ll.py - ''; - - preConfigure = '' - # Workaround for configure flags that need to have spaces - cmakeFlagsArray+=( - -DLLVM_LIT_ARGS="-svj''${NIX_BUILD_CORES} --no-progress-bar" - ) - ''; - - # Defensive check: some paths (that we make symlinks to) depend on the release - # version, for example: - # - https://github.com/llvm/llvm-project/blob/406bde9a15136254f2b10d9ef3a42033b3cb1b16/clang/lib/Headers/CMakeLists.txt#L185 - # - # So we want to sure that the version in the source matches the release - # version we were given. - # - # We do this check here, in the LLVM build, because it happens early. - postConfigure = let - v = lib.versions; - major = v.major release_version; - minor = v.minor release_version; - patch = v.patch release_version; - in '' - # $1: part, $2: expected - check_version() { - part="''${1^^}" - part="$(cat include/llvm/Config/llvm-config.h | grep "#define LLVM_VERSION_''${part} " | cut -d' ' -f3)" - - if [[ "$part" != "$2" ]]; then - echo >&2 \ - "mismatch in the $1 version! we have version ${release_version}" \ - "and expected the $1 version to be '$2'; the source has '$part' instead" - exit 3 - fi - } - - check_version major ${major} - check_version minor ${minor} - check_version patch ${patch} - ''; - - # E.g. mesa.drivers use the build-id as a cache key (see #93946): - LDFLAGS = optionalString (enableSharedLibraries && !stdenv.isDarwin) "-Wl,--build-id=sha1"; - - hardeningDisable = [ "trivialautovarinit" ]; - - cmakeBuildType = if debugVersion then "Debug" else "Release"; - - cmakeFlags = with stdenv; let - # These flags influence llvm-config's BuildVariables.inc in addition to the - # general build. We need to make sure these are also passed via - # CROSS_TOOLCHAIN_FLAGS_NATIVE when cross-compiling or llvm-config-native - # will return different results from the cross llvm-config. - # - # Some flags don't need to be repassed because LLVM already does so (like - # CMAKE_BUILD_TYPE), others are irrelevant to the result. - flagsForLlvmConfig = [ - "-DLLVM_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/llvm" - "-DLLVM_ENABLE_RTTI=ON" - ] ++ optionals enableSharedLibraries [ - "-DLLVM_LINK_LLVM_DYLIB=ON" - ]; - in flagsForLlvmConfig ++ [ - "-DLLVM_INSTALL_UTILS=ON" # Needed by rustc - "-DLLVM_BUILD_TESTS=${if doCheck then "ON" else "OFF"}" - "-DLLVM_ENABLE_FFI=ON" - "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}" - "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}" - "-DLLVM_ENABLE_DUMP=ON" - ] ++ optionals stdenv.hostPlatform.isStatic [ - # Disables building of shared libs, -fPIC is still injected by cc-wrapper - "-DLLVM_ENABLE_PIC=OFF" - "-DLLVM_BUILD_STATIC=ON" - "-DLLVM_LINK_LLVM_DYLIB=off" - # libxml2 needs to be disabled because the LLVM build system ignores its .la - # file and doesn't link zlib as well. - # https://github.com/ClangBuiltLinux/tc-build/issues/150#issuecomment-845418812 - "-DLLVM_ENABLE_LIBXML2=OFF" - ] ++ optionals enableManpages [ - "-DLLVM_BUILD_DOCS=ON" - "-DLLVM_ENABLE_SPHINX=ON" - "-DSPHINX_OUTPUT_MAN=ON" - "-DSPHINX_OUTPUT_HTML=OFF" - "-DSPHINX_WARNINGS_AS_ERRORS=OFF" - ] ++ optionals enableGoldPlugin [ - # For LLVMgold plugin - "-DLLVM_BINUTILS_INCDIR=${libbfd.dev}/include" - ] ++ optionals isDarwin [ - "-DLLVM_ENABLE_LIBCXX=ON" - "-DCAN_TARGET_i386=false" - ] ++ optionals ((stdenv.hostPlatform != stdenv.buildPlatform) && !(stdenv.buildPlatform.canExecute stdenv.hostPlatform)) [ - "-DCMAKE_CROSSCOMPILING=True" - "-DLLVM_TABLEGEN=${buildLlvmTools.llvm}/bin/llvm-tblgen" - ( - let - nativeCC = pkgsBuildBuild.targetPackages.stdenv.cc; - nativeBintools = nativeCC.bintools.bintools; - nativeToolchainFlags = [ - "-DCMAKE_C_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}cc" - "-DCMAKE_CXX_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}c++" - "-DCMAKE_AR=${nativeBintools}/bin/${nativeBintools.targetPrefix}ar" - "-DCMAKE_STRIP=${nativeBintools}/bin/${nativeBintools.targetPrefix}strip" - "-DCMAKE_RANLIB=${nativeBintools}/bin/${nativeBintools.targetPrefix}ranlib" - ]; - # We need to repass the custom GNUInstallDirs values, otherwise CMake - # will choose them for us, leading to wrong results in llvm-config-native - nativeInstallFlags = [ - "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}" - "-DCMAKE_INSTALL_BINDIR=${placeholder "out"}/bin" - "-DCMAKE_INSTALL_INCLUDEDIR=${placeholder "dev"}/include" - "-DCMAKE_INSTALL_LIBDIR=${placeholder "lib"}/lib" - "-DCMAKE_INSTALL_LIBEXECDIR=${placeholder "lib"}/libexec" - ]; - in "-DCROSS_TOOLCHAIN_FLAGS_NATIVE:list=" - + lib.concatStringsSep ";" (lib.concatLists [ - flagsForLlvmConfig - nativeToolchainFlags - nativeInstallFlags - ]) - ) - ]; - - postInstall = '' - mkdir -p $python/share - mv $out/share/opt-viewer $python/share/opt-viewer - moveToOutput "bin/llvm-config*" "$dev" - substituteInPlace "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" \ - --replace "\''${_IMPORT_PREFIX}/lib/lib" "$lib/lib/lib" \ - --replace "$out/bin/llvm-config" "$dev/bin/llvm-config" - substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \ - --replace 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "'"$lib"'")' - '' - + optionalString (stdenv.isDarwin && enableSharedLibraries) '' - ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib - ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib - '' - + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' - cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native - ''; - - inherit doCheck; - - checkTarget = "check-all"; - - # For the update script: - passthru.monorepoSrc = monorepoSrc; - - requiredSystemFeatures = [ "big-parallel" ]; - meta = llvm_meta // { - homepage = "https://llvm.org/"; - description = "A collection of modular and reusable compiler and toolchain technologies"; - longDescription = '' - The LLVM Project is a collection of modular and reusable compiler and - toolchain technologies. Despite its name, LLVM has little to do with - traditional virtual machines. The name "LLVM" itself is not an acronym; it - is the full name of the project. - LLVM began as a research project at the University of Illinois, with the - goal of providing a modern, SSA-based compilation strategy capable of - supporting both static and dynamic compilation of arbitrary programming - languages. Since then, LLVM has grown to be an umbrella project consisting - of a number of subprojects, many of which are being used in production by - a wide variety of commercial and open source projects as well as being - widely used in academic research. Code in the LLVM project is licensed - under the "Apache 2.0 License with LLVM exceptions". - ''; - }; -} // lib.optionalAttrs enableManpages { - pname = "llvm-manpages"; - - propagatedBuildInputs = []; - - ninjaFlags = [ "docs-llvm-man" ]; - installTargets = [ "install-docs-llvm-man" ]; - - postPatch = null; - postInstall = null; - - outputs = [ "out" ]; - - doCheck = false; - - meta = llvm_meta // { - description = "man pages for LLVM ${version}"; - }; -}) diff --git a/pkgs/development/compilers/llvm/17/default.nix b/pkgs/development/compilers/llvm/17/default.nix index 9f4be2261b0cf..84979d24b1971 100644 --- a/pkgs/development/compilers/llvm/17/default.nix +++ b/pkgs/development/compilers/llvm/17/default.nix @@ -1,6 +1,7 @@ -{ lowPrio, newScope, pkgs, lib, stdenv, cmake, ninja +{ lowPrio, newScope, pkgs, lib, stdenv , preLibcCrossHeaders -, libxml2, python3, fetchFromGitHub, fetchpatch, substituteAll, overrideCC, wrapCCWith, wrapBintoolsWith +, substitute, substituteAll, fetchFromGitHub, fetchpatch +, overrideCC, wrapCCWith, wrapBintoolsWith , buildLlvmTools # tools, but from the previous stage, for cross , targetLlvmLibraries # libraries, but from the next stage, for cross , targetLlvm @@ -39,7 +40,11 @@ # to you to make sure that the LLVM repo given matches the release configuration # specified. , monorepoSrc ? null -}: +# Allows passthrough to packages via newScope. This makes it possible to +# do `(llvmPackages.override { <someLlvmDependency> = bar; }).clang` and get +# an llvmPackages whose packages are overridden in an internally consistent way. +, ... +}@args: assert lib.assertMsg @@ -51,15 +56,17 @@ assert let monorepoSrc' = monorepoSrc; in let - inherit (import ../common/common-let.nix { inherit lib gitRelease officialRelease; }) releaseInfo; - inherit (releaseInfo) release_version version; - - inherit (import ../common/common-let.nix { inherit lib fetchFromGitHub release_version gitRelease officialRelease monorepoSrc'; }) llvm_meta monorepoSrc; + metadata = rec { + # Import releaseInfo separately to avoid infinite recursion + inherit (import ../common/common-let.nix { inherit lib gitRelease officialRelease; }) releaseInfo; + inherit (releaseInfo) release_version version; + inherit (import ../common/common-let.nix { inherit lib fetchFromGitHub gitRelease release_version officialRelease monorepoSrc'; }) llvm_meta monorepoSrc; + }; tools = lib.makeExtensible (tools: let - callPackage = newScope (tools // { inherit stdenv cmake ninja libxml2 python3 release_version version monorepoSrc buildLlvmTools; }); - major = lib.versions.major release_version; + callPackage = newScope (tools // args // metadata); + major = lib.versions.major metadata.release_version; mkExtraBuildCommands0 = cc: '' rsrc="$out/resource-root" mkdir "$rsrc" @@ -82,8 +89,57 @@ in let in { - libllvm = callPackage ./llvm { - inherit llvm_meta; + libllvm = callPackage ../common/llvm { + patches = [ + ./llvm/gnu-install-dirs.patch + + # Running the tests involves invoking binaries (like `opt`) that depend on + # the LLVM dylibs and reference them by absolute install path (i.e. their + # nix store path). + # + # Because we have not yet run the install phase (we're running these tests + # as part of `checkPhase` instead of `installCheckPhase`) these absolute + # paths do not exist yet; to work around this we point the loader (`ld` on + # unix, `dyld` on macOS) at the `lib` directory which will later become this + # package's `lib` output. + # + # Previously we would just set `LD_LIBRARY_PATH` to include the build `lib` + # dir but: + # - this doesn't generalize well to other platforms; `lit` doesn't forward + # `DYLD_LIBRARY_PATH` (macOS): + # + https://github.com/llvm/llvm-project/blob/0d89963df354ee309c15f67dc47c8ab3cb5d0fb2/llvm/utils/lit/lit/TestingConfig.py#L26 + # - even if `lit` forwarded this env var, we actually cannot set + # `DYLD_LIBRARY_PATH` in the child processes `lit` launches because + # `DYLD_LIBRARY_PATH` (and `DYLD_FALLBACK_LIBRARY_PATH`) is cleared for + # "protected processes" (i.e. the python interpreter that runs `lit`): + # https://stackoverflow.com/a/35570229 + # - other LLVM subprojects deal with this issue by having their `lit` + # configuration set these env vars for us; it makes sense to do the same + # for LLVM: + # + https://github.com/llvm/llvm-project/blob/4c106cfdf7cf7eec861ad3983a3dd9a9e8f3a8ae/clang-tools-extra/test/Unit/lit.cfg.py#L22-L31 + # + # !!! TODO: look into upstreaming this patch + ./llvm/llvm-lit-cfg-add-libs-to-dylib-path.patch + + # `lit` has a mode where it executes run lines as a shell script which is + # constructs; this is problematic for macOS because it means that there's + # another process in between `lit` and the binaries being tested. As noted + # above, this means that `DYLD_LIBRARY_PATH` is cleared which means that our + # tests fail with dyld errors. + # + # To get around this we patch `lit` to reintroduce `DYLD_LIBRARY_PATH`, when + # present in the test configuration. + # + # It's not clear to me why this isn't an issue for LLVM developers running + # on macOS (nothing about this _seems_ nix specific).. + ./llvm/lit-shell-script-runner-set-dyld-library-path.patch + ]; + pollyPatches = [ + ./llvm/gnu-install-dirs-polly.patch + + # Just like the `llvm-lit-cfg` patch, but for `polly`. + ./llvm/polly-lit-cfg-add-libs-to-dylib-path.patch + ]; }; # `llvm` historically had the binaries. When choosing an output explicitly, @@ -101,7 +157,6 @@ in let libllvmLibdir = "${tools.libllvm.lib}/lib"; }) ]; - inherit llvm_meta; }; clang-unwrapped = tools.libclang; @@ -121,6 +176,9 @@ in let python3 = pkgs.python3; # don't use python-boot }); + # Wrapper for standalone command line utilities + clang-tools = callPackage ../common/clang-tools { }; + # pick clang appropriate for package set we are targeting clang = /**/ if stdenv.targetPlatform.useLLVM or false then tools.clangUseLLVM @@ -151,15 +209,12 @@ in let ./lld/gnu-install-dirs.patch ./lld/add-table-base.patch ]; - inherit llvm_meta; }; - mlir = callPackage ../common/mlir { - inherit llvm_meta; - }; + mlir = callPackage ../common/mlir {}; lldb = callPackage ../common/lldb.nix { - src = callPackage ({ runCommand }: runCommand "lldb-src-${version}" {} '' + src = callPackage ({ runCommand }: runCommand "lldb-src-${metadata.version}" {} '' mkdir -p "$out" cp -r ${monorepoSrc}/cmake "$out" cp -r ${monorepoSrc}/lldb "$out" @@ -183,7 +238,6 @@ in let && !stdenv.targetPlatform.isAarch64 && (lib.versionOlder darwin.apple_sdk.sdk.version "11.0") ) ./lldb/cpu_subtype_arm64e_replacement.patch; - inherit llvm_meta; }; # Below, is the LLVM bootstrapping logic. It handles building a @@ -286,13 +340,11 @@ in let # Has to be in tools despite mostly being a library, # because we use a native helper executable from a # non-cross build in cross builds. - libclc = callPackage ../common/libclc.nix { - inherit buildLlvmTools; - }; + libclc = callPackage ../common/libclc.nix {}; }); libraries = lib.makeExtensible (libraries: let - callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake ninja libxml2 python3 release_version version monorepoSrc; }); + callPackage = newScope (libraries // buildLlvmTools // args // metadata); in { compiler-rt-libc = callPackage ../common/compiler-rt { @@ -309,7 +361,6 @@ in let # See: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999829893 # ../common/compiler-rt/armv7l-15.patch ]; - inherit llvm_meta; stdenv = if stdenv.hostPlatform.useLLVM or false || (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isStatic) then overrideCC stdenv buildLlvmTools.clangNoCompilerRtWithLibc else stdenv; @@ -329,7 +380,6 @@ in let # See: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999829893 # ../common/compiler-rt/armv7l-15.patch ]; - inherit llvm_meta; stdenv = if stdenv.hostPlatform.useLLVM or false then overrideCC stdenv buildLlvmTools.clangNoCompilerRt else stdenv; @@ -356,12 +406,10 @@ in let hash = "sha256-jo+DYA6zuSv9OH3A0bYwY5TlkWprup4OKQ7rfK1WHBI="; }) ]; - inherit llvm_meta; stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx; }; libunwind = callPackage ../common/libunwind { - inherit llvm_meta; stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx; }; @@ -371,9 +419,8 @@ in let ./openmp/gnu-install-dirs.patch ./openmp/run-lit-directly.patch ]; - inherit llvm_meta targetLlvm; }; }); noExtend = extensible: lib.attrsets.removeAttrs extensible [ "extend" ]; -in { inherit tools libraries release_version; } // (noExtend libraries) // (noExtend tools) +in { inherit tools libraries; inherit (metadata) release_version; } // (noExtend libraries) // (noExtend tools) diff --git a/pkgs/development/compilers/llvm/17/llvm/default.nix b/pkgs/development/compilers/llvm/17/llvm/default.nix deleted file mode 100644 index a045bea9f4728..0000000000000 --- a/pkgs/development/compilers/llvm/17/llvm/default.nix +++ /dev/null @@ -1,431 +0,0 @@ -{ lib, stdenv, llvm_meta -, pkgsBuildBuild -, monorepoSrc -, runCommand -, cmake -, darwin -, ninja -, python3 -, python3Packages -, libffi -, enableGoldPlugin ? libbfd.hasPluginAPI -, libbfd -, libpfm -, libxml2 -, ncurses -, version -, release_version -, zlib -, which -, sysctl -, buildLlvmTools -, debugVersion ? false -, doCheck ? (!stdenv.isx86_32 /* TODO: why */) && (!stdenv.hostPlatform.isMusl) - && (stdenv.hostPlatform == stdenv.buildPlatform) -, enableManpages ? false -, enableSharedLibraries ? !stdenv.hostPlatform.isStatic -, enablePFM ? stdenv.isLinux /* PFM only supports Linux */ - # broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245 - # broken for the armv7l builder - && !stdenv.hostPlatform.isAarch -, enablePolly ? true -}: - -let - inherit (lib) optional optionals optionalString; - - # Used when creating a version-suffixed symlink of libLLVM.dylib - shortVersion = with lib; - concatStringsSep "." (take 1 (splitString "." release_version)); - - # Ordinarily we would just the `doCheck` and `checkDeps` functionality - # `mkDerivation` gives us to manage our test dependencies (instead of breaking - # out `doCheck` as a package level attribute). - # - # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in - # particular the children it uses to do feature detection. - # - # This means that python deps we add to `checkDeps` (which the python - # interpreter is made aware of via `$PYTHONPATH` – populated by the python - # setup hook) are not picked up by `lit` which causes it to skip tests. - # - # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work - # because this package is shadowed in `$PATH` by the regular `python3` - # package. - # - # So, we "manually" assemble one python derivation for the package to depend - # on, taking into account whether checks are enabled or not: - python = if doCheck then - # Note that we _explicitly_ ask for a python interpreter for our host - # platform here; the splicing that would ordinarily take care of this for - # us does not seem to work once we use `withPackages`. - let - checkDeps = ps: with ps; [ psutil ]; - in pkgsBuildBuild.targetPackages.python3.withPackages checkDeps - else python3; - -in - -stdenv.mkDerivation (rec { - pname = "llvm"; - inherit version; - - src = runCommand "${pname}-src-${version}" {} ('' - mkdir -p "$out" - cp -r ${monorepoSrc}/cmake "$out" - cp -r ${monorepoSrc}/${pname} "$out" - cp -r ${monorepoSrc}/third-party "$out" - '' + lib.optionalString enablePolly '' - chmod u+w "$out/${pname}/tools" - cp -r ${monorepoSrc}/polly "$out/${pname}/tools" - ''); - - sourceRoot = "${src.name}/${pname}"; - - outputs = [ "out" "lib" "dev" "python" ]; - - nativeBuildInputs = [ cmake ninja python ] - ++ optionals enableManpages [ - # Note: we intentionally use `python3Packages` instead of `python3.pkgs`; - # splicing does *not* work with the latter. (TODO: fix) - python3Packages.sphinx python3Packages.recommonmark - ]; - - buildInputs = [ libxml2 libffi ] - ++ optional enablePFM libpfm; # exegesis - - propagatedBuildInputs = [ ncurses zlib ]; - - nativeCheckInputs = [ - which - ] ++ lib.optional stdenv.isDarwin sysctl; - - patches = [ - ./gnu-install-dirs.patch - - # Running the tests involves invoking binaries (like `opt`) that depend on - # the LLVM dylibs and reference them by absolute install path (i.e. their - # nix store path). - # - # Because we have not yet run the install phase (we're running these tests - # as part of `checkPhase` instead of `installCheckPhase`) these absolute - # paths do not exist yet; to work around this we point the loader (`ld` on - # unix, `dyld` on macOS) at the `lib` directory which will later become this - # package's `lib` output. - # - # Previously we would just set `LD_LIBRARY_PATH` to include the build `lib` - # dir but: - # - this doesn't generalize well to other platforms; `lit` doesn't forward - # `DYLD_LIBRARY_PATH` (macOS): - # + https://github.com/llvm/llvm-project/blob/0d89963df354ee309c15f67dc47c8ab3cb5d0fb2/llvm/utils/lit/lit/TestingConfig.py#L26 - # - even if `lit` forwarded this env var, we actually cannot set - # `DYLD_LIBRARY_PATH` in the child processes `lit` launches because - # `DYLD_LIBRARY_PATH` (and `DYLD_FALLBACK_LIBRARY_PATH`) is cleared for - # "protected processes" (i.e. the python interpreter that runs `lit`): - # https://stackoverflow.com/a/35570229 - # - other LLVM subprojects deal with this issue by having their `lit` - # configuration set these env vars for us; it makes sense to do the same - # for LLVM: - # + https://github.com/llvm/llvm-project/blob/4c106cfdf7cf7eec861ad3983a3dd9a9e8f3a8ae/clang-tools-extra/test/Unit/lit.cfg.py#L22-L31 - # - # !!! TODO: look into upstreaming this patch - ./llvm-lit-cfg-add-libs-to-dylib-path.patch - - # `lit` has a mode where it executes run lines as a shell script which is - # constructs; this is problematic for macOS because it means that there's - # another process in between `lit` and the binaries being tested. As noted - # above, this means that `DYLD_LIBRARY_PATH` is cleared which means that our - # tests fail with dyld errors. - # - # To get around this we patch `lit` to reintroduce `DYLD_LIBRARY_PATH`, when - # present in the test configuration. - # - # It's not clear to me why this isn't an issue for LLVM developers running - # on macOS (nothing about this _seems_ nix specific).. - ./lit-shell-script-runner-set-dyld-library-path.patch - ] ++ lib.optionals enablePolly [ - ./gnu-install-dirs-polly.patch - - # Just like the `llvm-lit-cfg` patch, but for `polly`. - ./polly-lit-cfg-add-libs-to-dylib-path.patch - ]; - - postPatch = optionalString stdenv.isDarwin '' - substituteInPlace cmake/modules/AddLLVM.cmake \ - --replace 'set(_install_name_dir INSTALL_NAME_DIR "@rpath")' "set(_install_name_dir)" \ - --replace 'set(_install_rpath "@loader_path/../''${CMAKE_INSTALL_LIBDIR}''${LLVM_LIBDIR_SUFFIX}" ''${extra_libdir})' "" - - # As of LLVM 15, marked as XFAIL on arm64 macOS but lit doesn't seem to pick - # this up: https://github.com/llvm/llvm-project/blob/c344d97a125b18f8fed0a64aace73c49a870e079/llvm/test/MC/ELF/cfi-version.ll#L7 - rm test/MC/ELF/cfi-version.ll - - # This test tries to call `sw_vers` by absolute path (`/usr/bin/sw_vers`) - # and thus fails under the sandbox: - substituteInPlace unittests/TargetParser/Host.cpp \ - --replace '/usr/bin/sw_vers' "${(builtins.toString darwin.DarwinTools) + "/bin/sw_vers" }" - - # This test tries to call the intrinsics `@llvm.roundeven.f32` and - # `@llvm.roundeven.f64` which seem to (incorrectly?) lower to `roundevenf` - # and `roundeven` on macOS. - # - # However these functions are glibc specific so the test fails: - # - https://www.gnu.org/software/gnulib/manual/html_node/roundevenf.html - # - https://www.gnu.org/software/gnulib/manual/html_node/roundeven.html - # - substituteInPlace test/ExecutionEngine/Interpreter/intrinsics.ll \ - --replace "%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)" "" \ - --replace "%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)" "" - '' + optionalString (stdenv.isDarwin && stdenv.hostPlatform.isx86) '' - # This test fails on darwin x86_64 because `sw_vers` reports a different - # macOS version than what LLVM finds by reading - # `/System/Library/CoreServices/SystemVersion.plist` (which is passed into - # the sandbox on macOS). - # - # The `sw_vers` provided by nixpkgs reports the macOS version associated - # with the `CoreFoundation` framework with which it was built. Because - # nixpkgs pins the SDK for `aarch64-darwin` and `x86_64-darwin` what - # `sw_vers` reports is not guaranteed to match the macOS version of the host - # that's building this derivation. - # - # Astute readers will note that we only _patch_ this test on aarch64-darwin - # (to use the nixpkgs provided `sw_vers`) instead of disabling it outright. - # So why does this test pass on aarch64? - # - # Well, it seems that `sw_vers` on aarch64 actually links against the _host_ - # CoreFoundation framework instead of the nixpkgs provided one. - # - # Not entirely sure what the right fix is here. I'm assuming aarch64 - # `sw_vers` doesn't intentionally link against the host `CoreFoundation` - # (still digging into how this ends up happening, will follow up) but that - # aside I think the more pertinent question is: should we be patching LLVM's - # macOS version detection logic to use `sw_vers` instead of reading host - # paths? This *is* a way in which details about builder machines can creep - # into the artifacts that are produced, affecting reproducibility, but it's - # not clear to me when/where/for what this even gets used in LLVM. - # - # TODO(@rrbutani): fix/follow-up - substituteInPlace unittests/TargetParser/Host.cpp \ - --replace "getMacOSHostVersion" "DISABLED_getMacOSHostVersion" - - # This test fails with a `dysmutil` crash; have not yet dug into what's - # going on here (TODO(@rrbutani)). - rm test/tools/dsymutil/ARM/obfuscated.test - '' + '' - # FileSystem permissions tests fail with various special bits - substituteInPlace unittests/Support/CMakeLists.txt \ - --replace "Path.cpp" "" - rm unittests/Support/Path.cpp - substituteInPlace unittests/IR/CMakeLists.txt \ - --replace "PassBuilderCallbacksTest.cpp" "" - rm unittests/IR/PassBuilderCallbacksTest.cpp - rm test/tools/llvm-objcopy/ELF/mirror-permissions-unix.test - - # Fails in the presence of anti-virus software or other intrusion-detection software that - # modifies the atime when run. See #284056. - rm test/tools/llvm-objcopy/ELF/strip-preserve-atime.test - '' + optionalString stdenv.hostPlatform.isMusl '' - patch -p1 -i ${../../common/llvm/TLI-musl.patch} - substituteInPlace unittests/Support/CMakeLists.txt \ - --replace "add_subdirectory(DynamicLibrary)" "" - rm unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp - # valgrind unhappy with musl or glibc, but fails w/musl only - rm test/CodeGen/AArch64/wineh4.mir - '' + optionalString stdenv.hostPlatform.isAarch32 '' - # skip failing X86 test cases on 32-bit ARM - rm test/DebugInfo/X86/convert-debugloc.ll - rm test/DebugInfo/X86/convert-inlined.ll - rm test/DebugInfo/X86/convert-linked.ll - rm test/tools/dsymutil/X86/op-convert.test - rm test/tools/gold/X86/split-dwarf.ll - rm test/tools/llvm-dwarfdump/X86/prettyprint_types.s - rm test/tools/llvm-dwarfdump/X86/simplified-template-names.s - rm test/CodeGen/RISCV/attributes.ll - rm test/CodeGen/RISCV/xtheadmempair.ll - '' + optionalString (stdenv.hostPlatform.system == "armv6l-linux") '' - # Seems to require certain floating point hardware (NEON?) - rm test/ExecutionEngine/frem.ll - '' + '' - patchShebangs test/BugPoint/compile-custom.ll.py - ''; - - preConfigure = '' - # Workaround for configure flags that need to have spaces - cmakeFlagsArray+=( - -DLLVM_LIT_ARGS="-svj''${NIX_BUILD_CORES} --no-progress-bar" - ) - ''; - - # Defensive check: some paths (that we make symlinks to) depend on the release - # version, for example: - # - https://github.com/llvm/llvm-project/blob/406bde9a15136254f2b10d9ef3a42033b3cb1b16/clang/lib/Headers/CMakeLists.txt#L185 - # - # So we want to sure that the version in the source matches the release - # version we were given. - # - # We do this check here, in the LLVM build, because it happens early. - postConfigure = let - v = lib.versions; - major = v.major release_version; - minor = v.minor release_version; - patch = v.patch release_version; - in '' - # $1: part, $2: expected - check_version() { - part="''${1^^}" - part="$(cat include/llvm/Config/llvm-config.h | grep "#define LLVM_VERSION_''${part} " | cut -d' ' -f3)" - - if [[ "$part" != "$2" ]]; then - echo >&2 \ - "mismatch in the $1 version! we have version ${release_version}" \ - "and expected the $1 version to be '$2'; the source has '$part' instead" - exit 3 - fi - } - - check_version major ${major} - check_version minor ${minor} - check_version patch ${patch} - ''; - - # E.g. mesa.drivers use the build-id as a cache key (see #93946): - LDFLAGS = optionalString (enableSharedLibraries && !stdenv.isDarwin) "-Wl,--build-id=sha1"; - - cmakeBuildType = if debugVersion then "Debug" else "Release"; - - cmakeFlags = with stdenv; let - # These flags influence llvm-config's BuildVariables.inc in addition to the - # general build. We need to make sure these are also passed via - # CROSS_TOOLCHAIN_FLAGS_NATIVE when cross-compiling or llvm-config-native - # will return different results from the cross llvm-config. - # - # Some flags don't need to be repassed because LLVM already does so (like - # CMAKE_BUILD_TYPE), others are irrelevant to the result. - flagsForLlvmConfig = [ - "-DLLVM_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/llvm" - "-DLLVM_ENABLE_RTTI=ON" - ] ++ optionals enableSharedLibraries [ - "-DLLVM_LINK_LLVM_DYLIB=ON" - ]; - in flagsForLlvmConfig ++ [ - "-DLLVM_INSTALL_UTILS=ON" # Needed by rustc - "-DLLVM_BUILD_TESTS=${if doCheck then "ON" else "OFF"}" - "-DLLVM_ENABLE_FFI=ON" - "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}" - "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}" - "-DLLVM_ENABLE_DUMP=ON" - ] ++ optionals stdenv.hostPlatform.isStatic [ - # Disables building of shared libs, -fPIC is still injected by cc-wrapper - "-DLLVM_ENABLE_PIC=OFF" - "-DLLVM_BUILD_STATIC=ON" - "-DLLVM_LINK_LLVM_DYLIB=off" - # libxml2 needs to be disabled because the LLVM build system ignores its .la - # file and doesn't link zlib as well. - # https://github.com/ClangBuiltLinux/tc-build/issues/150#issuecomment-845418812 - "-DLLVM_ENABLE_LIBXML2=OFF" - ] ++ optionals enableManpages [ - "-DLLVM_BUILD_DOCS=ON" - "-DLLVM_ENABLE_SPHINX=ON" - "-DSPHINX_OUTPUT_MAN=ON" - "-DSPHINX_OUTPUT_HTML=OFF" - "-DSPHINX_WARNINGS_AS_ERRORS=OFF" - ] ++ optionals enableGoldPlugin [ - # For LLVMgold plugin - "-DLLVM_BINUTILS_INCDIR=${libbfd.dev}/include" - ] ++ optionals isDarwin [ - "-DLLVM_ENABLE_LIBCXX=ON" - "-DCAN_TARGET_i386=false" - ] ++ optionals ((stdenv.hostPlatform != stdenv.buildPlatform) && !(stdenv.buildPlatform.canExecute stdenv.hostPlatform)) [ - "-DCMAKE_CROSSCOMPILING=True" - "-DLLVM_TABLEGEN=${buildLlvmTools.llvm}/bin/llvm-tblgen" - ( - let - nativeCC = pkgsBuildBuild.targetPackages.stdenv.cc; - nativeBintools = nativeCC.bintools.bintools; - nativeToolchainFlags = [ - "-DCMAKE_C_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}cc" - "-DCMAKE_CXX_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}c++" - "-DCMAKE_AR=${nativeBintools}/bin/${nativeBintools.targetPrefix}ar" - "-DCMAKE_STRIP=${nativeBintools}/bin/${nativeBintools.targetPrefix}strip" - "-DCMAKE_RANLIB=${nativeBintools}/bin/${nativeBintools.targetPrefix}ranlib" - ]; - # We need to repass the custom GNUInstallDirs values, otherwise CMake - # will choose them for us, leading to wrong results in llvm-config-native - nativeInstallFlags = [ - "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}" - "-DCMAKE_INSTALL_BINDIR=${placeholder "out"}/bin" - "-DCMAKE_INSTALL_INCLUDEDIR=${placeholder "dev"}/include" - "-DCMAKE_INSTALL_LIBDIR=${placeholder "lib"}/lib" - "-DCMAKE_INSTALL_LIBEXECDIR=${placeholder "lib"}/libexec" - ]; - in "-DCROSS_TOOLCHAIN_FLAGS_NATIVE:list=" - + lib.concatStringsSep ";" (lib.concatLists [ - flagsForLlvmConfig - nativeToolchainFlags - nativeInstallFlags - ]) - ) - ]; - - postInstall = '' - mkdir -p $python/share - mv $out/share/opt-viewer $python/share/opt-viewer - moveToOutput "bin/llvm-config*" "$dev" - substituteInPlace "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" \ - --replace "\''${_IMPORT_PREFIX}/lib/lib" "$lib/lib/lib" \ - --replace "$out/bin/llvm-config" "$dev/bin/llvm-config" - substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \ - --replace 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "'"$lib"'")' - '' - + optionalString (stdenv.isDarwin && enableSharedLibraries) '' - ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib - ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib - '' - + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' - cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native - ''; - - inherit doCheck; - - checkTarget = "check-all"; - - # For the update script: - passthru.monorepoSrc = monorepoSrc; - - requiredSystemFeatures = [ "big-parallel" ]; - meta = llvm_meta // { - homepage = "https://llvm.org/"; - description = "A collection of modular and reusable compiler and toolchain technologies"; - longDescription = '' - The LLVM Project is a collection of modular and reusable compiler and - toolchain technologies. Despite its name, LLVM has little to do with - traditional virtual machines. The name "LLVM" itself is not an acronym; it - is the full name of the project. - LLVM began as a research project at the University of Illinois, with the - goal of providing a modern, SSA-based compilation strategy capable of - supporting both static and dynamic compilation of arbitrary programming - languages. Since then, LLVM has grown to be an umbrella project consisting - of a number of subprojects, many of which are being used in production by - a wide variety of commercial and open source projects as well as being - widely used in academic research. Code in the LLVM project is licensed - under the "Apache 2.0 License with LLVM exceptions". - ''; - }; -} // lib.optionalAttrs enableManpages { - pname = "llvm-manpages"; - - propagatedBuildInputs = []; - - ninjaFlags = [ "docs-llvm-man" ]; - installTargets = [ "install-docs-llvm-man" ]; - - postPatch = null; - postInstall = null; - - outputs = [ "out" ]; - - doCheck = false; - - meta = llvm_meta // { - description = "man pages for LLVM ${version}"; - }; -}) diff --git a/pkgs/development/compilers/llvm/18/default.nix b/pkgs/development/compilers/llvm/18/default.nix index 3c78cd44fdf58..878f1e3a8e7e4 100644 --- a/pkgs/development/compilers/llvm/18/default.nix +++ b/pkgs/development/compilers/llvm/18/default.nix @@ -1,6 +1,7 @@ -{ lowPrio, newScope, pkgs, lib, stdenv, cmake, ninja +{ lowPrio, newScope, pkgs, lib, stdenv , preLibcCrossHeaders -, libxml2, python3, fetchFromGitHub, substituteAll, overrideCC, wrapCCWith, wrapBintoolsWith +, substitute, substituteAll, fetchFromGitHub +, overrideCC, wrapCCWith, wrapBintoolsWith , buildLlvmTools # tools, but from the previous stage, for cross , targetLlvmLibraries # libraries, but from the next stage, for cross , targetLlvm @@ -25,7 +26,7 @@ # rev-version = /* human readable version; i.e. "unstable-2022-26-07" */; # sha256 = /* checksum for this release, can omit if specifying your own `monorepoSrc` */; # } -, officialRelease ? { version = "18.1.4"; sha256 = "sha256-LyQEb4ZJXm2hkPOM9XITIploMT2VKIQWxUFio7SXrc0="; } +, officialRelease ? { version = "18.1.7"; sha256 = "sha256-qBL/1zh2YFabiPAyHehvzDSDfnwnCvyH6nY/pzG757A="; } # i.e.: # { # version = /* i.e. "15.0.0" */; @@ -39,7 +40,11 @@ # to you to make sure that the LLVM repo given matches the release configuration # specified. , monorepoSrc ? null -}: +# Allows passthrough to packages via newScope. This makes it possible to +# do `(llvmPackages.override { <someLlvmDependency> = bar; }).clang` and get +# an llvmPackages whose packages are overridden in an internally consistent way. +, ... +}@args: assert lib.assertMsg @@ -51,15 +56,17 @@ assert let monorepoSrc' = monorepoSrc; in let - inherit (import ../common/common-let.nix { inherit lib gitRelease officialRelease; }) releaseInfo; - inherit (releaseInfo) release_version version; - - inherit (import ../common/common-let.nix { inherit lib fetchFromGitHub release_version gitRelease officialRelease monorepoSrc'; }) llvm_meta monorepoSrc; + metadata = rec { + # Import releaseInfo separately to avoid infinite recursion + inherit (import ../common/common-let.nix { inherit lib gitRelease officialRelease; }) releaseInfo; + inherit (releaseInfo) release_version version; + inherit (import ../common/common-let.nix { inherit lib fetchFromGitHub gitRelease release_version officialRelease monorepoSrc'; }) llvm_meta monorepoSrc; + }; tools = lib.makeExtensible (tools: let - callPackage = newScope (tools // { inherit stdenv cmake ninja libxml2 python3 release_version version monorepoSrc buildLlvmTools; }); - major = lib.versions.major release_version; + callPackage = newScope (tools // args // metadata); + major = lib.versions.major metadata.release_version; mkExtraBuildCommands0 = cc: '' rsrc="$out/resource-root" mkdir "$rsrc" @@ -82,8 +89,57 @@ in let in { - libllvm = callPackage ./llvm { - inherit llvm_meta; + libllvm = callPackage ../common/llvm { + patches = [ + ./llvm/gnu-install-dirs.patch + + # Running the tests involves invoking binaries (like `opt`) that depend on + # the LLVM dylibs and reference them by absolute install path (i.e. their + # nix store path). + # + # Because we have not yet run the install phase (we're running these tests + # as part of `checkPhase` instead of `installCheckPhase`) these absolute + # paths do not exist yet; to work around this we point the loader (`ld` on + # unix, `dyld` on macOS) at the `lib` directory which will later become this + # package's `lib` output. + # + # Previously we would just set `LD_LIBRARY_PATH` to include the build `lib` + # dir but: + # - this doesn't generalize well to other platforms; `lit` doesn't forward + # `DYLD_LIBRARY_PATH` (macOS): + # + https://github.com/llvm/llvm-project/blob/0d89963df354ee309c15f67dc47c8ab3cb5d0fb2/llvm/utils/lit/lit/TestingConfig.py#L26 + # - even if `lit` forwarded this env var, we actually cannot set + # `DYLD_LIBRARY_PATH` in the child processes `lit` launches because + # `DYLD_LIBRARY_PATH` (and `DYLD_FALLBACK_LIBRARY_PATH`) is cleared for + # "protected processes" (i.e. the python interpreter that runs `lit`): + # https://stackoverflow.com/a/35570229 + # - other LLVM subprojects deal with this issue by having their `lit` + # configuration set these env vars for us; it makes sense to do the same + # for LLVM: + # + https://github.com/llvm/llvm-project/blob/4c106cfdf7cf7eec861ad3983a3dd9a9e8f3a8ae/clang-tools-extra/test/Unit/lit.cfg.py#L22-L31 + # + # !!! TODO: look into upstreaming this patch + ./llvm/llvm-lit-cfg-add-libs-to-dylib-path.patch + + # `lit` has a mode where it executes run lines as a shell script which is + # constructs; this is problematic for macOS because it means that there's + # another process in between `lit` and the binaries being tested. As noted + # above, this means that `DYLD_LIBRARY_PATH` is cleared which means that our + # tests fail with dyld errors. + # + # To get around this we patch `lit` to reintroduce `DYLD_LIBRARY_PATH`, when + # present in the test configuration. + # + # It's not clear to me why this isn't an issue for LLVM developers running + # on macOS (nothing about this _seems_ nix specific).. + ./llvm/lit-shell-script-runner-set-dyld-library-path.patch + ]; + pollyPatches = [ + ./llvm/gnu-install-dirs-polly.patch + + # Just like the `llvm-lit-cfg` patch, but for `polly`. + ./llvm/polly-lit-cfg-add-libs-to-dylib-path.patch + ]; }; # `llvm` historically had the binaries. When choosing an output explicitly, @@ -101,7 +157,6 @@ in let libllvmLibdir = "${tools.libllvm.lib}/lib"; }) ]; - inherit llvm_meta; }; clang-unwrapped = tools.libclang; @@ -121,6 +176,9 @@ in let python3 = pkgs.python3; # don't use python-boot }); + # Wrapper for standalone command line utilities + clang-tools = callPackage ../common/clang-tools { }; + # pick clang appropriate for package set we are targeting clang = /**/ if stdenv.targetPlatform.useLLVM or false then tools.clangUseLLVM @@ -150,15 +208,12 @@ in let patches = [ ./lld/gnu-install-dirs.patch ]; - inherit llvm_meta; }; - mlir = callPackage ../common/mlir { - inherit llvm_meta; - }; + mlir = callPackage ../common/mlir {}; lldb = callPackage ../common/lldb.nix { - src = callPackage ({ runCommand }: runCommand "lldb-src-${version}" {} '' + src = callPackage ({ runCommand }: runCommand "lldb-src-${metadata.version}" {} '' mkdir -p "$out" cp -r ${monorepoSrc}/cmake "$out" cp -r ${monorepoSrc}/lldb "$out" @@ -182,7 +237,6 @@ in let && !stdenv.targetPlatform.isAarch64 && (lib.versionOlder darwin.apple_sdk.sdk.version "11.0") ) ./lldb/cpu_subtype_arm64e_replacement.patch; - inherit llvm_meta; }; # Below, is the LLVM bootstrapping logic. It handles building a @@ -285,13 +339,11 @@ in let # Has to be in tools despite mostly being a library, # because we use a native helper executable from a # non-cross build in cross builds. - libclc = callPackage ../common/libclc.nix { - inherit buildLlvmTools; - }; + libclc = callPackage ../common/libclc.nix {}; }); libraries = lib.makeExtensible (libraries: let - callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake ninja libxml2 python3 release_version version monorepoSrc; }); + callPackage = newScope (libraries // buildLlvmTools // args // metadata); in { compiler-rt-libc = callPackage ../common/compiler-rt { @@ -305,7 +357,6 @@ in let # See: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999829893 # ../common/compiler-rt/armv7l-15.patch ]; - inherit llvm_meta; stdenv = if stdenv.hostPlatform.useLLVM or false || (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isStatic) then overrideCC stdenv buildLlvmTools.clangNoCompilerRtWithLibc else stdenv; @@ -322,7 +373,6 @@ in let # See: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999829893 # ../common/compiler-rt/armv7l-15.patch ]; - inherit llvm_meta; stdenv = if stdenv.hostPlatform.useLLVM or false then overrideCC stdenv buildLlvmTools.clangNoCompilerRt else stdenv; @@ -345,12 +395,10 @@ in let # https://github.com/llvm/llvm-project/issues/64226 ./libcxx/0001-darwin-10.12-mbstate_t-fix.patch ]; - inherit llvm_meta; stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx; }; libunwind = callPackage ../common/libunwind { - inherit llvm_meta; stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx; }; @@ -359,9 +407,8 @@ in let ./openmp/fix-find-tool.patch ./openmp/run-lit-directly.patch ]; - inherit llvm_meta targetLlvm; }; }); noExtend = extensible: lib.attrsets.removeAttrs extensible [ "extend" ]; -in { inherit tools libraries release_version; } // (noExtend libraries) // (noExtend tools) +in { inherit tools libraries; inherit (metadata) release_version; } // (noExtend libraries) // (noExtend tools) diff --git a/pkgs/development/compilers/llvm/common/clang-tools/default.nix b/pkgs/development/compilers/llvm/common/clang-tools/default.nix new file mode 100644 index 0000000000000..7ecf0c5c431de --- /dev/null +++ b/pkgs/development/compilers/llvm/common/clang-tools/default.nix @@ -0,0 +1,59 @@ +{ + lib, + stdenv, + clang-unwrapped, + clang, + libcxxClang, + llvm_meta, + # enableLibcxx will use the c++ headers from clang instead of gcc. + # This shouldn't have any effect on platforms that use clang as the default compiler already. + enableLibcxx ? false, +}: + +stdenv.mkDerivation { + unwrapped = clang-unwrapped; + + pname = "clang-tools"; + version = lib.getVersion clang-unwrapped; + dontUnpack = true; + clang = if enableLibcxx then libcxxClang else clang; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + + for tool in $unwrapped/bin/clang-*; do + tool=$(basename "$tool") + + # Compilers have their own derivation, no need to include them here: + if [[ $tool == "clang-cl" || $tool == "clang-cpp" ]]; then + continue + fi + + # Clang's derivation produces a lot of binaries, but the tools we are + # interested in follow the `clang-something` naming convention - except + # for clang-$version (e.g. clang-13), which is the compiler again: + if [[ ! $tool =~ ^clang\-[a-zA-Z_\-]+$ ]]; then + continue + fi + + ln -s $out/bin/clangd $out/bin/$tool + done + + if [[ -z "$(ls -A $out/bin)" ]]; then + echo "Found no binaries - maybe their location or naming convention changed?" + exit 1 + fi + + substituteAll ${./wrapper} $out/bin/clangd + chmod +x $out/bin/clangd + + runHook postInstall + ''; + + meta = llvm_meta // { + description = "Standalone command line tools for C++ development"; + maintainers = with lib.maintainers; [ patryk27 ]; + }; +} diff --git a/pkgs/development/compilers/llvm/common/clang-tools/wrapper b/pkgs/development/compilers/llvm/common/clang-tools/wrapper new file mode 100755 index 0000000000000..1008023fdc0d1 --- /dev/null +++ b/pkgs/development/compilers/llvm/common/clang-tools/wrapper @@ -0,0 +1,27 @@ +#!/bin/sh + +buildcpath() { + local path after + while (( $# )); do + case $1 in + -isystem) + shift + path=$path${path:+':'}$1 + ;; + -idirafter) + shift + after=$after${after:+':'}$1 + ;; + esac + shift + done + echo $path${after:+':'}$after +} + +export CPATH=${CPATH}${CPATH:+':'}$(buildcpath ${NIX_CFLAGS_COMPILE} \ + $(<@clang@/nix-support/libc-cflags)):@clang@/resource-root/include +export CPLUS_INCLUDE_PATH=${CPLUS_INCLUDE_PATH}${CPLUS_INCLUDE_PATH:+':'}$(buildcpath ${NIX_CFLAGS_COMPILE} \ + $(<@clang@/nix-support/libcxx-cxxflags) \ + $(<@clang@/nix-support/libc-cflags)):@clang@/resource-root/include + +exec -a "$0" @unwrapped@/bin/$(basename $0) "$@" diff --git a/pkgs/development/compilers/llvm/common/clang/default.nix b/pkgs/development/compilers/llvm/common/clang/default.nix index 2373795b49fd8..dc175e085f0b6 100644 --- a/pkgs/development/compilers/llvm/common/clang/default.nix +++ b/pkgs/development/compilers/llvm/common/clang/default.nix @@ -71,7 +71,11 @@ let "-DCLANG_PSEUDO_GEN=${buildLlvmTools.libclang.dev}/bin/clang-pseudo-gen" ]); - postPatch = (if lib.versionOlder release_version "13" then '' + postPatch = '' + # Make sure clang passes the correct location of libLTO to ld64 + substituteInPlace lib/Driver/ToolChains/Darwin.cpp \ + --replace-fail 'StringRef P = llvm::sys::path::parent_path(D.Dir);' 'StringRef P = "${lib.getLib libllvm}";' + '' + (if lib.versionOlder release_version "13" then '' sed -i -e 's/DriverArgs.hasArg(options::OPT_nostdlibinc)/true/' \ -e 's/Args.hasArg(options::OPT_nostdlibinc)/true/' \ lib/Driver/ToolChains/*.cpp @@ -89,6 +93,8 @@ let mkdir -p $lib/lib/clang mv $lib/lib/17 $lib/lib/clang/17 + '') + (lib.optionalString (lib.versionAtLeast release_version "19") '' + mv $out/lib/clang $lib/lib/clang '') + '' # Move libclang to 'lib' output @@ -143,7 +149,7 @@ let meta = llvm_meta // { homepage = "https://clang.llvm.org/"; - description = "A C language family frontend for LLVM"; + description = "C language family frontend for LLVM"; longDescription = '' The Clang project provides a language front-end and tooling infrastructure for languages in the C language family (C, C++, Objective @@ -192,7 +198,7 @@ let ''; }) // (lib.optionalAttrs (lib.versionAtLeast release_version "15") { - env = lib.optionalAttrs (stdenv.buildPlatform != stdenv.hostPlatform) { + env = lib.optionalAttrs (stdenv.buildPlatform != stdenv.hostPlatform && !stdenv.hostPlatform.useLLVM) { # The following warning is triggered with (at least) gcc >= # 12, but appears to occur only for cross compiles. NIX_CFLAGS_COMPILE = "-Wno-maybe-uninitialized"; diff --git a/pkgs/development/compilers/llvm/common/compiler-rt/default.nix b/pkgs/development/compilers/llvm/common/compiler-rt/default.nix index 4f44d6396d301..23a966ce238f6 100644 --- a/pkgs/development/compilers/llvm/common/compiler-rt/default.nix +++ b/pkgs/development/compilers/llvm/common/compiler-rt/default.nix @@ -14,7 +14,18 @@ , libllvm , linuxHeaders , libxcrypt + +# Some platforms have switched to using compiler-rt, but still want a +# libgcc.a for ABI compat purposes. The use case would be old code that +# expects to link `-lgcc` but doesn't care exactly what its contents +# are, so long as it provides some builtins. , doFakeLibgcc ? stdenv.hostPlatform.isFreeBSD + +# In recent releases, the compiler-rt build seems to produce +# many `libclang_rt*` libraries, but not a single unified +# `libcompiler_rt` library, at least under certain configurations. Some +# platforms stil expect this, however, so we symlink one into place. +, forceLinkCompilerRt ? stdenv.hostPlatform.isOpenBSD }: let @@ -128,11 +139,17 @@ stdenv.mkDerivation ({ '') + '' substituteInPlace lib/builtins/int_util.c \ --replace "#include <stdlib.h>" "" + '' + (if stdenv.hostPlatform.isFreeBSD then + # As per above, but in FreeBSD assert is a macro and simply allowing it to be implicitly declared causes Issues!!!!! + '' + substituteInPlace lib/builtins/clear_cache.c lib/builtins/cpu_model.c \ + --replace "#include <assert.h>" "#define assert(e) ((e)?(void)0:__assert(__FUNCTION__,__FILE__,__LINE__,#e))" + '' else '' substituteInPlace lib/builtins/clear_cache.c \ --replace "#include <assert.h>" "" substituteInPlace lib/builtins/cpu_model${lib.optionalString (lib.versionAtLeast version "18") "/x86"}.c \ --replace "#include <assert.h>" "" - ''); + '')); # Hack around weird upsream RPATH bug postInstall = lib.optionalString (stdenv.hostPlatform.isDarwin) '' @@ -149,7 +166,9 @@ stdenv.mkDerivation ({ ln -s $out/lib/*/clang_rt.crtbegin_shared-*.o $out/lib/crtbeginS.o ln -s $out/lib/*/clang_rt.crtend_shared-*.o $out/lib/crtendS.o '' + lib.optionalString doFakeLibgcc '' - ln -s $out/lib/freebsd/libclang_rt.builtins-*.a $out/lib/libgcc.a + ln -s $out/lib/*/libclang_rt.builtins-*.a $out/lib/libgcc.a + '' + lib.optionalString forceLinkCompilerRt '' + ln -s $out/lib/*/libclang_rt.builtins-*.a $out/lib/libcompiler_rt.a ''; meta = llvm_meta // { diff --git a/pkgs/development/compilers/llvm/common/libcxx/default.nix b/pkgs/development/compilers/llvm/common/libcxx/default.nix index 0e91f50551c55..b2c23f35f0a18 100644 --- a/pkgs/development/compilers/llvm/common/libcxx/default.nix +++ b/pkgs/development/compilers/llvm/common/libcxx/default.nix @@ -13,12 +13,16 @@ , python3 , fixDarwinDylibNames , version -, cxxabi ? if stdenv.hostPlatform.isFreeBSD then libcxxrt else null +, cxxabi ? null , libcxxrt , libunwind , enableShared ? !stdenv.hostPlatform.isStatic }: +# note: our setup using libcxxabi instead of libcxxrt on FreeBSD diverges from +# normal FreeBSD. This may cause issues with binary patching down the line. +# If this becomes an issue, try adding as symlink libcxxrt.so -> libc++abi.so + # external cxxabi is not supported on Darwin as the build will not link libcxx # properly and not re-export the cxxabi symbols into libcxx # https://github.com/NixOS/nixpkgs/issues/166205 @@ -67,6 +71,12 @@ let cxxCMakeFlags = [ "-DLIBCXX_CXX_ABI=${cxxabiName}" + ] ++ lib.optionals (cxxabi == null && lib.versionAtLeast release_version "16") [ + # Note: llvm < 16 doesn't support this flag (or it's broken); handled in postInstall instead. + # Include libc++abi symbols within libc++.a for static linking libc++; + # dynamic linking includes them through libc++.so being a linker script + # which includes both shared objects. + "-DLIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY=ON" ] ++ lib.optionals (cxxabi != null) [ "-DLIBCXX_CXX_ABI_INCLUDE_PATHS=${lib.getDev cxxabi}/include" ] ++ lib.optionals (stdenv.hostPlatform.isMusl || stdenv.hostPlatform.isWasi) [ @@ -87,12 +97,6 @@ let cmakeFlags = [ "-DLLVM_ENABLE_RUNTIMES=${lib.concatStringsSep ";" runtimes}" - ] ++ lib.optionals (useLLVM && !stdenv.hostPlatform.isWasm) [ - # libcxxabi's CMake looks as though it treats -nostdlib++ as implying -nostdlib, - # but that does not appear to be the case for example when building - # pkgsLLVM.libcxxabi (which uses clangNoCompilerRtWithLibc). - "-DCMAKE_EXE_LINKER_FLAGS=-nostdlib" - "-DCMAKE_SHARED_LINKER_FLAGS=-nostdlib" ] ++ lib.optionals stdenv.hostPlatform.isWasm [ "-DCMAKE_C_COMPILER_WORKS=ON" "-DCMAKE_CXX_COMPILER_WORKS=ON" @@ -126,6 +130,31 @@ stdenv.mkDerivation (rec { postInstall = lib.optionalString (cxxabi != null) '' lndir ${lib.getDev cxxabi}/include $dev/include/c++/v1 lndir ${lib.getLib cxxabi}/lib $out/lib + libcxxabi=$out/lib/lib${cxxabi.libName}.a + '' + # LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY=ON doesn't work for LLVM < 16 or + # external cxxabi libraries so merge libc++abi.a into libc++.a ourselves. + + # GNU binutils emits objects in LIFO order in MRI scripts so after the merge + # the objects are in reversed order so a second MRI script is required so the + # objects in the archive are listed in proper order (libc++.a, libc++abi.a) + + lib.optionalString (cxxabi != null || lib.versionOlder release_version "16") '' + libcxxabi=''${libcxxabi-$out/lib/libc++abi.a} + if [[ -f $out/lib/libc++.a && -e $libcxxabi ]]; then + $AR -M <<MRI + create $out/lib/libc++.a + addlib $out/lib/libc++.a + addlib $libcxxabi + save + end + MRI + $AR -M <<MRI + create $out/lib/libc++.a + addlib $out/lib/libc++.a + save + end + MRI + fi ''; passthru = { diff --git a/pkgs/development/compilers/llvm/common/lld/default.nix b/pkgs/development/compilers/llvm/common/lld/default.nix index be296be91e770..99bb150a817dc 100644 --- a/pkgs/development/compilers/llvm/common/lld/default.nix +++ b/pkgs/development/compilers/llvm/common/lld/default.nix @@ -64,7 +64,7 @@ stdenv.mkDerivation (rec { meta = llvm_meta // { homepage = "https://lld.llvm.org/"; - description = "The LLVM linker (unwrapped)"; + description = "LLVM linker (unwrapped)"; longDescription = '' LLD is a linker from the LLVM project that is a drop-in replacement for system linkers and runs much faster than them. It also provides features diff --git a/pkgs/development/compilers/llvm/common/lldb.nix b/pkgs/development/compilers/llvm/common/lldb.nix index 59e427e846c46..71afcb159a440 100644 --- a/pkgs/development/compilers/llvm/common/lldb.nix +++ b/pkgs/development/compilers/llvm/common/lldb.nix @@ -174,7 +174,7 @@ stdenv.mkDerivation (rec { meta = llvm_meta // { homepage = "https://lldb.llvm.org/"; - description = "A next-generation high-performance debugger"; + description = "Next-generation high-performance debugger"; longDescription = '' LLDB is a next generation, high-performance debugger. It is built as a set of reusable components which highly leverage existing libraries in the diff --git a/pkgs/development/compilers/llvm/common/lldb/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/common/lldb/gnu-install-dirs.patch index 093b9a8ba3ec3..ec550764be818 100644 --- a/pkgs/development/compilers/llvm/common/lldb/gnu-install-dirs.patch +++ b/pkgs/development/compilers/llvm/common/lldb/gnu-install-dirs.patch @@ -47,3 +47,22 @@ index 7d48491ec89a..c04543585588 100644 install(TARGETS lldbIntelFeatures - LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}) + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}) +diff --git a/source/API/CMakeLists.txt b/source/API/CMakeLists.txt +index 7d48491ec89a..c04543585588 100644 +--- a/source/API/CMakeLists.txt 2024-05-30 18:59:13.449269853 -0700 ++++ b/source/API/CMakeLists.txt 2024-05-30 19:00:33.721858164 -0700 +@@ -115,14 +115,6 @@ + ${option_install_prefix} + ) + +-# lib/pythonX.Y/dist-packages/lldb/_lldb.so is a symlink to lib/liblldb.so, +-# which depends on lib/libLLVM*.so (BUILD_SHARED_LIBS) or lib/libLLVM-10git.so +-# (LLVM_LINK_LLVM_DYLIB). Add an additional rpath $ORIGIN/../../../../lib so +-# that _lldb.so can be loaded from Python. +-if(LLDB_ENABLE_PYTHON AND (BUILD_SHARED_LIBS OR LLVM_LINK_LLVM_DYLIB) AND UNIX AND NOT APPLE) +- set_property(TARGET liblldb APPEND PROPERTY INSTALL_RPATH "\$ORIGIN/../../../../lib${LLVM_LIBDIR_SUFFIX}") +-endif() +- + if(Python3_RPATH) + set_property(TARGET liblldb APPEND PROPERTY INSTALL_RPATH "${Python3_RPATH}") + set_property(TARGET liblldb APPEND PROPERTY BUILD_RPATH "${Python3_RPATH}") diff --git a/pkgs/development/compilers/llvm/18/llvm/default.nix b/pkgs/development/compilers/llvm/common/llvm/default.nix index a9732763e9d7b..89ea8f6e7a564 100644 --- a/pkgs/development/compilers/llvm/18/llvm/default.nix +++ b/pkgs/development/compilers/llvm/common/llvm/default.nix @@ -1,6 +1,12 @@ -{ lib, stdenv, llvm_meta +{ lib +, stdenv +, llvm_meta , pkgsBuildBuild -, monorepoSrc +, pollyPatches ? [] +, patches ? [] +, polly_src ? null +, src ? null +, monorepoSrc ? null , runCommand , cmake , darwin @@ -8,6 +14,8 @@ , python3 , python3Packages , libffi + # TODO: Can this memory corruption bug still occur? + # <https://github.com/llvm/llvm-project/issues/61350> , enableGoldPlugin ? libbfd.hasPluginAPI , libbfd , libpfm @@ -20,7 +28,9 @@ , sysctl , buildLlvmTools , debugVersion ? false -, doCheck ? (!stdenv.isx86_32 /* TODO: why */) && (!stdenv.hostPlatform.isMusl) +, doCheck ? !stdenv.isAarch32 && (if lib.versionOlder release_version "15" then stdenv.isLinux else true) + && (!stdenv.isx86_32 /* TODO: why */) && (!stdenv.hostPlatform.isMusl) + && !(stdenv.hostPlatform.isPower64 && stdenv.hostPlatform.isBigEndian) && (stdenv.hostPlatform == stdenv.buildPlatform) , enableManpages ? false , enableSharedLibraries ? !stdenv.hostPlatform.isStatic @@ -28,7 +38,8 @@ # broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245 # broken for the armv7l builder && !stdenv.hostPlatform.isAarch -, enablePolly ? true +, enablePolly ? lib.versionAtLeast release_version "14" +, enableTerminfo ? true }: let @@ -64,27 +75,36 @@ let in pkgsBuildBuild.targetPackages.python3.withPackages checkDeps else python3; + pname = "llvm"; + + src' = if monorepoSrc != null then + runCommand "${pname}-src-${version}" {} ('' + mkdir -p "$out" + cp -r ${monorepoSrc}/cmake "$out" + cp -r ${monorepoSrc}/${pname} "$out" + cp -r ${monorepoSrc}/third-party "$out" + '' + lib.optionalString enablePolly '' + chmod u+w "$out/${pname}/tools" + cp -r ${monorepoSrc}/polly "$out/${pname}/tools" + '') else src; + + patches' = patches ++ lib.optionals enablePolly pollyPatches; in stdenv.mkDerivation (rec { - pname = "llvm"; - inherit version; + inherit pname version; - src = runCommand "${pname}-src-${version}" {} ('' - mkdir -p "$out" - cp -r ${monorepoSrc}/cmake "$out" - cp -r ${monorepoSrc}/${pname} "$out" - cp -r ${monorepoSrc}/third-party "$out" - '' + lib.optionalString enablePolly '' - chmod u+w "$out/${pname}/tools" - cp -r ${monorepoSrc}/polly "$out/${pname}/tools" - ''); + src = src'; + patches = patches'; - sourceRoot = "${src.name}/${pname}"; + sourceRoot = if lib.versionOlder release_version "13" then null + else "${src.name}/${pname}"; outputs = [ "out" "lib" "dev" "python" ]; - nativeBuildInputs = [ cmake ninja python ] + nativeBuildInputs = [ cmake ] + ++ (lib.optional (lib.versionAtLeast release_version "15") ninja) + ++ [ python ] ++ optionals enableManpages [ # Note: we intentionally use `python3Packages` instead of `python3.pkgs`; # splicing does *not* work with the latter. (TODO: fix) @@ -98,92 +118,61 @@ stdenv.mkDerivation (rec { buildInputs = [ libxml2 libffi ] ++ optional enablePFM libpfm; # exegesis - propagatedBuildInputs = [ ncurses zlib ]; - - nativeCheckInputs = [ - which - ] ++ lib.optional stdenv.isDarwin sysctl; + propagatedBuildInputs = (lib.optional (lib.versionAtLeast release_version "14" || stdenv.buildPlatform == stdenv.hostPlatform) ncurses) + ++ [ zlib ]; - patches = [ - ./gnu-install-dirs.patch - - # Running the tests involves invoking binaries (like `opt`) that depend on - # the LLVM dylibs and reference them by absolute install path (i.e. their - # nix store path). - # - # Because we have not yet run the install phase (we're running these tests - # as part of `checkPhase` instead of `installCheckPhase`) these absolute - # paths do not exist yet; to work around this we point the loader (`ld` on - # unix, `dyld` on macOS) at the `lib` directory which will later become this - # package's `lib` output. - # - # Previously we would just set `LD_LIBRARY_PATH` to include the build `lib` - # dir but: - # - this doesn't generalize well to other platforms; `lit` doesn't forward - # `DYLD_LIBRARY_PATH` (macOS): - # + https://github.com/llvm/llvm-project/blob/0d89963df354ee309c15f67dc47c8ab3cb5d0fb2/llvm/utils/lit/lit/TestingConfig.py#L26 - # - even if `lit` forwarded this env var, we actually cannot set - # `DYLD_LIBRARY_PATH` in the child processes `lit` launches because - # `DYLD_LIBRARY_PATH` (and `DYLD_FALLBACK_LIBRARY_PATH`) is cleared for - # "protected processes" (i.e. the python interpreter that runs `lit`): - # https://stackoverflow.com/a/35570229 - # - other LLVM subprojects deal with this issue by having their `lit` - # configuration set these env vars for us; it makes sense to do the same - # for LLVM: - # + https://github.com/llvm/llvm-project/blob/4c106cfdf7cf7eec861ad3983a3dd9a9e8f3a8ae/clang-tools-extra/test/Unit/lit.cfg.py#L22-L31 - # - # !!! TODO: look into upstreaming this patch - ./llvm-lit-cfg-add-libs-to-dylib-path.patch - - # `lit` has a mode where it executes run lines as a shell script which is - # constructs; this is problematic for macOS because it means that there's - # another process in between `lit` and the binaries being tested. As noted - # above, this means that `DYLD_LIBRARY_PATH` is cleared which means that our - # tests fail with dyld errors. - # - # To get around this we patch `lit` to reintroduce `DYLD_LIBRARY_PATH`, when - # present in the test configuration. - # - # It's not clear to me why this isn't an issue for LLVM developers running - # on macOS (nothing about this _seems_ nix specific).. - ./lit-shell-script-runner-set-dyld-library-path.patch - ] ++ lib.optionals enablePolly [ - ./gnu-install-dirs-polly.patch - - # Just like the `llvm-lit-cfg` patch, but for `polly`. - ./polly-lit-cfg-add-libs-to-dylib-path.patch - ]; - - postPatch = optionalString stdenv.isDarwin '' + postPatch = optionalString stdenv.isDarwin ('' substituteInPlace cmake/modules/AddLLVM.cmake \ --replace 'set(_install_name_dir INSTALL_NAME_DIR "@rpath")' "set(_install_name_dir)" \ --replace 'set(_install_rpath "@loader_path/../''${CMAKE_INSTALL_LIBDIR}''${LLVM_LIBDIR_SUFFIX}" ''${extra_libdir})' "" - + '' + # As of LLVM 15, marked as XFAIL on arm64 macOS but lit doesn't seem to pick # this up: https://github.com/llvm/llvm-project/blob/c344d97a125b18f8fed0a64aace73c49a870e079/llvm/test/MC/ELF/cfi-version.ll#L7 + (optionalString (lib.versionAtLeast release_version "15") ('' rm test/MC/ELF/cfi-version.ll + '' + # This test tries to call `sw_vers` by absolute path (`/usr/bin/sw_vers`) # and thus fails under the sandbox: + (if lib.versionAtLeast release_version "16" then '' substituteInPlace unittests/TargetParser/Host.cpp \ --replace '/usr/bin/sw_vers' "${(builtins.toString darwin.DarwinTools) + "/bin/sw_vers" }" - + '' else '' + substituteInPlace unittests/Support/Host.cpp \ + --replace '/usr/bin/sw_vers' "${(builtins.toString darwin.DarwinTools) + "/bin/sw_vers" }" + '') + # This test tries to call the intrinsics `@llvm.roundeven.f32` and # `@llvm.roundeven.f64` which seem to (incorrectly?) lower to `roundevenf` - # and `roundeven` on macOS. + # and `roundeven` on macOS and FreeBSD. # # However these functions are glibc specific so the test fails: # - https://www.gnu.org/software/gnulib/manual/html_node/roundevenf.html # - https://www.gnu.org/software/gnulib/manual/html_node/roundeven.html # + # TODO(@rrbutani): this seems to run fine on `aarch64-darwin`, why does it + # pass there? + optionalString (lib.versionAtLeast release_version "16") '' + substituteInPlace test/ExecutionEngine/Interpreter/intrinsics.ll \ + --replace "%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)" "" \ + --replace "%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)" "" + '' + + # fails when run in sandbox + optionalString (!stdenv.hostPlatform.isx86 && lib.versionAtLeast release_version "18") '' + substituteInPlace unittests/Support/VirtualFileSystemTest.cpp \ + --replace "PhysicalFileSystemWorkingDirFailure" "DISABLED_PhysicalFileSystemWorkingDirFailure" + ''))) + + # dup of above patch with different conditions + optionalString (stdenv.isDarwin && stdenv.hostPlatform.isx86 && lib.versionAtLeast release_version "15") (optionalString (lib.versionOlder release_version "16") '' substituteInPlace test/ExecutionEngine/Interpreter/intrinsics.ll \ --replace "%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)" "" \ --replace "%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)" "" + '' + # fails when run in sandbox + ((optionalString (lib.versionAtLeast release_version "18") '' substituteInPlace unittests/Support/VirtualFileSystemTest.cpp \ --replace "PhysicalFileSystemWorkingDirFailure" "DISABLED_PhysicalFileSystemWorkingDirFailure" - '' + optionalString (stdenv.isDarwin && stdenv.hostPlatform.isx86) '' + '') + # This test fails on darwin x86_64 because `sw_vers` reports a different # macOS version than what LLVM finds by reading # `/System/Library/CoreServices/SystemVersion.plist` (which is passed into @@ -212,31 +201,49 @@ stdenv.mkDerivation (rec { # not clear to me when/where/for what this even gets used in LLVM. # # TODO(@rrbutani): fix/follow-up + (if lib.versionAtLeast release_version "16" then '' substituteInPlace unittests/TargetParser/Host.cpp \ --replace "getMacOSHostVersion" "DISABLED_getMacOSHostVersion" - + '' else '' + substituteInPlace unittests/Support/Host.cpp \ + --replace "getMacOSHostVersion" "DISABLED_getMacOSHostVersion" + '') + # This test fails with a `dysmutil` crash; have not yet dug into what's # going on here (TODO(@rrbutani)). + lib.optionalString (lib.versionOlder release_version "19") '' rm test/tools/dsymutil/ARM/obfuscated.test - '' + '' + '')) + # FileSystem permissions tests fail with various special bits + '' substituteInPlace unittests/Support/CMakeLists.txt \ --replace "Path.cpp" "" rm unittests/Support/Path.cpp substituteInPlace unittests/IR/CMakeLists.txt \ --replace "PassBuilderCallbacksTest.cpp" "" rm unittests/IR/PassBuilderCallbacksTest.cpp + '' + lib.optionalString (lib.versionAtLeast release_version "13") '' rm test/tools/llvm-objcopy/ELF/mirror-permissions-unix.test - + '' + lib.optionalString (lib.versionOlder release_version "13") '' + # TODO: Fix failing tests: + rm test/DebugInfo/X86/vla-multi.ll + '' + # Fails in the presence of anti-virus software or other intrusion-detection software that # modifies the atime when run. See #284056. + lib.optionalString (lib.versionAtLeast release_version "16") ('' rm test/tools/llvm-objcopy/ELF/strip-preserve-atime.test - '' + optionalString stdenv.hostPlatform.isMusl '' - patch -p1 -i ${../../common/llvm/TLI-musl.patch} + '' + lib.optionalString (lib.versionOlder release_version "17") '' + + '') + + # timing-based tests are trouble + lib.optionalString (lib.versionAtLeast release_version "15" && lib.versionOlder release_version "17") '' + rm utils/lit/tests/googletest-timeout.py + '' + + # valgrind unhappy with musl or glibc, but fails w/musl only + optionalString stdenv.hostPlatform.isMusl '' + patch -p1 -i ${./TLI-musl.patch} substituteInPlace unittests/Support/CMakeLists.txt \ --replace "add_subdirectory(DynamicLibrary)" "" rm unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp - # valgrind unhappy with musl or glibc, but fails w/musl only rm test/CodeGen/AArch64/wineh4.mir '' + optionalString stdenv.hostPlatform.isAarch32 '' # skip failing X86 test cases on 32-bit ARM @@ -245,61 +252,70 @@ stdenv.mkDerivation (rec { rm test/DebugInfo/X86/convert-linked.ll rm test/tools/dsymutil/X86/op-convert.test rm test/tools/gold/X86/split-dwarf.ll - rm test/tools/llvm-dwarfdump/X86/prettyprint_types.s - rm test/tools/llvm-dwarfdump/X86/simplified-template-names.s - rm test/CodeGen/RISCV/attributes.ll - rm test/CodeGen/RISCV/xtheadmempair.ll - '' + optionalString (stdenv.hostPlatform.system == "armv6l-linux") '' + rm test/tools/llvm-objcopy/MachO/universal-object.test + '' + # Seems to require certain floating point hardware (NEON?) + optionalString (stdenv.hostPlatform.system == "armv6l-linux") '' rm test/ExecutionEngine/frem.ll + '' + + # 1. TODO: Why does this test fail on FreeBSD? + # It seems to reference /usr/local/lib/libfile.a, which is clearly a problem. + # 2. This test fails for the same reason it fails on MacOS, but the fix is + # not trivial to apply. + optionalString stdenv.isFreeBSD '' + rm test/tools/llvm-libtool-darwin/L-and-l.test + rm test/ExecutionEngine/Interpreter/intrinsics.ll '' + '' patchShebangs test/BugPoint/compile-custom.ll.py - ''; + '' + + # Tweak tests to ignore namespace part of type to support + # gcc-12: https://gcc.gnu.org/PR103598. + # The change below mangles strings like: + # CHECK-NEXT: Starting llvm::Function pass manager run. + # to: + # CHECK-NEXT: Starting {{.*}}Function pass manager run. + (lib.optionalString (lib.versionOlder release_version "13") ('' + for f in \ + test/Other/new-pass-manager.ll \ + test/Other/new-pm-O0-defaults.ll \ + test/Other/new-pm-defaults.ll \ + test/Other/new-pm-lto-defaults.ll \ + test/Other/new-pm-thinlto-defaults.ll \ + test/Other/pass-pipeline-parsing.ll \ + test/Transforms/Inline/cgscc-incremental-invalidate.ll \ + test/Transforms/Inline/clear-analyses.ll \ + test/Transforms/LoopUnroll/unroll-loop-invalidation.ll \ + test/Transforms/SCCP/ipsccp-preserve-analysis.ll \ + test/Transforms/SCCP/preserve-analysis.ll \ + test/Transforms/SROA/dead-inst.ll \ + test/tools/gold/X86/new-pm.ll \ + ; do + echo "PATCH: $f" + substituteInPlace $f \ + --replace 'Starting llvm::' 'Starting {{.*}}' \ + --replace 'Finished llvm::' 'Finished {{.*}}' + done + '' + + # gcc-13 fix + '' + sed -i '/#include <string>/i#include <cstdint>' \ + include/llvm/DebugInfo/Symbolize/DIPrinter.h + '')); - preConfigure = '' - # Workaround for configure flags that need to have spaces + # Workaround for configure flags that need to have spaces + preConfigure = if lib.versionAtLeast release_version "15" then '' cmakeFlagsArray+=( -DLLVM_LIT_ARGS="-svj''${NIX_BUILD_CORES} --no-progress-bar" ) - ''; - - # Defensive check: some paths (that we make symlinks to) depend on the release - # version, for example: - # - https://github.com/llvm/llvm-project/blob/406bde9a15136254f2b10d9ef3a42033b3cb1b16/clang/lib/Headers/CMakeLists.txt#L185 - # - # So we want to sure that the version in the source matches the release - # version we were given. - # - # We do this check here, in the LLVM build, because it happens early. - postConfigure = let - v = lib.versions; - major = v.major release_version; - minor = v.minor release_version; - patch = v.patch release_version; - in '' - # $1: part, $2: expected - check_version() { - part="''${1^^}" - part="$(cat include/llvm/Config/llvm-config.h | grep "#define LLVM_VERSION_''${part} " | cut -d' ' -f3)" - - if [[ "$part" != "$2" ]]; then - echo >&2 \ - "mismatch in the $1 version! we have version ${release_version}" \ - "and expected the $1 version to be '$2'; the source has '$part' instead" - exit 3 - fi - } - - check_version major ${major} - check_version minor ${minor} - check_version patch ${patch} + '' else '' + cmakeFlagsArray+=( + -DLLVM_LIT_ARGS='-svj''${NIX_BUILD_CORES} --no-progress-bar' + ) ''; # E.g. mesa.drivers use the build-id as a cache key (see #93946): LDFLAGS = optionalString (enableSharedLibraries && !stdenv.isDarwin) "-Wl,--build-id=sha1"; - hardeningDisable = [ "trivialautovarinit" ]; - cmakeBuildType = if debugVersion then "Debug" else "Release"; cmakeFlags = with stdenv; let @@ -310,8 +326,11 @@ stdenv.mkDerivation (rec { # # Some flags don't need to be repassed because LLVM already does so (like # CMAKE_BUILD_TYPE), others are irrelevant to the result. - flagsForLlvmConfig = [ + flagsForLlvmConfig = (if lib.versionOlder release_version "15" then [ + "-DLLVM_INSTALL_CMAKE_DIR=${placeholder "dev"}/lib/cmake/llvm/" + ] else [ "-DLLVM_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/llvm" + ]) ++ [ "-DLLVM_ENABLE_RTTI=ON" ] ++ optionals enableSharedLibraries [ "-DLLVM_LINK_LLVM_DYLIB=ON" @@ -323,11 +342,14 @@ stdenv.mkDerivation (rec { "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}" "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}" "-DLLVM_ENABLE_DUMP=ON" + (lib.cmakeBool "LLVM_ENABLE_TERMINFO" enableTerminfo) + ] ++ optionals (!doCheck) [ + "-DLLVM_INCLUDE_TESTS=OFF" ] ++ optionals stdenv.hostPlatform.isStatic [ # Disables building of shared libs, -fPIC is still injected by cc-wrapper "-DLLVM_ENABLE_PIC=OFF" + "-DCMAKE_SKIP_INSTALL_RPATH=ON" "-DLLVM_BUILD_STATIC=ON" - "-DLLVM_LINK_LLVM_DYLIB=off" # libxml2 needs to be disabled because the LLVM build system ignores its .la # file and doesn't link zlib as well. # https://github.com/ClangBuiltLinux/tc-build/issues/150#issuecomment-845418812 @@ -338,7 +360,7 @@ stdenv.mkDerivation (rec { "-DSPHINX_OUTPUT_MAN=ON" "-DSPHINX_OUTPUT_HTML=OFF" "-DSPHINX_WARNINGS_AS_ERRORS=OFF" - ] ++ optionals enableGoldPlugin [ + ] ++ optionals (enableGoldPlugin) [ "-DLLVM_BINUTILS_INCDIR=${libbfd.dev}/include" ] ++ optionals isDarwin [ "-DLLVM_ENABLE_LIBCXX=ON" @@ -382,8 +404,15 @@ stdenv.mkDerivation (rec { substituteInPlace "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" \ --replace "\''${_IMPORT_PREFIX}/lib/lib" "$lib/lib/lib" \ --replace "$out/bin/llvm-config" "$dev/bin/llvm-config" + '' + (if lib.versionOlder release_version "15" then '' + substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \ + --replace 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}'"$lib"'")' + '' else '' substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \ --replace 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "'"$lib"'")' + '') + + optionalString (stdenv.isDarwin && enableSharedLibraries && lib.versionOlder release_version "18") '' + ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib '' + optionalString (stdenv.isDarwin && enableSharedLibraries) '' ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib @@ -402,7 +431,7 @@ stdenv.mkDerivation (rec { requiredSystemFeatures = [ "big-parallel" ]; meta = llvm_meta // { homepage = "https://llvm.org/"; - description = "A collection of modular and reusable compiler and toolchain technologies"; + description = "Collection of modular and reusable compiler and toolchain technologies"; longDescription = '' The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Despite its name, LLVM has little to do with @@ -418,14 +447,11 @@ stdenv.mkDerivation (rec { under the "Apache 2.0 License with LLVM exceptions". ''; }; -} // lib.optionalAttrs enableManpages { +} // lib.optionalAttrs enableManpages ({ pname = "llvm-manpages"; propagatedBuildInputs = []; - ninjaFlags = [ "docs-llvm-man" ]; - installTargets = [ "install-docs-llvm-man" ]; - postPatch = null; postInstall = null; @@ -436,4 +462,79 @@ stdenv.mkDerivation (rec { meta = llvm_meta // { description = "man pages for LLVM ${version}"; }; +} // (if lib.versionOlder release_version "15" then { + buildPhase = '' + make docs-llvm-man + ''; + + installPhase = '' + make -C docs install + ''; +} else { + ninjaFlags = [ "docs-llvm-man" ]; + installTargets = [ "install-docs-llvm-man" ]; + + postPatch = null; + postInstall = null; +})) // lib.optionalAttrs (lib.versionOlder release_version "13") { + inherit polly_src; + + unpackPhase = '' + unpackFile $src + mv llvm-${release_version}* llvm + sourceRoot=$PWD/llvm + '' + optionalString enablePolly '' + unpackFile $polly_src + mv polly-* $sourceRoot/tools/polly + ''; +} // lib.optionalAttrs (lib.versionAtLeast release_version "13") { + nativeCheckInputs = [ which ] ++ lib.optional (stdenv.isDarwin && lib.versionAtLeast release_version "15") sysctl; +} // lib.optionalAttrs (lib.versionOlder release_version "15") { + # hacky fix: created binaries need to be run before installation + preBuild = '' + mkdir -p $out/ + ln -sv $PWD/lib $out + ''; + + postBuild = '' + rm -fR $out + ''; + + preCheck = '' + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD/lib + ''; +} // lib.optionalAttrs (lib.versionAtLeast release_version "15") { + # Defensive check: some paths (that we make symlinks to) depend on the release + # version, for example: + # - https://github.com/llvm/llvm-project/blob/406bde9a15136254f2b10d9ef3a42033b3cb1b16/clang/lib/Headers/CMakeLists.txt#L185 + # + # So we want to sure that the version in the source matches the release + # version we were given. + # + # We do this check here, in the LLVM build, because it happens early. + postConfigure = let + v = lib.versions; + major = v.major release_version; + minor = v.minor release_version; + patch = v.patch release_version; + in '' + # $1: part, $2: expected + check_version() { + part="''${1^^}" + part="$(cat include/llvm/Config/llvm-config.h | grep "#define LLVM_VERSION_''${part} " | cut -d' ' -f3)" + + if [[ "$part" != "$2" ]]; then + echo >&2 \ + "mismatch in the $1 version! we have version ${release_version}" \ + "and expected the $1 version to be '$2'; the source has '$part' instead" + exit 3 + fi + } + + check_version major ${major} + check_version minor ${minor} + check_version patch ${patch} + ''; +} // lib.optionalAttrs (lib.versionOlder release_version "17" || lib.versionAtLeast release_version "18") { + hardeningDisable = [ "trivialautovarinit" ]; }) diff --git a/pkgs/development/compilers/llvm/common/mlir/default.nix b/pkgs/development/compilers/llvm/common/mlir/default.nix index 044e5c673108b..891e66b1d57c5 100644 --- a/pkgs/development/compilers/llvm/common/mlir/default.nix +++ b/pkgs/development/compilers/llvm/common/mlir/default.nix @@ -48,7 +48,8 @@ stdenv.mkDerivation rec { "-DLLVM_INSTALL_TOOLCHAIN_ONLY=OFF" "-DMLIR_TOOLS_INSTALL_DIR=${placeholder "out"}/bin/" "-DLLVM_ENABLE_IDE=OFF" - "-DMLIR_INSTALL_PACKAGE_DIR=${placeholder "out"}/lib/cmake/mlir" + "-DMLIR_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/mlir" + "-DMLIR_INSTALL_CMAKE_DIR=${placeholder "dev"}/lib/cmake/mlir" "-DLLVM_BUILD_TESTS=${if doCheck then "ON" else "OFF"}" "-DLLVM_ENABLE_FFI=ON" "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}" diff --git a/pkgs/development/compilers/llvm/git/clang/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/git/clang/gnu-install-dirs.patch index 9517df973ad09..b8c1c110cf22d 100644 --- a/pkgs/development/compilers/llvm/git/clang/gnu-install-dirs.patch +++ b/pkgs/development/compilers/llvm/git/clang/gnu-install-dirs.patch @@ -1,5 +1,5 @@ diff --git a/cmake/modules/AddClang.cmake b/cmake/modules/AddClang.cmake -index 75b0080f6715..c895b884cd27 100644 +index 75b0080f6..c895b884c 100644 --- a/cmake/modules/AddClang.cmake +++ b/cmake/modules/AddClang.cmake @@ -119,8 +119,8 @@ macro(add_clang_library name) @@ -14,22 +14,22 @@ index 75b0080f6715..c895b884cd27 100644 if (NOT LLVM_ENABLE_IDE) diff --git a/lib/Headers/CMakeLists.txt b/lib/Headers/CMakeLists.txt -index f2b0c5cddcbb..52f37fc368ce 100644 +index e6ae4e19e..5ef01aea2 100644 --- a/lib/Headers/CMakeLists.txt +++ b/lib/Headers/CMakeLists.txt -@@ -473,6 +473,7 @@ add_header_target("windows-resource-headers" ${windows_only_files}) - add_header_target("utility-resource-headers" ${utility_files}) +@@ -337,6 +337,7 @@ set(llvm_libc_wrapper_files - get_clang_resource_dir(header_install_dir SUBDIR include) + include(GetClangResourceDir) + get_clang_resource_dir(output_dir PREFIX ${LLVM_LIBRARY_OUTPUT_INTDIR}/.. SUBDIR include) +set(header_install_dir ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION_MAJOR}/include) + set(out_files) + set(generated_files) - ############################################################# - # Install rules for the catch-all clang-resource-headers target diff --git a/tools/libclang/CMakeLists.txt b/tools/libclang/CMakeLists.txt -index 4f23065a2472..6a0f55991e24 100644 +index b5b6d2807..6b592d255 100644 --- a/tools/libclang/CMakeLists.txt +++ b/tools/libclang/CMakeLists.txt -@@ -234,7 +234,7 @@ foreach(PythonVersion ${CLANG_PYTHON_BINDINGS_VERSIONS}) +@@ -246,7 +246,7 @@ foreach(PythonVersion ${CLANG_PYTHON_BINDINGS_VERSIONS}) COMPONENT libclang-python-bindings DESTINATION @@ -39,7 +39,7 @@ index 4f23065a2472..6a0f55991e24 100644 if(NOT LLVM_ENABLE_IDE) add_custom_target(libclang-python-bindings) diff --git a/tools/scan-build-py/CMakeLists.txt b/tools/scan-build-py/CMakeLists.txt -index 3aca22c0b0a8..3115353e3fe3 100644 +index 3aca22c0b..3115353e3 100644 --- a/tools/scan-build-py/CMakeLists.txt +++ b/tools/scan-build-py/CMakeLists.txt @@ -88,7 +88,7 @@ foreach(lib ${LibScanbuild}) diff --git a/pkgs/development/compilers/llvm/git/default.nix b/pkgs/development/compilers/llvm/git/default.nix index 1a34130679db2..786bd82fa648c 100644 --- a/pkgs/development/compilers/llvm/git/default.nix +++ b/pkgs/development/compilers/llvm/git/default.nix @@ -1,6 +1,7 @@ -{ lowPrio, newScope, pkgs, lib, stdenv, cmake, ninja +{ lowPrio, newScope, pkgs, lib, stdenv , preLibcCrossHeaders -, libxml2, python3, fetchFromGitHub, substituteAll, overrideCC, wrapCCWith, wrapBintoolsWith +, substitute, substituteAll, fetchFromGitHub, fetchpatch +, overrideCC, wrapCCWith, wrapBintoolsWith , buildLlvmTools # tools, but from the previous stage, for cross , targetLlvmLibraries # libraries, but from the next stage, for cross , targetLlvm @@ -19,9 +20,9 @@ # LLVM release information; specify one of these but not both: , gitRelease ? { version = "19.0.0-git"; - rev = "cebf77fb936a7270c7e3fa5c4a7e76216321d385"; - rev-version = "19.0.0-unstable-2024-04-07"; - sha256 = "sha256-616tscgsiFgHQcXW4KzK5srrudYizQFnJVM6K0qRf+I="; + rev = "78ee473784e5ef6f0b19ce4cb111fb6e4d23c6b2"; + rev-version = "19.0.0-unstable-2024-06-12"; + sha256 = "sha256-oLVMwWjo6Nt8ZsTnDTfoiM5U0+1lVIc1NO+4qBNYlzs="; } # i.e.: # { @@ -44,7 +45,11 @@ # to you to make sure that the LLVM repo given matches the release configuration # specified. , monorepoSrc ? null -}: +# Allows passthrough to packages via newScope. This makes it possible to +# do `(llvmPackages.override { <someLlvmDependency> = bar; }).clang` and get +# an llvmPackages whose packages are overridden in an internally consistent way. +, ... +}@args: assert lib.assertMsg @@ -56,15 +61,17 @@ assert let monorepoSrc' = monorepoSrc; in let - inherit (import ../common/common-let.nix { inherit lib gitRelease officialRelease; }) releaseInfo; - inherit (releaseInfo) release_version version; - - inherit (import ../common/common-let.nix { inherit lib fetchFromGitHub release_version gitRelease officialRelease monorepoSrc'; }) llvm_meta monorepoSrc; + metadata = rec { + # Import releaseInfo separately to avoid infinite recursion + inherit (import ../common/common-let.nix { inherit lib gitRelease officialRelease; }) releaseInfo; + inherit (releaseInfo) release_version version; + inherit (import ../common/common-let.nix { inherit lib fetchFromGitHub gitRelease release_version officialRelease monorepoSrc'; }) llvm_meta monorepoSrc; + }; tools = lib.makeExtensible (tools: let - callPackage = newScope (tools // { inherit stdenv cmake ninja libxml2 python3 release_version version monorepoSrc buildLlvmTools; }); - major = lib.versions.major release_version; + callPackage = newScope (tools // args // metadata); + major = lib.versions.major metadata.release_version; mkExtraBuildCommands0 = cc: '' rsrc="$out/resource-root" mkdir "$rsrc" @@ -87,8 +94,57 @@ in let in { - libllvm = callPackage ./llvm { - inherit llvm_meta; + libllvm = callPackage ../common/llvm { + patches = [ + ./llvm/gnu-install-dirs.patch + + # Running the tests involves invoking binaries (like `opt`) that depend on + # the LLVM dylibs and reference them by absolute install path (i.e. their + # nix store path). + # + # Because we have not yet run the install phase (we're running these tests + # as part of `checkPhase` instead of `installCheckPhase`) these absolute + # paths do not exist yet; to work around this we point the loader (`ld` on + # unix, `dyld` on macOS) at the `lib` directory which will later become this + # package's `lib` output. + # + # Previously we would just set `LD_LIBRARY_PATH` to include the build `lib` + # dir but: + # - this doesn't generalize well to other platforms; `lit` doesn't forward + # `DYLD_LIBRARY_PATH` (macOS): + # + https://github.com/llvm/llvm-project/blob/0d89963df354ee309c15f67dc47c8ab3cb5d0fb2/llvm/utils/lit/lit/TestingConfig.py#L26 + # - even if `lit` forwarded this env var, we actually cannot set + # `DYLD_LIBRARY_PATH` in the child processes `lit` launches because + # `DYLD_LIBRARY_PATH` (and `DYLD_FALLBACK_LIBRARY_PATH`) is cleared for + # "protected processes" (i.e. the python interpreter that runs `lit`): + # https://stackoverflow.com/a/35570229 + # - other LLVM subprojects deal with this issue by having their `lit` + # configuration set these env vars for us; it makes sense to do the same + # for LLVM: + # + https://github.com/llvm/llvm-project/blob/4c106cfdf7cf7eec861ad3983a3dd9a9e8f3a8ae/clang-tools-extra/test/Unit/lit.cfg.py#L22-L31 + # + # !!! TODO: look into upstreaming this patch + ./llvm/llvm-lit-cfg-add-libs-to-dylib-path.patch + + # `lit` has a mode where it executes run lines as a shell script which is + # constructs; this is problematic for macOS because it means that there's + # another process in between `lit` and the binaries being tested. As noted + # above, this means that `DYLD_LIBRARY_PATH` is cleared which means that our + # tests fail with dyld errors. + # + # To get around this we patch `lit` to reintroduce `DYLD_LIBRARY_PATH`, when + # present in the test configuration. + # + # It's not clear to me why this isn't an issue for LLVM developers running + # on macOS (nothing about this _seems_ nix specific).. + ./llvm/lit-shell-script-runner-set-dyld-library-path.patch + ]; + pollyPatches = [ + ./llvm/gnu-install-dirs-polly.patch + + # Just like the `llvm-lit-cfg` patch, but for `polly`. + ./llvm/polly-lit-cfg-add-libs-to-dylib-path.patch + ]; }; # `llvm` historically had the binaries. When choosing an output explicitly, @@ -106,7 +162,6 @@ in let libllvmLibdir = "${tools.libllvm.lib}/lib"; }) ]; - inherit llvm_meta; }; clang-unwrapped = tools.libclang; @@ -126,6 +181,9 @@ in let python3 = pkgs.python3; # don't use python-boot }); + # Wrapper for standalone command line utilities + clang-tools = callPackage ../common/clang-tools { }; + # pick clang appropriate for package set we are targeting clang = /**/ if stdenv.targetPlatform.useLLVM or false then tools.clangUseLLVM @@ -155,15 +213,12 @@ in let patches = [ ./lld/gnu-install-dirs.patch ]; - inherit llvm_meta; }; - mlir = callPackage ../common/mlir { - inherit llvm_meta; - }; + mlir = callPackage ../common/mlir {}; lldb = callPackage ../common/lldb.nix { - src = callPackage ({ runCommand }: runCommand "lldb-src-${version}" {} '' + src = callPackage ({ runCommand }: runCommand "lldb-src-${metadata.version}" {} '' mkdir -p "$out" cp -r ${monorepoSrc}/cmake "$out" cp -r ${monorepoSrc}/lldb "$out" @@ -187,7 +242,6 @@ in let && !stdenv.targetPlatform.isAarch64 && (lib.versionOlder darwin.apple_sdk.sdk.version "11.0") ) ./lldb/cpu_subtype_arm64e_replacement.patch; - inherit llvm_meta; }; # Below, is the LLVM bootstrapping logic. It handles building a @@ -290,13 +344,11 @@ in let # Has to be in tools despite mostly being a library, # because we use a native helper executable from a # non-cross build in cross builds. - libclc = callPackage ../common/libclc.nix { - inherit buildLlvmTools; - }; + libclc = callPackage ../common/libclc.nix {}; }); libraries = lib.makeExtensible (libraries: let - callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake ninja libxml2 python3 release_version version monorepoSrc; }); + callPackage = newScope (libraries // buildLlvmTools // args // metadata); in { compiler-rt-libc = callPackage ../common/compiler-rt { @@ -310,7 +362,6 @@ in let # See: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999829893 # ../common/compiler-rt/armv7l-15.patch ]; - inherit llvm_meta; stdenv = if stdenv.hostPlatform.useLLVM or false || (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isStatic) then overrideCC stdenv buildLlvmTools.clangNoCompilerRtWithLibc else stdenv; @@ -327,7 +378,6 @@ in let # See: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999829893 # ../common/compiler-rt/armv7l-15.patch ]; - inherit llvm_meta; stdenv = if stdenv.hostPlatform.useLLVM or false then overrideCC stdenv buildLlvmTools.clangNoCompilerRt else stdenv; @@ -350,12 +400,10 @@ in let # https://github.com/llvm/llvm-project/issues/64226 ./libcxx/0001-darwin-10.12-mbstate_t-fix.patch ]; - inherit llvm_meta; stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx; }; libunwind = callPackage ../common/libunwind { - inherit llvm_meta; stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx; }; @@ -364,9 +412,8 @@ in let ./openmp/fix-find-tool.patch ./openmp/run-lit-directly.patch ]; - inherit llvm_meta targetLlvm; }; }); noExtend = extensible: lib.attrsets.removeAttrs extensible [ "extend" ]; -in { inherit tools libraries release_version; } // (noExtend libraries) // (noExtend tools) +in { inherit tools libraries; inherit (metadata) release_version; } // (noExtend libraries) // (noExtend tools) diff --git a/pkgs/development/compilers/llvm/git/llvm/default.nix b/pkgs/development/compilers/llvm/git/llvm/default.nix deleted file mode 100644 index 8987103e22fe5..0000000000000 --- a/pkgs/development/compilers/llvm/git/llvm/default.nix +++ /dev/null @@ -1,435 +0,0 @@ -{ lib, stdenv, llvm_meta -, pkgsBuildBuild -, monorepoSrc -, runCommand -, cmake -, darwin -, ninja -, python3 -, python3Packages -, libffi -, enableGoldPlugin ? libbfd.hasPluginAPI -, libbfd -, libpfm -, libxml2 -, ncurses -, version -, release_version -, zlib -, which -, sysctl -, buildLlvmTools -, debugVersion ? false -, doCheck ? (!stdenv.isx86_32 /* TODO: why */) && (!stdenv.hostPlatform.isMusl) - && (stdenv.hostPlatform == stdenv.buildPlatform) -, enableManpages ? false -, enableSharedLibraries ? !stdenv.hostPlatform.isStatic -, enablePFM ? stdenv.isLinux /* PFM only supports Linux */ - # broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245 - # broken for the armv7l builder - && !stdenv.hostPlatform.isAarch -, enablePolly ? true -}: - -let - inherit (lib) optional optionals optionalString; - - # Used when creating a version-suffixed symlink of libLLVM.dylib - shortVersion = with lib; - concatStringsSep "." (take 1 (splitString "." release_version)); - - # Ordinarily we would just the `doCheck` and `checkDeps` functionality - # `mkDerivation` gives us to manage our test dependencies (instead of breaking - # out `doCheck` as a package level attribute). - # - # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in - # particular the children it uses to do feature detection. - # - # This means that python deps we add to `checkDeps` (which the python - # interpreter is made aware of via `$PYTHONPATH` – populated by the python - # setup hook) are not picked up by `lit` which causes it to skip tests. - # - # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work - # because this package is shadowed in `$PATH` by the regular `python3` - # package. - # - # So, we "manually" assemble one python derivation for the package to depend - # on, taking into account whether checks are enabled or not: - python = if doCheck then - # Note that we _explicitly_ ask for a python interpreter for our host - # platform here; the splicing that would ordinarily take care of this for - # us does not seem to work once we use `withPackages`. - let - checkDeps = ps: with ps; [ psutil ]; - in pkgsBuildBuild.targetPackages.python3.withPackages checkDeps - else python3; - -in - -stdenv.mkDerivation (rec { - pname = "llvm"; - inherit version; - - src = runCommand "${pname}-src-${version}" {} ('' - mkdir -p "$out" - cp -r ${monorepoSrc}/cmake "$out" - cp -r ${monorepoSrc}/${pname} "$out" - cp -r ${monorepoSrc}/third-party "$out" - '' + lib.optionalString enablePolly '' - chmod u+w "$out/${pname}/tools" - cp -r ${monorepoSrc}/polly "$out/${pname}/tools" - ''); - - sourceRoot = "${src.name}/${pname}"; - - outputs = [ "out" "lib" "dev" "python" ]; - - nativeBuildInputs = [ cmake ninja python ] - ++ optionals enableManpages [ - # Note: we intentionally use `python3Packages` instead of `python3.pkgs`; - # splicing does *not* work with the latter. (TODO: fix) - python3Packages.sphinx - ] ++ optionals (lib.versionOlder version "18" && enableManpages) [ - python3Packages.recommonmark - ] ++ optionals (lib.versionAtLeast version "18" && enableManpages) [ - python3Packages.myst-parser - ]; - - buildInputs = [ libxml2 libffi ] - ++ optional enablePFM libpfm; # exegesis - - propagatedBuildInputs = [ ncurses zlib ]; - - nativeCheckInputs = [ - which - ] ++ lib.optional stdenv.isDarwin sysctl; - - patches = [ - ./gnu-install-dirs.patch - - # Running the tests involves invoking binaries (like `opt`) that depend on - # the LLVM dylibs and reference them by absolute install path (i.e. their - # nix store path). - # - # Because we have not yet run the install phase (we're running these tests - # as part of `checkPhase` instead of `installCheckPhase`) these absolute - # paths do not exist yet; to work around this we point the loader (`ld` on - # unix, `dyld` on macOS) at the `lib` directory which will later become this - # package's `lib` output. - # - # Previously we would just set `LD_LIBRARY_PATH` to include the build `lib` - # dir but: - # - this doesn't generalize well to other platforms; `lit` doesn't forward - # `DYLD_LIBRARY_PATH` (macOS): - # + https://github.com/llvm/llvm-project/blob/0d89963df354ee309c15f67dc47c8ab3cb5d0fb2/llvm/utils/lit/lit/TestingConfig.py#L26 - # - even if `lit` forwarded this env var, we actually cannot set - # `DYLD_LIBRARY_PATH` in the child processes `lit` launches because - # `DYLD_LIBRARY_PATH` (and `DYLD_FALLBACK_LIBRARY_PATH`) is cleared for - # "protected processes" (i.e. the python interpreter that runs `lit`): - # https://stackoverflow.com/a/35570229 - # - other LLVM subprojects deal with this issue by having their `lit` - # configuration set these env vars for us; it makes sense to do the same - # for LLVM: - # + https://github.com/llvm/llvm-project/blob/4c106cfdf7cf7eec861ad3983a3dd9a9e8f3a8ae/clang-tools-extra/test/Unit/lit.cfg.py#L22-L31 - # - # !!! TODO: look into upstreaming this patch - ./llvm-lit-cfg-add-libs-to-dylib-path.patch - - # `lit` has a mode where it executes run lines as a shell script which is - # constructs; this is problematic for macOS because it means that there's - # another process in between `lit` and the binaries being tested. As noted - # above, this means that `DYLD_LIBRARY_PATH` is cleared which means that our - # tests fail with dyld errors. - # - # To get around this we patch `lit` to reintroduce `DYLD_LIBRARY_PATH`, when - # present in the test configuration. - # - # It's not clear to me why this isn't an issue for LLVM developers running - # on macOS (nothing about this _seems_ nix specific).. - ./lit-shell-script-runner-set-dyld-library-path.patch - ] ++ lib.optionals enablePolly [ - ./gnu-install-dirs-polly.patch - - # Just like the `llvm-lit-cfg` patch, but for `polly`. - ./polly-lit-cfg-add-libs-to-dylib-path.patch - ]; - - postPatch = optionalString stdenv.isDarwin '' - substituteInPlace cmake/modules/AddLLVM.cmake \ - --replace 'set(_install_name_dir INSTALL_NAME_DIR "@rpath")' "set(_install_name_dir)" \ - --replace 'set(_install_rpath "@loader_path/../''${CMAKE_INSTALL_LIBDIR}''${LLVM_LIBDIR_SUFFIX}" ''${extra_libdir})' "" - - # As of LLVM 15, marked as XFAIL on arm64 macOS but lit doesn't seem to pick - # this up: https://github.com/llvm/llvm-project/blob/c344d97a125b18f8fed0a64aace73c49a870e079/llvm/test/MC/ELF/cfi-version.ll#L7 - rm test/MC/ELF/cfi-version.ll - - # This test tries to call `sw_vers` by absolute path (`/usr/bin/sw_vers`) - # and thus fails under the sandbox: - substituteInPlace unittests/TargetParser/Host.cpp \ - --replace '/usr/bin/sw_vers' "${(builtins.toString darwin.DarwinTools) + "/bin/sw_vers" }" - - # This test tries to call the intrinsics `@llvm.roundeven.f32` and - # `@llvm.roundeven.f64` which seem to (incorrectly?) lower to `roundevenf` - # and `roundeven` on macOS. - # - # However these functions are glibc specific so the test fails: - # - https://www.gnu.org/software/gnulib/manual/html_node/roundevenf.html - # - https://www.gnu.org/software/gnulib/manual/html_node/roundeven.html - # - substituteInPlace test/ExecutionEngine/Interpreter/intrinsics.ll \ - --replace "%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)" "" \ - --replace "%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)" "" - - # fails when run in sandbox - substituteInPlace unittests/Support/VirtualFileSystemTest.cpp \ - --replace "PhysicalFileSystemWorkingDirFailure" "DISABLED_PhysicalFileSystemWorkingDirFailure" - '' + optionalString (stdenv.isDarwin && stdenv.hostPlatform.isx86) '' - # This test fails on darwin x86_64 because `sw_vers` reports a different - # macOS version than what LLVM finds by reading - # `/System/Library/CoreServices/SystemVersion.plist` (which is passed into - # the sandbox on macOS). - # - # The `sw_vers` provided by nixpkgs reports the macOS version associated - # with the `CoreFoundation` framework with which it was built. Because - # nixpkgs pins the SDK for `aarch64-darwin` and `x86_64-darwin` what - # `sw_vers` reports is not guaranteed to match the macOS version of the host - # that's building this derivation. - # - # Astute readers will note that we only _patch_ this test on aarch64-darwin - # (to use the nixpkgs provided `sw_vers`) instead of disabling it outright. - # So why does this test pass on aarch64? - # - # Well, it seems that `sw_vers` on aarch64 actually links against the _host_ - # CoreFoundation framework instead of the nixpkgs provided one. - # - # Not entirely sure what the right fix is here. I'm assuming aarch64 - # `sw_vers` doesn't intentionally link against the host `CoreFoundation` - # (still digging into how this ends up happening, will follow up) but that - # aside I think the more pertinent question is: should we be patching LLVM's - # macOS version detection logic to use `sw_vers` instead of reading host - # paths? This *is* a way in which details about builder machines can creep - # into the artifacts that are produced, affecting reproducibility, but it's - # not clear to me when/where/for what this even gets used in LLVM. - # - # TODO(@rrbutani): fix/follow-up - substituteInPlace unittests/TargetParser/Host.cpp \ - --replace "getMacOSHostVersion" "DISABLED_getMacOSHostVersion" - '' + '' - # FileSystem permissions tests fail with various special bits - substituteInPlace unittests/Support/CMakeLists.txt \ - --replace "Path.cpp" "" - rm unittests/Support/Path.cpp - substituteInPlace unittests/IR/CMakeLists.txt \ - --replace "PassBuilderCallbacksTest.cpp" "" - rm unittests/IR/PassBuilderCallbacksTest.cpp - rm test/tools/llvm-objcopy/ELF/mirror-permissions-unix.test - - # Fails in the presence of anti-virus software or other intrusion-detection software that - # modifies the atime when run. See #284056. - rm test/tools/llvm-objcopy/ELF/strip-preserve-atime.test - '' + optionalString stdenv.hostPlatform.isMusl '' - patch -p1 -i ${../../common/llvm/TLI-musl.patch} - substituteInPlace unittests/Support/CMakeLists.txt \ - --replace "add_subdirectory(DynamicLibrary)" "" - rm unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp - # valgrind unhappy with musl or glibc, but fails w/musl only - rm test/CodeGen/AArch64/wineh4.mir - '' + optionalString stdenv.hostPlatform.isAarch32 '' - # skip failing X86 test cases on 32-bit ARM - rm test/DebugInfo/X86/convert-debugloc.ll - rm test/DebugInfo/X86/convert-inlined.ll - rm test/DebugInfo/X86/convert-linked.ll - rm test/tools/dsymutil/X86/op-convert.test - rm test/tools/gold/X86/split-dwarf.ll - rm test/tools/llvm-dwarfdump/X86/prettyprint_types.s - rm test/tools/llvm-dwarfdump/X86/simplified-template-names.s - rm test/CodeGen/RISCV/attributes.ll - rm test/CodeGen/RISCV/xtheadmempair.ll - '' + optionalString (stdenv.hostPlatform.system == "armv6l-linux") '' - # Seems to require certain floating point hardware (NEON?) - rm test/ExecutionEngine/frem.ll - '' + '' - patchShebangs test/BugPoint/compile-custom.ll.py - ''; - - preConfigure = '' - # Workaround for configure flags that need to have spaces - cmakeFlagsArray+=( - -DLLVM_LIT_ARGS="-svj''${NIX_BUILD_CORES} --no-progress-bar" - ) - ''; - - # Defensive check: some paths (that we make symlinks to) depend on the release - # version, for example: - # - https://github.com/llvm/llvm-project/blob/406bde9a15136254f2b10d9ef3a42033b3cb1b16/clang/lib/Headers/CMakeLists.txt#L185 - # - # So we want to sure that the version in the source matches the release - # version we were given. - # - # We do this check here, in the LLVM build, because it happens early. - postConfigure = let - v = lib.versions; - major = v.major release_version; - minor = v.minor release_version; - patch = v.patch release_version; - in '' - # $1: part, $2: expected - check_version() { - part="''${1^^}" - part="$(cat include/llvm/Config/llvm-config.h | grep "#define LLVM_VERSION_''${part} " | cut -d' ' -f3)" - - if [[ "$part" != "$2" ]]; then - echo >&2 \ - "mismatch in the $1 version! we have version ${release_version}" \ - "and expected the $1 version to be '$2'; the source has '$part' instead" - exit 3 - fi - } - - check_version major ${major} - check_version minor ${minor} - check_version patch ${patch} - ''; - - # E.g. mesa.drivers use the build-id as a cache key (see #93946): - LDFLAGS = optionalString (enableSharedLibraries && !stdenv.isDarwin) "-Wl,--build-id=sha1"; - - hardeningDisable = [ "trivialautovarinit" ]; - - cmakeBuildType = if debugVersion then "Debug" else "Release"; - - cmakeFlags = with stdenv; let - # These flags influence llvm-config's BuildVariables.inc in addition to the - # general build. We need to make sure these are also passed via - # CROSS_TOOLCHAIN_FLAGS_NATIVE when cross-compiling or llvm-config-native - # will return different results from the cross llvm-config. - # - # Some flags don't need to be repassed because LLVM already does so (like - # CMAKE_BUILD_TYPE), others are irrelevant to the result. - flagsForLlvmConfig = [ - "-DLLVM_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/llvm" - "-DLLVM_ENABLE_RTTI=ON" - ] ++ optionals enableSharedLibraries [ - "-DLLVM_LINK_LLVM_DYLIB=ON" - ]; - in flagsForLlvmConfig ++ [ - "-DLLVM_INSTALL_UTILS=ON" # Needed by rustc - "-DLLVM_BUILD_TESTS=${if doCheck then "ON" else "OFF"}" - "-DLLVM_ENABLE_FFI=ON" - "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}" - "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}" - "-DLLVM_ENABLE_DUMP=ON" - ] ++ optionals stdenv.hostPlatform.isStatic [ - # Disables building of shared libs, -fPIC is still injected by cc-wrapper - "-DLLVM_ENABLE_PIC=OFF" - "-DLLVM_BUILD_STATIC=ON" - "-DLLVM_LINK_LLVM_DYLIB=off" - # libxml2 needs to be disabled because the LLVM build system ignores its .la - # file and doesn't link zlib as well. - # https://github.com/ClangBuiltLinux/tc-build/issues/150#issuecomment-845418812 - "-DLLVM_ENABLE_LIBXML2=OFF" - ] ++ optionals enableManpages [ - "-DLLVM_BUILD_DOCS=ON" - "-DLLVM_ENABLE_SPHINX=ON" - "-DSPHINX_OUTPUT_MAN=ON" - "-DSPHINX_OUTPUT_HTML=OFF" - "-DSPHINX_WARNINGS_AS_ERRORS=OFF" - ] ++ optionals enableGoldPlugin [ - "-DLLVM_BINUTILS_INCDIR=${libbfd.dev}/include" - ] ++ optionals isDarwin [ - "-DLLVM_ENABLE_LIBCXX=ON" - "-DCAN_TARGET_i386=false" - ] ++ optionals ((stdenv.hostPlatform != stdenv.buildPlatform) && !(stdenv.buildPlatform.canExecute stdenv.hostPlatform)) [ - "-DCMAKE_CROSSCOMPILING=True" - "-DLLVM_TABLEGEN=${buildLlvmTools.llvm}/bin/llvm-tblgen" - ( - let - nativeCC = pkgsBuildBuild.targetPackages.stdenv.cc; - nativeBintools = nativeCC.bintools.bintools; - nativeToolchainFlags = [ - "-DCMAKE_C_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}cc" - "-DCMAKE_CXX_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}c++" - "-DCMAKE_AR=${nativeBintools}/bin/${nativeBintools.targetPrefix}ar" - "-DCMAKE_STRIP=${nativeBintools}/bin/${nativeBintools.targetPrefix}strip" - "-DCMAKE_RANLIB=${nativeBintools}/bin/${nativeBintools.targetPrefix}ranlib" - ]; - # We need to repass the custom GNUInstallDirs values, otherwise CMake - # will choose them for us, leading to wrong results in llvm-config-native - nativeInstallFlags = [ - "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}" - "-DCMAKE_INSTALL_BINDIR=${placeholder "out"}/bin" - "-DCMAKE_INSTALL_INCLUDEDIR=${placeholder "dev"}/include" - "-DCMAKE_INSTALL_LIBDIR=${placeholder "lib"}/lib" - "-DCMAKE_INSTALL_LIBEXECDIR=${placeholder "lib"}/libexec" - ]; - in "-DCROSS_TOOLCHAIN_FLAGS_NATIVE:list=" - + lib.concatStringsSep ";" (lib.concatLists [ - flagsForLlvmConfig - nativeToolchainFlags - nativeInstallFlags - ]) - ) - ]; - - postInstall = '' - mkdir -p $python/share - mv $out/share/opt-viewer $python/share/opt-viewer - moveToOutput "bin/llvm-config*" "$dev" - substituteInPlace "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" \ - --replace "\''${_IMPORT_PREFIX}/lib/lib" "$lib/lib/lib" \ - --replace "$out/bin/llvm-config" "$dev/bin/llvm-config" - substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \ - --replace 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "'"$lib"'")' - '' - + optionalString (stdenv.isDarwin && enableSharedLibraries) '' - ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib - '' - + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' - cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native - ''; - - inherit doCheck; - - checkTarget = "check-all"; - - # For the update script: - passthru.monorepoSrc = monorepoSrc; - - requiredSystemFeatures = [ "big-parallel" ]; - meta = llvm_meta // { - homepage = "https://llvm.org/"; - description = "A collection of modular and reusable compiler and toolchain technologies"; - longDescription = '' - The LLVM Project is a collection of modular and reusable compiler and - toolchain technologies. Despite its name, LLVM has little to do with - traditional virtual machines. The name "LLVM" itself is not an acronym; it - is the full name of the project. - LLVM began as a research project at the University of Illinois, with the - goal of providing a modern, SSA-based compilation strategy capable of - supporting both static and dynamic compilation of arbitrary programming - languages. Since then, LLVM has grown to be an umbrella project consisting - of a number of subprojects, many of which are being used in production by - a wide variety of commercial and open source projects as well as being - widely used in academic research. Code in the LLVM project is licensed - under the "Apache 2.0 License with LLVM exceptions". - ''; - }; -} // lib.optionalAttrs enableManpages { - pname = "llvm-manpages"; - - propagatedBuildInputs = []; - - ninjaFlags = [ "docs-llvm-man" ]; - installTargets = [ "install-docs-llvm-man" ]; - - postPatch = null; - postInstall = null; - - outputs = [ "out" ]; - - doCheck = false; - - meta = llvm_meta // { - description = "man pages for LLVM ${version}"; - }; -}) diff --git a/pkgs/development/compilers/lobster/default.nix b/pkgs/development/compilers/lobster/default.nix index 131fdbfef98fa..645e7019aa73b 100644 --- a/pkgs/development/compilers/lobster/default.nix +++ b/pkgs/development/compilers/lobster/default.nix @@ -18,13 +18,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "lobster"; - version = "2023.13"; + version = "2024.0"; src = fetchFromGitHub { owner = "aardappel"; repo = "lobster"; rev = "v${finalAttrs.version}"; - sha256 = "sha256-7lMIIJ3iduyxZKwK65tle3c+az2G2Mpi4JwAeCCsTxw="; + sha256 = "sha256-EBgb442wI9qU/o6EVCwPnMtPuv1f6Xk2+CZpKWXf3tY="; }; nativeBuildInputs = [ cmake ]; @@ -52,7 +52,7 @@ stdenv.mkDerivation (finalAttrs: { meta = with lib; { broken = stdenv.isDarwin; homepage = "https://strlen.com/lobster/"; - description = "The Lobster programming language"; + description = "Lobster programming language"; mainProgram = "lobster"; longDescription = '' Lobster is a programming language that tries to combine the advantages of diff --git a/pkgs/development/compilers/manticore/default.nix b/pkgs/development/compilers/manticore/default.nix index 030e131656310..d344ff4b726ee 100644 --- a/pkgs/development/compilers/manticore/default.nix +++ b/pkgs/development/compilers/manticore/default.nix @@ -38,7 +38,7 @@ in stdenv.mkDerivation { preInstall = "mkdir -p $out/bin"; meta = { - description = "A parallel, pure variant of Standard ML"; + description = "Parallel, pure variant of Standard ML"; mainProgram = "pmlc"; longDescription = '' diff --git a/pkgs/development/compilers/marst/default.nix b/pkgs/development/compilers/marst/default.nix index 8644fcf7bf435..f62181405b9ed 100644 --- a/pkgs/development/compilers/marst/default.nix +++ b/pkgs/development/compilers/marst/default.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { meta = with lib; { homepage = "https://www.gnu.org/software/marst/"; - description = "An Algol-60-to-C translator"; + description = "Algol-60-to-C translator"; longDescription = '' MARST is an Algol-to-C translator. It automatically translates programs written on the algorithmic language Algol 60 to the C programming diff --git a/pkgs/development/compilers/mercury/default.nix b/pkgs/development/compilers/mercury/default.nix index d2e15dc6fc233..f8ed2ed73ab07 100644 --- a/pkgs/development/compilers/mercury/default.nix +++ b/pkgs/development/compilers/mercury/default.nix @@ -43,7 +43,7 @@ stdenv.mkDerivation rec { ''; meta = { - description = "A pure logic programming language"; + description = "Pure logic programming language"; longDescription = '' Mercury is a logic/functional programming language which combines the clarity and expressiveness of declarative programming with advanced diff --git a/pkgs/development/compilers/mezzo/default.nix b/pkgs/development/compilers/mezzo/default.nix index 50c34f7c35be2..498743ee743e0 100644 --- a/pkgs/development/compilers/mezzo/default.nix +++ b/pkgs/development/compilers/mezzo/default.nix @@ -48,7 +48,7 @@ stdenv.mkDerivation { meta = with lib; { homepage = "http://protz.github.io/mezzo/"; - description = "A programming language in the ML tradition, which places strong emphasis on the control of aliasing and access to mutable memory"; + description = "Programming language in the ML tradition, which places strong emphasis on the control of aliasing and access to mutable memory"; license = licenses.gpl2; platforms = ocaml.meta.platforms or []; }; diff --git a/pkgs/development/compilers/microscheme/default.nix b/pkgs/development/compilers/microscheme/default.nix index c9f3a1847066b..d630082c76fb4 100644 --- a/pkgs/development/compilers/microscheme/default.nix +++ b/pkgs/development/compilers/microscheme/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { meta = with lib; { homepage = "https://ryansuchocki.github.io/microscheme/"; - description = "A Scheme subset for Atmel microcontrollers"; + description = "Scheme subset for Atmel microcontrollers"; mainProgram = "microscheme"; longDescription = '' Microscheme is a Scheme subset/variant designed for Atmel diff --git a/pkgs/development/compilers/minimacy/default.nix b/pkgs/development/compilers/minimacy/default.nix index 6928ba4cdc42d..ae4da0d5b0279 100644 --- a/pkgs/development/compilers/minimacy/default.nix +++ b/pkgs/development/compilers/minimacy/default.nix @@ -67,7 +67,7 @@ stdenv.mkDerivation rec { ''; meta = { - description = "An open-source minimalist computing technology"; + description = "Open-source minimalist computing technology"; longDescription = '' Minimacy is an open-source minimalist computation system based on the principle "Less is more". It is designed and programmed by Sylvain Huet. diff --git a/pkgs/development/compilers/mint/default.nix b/pkgs/development/compilers/mint/default.nix index 3a81f17fd5384..5a94d35c051f6 100644 --- a/pkgs/development/compilers/mint/default.nix +++ b/pkgs/development/compilers/mint/default.nix @@ -25,7 +25,7 @@ crystal.buildCrystalPackage rec { ''; meta = with lib; { - description = "A refreshing language for the front-end web"; + description = "Refreshing language for the front-end web"; mainProgram = "mint"; homepage = "https://www.mint-lang.com/"; license = licenses.bsd3; diff --git a/pkgs/development/compilers/mlkit/default.nix b/pkgs/development/compilers/mlkit/default.nix index e5cd4992d6c60..5dbc219303a00 100644 --- a/pkgs/development/compilers/mlkit/default.nix +++ b/pkgs/development/compilers/mlkit/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "mlkit"; - version = "4.7.9"; + version = "4.7.11"; src = fetchFromGitHub { owner = "melsman"; repo = "mlkit"; rev = "v${version}"; - sha256 = "sha256-Q5HKNilXhoOaCMY05A09VzK4CpLPte78bivs1c78euM="; + sha256 = "sha256-awjinXegc8jLd6OAB8QLDoXnotZhKbyfMWckp2U3MjA="; }; nativeBuildInputs = [ autoreconfHook mlton ]; diff --git a/pkgs/development/compilers/mosml/default.nix b/pkgs/development/compilers/mosml/default.nix index 44ed1185fafcc..26ce0365a6cd4 100644 --- a/pkgs/development/compilers/mosml/default.nix +++ b/pkgs/development/compilers/mosml/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { dontPatchELF = true; meta = with lib; { - description = "A light-weight implementation of Standard ML"; + description = "Light-weight implementation of Standard ML"; longDescription = '' Moscow ML is a light-weight implementation of Standard ML (SML), a strict functional language used in teaching and research. diff --git a/pkgs/development/compilers/mozart/default.nix b/pkgs/development/compilers/mozart/default.nix index 521ae2a9b22c5..8b66cbce688b6 100644 --- a/pkgs/development/compilers/mozart/default.nix +++ b/pkgs/development/compilers/mozart/default.nix @@ -70,7 +70,7 @@ in stdenv.mkDerivation rec { ]; meta = with lib; { - description = "An open source implementation of Oz 3"; + description = "Open source implementation of Oz 3"; maintainers = with maintainers; [ layus h7x4 ]; license = licenses.bsd2; homepage = "https://mozart.github.io"; diff --git a/pkgs/development/compilers/mruby/default.nix b/pkgs/development/compilers/mruby/default.nix index a379a298123cf..0fc1af2d6676d 100644 --- a/pkgs/development/compilers/mruby/default.nix +++ b/pkgs/development/compilers/mruby/default.nix @@ -35,7 +35,7 @@ stdenv.mkDerivation (finalAttrs: { }; meta = with lib; { - description = "An embeddable implementation of the Ruby language"; + description = "Embeddable implementation of the Ruby language"; homepage = "https://mruby.org"; maintainers = with maintainers; [ nicknovitski ]; license = licenses.mit; diff --git a/pkgs/development/compilers/mrustc/bootstrap.nix b/pkgs/development/compilers/mrustc/bootstrap.nix index 0996702ec6253..ab5b9d7d21661 100644 --- a/pkgs/development/compilers/mrustc/bootstrap.nix +++ b/pkgs/development/compilers/mrustc/bootstrap.nix @@ -134,7 +134,7 @@ stdenv.mkDerivation rec { meta = with lib; { inherit (src.meta) homepage; - description = "A minimal build of Rust"; + description = "Minimal build of Rust"; longDescription = '' A minimal build of Rust, built from source using mrustc. This is useful for bootstrapping the main Rust compiler without diff --git a/pkgs/development/compilers/mrustc/minicargo.nix b/pkgs/development/compilers/mrustc/minicargo.nix index c7d5da1f90491..788534f39cd75 100644 --- a/pkgs/development/compilers/mrustc/minicargo.nix +++ b/pkgs/development/compilers/mrustc/minicargo.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { ''; meta = with lib; { - description = "A minimalist builder for Rust"; + description = "Minimalist builder for Rust"; mainProgram = "minicargo"; longDescription = '' A minimalist builder for Rust, similar to Cargo but written in C++. diff --git a/pkgs/development/compilers/nasm/default.nix b/pkgs/development/compilers/nasm/default.nix index 64abd3a1e322d..e839c21fca2b5 100644 --- a/pkgs/development/compilers/nasm/default.nix +++ b/pkgs/development/compilers/nasm/default.nix @@ -7,11 +7,11 @@ stdenv.mkDerivation rec { pname = "nasm"; - version = "2.16.02"; + version = "2.16.03"; src = fetchurl { url = "https://www.nasm.us/pub/nasm/releasebuilds/${version}/${pname}-${version}.tar.xz"; - sha256 = "sha256-HhuULqiPIu2uiWWeFb4m+gJ+rgdH9RQTVA9S1OrEeQ0="; + hash = "sha256-FBKhx2C70F2wJrbA0WV6/9ZjHNCmPN229zzG1KphYUg="; }; nativeBuildInputs = [ perl ]; @@ -37,7 +37,7 @@ stdenv.mkDerivation rec { meta = with lib; { homepage = "https://www.nasm.us/"; - description = "An 80x86 and x86-64 assembler designed for portability and modularity"; + description = "80x86 and x86-64 assembler designed for portability and modularity"; platforms = platforms.unix; maintainers = with maintainers; [ pSub willibutz ]; license = licenses.bsd2; diff --git a/pkgs/development/compilers/neko/default.nix b/pkgs/development/compilers/neko/default.nix index fff5762a38d72..a0c8886740167 100644 --- a/pkgs/development/compilers/neko/default.nix +++ b/pkgs/development/compilers/neko/default.nix @@ -44,7 +44,7 @@ stdenv.mkDerivation rec { dontStrip = true; meta = with lib; { - description = "A high-level dynamically typed programming language"; + description = "High-level dynamically typed programming language"; homepage = "https://nekovm.org"; license = [ # list based on https://github.com/HaxeFoundation/neko/blob/v2-3-0/LICENSE diff --git a/pkgs/development/compilers/nim/build-nim-package.nix b/pkgs/development/compilers/nim/build-nim-package.nix index a22fb45b507bc..2bff3bf8cc857 100644 --- a/pkgs/development/compilers/nim/build-nim-package.nix +++ b/pkgs/development/compilers/nim/build-nim-package.nix @@ -57,10 +57,6 @@ let let fod = methods.${method} attrs; in ''--path:"${fod.outPath}/${attrs.srcDir}"''; - callAnnotations = { packages, ... }@lockAttrs: - map (packageName: nimOverrides.${packageName} or (_: [ ]) lockAttrs) - packages; - asFunc = x: if builtins.isFunction x then x else (_: x); in @@ -79,12 +75,17 @@ let lockFileNimFlags = map fodFromLockEntry lockDepends; - annotationOverlays = lib.lists.flatten (map callAnnotations lockDepends); - - postLock = builtins.foldl' - (prevAttrs: overlay: prevAttrs // (overlay finalAttrs prevAttrs)) - postPkg - annotationOverlays; + postNimOverrides = builtins.foldl' ( + prevAttrs: + { packages, ... }@lockAttrs: + builtins.foldl' ( + prevAttrs: name: + if (builtins.hasAttr name nimOverrides) then + (prevAttrs // (nimOverrides.${name} lockAttrs prevAttrs)) + else + prevAttrs + ) prevAttrs packages + ) postPkg lockDepends; finalOverride = { depsBuildBuild ? [ ] @@ -125,7 +126,7 @@ let }; }; - attrs = postLock // finalOverride postLock; + attrs = postNimOverrides // finalOverride postNimOverrides; in lib.trivial.warnIf (builtins.hasAttr "nimBinOnly" attrs) "the nimBinOnly attribute is deprecated for buildNimPackage" diff --git a/pkgs/development/compilers/nim/default.nix b/pkgs/development/compilers/nim/default.nix index 1b5f21ddef796..0ac32994b00d6 100644 --- a/pkgs/development/compilers/nim/default.nix +++ b/pkgs/development/compilers/nim/default.nix @@ -1,7 +1,7 @@ # https://nim-lang.github.io/Nim/packaging.html # https://nim-lang.org/docs/nimc.html -{ lib, callPackage, buildPackages, stdenv, fetchurl, fetchgit, fetchFromGitHub +{ lib, callPackage, buildPackages, stdenv, fetchurl, fetchgit , makeWrapper, openssl, pcre, readline, boehmgc, sqlite, Security , nim-unwrapped-2, nim-unwrapped-1, nim }: @@ -76,12 +76,12 @@ in { nim-unwrapped-2 = stdenv.mkDerivation (finalAttrs: { pname = "nim-unwrapped"; - version = "2.0.2"; + version = "2.0.4"; strictDeps = true; src = fetchurl { url = "https://nim-lang.org/download/nim-${finalAttrs.version}.tar.xz"; - hash = "sha256-ZPUdO/Vt6dDueeLKapzpRFSvmmOhQaaWnOjFmmC4LM8="; + hash = "sha256-cVJr0HQ53I43j6Gm60B+2hKY8fPU30R23KDjyjy+Pwk="; }; buildInputs = [ boehmgc openssl pcre readline sqlite ] @@ -161,10 +161,10 @@ in { }); nim-unwrapped-1 = nim-unwrapped-2.overrideAttrs (finalAttrs: prevAttrs: { - version = "1.6.18"; + version = "1.6.20"; src = fetchurl { url = "https://nim-lang.org/download/nim-${finalAttrs.version}.tar.xz"; - hash = "sha256-UCQaxyIpG6ljdT8EWqo1h7c8GqKK4pxXPBWluKYCoss="; + hash = "sha256-/+0EdQTR/K9hDw3Xzz4Ce+kaKSsMnFEWFQTC87mE/7k="; }; patches = [ diff --git a/pkgs/development/compilers/nqc/default.nix b/pkgs/development/compilers/nqc/default.nix index a532b7df8580d..a7d6cb5f2cdd0 100644 --- a/pkgs/development/compilers/nqc/default.nix +++ b/pkgs/development/compilers/nqc/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { meta = with lib; { homepage = "https://bricxcc.sourceforge.net/nqc/"; - description = "A programming language for several LEGO MINDSTORMS products including the RCX, CyberMaster, and Scout"; + description = "Programming language for several LEGO MINDSTORMS products including the RCX, CyberMaster, and Scout"; platforms = platforms.linux; license = licenses.mpl10; maintainers = with maintainers; [ christophcharles ]; diff --git a/pkgs/development/compilers/obliv-c/default.nix b/pkgs/development/compilers/obliv-c/default.nix index f2eadee579376..98a1d7192ed76 100644 --- a/pkgs/development/compilers/obliv-c/default.nix +++ b/pkgs/development/compilers/obliv-c/default.nix @@ -42,7 +42,7 @@ stdenv.mkDerivation rec { ''; meta = { - description = "A GCC wrapper that makes it easy to embed secure computation protocols inside regular C programs"; + description = "GCC wrapper that makes it easy to embed secure computation protocols inside regular C programs"; license = lib.licenses.bsd3; maintainers = [lib.maintainers.raskin]; platforms = lib.platforms.linux; diff --git a/pkgs/development/compilers/ocaml/5.2.nix b/pkgs/development/compilers/ocaml/5.2.nix index 8df6f1d5d48ea..5a0c2783207a8 100644 --- a/pkgs/development/compilers/ocaml/5.2.nix +++ b/pkgs/development/compilers/ocaml/5.2.nix @@ -1,9 +1,6 @@ import ./generic.nix { major_version = "5"; minor_version = "2"; - patch_version = "0-beta2"; - src = fetchTarball { - url = "https://caml.inria.fr/pub/distrib/ocaml-5.2/ocaml-5.2.0~beta2.tar.xz"; - sha256 = "sha256:1cyw0w79j7kyr3x0ivsqm1si704b29ic33yj621dq7f125jabk00"; - }; + patch_version = "0"; + sha256 = "sha256-L0v0efUUefm/jH8WlKbqcza793T0rW2mtZ0a1JOd2Kc="; } diff --git a/pkgs/development/compilers/ocaml/ber-metaocaml.nix b/pkgs/development/compilers/ocaml/ber-metaocaml.nix index 230c911ef68ca..5279fc7481b6e 100644 --- a/pkgs/development/compilers/ocaml/ber-metaocaml.nix +++ b/pkgs/development/compilers/ocaml/ber-metaocaml.nix @@ -1,7 +1,6 @@ { lib, stdenv, fetchurl , ncurses , libX11, xorgproto, buildEnv -, fetchpatch , useX11 ? stdenv.hostPlatform.isx86 }: diff --git a/pkgs/development/compilers/ocaml/builder.sh b/pkgs/development/compilers/ocaml/builder.sh deleted file mode 100644 index 85b26848f4e45..0000000000000 --- a/pkgs/development/compilers/ocaml/builder.sh +++ /dev/null @@ -1,9 +0,0 @@ -if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi -source $stdenv/setup - -configureFlags="-prefix $out $configureFlags" -genericBuild - -#cd emacs/ -#mkdir -p $out/share/ocaml/emacs -#make EMACSDIR=$out/share/ocaml/emacs install diff --git a/pkgs/development/compilers/odin/default.nix b/pkgs/development/compilers/odin/default.nix index 9168ad485e277..d8a608508c553 100644 --- a/pkgs/development/compilers/odin/default.nix +++ b/pkgs/development/compilers/odin/default.nix @@ -1,42 +1,43 @@ { lib , fetchFromGitHub -, llvmPackages_13 +, llvmPackages , makeBinaryWrapper , libiconv , MacOSX-SDK +, Security , which }: let - llvmPackages = llvmPackages_13; inherit (llvmPackages) stdenv; in stdenv.mkDerivation rec { pname = "odin"; - version = "dev-2024-04a"; + version = "dev-2024-06"; src = fetchFromGitHub { owner = "odin-lang"; repo = "Odin"; rev = version; - hash = "sha256-jFENpWUosNNTctYiHdKqDg7ENAoEtigz87pTfYJDj5Q="; + hash = "sha256-Ba+244L855y+XzLcaf1fgQhHVDv2Q77GPapRAYmCQfg="; }; nativeBuildInputs = [ makeBinaryWrapper which ]; - buildInputs = lib.optional stdenv.isDarwin libiconv; + buildInputs = lib.optionals stdenv.isDarwin [ + libiconv + Security + ]; LLVM_CONFIG = "${llvmPackages.llvm.dev}/bin/llvm-config"; postPatch = lib.optionalString stdenv.isDarwin '' - sed -i src/main.cpp \ - -e 's|-syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk|-syslibroot ${MacOSX-SDK}|' - '' + '' - sed -i build_odin.sh \ - -e 's/^GIT_SHA=.*$/GIT_SHA=/' \ - -e 's/LLVM-C/LLVM/' \ - -e 's/framework System/lSystem/' + substituteInPlace src/linker.cpp \ + --replace-fail '/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk' ${MacOSX-SDK} + '' + '' + substituteInPlace build_odin.sh \ + --replace-fail '-framework System' '-lSystem' patchShebangs build_odin.sh ''; @@ -70,7 +71,7 @@ in stdenv.mkDerivation rec { ''; meta = with lib; { - description = "A fast, concise, readable, pragmatic and open sourced programming language"; + description = "Fast, concise, readable, pragmatic and open sourced programming language"; mainProgram = "odin"; homepage = "https://odin-lang.org/"; license = licenses.bsd3; diff --git a/pkgs/development/compilers/open-watcom/bin.nix b/pkgs/development/compilers/open-watcom/bin.nix index daf7ea497693a..1f80799089992 100644 --- a/pkgs/development/compilers/open-watcom/bin.nix +++ b/pkgs/development/compilers/open-watcom/bin.nix @@ -115,7 +115,7 @@ stdenvNoCC.mkDerivation rec { passthru.prettyName = "open-watcom-bin"; meta = with lib; { - description = "A project to maintain and enhance the Watcom C, C++, and Fortran cross compilers and tools"; + description = "Project to maintain and enhance the Watcom C, C++, and Fortran cross compilers and tools"; sourceProvenance = with sourceTypes; [ binaryNativeCode ]; homepage = "http://www.openwatcom.org/"; license = licenses.watcom; diff --git a/pkgs/development/compilers/open-watcom/v2.nix b/pkgs/development/compilers/open-watcom/v2.nix index 37503496c9176..ddd62872d4510 100644 --- a/pkgs/development/compilers/open-watcom/v2.nix +++ b/pkgs/development/compilers/open-watcom/v2.nix @@ -13,13 +13,13 @@ stdenv.mkDerivation rec { pname = "${passthru.prettyName}-unwrapped"; # nixpkgs-update: no auto update - version = "unstable-2023-11-24"; + version = "0-unstable-2024-05-14"; src = fetchFromGitHub { owner = "open-watcom"; repo = "open-watcom-v2"; - rev = "7976a5c7ca4e856907ccd378c17c71578ad51cb7"; - hash = "sha256-u9ljy4dZRoXKyUqdolxZijpc99TuhKPPlL6xlV3xJXA="; + rev = "d3733a7fca1d02ad91b58b377ecb38e1293889db"; + hash = "sha256-gDrmm7hd07lv0KhkP7Bys5qCuCCH+t/XvlftCYlCyI8="; }; postPatch = '' @@ -89,11 +89,13 @@ stdenv.mkDerivation rec { prettyName = "open-watcom-v2"; updateScript = unstableGitUpdater { url = "https://github.com/open-watcom/open-watcom-v2.git"; + # no numerical releases, monthly "YYYY-MM-DD-Build" tags and daily "Current-build", "Last-CI-build" & "Coverity-scan" retagging + hardcodeZeroVersion = true; }; }; meta = with lib; { - description = "The v2 fork of the Open Watcom suite of compilers and tools"; + description = "V2 fork of the Open Watcom suite of compilers and tools"; longDescription = '' A fork of Open Watcom: A C/C++/Fortran compiler and assembler suite targeting a multitude of architectures (x86, IA-32, Alpha AXP, MIPS, diff --git a/pkgs/development/compilers/opendylan/bin.nix b/pkgs/development/compilers/opendylan/bin.nix index 6e404f37ae9d8..ef6dc0ce91ba1 100644 --- a/pkgs/development/compilers/opendylan/bin.nix +++ b/pkgs/development/compilers/opendylan/bin.nix @@ -36,7 +36,7 @@ stdenv.mkDerivation rec { meta = { homepage = "https://opendylan.org"; - description = "A multi-paradigm functional and object-oriented programming language"; + description = "Multi-paradigm functional and object-oriented programming language"; license = lib.licenses.mit; platforms = lib.platforms.linux; }; diff --git a/pkgs/development/compilers/opendylan/default.nix b/pkgs/development/compilers/opendylan/default.nix index fa0f98ea7fd29..b34f348519afb 100644 --- a/pkgs/development/compilers/opendylan/default.nix +++ b/pkgs/development/compilers/opendylan/default.nix @@ -36,7 +36,7 @@ stdenv.mkDerivation { meta = { homepage = "https://opendylan.org"; - description = "A multi-paradigm functional and object-oriented programming language"; + description = "Multi-paradigm functional and object-oriented programming language"; license = lib.licenses.mit; platforms = lib.platforms.linux; broken = true; # last successful build 2020-12-11 diff --git a/pkgs/development/compilers/openjdk/11.nix b/pkgs/development/compilers/openjdk/11.nix index e9b8961d5e599..04df2d28a45ca 100644 --- a/pkgs/development/compilers/openjdk/11.nix +++ b/pkgs/development/compilers/openjdk/11.nix @@ -11,8 +11,8 @@ let major = "11"; minor = "0"; - update = "19"; - build = "7"; + update = "23"; + build = "9"; # when building a headless jdk, also bootstrap it with a headless jdk openjdk-bootstrap = openjdk11-bootstrap.override { gtkSupport = !headless; }; @@ -25,7 +25,7 @@ let owner = "openjdk"; repo = "jdk${major}u"; rev = "jdk-${version}"; - sha256 = "sha256-mp8toB1dWcwOtMqNFd7UwRg8pLJckovqD/LD5p9zUoA="; + sha256 = "sha256-6y6wge8ZuSKBpb5QNihvAlD4Pv/0d3AQCPOkxUm/sJk="; }; nativeBuildInputs = [ pkg-config autoconf unzip ]; diff --git a/pkgs/development/compilers/openjdk/16.nix b/pkgs/development/compilers/openjdk/16.nix index 4b0874a03a415..12ba5c9c16dbb 100644 --- a/pkgs/development/compilers/openjdk/16.nix +++ b/pkgs/development/compilers/openjdk/16.nix @@ -11,8 +11,8 @@ let version = { feature = "16"; - interim = "0"; - build = "36"; + interim = ".0.2-ga"; + build = "1"; }; # when building a headless jdk, also bootstrap it with a headless jdk @@ -20,13 +20,14 @@ let openjdk = stdenv.mkDerivation { pname = "openjdk" + lib.optionalString headless "-headless"; - version = "${version.feature}+${version.build}"; + version = "${version.feature}${version.interim}+${version.build}"; src = fetchFromGitHub { owner = "openjdk"; repo = "jdk${version.feature}u"; - rev = "jdk-${version.feature}+${version.build}"; - sha256 = "165nr15dqfcxzsl5z95g4iklln4rlfkgdigdma576mx8813ldi44"; + rev = "jdk-${version.feature}${version.interim}"; + # rev = "jdk-${version.feature}${version.interim}+${version.build}"; + sha256 = "sha256-/8XHNrf9joCCXMCyPncT54JhqlF+KBL7eAf8hUW/BxU="; }; nativeBuildInputs = [ pkg-config autoconf unzip ]; diff --git a/pkgs/development/compilers/openjdk/17.nix b/pkgs/development/compilers/openjdk/17.nix index d2c71683c9bfe..1c9aee9af5e95 100644 --- a/pkgs/development/compilers/openjdk/17.nix +++ b/pkgs/development/compilers/openjdk/17.nix @@ -11,8 +11,8 @@ let version = { feature = "17"; - interim = ".0.7"; - build = "7"; + interim = ".0.11"; + build = "9"; }; # when building a headless jdk, also bootstrap it with a headless jdk @@ -26,7 +26,7 @@ let owner = "openjdk"; repo = "jdk${version.feature}u"; rev = "jdk-${version.feature}${version.interim}+${version.build}"; - sha256 = "sha256-S6QOB4Tbi+K1yjvvywTfvwFI2eX8AiqIx5c3zfxcskc="; + sha256 = "sha256-aO4iSc9MklW/4q9U86WEfiiWnlq6iZSbxzq2fbsqd0A="; }; nativeBuildInputs = [ pkg-config autoconf unzip ]; diff --git a/pkgs/development/compilers/openjdk/18.nix b/pkgs/development/compilers/openjdk/18.nix index 2c496721be070..5ce4ff8f54671 100644 --- a/pkgs/development/compilers/openjdk/18.nix +++ b/pkgs/development/compilers/openjdk/18.nix @@ -11,7 +11,8 @@ let version = { feature = "18"; - build = "36"; + interim = ".0.2.1"; + build = "1"; }; # when building a headless jdk, also bootstrap it with a headless jdk @@ -19,13 +20,13 @@ let openjdk = stdenv.mkDerivation { pname = "openjdk" + lib.optionalString headless "-headless"; - version = "${version.feature}+${version.build}"; + version = "${version.feature}${version.interim}+${version.build}"; src = fetchFromGitHub { owner = "openjdk"; repo = "jdk${version.feature}u"; - rev = "jdk-${version.feature}+${version.build}"; - sha256 = "sha256-yGPC8VA983Ml6Fv/oiEgRrcVe4oe+Q4oCHbzOmFbZq8="; + rev = "jdk-${version.feature}${version.interim}+${version.build}"; + sha256 = "sha256-L6dsN0kqWcfemM8LBg62qtHQdymwRQoV1ndc8r+0qn8="; }; nativeBuildInputs = [ pkg-config autoconf unzip ]; diff --git a/pkgs/development/compilers/openjdk/19.nix b/pkgs/development/compilers/openjdk/19.nix index 51fd0d8eb533f..187d724b57b55 100644 --- a/pkgs/development/compilers/openjdk/19.nix +++ b/pkgs/development/compilers/openjdk/19.nix @@ -14,8 +14,8 @@ let version = { feature = "19"; - interim = ".0.2"; - build = "7"; + interim = "-ga"; + build = ""; }; # when building a headless jdk, also bootstrap it with a headless jdk @@ -23,13 +23,15 @@ let openjdk = stdenv.mkDerivation { pname = "openjdk" + lib.optionalString headless "-headless"; - version = "${version.feature}${version.interim}+${version.build}"; + version = "${version.feature}${version.interim}"; + # version = "${version.feature}${version.interim}+${version.build}"; src = fetchFromGitHub { owner = "openjdk"; repo = "jdk${version.feature}u"; - rev = "jdk-${version.feature}${version.interim}+${version.build}"; - hash = "sha256-pBEHmBtIgG4Czou4C/zpBBYZEDImvXiLoA5CjOzpeyI="; + rev = "jdk-${version.feature}${version.interim}"; + # rev = "jdk-${version.feature}${version.interim}+${version.build}"; + hash = "sha256-XbYTku/nWF+maBvYz2rJYIUBEgOmqICKjk9wufHqyj0="; }; nativeBuildInputs = [ pkg-config autoconf unzip ensureNewerSourcesForZipFilesHook ]; diff --git a/pkgs/development/compilers/openjdk/20.nix b/pkgs/development/compilers/openjdk/20.nix index 2be834a27b58e..bdb7d057f2633 100644 --- a/pkgs/development/compilers/openjdk/20.nix +++ b/pkgs/development/compilers/openjdk/20.nix @@ -14,8 +14,8 @@ let version = { feature = "20"; - interim = ""; - build = "36"; + interim = ".0.2"; + build = "9"; }; # when building a headless jdk, also bootstrap it with a headless jdk @@ -29,7 +29,7 @@ let owner = "openjdk"; repo = "jdk${version.feature}u"; rev = "jdk-${version.feature}${version.interim}+${version.build}"; - hash = "sha256-fXoSO8nq5qpUYbCtbrRr2C46XRdYX77Pxmk7GfmlZV4="; + hash = "sha256-CZH2JwR+MrkTlLdcVYuFRB3McdrM0A+1YaSjNpjYwak="; }; nativeBuildInputs = [ pkg-config autoconf unzip ensureNewerSourcesForZipFilesHook ]; diff --git a/pkgs/development/compilers/openjdk/22.nix b/pkgs/development/compilers/openjdk/22.nix index bef62b6755a26..97d1a3b3b44df 100644 --- a/pkgs/development/compilers/openjdk/22.nix +++ b/pkgs/development/compilers/openjdk/22.nix @@ -3,7 +3,6 @@ , fetchurl , fetchpatch , fetchFromGitHub -, bash , pkg-config , autoconf , cpio @@ -44,217 +43,234 @@ , gnome_vfs , glib , GConf +, writeShellScript }: let - version = { - feature = "22"; - interim = ""; - build = "36"; - }; + + # Java version format: + # $FEATURE.$INTERIM.$UPDATE.$PATCH + # See + # https://openjdk.org/jeps/223 + # https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/lang/Runtime.Version.html + featureVersion = "22"; + info = builtins.getAttr featureVersion (lib.importJSON ./info.json); + version = info.version; # when building a headless jdk, also bootstrap it with a headless jdk openjdk-bootstrap = openjdk22-bootstrap.override { gtkSupport = !headless; }; +in - openjdk = stdenv.mkDerivation { - pname = "openjdk" + lib.optionalString headless "-headless"; - version = "${version.feature}${version.interim}+${version.build}"; - - src = fetchFromGitHub { - owner = "openjdk"; - repo = "jdk${version.feature}u"; - rev = "jdk-${version.feature}${version.interim}+${version.build}"; - hash = "sha256-itjvIedPwJl/l3a2gIVpNMs1zkbrjioVqbCj1Z1nCJE="; - }; - - nativeBuildInputs = [ pkg-config autoconf unzip ensureNewerSourcesForZipFilesHook ]; - buildInputs = [ - cpio - file - which - zip - perl - zlib - cups - freetype - alsa-lib - libjpeg - giflib - libpng - zlib - lcms2 - libX11 - libICE - libXrender - libXext - libXtst - libXt - libXtst - libXi - libXinerama - libXcursor - libXrandr - fontconfig - openjdk-bootstrap - ] ++ lib.optionals (!headless && enableGnome2) [ - gtk3 - gnome_vfs - GConf - glib - ]; - - patches = [ - ./fix-java-home-jdk21.patch - ./read-truststore-from-env-jdk10.patch - ./currency-date-range-jdk10.patch - ./increase-javadoc-heap-jdk13.patch - ./ignore-LegalNoticeFilePlugin-jdk18.patch - - # -Wformat etc. are stricter in newer gccs, per - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79677 - # so grab the work-around from - # https://src.fedoraproject.org/rpms/java-openjdk/pull-request/24 - (fetchurl { - url = "https://src.fedoraproject.org/rpms/java-openjdk/raw/06c001c7d87f2e9fe4fedeef2d993bcd5d7afa2a/f/rh1673833-remove_removal_of_wformat_during_test_compilation.patch"; - sha256 = "082lmc30x64x583vqq00c8y0wqih3y4r0mp1c4bqq36l22qv6b6r"; - }) - - # Fix build for gnumake-4.4.1: - # https://github.com/openjdk/jdk/pull/12992 - (fetchpatch { - name = "gnumake-4.4.1"; - url = "https://github.com/openjdk/jdk/commit/9341d135b855cc208d48e47d30cd90aafa354c36.patch"; - hash = "sha256-Qcm3ZmGCOYLZcskNjj7DYR85R4v07vYvvavrVOYL8vg="; - }) - ] ++ lib.optionals (!headless && enableGnome2) [ - ./swing-use-gtk-jdk13.patch - ]; - - postPatch = '' - chmod +x configure - patchShebangs --build configure - ''; - - # JDK's build system attempts to specifically detect - # and special-case WSL, and we don't want it to do that, - # so pass the correct platform names explicitly - configurePlatforms = [ "build" "host" ]; - - - # https://openjdk.org/groups/build/doc/building.html - configureFlags = [ - "--with-boot-jdk=${openjdk-bootstrap.home}" - "--with-version-build=${version.build}" - "--with-version-opt=nixos" - "--with-version-pre=" - "--enable-unlimited-crypto" - "--with-native-debug-symbols=internal" - "--with-libjpeg=system" - "--with-giflib=system" - "--with-libpng=system" - "--with-zlib=system" - "--with-lcms=system" - "--with-stdc++lib=dynamic" - ] - ++ lib.optional headless "--enable-headless-only" - ++ lib.optional (!headless && enableJavaFX) "--with-import-modules=${openjfx}"; - - separateDebugInfo = true; - - env.NIX_CFLAGS_COMPILE = "-Wno-error"; - - NIX_LDFLAGS = toString (lib.optionals (!headless) [ - "-lfontconfig" - "-lcups" - "-lXinerama" - "-lXrandr" - "-lmagic" - ] ++ lib.optionals (!headless && enableGnome2) [ - "-lgtk-3" - "-lgio-2.0" - "-lgnomevfs-2" - "-lgconf-2" - ]); - - # -j flag is explicitly rejected by the build system: - # Error: 'make -jN' is not supported, use 'make JOBS=N' - # Note: it does not make build sequential. Build system - # still runs in parallel. - enableParallelBuilding = false; - - buildFlags = [ "images" ]; - - installPhase = '' - mkdir -p $out/lib - - mv build/*/images/jdk $out/lib/openjdk - - # Remove some broken manpages. - rm -rf $out/lib/openjdk/man/ja* - - # Mirror some stuff in top-level. - mkdir -p $out/share - ln -s $out/lib/openjdk/include $out/include - ln -s $out/lib/openjdk/man $out/share/man - - # IDEs use the provided src.zip to navigate the Java codebase (https://github.com/NixOS/nixpkgs/pull/95081) - ln -s $out/lib/openjdk/lib/src.zip $out/lib/src.zip - - # jni.h expects jni_md.h to be in the header search path. - ln -s $out/include/linux/*_md.h $out/include/ - - # Remove crap from the installation. - rm -rf $out/lib/openjdk/demo - ${lib.optionalString headless '' - rm $out/lib/openjdk/lib/{libjsound,libfontmanager}.so - ''} - - ln -s $out/lib/openjdk/bin $out/bin - ''; - - preFixup = '' - # Propagate the setJavaClassPath setup hook so that any package - # that depends on the JDK has $CLASSPATH set up properly. - mkdir -p $out/nix-support - #TODO or printWords? cf https://github.com/NixOS/nixpkgs/pull/27427#issuecomment-317293040 - echo -n "${setJavaClassPath}" > $out/nix-support/propagated-build-inputs - - # Set JAVA_HOME automatically. - mkdir -p $out/nix-support - cat <<EOF > $out/nix-support/setup-hook - if [ -z "\''${JAVA_HOME-}" ]; then export JAVA_HOME=$out/lib/openjdk; fi - EOF - ''; - - postFixup = '' - # Build the set of output library directories to rpath against - LIBDIRS="" - for output in $(getAllOutputNames); do - if [ "$output" = debug ]; then continue; fi - LIBDIRS="$(find $(eval echo \$$output) -name \*.so\* -exec dirname {} \+ | sort -u | tr '\n' ':'):$LIBDIRS" - done - # Add the local library paths to remove dependencies on the bootstrap - for output in $(getAllOutputNames); do - if [ "$output" = debug ]; then continue; fi - OUTPUTDIR=$(eval echo \$$output) - BINLIBS=$(find $OUTPUTDIR/bin/ -type f; find $OUTPUTDIR -name \*.so\*) - echo "$BINLIBS" | while read i; do - patchelf --set-rpath "$LIBDIRS:$(patchelf --print-rpath "$i")" "$i" || true - patchelf --shrink-rpath "$i" || true - done +stdenv.mkDerivation (finalAttrs: { + pname = "openjdk" + lib.optionalString headless "-headless"; + inherit version; + + src = fetchFromGitHub { + owner = "openjdk"; + repo = info.repo; + rev = "jdk-${version}"; + hash = info.hash; + }; + + nativeBuildInputs = [ pkg-config autoconf unzip ensureNewerSourcesForZipFilesHook ]; + buildInputs = [ + cpio + file + which + zip + perl + zlib + cups + freetype + alsa-lib + libjpeg + giflib + libpng + zlib + lcms2 + libX11 + libICE + libXrender + libXext + libXtst + libXt + libXtst + libXi + libXinerama + libXcursor + libXrandr + fontconfig + openjdk-bootstrap + ] ++ lib.optionals (!headless && enableGnome2) [ + gtk3 + gnome_vfs + GConf + glib + ]; + + patches = [ + ./fix-java-home-jdk21.patch + ./read-truststore-from-env-jdk10.patch + ./currency-date-range-jdk10.patch + ./increase-javadoc-heap-jdk13.patch + ./ignore-LegalNoticeFilePlugin-jdk18.patch + + # -Wformat etc. are stricter in newer gccs, per + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79677 + # so grab the work-around from + # https://src.fedoraproject.org/rpms/java-openjdk/pull-request/24 + (fetchurl { + url = "https://src.fedoraproject.org/rpms/java-openjdk/raw/06c001c7d87f2e9fe4fedeef2d993bcd5d7afa2a/f/rh1673833-remove_removal_of_wformat_during_test_compilation.patch"; + sha256 = "082lmc30x64x583vqq00c8y0wqih3y4r0mp1c4bqq36l22qv6b6r"; + }) + + # Fix build for gnumake-4.4.1: + # https://github.com/openjdk/jdk/pull/12992 + (fetchpatch { + name = "gnumake-4.4.1"; + url = "https://github.com/openjdk/jdk/commit/9341d135b855cc208d48e47d30cd90aafa354c36.patch"; + hash = "sha256-Qcm3ZmGCOYLZcskNjj7DYR85R4v07vYvvavrVOYL8vg="; + }) + ] ++ lib.optionals (!headless && enableGnome2) [ + ./swing-use-gtk-jdk13.patch + ]; + + postPatch = '' + chmod +x configure + patchShebangs --build configure + ''; + + # JDK's build system attempts to specifically detect + # and special-case WSL, and we don't want it to do that, + # so pass the correct platform names explicitly + configurePlatforms = [ "build" "host" ]; + + + # https://openjdk.org/groups/build/doc/building.html + configureFlags = [ + "--with-boot-jdk=${openjdk-bootstrap.home}" + "--with-version-string=${version}" + "--with-vendor-version-string=(nix)" + "--enable-unlimited-crypto" + "--with-native-debug-symbols=internal" + "--with-libjpeg=system" + "--with-giflib=system" + "--with-libpng=system" + "--with-zlib=system" + "--with-lcms=system" + "--with-stdc++lib=dynamic" + ] + ++ lib.optional headless "--enable-headless-only" + ++ lib.optional (!headless && enableJavaFX) "--with-import-modules=${openjfx}"; + + separateDebugInfo = true; + + env.NIX_CFLAGS_COMPILE = "-Wno-error"; + + NIX_LDFLAGS = toString (lib.optionals (!headless) [ + "-lfontconfig" + "-lcups" + "-lXinerama" + "-lXrandr" + "-lmagic" + ] ++ lib.optionals (!headless && enableGnome2) [ + "-lgtk-3" + "-lgio-2.0" + "-lgnomevfs-2" + "-lgconf-2" + ]); + + # -j flag is explicitly rejected by the build system: + # Error: 'make -jN' is not supported, use 'make JOBS=N' + # Note: it does not make build sequential. Build system + # still runs in parallel. + enableParallelBuilding = false; + + buildFlags = [ "images" ]; + + installPhase = '' + mkdir -p $out/lib + + mv build/*/images/jdk $out/lib/openjdk + + # Remove some broken manpages. + rm -rf $out/lib/openjdk/man/ja* + + # Mirror some stuff in top-level. + mkdir -p $out/share + ln -s $out/lib/openjdk/include $out/include + ln -s $out/lib/openjdk/man $out/share/man + + # IDEs use the provided src.zip to navigate the Java codebase (https://github.com/NixOS/nixpkgs/pull/95081) + ln -s $out/lib/openjdk/lib/src.zip $out/lib/src.zip + + # jni.h expects jni_md.h to be in the header search path. + ln -s $out/include/linux/*_md.h $out/include/ + + # Remove crap from the installation. + rm -rf $out/lib/openjdk/demo + ${lib.optionalString headless '' + rm $out/lib/openjdk/lib/{libjsound,libfontmanager}.so + ''} + + ln -s $out/lib/openjdk/bin $out/bin + ''; + + preFixup = '' + # Propagate the setJavaClassPath setup hook so that any package + # that depends on the JDK has $CLASSPATH set up properly. + mkdir -p $out/nix-support + #TODO or printWords? cf https://github.com/NixOS/nixpkgs/pull/27427#issuecomment-317293040 + echo -n "${setJavaClassPath}" > $out/nix-support/propagated-build-inputs + + # Set JAVA_HOME automatically. + mkdir -p $out/nix-support + cat <<EOF > $out/nix-support/setup-hook + if [ -z "\''${JAVA_HOME-}" ]; then export JAVA_HOME=$out/lib/openjdk; fi + EOF + ''; + + postFixup = '' + # Build the set of output library directories to rpath against + LIBDIRS="" + for output in $(getAllOutputNames); do + if [ "$output" = debug ]; then continue; fi + LIBDIRS="$(find $(eval echo \$$output) -name \*.so\* -exec dirname {} \+ | sort -u | tr '\n' ':'):$LIBDIRS" + done + # Add the local library paths to remove dependencies on the bootstrap + for output in $(getAllOutputNames); do + if [ "$output" = debug ]; then continue; fi + OUTPUTDIR=$(eval echo \$$output) + BINLIBS=$(find $OUTPUTDIR/bin/ -type f; find $OUTPUTDIR -name \*.so\*) + echo "$BINLIBS" | while read i; do + patchelf --set-rpath "$LIBDIRS:$(patchelf --print-rpath "$i")" "$i" || true + patchelf --shrink-rpath "$i" || true done - ''; + done + ''; + + disallowedReferences = [ openjdk-bootstrap ]; - disallowedReferences = [ openjdk-bootstrap ]; + pos = __curPos; + meta = import ./meta.nix lib featureVersion; - pos = builtins.unsafeGetAttrPos "feature" version; - meta = import ./meta.nix lib version.feature; + passthru = { + updateScript = + let + java-json = fetchurl { + url = "https://search.maven.org/remotecontent?filepath=org/json/json/20240303/json-20240303.jar"; + hash = "sha256-PPbNaJLjLitMHDng9S9SSKL1s3ZG/fu3mma0a2GEFO0="; + }; + in + writeShellScript "update-java" '' + ${finalAttrs.finalPackage}/bin/java \ + -cp ${java-json} \ + ${./JavaUpdater.java} \ + 22 pkgs/development/compilers/openjdk/info.json + ''; - passthru = { - architecture = ""; - home = "${openjdk}/lib/openjdk"; - inherit gtk3; - }; + home = "${finalAttrs.finalPackage}/lib/openjdk"; + + inherit gtk3; }; -in -openjdk +}) diff --git a/pkgs/development/compilers/openjdk/8.nix b/pkgs/development/compilers/openjdk/8.nix index aebfceeccb784..70561d83f3088 100644 --- a/pkgs/development/compilers/openjdk/8.nix +++ b/pkgs/development/compilers/openjdk/8.nix @@ -20,7 +20,7 @@ let powerpc64le-linux = "ppc64le"; }.${stdenv.system} or (throw "Unsupported platform ${stdenv.system}"); - update = "362"; + update = "412"; build = "ga"; # when building a headless jdk, also bootstrap it with a headless jdk @@ -34,7 +34,7 @@ let owner = "openjdk"; repo = "jdk8u"; rev = "jdk${version}"; - sha256 = "sha256-C5dQwfIIpIrLeO3JWERyFCQHUSgG8gARuc3qXAeLkJ4="; + sha256 = "sha256-o+H5n5p6JG1giJj9OADgMbQPaoKMzLMFquKH536SHhM="; }; outputs = [ "out" "jre" ]; @@ -211,7 +211,7 @@ let meta = with lib; { homepage = "http://openjdk.java.net/"; license = licenses.gpl2; - description = "The open-source Java Development Kit"; + description = "Open-source Java Development Kit"; maintainers = with maintainers; [ edwtjo ]; platforms = [ "i686-linux" "x86_64-linux" "aarch64-linux" ]; mainProgram = "java"; diff --git a/pkgs/development/compilers/openjdk/JavaUpdater.java b/pkgs/development/compilers/openjdk/JavaUpdater.java new file mode 100644 index 0000000000000..32dddf2fabc7c --- /dev/null +++ b/pkgs/development/compilers/openjdk/JavaUpdater.java @@ -0,0 +1,181 @@ +import org.json.JSONArray; +import org.json.JSONObject; + +import java.io.IOException; +import java.io.PrintWriter; +import java.net.URI; +import java.net.http.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.*; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import java.util.stream.StreamSupport; + +public class JavaUpdater { + + record GitHubResult(Optional<String> latestVersion, Optional<String> next) { + } + + record JsonInfo(String repo, String version, String hash) { + public JsonInfo(JSONObject json) { + this(json.getString("repo"), json.getString("version"), json.getString("hash")); + } + + public String toJsonString(String featureVersion) { + return """ + \s "%s": { + \s "version": "%s", + \s "repo": "%s", + \s "hash": "%s" + \s }\ + """.formatted(featureVersion, version, repo, hash); + } + } + + // Parses the GitHub Link header + public static Optional<String> getNextLink(HttpHeaders headers) { + var linkHeader = headers.map().get("Link"); + if (linkHeader == null || linkHeader.isEmpty()) return null; + + var links = linkHeader.getFirst(); + var linksRegex = Pattern.compile("<(.+)>;\\s*rel=\"next\""); + return Pattern.compile(",") + .splitAsStream(links) + .map(x -> linksRegex.matcher(x).results() + .map(g -> g.group(1)) + .findFirst() + ) + .filter(Optional::isPresent) + .map(Optional::orElseThrow) + .findFirst(); + } + + // HTTP request helper, sets GITHUB_TOKEN if present + private static HttpRequest NewGithubRequest(String url) { + var token = System.getenv().get("GITHUB_TOKEN"); + var builder = HttpRequest.newBuilder() + .uri(URI.create(url)); + if (token != null) + builder.setHeader("Authorization", "Bearer " + token); + return builder.build(); + } + + private static GitHubResult getLatestTag(String url) { + var request = NewGithubRequest(url); + + var response = + HttpClient.newHttpClient().sendAsync(request, HttpResponse.BodyHandlers.ofString()) + .join(); + + var json = new JSONArray(response.body()); + + Optional<String> version = StreamSupport.stream(json.spliterator(), false) + .map(JSONObject.class::cast) + .map(x -> x.getString("name").replaceFirst("jdk-", "")) + .filter(x -> x.contains("-ga")) + .max(Comparator.comparing(Runtime.Version::parse)); + + return new GitHubResult(version, getNextLink(response.headers())); + } + + public String findNewerVersion() { + var url = Optional.of("https://api.github.com/repos/openjdk/" + getRepo() + "/tags?per_page=100"); + String version = getCurrentVersion(); + do { + GitHubResult response = getLatestTag(url.orElseThrow()); + if (response.latestVersion.isPresent() && response.latestVersion.orElseThrow().equals(version)) { + return null; + } + + String latestVersion = Stream.of(version, response.latestVersion.orElse(version)) + .max(Comparator.comparing(Runtime.Version::parse)).orElseThrow(); + + if (latestVersion != version) + return latestVersion; + + url = response.next; + } while (url.isPresent()); + return null; + } + + + private static String prettyPrint(JSONObject json) { + + Iterable<String> iterable = () -> json.keys(); + + return StreamSupport + .stream(iterable.spliterator(), false) + .sorted(Comparator.reverseOrder()) + .map(majorVersion -> (new JsonInfo(json.getJSONObject(majorVersion))).toJsonString(majorVersion)) + .collect( + Collectors.joining(",\n", "{\n", "\n}") + ); + } + + public void updateJsonInfo(String newVersion) { + try { + JSONObject json = getJsonInfo(); + var info = json.getJSONObject(featureNumber); + info.put("version", newVersion); + info.put("hash", nixHash(newVersion)); + + try (PrintWriter out = new PrintWriter(infoJsonPath)) { + out.println(prettyPrint(json)); + } + + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + private String nixHash(String version) { + try { + var process = new ProcessBuilder("nix", "flake", "prefetch", + "--extra-experimental-features", "'nix-command flakes'", + "--json", "github:openjdk/" + getRepo() + "/jdk-" + version).start(); + + var json = new JSONObject(new String(process.getInputStream().readAllBytes())); + process.waitFor(); + return json.getString("hash"); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + private final String featureNumber; + private final String infoJsonPath; + private final JSONObject jsonInfo; + + public String getCurrentVersion() { + return this.jsonInfo.getJSONObject(this.featureNumber).getString("version"); + } + + public String getRepo() { + return this.jsonInfo.getJSONObject(this.featureNumber).getString("repo"); + } + + public JSONObject getJsonInfo() { + try { + String infoStr = Files.readString(Path.of(this.infoJsonPath)); + return new JSONObject(infoStr); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public JavaUpdater(String featureNumber, String infoJsonPath) { + this.featureNumber = featureNumber; + this.infoJsonPath = infoJsonPath; + this.jsonInfo = getJsonInfo(); + } + + public static void main(String[] args) { + var updater = new JavaUpdater(args[0], args[1]); + String newerVersion = updater.findNewerVersion(); + if (newerVersion != null) { + updater.updateJsonInfo(newerVersion); + } + } +} diff --git a/pkgs/development/compilers/openjdk/info.json b/pkgs/development/compilers/openjdk/info.json new file mode 100644 index 0000000000000..c8f88d7280e4e --- /dev/null +++ b/pkgs/development/compilers/openjdk/info.json @@ -0,0 +1,12 @@ +{ + "22": { + "version": "22-ga", + "repo": "jdk22u", + "hash": "sha256-itjvIedPwJl/l3a2gIVpNMs1zkbrjioVqbCj1Z1nCJE=" + }, + "21": { + "version": "21.0.3-ga", + "repo": "jdk21u", + "hash": "sha256-zRN16lrc5gtDlTVIQJRRx103w/VbRkatCLeEc9AXWPE=" + } +} diff --git a/pkgs/development/compilers/openjdk/meta.nix b/pkgs/development/compilers/openjdk/meta.nix index 74383ddef783d..04ed684eefab5 100644 --- a/pkgs/development/compilers/openjdk/meta.nix +++ b/pkgs/development/compilers/openjdk/meta.nix @@ -1,11 +1,11 @@ lib: version: with lib; { homepage = "https://openjdk.java.net/"; license = licenses.gpl2Only; - description = "The open-source Java Development Kit"; - maintainers = with maintainers; [ edwtjo ]; + description = "Open-source Java Development Kit"; + maintainers = with maintainers; [ edwtjo infinidoge ]; platforms = [ "i686-linux" "x86_64-linux" "aarch64-linux" "armv7l-linux" "armv6l-linux" "powerpc64le-linux" ]; mainProgram = "java"; - knownVulnerabilities = optionals (builtins.elem (versions.major version) [ "12" "13" "14" "15" "16" "18" ]) [ + knownVulnerabilities = optionals (builtins.elem (versions.major version) [ "12" "13" "14" "15" "16" "18" "19" "20" ]) [ "This OpenJDK version has reached its end of life." ]; } diff --git a/pkgs/development/compilers/openjdk/openjfx/11.nix b/pkgs/development/compilers/openjdk/openjfx/11.nix index 424c41ce3c783..22b844bb1d67c 100644 --- a/pkgs/development/compilers/openjdk/openjfx/11.nix +++ b/pkgs/development/compilers/openjdk/openjfx/11.nix @@ -7,7 +7,7 @@ let major = "11"; - update = ".0.18"; + update = ".0.20"; build = "1"; repover = "${major}${update}+${build}"; gradle_ = (gradle_7.override { @@ -31,7 +31,7 @@ let owner = "openjdk"; repo = "jfx${major}u"; rev = repover; - sha256 = "sha256-46DjIzcBHkmp5vnhYnLu78CG72bIBRM4A6mgk2OLOko="; + sha256 = "sha256-BbBP2DiPZTSn1SBYMCgyiNdF9GD+NqR6YjeVNOQHHn4="; }; buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsa-lib ffmpeg_4-headless ]; @@ -129,7 +129,7 @@ in makePackage { meta = with lib; { homepage = "http://openjdk.java.net/projects/openjfx/"; license = licenses.gpl2; - description = "The next-generation Java client toolkit"; + description = "Next-generation Java client toolkit"; maintainers = with maintainers; [ abbradar ]; platforms = [ "x86_64-linux" ]; }; diff --git a/pkgs/development/compilers/openjdk/openjfx/15.nix b/pkgs/development/compilers/openjdk/openjfx/15.nix index 1fb48f460d2fd..77c8e4678d6c9 100644 --- a/pkgs/development/compilers/openjdk/openjfx/15.nix +++ b/pkgs/development/compilers/openjdk/openjfx/15.nix @@ -119,7 +119,7 @@ in makePackage { meta = with lib; { homepage = "http://openjdk.java.net/projects/openjfx/"; license = licenses.gpl2; - description = "The next-generation Java client toolkit"; + description = "Next-generation Java client toolkit"; maintainers = with maintainers; [ abbradar ]; knownVulnerabilities = [ "This OpenJFX version has reached its end of life." diff --git a/pkgs/development/compilers/openjdk/openjfx/17.nix b/pkgs/development/compilers/openjdk/openjfx/17.nix index c5d6c6aaa597e..00fa6af725e5b 100644 --- a/pkgs/development/compilers/openjdk/openjfx/17.nix +++ b/pkgs/development/compilers/openjdk/openjfx/17.nix @@ -7,8 +7,8 @@ let major = "17"; - update = ".0.6"; - build = "+3"; + update = ".0.11"; + build = "-ga"; repover = "${major}${update}${build}"; gradle_ = (gradle_7.override { java = openjdk17_headless; @@ -31,7 +31,7 @@ let owner = "openjdk"; repo = "jfx${major}u"; rev = repover; - sha256 = "sha256-9VfXk2EfMebMyVKPohPRP2QXRFf8XemUtfY0JtBCHyw="; + sha256 = "sha256-WV8NHlYlt7buGbirLSorLnS2TnyBD17zUquFfwSL3xE="; }; buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsa-lib ffmpeg_4-headless ]; @@ -121,7 +121,7 @@ in makePackage { meta = with lib; { homepage = "http://openjdk.java.net/projects/openjfx/"; license = licenses.gpl2; - description = "The next-generation Java client toolkit"; + description = "Next-generation Java client toolkit"; maintainers = with maintainers; [ abbradar ]; platforms = platforms.unix; }; diff --git a/pkgs/development/compilers/openjdk/openjfx/19.nix b/pkgs/development/compilers/openjdk/openjfx/19.nix index 6f173db8327c1..38720efaba545 100644 --- a/pkgs/development/compilers/openjdk/openjfx/19.nix +++ b/pkgs/development/compilers/openjdk/openjfx/19.nix @@ -138,8 +138,11 @@ in makePackage { meta = with lib; { homepage = "https://openjdk.org/projects/openjfx/"; license = licenses.gpl2Classpath; - description = "The next-generation Java client toolkit"; + description = "Next-generation Java client toolkit"; maintainers = with maintainers; [ abbradar ]; platforms = platforms.unix; + knownVulnerabilities = [ + "This OpenJFX version has reached its end of life." + ]; }; } diff --git a/pkgs/development/compilers/openjdk/openjfx/20.nix b/pkgs/development/compilers/openjdk/openjfx/20.nix index 794590dc7e606..0aa7b262e834e 100644 --- a/pkgs/development/compilers/openjdk/openjfx/20.nix +++ b/pkgs/development/compilers/openjdk/openjfx/20.nix @@ -1,5 +1,5 @@ -{ stdenv, lib, fetchFromGitHub, fetchpatch, writeText, openjdk17_headless -, openjdk19_headless, gradle_7, pkg-config, perl, cmake, gperf, gtk2, gtk3, libXtst +{ stdenv, lib, fetchFromGitHub, writeText, openjdk17_headless +, openjdk20_headless, gradle_7, pkg-config, perl, cmake, gperf, gtk2, gtk3, libXtst , libXxf86vm, glib, alsa-lib, ffmpeg_4, python3, ruby, fetchurl, runCommand , withMedia ? true , withWebKit ? false @@ -7,8 +7,8 @@ let major = "20"; - update = ""; - build = "+19"; + update = ".0.2"; + build = "-ga"; repover = "${major}${update}${build}"; gradle_ = (gradle_7.override { # note: gradle does not yet support running on 19 @@ -30,9 +30,9 @@ let src = fetchFromGitHub { owner = "openjdk"; - repo = "jfx"; + repo = "jfx20u"; rev = repover; - hash = "sha256-QPPJyl6+XU+m5xqYOFtQKJNNrovqy7ngNE/e7kiEJVU="; + hash = "sha256-3Hhz4i8fPU2yowb4roylCXzuO9HkW7ZWF9TMA3HIH9o="; }; buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsa-lib ffmpeg_4 ]; @@ -49,7 +49,7 @@ let config = writeText "gradle.properties" ('' CONF = Release - JDK_HOME = ${openjdk19_headless.home} + JDK_HOME = ${openjdk20_headless.home} '' + args.gradleProperties or ""); buildPhase = '' @@ -111,22 +111,25 @@ in makePackage { postFixup = '' # Remove references to bootstrap. - export openjdkOutPath='${openjdk19_headless.outPath}' + export openjdkOutPath='${openjdk20_headless.outPath}' find "$out" -name \*.so | while read lib; do new_refs="$(patchelf --print-rpath "$lib" | perl -pe 's,:?\Q$ENV{openjdkOutPath}\E[^:]*,,')" patchelf --set-rpath "$new_refs" "$lib" done ''; - disallowedReferences = [ openjdk17_headless openjdk19_headless ]; + disallowedReferences = [ openjdk17_headless openjdk20_headless ]; passthru.deps = deps; meta = with lib; { homepage = "https://openjdk.org/projects/openjfx/"; license = licenses.gpl2Classpath; - description = "The next-generation Java client toolkit"; + description = "Next-generation Java client toolkit"; maintainers = with maintainers; [ abbradar ]; platforms = platforms.unix; + knownVulnerabilities = [ + "This OpenJFX version has reached its end of life." + ]; }; } diff --git a/pkgs/development/compilers/openjdk/openjfx/21.nix b/pkgs/development/compilers/openjdk/openjfx/21.nix index f49dbe3b0e985..d4092a99f363c 100644 --- a/pkgs/development/compilers/openjdk/openjfx/21.nix +++ b/pkgs/development/compilers/openjdk/openjfx/21.nix @@ -1,5 +1,5 @@ -{ stdenv, lib, fetchFromGitHub, fetchpatch, writeText, openjdk17_headless -, openjdk19_headless, gradle_7, pkg-config, perl, cmake, gperf, gtk2, gtk3, libXtst +{ stdenv, lib, fetchFromGitHub, writeText, openjdk17_headless +, openjdk21_headless, gradle_7, pkg-config, perl, cmake, gperf, gtk2, gtk3, libXtst , libXxf86vm, glib, alsa-lib, ffmpeg_4, python3, ruby, fetchurl, runCommand , withMedia ? true , withWebKit ? false @@ -49,7 +49,7 @@ let config = writeText "gradle.properties" ('' CONF = Release - JDK_HOME = ${openjdk19_headless.home} + JDK_HOME = ${openjdk21_headless.home} '' + args.gradleProperties or ""); buildPhase = '' @@ -111,21 +111,21 @@ in makePackage { postFixup = '' # Remove references to bootstrap. - export openjdkOutPath='${openjdk19_headless.outPath}' + export openjdkOutPath='${openjdk21_headless.outPath}' find "$out" -name \*.so | while read lib; do new_refs="$(patchelf --print-rpath "$lib" | perl -pe 's,:?\Q$ENV{openjdkOutPath}\E[^:]*,,')" patchelf --set-rpath "$new_refs" "$lib" done ''; - disallowedReferences = [ openjdk17_headless openjdk19_headless ]; + disallowedReferences = [ openjdk17_headless openjdk21_headless ]; passthru.deps = deps; meta = with lib; { homepage = "https://openjdk.org/projects/openjfx/"; license = licenses.gpl2Classpath; - description = "The next-generation Java client toolkit"; + description = "Next-generation Java client toolkit"; maintainers = with maintainers; [ abbradar ]; platforms = platforms.unix; }; diff --git a/pkgs/development/compilers/openjdk/openjfx/22.nix b/pkgs/development/compilers/openjdk/openjfx/22.nix index d585dbdf01413..c34ff04668954 100644 --- a/pkgs/development/compilers/openjdk/openjfx/22.nix +++ b/pkgs/development/compilers/openjdk/openjfx/22.nix @@ -1,7 +1,6 @@ { stdenv , lib , fetchFromGitHub -, fetchpatch , fetchurl , runCommand , writeText @@ -26,8 +25,8 @@ let major = "22"; - update = ""; - build = "+30"; + update = ".0.1"; + build = "-ga"; repover = "${major}${update}${build}"; icuVersionWithSep = s: "73${s}1"; @@ -45,9 +44,9 @@ let src = fetchFromGitHub { owner = "openjdk"; - repo = "jfx"; + repo = "jfx22u"; rev = repover; - hash = "sha256-sZF7ZPC0kgTTxWgtkxmGtOlfroGPGVZcMw0/wSTJUxQ="; + hash = "sha256-VoEufSO+LciUCvoAM86MG1iMjCA3FSb60Ik4OP2Rk/Q="; }; buildInputs = [ gtk2 gtk3 libXtst libXxf86vm glib alsa-lib ffmpeg_4 ]; @@ -131,7 +130,7 @@ makePackage { meta = with lib; { homepage = "https://openjdk.org/projects/openjfx/"; license = licenses.gpl2Classpath; - description = "The next-generation Java client toolkit"; + description = "Next-generation Java client toolkit"; maintainers = with maintainers; [ abbradar ]; platforms = platforms.unix; }; diff --git a/pkgs/development/compilers/opensmalltalk-vm/default.nix b/pkgs/development/compilers/opensmalltalk-vm/default.nix index a049e3e8abecf..ef238ebaf306f 100644 --- a/pkgs/development/compilers/opensmalltalk-vm/default.nix +++ b/pkgs/development/compilers/opensmalltalk-vm/default.nix @@ -103,7 +103,7 @@ let ''; meta = { - description = "The cross-platform virtual machine for Squeak, Pharo, Cuis, and Newspeak."; + description = "Cross-platform virtual machine for Squeak, Pharo, Cuis, and Newspeak"; mainProgram = scriptName; homepage = "https://opensmalltalk.org/"; license = with lib.licenses; [ mit ]; diff --git a/pkgs/development/compilers/ophis/default.nix b/pkgs/development/compilers/ophis/default.nix index 0eebdce820ee1..e1945c9b28023 100644 --- a/pkgs/development/compilers/ophis/default.nix +++ b/pkgs/development/compilers/ophis/default.nix @@ -15,7 +15,7 @@ buildPythonApplication rec { meta = with lib; { homepage = "http://michaelcmartin.github.io/Ophis/"; - description = "A cross-assembler for the 6502 series of microprocessors"; + description = "Cross-assembler for the 6502 series of microprocessors"; mainProgram = "ophis"; longDescription = '' Ophis is an assembler for the 6502 microprocessor - the famous chip used diff --git a/pkgs/development/compilers/orc/default.nix b/pkgs/development/compilers/orc/default.nix index 07bee8ecd2786..fbd808184156d 100644 --- a/pkgs/development/compilers/orc/default.nix +++ b/pkgs/development/compilers/orc/default.nix @@ -53,13 +53,13 @@ in stdenv.mkDerivation rec { }; meta = with lib; { - description = "The Oil Runtime Compiler"; + description = "Oil Runtime Compiler"; homepage = "https://gstreamer.freedesktop.org/projects/orc.html"; changelog = "https://cgit.freedesktop.org/gstreamer/orc/plain/RELEASE?h=${version}"; # The source code implementing the Marsenne Twister algorithm is licensed # under the 3-clause BSD license. The rest is 2-clause BSD license. license = with licenses; [ bsd3 bsd2 ]; platforms = platforms.unix; - maintainers = [ ]; + maintainers = with maintainers; [ lilyinstarlight ]; }; } diff --git a/pkgs/development/compilers/osl/default.nix b/pkgs/development/compilers/osl/default.nix index c9c849f0a68a3..b7ad7537c7e12 100644 --- a/pkgs/development/compilers/osl/default.nix +++ b/pkgs/development/compilers/osl/default.nix @@ -24,13 +24,13 @@ let in stdenv.mkDerivation rec { pname = "openshadinglanguage"; - version = "1.13.8.0"; + version = "1.13.10.0"; src = fetchFromGitHub { owner = "AcademySoftwareFoundation"; repo = "OpenShadingLanguage"; rev = "v${version}"; - hash = "sha256-AixN3cj6r/PUGvAhVN4wGfpuLiBt5LglgJp68hFfJMo="; + hash = "sha256-tjfg9cGbfL0D+KcxtWgQF6gY9sCjxEjyGNxFZyPhJ/U="; }; cmakeFlags = [ diff --git a/pkgs/development/compilers/owl-lisp/default.nix b/pkgs/development/compilers/owl-lisp/default.nix index 7631ca8b083c2..e7bef0e815067 100644 --- a/pkgs/development/compilers/owl-lisp/default.nix +++ b/pkgs/development/compilers/owl-lisp/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { doCheck = false; meta = with lib; { - description = "A functional Scheme for world domination"; + description = "Functional Scheme for world domination"; homepage = "https://gitlab.com/owl-lisp/owl"; license = licenses.mit; maintainers = with maintainers; [ peterhoeg ]; diff --git a/pkgs/development/compilers/paco/default.nix b/pkgs/development/compilers/paco/default.nix index 195a67da023ab..8fa27994ec3d8 100644 --- a/pkgs/development/compilers/paco/default.nix +++ b/pkgs/development/compilers/paco/default.nix @@ -26,7 +26,7 @@ buildGoModule rec { ldflags = [ "-s" "-w" ]; meta = with lib; { - description = "A simple compiled programming language"; + description = "Simple compiled programming language"; mainProgram = "paco"; homepage = "https://github.com/pacolang/paco"; license = licenses.mit; diff --git a/pkgs/development/compilers/pakcs/default.nix b/pkgs/development/compilers/pakcs/default.nix index 42b2e208c1d49..768d125cfff47 100644 --- a/pkgs/development/compilers/pakcs/default.nix +++ b/pkgs/development/compilers/pakcs/default.nix @@ -74,7 +74,7 @@ in stdenv.mkDerivation { meta = with lib; { homepage = "http://www.informatik.uni-kiel.de/~pakcs/"; - description = "An implementation of the multi-paradigm declarative language Curry"; + description = "Implementation of the multi-paradigm declarative language Curry"; license = licenses.bsd3; longDescription = '' diff --git a/pkgs/development/compilers/passerine/default.nix b/pkgs/development/compilers/passerine/default.nix index 8583566573264..990d6ff078b2d 100644 --- a/pkgs/development/compilers/passerine/default.nix +++ b/pkgs/development/compilers/passerine/default.nix @@ -14,7 +14,7 @@ rustPlatform.buildRustPackage rec { cargoHash = "sha256-A+sOT0rloAktDdVXe2HEPK25euh9T7c0rXybZmZpqC0="; meta = with lib; { - description = "A small extensible programming language designed for concise expression with little code"; + description = "Small extensible programming language designed for concise expression with little code"; mainProgram = "passerine"; homepage = "https://www.passerine.io/"; license = licenses.mit; diff --git a/pkgs/development/compilers/purescript/psc-package/default.nix b/pkgs/development/compilers/purescript/psc-package/default.nix index 2d66319385468..425281ef38762 100644 --- a/pkgs/development/compilers/purescript/psc-package/default.nix +++ b/pkgs/development/compilers/purescript/psc-package/default.nix @@ -51,7 +51,7 @@ stdenv.mkDerivation rec { ''; meta = with lib; { - description = "A package manager for PureScript based on package sets"; + description = "Package manager for PureScript based on package sets"; mainProgram = "psc-package"; license = licenses.bsd3; maintainers = with maintainers; [ ]; diff --git a/pkgs/development/compilers/purescript/purescript/default.nix b/pkgs/development/compilers/purescript/purescript/default.nix index cbb938b28b964..61a8c3a5c5bd8 100644 --- a/pkgs/development/compilers/purescript/purescript/default.nix +++ b/pkgs/development/compilers/purescript/purescript/default.nix @@ -18,26 +18,29 @@ in stdenv.mkDerivation rec { version = "0.15.15"; # These hashes can be updated automatically by running the ./update.sh script. - src = - if stdenv.isDarwin - then - (if stdenv.isAarch64 - then - fetchurl { - url = "https://github.com/${pname}/${pname}/releases/download/v${version}/macos-arm64.tar.gz"; - sha256 = "0bi231z1yhb7kjfn228wjkj6rv9lgpagz9f4djr2wy3kqgck4xg0"; - } - else - fetchurl { - url = "https://github.com/${pname}/${pname}/releases/download/v${version}/macos.tar.gz"; + src = let + url = "https://github.com/${pname}/${pname}/releases/download/v${version}/"; + sources = { + "x86_64-linux" = fetchurl { + url = url + "linux64.tar.gz"; + sha256 = "1w4jgjpfhaw3gkx9sna64lq9m030x49w4lwk01ik5ci0933imzj3"; + }; + "aarch64-linux" = fetchurl { + url = url + "linux-arm64.tar.gz"; + sha256 = "1ws5h337xq0l06zrs9010h6wj2hq5cqk5ikp9arq7hj7lxf43vn5"; + }; + "x86_64-darwin" = fetchurl { + url = url + "macos.tar.gz"; sha256 = "178ix54k2yragcgn0j8z1cfa78s1qbh1bsx3v9jnngby8igr6yn3"; - }) - else - fetchurl { - url = "https://github.com/${pname}/${pname}/releases/download/v${version}/linux64.tar.gz"; - sha256 = "1w4jgjpfhaw3gkx9sna64lq9m030x49w4lwk01ik5ci0933imzj3"; + }; + "aarch64-darwin" = fetchurl { + url = url + "macos-arm64.tar.gz"; + sha256 = "0bi231z1yhb7kjfn228wjkj6rv9lgpagz9f4djr2wy3kqgck4xg0"; + }; }; - + in + sources.${stdenv.hostPlatform.system} + or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); buildInputs = [ zlib gmp ]; libPath = lib.makeLibraryPath buildInputs; @@ -49,7 +52,7 @@ in stdenv.mkDerivation rec { install -D -m555 -T purs $PURS ${patchelf libPath} - + '' + lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' mkdir -p $out/share/bash-completion/completions $PURS --bash-completion-script $PURS > $out/share/bash-completion/completions/purs-completion.bash ''; @@ -62,12 +65,12 @@ in stdenv.mkDerivation rec { }; meta = with lib; { - description = "A strongly-typed functional programming language that compiles to JavaScript"; + description = "Strongly-typed functional programming language that compiles to JavaScript"; homepage = "https://www.purescript.org/"; license = licenses.bsd3; sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; maintainers = with maintainers; [ justinwoo mbbx6spp cdepillabout ]; - platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" ]; + platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; mainProgram = "purs"; changelog = "https://github.com/purescript/purescript/releases/tag/v${version}"; }; diff --git a/pkgs/development/compilers/purescript/purescript/update.sh b/pkgs/development/compilers/purescript/purescript/update.sh index 259fb8aa56107..186a51a2bca3a 100755 --- a/pkgs/development/compilers/purescript/purescript/update.sh +++ b/pkgs/development/compilers/purescript/purescript/update.sh @@ -25,6 +25,10 @@ old_linux_version_hash="$(nix-prefetch-url "https://github.com/purescript/puresc echo "v${old_version} linux tarball hash (current version): $old_linux_version_hash" new_linux_version_hash="$(nix-prefetch-url "https://github.com/purescript/purescript/releases/download/v${new_version}/linux64.tar.gz")" echo "v${new_version} linux tarball hash: $new_linux_version_hash" +old_linux_arm_version_hash="$(nix-prefetch-url "https://github.com/purescript/purescript/releases/download/v${old_version}/linux-arm64.tar.gz")" +echo "v${old_version} linux tarball hash (current version): $old_linux_arm_version_hash" +new_linux_arm_version_hash="$(nix-prefetch-url "https://github.com/purescript/purescript/releases/download/v${new_version}/linux-arm64.tar.gz")" +echo "v${new_version} linux tarball hash: $new_linux_arm_version_hash" old_darwin_version_hash="$(nix-prefetch-url "https://github.com/purescript/purescript/releases/download/v${old_version}/macos.tar.gz")" echo "v${old_version} darwin tarball hash (current version): $old_darwin_version_hash" new_darwin_version_hash="$(nix-prefetch-url "https://github.com/purescript/purescript/releases/download/v${new_version}/macos.tar.gz")" @@ -37,6 +41,7 @@ echo echo "Replacing version and hashes in ${purescript_derivation_file}." sed -i -e "s/${old_linux_version_hash}/${new_linux_version_hash}/" "$purescript_derivation_file" +sed -i -e "s/${old_linux_arm_version_hash}/${new_linux_arm_version_hash}/" "$purescript_derivation_file" sed -i -e "s/${old_darwin_version_hash}/${new_darwin_version_hash}/" "$purescript_derivation_file" sed -i -e "s/${old_darwin_arm_version_hash}/${new_darwin_arm_version_hash}/" "$purescript_derivation_file" sed -i -e "s/${old_version}/${new_version}/" "$purescript_derivation_file" diff --git a/pkgs/development/compilers/qbe/default.nix b/pkgs/development/compilers/qbe/default.nix index 00c91e2671ecd..f37de57b535e5 100644 --- a/pkgs/development/compilers/qbe/default.nix +++ b/pkgs/development/compilers/qbe/default.nix @@ -33,7 +33,7 @@ stdenv.mkDerivation (finalAttrs: { meta = with lib; { homepage = "https://c9x.me/compile/"; - description = "A small compiler backend written in C"; + description = "Small compiler backend written in C"; maintainers = with maintainers; [ fgaz ]; license = licenses.mit; platforms = platforms.all; diff --git a/pkgs/development/compilers/rasm/default.nix b/pkgs/development/compilers/rasm/default.nix deleted file mode 100644 index 3246e014145fd..0000000000000 --- a/pkgs/development/compilers/rasm/default.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ lib, stdenv, fetchurl, unzip }: - -stdenv.mkDerivation rec { - pname = "rasm"; - version = "0.117"; - - src = fetchurl { - url = "http://www.roudoudou.com/export/cpc/rasm/${pname}_v0117_src.zip"; - sha256 = "1hwily4cfays59qm7qd1ax48i7cpbxhs5l9mfpyn7m2lxsfqrl3z"; - }; - - sourceRoot = "."; - - nativeBuildInputs = [ unzip ]; - - buildPhase = '' - # according to official documentation - ${stdenv.cc.targetPrefix}cc rasm_v*.c -O2 -lm -o rasm - ''; - - installPhase = '' - install -Dt $out/bin rasm - ''; - - meta = with lib; { - homepage = "http://www.roudoudou.com/rasm/"; - description = "Z80 assembler"; - mainProgram = "rasm"; - # use -n option to display all licenses - license = licenses.mit; # expat version - maintainers = [ ]; - platforms = platforms.all; - }; -} diff --git a/pkgs/development/compilers/reason/tests/hello/default.nix b/pkgs/development/compilers/reason/tests/hello/default.nix index 3def42ec08f78..831b528c6ba95 100644 --- a/pkgs/development/compilers/reason/tests/hello/default.nix +++ b/pkgs/development/compilers/reason/tests/hello/default.nix @@ -1,10 +1,18 @@ -{ buildDunePackage, ppxlib, reason }: +{ lib, buildDunePackage, ppxlib, reason }: buildDunePackage rec { pname = "helloreason"; version = "0.0.1"; - src = ./.; + src = lib.fileset.toSource { + root = ./.; + fileset = lib.fileset.unions [ + ./helloreason.opam + ./helloreason.re + ./dune-project + ./dune + ]; + }; nativeBuildInputs = [ reason diff --git a/pkgs/development/compilers/rgbds/default.nix b/pkgs/development/compilers/rgbds/default.nix index 7cec0eb0ddbb8..89e68ece7e6b6 100644 --- a/pkgs/development/compilers/rgbds/default.nix +++ b/pkgs/development/compilers/rgbds/default.nix @@ -2,21 +2,24 @@ stdenv.mkDerivation rec { pname = "rgbds"; - version = "0.6.1"; + version = "0.7.0"; src = fetchFromGitHub { owner = "gbdev"; repo = "rgbds"; rev = "v${version}"; - sha256 = "sha256-3mx4yymrOQnP5aJCzPWl5G96WBxt1ixU6tdzhhOsF04="; + hash = "sha256-aktKJlwXpHpjSFxoz5wZJPGWZIcn4ax5iBP0GQEux78="; }; nativeBuildInputs = [ bison flex pkg-config ]; buildInputs = [ libpng ]; + postPatch = '' + patchShebangs --host src/bison.sh + ''; env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-fno-lto"; installFlags = [ "PREFIX=${placeholder "out"}" ]; meta = with lib; { homepage = "https://rgbds.gbdev.io/"; - description = "A free assembler/linker package for the Game Boy and Game Boy Color"; + description = "Free assembler/linker package for the Game Boy and Game Boy Color"; license = licenses.mit; longDescription = ''RGBDS (Rednex Game Boy Development System) is a free assembler/linker package for the Game Boy and Game Boy Color. It consists of: diff --git a/pkgs/development/compilers/rust/1_77.nix b/pkgs/development/compilers/rust/1_77.nix deleted file mode 100644 index 24c1b7bcb534f..0000000000000 --- a/pkgs/development/compilers/rust/1_77.nix +++ /dev/null @@ -1,59 +0,0 @@ -# New rust versions should first go to staging. -# Things to check after updating: -# 1. Rustc should produce rust binaries on x86_64-linux, aarch64-linux and x86_64-darwin: -# i.e. nix-shell -p fd or @GrahamcOfBorg build fd on github -# This testing can be also done by other volunteers as part of the pull -# request review, in case platforms cannot be covered. -# 2. The LLVM version used for building should match with rust upstream. -# Check the version number in the src/llvm-project git submodule in: -# https://github.com/rust-lang/rust/blob/<version-tag>/.gitmodules -# 3. Firefox and Thunderbird should still build on x86_64-linux. - -{ stdenv, lib -, newScope, callPackage -, CoreFoundation, Security, SystemConfiguration -, pkgsBuildTarget, pkgsBuildBuild, pkgsBuildHost, pkgsTargetTarget -, makeRustPlatform -, wrapRustcWith -, llvmPackages_17, llvm_17 -} @ args: - -import ./default.nix { - rustcVersion = "1.77.1"; - rustcSha256 = "7hBuTFafUtujtbKCsQWCD4a9j2s9CcBrjc6C+xuzpKE="; - - llvmSharedForBuild = pkgsBuildBuild.llvmPackages_17.libllvm.override { enableSharedLibraries = true; }; - llvmSharedForHost = pkgsBuildHost.llvmPackages_17.libllvm.override { enableSharedLibraries = true; }; - llvmSharedForTarget = pkgsBuildTarget.llvmPackages_17.libllvm.override { enableSharedLibraries = true; }; - - # For use at runtime - llvmShared = llvm_17.override { enableSharedLibraries = true; }; - - # Expose llvmPackages used for rustc from rustc via passthru for LTO in Firefox - llvmPackages = llvmPackages_17; - - # Note: the version MUST be one version prior to the version we're - # building - bootstrapVersion = "1.76.0"; - - # fetch hashes by running `print-hashes.sh ${bootstrapVersion}` - bootstrapHashes = { - i686-unknown-linux-gnu = "4c3eefc9341b8809235e6c4fbcbc19ab52a5cbe771292c400df068c12984fa3e"; - x86_64-unknown-linux-gnu = "9d589d2036b503cc45ecc94992d616fb3deec074deb36cacc2f5c212408f7399"; - x86_64-unknown-linux-musl = "aa8568f4d262468aaf4f622bd421c5435b24454d8fbcdae48da1162962205384"; - arm-unknown-linux-gnueabihf = "7d1da067362fc64bcad198d90a61e024d5712aed76e17b28e1cd7e8ba263cc6f"; - armv7-unknown-linux-gnueabihf = "c03346d56d4a860cd3a8d2d2a7ea75c510b68204e3ad97b3770076595261c913"; - aarch64-unknown-linux-gnu = "2e8313421e8fb673efdf356cdfdd4bc16516f2610d4f6faa01327983104c05a0"; - aarch64-unknown-linux-musl = "a1d1c8ccb8ea00cfa2b79d80411b8eb22b2bef5214f86536825361e98d7c617a"; - x86_64-apple-darwin = "7bdbe085695df8e46389115e99eda7beed37a9494f6b961b45554c658e53b8e7"; - aarch64-apple-darwin = "17496f15c3cb6ff73d5c36f5b54cc110f1ac31fa09521a7991c0d7ddd890dceb"; - powerpc64le-unknown-linux-gnu = "44b3494675284d26b04747a824dc974e32fd8fd46fc0aa06a7c8ebe851332d2c"; - riscv64gc-unknown-linux-gnu = "4a9db321874fc441235b71eb8aa295fc50251305e461540b25b4eef89fb56255"; - }; - - selectRustPackage = pkgs: pkgs.rust_1_77; - - rustcPatches = [ ]; -} - -(builtins.removeAttrs args [ "llvmPackages_17" "llvm_17"]) diff --git a/pkgs/development/compilers/rust/1_78.nix b/pkgs/development/compilers/rust/1_78.nix new file mode 100644 index 0000000000000..3ce368e8d99fb --- /dev/null +++ b/pkgs/development/compilers/rust/1_78.nix @@ -0,0 +1,59 @@ +# New rust versions should first go to staging. +# Things to check after updating: +# 1. Rustc should produce rust binaries on x86_64-linux, aarch64-linux and x86_64-darwin: +# i.e. nix-shell -p fd or @GrahamcOfBorg build fd on github +# This testing can be also done by other volunteers as part of the pull +# request review, in case platforms cannot be covered. +# 2. The LLVM version used for building should match with rust upstream. +# Check the version number in the src/llvm-project git submodule in: +# https://github.com/rust-lang/rust/blob/<version-tag>/.gitmodules +# 3. Firefox and Thunderbird should still build on x86_64-linux. + +{ stdenv, lib +, newScope, callPackage +, CoreFoundation, Security, SystemConfiguration +, pkgsBuildTarget, pkgsBuildBuild, pkgsBuildHost, pkgsTargetTarget +, makeRustPlatform +, wrapRustcWith +, llvmPackages_18, llvm_18 +} @ args: + +import ./default.nix { + rustcVersion = "1.78.0"; + rustcSha256 = "/1RII6XLJ/JzgShXfx5+AO6PTIPyo0h4GuT8NV6R1ak="; + + llvmSharedForBuild = pkgsBuildBuild.llvmPackages_18.libllvm.override { enableSharedLibraries = true; }; + llvmSharedForHost = pkgsBuildHost.llvmPackages_18.libllvm.override { enableSharedLibraries = true; }; + llvmSharedForTarget = pkgsBuildTarget.llvmPackages_18.libllvm.override { enableSharedLibraries = true; }; + + # For use at runtime + llvmShared = llvm_18.override { enableSharedLibraries = true; }; + + # Expose llvmPackages used for rustc from rustc via passthru for LTO in Firefox + llvmPackages = llvmPackages_18; + + # Note: the version MUST be one version prior to the version we're + # building + bootstrapVersion = "1.77.2"; + + # fetch hashes by running `print-hashes.sh ${bootstrapVersion}` + bootstrapHashes = { + i686-unknown-linux-gnu = "168e653fbc30b3a80801bc7735a79ff644651618434234959925f669bf77d1a2"; + x86_64-unknown-linux-gnu = "b7d12b1b162c36c1fd5234b4b16856aa7eafca91d17c49787f6487cb26f4062d"; + x86_64-unknown-linux-musl = "2e08fe23c4837a780a40ebfac601760cd6297581d21eae2f88cb59060243a375"; + arm-unknown-linux-gnueabihf = "9f14a31dbef0153c0a7463a79cf8f9e8295b355354de41aa054953027beb70d7"; + armv7-unknown-linux-gnueabihf = "b37649399081228244b3ff3acc6047f6c138e602c721cd500efe43715d043c5e"; + aarch64-unknown-linux-gnu = "297c6201edd42e580f242fcd75b521b0392f6f3be02cf03ca76690fece4a74da"; + aarch64-unknown-linux-musl = "fdd9c485f93c73a085c113b4f0fbad0989f79153079d394ec4bbac2b3804f71b"; + x86_64-apple-darwin = "16bbbfcf0c982b35271d8904977d80fda1bb7caa7f898abceed3569a867d9cea"; + aarch64-apple-darwin = "415bb2bc198feb0f2d8329e33c57d0890bbd57977d1ae48b17f6c7e1f632eaa7"; + powerpc64le-unknown-linux-gnu = "79582acb339bd2d79fef095b977049049ffa04616011f1af1793fb8e98194b19"; + riscv64gc-unknown-linux-gnu = "300fe4861e2d1f6e4c4f5e36ae7997beca8a979343a7f661237ab78a37a54648"; + }; + + selectRustPackage = pkgs: pkgs.rust_1_78; + + rustcPatches = [ ]; +} + +(builtins.removeAttrs args [ "llvmPackages_18" "llvm_18"]) diff --git a/pkgs/development/compilers/rust/binary.nix b/pkgs/development/compilers/rust/binary.nix index c546e278e7fa8..d1df1c542e982 100644 --- a/pkgs/development/compilers/rust/binary.nix +++ b/pkgs/development/compilers/rust/binary.nix @@ -28,7 +28,7 @@ rec { meta = with lib; { homepage = "https://www.rust-lang.org/"; sourceProvenance = with sourceTypes; [ binaryNativeCode ]; - description = "A safe, concurrent, practical language"; + description = "Safe, concurrent, practical language"; maintainers = with maintainers; [ qknight ]; license = [ licenses.mit licenses.asl20 ]; }; @@ -73,7 +73,7 @@ rec { meta = with lib; { homepage = "https://doc.rust-lang.org/cargo/"; sourceProvenance = with sourceTypes; [ binaryNativeCode ]; - description = "The Rust package manager"; + description = "Rust package manager"; maintainers = with maintainers; [ qknight ]; license = [ licenses.mit licenses.asl20 ]; }; diff --git a/pkgs/development/compilers/rust/cargo-auditable.nix b/pkgs/development/compilers/rust/cargo-auditable.nix index 1cf765b35100d..0fa6098934c15 100644 --- a/pkgs/development/compilers/rust/cargo-auditable.nix +++ b/pkgs/development/compilers/rust/cargo-auditable.nix @@ -22,13 +22,8 @@ let cargoHash = "sha256-4o3ctun/8VcBRuj+j0Yaawdkyn6Z6LPp+FTyhPxQWU8="; - # Cargo.lock is outdated - preConfigure = '' - cargo update --offline - ''; - meta = with lib; { - description = "A tool to make production Rust binaries auditable"; + description = "Tool to make production Rust binaries auditable"; mainProgram = "cargo-auditable"; homepage = "https://github.com/rust-secure-code/cargo-auditable"; changelog = "https://github.com/rust-secure-code/cargo-auditable/blob/v${version}/cargo-auditable/CHANGELOG.md"; diff --git a/pkgs/development/compilers/rust/clippy.nix b/pkgs/development/compilers/rust/clippy.nix index d9506a4aed301..beee43323dad4 100644 --- a/pkgs/development/compilers/rust/clippy.nix +++ b/pkgs/development/compilers/rust/clippy.nix @@ -37,7 +37,7 @@ rustPlatform.buildRustPackage { meta = with lib; { homepage = "https://rust-lang.github.io/rust-clippy/"; - description = "A bunch of lints to catch common mistakes and improve your Rust code"; + description = "Bunch of lints to catch common mistakes and improve your Rust code"; mainProgram = "cargo-clippy"; maintainers = with maintainers; [ basvandijk ] ++ teams.rust.members; license = with licenses; [ mit asl20 ]; diff --git a/pkgs/development/compilers/rust/rustc.nix b/pkgs/development/compilers/rust/rustc.nix index 4c02692b75bd5..e00ba329ccdc4 100644 --- a/pkgs/development/compilers/rust/rustc.nix +++ b/pkgs/development/compilers/rust/rustc.nix @@ -103,7 +103,9 @@ in stdenv.mkDerivation (finalAttrs: { stdenv.targetPlatform.rust.rustcTargetSpec # Other targets that don't need any extra dependencies to build. - ] ++ optionals (!fastCross) [ + # Temporarily broken if some global compiler flags are set: + # https://github.com/NixOS/nixpkgs/pull/317273 + ] ++ optionals (!fastCross && !lib.any (a: lib.hasAttr a stdenv.hostPlatform.gcc) [ "cpu" "float-abi" "fpu" ] && stdenv.hostPlatform.gcc.thumb or true) [ "wasm32-unknown-unknown" # (build!=target): When cross-building a compiler we need to add @@ -139,6 +141,10 @@ in stdenv.mkDerivation (finalAttrs: { "${setBuild}.llvm-config=${llvmSharedForBuild.dev}/bin/llvm-config" "${setHost}.llvm-config=${llvmSharedForHost.dev}/bin/llvm-config" "${setTarget}.llvm-config=${llvmSharedForTarget.dev}/bin/llvm-config" + ] ++ optionals fastCross [ + # Since fastCross only builds std, it doesn't make sense (and + # doesn't work) to build a linker. + "--disable-llvm-bitcode-linker" ] ++ optionals (stdenv.isLinux && !stdenv.targetPlatform.isRedox) [ "--enable-profiler" # build libprofiler_builtins ] ++ optionals stdenv.buildPlatform.isMusl [ @@ -192,6 +198,12 @@ in stdenv.mkDerivation (finalAttrs: { postPatch = '' patchShebangs src/etc + # rust-lld is the name rustup uses for its bundled lld, so that it + # doesn't conflict with any system lld. This is not an + # appropriate default for Nixpkgs, where there is no rust-lld. + substituteInPlace compiler/rustc_target/src/spec/*/*.rs \ + --replace-quiet '"rust-lld"' '"lld"' + ${optionalString (!withBundledLLVM) "rm -rf src/llvm"} # Useful debugging parameter @@ -267,7 +279,7 @@ in stdenv.mkDerivation (finalAttrs: { meta = with lib; { homepage = "https://www.rust-lang.org/"; - description = "A safe, concurrent, practical language"; + description = "Safe, concurrent, practical language"; maintainers = with maintainers; [ havvy ] ++ teams.rust.members; license = [ licenses.mit licenses.asl20 ]; platforms = [ diff --git a/pkgs/development/compilers/rust/rustfmt.nix b/pkgs/development/compilers/rust/rustfmt.nix index 9cc8df5a9e904..ab58a172a6b20 100644 --- a/pkgs/development/compilers/rust/rustfmt.nix +++ b/pkgs/development/compilers/rust/rustfmt.nix @@ -35,7 +35,7 @@ rustPlatform.buildRustPackage rec { CFG_RELEASE_CHANNEL = if asNightly then "nightly" else "stable"; meta = with lib; { - description = "A tool for formatting Rust code according to style guidelines"; + description = "Tool for formatting Rust code according to style guidelines"; homepage = "https://github.com/rust-lang-nursery/rustfmt"; license = with licenses; [ mit asl20 ]; mainProgram = "rustfmt"; diff --git a/pkgs/development/compilers/sagittarius-scheme/default.nix b/pkgs/development/compilers/sagittarius-scheme/default.nix index f9b25b9341a4a..0b4cc240694cb 100644 --- a/pkgs/development/compilers/sagittarius-scheme/default.nix +++ b/pkgs/development/compilers/sagittarius-scheme/default.nix @@ -39,7 +39,7 @@ stdenv.mkDerivation rec { ]); meta = with lib; { - description = "An R6RS/R7RS Scheme system"; + description = "R6RS/R7RS Scheme system"; longDescription = '' Sagittarius Scheme is a free Scheme implementation supporting R6RS/R7RS specification. diff --git a/pkgs/development/compilers/sbcl/default.nix b/pkgs/development/compilers/sbcl/default.nix index 4116952199719..a2b5cf46b54d6 100644 --- a/pkgs/development/compilers/sbcl/default.nix +++ b/pkgs/development/compilers/sbcl/default.nix @@ -1,13 +1,4 @@ { lib, stdenv, callPackage, ecl, coreutils, fetchurl, strace, texinfo, which, writeText, zstd -, threadSupport ? (stdenv.hostPlatform.isx86 || "aarch64-linux" == stdenv.hostPlatform.system || "aarch64-darwin" == stdenv.hostPlatform.system) -, linkableRuntime ? stdenv.hostPlatform.isx86 -, disableImmobileSpace ? false - # Meant for sbcl used for creating binaries portable to non-NixOS via save-lisp-and-die. - # Note that the created binaries still need `patchelf --set-interpreter ...` - # to get rid of ${glibc} dependency. -, purgeNixReferences ? false -, coreCompression ? true -, markRegionGC ? true , version # Set this to a lisp binary to use a custom bootstrap lisp compiler for SBCL. # Leave as null to use the default. This is useful for local development of @@ -19,12 +10,12 @@ let versionMap = { - "2.4.3" = { - sha256 = "sha256-icmq35K4KtPHSj1PFYoDiJPeoOTzlNyvyWNYPDC3w/I="; - }; "2.4.4" = { sha256 = "sha256-ipMmJ7Px2OlhjxzcIl7csAJFaARpfiyH0UBoN2ShBtU="; }; + "2.4.5" = { + sha256 = "sha256-TfaOkMkDGAdkK0t2GYjetb9qG9FSxHI0goNO+nNae9E="; + }; }; # Collection of pre-built SBCL binaries for platforms that need them for # bootstrapping. Ideally these are to be avoided. If ECL (or any other @@ -65,12 +56,14 @@ let in -stdenv.mkDerivation (self: rec { +stdenv.mkDerivation (self: { pname = "sbcl"; inherit version; src = fetchurl { - url = "mirror://sourceforge/project/sbcl/sbcl/${version}/${pname}-${version}-source.tar.bz2"; + # Changing the version shouldn’t change the source for the + # derivation. Override the src entirely if desired. + url = "mirror://sourceforge/project/sbcl/sbcl/${version}/sbcl-${version}-source.tar.bz2"; inherit (versionMap.${version}) sha256; }; @@ -83,15 +76,25 @@ stdenv.mkDerivation (self: rec { strace ] ); - buildInputs = lib.optionals coreCompression ( + buildInputs = lib.optionals self.coreCompression ( # Declare at the point of actual use in case the caller wants to override # buildInputs to sidestep this. - assert lib.assertMsg (!purgeNixReferences) '' + assert lib.assertMsg (!self.purgeNixReferences) '' Cannot enable coreCompression when purging Nix references, because compression requires linking in zstd ''; [ zstd ] ); + threadSupport = (stdenv.hostPlatform.isx86 || "aarch64-linux" == stdenv.hostPlatform.system || "aarch64-darwin" == stdenv.hostPlatform.system); + # Meant for sbcl used for creating binaries portable to non-NixOS via save-lisp-and-die. + # Note that the created binaries still need `patchelf --set-interpreter ...` + # to get rid of ${glibc} dependency. + purgeNixReferences = false; + coreCompression = true; + markRegionGC = self.threadSupport; + disableImmobileSpace = false; + linkableRuntime = stdenv.hostPlatform.isx86; + # I don’t know why these are failing (on ofBorg), and I’d rather just disable # them and move forward with the succeeding tests than block testing # altogether. One by one hopefully we can fix these (on ofBorg, @@ -113,10 +116,19 @@ stdenv.mkDerivation (self: rec { # have it block a release. "futex-wait.test.sh" ]; + patches = [ + # Support the NIX_SBCL_DYNAMIC_SPACE_SIZE envvar. Upstream SBCL didn’t want + # to include this (see + # "https://sourceforge.net/p/sbcl/mailman/sbcl-devel/thread/2cf20df7-01d0-44f2-8551-0df01fe55f1a%400brg.net/"), + # but for Nix envvars are sufficiently useful that it’s worth maintaining + # this functionality downstream. + ./dynamic-space-size-envvar-feature.patch + ./dynamic-space-size-envvar-tests.patch + ]; postPatch = lib.optionalString (self.disabledTestFiles != [ ]) '' (cd tests ; rm -f ${lib.concatStringsSep " " self.disabledTestFiles}) '' - + lib.optionalString purgeNixReferences '' + + lib.optionalString self.purgeNixReferences '' # This is the default location to look for the core; by default in $out/lib/sbcl sed 's@^\(#define SBCL_HOME\) .*$@\1 "/no-such-path"@' \ -i src/runtime/runtime.c @@ -128,7 +140,7 @@ stdenv.mkDerivation (self: rec { # binary. There are some tricky files in nested directories which should # definitely NOT be patched this way, hence just a single * (and no # globstar). - substituteInPlace ${if purgeNixReferences then "tests" else "{tests,src/code}"}/*.{lisp,sh} \ + substituteInPlace ${if self.purgeNixReferences then "tests" else "{tests,src/code}"}/*.{lisp,sh} \ --replace-quiet /usr/bin/env "${coreutils}/bin/env" \ --replace-quiet /bin/uname "${coreutils}/bin/uname" \ --replace-quiet /bin/sh "${stdenv.shell}" @@ -137,7 +149,7 @@ stdenv.mkDerivation (self: rec { # want to override { src = ... } it might not exist. It’s required for # building, so create a mock version as a backup. if [[ ! -a version.lisp-expr ]]; then - echo '"${version}.nixos"' > version.lisp-expr + echo '"${self.version}.nixos"' > version.lisp-expr fi ''; @@ -148,15 +160,16 @@ stdenv.mkDerivation (self: rec { ''; enableFeatures = with lib; - optional threadSupport "sb-thread" ++ - optional linkableRuntime "sb-linkable-runtime" ++ - optional coreCompression "sb-core-compression" ++ + assert assertMsg (self.markRegionGC -> self.threadSupport) "SBCL mark region GC requires thread support"; + optional self.threadSupport "sb-thread" ++ + optional self.linkableRuntime "sb-linkable-runtime" ++ + optional self.coreCompression "sb-core-compression" ++ optional stdenv.isAarch32 "arm" ++ - optional markRegionGC "mark-region-gc"; + optional self.markRegionGC "mark-region-gc"; disableFeatures = with lib; - optional (!threadSupport) "sb-thread" ++ - optionals disableImmobileSpace [ "immobile-space" "immobile-code" "compact-instance-header" ]; + optional (!self.threadSupport) "sb-thread" ++ + optionals self.disableImmobileSpace [ "immobile-space" "immobile-code" "compact-instance-header" ]; buildArgs = [ "--prefix=$out" @@ -200,7 +213,7 @@ stdenv.mkDerivation (self: rec { INSTALL_ROOT=$out sh install.sh '' - + lib.optionalString (!purgeNixReferences) '' + + lib.optionalString (!self.purgeNixReferences) '' cp -r src $out/lib/sbcl cp -r contrib $out/lib/sbcl cat >$out/lib/sbcl/sbclrc <<EOF @@ -212,7 +225,7 @@ stdenv.mkDerivation (self: rec { runHook postInstall ''; - setupHook = lib.optional purgeNixReferences (writeText "setupHook.sh" '' + setupHook = lib.optional self.purgeNixReferences (writeText "setupHook.sh" '' addEnvHooks "$targetOffset" _setSbclHome _setSbclHome() { export SBCL_HOME='@out@/lib/sbcl/' diff --git a/pkgs/development/compilers/sbcl/dynamic-space-size-envvar-feature.patch b/pkgs/development/compilers/sbcl/dynamic-space-size-envvar-feature.patch new file mode 100644 index 0000000000000..f1596958a6f8f --- /dev/null +++ b/pkgs/development/compilers/sbcl/dynamic-space-size-envvar-feature.patch @@ -0,0 +1,63 @@ +From ac15f9f7c75c1fb5767514e64b609e2a75e6fe9d Mon Sep 17 00:00:00 2001 +From: Hraban Luyat <hraban@0brg.net> +Date: Sat, 13 Apr 2024 14:04:57 -0400 +Subject: [PATCH] feat: NIX_SBCL_DYNAMIC_SPACE_SIZE envvar + +Read SBCL dynamic space size configuration from env if available. +--- + src/runtime/runtime.c | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +diff --git a/src/runtime/runtime.c b/src/runtime/runtime.c +index 274687c8f..970caa8f4 100644 +--- a/src/runtime/runtime.c ++++ b/src/runtime/runtime.c +@@ -422,6 +422,29 @@ static int is_memsize_arg(char *argv[], int argi, int argc, int *merge_core_page + return 0; + } + ++/** ++ * Read memory options from the environment, if present. ++ * ++ * Memory settings are read in the following priority: ++ * ++ * 1. command line arguments ++ * 2. environment variable ++ * 3. embedded options in core ++ * 4. default ++ */ ++static void ++read_memsize_from_env(void) { ++ const char *val = getenv("NIX_SBCL_DYNAMIC_SPACE_SIZE"); ++ // The distinction is blurry between setting an envvar to the empty string and ++ // unsetting it entirely. Depending on the calling environment it can even be ++ // tricky to properly unset an envvar in the first place. An empty envvar is ++ // practically always intended to just mean “unset”, so let’s interpret it ++ // that way. ++ if (val != NULL && (strcmp(val, "") != 0)) { ++ dynamic_space_size = parse_size_arg(val, "NIX_SBCL_DYNAMIC_SPACE_SIZE"); ++ } ++} ++ + static struct cmdline_options + parse_argv(struct memsize_options memsize_options, + int argc, char *argv[], char *envp[], char *core) +@@ -462,6 +485,7 @@ parse_argv(struct memsize_options memsize_options, + dynamic_space_size = memsize_options.dynamic_space_size; + thread_control_stack_size = memsize_options.thread_control_stack_size; + dynamic_values_bytes = memsize_options.thread_tls_bytes; ++ read_memsize_from_env(); + int stop_parsing = 0; // have we seen '--' + int output_index = 1; + +@@ -488,6 +512,7 @@ parse_argv(struct memsize_options memsize_options, + } + sbcl_argv[output_index] = 0; + } else { ++ read_memsize_from_env(); + bool end_runtime_options = 0; + /* Parse our any of the command-line options that we handle from C, + * stopping at the first one that we don't, and leave the rest */ +-- +2.44.0 + diff --git a/pkgs/development/compilers/sbcl/dynamic-space-size-envvar-tests.patch b/pkgs/development/compilers/sbcl/dynamic-space-size-envvar-tests.patch new file mode 100644 index 0000000000000..1a507cc90381a --- /dev/null +++ b/pkgs/development/compilers/sbcl/dynamic-space-size-envvar-tests.patch @@ -0,0 +1,104 @@ +From 9d4a886a8a76ea8be51bcf754cefacdf30986f46 Mon Sep 17 00:00:00 2001 +From: Hraban Luyat <hraban@0brg.net> +Date: Sat, 13 Apr 2024 15:39:58 -0400 +Subject: [PATCH 2/2] test: dynamic space size envvar and precedence + +--- + tests/memory-args.test.sh | 22 ++++++++++++++++++++++ + tests/save7.test.sh | 37 ++++++++++++++++++++++++++++++++----- + 2 files changed, 54 insertions(+), 5 deletions(-) + create mode 100755 tests/memory-args.test.sh + +diff --git a/tests/memory-args.test.sh b/tests/memory-args.test.sh +new file mode 100755 +index 000000000..72ef0cc79 +--- /dev/null ++++ b/tests/memory-args.test.sh +@@ -0,0 +1,22 @@ ++#!/bin/sh ++ ++. ./subr.sh ++ ++use_test_subdirectory ++ ++set -e ++ ++# Allow slight shrinkage if heap relocation has to adjust for alignment ++NIX_SBCL_DYNAMIC_SPACE_SIZE=234mb run_sbcl_with_args --script <<EOF ++(assert (<= 0 (- (* 234 1024 1024) (sb-ext:dynamic-space-size)) 65536)) ++EOF ++ ++NIX_SBCL_DYNAMIC_SPACE_SIZE=555mb run_sbcl_with_args --dynamic-space-size 234mb --script <<EOF ++(assert (<= 0 (- (* 234 1024 1024) (sb-ext:dynamic-space-size)) 65536)) ++EOF ++ ++run_sbcl_with_args --dynamic-space-size 234mb --script <<EOF ++(assert (<= 0 (- (* 234 1024 1024) (sb-ext:dynamic-space-size)) 65536)) ++EOF ++ ++exit $EXIT_TEST_WIN +diff --git a/tests/save7.test.sh b/tests/save7.test.sh +index f9225543b..3c35e7b31 100644 +--- a/tests/save7.test.sh ++++ b/tests/save7.test.sh +@@ -59,9 +59,9 @@ run_sbcl_with_core "$tmpcore" --noinform --control-stack-size 640KB \ + (assert (eql (extern-alien "dynamic_values_bytes" (unsigned 32)) + (* 5000 sb-vm:n-word-bytes))) + ; allow slight shrinkage if heap relocation has to adjust for alignment +- (defun dynamic-space-size-good-p () +- (<= 0 (- (* 260 1048576) (dynamic-space-size)) 65536)) +- (assert (dynamic-space-size-good-p)) ++ (defun dynamic-space-size-good-p (expected-mb) ++ (<= 0 (- (* expected-mb 1024 1024) (dynamic-space-size)) 65536)) ++ (assert (dynamic-space-size-good-p 260)) + (save-lisp-and-die "${tmpcore}2" :executable t :save-runtime-options t) + EOF + chmod u+x "${tmpcore}2" +@@ -70,15 +70,42 @@ echo "::: INFO: prepared test core" + (when (and (eql (extern-alien "thread_control_stack_size" unsigned) (* 640 1024)) + (eql (extern-alien "dynamic_values_bytes" (unsigned 32)) + (* 5000 sb-vm:n-word-bytes)) +- (dynamic-space-size-good-p)) ++ (dynamic-space-size-good-p 260)) + (exit :code 42)) + EOF + status=$? +-rm "$tmpcore" "${tmpcore}2" + if [ $status -ne 42 ]; then + echo "re-saved executable used wrong memory size options" + exit 1 + fi + echo "::: Success" + ++echo "::: Running :DYNAMIC-SPACE-SIZE-ENV" ++NIX_SBCL_DYNAMIC_SPACE_SIZE=432MB ./"${tmpcore}2" --no-userinit --no-sysinit --noprint <<EOF ++ (when (dynamic-space-size-good-p 432) ++ (exit :code 42)) ++EOF ++status=$? ++if [ $status -ne 42 ]; then ++ echo "re-saved executable should have prioritized memory specification from env" ++ exit 1 ++fi ++echo "::: Success" ++ ++echo "::: Running :DYNAMIC-SPACE-SIZE-PRECEDENCE" ++NIX_SBCL_DYNAMIC_SPACE_SIZE=432MB ./"${tmpcore}2" --dynamic-space-size 333MB \ ++ --no-userinit --no-sysinit --noprint <<EOF ++ (when (dynamic-space-size-good-p 333)) ++ (exit :code 42)) ++EOF ++status=$? ++rm "$tmpcore" "${tmpcore}2" ++if [ $status -ne 42 ]; then ++ echo "re-saved executable should have prioritized memory specification from arg" ++ exit 1 ++fi ++echo "::: Success" ++ ++ ++ + exit $EXIT_TEST_WIN +-- +2.44.0 + diff --git a/pkgs/development/compilers/scala-runners/default.nix b/pkgs/development/compilers/scala-runners/default.nix index 57756b423d55e..bc0756e0c11ce 100644 --- a/pkgs/development/compilers/scala-runners/default.nix +++ b/pkgs/development/compilers/scala-runners/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { meta = with lib; { homepage = "https://github.com/dwijnand/scala-runners"; - description = "An alternative implementation of the Scala distribution's runners"; + description = "Alternative implementation of the Scala distribution's runners"; license = licenses.asl20; platforms = platforms.all; maintainers = with maintainers; [ hrhino ]; diff --git a/pkgs/development/compilers/scala/2.x.nix b/pkgs/development/compilers/scala/2.x.nix index cf3f42ec08587..d79e946ec7dec 100644 --- a/pkgs/development/compilers/scala/2.x.nix +++ b/pkgs/development/compilers/scala/2.x.nix @@ -101,7 +101,7 @@ stdenv.mkDerivation rec { }; meta = with lib; { - description = "A general purpose programming language"; + description = "General purpose programming language"; longDescription = '' Scala is a general purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way. diff --git a/pkgs/development/compilers/scala/bare.nix b/pkgs/development/compilers/scala/bare.nix index 09180e54a5a5d..bbbb573f2f5ac 100644 --- a/pkgs/development/compilers/scala/bare.nix +++ b/pkgs/development/compilers/scala/bare.nix @@ -1,12 +1,12 @@ { lib, stdenv, fetchurl, makeWrapper, jre, ncurses }: stdenv.mkDerivation rec { - version = "3.3.1"; + version = "3.3.3"; pname = "scala-bare"; src = fetchurl { url = "https://github.com/lampepfl/dotty/releases/download/${version}/scala3-${version}.tar.gz"; - hash = "sha256-EcDqD3HEOvD7GzVd3kFL/vAaYMFyk2deI6RNAlJpzRU="; + hash = "sha256-61lAETEvqkEqr5pbDltFkh+Qvp+EnCDilXN9X67NFNE="; }; propagatedBuildInputs = [ jre ncurses.dev ] ; diff --git a/pkgs/development/compilers/scryer-prolog/default.nix b/pkgs/development/compilers/scryer-prolog/default.nix index 28744a00a5f16..49818fee3e109 100644 --- a/pkgs/development/compilers/scryer-prolog/default.nix +++ b/pkgs/development/compilers/scryer-prolog/default.nix @@ -33,7 +33,7 @@ rustPlatform.buildRustPackage rec { CARGO_FEATURE_USE_SYSTEM_LIBS = true; meta = with lib; { - description = "A modern Prolog implementation written mostly in Rust"; + description = "Modern Prolog implementation written mostly in Rust"; mainProgram = "scryer-prolog"; homepage = "https://github.com/mthom/scryer-prolog"; license = with licenses; [ bsd3 ]; diff --git a/pkgs/development/compilers/semeru-bin/generate-sources.py b/pkgs/development/compilers/semeru-bin/generate-sources.py index da23559955d92..44ad583ab48f7 100755 --- a/pkgs/development/compilers/semeru-bin/generate-sources.py +++ b/pkgs/development/compilers/semeru-bin/generate-sources.py @@ -6,10 +6,10 @@ import re import requests import sys -feature_versions = (8, 11, 16, 17) +feature_versions = (8, 11, 16, 17, 21) oses = ("mac", "linux") types = ("jre", "jdk") -impls = ("openj9") +impls = ("openj9",) arch_to_nixos = { "x64": ("x86_64",), diff --git a/pkgs/development/compilers/semeru-bin/jdk-darwin.nix b/pkgs/development/compilers/semeru-bin/jdk-darwin.nix index f58fec3a84c0d..2e9bde029f2d9 100644 --- a/pkgs/development/compilers/semeru-bin/jdk-darwin.nix +++ b/pkgs/development/compilers/semeru-bin/jdk-darwin.nix @@ -3,14 +3,18 @@ let sources = (lib.importJSON ./sources.json).openj9.mac; common = opts: callPackage (import ./jdk-darwin-base.nix opts) {}; + + EOL = [ "This JDK/JRE version has reached End of Life." ]; in { jdk-8 = common { sourcePerArch = sources.jdk.openjdk8; }; jre-8 = common { sourcePerArch = sources.jre.openjdk8; }; jdk-11 = common { sourcePerArch = sources.jdk.openjdk11; }; jre-11 = common { sourcePerArch = sources.jre.openjdk11; }; - jdk-16 = common { sourcePerArch = sources.jdk.openjdk16; }; - jre-16 = common { sourcePerArch = sources.jre.openjdk16; }; + jdk-16 = common { sourcePerArch = sources.jdk.openjdk16; knownVulnerabilities = EOL; }; + jre-16 = common { sourcePerArch = sources.jre.openjdk16; knownVulnerabilities = EOL; }; jdk-17 = common { sourcePerArch = sources.jdk.openjdk17; }; jre-17 = common { sourcePerArch = sources.jre.openjdk17; }; + jdk-21 = common { sourcePerArch = sources.jdk.openjdk21; }; + jre-21 = common { sourcePerArch = sources.jre.openjdk21; }; } diff --git a/pkgs/development/compilers/semeru-bin/jdk-linux.nix b/pkgs/development/compilers/semeru-bin/jdk-linux.nix index c80dd991bf042..59c6a4862d913 100644 --- a/pkgs/development/compilers/semeru-bin/jdk-linux.nix +++ b/pkgs/development/compilers/semeru-bin/jdk-linux.nix @@ -3,14 +3,18 @@ let sources = (lib.importJSON ./sources.json).openj9.linux; common = opts: callPackage (import ./jdk-linux-base.nix opts) {}; + + EOL = [ "This JDK/JRE version has reached End of Life." ]; in { jdk-8 = common { sourcePerArch = sources.jdk.openjdk8; }; jre-8 = common { sourcePerArch = sources.jre.openjdk8; }; jdk-11 = common { sourcePerArch = sources.jdk.openjdk11; }; jre-11 = common { sourcePerArch = sources.jre.openjdk11; }; - jdk-16 = common { sourcePerArch = sources.jdk.openjdk16; }; - jre-16 = common { sourcePerArch = sources.jre.openjdk16; }; + jdk-16 = common { sourcePerArch = sources.jdk.openjdk16; knownVulnerabilities = EOL; }; + jre-16 = common { sourcePerArch = sources.jre.openjdk16; knownVulnerabilities = EOL; }; jdk-17 = common { sourcePerArch = sources.jdk.openjdk17; }; jre-17 = common { sourcePerArch = sources.jre.openjdk17; }; + jdk-21 = common { sourcePerArch = sources.jdk.openjdk21; }; + jre-21 = common { sourcePerArch = sources.jre.openjdk21; }; } diff --git a/pkgs/development/compilers/semeru-bin/sources.json b/pkgs/development/compilers/semeru-bin/sources.json index 5e04fa90af748..ccca4a2ee7ad5 100644 --- a/pkgs/development/compilers/semeru-bin/sources.json +++ b/pkgs/development/compilers/semeru-bin/sources.json @@ -4,18 +4,18 @@ "jdk": { "openjdk11": { "aarch64": { - "build": "8", - "sha256": "488739171f84e3949df6ccb1c40eaf1b73541748b123d88780329648d6b383d0", - "url": "https://github.com/ibmruntimes/semeru11-binaries/releases/download/jdk-11.0.16%2B8_openj9-0.33.0/ibm-semeru-open-jdk_aarch64_linux_11.0.16_8_openj9-0.33.0.tar.gz", - "version": "11.0.16" + "build": "9", + "sha256": "23e280da1ce418692323f8aad94069ef34bae6566a98ffd349fc2cbb9fa285af", + "url": "https://github.com/ibmruntimes/semeru11-binaries/releases/download/jdk-11.0.23%2B9_openj9-0.44.0/ibm-semeru-open-jdk_aarch64_linux_11.0.23_9_openj9-0.44.0.tar.gz", + "version": "11.0.23" }, "packageType": "jdk", "vmType": "openj9", "x86_64": { - "build": "8", - "sha256": "eeca01d4e245a001d01663c5c20a8d50ef3d572b47a9b3689a5154f2a37bf005", - "url": "https://github.com/ibmruntimes/semeru11-binaries/releases/download/jdk-11.0.16%2B8_openj9-0.33.0/ibm-semeru-open-jdk_x64_linux_11.0.16_8_openj9-0.33.0.tar.gz", - "version": "11.0.16" + "build": "9", + "sha256": "033261124af247f944f820cad158df2b9db58945b4998750258c37d62fac99ff", + "url": "https://github.com/ibmruntimes/semeru11-binaries/releases/download/jdk-11.0.23%2B9_openj9-0.44.0/ibm-semeru-open-jdk_x64_linux_11.0.23_9_openj9-0.44.0.tar.gz", + "version": "11.0.23" } }, "openjdk16": { @@ -36,52 +36,68 @@ }, "openjdk17": { "aarch64": { - "build": "8", - "sha256": "18d291411ee4a956018b4dcefe436971e73694128782617f1b44beca991956c5", - "url": "https://github.com/ibmruntimes/semeru17-binaries/releases/download/jdk-17.0.4%2B8_openj9-0.33.0/ibm-semeru-open-jdk_aarch64_linux_17.0.4_8_openj9-0.33.0.tar.gz", - "version": "17.0.4" + "build": "9", + "sha256": "cfdff21ce44ae6af494cba75c1f323bef83a982f2c11944988bab2125f85b906", + "url": "https://github.com/ibmruntimes/semeru17-binaries/releases/download/jdk-17.0.9%2B9_openj9-0.41.0/ibm-semeru-open-jdk_aarch64_linux_17.0.9_9_openj9-0.41.0.tar.gz", + "version": "17.0.9" }, "packageType": "jdk", "vmType": "openj9", "x86_64": { - "build": "8", - "sha256": "78ae15d9e01fce3a473f4d6a90c331fb766211b950931088c2a85590f178ad39", - "url": "https://github.com/ibmruntimes/semeru17-binaries/releases/download/jdk-17.0.4%2B8_openj9-0.33.0/ibm-semeru-open-jdk_x64_linux_17.0.4_8_openj9-0.33.0.tar.gz", - "version": "17.0.4" + "build": "9", + "sha256": "9b945e58f024108a20eb907015cca4a452332b7644e8dd8e051149a3ec62e3a3", + "url": "https://github.com/ibmruntimes/semeru17-binaries/releases/download/jdk-17.0.9%2B9_openj9-0.41.0/ibm-semeru-open-jdk_x64_linux_17.0.9_9_openj9-0.41.0.tar.gz", + "version": "17.0.9" + } + }, + "openjdk21": { + "aarch64": { + "build": "9", + "sha256": "718e465d1b22034d889445e8ae371fc58dfc733c454cf344fa5e10db0ab8a775", + "url": "https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.3%2B9_openj9-0.44.0/ibm-semeru-open-jdk_aarch64_linux_21.0.3_9_openj9-0.44.0.tar.gz", + "version": "21.0.3" + }, + "packageType": "jdk", + "vmType": "openj9", + "x86_64": { + "build": "9", + "sha256": "5cccb39dc7ca6c61a11bd7179c4c3c30b747f9f22129576feef921b59725af25", + "url": "https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.3%2B9_openj9-0.44.0/ibm-semeru-open-jdk_x64_linux_21.0.3_9_openj9-0.44.0.tar.gz", + "version": "21.0.3" } }, "openjdk8": { "aarch64": { - "build": "01", - "sha256": "6b89e648899709459b7c7dbe0a5b1ea480a88da84c6163f01255d638dbdd051b", - "url": "https://github.com/ibmruntimes/semeru8-binaries/releases/download/8u345-b01_openj9-0.33.0/ibm-semeru-open-jdk_aarch64_linux_8u345b01_openj9-0.33.0.tar.gz", - "version": "8.0.345" + "build": "08", + "sha256": "2baa88e7ed0ea9f72310fb4adfe99ee06fdb514cc04517b0e0be3c0646493ea3", + "url": "https://github.com/ibmruntimes/semeru8-binaries/releases/download/jdk8u412-b08_openj9-0.44.0/ibm-semeru-open-jdk_aarch64_linux_8u412b08_openj9-0.44.0.tar.gz", + "version": "8.0.412" }, "packageType": "jdk", "vmType": "openj9", "x86_64": { - "build": "01", - "sha256": "82c8232a5cb420246457d65a5014602feb8b288079cdae896e22a2eb6e390b58", - "url": "https://github.com/ibmruntimes/semeru8-binaries/releases/download/8u345-b01_openj9-0.33.0/ibm-semeru-open-jdk_x64_linux_8u345b01_openj9-0.33.0.tar.gz", - "version": "8.0.345" + "build": "08", + "sha256": "85af2c57078aab240ce31ba3f7a8e86696ff5bdf4c30f3c37f107986f07b23a6", + "url": "https://github.com/ibmruntimes/semeru8-binaries/releases/download/jdk8u412-b08_openj9-0.44.0/ibm-semeru-open-jdk_x64_linux_8u412b08_openj9-0.44.0.tar.gz", + "version": "8.0.412" } } }, "jre": { "openjdk11": { "aarch64": { - "build": "8", - "sha256": "49dc05a3e9f3f99c5f8fa466261aa3e33a753694c67cabfa7d3f682e5a2e3685", - "url": "https://github.com/ibmruntimes/semeru11-binaries/releases/download/jdk-11.0.16%2B8_openj9-0.33.0/ibm-semeru-open-jre_aarch64_linux_11.0.16_8_openj9-0.33.0.tar.gz", - "version": "11.0.16" + "build": "9", + "sha256": "8613dc2b6c403f48d2a8e25da92ab9f8a7b5dd63cb81d1917e4cb070ae371557", + "url": "https://github.com/ibmruntimes/semeru11-binaries/releases/download/jdk-11.0.23%2B9_openj9-0.44.0/ibm-semeru-open-jre_aarch64_linux_11.0.23_9_openj9-0.44.0.tar.gz", + "version": "11.0.23" }, "packageType": "jre", "vmType": "openj9", "x86_64": { - "build": "8", - "sha256": "ba09711193b8b8664478f3f949b5320232f65c1bdf61f32a885d84de73c02767", - "url": "https://github.com/ibmruntimes/semeru11-binaries/releases/download/jdk-11.0.16%2B8_openj9-0.33.0/ibm-semeru-open-jre_x64_linux_11.0.16_8_openj9-0.33.0.tar.gz", - "version": "11.0.16" + "build": "9", + "sha256": "b9558416d6d773fce0d9b4d3f875fdfc5ffc1afd922570b0f7a6f7cbab7468ab", + "url": "https://github.com/ibmruntimes/semeru11-binaries/releases/download/jdk-11.0.23%2B9_openj9-0.44.0/ibm-semeru-open-jre_x64_linux_11.0.23_9_openj9-0.44.0.tar.gz", + "version": "11.0.23" } }, "openjdk16": { @@ -102,34 +118,50 @@ }, "openjdk17": { "aarch64": { - "build": "8", - "sha256": "6c40c1e0d7ee0509c44465e9f26dd970904137a95fd751e6447b1d6a9ef5092a", - "url": "https://github.com/ibmruntimes/semeru17-binaries/releases/download/jdk-17.0.4%2B8_openj9-0.33.0/ibm-semeru-open-jre_aarch64_linux_17.0.4_8_openj9-0.33.0.tar.gz", - "version": "17.0.4" + "build": "9", + "sha256": "9760aa27a5790a8c20a702ff5f036535f3df51d3fb291bb5254b5ae76e096bad", + "url": "https://github.com/ibmruntimes/semeru17-binaries/releases/download/jdk-17.0.9%2B9_openj9-0.41.0/ibm-semeru-open-jre_aarch64_linux_17.0.9_9_openj9-0.41.0.tar.gz", + "version": "17.0.9" + }, + "packageType": "jre", + "vmType": "openj9", + "x86_64": { + "build": "9", + "sha256": "1caf409f33f7738efe37742197525b5ae6244d6383b2017e7b8e925dc0b6a329", + "url": "https://github.com/ibmruntimes/semeru17-binaries/releases/download/jdk-17.0.9%2B9_openj9-0.41.0/ibm-semeru-open-jre_x64_linux_17.0.9_9_openj9-0.41.0.tar.gz", + "version": "17.0.9" + } + }, + "openjdk21": { + "aarch64": { + "build": "9", + "sha256": "0222dc3749e1c94bd1b047cdb02eb18310aefd9f7965b66196da06e4e3844b7a", + "url": "https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.3%2B9_openj9-0.44.0/ibm-semeru-open-jre_aarch64_linux_21.0.3_9_openj9-0.44.0.tar.gz", + "version": "21.0.3" }, "packageType": "jre", "vmType": "openj9", "x86_64": { - "build": "8", - "sha256": "b2c176f8aa8cc7138d4c22ce9298d8f49597e1d8e3fdd33125898e5ee0182c93", - "url": "https://github.com/ibmruntimes/semeru17-binaries/releases/download/jdk-17.0.4%2B8_openj9-0.33.0/ibm-semeru-open-jre_x64_linux_17.0.4_8_openj9-0.33.0.tar.gz", - "version": "17.0.4" + "build": "9", + "sha256": "b831e8c418374ccec13c51f60c36f4c32266f3cc83cb31f32286f89c26d66e00", + "url": "https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.3%2B9_openj9-0.44.0/ibm-semeru-open-jre_x64_linux_21.0.3_9_openj9-0.44.0.tar.gz", + "version": "21.0.3" } }, "openjdk8": { "aarch64": { - "build": "01", - "sha256": "03caff41622e84a6e7fa66a225414a9b6eefb38dd215f830cae0bc4bbfc55b5c", - "url": "https://github.com/ibmruntimes/semeru8-binaries/releases/download/8u345-b01_openj9-0.33.0/ibm-semeru-open-jre_aarch64_linux_8u345b01_openj9-0.33.0.tar.gz", - "version": "8.0.345" + "build": "08", + "sha256": "08a41a48b79881590d65a09c62c56d8bcd9b8453f03420bcfd5dd3165bbba3c1", + "url": "https://github.com/ibmruntimes/semeru8-binaries/releases/download/jdk8u412-b08_openj9-0.44.0/ibm-semeru-open-jre_aarch64_linux_8u412b08_openj9-0.44.0.tar.gz", + "version": "8.0.412" }, "packageType": "jre", "vmType": "openj9", "x86_64": { - "build": "01", - "sha256": "0d4fe62716b9da2ccce324b5b46d57e8d47e5dfb5d128f87e16135ee9bc36cdc", - "url": "https://github.com/ibmruntimes/semeru8-binaries/releases/download/8u345-b01_openj9-0.33.0/ibm-semeru-open-jre_x64_linux_8u345b01_openj9-0.33.0.tar.gz", - "version": "8.0.345" + "build": "08", + "sha256": "ac5022b52b33b22c51d8370655f6157fd999e5e24c6525f91d1e778f34abcb8b", + "url": "https://github.com/ibmruntimes/semeru8-binaries/releases/download/jdk8u412-b08_openj9-0.44.0/ibm-semeru-open-jre_x64_linux_8u412b08_openj9-0.44.0.tar.gz", + "version": "8.0.412" } } } @@ -138,18 +170,18 @@ "jdk": { "openjdk11": { "aarch64": { - "build": "8", - "sha256": "9881b292142a129f6f5c6b21608b090f8f94625052b4f7d0ce5bd982c054ca2e", - "url": "https://github.com/ibmruntimes/semeru11-binaries/releases/download/jdk-11.0.16%2B8_openj9-0.33.0/ibm-semeru-open-jdk_aarch64_mac_11.0.16_8_openj9-0.33.0.tar.gz", - "version": "11.0.16" + "build": "9", + "sha256": "451336700a8b219d219e2e3b26b60154c44e8ab209056cc3466b0fcd4b15e53d", + "url": "https://github.com/ibmruntimes/semeru11-binaries/releases/download/jdk-11.0.23%2B9_openj9-0.44.0/ibm-semeru-open-jdk_aarch64_mac_11.0.23_9_openj9-0.44.0.tar.gz", + "version": "11.0.23" }, "packageType": "jdk", "vmType": "openj9", "x86_64": { - "build": "8", - "sha256": "8638735d2cae3efff212f898728685380355bb0a298076e9e46244d0bf3d4a64", - "url": "https://github.com/ibmruntimes/semeru11-binaries/releases/download/jdk-11.0.16%2B8_openj9-0.33.0/ibm-semeru-open-jdk_x64_mac_11.0.16_8_openj9-0.33.0.tar.gz", - "version": "11.0.16" + "build": "9", + "sha256": "6a225f3024d1919528107ece20256e8a8594523ea2204d93a041c012cbf1e2d2", + "url": "https://github.com/ibmruntimes/semeru11-binaries/releases/download/jdk-11.0.23%2B9_openj9-0.44.0/ibm-semeru-open-jdk_x64_mac_11.0.23_9_openj9-0.44.0.tar.gz", + "version": "11.0.23" } }, "openjdk16": { @@ -164,46 +196,62 @@ }, "openjdk17": { "aarch64": { - "build": "8", - "sha256": "bf22628b54115dff9939b94751531544ab735b7cbbc8d6ddfe83d1b04df3a532", - "url": "https://github.com/ibmruntimes/semeru17-binaries/releases/download/jdk-17.0.4%2B8_openj9-0.33.0/ibm-semeru-open-jdk_aarch64_mac_17.0.4_8_openj9-0.33.0.tar.gz", - "version": "17.0.4" + "build": "9", + "sha256": "5fed15250cb613a4024f2b2e75ccb54e6526ffa5ff78d955a6e2a11ae330f003", + "url": "https://github.com/ibmruntimes/semeru17-binaries/releases/download/jdk-17.0.9%2B9_openj9-0.41.0/ibm-semeru-open-jdk_aarch64_mac_17.0.9_9_openj9-0.41.0.tar.gz", + "version": "17.0.9" }, "packageType": "jdk", "vmType": "openj9", "x86_64": { - "build": "8", - "sha256": "a935f20564e347a9292955c04eb57e51efdb1853ae7f0b4fe759b22c9fe248be", - "url": "https://github.com/ibmruntimes/semeru17-binaries/releases/download/jdk-17.0.4%2B8_openj9-0.33.0/ibm-semeru-open-jdk_x64_mac_17.0.4_8_openj9-0.33.0.tar.gz", - "version": "17.0.4" + "build": "9", + "sha256": "585f48be83935a44ef980249aaab024119d4ea6ef0937a2cd2d97d0c77cda1c2", + "url": "https://github.com/ibmruntimes/semeru17-binaries/releases/download/jdk-17.0.9%2B9_openj9-0.41.0/ibm-semeru-open-jdk_x64_mac_17.0.9_9_openj9-0.41.0.tar.gz", + "version": "17.0.9" + } + }, + "openjdk21": { + "aarch64": { + "build": "9", + "sha256": "a95896a4ca7b69050a25b1557520f430abc66d098e9fd15cd394e20c4c93e5cf", + "url": "https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.3%2B9_openj9-0.44.0/ibm-semeru-open-jdk_aarch64_mac_21.0.3_9_openj9-0.44.0.tar.gz", + "version": "21.0.3" + }, + "packageType": "jdk", + "vmType": "openj9", + "x86_64": { + "build": "9", + "sha256": "95640346ef677fbdbf40efa0298cc61314cffed0c43d1b3bd329b84d445db869", + "url": "https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.3%2B9_openj9-0.44.0/ibm-semeru-open-jdk_x64_mac_21.0.3_9_openj9-0.44.0.tar.gz", + "version": "21.0.3" } }, "openjdk8": { "packageType": "jdk", "vmType": "openj9", "x86_64": { - "build": "01", - "sha256": "c69086950c006b17484a70ef7bc85e92d121be15e69e282e1446fd238d42b6b4", - "url": "https://github.com/ibmruntimes/semeru8-binaries/releases/download/8u345-b01_openj9-0.33.0/ibm-semeru-open-jdk_x64_mac_8u345b01_openj9-0.33.0.tar.gz", - "version": "8.0.345" + "build": "08", + "sha256": "4e8a34442fc0c1c1288ca4d251ecfe744c201ec6494103d8dafa52e785d3f8ae", + "url": "https://github.com/ibmruntimes/semeru8-binaries/releases/download/jdk8u412-b08_openj9-0.44.0/ibm-semeru-open-jdk_x64_mac_8u412b08_openj9-0.44.0.tar.gz", + "version": "8.0.412" } } }, "jre": { "openjdk11": { "aarch64": { - "build": "8", - "sha256": "39802020896476342dc11486e3cbdf10f6311c172abeb4a1e2931b472da4417e", - "url": "https://github.com/ibmruntimes/semeru11-binaries/releases/download/jdk-11.0.16%2B8_openj9-0.33.0/ibm-semeru-open-jre_aarch64_mac_11.0.16_8_openj9-0.33.0.tar.gz", - "version": "11.0.16" + "build": "9", + "sha256": "be6ba7e6904e8ca2fab9dab38607af1e4d36f6a391584eb8c4de0804493f3626", + "url": "https://github.com/ibmruntimes/semeru11-binaries/releases/download/jdk-11.0.23%2B9_openj9-0.44.0/ibm-semeru-open-jre_aarch64_mac_11.0.23_9_openj9-0.44.0.tar.gz", + "version": "11.0.23" }, "packageType": "jre", "vmType": "openj9", "x86_64": { - "build": "8", - "sha256": "92f87a3c2fb5fe60d3d51020ff95b9c234b2ae2677b79aebbe749dda717c9cdd", - "url": "https://github.com/ibmruntimes/semeru11-binaries/releases/download/jdk-11.0.16%2B8_openj9-0.33.0/ibm-semeru-open-jre_x64_mac_11.0.16_8_openj9-0.33.0.tar.gz", - "version": "11.0.16" + "build": "9", + "sha256": "9f9505e9ee5082c070de965c790d51758a9969b7bb9ca49057d0d5afb5cfc99b", + "url": "https://github.com/ibmruntimes/semeru11-binaries/releases/download/jdk-11.0.23%2B9_openj9-0.44.0/ibm-semeru-open-jre_x64_mac_11.0.23_9_openj9-0.44.0.tar.gz", + "version": "11.0.23" } }, "openjdk16": { @@ -218,28 +266,44 @@ }, "openjdk17": { "aarch64": { - "build": "8", - "sha256": "4057c94cd46b814cc5a4d683d5f0b95dbd0b9e13e8c2e11155561ad0d8bec85b", - "url": "https://github.com/ibmruntimes/semeru17-binaries/releases/download/jdk-17.0.4%2B8_openj9-0.33.0/ibm-semeru-open-jre_aarch64_mac_17.0.4_8_openj9-0.33.0.tar.gz", - "version": "17.0.4" + "build": "9", + "sha256": "fbd093ab7218c916aa4f49ac851635020dd1c8a98a98158fc44a6565e3d182ed", + "url": "https://github.com/ibmruntimes/semeru17-binaries/releases/download/jdk-17.0.9%2B9_openj9-0.41.0/ibm-semeru-open-jre_aarch64_mac_17.0.9_9_openj9-0.41.0.tar.gz", + "version": "17.0.9" + }, + "packageType": "jre", + "vmType": "openj9", + "x86_64": { + "build": "9", + "sha256": "f5781de29132c04f54341349e99954ec3cfbdbc65fdebdd00feff47c68793299", + "url": "https://github.com/ibmruntimes/semeru17-binaries/releases/download/jdk-17.0.9%2B9_openj9-0.41.0/ibm-semeru-open-jre_x64_mac_17.0.9_9_openj9-0.41.0.tar.gz", + "version": "17.0.9" + } + }, + "openjdk21": { + "aarch64": { + "build": "9", + "sha256": "55650c3825a22dc1caabf672ee8e2ef3ce4cee32df92e7317780d3eae18f17a5", + "url": "https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.3%2B9_openj9-0.44.0/ibm-semeru-open-jre_aarch64_mac_21.0.3_9_openj9-0.44.0.tar.gz", + "version": "21.0.3" }, "packageType": "jre", "vmType": "openj9", "x86_64": { - "build": "8", - "sha256": "8e957d2eb47eaca64516ac669272c6e5186155ed8ee4d6a77e0d4b7811cd7bb6", - "url": "https://github.com/ibmruntimes/semeru17-binaries/releases/download/jdk-17.0.4%2B8_openj9-0.33.0/ibm-semeru-open-jre_x64_mac_17.0.4_8_openj9-0.33.0.tar.gz", - "version": "17.0.4" + "build": "9", + "sha256": "4b4d6da4da96dfa233d0c262bcaecb15b29162a81c802179f56e4084141c6fd8", + "url": "https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.3%2B9_openj9-0.44.0/ibm-semeru-open-jre_x64_mac_21.0.3_9_openj9-0.44.0.tar.gz", + "version": "21.0.3" } }, "openjdk8": { "packageType": "jre", "vmType": "openj9", "x86_64": { - "build": "01", - "sha256": "019e08dea8fbd54517dacbeac791d85717902800dd8bba77fbca1dfc6b0abd9e", - "url": "https://github.com/ibmruntimes/semeru8-binaries/releases/download/8u345-b01_openj9-0.33.0/ibm-semeru-open-jre_x64_mac_8u345b01_openj9-0.33.0.tar.gz", - "version": "8.0.345" + "build": "08", + "sha256": "baf7d026012acc234fb1c2e64adf544a84449c856ee25a130c5aec32fbe34e3a", + "url": "https://github.com/ibmruntimes/semeru8-binaries/releases/download/jdk8u412-b08_openj9-0.44.0/ibm-semeru-open-jre_x64_mac_8u412b08_openj9-0.44.0.tar.gz", + "version": "8.0.412" } } } diff --git a/pkgs/development/compilers/shaderc/default.nix b/pkgs/development/compilers/shaderc/default.nix index bb8030406aebb..968a3014fa405 100644 --- a/pkgs/development/compilers/shaderc/default.nix +++ b/pkgs/development/compilers/shaderc/default.nix @@ -63,7 +63,7 @@ stdenv.mkDerivation rec { meta = with lib; { inherit (src.meta) homepage; - description = "A collection of tools, libraries and tests for shader compilation"; + description = "Collection of tools, libraries and tests for shader compilation"; platforms = platforms.all; license = [ licenses.asl20 ]; }; diff --git a/pkgs/development/compilers/sjasmplus/default.nix b/pkgs/development/compilers/sjasmplus/default.nix index 61d85b95c4527..b9c6a4b171ea2 100644 --- a/pkgs/development/compilers/sjasmplus/default.nix +++ b/pkgs/development/compilers/sjasmplus/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { meta = with lib; { homepage = "https://z00m128.github.io/sjasmplus/"; - description = "A Z80 assembly language cross compiler. It is based on the SjASM source code by Sjoerd Mastijn"; + description = "Z80 assembly language cross compiler. It is based on the SjASM source code by Sjoerd Mastijn"; mainProgram = "sjasmplus"; license = licenses.bsd3; platforms = platforms.all; diff --git a/pkgs/development/compilers/solc/default.nix b/pkgs/development/compilers/solc/default.nix index 0603706164ae6..2147d59ffd933 100644 --- a/pkgs/development/compilers/solc/default.nix +++ b/pkgs/development/compilers/solc/default.nix @@ -3,7 +3,6 @@ , boost , cmake , coreutils -, fetchpatch , jq , ncurses , python3 diff --git a/pkgs/development/compilers/souffle/default.nix b/pkgs/development/compilers/souffle/default.nix index 68ceb1a7d7f64..dd6c11120e4d1 100644 --- a/pkgs/development/compilers/souffle/default.nix +++ b/pkgs/development/compilers/souffle/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitHub, fetchpatch +{ lib, stdenv, fetchFromGitHub , bash-completion, perl, ncurses, zlib, sqlite, libffi , mcpp, cmake, bison, flex, doxygen, graphviz , makeWrapper @@ -45,7 +45,7 @@ stdenv.mkDerivation rec { outputs = [ "out" ]; meta = with lib; { - description = "A translator of declarative Datalog programs into the C++ language"; + description = "Translator of declarative Datalog programs into the C++ language"; homepage = "https://souffle-lang.github.io/"; platforms = platforms.unix; maintainers = with maintainers; [ thoughtpolice copumpkin wchresta ]; diff --git a/pkgs/development/compilers/spirv-llvm-translator/default.nix b/pkgs/development/compilers/spirv-llvm-translator/default.nix index 777e819b453d6..3e2ef4532c11f 100644 --- a/pkgs/development/compilers/spirv-llvm-translator/default.nix +++ b/pkgs/development/compilers/spirv-llvm-translator/default.nix @@ -112,7 +112,7 @@ stdenv.mkDerivation { meta = with lib; { homepage = "https://github.com/KhronosGroup/SPIRV-LLVM-Translator"; - description = "A tool and a library for bi-directional translation between SPIR-V and LLVM IR"; + description = "Tool and a library for bi-directional translation between SPIR-V and LLVM IR"; mainProgram = "llvm-spirv"; license = licenses.ncsa; platforms = platforms.unix; diff --git a/pkgs/development/compilers/stalin/default.nix b/pkgs/development/compilers/stalin/default.nix index 50603919b8b35..245ebdb0c6cb9 100644 --- a/pkgs/development/compilers/stalin/default.nix +++ b/pkgs/development/compilers/stalin/default.nix @@ -38,7 +38,7 @@ stdenv.mkDerivation rec { meta = { homepage = "http://www.ece.purdue.edu/~qobi/software.html"; license = lib.licenses.gpl2Plus; - description = "An optimizing Scheme compiler"; + description = "Optimizing Scheme compiler"; maintainers = [ ]; platforms = ["i686-linux"]; # doesn't want to work on 64-bit platforms diff --git a/pkgs/development/compilers/swi-prolog/default.nix b/pkgs/development/compilers/swi-prolog/default.nix index a6049da555784..305c77fbdb8ff 100644 --- a/pkgs/development/compilers/swi-prolog/default.nix +++ b/pkgs/development/compilers/swi-prolog/default.nix @@ -79,7 +79,7 @@ stdenv.mkDerivation { meta = { homepage = "https://www.swi-prolog.org"; - description = "A Prolog compiler and interpreter"; + description = "Prolog compiler and interpreter"; license = lib.licenses.bsd2; mainProgram = "swipl"; platforms = lib.platforms.linux ++ lib.optionals (!withGui) lib.platforms.darwin; diff --git a/pkgs/development/compilers/swift/compiler/default.nix b/pkgs/development/compilers/swift/compiler/default.nix index cef1358aed735..3576735d9dc71 100644 --- a/pkgs/development/compilers/swift/compiler/default.nix +++ b/pkgs/development/compilers/swift/compiler/default.nix @@ -696,7 +696,7 @@ in stdenv.mkDerivation { }; meta = { - description = "The Swift Programming Language"; + description = "Swift Programming Language"; homepage = "https://github.com/apple/swift"; maintainers = with lib.maintainers; [ dtzWill trepetti dduan trundle stephank ]; license = lib.licenses.asl20; diff --git a/pkgs/development/compilers/swift/swiftpm/default.nix b/pkgs/development/compilers/swift/swiftpm/default.nix index 2f3cb9530cfe5..ff4f5f1e1b10c 100644 --- a/pkgs/development/compilers/swift/swiftpm/default.nix +++ b/pkgs/development/compilers/swift/swiftpm/default.nix @@ -455,7 +455,7 @@ in stdenv.mkDerivation (commonAttrs // { setupHook = ./setup-hook.sh; meta = { - description = "The Package Manager for the Swift Programming Language"; + description = "Package Manager for the Swift Programming Language"; homepage = "https://github.com/apple/swift-package-manager"; platforms = with lib.platforms; linux ++ darwin; license = lib.licenses.asl20; diff --git a/pkgs/development/compilers/terra/default.nix b/pkgs/development/compilers/terra/default.nix index 3f6934f04212c..908e025bf3322 100644 --- a/pkgs/development/compilers/terra/default.nix +++ b/pkgs/development/compilers/terra/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitHub, llvmPackages, ncurses, cmake, libxml2 +{ lib, stdenv, fetchFromGitHub, llvmPackages_16, ncurses, cmake, libxml2 , symlinkJoin, breakpointHook, cudaPackages, enableCUDA ? false , libffi, libobjc, libpfm, Cocoa, Foundation }: @@ -14,6 +14,7 @@ let sha256 = "1g87pl014b5v6z2nnhiwn3wf405skawszfr5wdzyfbx00j3kgxd0"; }; + llvmPackages = llvmPackages_16; llvmMerged = symlinkJoin { name = "llvmClangMerged"; paths = with llvmPackages; [ @@ -91,7 +92,7 @@ in stdenv.mkDerivation rec { ''; meta = with lib; { - description = "A low-level counterpart to Lua"; + description = "Low-level counterpart to Lua"; homepage = "https://terralang.org/"; platforms = platforms.all; maintainers = with maintainers; [ jb55 seylerius thoughtpolice elliottslaughter ]; diff --git a/pkgs/development/compilers/teyjus/default.nix b/pkgs/development/compilers/teyjus/default.nix index 3a44a136b6e25..a8dc7b319c51f 100644 --- a/pkgs/development/compilers/teyjus/default.nix +++ b/pkgs/development/compilers/teyjus/default.nix @@ -20,7 +20,7 @@ buildDunePackage rec { doCheck = true; meta = with lib; { - description = "An efficient implementation of the Lambda Prolog language"; + description = "Efficient implementation of the Lambda Prolog language"; homepage = "https://github.com/teyjus/teyjus"; changelog = "https://github.com/teyjus/teyjus/releases/tag/v${version}"; license = lib.licenses.gpl3; diff --git a/pkgs/development/compilers/tinycc/default.nix b/pkgs/development/compilers/tinycc/default.nix index a848accf16669..b36eb44229d18 100644 --- a/pkgs/development/compilers/tinycc/default.nix +++ b/pkgs/development/compilers/tinycc/default.nix @@ -79,6 +79,11 @@ stdenv.mkDerivation (finalAttrs: { configureFlagsArray+=("--elfinterp=$(< $NIX_CC/nix-support/dynamic-linker)") ''; + env.NIX_CFLAGS_COMPILE = toString (lib.optionals stdenv.cc.isClang [ + "-Wno-error=implicit-int" + "-Wno-error=int-conversion" + ]); + # Test segfault for static build doCheck = !stdenv.hostPlatform.isStatic; diff --git a/pkgs/development/compilers/tvm/default.nix b/pkgs/development/compilers/tvm/default.nix index 3613ed55e0844..97c335cff09f4 100644 --- a/pkgs/development/compilers/tvm/default.nix +++ b/pkgs/development/compilers/tvm/default.nix @@ -2,14 +2,14 @@ stdenv.mkDerivation rec { pname = "tvm"; - version = "0.15.0"; + version = "0.16.0"; src = fetchFromGitHub { owner = "apache"; repo = "incubator-tvm"; rev = "v${version}"; fetchSubmodules = true; - sha256 = "sha256-VbJptTUi12pJh1wz4I+xL6HVo/rSiUHCkvgEMPe1F6o="; + sha256 = "sha256-g8Z5MRM3KIgCjGxtU9JLEsFUjFxPKmc6OwY17C59cxg="; }; nativeBuildInputs = [ cmake ]; @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { meta = with lib; { homepage = "https://tvm.apache.org/"; - description = "An End to End Deep Learning Compiler Stack for CPUs, GPUs and accelerators"; + description = "End to End Deep Learning Compiler Stack for CPUs, GPUs and accelerators"; license = licenses.asl20; platforms = platforms.all; maintainers = with maintainers; [ adelbertc ]; diff --git a/pkgs/development/compilers/typescript/default.nix b/pkgs/development/compilers/typescript/default.nix index 802d31f0d646d..4eca8e576c2cf 100644 --- a/pkgs/development/compilers/typescript/default.nix +++ b/pkgs/development/compilers/typescript/default.nix @@ -2,20 +2,20 @@ buildNpmPackage rec { pname = "typescript"; - version = "5.4.5"; + version = "5.5.2"; src = fetchFromGitHub { owner = "microsoft"; repo = "TypeScript"; rev = "v${version}"; - hash = "sha256-W2ulYb06K4VSlFTYOmXTBHrjWXnQdDGzkwBxvl+QJWo="; + hash = "sha256-2BgMzOW9DIIncujAVJ/C8L9aMwDkNaj47cV2JSxCPrw="; }; patches = [ ./disable-dprint-dstBundler.patch ]; - npmDepsHash = "sha256-T0WfJaSVzwbNbTL1AiuzMUW/3MKMOZo14v4Ut9Iqxas="; + npmDepsHash = "sha256-/WQgSoklW1szgJ/5iN0Dg+L7BMByvyc+KcvYiQNjGEw="; passthru.tests = { version = testers.testVersion { @@ -24,7 +24,7 @@ buildNpmPackage rec { }; meta = with lib; { - description = "A superset of JavaScript that compiles to clean JavaScript output"; + description = "Superset of JavaScript that compiles to clean JavaScript output"; homepage = "https://www.typescriptlang.org/"; changelog = "https://github.com/microsoft/TypeScript/releases/tag/v${version}"; license = licenses.asl20; diff --git a/pkgs/development/compilers/uasm/default.nix b/pkgs/development/compilers/uasm/default.nix index ba3e5b03a5849..21d9a2bf5d48e 100644 --- a/pkgs/development/compilers/uasm/default.nix +++ b/pkgs/development/compilers/uasm/default.nix @@ -55,7 +55,7 @@ stdenv.mkDerivation rec { meta = with lib; { homepage = "https://www.terraspace.co.uk/uasm.html"; - description = "A free MASM-compatible assembler based on JWasm"; + description = "Free MASM-compatible assembler based on JWasm"; mainProgram = "uasm"; platforms = platforms.unix; maintainers = with maintainers; [ thiagokokada ]; diff --git a/pkgs/development/compilers/unison/default.nix b/pkgs/development/compilers/unison/default.nix index 7afdd45c459d3..587ca9d7f35e0 100644 --- a/pkgs/development/compilers/unison/default.nix +++ b/pkgs/development/compilers/unison/default.nix @@ -4,24 +4,26 @@ , gmp , less , makeWrapper +, libb2 , ncurses6 +, openssl , stdenv , zlib }: stdenv.mkDerivation (finalAttrs: { pname = "unison-code-manager"; - version = "0.5.19"; + version = "0.5.22"; src = if stdenv.isDarwin then fetchurl { url = "https://github.com/unisonweb/unison/releases/download/release/${finalAttrs.version}/ucm-macos.tar.gz"; - hash = "sha256-//bjpmW45BqBHmBIj2uMahYQYjhNJ8hvGh+O/7oYQOk="; + hash = "sha256-Exgi0eKk+ZngpnbfY/btHf+uiXcmummnWKfmCUESWgc="; } else fetchurl { url = "https://github.com/unisonweb/unison/releases/download/release/${finalAttrs.version}/ucm-linux.tar.gz"; - hash = "sha256-3WyiV6mIuo5GDpDK/KdWMvj22sZ3uph15u3v3TX5YZA="; + hash = "sha256-EWfyqaFtGJJ5GE0mRTtNC9hHOzbqG9MsvRh5sFq5pRY="; }; # The tarball is just the prebuilt binary, in the archive root. @@ -31,14 +33,17 @@ stdenv.mkDerivation (finalAttrs: { nativeBuildInputs = [ makeWrapper ] ++ lib.optional (!stdenv.isDarwin) autoPatchelfHook; - buildInputs = lib.optionals (!stdenv.isDarwin) [ ncurses6 zlib gmp ]; + buildInputs = lib.optionals (!stdenv.isDarwin) [ gmp ncurses6 zlib ]; installPhase = '' - mkdir -p $out/bin - mv ucm $out/bin + mkdir -p $out/{bin,lib} + mv runtime $out/lib/runtime mv ui $out/ui - wrapProgram $out/bin/ucm \ + mv unison $out/unison + makeWrapper $out/unison/unison $out/bin/ucm \ + --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libb2 openssl ]} \ --prefix PATH ":" "${lib.makeBinPath [ less ]}" \ + --add-flags "--runtime-path $out/lib/runtime/bin/unison-runtime" \ --set UCM_WEB_UI "$out/ui" ''; @@ -47,7 +52,7 @@ stdenv.mkDerivation (finalAttrs: { homepage = "https://unisonweb.org/"; license = with licenses; [ mit bsd3 ]; mainProgram = "ucm"; - maintainers = [ maintainers.virusdave ]; + maintainers = with maintainers; [ ceedubs sellout virusdave ]; platforms = [ "x86_64-darwin" "x86_64-linux" "aarch64-darwin" ]; sourceProvenance = with sourceTypes; [ binaryNativeCode ]; }; diff --git a/pkgs/development/compilers/vala/default.nix b/pkgs/development/compilers/vala/default.nix index 86caf243a559c..1b880b61a05a1 100644 --- a/pkgs/development/compilers/vala/default.nix +++ b/pkgs/development/compilers/vala/default.nix @@ -1,10 +1,10 @@ -{ stdenv, lib, fetchurl, fetchpatch, pkg-config, flex, bison, libxslt, autoconf, autoreconfHook -, gnome, graphviz, glib, libiconv, libintl, libtool, expat, substituteAll, vala +{ stdenv, lib, fetchurl, pkg-config, flex, bison, libxslt, autoconf, autoreconfHook +, gnome, graphviz, glib, libiconv, libintl, libtool, expat, substituteAll, vala, gobject-introspection }: let generic = lib.makeOverridable ({ - version, sha256, + version, hash, extraNativeBuildInputs ? [], extraBuildInputs ? [], withGraphviz ? false @@ -30,7 +30,7 @@ let src = fetchurl { url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; - inherit sha256; + inherit hash; }; postPatch = '' @@ -49,7 +49,7 @@ let outputs = [ "out" "devdoc" ]; nativeBuildInputs = [ - pkg-config flex bison libxslt + pkg-config flex bison libxslt gobject-introspection ] ++ lib.optional (stdenv.isDarwin) expat ++ lib.optional disableGraphviz autoreconfHook # if we changed our ./configure script, need to reconfigure ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ vala ] @@ -86,8 +86,8 @@ let in rec { vala_0_56 = generic { - version = "0.56.14"; - sha256 = "k4LCaMqb3AKq7cgVKpgYvzk1JzBB9inFbeQQ42Cj9Vc="; + version = "0.56.17"; + hash = "sha256-JhAMTk7wBJxhknXxQNl89WWIPQDHVDyCvM5aQmk07Wo="; }; vala = vala_0_56; diff --git a/pkgs/development/compilers/x11basic/default.nix b/pkgs/development/compilers/x11basic/default.nix index 3ce548c9b4832..db1a0bc3ba828 100644 --- a/pkgs/development/compilers/x11basic/default.nix +++ b/pkgs/development/compilers/x11basic/default.nix @@ -39,7 +39,7 @@ stdenv.mkDerivation rec { meta = with lib; { homepage = "https://x11-basic.sourceforge.net/"; - description = "A Basic interpreter and compiler with graphics capabilities"; + description = "Basic interpreter and compiler with graphics capabilities"; license = licenses.gpl2; maintainers = with maintainers; [ edwtjo ]; platforms = platforms.unix; diff --git a/pkgs/development/compilers/yap/default.nix b/pkgs/development/compilers/yap/default.nix index 7828d0e9b2590..db7d9b05b7fbb 100644 --- a/pkgs/development/compilers/yap/default.nix +++ b/pkgs/development/compilers/yap/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { # the linux 32 bit build fails. broken = (stdenv.isLinux && stdenv.isAarch64) || !stdenv.is64bit; homepage = "http://www.dcc.fc.up.pt/~vsc/Yap/"; - description = "A ISO-compatible high-performance Prolog compiler"; + description = "ISO-compatible high-performance Prolog compiler"; license = lib.licenses.artistic2; platforms = lib.platforms.linux; diff --git a/pkgs/development/compilers/yosys/default.nix b/pkgs/development/compilers/yosys/default.nix index ee8fe6cee576f..3205f5b22dcda 100644 --- a/pkgs/development/compilers/yosys/default.nix +++ b/pkgs/development/compilers/yosys/default.nix @@ -171,6 +171,6 @@ in stdenv.mkDerivation (finalAttrs: { homepage = "https://yosyshq.net/yosys/"; license = licenses.isc; platforms = platforms.all; - maintainers = with maintainers; [ shell thoughtpolice emily Luflosi ]; + maintainers = with maintainers; [ shell thoughtpolice Luflosi ]; }; }) diff --git a/pkgs/development/compilers/yosys/plugins/synlig.nix b/pkgs/development/compilers/yosys/plugins/synlig.nix index 665421af21f3f..0c6fc5e3f89ef 100644 --- a/pkgs/development/compilers/yosys/plugins/synlig.nix +++ b/pkgs/development/compilers/yosys/plugins/synlig.nix @@ -97,5 +97,6 @@ stdenv.mkDerivation (finalAttrs: { license = licenses.asl20; maintainers = with maintainers; [ hzeller ]; platforms = platforms.all; + broken = versionAtLeast yosys.version "0.39"; }; }) diff --git a/pkgs/development/compilers/zig/0.10.nix b/pkgs/development/compilers/zig/0.10.nix deleted file mode 100644 index d02b9ff1c976b..0000000000000 --- a/pkgs/development/compilers/zig/0.10.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ lib -, stdenv -, fetchFromGitHub -, cmake -, llvmPackages -, libxml2 -, zlib -, coreutils -, callPackage -}@args: - -import ./generic.nix args { - version = "0.10.1"; - - hash = "sha256-69QIkkKzApOGfrBdgtmxFMDytRkSh+0YiaJQPbXsBeo="; - - outputs = [ "out" "doc" ]; - - patches = [ - # Backport alignment related panics from zig-master to 0.10. - # Upstream issue: https://github.com/ziglang/zig/issues/14559 - ./002-0.10-macho-fixes.patch - ]; - - cmakeFlags = [ - # file RPATH_CHANGE could not write new RPATH - "-DCMAKE_SKIP_BUILD_RPATH=ON" - - # always link against static build of LLVM - "-DZIG_STATIC_LLVM=ON" - - # ensure determinism in the compiler build - "-DZIG_TARGET_MCPU=baseline" - ]; - - postBuild = '' - ./zig2 run ../doc/docgen.zig -- ./zig2 ../doc/langref.html.in langref.html - ''; - - postInstall = '' - install -Dm644 -t $doc/share/doc/zig-$version/html ./langref.html - ''; -} diff --git a/pkgs/development/compilers/zig/002-0.10-macho-fixes.patch b/pkgs/development/compilers/zig/0.10/001-0.10-macho-fixes.patch index 95f0bdf701e29..95f0bdf701e29 100644 --- a/pkgs/development/compilers/zig/002-0.10-macho-fixes.patch +++ b/pkgs/development/compilers/zig/0.10/001-0.10-macho-fixes.patch diff --git a/pkgs/development/compilers/zig/0.10/default.nix b/pkgs/development/compilers/zig/0.10/default.nix new file mode 100644 index 0000000000000..170edafa819cf --- /dev/null +++ b/pkgs/development/compilers/zig/0.10/default.nix @@ -0,0 +1,109 @@ +{ + lib, + callPackage, + cmake, + coreutils, + fetchFromGitHub, + libxml2, + llvmPackages, + stdenv, + testers, + zlib, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "zig"; + version = "0.10.1"; + + src = fetchFromGitHub { + owner = "ziglang"; + repo = "zig"; + rev = finalAttrs.version; + hash = "sha256-69QIkkKzApOGfrBdgtmxFMDytRkSh+0YiaJQPbXsBeo="; + }; + + patches = [ + # Backport alignment related panics from zig-master to 0.10. + # Upstream issue: https://github.com/ziglang/zig/issues/14559 + ./001-0.10-macho-fixes.patch + ]; + + nativeBuildInputs = [ + cmake + (lib.getDev llvmPackages.llvm) + ]; + + buildInputs = + [ + libxml2 + zlib + ] + ++ (with llvmPackages; [ + libclang + lld + llvm + ]); + + outputs = [ + "out" + "doc" + ]; + + cmakeFlags = [ + # file RPATH_CHANGE could not write new RPATH + (lib.cmakeBool "CMAKE_SKIP_BUILD_RPATH" true) + # always link against static build of LLVM + (lib.cmakeBool "ZIG_STATIC_LLVM" true) + # ensure determinism in the compiler build + (lib.cmakeFeature "ZIG_TARGET_MCPU" "baseline") + ]; + + env.ZIG_GLOBAL_CACHE_DIR = "$TMPDIR/zig-cache"; + + doInstallCheck = true; + + strictDeps = true; + + # Zig's build looks at /usr/bin/env to find dynamic linking info. This doesn't + # work in Nix's sandbox. Use env from our coreutils instead. + postPatch = '' + substituteInPlace lib/std/zig/system/NativeTargetInfo.zig \ + --replace "/usr/bin/env" "${lib.getExe' coreutils "env"}" + ''; + + postBuild = '' + ./zig2 run ../doc/docgen.zig -- ./zig2 ../doc/langref.html.in langref.html + ''; + + postInstall = '' + install -Dm644 -t $doc/share/doc/zig-$version/html ./langref.html + ''; + + installCheckPhase = '' + runHook preInstallCheck + + $out/bin/zig test --cache-dir "$TMPDIR/zig-test-cache" -I $src/test $src/test/behavior.zig + + runHook postInstallCheck + ''; + + passthru = { + hook = callPackage ./hook.nix { zig = finalAttrs.finalPackage; }; + tests = { + version = testers.testVersion { + package = finalAttrs.finalPackage; + command = "zig version"; + }; + }; + }; + + 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; + mainProgram = "zig"; + maintainers = with lib.maintainers; [ andrewrk ] ++ lib.teams.zig.members; + platforms = lib.platforms.unix; + }; +}) diff --git a/pkgs/development/compilers/zig/0.10/hook.nix b/pkgs/development/compilers/zig/0.10/hook.nix new file mode 100644 index 0000000000000..1d3439b1af620 --- /dev/null +++ b/pkgs/development/compilers/zig/0.10/hook.nix @@ -0,0 +1,47 @@ +{ + lib, + makeSetupHook, + zig, +}: + +makeSetupHook { + name = "zig-hook"; + + propagatedBuildInputs = [ zig ]; + + substitutions = { + # This zig_default_flags below is meant to avoid CPU feature impurity in + # Nixpkgs. However, this flagset is "unstable": it is specifically meant to + # be controlled by the upstream development team - being up to that team + # exposing or not that flags to the outside (especially the package manager + # teams). + + # Because of this hurdle, @andrewrk from Zig Software Foundation proposed + # some solutions for this issue. Hopefully they will be implemented in + # future releases of Zig. When this happens, this flagset should be + # revisited accordingly. + + # Below are some useful links describing the discovery process of this 'bug' + # in Nixpkgs: + + # https://github.com/NixOS/nixpkgs/issues/169461 + # https://github.com/NixOS/nixpkgs/issues/185644 + # https://github.com/NixOS/nixpkgs/pull/197046 + # https://github.com/NixOS/nixpkgs/pull/241741#issuecomment-1624227485 + # https://github.com/ziglang/zig/issues/14281#issuecomment-1624220653 + + zig_default_flags = [ + "-Dcpu=baseline" + "-Drelease-safe=true" + ]; + }; + + passthru = { + inherit zig; + }; + + meta = { + description = "Setup hook for using the Zig compiler in Nixpkgs"; + inherit (zig.meta) maintainers platforms broken; + }; +} ./setup-hook.sh diff --git a/pkgs/development/compilers/zig/0.10/setup-hook.sh b/pkgs/development/compilers/zig/0.10/setup-hook.sh new file mode 100644 index 0000000000000..689ebec8a3077 --- /dev/null +++ b/pkgs/development/compilers/zig/0.10/setup-hook.sh @@ -0,0 +1,70 @@ +# shellcheck shell=bash disable=SC2154,SC2086 + +readonly zigDefaultFlagsArray=(@zig_default_flags@) + +function zigSetGlobalCacheDir { + ZIG_GLOBAL_CACHE_DIR=$(mktemp -d) + export ZIG_GLOBAL_CACHE_DIR +} + +function zigBuildPhase { + runHook preBuild + + local flagsArray=( + "${zigDefaultFlagsArray[@]}" + $zigBuildFlags "${zigBuildFlagsArray[@]}" + ) + + echoCmd 'zig build flags' "${flagsArray[@]}" + zig build "${flagsArray[@]}" + + runHook postBuild +} + +function zigCheckPhase { + runHook preCheck + + local flagsArray=( + "${zigDefaultFlagsArray[@]}" + $zigCheckFlags "${zigCheckFlagsArray[@]}" + ) + + echoCmd 'zig check flags' "${flagsArray[@]}" + zig build test "${flagsArray[@]}" + + runHook postCheck +} + +function zigInstallPhase { + runHook preInstall + + local flagsArray=( + "${zigDefaultFlagsArray[@]}" + $zigBuildFlags "${zigBuildFlagsArray[@]}" + $zigInstallFlags "${zigInstallFlagsArray[@]}" + ) + + if [ -z "${dontAddPrefix-}" ]; then + # Zig does not recognize `--prefix=/dir/`, only `--prefix /dir/` + flagsArray+=("${prefixKey:---prefix}" "$prefix") + fi + + echoCmd 'zig install flags' "${flagsArray[@]}" + zig build install "${flagsArray[@]}" + + runHook postInstall +} + +addEnvHooks "$targetOffset" zigSetGlobalCacheDir + +if [ -z "${dontUseZigBuild-}" ] && [ -z "${buildPhase-}" ]; then + buildPhase=zigBuildPhase +fi + +if [ -z "${dontUseZigCheck-}" ] && [ -z "${checkPhase-}" ]; then + checkPhase=zigCheckPhase +fi + +if [ -z "${dontUseZigInstall-}" ] && [ -z "${installPhase-}" ]; then + installPhase=zigInstallPhase +fi diff --git a/pkgs/development/compilers/zig/0.11.nix b/pkgs/development/compilers/zig/0.11.nix deleted file mode 100644 index b393f42c65136..0000000000000 --- a/pkgs/development/compilers/zig/0.11.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ lib -, stdenv -, fetchFromGitHub -, cmake -, llvmPackages -, libxml2 -, zlib -, coreutils -, callPackage -}@args: - -import ./generic.nix args { - version = "0.11.0"; - - hash = "sha256-iuU1fzkbJxI+0N1PiLQM013Pd1bzrgqkbIyTxo5gB2I="; - - outputs = [ "out" "doc" ]; - - cmakeFlags = [ - # file RPATH_CHANGE could not write new RPATH - "-DCMAKE_SKIP_BUILD_RPATH=ON" - - # always link against static build of LLVM - "-DZIG_STATIC_LLVM=ON" - - # ensure determinism in the compiler build - "-DZIG_TARGET_MCPU=baseline" - ]; - - postBuild = '' - stage3/bin/zig run ../tools/docgen.zig -- ../doc/langref.html.in langref.html --zig $PWD/stage3/bin/zig - ''; - - postInstall = '' - install -Dm444 -t $doc/share/doc/zig-$version/html langref.html - ''; -} diff --git a/pkgs/development/compilers/zig/0.11/default.nix b/pkgs/development/compilers/zig/0.11/default.nix new file mode 100644 index 0000000000000..0f19f455cbb0f --- /dev/null +++ b/pkgs/development/compilers/zig/0.11/default.nix @@ -0,0 +1,103 @@ +{ + lib, + callPackage, + cmake, + coreutils, + fetchFromGitHub, + libxml2, + llvmPackages, + stdenv, + testers, + zlib, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "zig"; + version = "0.11.0"; + + src = fetchFromGitHub { + owner = "ziglang"; + repo = "zig"; + rev = finalAttrs.version; + hash = "sha256-iuU1fzkbJxI+0N1PiLQM013Pd1bzrgqkbIyTxo5gB2I="; + }; + + nativeBuildInputs = [ + cmake + (lib.getDev llvmPackages.llvm) + ]; + + buildInputs = + [ + libxml2 + zlib + ] + ++ (with llvmPackages; [ + libclang + lld + llvm + ]); + + outputs = [ + "out" + "doc" + ]; + + cmakeFlags = [ + # file RPATH_CHANGE could not write new RPATH + (lib.cmakeBool "CMAKE_SKIP_BUILD_RPATH" true) + # ensure determinism in the compiler build + (lib.cmakeFeature "ZIG_TARGET_MCPU" "baseline") + # always link against static build of LLVM + (lib.cmakeBool "ZIG_STATIC_LLVM" true) + ]; + + env.ZIG_GLOBAL_CACHE_DIR = "$TMPDIR/zig-cache"; + + doInstallCheck = true; + + strictDeps = true; + + # Zig's build looks at /usr/bin/env to find dynamic linking info. This doesn't + # work in Nix's sandbox. Use env from our coreutils instead. + postPatch = '' + substituteInPlace lib/std/zig/system/NativeTargetInfo.zig \ + --replace "/usr/bin/env" "${lib.getExe' coreutils "env"}" + ''; + + postBuild = '' + stage3/bin/zig run ../tools/docgen.zig -- ../doc/langref.html.in langref.html --zig $PWD/stage3/bin/zig + ''; + + postInstall = '' + install -Dm444 -t $doc/share/doc/zig-$version/html langref.html + ''; + + installCheckPhase = '' + runHook preInstallCheck + + $out/bin/zig test --cache-dir "$TMPDIR/zig-test-cache" -I $src/test $src/test/behavior.zig + + runHook postInstallCheck + ''; + + passthru = { + hook = callPackage ./hook.nix { zig = finalAttrs.finalPackage; }; + tests = { + version = testers.testVersion { + package = finalAttrs.finalPackage; + command = "zig version"; + }; + }; + }; + + 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; + mainProgram = "zig"; + maintainers = with lib.maintainers; [ andrewrk ] ++ lib.teams.zig.members; + platforms = lib.platforms.unix; + }; +}) diff --git a/pkgs/development/compilers/zig/0.11/hook.nix b/pkgs/development/compilers/zig/0.11/hook.nix new file mode 100644 index 0000000000000..fb0e1aa564d15 --- /dev/null +++ b/pkgs/development/compilers/zig/0.11/hook.nix @@ -0,0 +1,47 @@ +{ + lib, + makeSetupHook, + zig, +}: + +makeSetupHook { + name = "zig-hook"; + + propagatedBuildInputs = [ zig ]; + + substitutions = { + # This zig_default_flags below is meant to avoid CPU feature impurity in + # Nixpkgs. However, this flagset is "unstable": it is specifically meant to + # be controlled by the upstream development team - being up to that team + # exposing or not that flags to the outside (especially the package manager + # teams). + + # Because of this hurdle, @andrewrk from Zig Software Foundation proposed + # some solutions for this issue. Hopefully they will be implemented in + # future releases of Zig. When this happens, this flagset should be + # revisited accordingly. + + # Below are some useful links describing the discovery process of this 'bug' + # in Nixpkgs: + + # https://github.com/NixOS/nixpkgs/issues/169461 + # https://github.com/NixOS/nixpkgs/issues/185644 + # https://github.com/NixOS/nixpkgs/pull/197046 + # https://github.com/NixOS/nixpkgs/pull/241741#issuecomment-1624227485 + # https://github.com/ziglang/zig/issues/14281#issuecomment-1624220653 + + zig_default_flags = [ + "-Dcpu=baseline" + "-Doptimize=ReleaseSafe" + ]; + }; + + passthru = { + inherit zig; + }; + + meta = { + description = "Setup hook for using the Zig compiler in Nixpkgs"; + inherit (zig.meta) maintainers platforms broken; + }; +} ./setup-hook.sh diff --git a/pkgs/development/compilers/zig/0.11/setup-hook.sh b/pkgs/development/compilers/zig/0.11/setup-hook.sh new file mode 100644 index 0000000000000..689ebec8a3077 --- /dev/null +++ b/pkgs/development/compilers/zig/0.11/setup-hook.sh @@ -0,0 +1,70 @@ +# shellcheck shell=bash disable=SC2154,SC2086 + +readonly zigDefaultFlagsArray=(@zig_default_flags@) + +function zigSetGlobalCacheDir { + ZIG_GLOBAL_CACHE_DIR=$(mktemp -d) + export ZIG_GLOBAL_CACHE_DIR +} + +function zigBuildPhase { + runHook preBuild + + local flagsArray=( + "${zigDefaultFlagsArray[@]}" + $zigBuildFlags "${zigBuildFlagsArray[@]}" + ) + + echoCmd 'zig build flags' "${flagsArray[@]}" + zig build "${flagsArray[@]}" + + runHook postBuild +} + +function zigCheckPhase { + runHook preCheck + + local flagsArray=( + "${zigDefaultFlagsArray[@]}" + $zigCheckFlags "${zigCheckFlagsArray[@]}" + ) + + echoCmd 'zig check flags' "${flagsArray[@]}" + zig build test "${flagsArray[@]}" + + runHook postCheck +} + +function zigInstallPhase { + runHook preInstall + + local flagsArray=( + "${zigDefaultFlagsArray[@]}" + $zigBuildFlags "${zigBuildFlagsArray[@]}" + $zigInstallFlags "${zigInstallFlagsArray[@]}" + ) + + if [ -z "${dontAddPrefix-}" ]; then + # Zig does not recognize `--prefix=/dir/`, only `--prefix /dir/` + flagsArray+=("${prefixKey:---prefix}" "$prefix") + fi + + echoCmd 'zig install flags' "${flagsArray[@]}" + zig build install "${flagsArray[@]}" + + runHook postInstall +} + +addEnvHooks "$targetOffset" zigSetGlobalCacheDir + +if [ -z "${dontUseZigBuild-}" ] && [ -z "${buildPhase-}" ]; then + buildPhase=zigBuildPhase +fi + +if [ -z "${dontUseZigCheck-}" ] && [ -z "${checkPhase-}" ]; then + checkPhase=zigCheckPhase +fi + +if [ -z "${dontUseZigInstall-}" ] && [ -z "${installPhase-}" ]; then + installPhase=zigInstallPhase +fi diff --git a/pkgs/development/compilers/zig/0.12.nix b/pkgs/development/compilers/zig/0.12.nix deleted file mode 100644 index e234b600bc227..0000000000000 --- a/pkgs/development/compilers/zig/0.12.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ lib -, stdenv -, fetchFromGitHub -, cmake -, llvmPackages -, libxml2 -, zlib -, coreutils -, callPackage -}@args: - -import ./generic.nix args { - version = "0.12.0"; - - hash = "sha256-RNZiUZtaKXoab5kFrDij6YCAospeVvlLWheTc3FGMks="; - - outputs = [ "out" "doc" ]; - - cmakeFlags = [ - # file RPATH_CHANGE could not write new RPATH - (lib.cmakeBool "CMAKE_SKIP_BUILD_RPATH" true) - - # always link against static build of LLVM - (lib.cmakeBool "ZIG_STATIC_LLVM" true) - - # ensure determinism in the compiler build - (lib.cmakeFeature "ZIG_TARGET_MCPU" "baseline") - ]; - - postBuild = '' - stage3/bin/zig run ../tools/docgen.zig -- ../doc/langref.html.in langref.html --zig $PWD/stage3/bin/zig - ''; - - postInstall = '' - install -Dm444 langref.html -t $doc/share/doc/zig-$version/html - ''; -} diff --git a/pkgs/development/compilers/zig/0.12/default.nix b/pkgs/development/compilers/zig/0.12/default.nix new file mode 100644 index 0000000000000..88bb0169dd8a6 --- /dev/null +++ b/pkgs/development/compilers/zig/0.12/default.nix @@ -0,0 +1,115 @@ +{ + lib, + callPackage, + cmake, + coreutils, + fetchFromGitHub, + libxml2, + llvmPackages, + stdenv, + testers, + zlib, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "zig"; + version = "0.12.1"; + + src = fetchFromGitHub { + owner = "ziglang"; + repo = "zig"; + rev = finalAttrs.version; + hash = "sha256-C56jyVf16Co/XCloMLSRsbG9r/gBc8mzCdeEMHV2T2s="; + }; + + nativeBuildInputs = [ + cmake + (lib.getDev llvmPackages.llvm) + ]; + + buildInputs = + [ + libxml2 + zlib + ] + ++ (with llvmPackages; [ + libclang + lld + llvm + ]); + + # On Darwin, Zig calls std.zig.system.darwin.macos.detect during the build, + # which parses /System/Library/CoreServices/SystemVersion.plist and + # /System/Library/CoreServices/.SystemVersionPlatform.plist to determine the + # OS version. This causes the build to fail during stage 3 with + # OSVersionDetectionFail when the sandbox is enabled. + __impureHostDeps = lib.optionals stdenv.isDarwin [ + "/System/Library/CoreServices/.SystemVersionPlatform.plist" + "/System/Library/CoreServices/SystemVersion.plist" + ]; + + outputs = [ + "out" + "doc" + ]; + + cmakeFlags = [ + # file RPATH_CHANGE could not write new RPATH + (lib.cmakeBool "CMAKE_SKIP_BUILD_RPATH" true) + # ensure determinism in the compiler build + (lib.cmakeFeature "ZIG_TARGET_MCPU" "baseline") + # always link against static build of LLVM + (lib.cmakeBool "ZIG_STATIC_LLVM" true) + ]; + + env.ZIG_GLOBAL_CACHE_DIR = "$TMPDIR/zig-cache"; + + doInstallCheck = true; + + # strictDeps breaks zig when clang is being used. + # https://github.com/NixOS/nixpkgs/issues/317055#issuecomment-2148438395 + strictDeps = !stdenv.cc.isClang; + + # Zig's build looks at /usr/bin/env to find dynamic linking info. This doesn't + # work in Nix's sandbox. Use env from our coreutils instead. + postPatch = '' + substituteInPlace lib/std/zig/system.zig \ + --replace "/usr/bin/env" "${lib.getExe' coreutils "env"}" + ''; + + postBuild = '' + stage3/bin/zig run ../tools/docgen.zig -- ../doc/langref.html.in langref.html --zig $PWD/stage3/bin/zig + ''; + + postInstall = '' + install -Dm444 langref.html -t $doc/share/doc/zig-${finalAttrs.version}/html + ''; + + installCheckPhase = '' + runHook preInstallCheck + + $out/bin/zig test --cache-dir "$TMPDIR/zig-test-cache" -I $src/test $src/test/behavior.zig + + runHook postInstallCheck + ''; + + passthru = { + hook = callPackage ./hook.nix { zig = finalAttrs.finalPackage; }; + tests = { + version = testers.testVersion { + package = finalAttrs.finalPackage; + command = "zig version"; + }; + }; + }; + + meta = { + description = "General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software"; + changelog = "https://ziglang.org/download/${finalAttrs.version}/release-notes.html"; + homepage = "https://ziglang.org/"; + license = lib.licenses.mit; + mainProgram = "zig"; + maintainers = with lib.maintainers; [ andrewrk ] ++ lib.teams.zig.members; + platforms = lib.platforms.unix; + }; +}) diff --git a/pkgs/development/compilers/zig/0.12/hook.nix b/pkgs/development/compilers/zig/0.12/hook.nix new file mode 100644 index 0000000000000..8d3e6206d155e --- /dev/null +++ b/pkgs/development/compilers/zig/0.12/hook.nix @@ -0,0 +1,47 @@ +{ + lib, + makeSetupHook, + zig, +}: + +makeSetupHook { + name = "zig-hook"; + + propagatedBuildInputs = [ zig ]; + + substitutions = { + # This zig_default_flags below is meant to avoid CPU feature impurity in + # Nixpkgs. However, this flagset is "unstable": it is specifically meant to + # be controlled by the upstream development team - being up to that team + # exposing or not that flags to the outside (especially the package manager + # teams). + + # Because of this hurdle, @andrewrk from Zig Software Foundation proposed + # some solutions for this issue. Hopefully they will be implemented in + # future releases of Zig. When this happens, this flagset should be + # revisited accordingly. + + # Below are some useful links describing the discovery process of this 'bug' + # in Nixpkgs: + + # https://github.com/NixOS/nixpkgs/issues/169461 + # https://github.com/NixOS/nixpkgs/issues/185644 + # https://github.com/NixOS/nixpkgs/pull/197046 + # https://github.com/NixOS/nixpkgs/pull/241741#issuecomment-1624227485 + # https://github.com/ziglang/zig/issues/14281#issuecomment-1624220653 + + zig_default_flags = [ + "-Dcpu=baseline" + "--release=safe" + ]; + }; + + passthru = { + inherit zig; + }; + + meta = { + description = "Setup hook for using the Zig compiler in Nixpkgs"; + inherit (zig.meta) maintainers platforms broken; + }; +} ./setup-hook.sh diff --git a/pkgs/development/compilers/zig/0.12/setup-hook.sh b/pkgs/development/compilers/zig/0.12/setup-hook.sh new file mode 100644 index 0000000000000..689ebec8a3077 --- /dev/null +++ b/pkgs/development/compilers/zig/0.12/setup-hook.sh @@ -0,0 +1,70 @@ +# shellcheck shell=bash disable=SC2154,SC2086 + +readonly zigDefaultFlagsArray=(@zig_default_flags@) + +function zigSetGlobalCacheDir { + ZIG_GLOBAL_CACHE_DIR=$(mktemp -d) + export ZIG_GLOBAL_CACHE_DIR +} + +function zigBuildPhase { + runHook preBuild + + local flagsArray=( + "${zigDefaultFlagsArray[@]}" + $zigBuildFlags "${zigBuildFlagsArray[@]}" + ) + + echoCmd 'zig build flags' "${flagsArray[@]}" + zig build "${flagsArray[@]}" + + runHook postBuild +} + +function zigCheckPhase { + runHook preCheck + + local flagsArray=( + "${zigDefaultFlagsArray[@]}" + $zigCheckFlags "${zigCheckFlagsArray[@]}" + ) + + echoCmd 'zig check flags' "${flagsArray[@]}" + zig build test "${flagsArray[@]}" + + runHook postCheck +} + +function zigInstallPhase { + runHook preInstall + + local flagsArray=( + "${zigDefaultFlagsArray[@]}" + $zigBuildFlags "${zigBuildFlagsArray[@]}" + $zigInstallFlags "${zigInstallFlagsArray[@]}" + ) + + if [ -z "${dontAddPrefix-}" ]; then + # Zig does not recognize `--prefix=/dir/`, only `--prefix /dir/` + flagsArray+=("${prefixKey:---prefix}" "$prefix") + fi + + echoCmd 'zig install flags' "${flagsArray[@]}" + zig build install "${flagsArray[@]}" + + runHook postInstall +} + +addEnvHooks "$targetOffset" zigSetGlobalCacheDir + +if [ -z "${dontUseZigBuild-}" ] && [ -z "${buildPhase-}" ]; then + buildPhase=zigBuildPhase +fi + +if [ -z "${dontUseZigCheck-}" ] && [ -z "${checkPhase-}" ]; then + checkPhase=zigCheckPhase +fi + +if [ -z "${dontUseZigInstall-}" ] && [ -z "${installPhase-}" ]; then + installPhase=zigInstallPhase +fi diff --git a/pkgs/development/compilers/zig/0.13/default.nix b/pkgs/development/compilers/zig/0.13/default.nix new file mode 100644 index 0000000000000..0c72b459facf8 --- /dev/null +++ b/pkgs/development/compilers/zig/0.13/default.nix @@ -0,0 +1,115 @@ +{ + lib, + callPackage, + cmake, + coreutils, + fetchFromGitHub, + libxml2, + llvmPackages, + stdenv, + testers, + zlib, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "zig"; + version = "0.13.0"; + + src = fetchFromGitHub { + owner = "ziglang"; + repo = "zig"; + rev = finalAttrs.version; + hash = "sha256-5qSiTq+UWGOwjDVZMIrAt2cDKHkyNPBSAEjpRQUByFM="; + }; + + nativeBuildInputs = [ + cmake + (lib.getDev llvmPackages.llvm) + ]; + + buildInputs = + [ + libxml2 + zlib + ] + ++ (with llvmPackages; [ + libclang + lld + llvm + ]); + + # On Darwin, Zig calls std.zig.system.darwin.macos.detect during the build, + # which parses /System/Library/CoreServices/SystemVersion.plist and + # /System/Library/CoreServices/.SystemVersionPlatform.plist to determine the + # OS version. This causes the build to fail during stage 3 with + # OSVersionDetectionFail when the sandbox is enabled. + __impureHostDeps = lib.optionals stdenv.isDarwin [ + "/System/Library/CoreServices/.SystemVersionPlatform.plist" + "/System/Library/CoreServices/SystemVersion.plist" + ]; + + outputs = [ + "out" + "doc" + ]; + + cmakeFlags = [ + # file RPATH_CHANGE could not write new RPATH + (lib.cmakeBool "CMAKE_SKIP_BUILD_RPATH" true) + # ensure determinism in the compiler build + (lib.cmakeFeature "ZIG_TARGET_MCPU" "baseline") + # always link against static build of LLVM + (lib.cmakeBool "ZIG_STATIC_LLVM" true) + ]; + + env.ZIG_GLOBAL_CACHE_DIR = "$TMPDIR/zig-cache"; + + doInstallCheck = true; + + # strictDeps breaks zig when clang is being used. + # https://github.com/NixOS/nixpkgs/issues/317055#issuecomment-2148438395 + strictDeps = !stdenv.cc.isClang; + + # Zig's build looks at /usr/bin/env to find dynamic linking info. This doesn't + # work in Nix's sandbox. Use env from our coreutils instead. + postPatch = '' + substituteInPlace lib/std/zig/system.zig \ + --replace "/usr/bin/env" "${lib.getExe' coreutils "env"}" + ''; + + postBuild = '' + stage3/bin/zig build langref + ''; + + postInstall = '' + install -Dm444 ../zig-out/doc/langref.html -t $doc/share/doc/zig-${finalAttrs.version}/html + ''; + + installCheckPhase = '' + runHook preInstallCheck + + $out/bin/zig test --cache-dir "$TMPDIR/zig-test-cache" -I $src/test $src/test/behavior.zig + + runHook postInstallCheck + ''; + + passthru = { + hook = callPackage ./hook.nix { zig = finalAttrs.finalPackage; }; + tests = { + version = testers.testVersion { + package = finalAttrs.finalPackage; + command = "zig version"; + }; + }; + }; + + meta = { + description = "General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software"; + changelog = "https://ziglang.org/download/${finalAttrs.version}/release-notes.html"; + homepage = "https://ziglang.org/"; + license = lib.licenses.mit; + mainProgram = "zig"; + maintainers = with lib.maintainers; [ andrewrk ] ++ lib.teams.zig.members; + platforms = lib.platforms.unix; + }; +}) diff --git a/pkgs/development/compilers/zig/0.13/hook.nix b/pkgs/development/compilers/zig/0.13/hook.nix new file mode 100644 index 0000000000000..a56b1a21e961d --- /dev/null +++ b/pkgs/development/compilers/zig/0.13/hook.nix @@ -0,0 +1,32 @@ +{ + lib, + makeSetupHook, + zig, +}: + +makeSetupHook { + name = "zig-hook"; + + propagatedBuildInputs = [ zig ]; + + substitutions = { + # This zig_default_flags below is meant to avoid CPU feature impurity in + # Nixpkgs. However, this flagset is "unstable": it is specifically meant to + # be controlled by the upstream development team - being up to that team + # exposing or not that flags to the outside (especially the package manager + # teams). + zig_default_flags = [ + "-Dcpu=baseline" + "--release=safe" + ]; + }; + + passthru = { + inherit zig; + }; + + meta = { + description = "A setup hook for using the Zig compiler in Nixpkgs"; + inherit (zig.meta) maintainers platforms broken; + }; +} ./setup-hook.sh diff --git a/pkgs/development/compilers/zig/0.13/setup-hook.sh b/pkgs/development/compilers/zig/0.13/setup-hook.sh new file mode 100644 index 0000000000000..689ebec8a3077 --- /dev/null +++ b/pkgs/development/compilers/zig/0.13/setup-hook.sh @@ -0,0 +1,70 @@ +# shellcheck shell=bash disable=SC2154,SC2086 + +readonly zigDefaultFlagsArray=(@zig_default_flags@) + +function zigSetGlobalCacheDir { + ZIG_GLOBAL_CACHE_DIR=$(mktemp -d) + export ZIG_GLOBAL_CACHE_DIR +} + +function zigBuildPhase { + runHook preBuild + + local flagsArray=( + "${zigDefaultFlagsArray[@]}" + $zigBuildFlags "${zigBuildFlagsArray[@]}" + ) + + echoCmd 'zig build flags' "${flagsArray[@]}" + zig build "${flagsArray[@]}" + + runHook postBuild +} + +function zigCheckPhase { + runHook preCheck + + local flagsArray=( + "${zigDefaultFlagsArray[@]}" + $zigCheckFlags "${zigCheckFlagsArray[@]}" + ) + + echoCmd 'zig check flags' "${flagsArray[@]}" + zig build test "${flagsArray[@]}" + + runHook postCheck +} + +function zigInstallPhase { + runHook preInstall + + local flagsArray=( + "${zigDefaultFlagsArray[@]}" + $zigBuildFlags "${zigBuildFlagsArray[@]}" + $zigInstallFlags "${zigInstallFlagsArray[@]}" + ) + + if [ -z "${dontAddPrefix-}" ]; then + # Zig does not recognize `--prefix=/dir/`, only `--prefix /dir/` + flagsArray+=("${prefixKey:---prefix}" "$prefix") + fi + + echoCmd 'zig install flags' "${flagsArray[@]}" + zig build install "${flagsArray[@]}" + + runHook postInstall +} + +addEnvHooks "$targetOffset" zigSetGlobalCacheDir + +if [ -z "${dontUseZigBuild-}" ] && [ -z "${buildPhase-}" ]; then + buildPhase=zigBuildPhase +fi + +if [ -z "${dontUseZigCheck-}" ] && [ -z "${checkPhase-}" ]; then + checkPhase=zigCheckPhase +fi + +if [ -z "${dontUseZigInstall-}" ] && [ -z "${installPhase-}" ]; then + installPhase=zigInstallPhase +fi diff --git a/pkgs/development/compilers/zig/0.9.nix b/pkgs/development/compilers/zig/0.9.nix deleted file mode 100644 index d648c9c2eb642..0000000000000 --- a/pkgs/development/compilers/zig/0.9.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ lib -, stdenv -, fetchFromGitHub -, cmake -, llvmPackages -, libxml2 -, zlib -, coreutils -, callPackage -}@args: - -import ./generic.nix args { - version = "0.9.1"; - - hash = "sha256-x2c4c9RSrNWGqEngio4ArW7dJjW0gg+8nqBwPcR721k="; - - patches = [ - # Fix index out of bounds reading RPATH (cherry-picked from 0.10-dev) - ./000-0.9-read-dynstr-at-rpath-offset.patch - # Fix build on macOS 13 (cherry-picked from 0.10-dev) - ./001-0.9-bump-macos-supported-version.patch - ]; - - prePatch = - let - zig_0_10_0 = fetchFromGitHub { - owner = "ziglang"; - repo = "zig"; - rev = "0.10.0"; - hash = "sha256-DNs937N7PLQimuM2anya4npYXcj6cyH+dRS7AiOX7tw="; - }; - in - '' - cp -R ${zig_0_10_0}/lib/libc/include/any-macos.13-any lib/libc/include/any-macos.13-any - cp -R ${zig_0_10_0}/lib/libc/include/aarch64-macos.13-none lib/libc/include/aarch64-macos.13-gnu - cp -R ${zig_0_10_0}/lib/libc/include/x86_64-macos.13-none lib/libc/include/x86_64-macos.13-gnu - cp ${zig_0_10_0}/lib/libc/darwin/libSystem.13.tbd lib/libc/darwin/ - ''; - - cmakeFlags = [ - # file RPATH_CHANGE could not write new RPATH - "-DCMAKE_SKIP_BUILD_RPATH=ON" - - # ensure determinism in the compiler build - "-DZIG_TARGET_MCPU=baseline" - ]; -} diff --git a/pkgs/development/compilers/zig/000-0.9-read-dynstr-at-rpath-offset.patch b/pkgs/development/compilers/zig/0.9/000-0.9-read-dynstr-at-rpath-offset.patch index 70633193f944d..70633193f944d 100644 --- a/pkgs/development/compilers/zig/000-0.9-read-dynstr-at-rpath-offset.patch +++ b/pkgs/development/compilers/zig/0.9/000-0.9-read-dynstr-at-rpath-offset.patch diff --git a/pkgs/development/compilers/zig/001-0.9-bump-macos-supported-version.patch b/pkgs/development/compilers/zig/0.9/001-0.9-bump-macos-supported-version.patch index 07b90e223553b..07b90e223553b 100644 --- a/pkgs/development/compilers/zig/001-0.9-bump-macos-supported-version.patch +++ b/pkgs/development/compilers/zig/0.9/001-0.9-bump-macos-supported-version.patch diff --git a/pkgs/development/compilers/zig/0.9/default.nix b/pkgs/development/compilers/zig/0.9/default.nix new file mode 100644 index 0000000000000..079773f00e88c --- /dev/null +++ b/pkgs/development/compilers/zig/0.9/default.nix @@ -0,0 +1,111 @@ +{ + lib, + callPackage, + cmake, + coreutils, + fetchFromGitHub, + libxml2, + llvmPackages, + stdenv, + testers, + zlib, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "zig"; + version = "0.9.1"; + + src = fetchFromGitHub { + owner = "ziglang"; + repo = "zig"; + rev = finalAttrs.version; + hash = "sha256-x2c4c9RSrNWGqEngio4ArW7dJjW0gg+8nqBwPcR721k="; + }; + + patches = [ + # Fix index out of bounds reading RPATH (cherry-picked from 0.10-dev) + ./000-0.9-read-dynstr-at-rpath-offset.patch + # Fix build on macOS 13 (cherry-picked from 0.10-dev) + ./001-0.9-bump-macos-supported-version.patch + ]; + + nativeBuildInputs = [ + cmake + (lib.getDev llvmPackages.llvm) + ]; + + buildInputs = + [ + libxml2 + zlib + ] + ++ (with llvmPackages; [ + libclang + lld + llvm + ]); + + cmakeFlags = [ + # file RPATH_CHANGE could not write new RPATH + (lib.cmakeBool "CMAKE_SKIP_BUILD_RPATH" true) + # ensure determinism in the compiler build + (lib.cmakeFeature "ZIG_TARGET_MCPU" "baseline") + ]; + + env.ZIG_GLOBAL_CACHE_DIR = "$TMPDIR/zig-cache"; + + doInstallCheck = true; + + strictDeps = true; + + prePatch = + let + zig_0_10_0 = fetchFromGitHub { + owner = "ziglang"; + repo = "zig"; + rev = "0.10.0"; + hash = "sha256-DNs937N7PLQimuM2anya4npYXcj6cyH+dRS7AiOX7tw="; + }; + in + '' + cp -R ${zig_0_10_0}/lib/libc/include/any-macos.13-any lib/libc/include/any-macos.13-any + cp -R ${zig_0_10_0}/lib/libc/include/aarch64-macos.13-none lib/libc/include/aarch64-macos.13-gnu + cp -R ${zig_0_10_0}/lib/libc/include/x86_64-macos.13-none lib/libc/include/x86_64-macos.13-gnu + cp ${zig_0_10_0}/lib/libc/darwin/libSystem.13.tbd lib/libc/darwin/ + ''; + + # Zig's build looks at /usr/bin/env to find dynamic linking info. This doesn't + # work in Nix's sandbox. Use env from our coreutils instead. + postPatch = '' + substituteInPlace lib/std/zig/system/NativeTargetInfo.zig \ + --replace "/usr/bin/env" "${lib.getExe' coreutils "env"}" + ''; + + installCheckPhase = '' + runHook preInstallCheck + + $out/bin/zig test --cache-dir "$TMPDIR/zig-test-cache" -I $src/test $src/test/behavior.zig + + runHook postInstallCheck + ''; + + passthru = { + hook = callPackage ./hook.nix { zig = finalAttrs.finalPackage; }; + tests = { + version = testers.testVersion { + package = finalAttrs.finalPackage; + command = "zig version"; + }; + }; + }; + + 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; + mainProgram = "zig"; + maintainers = with lib.maintainers; [ andrewrk ] ++ lib.teams.zig.members; + platforms = lib.platforms.unix; + }; +}) diff --git a/pkgs/development/compilers/zig/0.9/hook.nix b/pkgs/development/compilers/zig/0.9/hook.nix new file mode 100644 index 0000000000000..1d3439b1af620 --- /dev/null +++ b/pkgs/development/compilers/zig/0.9/hook.nix @@ -0,0 +1,47 @@ +{ + lib, + makeSetupHook, + zig, +}: + +makeSetupHook { + name = "zig-hook"; + + propagatedBuildInputs = [ zig ]; + + substitutions = { + # This zig_default_flags below is meant to avoid CPU feature impurity in + # Nixpkgs. However, this flagset is "unstable": it is specifically meant to + # be controlled by the upstream development team - being up to that team + # exposing or not that flags to the outside (especially the package manager + # teams). + + # Because of this hurdle, @andrewrk from Zig Software Foundation proposed + # some solutions for this issue. Hopefully they will be implemented in + # future releases of Zig. When this happens, this flagset should be + # revisited accordingly. + + # Below are some useful links describing the discovery process of this 'bug' + # in Nixpkgs: + + # https://github.com/NixOS/nixpkgs/issues/169461 + # https://github.com/NixOS/nixpkgs/issues/185644 + # https://github.com/NixOS/nixpkgs/pull/197046 + # https://github.com/NixOS/nixpkgs/pull/241741#issuecomment-1624227485 + # https://github.com/ziglang/zig/issues/14281#issuecomment-1624220653 + + zig_default_flags = [ + "-Dcpu=baseline" + "-Drelease-safe=true" + ]; + }; + + passthru = { + inherit zig; + }; + + meta = { + description = "Setup hook for using the Zig compiler in Nixpkgs"; + inherit (zig.meta) maintainers platforms broken; + }; +} ./setup-hook.sh diff --git a/pkgs/development/compilers/zig/0.9/setup-hook.sh b/pkgs/development/compilers/zig/0.9/setup-hook.sh new file mode 100644 index 0000000000000..689ebec8a3077 --- /dev/null +++ b/pkgs/development/compilers/zig/0.9/setup-hook.sh @@ -0,0 +1,70 @@ +# shellcheck shell=bash disable=SC2154,SC2086 + +readonly zigDefaultFlagsArray=(@zig_default_flags@) + +function zigSetGlobalCacheDir { + ZIG_GLOBAL_CACHE_DIR=$(mktemp -d) + export ZIG_GLOBAL_CACHE_DIR +} + +function zigBuildPhase { + runHook preBuild + + local flagsArray=( + "${zigDefaultFlagsArray[@]}" + $zigBuildFlags "${zigBuildFlagsArray[@]}" + ) + + echoCmd 'zig build flags' "${flagsArray[@]}" + zig build "${flagsArray[@]}" + + runHook postBuild +} + +function zigCheckPhase { + runHook preCheck + + local flagsArray=( + "${zigDefaultFlagsArray[@]}" + $zigCheckFlags "${zigCheckFlagsArray[@]}" + ) + + echoCmd 'zig check flags' "${flagsArray[@]}" + zig build test "${flagsArray[@]}" + + runHook postCheck +} + +function zigInstallPhase { + runHook preInstall + + local flagsArray=( + "${zigDefaultFlagsArray[@]}" + $zigBuildFlags "${zigBuildFlagsArray[@]}" + $zigInstallFlags "${zigInstallFlagsArray[@]}" + ) + + if [ -z "${dontAddPrefix-}" ]; then + # Zig does not recognize `--prefix=/dir/`, only `--prefix /dir/` + flagsArray+=("${prefixKey:---prefix}" "$prefix") + fi + + echoCmd 'zig install flags' "${flagsArray[@]}" + zig build install "${flagsArray[@]}" + + runHook postInstall +} + +addEnvHooks "$targetOffset" zigSetGlobalCacheDir + +if [ -z "${dontUseZigBuild-}" ] && [ -z "${buildPhase-}" ]; then + buildPhase=zigBuildPhase +fi + +if [ -z "${dontUseZigCheck-}" ] && [ -z "${checkPhase-}" ]; then + checkPhase=zigCheckPhase +fi + +if [ -z "${dontUseZigInstall-}" ] && [ -z "${installPhase-}" ]; then + installPhase=zigInstallPhase +fi diff --git a/pkgs/development/compilers/zig/generic.nix b/pkgs/development/compilers/zig/generic.nix index f3c725e1e5ce0..3369f5d40c2c1 100644 --- a/pkgs/development/compilers/zig/generic.nix +++ b/pkgs/development/compilers/zig/generic.nix @@ -36,6 +36,16 @@ stdenv.mkDerivation (finalAttrs: { llvm ]); + # On Darwin, Zig calls std.zig.system.darwin.macos.detect during the build, + # which parses /System/Library/CoreServices/SystemVersion.plist and + # /System/Library/CoreServices/.SystemVersionPlatform.plist to determine the + # OS version. This causes the build to fail during stage 3 with + # OSVersionDetectionFail when the sandbox is enabled. + __impureHostDeps = lib.optionals stdenv.isDarwin [ + "/System/Library/CoreServices/.SystemVersionPlatform.plist" + "/System/Library/CoreServices/SystemVersion.plist" + ]; + env.ZIG_GLOBAL_CACHE_DIR = "$TMPDIR/zig-cache"; # Zig's build looks at /usr/bin/env to find dynamic linking info. This doesn't diff --git a/pkgs/development/compilers/zig/hook.nix b/pkgs/development/compilers/zig/hook.nix index e01309b258b1a..67cfac263a75e 100644 --- a/pkgs/development/compilers/zig/hook.nix +++ b/pkgs/development/compilers/zig/hook.nix @@ -45,7 +45,7 @@ makeSetupHook { passthru = { inherit zig; }; meta = { - description = "A setup hook for using the Zig compiler in Nixpkgs"; + description = "Setup hook for using the Zig compiler in Nixpkgs"; inherit (zig.meta) maintainers platforms broken; }; } ./setup-hook.sh diff --git a/pkgs/development/compilers/zig/shell-completions.nix b/pkgs/development/compilers/zig/shell-completions.nix deleted file mode 100644 index d60f7950dcad9..0000000000000 --- a/pkgs/development/compilers/zig/shell-completions.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ lib -, stdenv -, fetchFromGitHub -, installShellFiles -, unstableGitUpdater -}: - -stdenv.mkDerivation (finalAttrs: { - pname = "zig-shell-completions"; - version = "unstable-2023-11-18"; - - src = fetchFromGitHub { - owner = "ziglang"; - repo = "shell-completions"; - rev = "31d3ad12890371bf467ef7143f5c2f31cfa7b7c1"; - hash = "sha256-ID/K0vdg7BTKGgozISk/X4RBxCVfhSkVD6GSZUoP9Ls="; - }; - - nativeBuildInputs = [ installShellFiles ]; - - dontConfigure = true; - dontBuild = true; - - installPhase = '' - runHook preInstall - - installShellCompletion --bash --name zig.bash _zig.bash - installShellCompletion --zsh --name _zig _zig - - runHook postInstall - ''; - - passthru.updateScript = unstableGitUpdater { }; - - meta = { - homepage = "https://github.com/ziglang/shell-completions"; - description = "Shell completions for the Zig compiler"; - license = lib.licenses.mit; - maintainers = with lib.maintainers; [ aaronjheng ]; - platforms = lib.platforms.all; - }; -}) diff --git a/pkgs/development/compilers/zulu/22.nix b/pkgs/development/compilers/zulu/22.nix index 96b0e6805a5af..93891d6511c7c 100644 --- a/pkgs/development/compilers/zulu/22.nix +++ b/pkgs/development/compilers/zulu/22.nix @@ -11,7 +11,7 @@ callPackage ./common.nix ({ zuluVersion = "22.28.91"; jdkVersion = "22.0.0"; hash = - if enableJavaFX then "sha256-HvMiODsz+puu1xtxG2RRXH/PWCk91PGNZ7UcOd9orqQ=" + if enableJavaFX then "sha256-+qUrZ+GlspSP3RLTAbgEtFm0B0fzX/VD1WUl6mk2c/0=" else "sha256-HvMiODsz+puu1xtxG2RRXH/PWCk91PGNZ7UcOd9orqQ="; }; @@ -27,7 +27,7 @@ callPackage ./common.nix ({ zuluVersion = "22.28.91"; jdkVersion = "22.0.0"; hash = - if enableJavaFX then "sha256-Y6PSNQjHRXukwux2sVbvpTIqT+Cg+KeG1C0iSEwyKZw=" + if enableJavaFX then "sha256-QkFwbc2YFEWb5rddhH4a+zmtsrXxUBSuS8yg9qUb728=" else "sha256-Y6PSNQjHRXukwux2sVbvpTIqT+Cg+KeG1C0iSEwyKZw="; }; @@ -35,7 +35,7 @@ callPackage ./common.nix ({ zuluVersion = "22.28.91"; jdkVersion = "22.0.0"; hash = - if enableJavaFX then "sha256-o0VkWB4+PzBmNNWy+FZlyjTgukBTe6owfydb3YNfEE0=" + if enableJavaFX then "sha256-256UP6MtUReQYqCKVt0ThN9BVDyKLAMXQTdpcDB9t24=" else "sha256-o0VkWB4+PzBmNNWy+FZlyjTgukBTe6owfydb3YNfEE0="; }; }; diff --git a/pkgs/development/compilers/zz/Cargo.lock b/pkgs/development/compilers/zz/Cargo.lock deleted file mode 100644 index 8b72d6a3e4043..0000000000000 --- a/pkgs/development/compilers/zz/Cargo.lock +++ /dev/null @@ -1,961 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -[[package]] -name = "aho-corasick" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8716408b8bc624ed7f65d223ddb9ac2d044c0547b6fa4b0d554f3a9540496ada" -dependencies = [ - "memchr", -] - -[[package]] -name = "ansi_term" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" -dependencies = [ - "winapi", -] - -[[package]] -name = "askama" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10a1fb9e41eb366cbcd267da2094be5b7e62fdbca9f82091e7503e80f885050d" -dependencies = [ - "askama_derive", - "askama_escape", - "askama_shared", -] - -[[package]] -name = "askama_derive" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1012c270085fa35ece6a48a569544fde85b6d9ee41074c7b706cc912a03f939" -dependencies = [ - "askama_shared", - "nom", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "askama_escape" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a577aeba5fec1aafb9f195d98cfcc38a78b588e4ebf9b15f62ca1c7aa33795a" - -[[package]] -name = "askama_shared" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee517f4e33c27b129928e71d8a044d54c513e72e0b72ec5c4f5f1823e9de353" -dependencies = [ - "askama_escape", - "humansize", - "num-traits", - "serde", - "toml", -] - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] - -[[package]] -name = "autocfg" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" - -[[package]] -name = "backtrace" -version = "0.3.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e692897359247cc6bb902933361652380af0f1b7651ae5c5013407f30e109e" -dependencies = [ - "backtrace-sys", - "cfg-if", - "libc", - "rustc-demangle", -] - -[[package]] -name = "backtrace-sys" -version = "0.1.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fbebbe1c9d1f383a9cc7e8ccdb471b91c8d024ee9c2ca5b5346121fe8b4399" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "bitflags" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" - -[[package]] -name = "block-buffer" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" -dependencies = [ - "block-padding", - "byte-tools", - "byteorder", - "generic-array", -] - -[[package]] -name = "block-padding" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" -dependencies = [ - "byte-tools", -] - -[[package]] -name = "byte-tools" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" - -[[package]] -name = "byteorder" -version = "1.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" - -[[package]] -name = "cc" -version = "1.0.52" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d87b23d6a92cd03af510a5ade527033f6aa6fa92161e2d5863a907d4c5e31d" - -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - -[[package]] -name = "clap" -version = "2.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9" -dependencies = [ - "ansi_term", - "atty", - "bitflags", - "strsim", - "textwrap", - "unicode-width", - "vec_map", -] - -[[package]] -name = "crossbeam-deque" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", - "maybe-uninit", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" -dependencies = [ - "autocfg", - "cfg-if", - "crossbeam-utils", - "lazy_static", - "maybe-uninit", - "memoffset", - "scopeguard", -] - -[[package]] -name = "crossbeam-queue" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c695eeca1e7173472a32221542ae469b3e9aac3a4fc81f7696bcad82029493db" -dependencies = [ - "cfg-if", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" -dependencies = [ - "autocfg", - "cfg-if", - "lazy_static", -] - -[[package]] -name = "digest" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -dependencies = [ - "generic-array", -] - -[[package]] -name = "either" -version = "1.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" - -[[package]] -name = "env_logger" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3" -dependencies = [ - "atty", - "humantime", - "log", - "regex", - "termcolor", -] - -[[package]] -name = "error-chain" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d371106cc88ffdfb1eabd7111e432da544f16f3e2d7bf1dfe8bf575f1df045cd" -dependencies = [ - "backtrace", - "version_check", -] - -[[package]] -name = "failure" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" -dependencies = [ - "backtrace", -] - -[[package]] -name = "fake-simd" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" - -[[package]] -name = "fuchsia-cprng" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" - -[[package]] -name = "generic-array" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" -dependencies = [ - "typenum", -] - -[[package]] -name = "getrandom" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "hermit-abi" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61565ff7aaace3525556587bd2dc31d4a07071957be715e63ce7b1eccf51a8f4" -dependencies = [ - "libc", -] - -[[package]] -name = "humansize" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6cab2627acfc432780848602f3f558f7e9dd427352224b0d9324025796d2a5e" - -[[package]] -name = "humantime" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" -dependencies = [ - "quick-error", -] - -[[package]] -name = "idna" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" -dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "itoa" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e" - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libc" -version = "0.2.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99e85c08494b21a9054e7fe1374a732aeadaff3980b6990b94bfd3a70f690005" - -[[package]] -name = "log" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "maplit" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" - -[[package]] -name = "matches" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" - -[[package]] -name = "maybe-uninit" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" - -[[package]] -name = "memchr" -version = "2.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" - -[[package]] -name = "memoffset" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4fc2c02a7e374099d4ee95a193111f72d2110197fe200272371758f6c3643d8" -dependencies = [ - "autocfg", -] - -[[package]] -name = "metrohash" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ba553cb19e2acbc54baa16faef215126243fe45e53357a3b2e9f4ebc7b0506c" - -[[package]] -name = "nom" -version = "5.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b471253da97532da4b61552249c521e01e736071f71c1a4f7ebbfbf0a06aad6" -dependencies = [ - "memchr", - "version_check", -] - -[[package]] -name = "num-traits" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_cpus" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "numtoa" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" - -[[package]] -name = "opaque-debug" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" - -[[package]] -name = "pathdiff" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877630b3de15c0b64cc52f659345724fbf6bdad9bd9566699fc53688f3c34a34" - -[[package]] -name = "pbr" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4403eb718d70c03ee279e51737782902c68cca01e870a33b6a2f9dfb50b9cd83" -dependencies = [ - "libc", - "termion", - "time", - "winapi", -] - -[[package]] -name = "percent-encoding" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" - -[[package]] -name = "pest" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" -dependencies = [ - "ucd-trie", -] - -[[package]] -name = "pest_derive" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0" -dependencies = [ - "pest", - "pest_generator", -] - -[[package]] -name = "pest_generator" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99b8db626e31e5b81787b9783425769681b347011cc59471e33ea46d2ea0cf55" -dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pest_meta" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54be6e404f5317079812fc8f9f5279de376d8856929e21c184ecf6bbd692a11d" -dependencies = [ - "maplit", - "pest", - "sha-1", -] - -[[package]] -name = "proc-macro2" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8872cf6f48eee44265156c111456a700ab3483686b3f96df4cf5481c89157319" -dependencies = [ - "unicode-xid", -] - -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - -[[package]] -name = "quote" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c1f4b0efa5fc5e8ceb705136bfee52cfdb6a4e3509f770b478cd6ed434232a7" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" -dependencies = [ - "fuchsia-cprng", - "libc", - "rand_core 0.3.1", - "rdrand", - "winapi", -] - -[[package]] -name = "rand_core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -dependencies = [ - "rand_core 0.4.2", -] - -[[package]] -name = "rand_core" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" - -[[package]] -name = "rayon" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6ce3297f9c85e16621bb8cca38a06779ffc31bb8184e1be4bed2be4678a098" -dependencies = [ - "crossbeam-deque", - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08a89b46efaf957e52b18062fb2f4660f8b8a4dde1807ca002690868ef2c85a9" -dependencies = [ - "crossbeam-deque", - "crossbeam-queue", - "crossbeam-utils", - "lazy_static", - "num_cpus", -] - -[[package]] -name = "rdrand" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -dependencies = [ - "rand_core 0.3.1", -] - -[[package]] -name = "redox_syscall" -version = "0.1.56" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" - -[[package]] -name = "redox_termios" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" -dependencies = [ - "redox_syscall", -] - -[[package]] -name = "regex" -version = "1.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6020f034922e3194c711b82a627453881bc4682166cabb07134a10c26ba7692" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", - "thread_local", -] - -[[package]] -name = "regex-syntax" -version = "0.6.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe5bd57d1d7414c6b5ed48563a2c855d995ff777729dcd91c369ec7fea395ae" - -[[package]] -name = "remove_dir_all" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" -dependencies = [ - "winapi", -] - -[[package]] -name = "rmp" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f10b46df14cf1ee1ac7baa4d2fbc2c52c0622a4b82fa8740e37bc452ac0184f" -dependencies = [ - "byteorder", - "num-traits", -] - -[[package]] -name = "rmp-serde" -version = "0.14.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c1ee98f14fe8b8e9c5ea13d25da7b2a1796169202c57a09d7288de90d56222b" -dependencies = [ - "byteorder", - "rmp", - "serde", -] - -[[package]] -name = "rsmt2" -version = "0.11.0" -source = "git+https://github.com/kino-mc/rsmt2?rev=ebce2e4#ebce2e403d25ca739cfd717817be68844f80f13c" -dependencies = [ - "error-chain", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" - -[[package]] -name = "ryu" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3d612bc64430efeb3f7ee6ef26d590dce0c43249217bddc62112540c7941e1" - -[[package]] -name = "scopeguard" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "serde" -version = "1.0.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36df6ac6412072f67cf767ebbde4133a5b2e88e76dc6187fa7104cd16f783399" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e549e3abf4fb8621bd1609f11dfc9f5e50320802273b12f3811a67e6716ea6c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.52" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7894c8ed05b7a3a279aeb79025fdec1d3158080b75b98a08faf2806bb799edd" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "sha-1" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" -dependencies = [ - "block-buffer", - "digest", - "fake-simd", - "opaque-debug", -] - -[[package]] -name = "sha2" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0" -dependencies = [ - "block-buffer", - "digest", - "fake-simd", - "opaque-debug", -] - -[[package]] -name = "smallvec" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7cb5678e1615754284ec264d9bb5b4c27d2018577fd90ac0ceb578591ed5ee4" - -[[package]] -name = "strsim" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" - -[[package]] -name = "syn" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "410a7488c0a728c7ceb4ad59b9567eb4053d02e8cc7f5c0e0eeeb39518369213" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "tempdir" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" -dependencies = [ - "rand", - "remove_dir_all", -] - -[[package]] -name = "termcolor" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "termion" -version = "1.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c22cec9d8978d906be5ac94bceb5a010d885c626c4c8855721a4dbd20e3ac905" -dependencies = [ - "libc", - "numtoa", - "redox_syscall", - "redox_termios", -] - -[[package]] -name = "textwrap" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "thread_local" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "time" -version = "0.1.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "toml" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a" -dependencies = [ - "serde", -] - -[[package]] -name = "typenum" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" - -[[package]] -name = "ucd-trie" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" - -[[package]] -name = "unicode-bidi" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" -dependencies = [ - "matches", -] - -[[package]] -name = "unicode-normalization" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5479532badd04e128284890390c1e876ef7a993d0570b3597ae43dfa1d59afa4" -dependencies = [ - "smallvec", -] - -[[package]] -name = "unicode-width" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479" - -[[package]] -name = "unicode-xid" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" - -[[package]] -name = "url" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb" -dependencies = [ - "idna", - "matches", - "percent-encoding", -] - -[[package]] -name = "vec_map" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" - -[[package]] -name = "version_check" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce" - -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - -[[package]] -name = "which" -version = "3.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d011071ae14a2f6671d0b74080ae0cd8ebf3a6f8c9589a2cd45f23126fe29724" -dependencies = [ - "failure", - "libc", -] - -[[package]] -name = "winapi" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ - "winapi", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "zz" -version = "0.1.1" -dependencies = [ - "askama", - "clap", - "env_logger", - "getrandom", - "lazy_static", - "log", - "metrohash", - "pathdiff", - "pbr", - "pest", - "pest_derive", - "rayon", - "rmp-serde", - "rsmt2", - "serde", - "serde_json", - "sha2", - "tempdir", - "toml", - "url", - "which", -] diff --git a/pkgs/development/compilers/zz/default.nix b/pkgs/development/compilers/zz/default.nix deleted file mode 100644 index bd26c78e626a8..0000000000000 --- a/pkgs/development/compilers/zz/default.nix +++ /dev/null @@ -1,52 +0,0 @@ -{ lib, rustPlatform, fetchFromGitHub, makeWrapper, z3, pkgsHostTarget }: - -let - runtimeDeps = [ - z3 - pkgsHostTarget.targetPackages.stdenv.cc - ]; -in - -rustPlatform.buildRustPackage rec { - pname = "zz"; - version = "unstable-2021-05-04"; - - # when updating, choose commit of the latest build on http://bin.zetz.it/ - src = fetchFromGitHub { - owner = "zetzit"; - repo = "zz"; - rev = "18020b10b933cfe2fc7f2256b71e646889f9b1d2"; - sha256 = "01nlyyk1qxk76dq2hw3wpbjwkh27zzp6mpczjnxdpv6rxs7mc825"; - }; - - nativeBuildInputs = [ makeWrapper ]; - - cargoLock = { - lockFile = ./Cargo.lock; - outputHashes = { - "rsmt2-0.11.0" = "sha256-RwNsS0zge8uOXmgzTvDwp8AD70NspIZq0LgW/v3yrpA="; - }; - }; - - postPatch = '' - # remove search path entry which would reference /build - sed -i '/env!("CARGO_MANIFEST_DIR")/d' src/lib.rs - ''; - - postInstall = '' - mkdir -p "$out/share/zz" - cp -r modules "$out/share/zz/" - - wrapProgram $out/bin/zz \ - --prefix PATH ":" "${lib.makeBinPath runtimeDeps}" \ - --suffix ZZ_MODULE_PATHS ":" "$out/share/zz/modules" - ''; - - meta = with lib; { - description = "ZetZ a zymbolic verifier and tranzpiler to bare metal C"; - mainProgram = "zz"; - homepage = "https://github.com/zetzit/zz"; - license = licenses.mit; - maintainers = [ ]; - }; -} |