From df0c0570c87efa8f75f100462873c6acc4bccbc8 Mon Sep 17 00:00:00 2001 From: Emily Date: Fri, 8 Aug 2025 18:22:54 +0100 Subject: [PATCH 01/12] arangodb: drop MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This requires an EOL GCC to build. The version is over two years old; the latest version is 3.12.5.2. The listed package maintainer [no longer uses the package]. If another version is packaged that builds with a supported compiler, this can be re‐added; per the [request from 2023] to restore versioned suffixes, it should likely not be upgraded in place anyway, to avoid unexpected data migrations. [no longer uses the package]: [request from 2023]: --- pkgs/by-name/ar/arangodb/package.nix | 94 ------------------- .../python-modules/python-arango/default.nix | 50 +++++----- pkgs/top-level/aliases.nix | 1 + 3 files changed, 28 insertions(+), 117 deletions(-) delete mode 100644 pkgs/by-name/ar/arangodb/package.nix diff --git a/pkgs/by-name/ar/arangodb/package.nix b/pkgs/by-name/ar/arangodb/package.nix deleted file mode 100644 index 8afc588a967ee..0000000000000 --- a/pkgs/by-name/ar/arangodb/package.nix +++ /dev/null @@ -1,94 +0,0 @@ -{ - # gcc 11.2 suggested on 3.10.5.2. - # gcc 11.3.0 unsupported yet, investigate gcc support when upgrading - # See https://github.com/arangodb/arangodb/issues/17454 - gcc10Stdenv, - git, - lib, - fetchFromGitHub, - openssl, - zlib, - cmake, - python3, - perl, - snappy, - lzo, - which, - targetArchitecture ? null, - asmOptimizations ? gcc10Stdenv.hostPlatform.isx86, -}: - -let - defaultTargetArchitecture = if gcc10Stdenv.hostPlatform.isx86 then "haswell" else "core"; - - targetArch = if targetArchitecture == null then defaultTargetArchitecture else targetArchitecture; -in - -gcc10Stdenv.mkDerivation rec { - pname = "arangodb"; - version = "3.10.5.2"; - - src = fetchFromGitHub { - repo = "arangodb"; - owner = "arangodb"; - tag = "v${version}"; - hash = "sha256-64iTxhG8qKTSrTlH/BWDJNnLf8VnaCteCKfQ9D2lGDQ="; - fetchSubmodules = true; - }; - - nativeBuildInputs = [ - cmake - git - perl - python3 - which - ]; - - buildInputs = [ - openssl - zlib - snappy - lzo - ]; - - # prevent failing with "cmake-3.13.4/nix-support/setup-hook: line 10: ./3rdParty/rocksdb/RocksDBConfig.cmake.in: No such file or directory" - dontFixCmake = true; - env.NIX_CFLAGS_COMPILE = "-Wno-error"; - - postPatch = '' - sed -i -e 's!/bin/echo!echo!' 3rdParty/V8/gypfiles/*.gypi - - # with nixpkgs, it has no sense to check for a version update - substituteInPlace js/client/client.js --replace "require('@arangodb').checkAvailableVersions();" "" - substituteInPlace js/server/server.js --replace "require('@arangodb').checkAvailableVersions();" "" - ''; - - preConfigure = '' - patchShebangs utils - ''; - - cmakeBuildType = "RelWithDebInfo"; - - cmakeFlags = [ - "-DUSE_MAINTAINER_MODE=OFF" - "-DUSE_GOOGLE_TESTS=OFF" - - # avoid reading /proc/cpuinfo for feature detection - "-DTARGET_ARCHITECTURE=${targetArch}" - ] - ++ lib.optionals asmOptimizations [ - "-DASM_OPTIMIZATIONS=ON" - "-DHAVE_SSE42=${if gcc10Stdenv.hostPlatform.sse4_2Support then "ON" else "OFF"}" - ]; - - meta = with lib; { - homepage = "https://www.arangodb.com"; - description = "Native multi-model database with flexible data models for documents, graphs, and key-values"; - license = licenses.asl20; - platforms = [ "x86_64-linux" ]; - maintainers = with maintainers; [ - flosse - jsoo1 - ]; - }; -} diff --git a/pkgs/development/python-modules/python-arango/default.nix b/pkgs/development/python-modules/python-arango/default.nix index d7acf848e0613..76823eb509f2a 100644 --- a/pkgs/development/python-modules/python-arango/default.nix +++ b/pkgs/development/python-modules/python-arango/default.nix @@ -18,7 +18,6 @@ packaging, # tests - arangodb, mock, }: @@ -61,11 +60,16 @@ buildPythonPackage rec { ]; nativeCheckInputs = [ - arangodb + #arangodb mock pytestCheckHook ]; + # ArangoDB has been removed from Nixpkgs due to lack of maintenace, + # so we cannot run the tests at present. + # + # Before that, the issue was: + # # arangodb is compiled only for particular target architectures # (i.e. "haswell"). Thus, these tests may not pass reproducibly, # failing with: `166: Illegal instruction` if not run on arangodb's @@ -76,27 +80,27 @@ buildPythonPackage rec { # architecture issues will be irrelevant. doCheck = false; - preCheck = lib.optionalString doCheck '' - # Start test DB - mkdir -p .nix-test/{data,work} - - ICU_DATA=${arangodb}/share/arangodb3 \ - GLIBCXX_FORCE_NEW=1 \ - TZ=UTC \ - TZ_DATA=${arangodb}/share/arangodb3/tzdata \ - ARANGO_ROOT_PASSWORD=${testDBOpts.password} \ - ${arangodb}/bin/arangod \ - --server.uid=$(id -u) \ - --server.gid=$(id -g) \ - --server.authentication=true \ - --server.endpoint=http+tcp://${testDBOpts.host}:${testDBOpts.port} \ - --server.descriptors-minimum=4096 \ - --server.jwt-secret=${testDBOpts.secret} \ - --javascript.app-path=.nix-test/app \ - --log.file=.nix-test/log \ - --database.directory=.nix-test/data \ - --foxx.api=false & - ''; + #preCheck = lib.optionalString doCheck '' + # # Start test DB + # mkdir -p .nix-test/{data,work} + # + # ICU_DATA=${arangodb}/share/arangodb3 \ + # GLIBCXX_FORCE_NEW=1 \ + # TZ=UTC \ + # TZ_DATA=${arangodb}/share/arangodb3/tzdata \ + # ARANGO_ROOT_PASSWORD=${testDBOpts.password} \ + # ${arangodb}/bin/arangod \ + # --server.uid=$(id -u) \ + # --server.gid=$(id -g) \ + # --server.authentication=true \ + # --server.endpoint=http+tcp://${testDBOpts.host}:${testDBOpts.port} \ + # --server.descriptors-minimum=4096 \ + # --server.jwt-secret=${testDBOpts.secret} \ + # --javascript.app-path=.nix-test/app \ + # --log.file=.nix-test/log \ + # --database.directory=.nix-test/data \ + # --foxx.api=false & + #''; pytestFlags = [ "--host=${testDBOpts.host}" diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 200ac0ede7c95..aa804154bc1d9 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -459,6 +459,7 @@ mapAliases { apple-sdk_10_14 = throw "apple-sdk_10_14 was removed as Nixpkgs no longer supprots macOS 10.14; see the 25.05 release notes"; # Added 2024-10-27 apple-sdk_10_15 = throw "apple-sdk_10_15 was removed as Nixpkgs no longer supports macOS 10.15; see the 25.05 release notes"; # Added 2024-10-27 appthreat-depscan = dep-scan; # Added 2024-04-10 + arangodb = throw "arangodb has been removed, as it was unmaintained and the packaged version does not build with supported GCC versions"; # Added 2025-08-12 arb = throw "'arb' has been removed as it has been merged into 'flint3'"; # Added 2025-03-28 arcanist = throw "arcanist was removed as phabricator is not supported and does not accept fixes"; # Added 2024-06-07 archipelago-minecraft = throw "archipelago-minecraft has been removed, as upstream no longer ships minecraft as a default APWorld."; # Added 2025-07-15 From 796e4f546bd3b2ed74df74c679f2c3f2b9e03fe8 Mon Sep 17 00:00:00 2001 From: Emily Date: Fri, 8 Aug 2025 18:22:54 +0100 Subject: [PATCH 02/12] linux_5_4_hardened: drop Already marked as broken, and due for removal anyway in . --- pkgs/top-level/all-packages.nix | 2 -- pkgs/top-level/linux-kernels.nix | 12 ++---------- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0d5ae53a00b44..ee7493471bf9a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10714,8 +10714,6 @@ with pkgs; # hardened kernels linuxPackages_hardened = linuxKernel.packages.linux_hardened; linux_hardened = linuxPackages_hardened.kernel; - linuxPackages_5_4_hardened = linuxKernel.packages.linux_5_4_hardened; - linux_5_4_hardened = linuxKernel.kernels.linux_5_4_hardened; linuxPackages_5_10_hardened = linuxKernel.packages.linux_5_10_hardened; linux_5_10_hardened = linuxKernel.kernels.linux_5_10_hardened; linuxPackages_5_15_hardened = linuxKernel.packages.linux_5_15_hardened; diff --git a/pkgs/top-level/linux-kernels.nix b/pkgs/top-level/linux-kernels.nix index 2c9d32830b841..a34fef40385c4 100644 --- a/pkgs/top-level/linux-kernels.nix +++ b/pkgs/top-level/linux-kernels.nix @@ -12,7 +12,6 @@ newScope, lib, fetchurl, - gcc10Stdenv, }: # When adding a kernel: @@ -297,14 +296,6 @@ in linux_hardened = hardenedKernelFor packageAliases.linux_default.kernel { }; - linux_5_4_hardened = markBroken ( - hardenedKernelFor kernels.linux_5_4 { - stdenv = gcc10Stdenv; - buildPackages = buildPackages // { - stdenv = buildPackages.gcc10Stdenv; - }; - } - ); linux_5_10_hardened = hardenedKernelFor kernels.linux_5_10 { }; linux_5_15_hardened = hardenedKernelFor kernels.linux_5_15 { }; linux_6_1_hardened = hardenedKernelFor kernels.linux_6_1 { }; @@ -321,6 +312,7 @@ in linux_6_14 = throw "linux 6.14 was removed because it has reached its end of life upstream"; linux_4_19_hardened = throw "linux 4.19 was removed because it will reach its end of life within 24.11"; + linux_5_4_hardened = throw "linux_5_4_hardened was removed because it was broken"; linux_6_9_hardened = throw "linux 6.9 was removed because it has reached its end of life upstream"; linux_6_10_hardened = throw "linux 6.10 was removed because it has reached its end of life upstream"; linux_6_11_hardened = throw "linux 6.11 was removed because it has reached its end of life upstream"; @@ -779,7 +771,6 @@ in linux_hardened = recurseIntoAttrs (packagesFor kernels.linux_hardened); - linux_5_4_hardened = recurseIntoAttrs (packagesFor kernels.linux_5_4_hardened); linux_5_10_hardened = recurseIntoAttrs (packagesFor kernels.linux_5_10_hardened); linux_5_15_hardened = recurseIntoAttrs (packagesFor kernels.linux_5_15_hardened); linux_6_1_hardened = recurseIntoAttrs (packagesFor kernels.linux_6_1_hardened); @@ -799,6 +790,7 @@ in } // lib.optionalAttrs config.allowAliases { linux_4_19_hardened = throw "linux 4.19 was removed because it will reach its end of life within 24.11"; + linux_5_4_hardened = throw "linux_5_4_hardened was removed because it was broken"; linux_6_9_hardened = throw "linux 6.9 was removed because it has reached its end of life upstream"; linux_6_10_hardened = throw "linux 6.10 was removed because it has reached its end of life upstream"; linux_6_11_hardened = throw "linux 6.11 was removed because it has reached its end of life upstream"; From ecba8f422b9139a20cde3271c105e21214ec7c52 Mon Sep 17 00:00:00 2001 From: Emily Date: Fri, 8 Aug 2025 18:22:54 +0100 Subject: [PATCH 03/12] collada2gltf: drop MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Vendors outdated dependencies that don’t build with supported compilers. I tried my best to devendor, but I was unable to get it building, and upstream has not been active in half a decade. --- pkgs/by-name/co/collada2gltf/package.nix | 39 ------------------------ pkgs/top-level/aliases.nix | 1 + 2 files changed, 1 insertion(+), 39 deletions(-) delete mode 100644 pkgs/by-name/co/collada2gltf/package.nix diff --git a/pkgs/by-name/co/collada2gltf/package.nix b/pkgs/by-name/co/collada2gltf/package.nix deleted file mode 100644 index c3c1434191014..0000000000000 --- a/pkgs/by-name/co/collada2gltf/package.nix +++ /dev/null @@ -1,39 +0,0 @@ -{ - fetchFromGitHub, - gcc10Stdenv, - lib, - cmake, -}: -gcc10Stdenv.mkDerivation rec { - pname = "COLLADA2GLTF"; - version = "2.1.5"; - - src = fetchFromGitHub { - owner = "KhronosGroup"; - repo = "COLLADA2GLTF"; - tag = "v${version}"; - hash = "sha256-3Eo1qS6S5vlc/d2WB4iDJTjUnwMUrx9+Ln6n8PYU5qA="; - fetchSubmodules = true; - }; - - installPhase = '' - runHook preInstall - - install -Dm755 COLLADA2GLTF-bin $out/bin/COLLADA2GLTF - - runHook postInstall - ''; - - nativeBuildInputs = [ - cmake - ]; - - meta = { - description = "Command-line tool to convert COLLADA (.dae) files to glTF"; - homepage = "https://github.com/KhronosGroup/COLLADA2GLTF"; - license = lib.licenses.bsd3; - mainProgram = "COLLADA2GLTF"; - maintainers = with lib.maintainers; [ shaddydc ]; - platforms = with lib.platforms; unix ++ windows; - }; -} diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index aa804154bc1d9..9ec8c86203391 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -626,6 +626,7 @@ mapAliases { code-browser-gtk2 = throw "'code-browser-gtk2' has been removed, as it was broken since 22.11"; # Added 2025-08-22 code-browser-qt = throw "'code-browser-qt' has been removed, as it was broken since 22.11"; # Added 2025-08-22 collada-dom = opencollada; # added 2024-02-21 + collada2gltf = throw "collada2gltf has been removed from Nixpkgs, as it has been unmaintained upstream for 5 years and does not build with supported GCC versions"; # Addd 2025-08-08 colloid-kde = throw "'colloid-kde' has been removed, as it is only compatible with Plasma 5, which is EOL"; # Added 2025-08-20 colorpicker = throw "'colorpicker' has been removed due to lack of maintenance upstream. Consider using 'xcolor', 'gcolor3', 'eyedropper' or 'gpick' instead"; # Added 2024-10-19 colorstorm = throw "'colorstorm' has been removed because it was unmaintained in nixpkgs and upstream was rewritten."; # Added 2025-06-15 From 892ebc48e5da74fb8d0e2c12ec696b3a8660377e Mon Sep 17 00:00:00 2001 From: Emily Date: Fri, 8 Aug 2025 18:22:54 +0100 Subject: [PATCH 04/12] obliv-c: drop MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Broken on supported compilers when parsing system headers, with no obvious‐to-me fix from a quick search of the codebase; see . No upstream activity since 2021. --- .../development/compilers/obliv-c/default.nix | 63 ------------------- .../obliv-c/ignore-complex-float128.patch | 37 ----------- pkgs/top-level/aliases.nix | 1 + pkgs/top-level/all-packages.nix | 5 -- 4 files changed, 1 insertion(+), 105 deletions(-) delete mode 100644 pkgs/development/compilers/obliv-c/default.nix delete mode 100644 pkgs/development/compilers/obliv-c/ignore-complex-float128.patch diff --git a/pkgs/development/compilers/obliv-c/default.nix b/pkgs/development/compilers/obliv-c/default.nix deleted file mode 100644 index 2f6777a0b556d..0000000000000 --- a/pkgs/development/compilers/obliv-c/default.nix +++ /dev/null @@ -1,63 +0,0 @@ -{ - lib, - stdenv, - libgcrypt, - fetchFromGitHub, - ocamlPackages, - perl, -}: -stdenv.mkDerivation { - pname = "obliv-c"; - - version = "0.0pre20210621"; - - strictDeps = true; - nativeBuildInputs = [ - perl - ] - ++ (with ocamlPackages; [ - ocaml - findlib - ocamlbuild - ]); - buildInputs = [ ocamlPackages.num ]; - propagatedBuildInputs = [ libgcrypt ]; - src = fetchFromGitHub { - owner = "samee"; - repo = "obliv-c"; - rev = "e02e5c590523ef4dae06e167a7fa00037bb3fdaf"; - sha256 = "sha256:02vyr4689f4dmwqqs0q1mrack9h3g8jz3pj8zqiz987dk0r5mz7a"; - }; - - hardeningDisable = [ "fortify" ]; - - patches = [ ./ignore-complex-float128.patch ]; - - # https://github.com/samee/obliv-c/issues/76#issuecomment-438958209 - env.OCAMLBUILD = "ocamlbuild -package num -ocamlopt 'ocamlopt -dontlink num' -ocamlc 'ocamlc -dontlink num'"; - - preBuild = '' - patchShebangs . - ''; - - preInstall = '' - mkdir -p "$out/bin" - cp bin/* "$out/bin" - mkdir -p "$out/share/doc/obliv-c" - cp -r doc/* README* CHANGE* Change* LICEN* TODO* "$out/share/doc/obliv-c" - mkdir -p "$out/share/obliv-c" - cp -r test "$out/share/obliv-c" - mkdir -p "$out/include" - cp src/ext/oblivc/*.h "$out/include" - mkdir -p "$out/lib" - gcc $(ar t _build/libobliv.a | sed -e 's@^@_build/@') --shared -o _build/libobliv.so - cp _build/lib*.a _build/lib*.so* "$out/lib" - ''; - - meta = { - 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/obliv-c/ignore-complex-float128.patch b/pkgs/development/compilers/obliv-c/ignore-complex-float128.patch deleted file mode 100644 index e3a5b74a9cb20..0000000000000 --- a/pkgs/development/compilers/obliv-c/ignore-complex-float128.patch +++ /dev/null @@ -1,37 +0,0 @@ ---- a/src/frontc/clexer.mll -+++ b/src/frontc/clexer.mll -@@ -134,9 +134,11 @@ let init_lexicon _ = - (* WW: see /usr/include/sys/cdefs.h for why __signed and __volatile - * are accepted GCC-isms *) - ("_Bool", fun loc -> BOOL loc); -+ ("_Complex", fun loc -> COMPLEX loc); - ("char", fun loc -> CHAR loc); - ("int", fun loc -> INT loc); - ("float", fun loc -> FLOAT loc); -+ ("__float128", fun loc -> FLOAT128 loc); - ("double", fun loc -> DOUBLE loc); - ("void", fun loc -> VOID loc); - ("enum", fun loc -> ENUM loc); ---- a/src/frontc/cparser.mly -+++ b/src/frontc/cparser.mly -@@ -269,6 +269,8 @@ let oblivState (s:statement): statement = - %token VOLATILE EXTERN STATIC CONST RESTRICT AUTO REGISTER FROZEN - %token THREAD - -+%token COMPLEX FLOAT128 -+ - %token SIZEOF ALIGNOF - - %token EQ PLUS_EQ MINUS_EQ STAR_EQ SLASH_EQ PERCENT_EQ -@@ -1002,7 +1004,11 @@ type_spec: /* ISO 6.7.2 */ - | LONG { Tlong, $1 } - | INT64 { Tint64, $1 } - | FLOAT { Tfloat, $1 } -+| FLOAT128 { Tfloat, $1 } - | DOUBLE { Tdouble, $1 } -+| COMPLEX FLOAT { Tfloat, $2 } -+| COMPLEX FLOAT128{ Tfloat, $2 } -+| COMPLEX DOUBLE { Tdouble, $2 } - | SIGNED { Tsigned, $1 } - | UNSIGNED { Tunsigned, $1 } - | STRUCT id_or_typename diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 9ec8c86203391..372b640f9912a 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -1672,6 +1672,7 @@ mapAliases { o = orbiton; # Added 2023-04-09 oathToolkit = oath-toolkit; # Added 2022-04-04 oauth2_proxy = throw "'oauth2_proxy' has been renamed to/replaced by 'oauth2-proxy'"; # Converted to throw 2024-10-17 + obliv-c = throw "obliv-c has been removed from Nixpkgs, as it has been unmaintained upstream for 4 years and does not build with supported GCC versions"; # Added 2025-08-18 ocis-bin = throw "ocis-bin has been renamed to ocis_5-bin'. Future major.minor versions will be made available as separate packages"; # Added 2025-03-30 odoo15 = throw "odoo15 has been removed from nixpkgs as it is unsupported; migrate to a newer version of odoo"; # Added 2025-05-06 offrss = throw "offrss has been removed due to lack of upstream maintenance; consider using another rss reader"; # Added 2025-06-01 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ee7493471bf9a..6b7703b77e9fd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5706,11 +5706,6 @@ with pkgs; enableGui = true; }; - obliv-c = callPackage ../development/compilers/obliv-c { - stdenv = gcc10Stdenv; - ocamlPackages = ocaml-ng.ocamlPackages_4_14; - }; - ocaml-ng = callPackage ./ocaml-packages.nix { }; ocaml = ocamlPackages.ocaml; From b8f75c8f75f52dfc8fe1a45b4e5f2b5b19ce8418 Mon Sep 17 00:00:00 2001 From: Emily Date: Tue, 19 Aug 2025 15:35:19 +0100 Subject: [PATCH 05/12] gcc: clean up unused patches --- .../gcc/patches/parallel-bconfig.patch | 32 ------------ .../gcc/patches/use-source-date-epoch.patch | 52 ------------------- 2 files changed, 84 deletions(-) delete mode 100644 pkgs/development/compilers/gcc/patches/parallel-bconfig.patch delete mode 100644 pkgs/development/compilers/gcc/patches/use-source-date-epoch.patch diff --git a/pkgs/development/compilers/gcc/patches/parallel-bconfig.patch b/pkgs/development/compilers/gcc/patches/parallel-bconfig.patch deleted file mode 100644 index bc56ac698f5ac..0000000000000 --- a/pkgs/development/compilers/gcc/patches/parallel-bconfig.patch +++ /dev/null @@ -1,32 +0,0 @@ -Hacky work-around for highly parallel builds. -http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57125 - -diff --git a/gcc/Makefile.in b/gcc/Makefile.in -index aad927c..182f666 100644 ---- a/gcc/Makefile.in -+++ b/gcc/Makefile.in -@@ -3908,21 +3908,21 @@ build/gengtype-lex.o: $(BCONFIG_H) - - gengtype-parse.o build/gengtype-parse.o : gengtype-parse.c gengtype.h \ - $(SYSTEM_H) --gengtype-parse.o: $(CONFIG_H) -+gengtype-parse.o: $(CONFIG_H) $(BCONFIG_H) - CFLAGS-gengtype-parse.o += -DGENERATOR_FILE - build/gengtype-parse.o: $(BCONFIG_H) - - gengtype-state.o build/gengtype-state.o: gengtype-state.c $(SYSTEM_H) \ - gengtype.h errors.h double-int.h version.h $(HASHTAB_H) $(OBSTACK_H) \ - $(XREGEX_H) --gengtype-state.o: $(CONFIG_H) -+gengtype-state.o: $(CONFIG_H) $(BCONFIG_H) - CFLAGS-gengtype-state.o += -DGENERATOR_FILE - build/gengtype-state.o: $(BCONFIG_H) - - gengtype.o build/gengtype.o : gengtype.c $(SYSTEM_H) gengtype.h \ - rtl.def insn-notes.def errors.h double-int.h version.h $(HASHTAB_H) \ - $(OBSTACK_H) $(XREGEX_H) --gengtype.o: $(CONFIG_H) -+gengtype.o: $(CONFIG_H) $(BCONFIG_H) - CFLAGS-gengtype.o += -DGENERATOR_FILE - build/gengtype.o: $(BCONFIG_H) - diff --git a/pkgs/development/compilers/gcc/patches/use-source-date-epoch.patch b/pkgs/development/compilers/gcc/patches/use-source-date-epoch.patch deleted file mode 100644 index 65a5ab028c1c9..0000000000000 --- a/pkgs/development/compilers/gcc/patches/use-source-date-epoch.patch +++ /dev/null @@ -1,52 +0,0 @@ -https://gcc.gnu.org/ml/gcc-patches/2015-06/msg02210.html - -diff --git a/libcpp/macro.c b/libcpp/macro.c -index 1e0a0b5..a52e3cb 100644 ---- a/libcpp/macro.c -+++ b/libcpp/macro.c -@@ -349,14 +349,38 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node) - slow on some systems. */ - time_t tt; - struct tm *tb = NULL; -+ char *source_date_epoch; - -- /* (time_t) -1 is a legitimate value for "number of seconds -- since the Epoch", so we have to do a little dance to -- distinguish that from a genuine error. */ -- errno = 0; -- tt = time(NULL); -- if (tt != (time_t)-1 || errno == 0) -- tb = localtime (&tt); -+ /* Allow the date and time to be set externally by an exported -+ environment variable to enable reproducible builds. */ -+ source_date_epoch = getenv ("SOURCE_DATE_EPOCH"); -+ if (source_date_epoch) -+ { -+ errno = 0; -+ tt = (time_t) strtol (source_date_epoch, NULL, 10); -+ if (errno == 0) -+ { -+ tb = gmtime (&tt); -+ if (tb == NULL) -+ cpp_error (pfile, CPP_DL_ERROR, -+ "SOURCE_DATE_EPOCH=\"%s\" is not a valid date", -+ source_date_epoch); -+ } -+ else -+ cpp_error (pfile, CPP_DL_ERROR, -+ "SOURCE_DATE_EPOCH=\"%s\" is not a valid number", -+ source_date_epoch); -+ } -+ else -+ { -+ /* (time_t) -1 is a legitimate value for "number of seconds -+ since the Epoch", so we have to do a little dance to -+ distinguish that from a genuine error. */ -+ errno = 0; -+ tt = time(NULL); -+ if (tt != (time_t)-1 || errno == 0) -+ tb = localtime (&tt); -+ } - - if (tb) - { From 2a196a727875db31f845cb97da9fc102240c36b3 Mon Sep 17 00:00:00 2001 From: Emily Date: Fri, 8 Aug 2025 18:22:54 +0100 Subject: [PATCH 06/12] {gcc9,gfortran9}: drop EOL since 2022; no longer used in the tree. --- doc/release-notes/rl-2511.section.md | 2 + pkgs/by-name/gf/gfortran9/package.nix | 10 - .../compilers/gcc/common/dependencies.nix | 2 +- pkgs/development/compilers/gcc/default.nix | 17 +- ...thread-model-support-from-mcfgthread.patch | 306 ------------------ .../AvailabilityInternal.h-fixincludes.patch | 105 ------ ...ix-struct-redefinition-on-glibc-2.36.patch | 31 -- .../gcc/patches/9/gcc9-darwin-as-gstabs.patch | 99 ------ .../compilers/gcc/patches/default.nix | 25 +- .../gcc/patches/libstdc++-netbsd-ctypes.patch | 141 -------- .../gcc/patches/no-sys-dirs-riscv-gcc9.patch | 17 - pkgs/development/compilers/gcc/versions.nix | 2 - pkgs/top-level/aliases.nix | 3 + pkgs/top-level/all-packages.nix | 2 - 14 files changed, 10 insertions(+), 752 deletions(-) delete mode 100644 pkgs/by-name/gf/gfortran9/package.nix delete mode 100644 pkgs/development/compilers/gcc/patches/9/Added-mcf-thread-model-support-from-mcfgthread.patch delete mode 100644 pkgs/development/compilers/gcc/patches/9/AvailabilityInternal.h-fixincludes.patch delete mode 100644 pkgs/development/compilers/gcc/patches/9/fix-struct-redefinition-on-glibc-2.36.patch delete mode 100644 pkgs/development/compilers/gcc/patches/9/gcc9-darwin-as-gstabs.patch delete mode 100644 pkgs/development/compilers/gcc/patches/libstdc++-netbsd-ctypes.patch delete mode 100644 pkgs/development/compilers/gcc/patches/no-sys-dirs-riscv-gcc9.patch diff --git a/doc/release-notes/rl-2511.section.md b/doc/release-notes/rl-2511.section.md index 7f97507f02443..523c43f7386a9 100644 --- a/doc/release-notes/rl-2511.section.md +++ b/doc/release-notes/rl-2511.section.md @@ -20,6 +20,8 @@ - The `offrss` package was removed due to lack of upstream maintenance since 2012. It's recommended for users to migrate to another RSS reader +- GCC 9 has been removed, as it has reached end‐of‐life upstream and is no longer supported. + - `base16-builder` node package has been removed due to lack of upstream maintenance. - `gentium` package now provides `Gentium-*.ttf` files, and not `GentiumPlus-*.ttf` files like before. The font identifiers `Gentium Plus*` are available in the `gentium-plus` package, and if you want to use the more recently updated package `gentium` [by sil](https://software.sil.org/gentium/), you should update your configuration files to use the `Gentium` font identifier. - `space-orbit` package has been removed due to lack of upstream maintenance. Debian upstream stopped tracking it in 2011. diff --git a/pkgs/by-name/gf/gfortran9/package.nix b/pkgs/by-name/gf/gfortran9/package.nix deleted file mode 100644 index 9fce86338bcd3..0000000000000 --- a/pkgs/by-name/gf/gfortran9/package.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ wrapCC, gcc9 }: -wrapCC ( - gcc9.cc.override { - name = "gfortran"; - langFortran = true; - langCC = false; - langC = false; - profiledCompiler = false; - } -) diff --git a/pkgs/development/compilers/gcc/common/dependencies.nix b/pkgs/development/compilers/gcc/common/dependencies.nix index b27b59f2f2b90..839d6474836e1 100644 --- a/pkgs/development/compilers/gcc/common/dependencies.nix +++ b/pkgs/development/compilers/gcc/common/dependencies.nix @@ -76,8 +76,8 @@ in gmp mpfr libmpc + libxcrypt ] - ++ optionals (lib.versionAtLeast version "10") [ libxcrypt ] ++ [ targetPackages.stdenv.cc.bintools # For linking code at run-time ] diff --git a/pkgs/development/compilers/gcc/default.nix b/pkgs/development/compilers/gcc/default.nix index 0e4a70f870d54..456c83df7e57f 100644 --- a/pkgs/development/compilers/gcc/default.nix +++ b/pkgs/development/compilers/gcc/default.nix @@ -53,7 +53,6 @@ callPackage, majorMinorVersion, apple-sdk, - cctools, darwin, }: @@ -84,13 +83,11 @@ let atLeast13 = versionAtLeast version "13"; atLeast12 = versionAtLeast version "12"; atLeast11 = versionAtLeast version "11"; - atLeast10 = versionAtLeast version "10"; is14 = majorVersion == "14"; is13 = majorVersion == "13"; is12 = majorVersion == "12"; is11 = majorVersion == "11"; is10 = majorVersion == "10"; - is9 = majorVersion == "9"; # releases have a form: MAJOR.MINOR.MICRO, like 14.2.1 # snapshots have a form like MAJOR.MINOR.MICRO.DATE, like 14.2.1.20250322 @@ -326,11 +323,9 @@ pipe depsTargetTarget ; - preConfigure = - (callFile ./common/pre-configure.nix { }) - + optionalString atLeast10 '' - ln -sf ${libxcrypt}/include/crypt.h libsanitizer/sanitizer_common/crypt.h - ''; + preConfigure = (callFile ./common/pre-configure.nix { }) + '' + ln -sf ${libxcrypt}/include/crypt.h libsanitizer/sanitizer_common/crypt.h + ''; dontDisableStatic = true; @@ -466,12 +461,6 @@ pipe if (!lib.systems.equals targetPlatform hostPlatform) then [ "aarch64-darwin" ] else [ ]; }; } - // optionalAttrs (!atLeast10 && stdenv.targetPlatform.isDarwin) { - # GCC <10 requires default cctools `strip` instead of `llvm-strip` used by Darwin bintools. - preBuild = '' - makeFlagsArray+=('STRIP=${getBin cctools}/bin/${stdenv.cc.targetPrefix}strip') - ''; - } // optionalAttrs enableMultilib { dontMoveLib64 = true; } diff --git a/pkgs/development/compilers/gcc/patches/9/Added-mcf-thread-model-support-from-mcfgthread.patch b/pkgs/development/compilers/gcc/patches/9/Added-mcf-thread-model-support-from-mcfgthread.patch deleted file mode 100644 index d9809e828f10c..0000000000000 --- a/pkgs/development/compilers/gcc/patches/9/Added-mcf-thread-model-support-from-mcfgthread.patch +++ /dev/null @@ -1,306 +0,0 @@ -From 86f2f767ddffd9f7c6f1470b987ae7b0d251b988 Mon Sep 17 00:00:00 2001 -From: Liu Hao -Date: Wed, 25 Apr 2018 21:54:19 +0800 -Subject: [PATCH] Added 'mcf' thread model support from mcfgthread. - -Signed-off-by: Liu Hao ---- - config/gthr.m4 | 1 + - gcc/config.gcc | 3 +++ - gcc/config/i386/mingw-mcfgthread.h | 1 + - gcc/config/i386/mingw-w64.h | 2 +- - gcc/config/i386/mingw32.h | 11 ++++++++++- - gcc/configure | 2 +- - gcc/configure.ac | 2 +- - libatomic/configure.tgt | 2 +- - libgcc/config.host | 6 ++++++ - libgcc/config/i386/gthr-mcf.h | 1 + - libgcc/config/i386/t-mingw-mcfgthread | 2 ++ - libgcc/configure | 1 + - libstdc++-v3/configure | 1 + - libstdc++-v3/libsupc++/atexit_thread.cc | 18 ++++++++++++++++++ - libstdc++-v3/libsupc++/guard.cc | 23 +++++++++++++++++++++++ - libstdc++-v3/src/c++11/thread.cc | 9 +++++++++ - 16 files changed, 80 insertions(+), 5 deletions(-) - create mode 100644 gcc/config/i386/mingw-mcfgthread.h - create mode 100644 libgcc/config/i386/gthr-mcf.h - create mode 100644 libgcc/config/i386/t-mingw-mcfgthread - -diff --git a/config/gthr.m4 b/config/gthr.m4 -index 7b29f1f3327..82e21fe1709 100644 ---- a/config/gthr.m4 -+++ b/config/gthr.m4 -@@ -21,6 +21,7 @@ case $1 in - tpf) thread_header=config/s390/gthr-tpf.h ;; - vxworks) thread_header=config/gthr-vxworks.h ;; - win32) thread_header=config/i386/gthr-win32.h ;; -+ mcf) thread_header=config/i386/gthr-mcf.h ;; - esac - AC_SUBST(thread_header) - ]) -diff --git a/gcc/config.gcc b/gcc/config.gcc -index 46a9029acec..112c24e95a3 100644 ---- a/gcc/config.gcc -+++ b/gcc/config.gcc -@@ -1758,6 +1758,9 @@ i[34567]86-*-mingw* | x86_64-*-mingw*) - if test x$enable_threads = xposix ; then - tm_file="${tm_file} i386/mingw-pthread.h" - fi -+ if test x$enable_threads = xmcf ; then -+ tm_file="${tm_file} i386/mingw-mcfgthread.h" -+ fi - tm_file="${tm_file} i386/mingw32.h" - # This makes the logic if mingw's or the w64 feature set has to be used - case ${target} in -diff --git a/gcc/config/i386/mingw-mcfgthread.h b/gcc/config/i386/mingw-mcfgthread.h -new file mode 100644 -index 00000000000..ec381a7798f ---- /dev/null -+++ b/gcc/config/i386/mingw-mcfgthread.h -@@ -0,0 +1 @@ -+#define TARGET_USE_MCFGTHREAD 1 -diff --git a/gcc/config/i386/mingw-w64.h b/gcc/config/i386/mingw-w64.h -index 484dc7a9e9f..a15bbeea500 100644 ---- a/gcc/config/i386/mingw-w64.h -+++ b/gcc/config/i386/mingw-w64.h -@@ -48,7 +48,7 @@ along with GCC; see the file COPYING3. If not see - "%{mwindows:-lgdi32 -lcomdlg32} " \ - "%{fvtable-verify=preinit:-lvtv -lpsapi; \ - fvtable-verify=std:-lvtv -lpsapi} " \ -- "-ladvapi32 -lshell32 -luser32 -lkernel32" -+ LIB_MCFGTHREAD "-ladvapi32 -lshell32 -luser32 -lkernel32" - - #undef SPEC_32 - #undef SPEC_64 -diff --git a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h -index 0612b87199a..76cea94f3b7 100644 ---- a/gcc/config/i386/mingw32.h -+++ b/gcc/config/i386/mingw32.h -@@ -32,6 +32,14 @@ along with GCC; see the file COPYING3. If not see - | MASK_STACK_PROBE | MASK_ALIGN_DOUBLE \ - | MASK_MS_BITFIELD_LAYOUT) - -+#ifndef TARGET_USE_MCFGTHREAD -+#define CPP_MCFGTHREAD() ((void)0) -+#define LIB_MCFGTHREAD "" -+#else -+#define CPP_MCFGTHREAD() (builtin_define("__USING_MCFGTHREAD__")) -+#define LIB_MCFGTHREAD " -lmcfgthread " -+#endif -+ - /* See i386/crtdll.h for an alternative definition. _INTEGRAL_MAX_BITS - is for compatibility with native compiler. */ - #define EXTRA_OS_CPP_BUILTINS() \ -@@ -50,6 +58,7 @@ along with GCC; see the file COPYING3. If not see - builtin_define_std ("WIN64"); \ - builtin_define ("_WIN64"); \ - } \ -+ CPP_MCFGTHREAD(); \ - } \ - while (0) - -@@ -93,7 +102,7 @@ along with GCC; see the file COPYING3. If not see - "%{mwindows:-lgdi32 -lcomdlg32} " \ - "%{fvtable-verify=preinit:-lvtv -lpsapi; \ - fvtable-verify=std:-lvtv -lpsapi} " \ -- "-ladvapi32 -lshell32 -luser32 -lkernel32" -+ LIB_MCFGTHREAD "-ladvapi32 -lshell32 -luser32 -lkernel32" - - /* Weak symbols do not get resolved if using a Windows dll import lib. - Make the unwind registration references strong undefs. */ -diff --git a/gcc/configure b/gcc/configure -index 6121e163259..52f0e00efe6 100755 ---- a/gcc/configure -+++ b/gcc/configure -@@ -11693,7 +11693,7 @@ case ${enable_threads} in - target_thread_file='single' - ;; - aix | dce | lynx | mipssde | posix | rtems | \ -- single | tpf | vxworks | win32) -+ single | tpf | vxworks | win32 | mcf) - target_thread_file=${enable_threads} - ;; - *) -diff --git a/gcc/configure.ac b/gcc/configure.ac -index b066cc609e1..4ecdba88de7 100644 ---- a/gcc/configure.ac -+++ b/gcc/configure.ac -@@ -1612,7 +1612,7 @@ case ${enable_threads} in - target_thread_file='single' - ;; - aix | dce | lynx | mipssde | posix | rtems | \ -- single | tpf | vxworks | win32) -+ single | tpf | vxworks | win32 | mcf) - target_thread_file=${enable_threads} - ;; - *) -diff --git a/libatomic/configure.tgt b/libatomic/configure.tgt -index ea8c34f8c71..23134ad7363 100644 ---- a/libatomic/configure.tgt -+++ b/libatomic/configure.tgt -@@ -145,7 +145,7 @@ case "${target}" in - *-*-mingw*) - # OS support for atomic primitives. - case ${target_thread_file} in -- win32) -+ win32 | mcf) - config_path="${config_path} mingw" - ;; - posix) -diff --git a/libgcc/config.host b/libgcc/config.host -index 11b4acaff55..9fbd38650bd 100644 ---- a/libgcc/config.host -+++ b/libgcc/config.host -@@ -737,6 +737,9 @@ i[34567]86-*-mingw*) - posix) - tmake_file="i386/t-mingw-pthread $tmake_file" - ;; -+ mcf) -+ tmake_file="i386/t-mingw-mcfgthread $tmake_file" -+ ;; - esac - # This has to match the logic for DWARF2_UNWIND_INFO in gcc/config/i386/cygming.h - if test x$ac_cv_sjlj_exceptions = xyes; then -@@ -761,6 +764,9 @@ x86_64-*-mingw*) - posix) - tmake_file="i386/t-mingw-pthread $tmake_file" - ;; -+ mcf) -+ tmake_file="i386/t-mingw-mcfgthread $tmake_file" -+ ;; - esac - # This has to match the logic for DWARF2_UNWIND_INFO in gcc/config/i386/cygming.h - if test x$ac_cv_sjlj_exceptions = xyes; then -diff --git a/libgcc/config/i386/gthr-mcf.h b/libgcc/config/i386/gthr-mcf.h -new file mode 100644 -index 00000000000..5ea2908361f ---- /dev/null -+++ b/libgcc/config/i386/gthr-mcf.h -@@ -0,0 +1 @@ -+#include -diff --git a/libgcc/config/i386/t-mingw-mcfgthread b/libgcc/config/i386/t-mingw-mcfgthread -new file mode 100644 -index 00000000000..4b9b10e32d6 ---- /dev/null -+++ b/libgcc/config/i386/t-mingw-mcfgthread -@@ -0,0 +1,2 @@ -+SHLIB_PTHREAD_CFLAG = -+SHLIB_PTHREAD_LDFLAG = -lmcfgthread -diff --git a/libgcc/configure b/libgcc/configure -index b2f3f870844..eff889dc3b3 100644 ---- a/libgcc/configure -+++ b/libgcc/configure -@@ -5451,6 +5451,7 @@ case $target_thread_file in - tpf) thread_header=config/s390/gthr-tpf.h ;; - vxworks) thread_header=config/gthr-vxworks.h ;; - win32) thread_header=config/i386/gthr-win32.h ;; -+ mcf) thread_header=config/i386/gthr-mcf.h ;; - esac - - -diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure -index ba094be6f15..979a5ab9ace 100755 ---- a/libstdc++-v3/configure -+++ b/libstdc++-v3/configure -@@ -15187,6 +15187,7 @@ case $target_thread_file in - tpf) thread_header=config/s390/gthr-tpf.h ;; - vxworks) thread_header=config/gthr-vxworks.h ;; - win32) thread_header=config/i386/gthr-win32.h ;; -+ mcf) thread_header=config/i386/gthr-mcf.h ;; - esac - - -diff --git a/libstdc++-v3/libsupc++/atexit_thread.cc b/libstdc++-v3/libsupc++/atexit_thread.cc -index de920d714c6..665fb74bd6b 100644 ---- a/libstdc++-v3/libsupc++/atexit_thread.cc -+++ b/libstdc++-v3/libsupc++/atexit_thread.cc -@@ -25,6 +25,22 @@ - #include - #include - #include "bits/gthr.h" -+ -+#ifdef __USING_MCFGTHREAD__ -+ -+#include -+ -+extern "C" int -+__cxxabiv1::__cxa_thread_atexit (void (*dtor)(void *), -+ void *obj, void *dso_handle) -+ _GLIBCXX_NOTHROW -+{ -+ return ::_MCFCRT_AtThreadExit((void (*)(_MCFCRT_STD intptr_t))dtor, (_MCFCRT_STD intptr_t)obj) ? 0 : -1; -+ (void)dso_handle; -+} -+ -+#else // __USING_MCFGTHREAD__ -+ - #ifdef _GLIBCXX_THREAD_ATEXIT_WIN32 - #define WIN32_LEAN_AND_MEAN - #include -@@ -167,3 +183,5 @@ __cxxabiv1::__cxa_thread_atexit (void (*dtor)(void *), void *obj, void */*dso_ha - } - - #endif /* _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ -+ -+#endif // __USING_MCFGTHREAD__ -diff --git a/libstdc++-v3/libsupc++/guard.cc b/libstdc++-v3/libsupc++/guard.cc -index 3a2ec3ad0d6..8b4cc96199b 100644 ---- a/libstdc++-v3/libsupc++/guard.cc -+++ b/libstdc++-v3/libsupc++/guard.cc -@@ -28,6 +28,27 @@ - #include - #include - #include -+ -+#ifdef __USING_MCFGTHREAD__ -+ -+#include -+ -+namespace __cxxabiv1 { -+ -+extern "C" int __cxa_guard_acquire(__guard *g){ -+ return ::_MCFCRT_WaitForOnceFlagForever((::_MCFCRT_OnceFlag *)g) == ::_MCFCRT_kOnceResultInitial; -+} -+extern "C" void __cxa_guard_abort(__guard *g) throw() { -+ ::_MCFCRT_SignalOnceFlagAsAborted((::_MCFCRT_OnceFlag *)g); -+} -+extern "C" void __cxa_guard_release(__guard *g) throw() { -+ ::_MCFCRT_SignalOnceFlagAsFinished((::_MCFCRT_OnceFlag *)g); -+} -+ -+} -+ -+#else // __USING_MCFGTHREAD__ -+ - #include - #include - #include -@@ -425,3 +446,5 @@ namespace __cxxabiv1 - #endif - } - } -+ -+#endif -diff --git a/libstdc++-v3/src/c++11/thread.cc b/libstdc++-v3/src/c++11/thread.cc -index 8238817c2e9..0c6a1f85f6f 100644 ---- a/libstdc++-v3/src/c++11/thread.cc -+++ b/libstdc++-v3/src/c++11/thread.cc -@@ -55,6 +55,15 @@ static inline int get_nprocs() - #elif defined(_GLIBCXX_USE_SC_NPROC_ONLN) - # include - # define _GLIBCXX_NPROCS sysconf(_SC_NPROC_ONLN) -+#elif defined(_WIN32) -+# include -+static inline int get_nprocs() -+{ -+ SYSTEM_INFO sysinfo; -+ GetSystemInfo(&sysinfo); -+ return (int)sysinfo.dwNumberOfProcessors; -+} -+# define _GLIBCXX_NPROCS get_nprocs() - #else - # define _GLIBCXX_NPROCS 0 - #endif --- -2.17.0 - diff --git a/pkgs/development/compilers/gcc/patches/9/AvailabilityInternal.h-fixincludes.patch b/pkgs/development/compilers/gcc/patches/9/AvailabilityInternal.h-fixincludes.patch deleted file mode 100644 index 8575f71912a1c..0000000000000 --- a/pkgs/development/compilers/gcc/patches/9/AvailabilityInternal.h-fixincludes.patch +++ /dev/null @@ -1,105 +0,0 @@ -diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x -index 47a3578f017..6cf22d19b2a 100644 ---- a/fixincludes/fixincl.x -+++ b/fixincludes/fixincl.x -@@ -3480,6 +3480,43 @@ static const char* apzDarwin_Ucred__AtomicPatch[] = { - #endif\n", - (char*)NULL }; - -+/* * * * * * * * * * * * * * * * * * * * * * * * * * -+ * -+ * Description of Darwin_Nix_Sdk_Availabilityinternal fix -+ */ -+tSCC zDarwin_Nix_Sdk_AvailabilityinternalName[] = -+ "darwin_nix_sdk_availabilityinternal"; -+ -+/* -+ * File name selection pattern -+ */ -+tSCC zDarwin_Nix_Sdk_AvailabilityinternalList[] = -+ "AvailabilityInternal.h\0"; -+/* -+ * Machine/OS name selection pattern -+ */ -+tSCC* apzDarwin_Nix_Sdk_AvailabilityinternalMachs[] = { -+ "*-*-darwin*", -+ (const char*)NULL }; -+ -+/* -+ * content selection pattern - do fix if pattern found -+ */ -+tSCC zDarwin_Nix_Sdk_AvailabilityinternalSelect0[] = -+ "(.*)__has_builtin\\(__is_target_os\\)(.*)"; -+ -+#define DARWIN_NIX_SDK_AVAILABILITYINTERNAL_TEST_CT 1 -+static tTestDesc aDarwin_Nix_Sdk_AvailabilityinternalTests[] = { -+ { TT_EGREP, zDarwin_Nix_Sdk_AvailabilityinternalSelect0, (regex_t*)NULL }, }; -+ -+/* -+ * Fix Command Arguments for Darwin_Nix_Sdk_Availabilityinternal -+ */ -+static const char* apzDarwin_Nix_Sdk_AvailabilityinternalPatch[] = { -+ "format", -+ "%10%2", -+ (char*)NULL }; -+ - /* * * * * * * * * * * * * * * * * * * * * * * * * * - * - * Description of Dec_Intern_Asm fix -@@ -10445,9 +10482,9 @@ static const char* apzX11_SprintfPatch[] = { - * - * List of all fixes - */ --#define REGEX_COUNT 296 -+#define REGEX_COUNT 297 - #define MACH_LIST_SIZE_LIMIT 187 --#define FIX_COUNT 257 -+#define FIX_COUNT 258 - - /* - * Enumerate the fixes -@@ -10535,6 +10572,7 @@ typedef enum { - DARWIN_STDINT_6_FIXIDX, - DARWIN_STDINT_7_FIXIDX, - DARWIN_UCRED__ATOMIC_FIXIDX, -+ DARWIN_NIX_SDK_AVAILABILITYINTERNAL_FIXIDX, - DEC_INTERN_ASM_FIXIDX, - DJGPP_WCHAR_H_FIXIDX, - ECD_CURSOR_FIXIDX, -@@ -11123,6 +11161,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = { - DARWIN_UCRED__ATOMIC_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, - aDarwin_Ucred__AtomicTests, apzDarwin_Ucred__AtomicPatch, 0 }, - -+ { zDarwin_Nix_Sdk_AvailabilityinternalName, zDarwin_Nix_Sdk_AvailabilityinternalList, -+ apzDarwin_Nix_Sdk_AvailabilityinternalMachs, -+ DARWIN_NIX_SDK_AVAILABILITYINTERNAL_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, -+ aDarwin_Nix_Sdk_AvailabilityinternalTests, apzDarwin_Nix_Sdk_AvailabilityinternalPatch, 0 }, -+ - { zDec_Intern_AsmName, zDec_Intern_AsmList, - apzDec_Intern_AsmMachs, - DEC_INTERN_ASM_TEST_CT, FD_MACH_ONLY, -diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def -index bf136fdaa20..89bceb46c26 100644 ---- a/fixincludes/inclhack.def -+++ b/fixincludes/inclhack.def -@@ -1727,6 +1727,20 @@ fix = { - test_text = ""; /* Don't provide this for wrap fixes. */ - }; - -+/* -+ * Newer versions of AvailabilityInternal.h use `__has_builtin`, -+ * which is not implemented in or compatible with GCC. -+ */ -+fix = { -+ hackname = darwin_nix_sdk_availabilityinternal; -+ mach = "*-*-darwin*"; -+ files = AvailabilityInternal.h; -+ c_fix = format; -+ c_fix_arg = "%10%2"; -+ select = "(.*)__has_builtin\\(__is_target_os\\)(.*)"; -+ test_text = "__has_builtin(__is_target_os)"; -+}; -+ - /* - * Fix on Digital UNIX V4.0: - * It contains a prototype for a DEC C internal asm() function, diff --git a/pkgs/development/compilers/gcc/patches/9/fix-struct-redefinition-on-glibc-2.36.patch b/pkgs/development/compilers/gcc/patches/9/fix-struct-redefinition-on-glibc-2.36.patch deleted file mode 100644 index 5b4abfd02e0bf..0000000000000 --- a/pkgs/development/compilers/gcc/patches/9/fix-struct-redefinition-on-glibc-2.36.patch +++ /dev/null @@ -1,31 +0,0 @@ -Derived from ../11/fix-struct-redefinition-on-glibc-2.36.patch (upstream commit d2356ebb0084a0d80dbfe33040c9afe938c15d19) - -diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc -index e8fce8a02..cb1ac806e 100644 ---- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc -+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc -@@ -65,7 +65,9 @@ - #include - #include - #include -+#if SANITIZER_ANDROID - #include -+#endif - #include - #include - #include -@@ -846,10 +848,10 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr); - unsigned IOCTL_EVIOCGPROP = IOCTL_NOT_PRESENT; - unsigned IOCTL_EVIOCSKEYCODE_V2 = IOCTL_NOT_PRESENT; - #endif -- unsigned IOCTL_FS_IOC_GETFLAGS = FS_IOC_GETFLAGS; -- unsigned IOCTL_FS_IOC_GETVERSION = FS_IOC_GETVERSION; -- unsigned IOCTL_FS_IOC_SETFLAGS = FS_IOC_SETFLAGS; -- unsigned IOCTL_FS_IOC_SETVERSION = FS_IOC_SETVERSION; -+ unsigned IOCTL_FS_IOC_GETFLAGS = _IOR('f', 1, long); -+ unsigned IOCTL_FS_IOC_GETVERSION = _IOR('v', 1, long); -+ unsigned IOCTL_FS_IOC_SETFLAGS = _IOW('f', 2, long); -+ unsigned IOCTL_FS_IOC_SETVERSION = _IOW('v', 2, long); - unsigned IOCTL_GIO_CMAP = GIO_CMAP; - unsigned IOCTL_GIO_FONT = GIO_FONT; - unsigned IOCTL_GIO_UNIMAP = GIO_UNIMAP; diff --git a/pkgs/development/compilers/gcc/patches/9/gcc9-darwin-as-gstabs.patch b/pkgs/development/compilers/gcc/patches/9/gcc9-darwin-as-gstabs.patch deleted file mode 100644 index 454139c5396c5..0000000000000 --- a/pkgs/development/compilers/gcc/patches/9/gcc9-darwin-as-gstabs.patch +++ /dev/null @@ -1,99 +0,0 @@ -Backported from https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=b2cee5e1e89c8f939bc36fe9756befcb93d96982 - -diff -ur a/gcc/config/darwin.h b/gcc/config/darwin.h ---- a/gcc/config/darwin.h 2022-05-27 03:21:10.947379000 -0400 -+++ b/gcc/config/darwin.h 2023-11-06 12:18:27.209236423 -0500 -@@ -230,12 +230,18 @@ - - #define DSYMUTIL "\ndsymutil" - -+/* Spec that controls whether the debug linker is run automatically for -+ a link step. This needs to be done if there is a source file on the -+ command line which will result in a temporary object (and debug is -+ enabled). */ -+ - #define DSYMUTIL_SPEC \ - "%{!fdump=*:%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\ - %{v} \ -- %{gdwarf-2:%{!gstabs*:%{%:debug-level-gt(0): -idsym}}}\ -- %{.c|.cc|.C|.cpp|.cp|.c++|.cxx|.CPP|.m|.mm: \ -- %{gdwarf-2:%{!gstabs*:%{%:debug-level-gt(0): -dsym}}}}}}}}}}}" -+ %{g*:%{!gstabs*:%{%:debug-level-gt(0): -idsym}}}\ -+ %{.c|.cc|.C|.cpp|.cp|.c++|.cxx|.CPP|.m|.mm|.s|.f|.f90|\ -+ .f95|.f03|.f77|.for|.F|.F90|.F95|.F03: \ -+ %{g*:%{!gstabs*:%{%:debug-level-gt(0): -dsym}}}}}}}}}}}" - - #define LINK_COMMAND_SPEC LINK_COMMAND_SPEC_A DSYMUTIL_SPEC - -@@ -463,21 +469,31 @@ - %{Zforce_cpusubtype_ALL:-force_cpusubtype_ALL} \ - %{static}" ASM_MMACOSX_VERSION_MIN_SPEC - --/* Default ASM_DEBUG_SPEC. Darwin's as cannot currently produce dwarf -- debugging data. */ -- -+#ifdef HAS_AS_STABS_DIRECTIVE -+/* We only pass a debug option to the assembler if that supports stabs, since -+ dwarf is not uniformly supported in the assemblers. */ - #define ASM_DEBUG_SPEC "%{g*:%{%:debug-level-gt(0):%{!gdwarf*:--gstabs}}}" -+#else -+#define ASM_DEBUG_SPEC "" -+#endif -+ -+#undef ASM_DEBUG_OPTION_SPEC -+#define ASM_DEBUG_OPTION_SPEC "" -+ - #define ASM_FINAL_SPEC \ - "%{gsplit-dwarf:%ngsplit-dwarf is not supported on this platform} %. */ - --/* Prefer DWARF2. */ --#undef PREFERRED_DEBUGGING_TYPE --#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG --#define DARWIN_PREFER_DWARF -- --/* Since DWARF2 is default, conditions for running dsymutil are different. */ --#undef DSYMUTIL_SPEC --#define DSYMUTIL_SPEC \ -- "%{!fdump=*:%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\ -- %{v} \ -- %{g*:%{!gstabs*:%{%:debug-level-gt(0): -idsym}}}\ -- %{.c|.cc|.C|.cpp|.cp|.c++|.cxx|.CPP|.m|.mm|.s|.f|.f90|.f95|.f03|.f77|.for|.F|.F90|.F95|.F03: \ -- %{g*:%{!gstabs*:%{%:debug-level-gt(0): -dsym}}}}}}}}}}}" -- --/* Tell collect2 to run dsymutil for us as necessary. */ --#define COLLECT_RUN_DSYMUTIL 1 -- --/* Only ask as for debug data if the debug style is stabs (since as doesn't -- yet generate dwarf.) */ -- --#undef ASM_DEBUG_SPEC --#define ASM_DEBUG_SPEC "%{g*:%{%:debug-level-gt(0):%{gstabs:--gstabs}}}" -- - #undef ASM_OUTPUT_ALIGNED_COMMON - #define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN) \ - do { \ diff --git a/pkgs/development/compilers/gcc/patches/default.nix b/pkgs/development/compilers/gcc/patches/default.nix index 0b57ecab691f2..f0bb8d5b7c757 100644 --- a/pkgs/development/compilers/gcc/patches/default.nix +++ b/pkgs/development/compilers/gcc/patches/default.nix @@ -32,14 +32,12 @@ let atLeast13 = lib.versionAtLeast version "13"; atLeast12 = lib.versionAtLeast version "12"; atLeast11 = lib.versionAtLeast version "11"; - atLeast10 = lib.versionAtLeast version "10"; is15 = majorVersion == "15"; is14 = majorVersion == "14"; is13 = majorVersion == "13"; is12 = majorVersion == "12"; is11 = majorVersion == "11"; is10 = majorVersion == "10"; - is9 = majorVersion == "9"; # We only apply these patches when building a native toolchain for # aarch64-darwin, as it breaks building a foreign one: @@ -99,7 +97,6 @@ in ]; "11" = [ ./no-sys-dirs-riscv.patch ]; "10" = [ ./no-sys-dirs-riscv.patch ]; - "9" = [ ./no-sys-dirs-riscv-gcc9.patch ]; } ."${majorVersion}" or [ ] ) @@ -283,14 +280,6 @@ in .${majorVersion} or [ ] ) -# Work around newer AvailabilityInternal.h when building older versions of GCC. -++ optionals (stdenv.hostPlatform.isDarwin) ( - { - "9" = [ ../patches/9/AvailabilityInternal.h-fixincludes.patch ]; - } - .${majorVersion} or [ ] -) - ## Windows # Backported mcf thread model support from gcc13: @@ -321,7 +310,7 @@ in ## gcc 10.0 and older ############################################################################## # Probably needed for gnat wrapper https://github.com/NixOS/nixpkgs/pull/62314 -++ optional (langAda && (is9 || is10)) ./gnat-cflags.patch +++ optional (langAda && is10) ./gnat-cflags.patch ++ # Backport native aarch64-darwin compilation fix from gcc12 # https://github.com/NixOS/nixpkgs/pull/167595 @@ -341,15 +330,3 @@ in ++ optional ( !atLeast11 && stdenv.cc.isClang && stdenv.hostPlatform.isDarwin ) ./clang-genconditions.patch - -## gcc 9.0 and older ############################################################################## - -++ optional (majorVersion == "9") ./9/fix-struct-redefinition-on-glibc-2.36.patch -# Needed for NetBSD cross comp in older versions -# https://gcc.gnu.org/pipermail/gcc-patches/2020-January/thread.html#537548 -# https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=98d56ea8900fdcff8f1987cf2bf499a5b7399857 -++ optional (!atLeast10 && targetPlatform.isNetBSD) ./libstdc++-netbsd-ctypes.patch - -# Make Darwin bootstrap respect whether the assembler supports `--gstabs`, -# which is not supported by the clang integrated assembler used by default on Darwin. -++ optional (is9 && hostPlatform.isDarwin) ./9/gcc9-darwin-as-gstabs.patch diff --git a/pkgs/development/compilers/gcc/patches/libstdc++-netbsd-ctypes.patch b/pkgs/development/compilers/gcc/patches/libstdc++-netbsd-ctypes.patch deleted file mode 100644 index 28fff80b786db..0000000000000 --- a/pkgs/development/compilers/gcc/patches/libstdc++-netbsd-ctypes.patch +++ /dev/null @@ -1,141 +0,0 @@ -diff --git a/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h b/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h -index ff3ec893974..21eccf9fde1 100644 ---- a/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h -+++ b/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h -@@ -38,40 +38,46 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION - /// @brief Base class for ctype. - struct ctype_base - { -- // Non-standard typedefs. -- typedef const unsigned char* __to_type; - - // NB: Offsets into ctype::_M_table force a particular size - // on the mask type. Because of this, we don't use an enum. -- typedef unsigned char mask; - - #ifndef _CTYPE_U -- static const mask upper = _U; -- static const mask lower = _L; -- static const mask alpha = _U | _L; -- static const mask digit = _N; -- static const mask xdigit = _N | _X; -- static const mask space = _S; -- static const mask print = _P | _U | _L | _N | _B; -- static const mask graph = _P | _U | _L | _N; -- static const mask cntrl = _C; -- static const mask punct = _P; -- static const mask alnum = _U | _L | _N; -+ // Non-standard typedefs. -+ typedef const unsigned char* __to_type; -+ -+ typedef unsigned char mask; -+ -+ static const mask upper = _U; -+ static const mask lower = _L; -+ static const mask alpha = _U | _L; -+ static const mask digit = _N; -+ static const mask xdigit = _N | _X; -+ static const mask space = _S; -+ static const mask print = _P | _U | _L | _N | _B; -+ static const mask graph = _P | _U | _L | _N; -+ static const mask cntrl = _C; -+ static const mask punct = _P; -+ static const mask alnum = _U | _L | _N; - #else -- static const mask upper = _CTYPE_U; -- static const mask lower = _CTYPE_L; -- static const mask alpha = _CTYPE_U | _CTYPE_L; -- static const mask digit = _CTYPE_N; -- static const mask xdigit = _CTYPE_N | _CTYPE_X; -- static const mask space = _CTYPE_S; -- static const mask print = _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N | _CTYPE_B; -- static const mask graph = _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N; -- static const mask cntrl = _CTYPE_C; -- static const mask punct = _CTYPE_P; -- static const mask alnum = _CTYPE_U | _CTYPE_L | _CTYPE_N; -+ typedef const unsigned short* __to_type; -+ -+ typedef unsigned short mask; -+ -+ static const mask upper = _CTYPE_U; -+ static const mask lower = _CTYPE_L; -+ static const mask alpha = _CTYPE_A; -+ static const mask digit = _CTYPE_D; -+ static const mask xdigit = _CTYPE_X; -+ static const mask space = _CTYPE_S; -+ static const mask print = _CTYPE_R; -+ static const mask graph = _CTYPE_G; -+ static const mask cntrl = _CTYPE_C; -+ static const mask punct = _CTYPE_P; -+ static const mask alnum = _CTYPE_A | _CTYPE_D; - #endif - #if __cplusplus >= 201103L -- static const mask blank = space; -+ static const mask blank = space; - #endif - }; - -diff --git a/libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc b/libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc -index ed3b7cd0d6a..33358e8f5d8 100644 ---- a/libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc -+++ b/libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc -@@ -38,11 +38,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Information as gleaned from /usr/include/ctype.h - -- extern "C" const u_int8_t _C_ctype_[]; -- - const ctype_base::mask* - ctype::classic_table() throw() -- { return _C_ctype_ + 1; } -+ { return _C_ctype_tab_ + 1; } - - ctype::ctype(__c_locale, const mask* __table, bool __del, - size_t __refs) -@@ -69,14 +67,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION - - char - ctype::do_toupper(char __c) const -- { return ::toupper((int) __c); } -+ { return ::toupper((int)(unsigned char) __c); } - - const char* - ctype::do_toupper(char* __low, const char* __high) const - { - while (__low < __high) - { -- *__low = ::toupper((int) *__low); -+ *__low = ::toupper((int)(unsigned char) *__low); - ++__low; - } - return __high; -@@ -84,14 +82,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION - - char - ctype::do_tolower(char __c) const -- { return ::tolower((int) __c); } -+ { return ::tolower((int)(unsigned char) __c); } - - const char* - ctype::do_tolower(char* __low, const char* __high) const - { - while (__low < __high) - { -- *__low = ::tolower((int) *__low); -+ *__low = ::tolower((int)(unsigned char) *__low); - ++__low; - } - return __high; -diff --git a/libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h b/libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h -index ace1120fba2..3234ce17c70 100644 ---- a/libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h -+++ b/libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h -@@ -48,7 +48,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION - is(const char* __low, const char* __high, mask* __vec) const - { - while (__low < __high) -- *__vec++ = _M_table[*__low++]; -+ *__vec++ = _M_table[(unsigned char)*__low++]; - return __high; - } - diff --git a/pkgs/development/compilers/gcc/patches/no-sys-dirs-riscv-gcc9.patch b/pkgs/development/compilers/gcc/patches/no-sys-dirs-riscv-gcc9.patch deleted file mode 100644 index afe3f26360e4d..0000000000000 --- a/pkgs/development/compilers/gcc/patches/no-sys-dirs-riscv-gcc9.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/gcc/config/riscv/riscv.h b/gcc/config/riscv/riscv.h -index 701f5ea1544..8de333caf54 100644 ---- a/gcc/config/riscv/riscv.h -+++ b/gcc/config/riscv/riscv.h -@@ -886,11 +886,7 @@ extern unsigned riscv_stack_boundary; - "%{mabi=lp64f:lp64f}" \ - "%{mabi=lp64d:lp64d}" \ - --#define STARTFILE_PREFIX_SPEC \ -- "/lib" XLEN_SPEC "/" ABI_SPEC "/ " \ -- "/usr/lib" XLEN_SPEC "/" ABI_SPEC "/ " \ -- "/lib/ " \ -- "/usr/lib/ " -+#define STARTFILE_PREFIX_SPEC "" - - /* ISA constants needed for code generation. */ - #define OPCODE_LW 0x2003 diff --git a/pkgs/development/compilers/gcc/versions.nix b/pkgs/development/compilers/gcc/versions.nix index 9cf3bb9d13cbb..25e20d6f1ceaf 100644 --- a/pkgs/development/compilers/gcc/versions.nix +++ b/pkgs/development/compilers/gcc/versions.nix @@ -6,7 +6,6 @@ let "12" = "12.4.0"; "11" = "11.5.0"; "10" = "10.5.0"; - "9" = "9.5.0"; }; fromMajorMinor = majorMinorVersion: majorMinorToVersionMap."${majorMinorVersion}"; @@ -23,7 +22,6 @@ let "12.4.0" = "sha256-cE9lJgTMvMsUvavzR4yVEciXiLEss7v/3tNzQZFqkXU="; "11.5.0" = "sha256-puIYaOrVRc+H8MAfhCduS1KB1nIJhZHByJYkHwk2NHg="; "10.5.0" = "sha256-JRCVQ/30bzl8NHtdi3osflaUpaUczkucbh6opxyjB8E="; - "9.5.0" = "13ygjmd938m0wmy946pxdhz9i1wq7z4w10l6pvidak0xxxj9yxi7"; } ."${version}"; diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 372b640f9912a..80aea71c2600a 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -948,6 +948,8 @@ mapAliases { gcc7Stdenv = throw "gcc7Stdenv has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2024-11-20 gcc8 = throw "gcc8 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2024-11-20 gcc8Stdenv = throw "gcc8Stdenv has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2024-11-20 + gcc9 = throw "gcc9 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 + gcc9Stdenv = throw "gcc9Stdenv has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gcc10StdenvCompat = if stdenv.cc.isGNU && lib.versionAtLeast stdenv.cc.version "11" then gcc10Stdenv else stdenv; # Added 2024-03-21 gcc-arm-embedded-6 = throw "gcc-arm-embedded-6 has been removed from Nixpkgs as it is unmaintained and obsolete"; # Added 2025-04-12 @@ -968,6 +970,7 @@ mapAliases { gfortran49 = throw "'gfortran49' has been removed from nixpkgs"; # Added 2024-09-11 gfortran7 = throw "gfortran7 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2024-11-20 gfortran8 = throw "gfortran8 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2024-11-20 + gfortran9 = throw "gfortran9 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gg = go-graft; # Added 2025-03-07 ggobi = throw "'ggobi' has been removed from Nixpkgs, as it is unmaintained and broken"; # Added 2025-05-18 ghostwriter = makePlasma5Throw "ghostwriter"; # Added 2023-03-18 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6b7703b77e9fd..c8cbe66897b47 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4861,7 +4861,6 @@ with pkgs; extraBuildInputs = lib.optional stdenv.hostPlatform.isDarwin clang.cc; }; - gcc9Stdenv = overrideCC gccStdenv buildPackages.gcc9; gcc10Stdenv = overrideCC gccStdenv buildPackages.gcc10; gcc11Stdenv = overrideCC gccStdenv buildPackages.gcc11; gcc12Stdenv = overrideCC gccStdenv buildPackages.gcc12; @@ -4966,7 +4965,6 @@ with pkgs; }); inherit (callPackage ../development/compilers/gcc/all.nix { inherit noSysDirs; }) - gcc9 gcc10 gcc11 gcc12 From 4e7ee62b94d962a4ca28b5730bae0319598beb70 Mon Sep 17 00:00:00 2001 From: Emily Date: Fri, 8 Aug 2025 18:22:54 +0100 Subject: [PATCH 07/12] {gcc10,gfortran10}: drop EOL since 2023; no longer used in the tree. --- doc/release-notes/rl-2511.section.md | 2 +- pkgs/by-name/gf/gfortran10/package.nix | 10 - .../compilers/gcc/common/libgcc.nix | 259 ++++++++------- pkgs/development/compilers/gcc/default.nix | 77 ++--- ...thread-model-support-from-mcfgthread.patch | 306 ------------------ .../gcc/patches/clang-genconditions.patch | 34 -- .../compilers/gcc/patches/default.nix | 37 --- .../compilers/gcc/patches/gnat-cflags.patch | 35 -- pkgs/development/compilers/gcc/versions.nix | 2 - pkgs/top-level/aliases.nix | 6 +- pkgs/top-level/all-packages.nix | 2 - 11 files changed, 160 insertions(+), 610 deletions(-) delete mode 100644 pkgs/by-name/gf/gfortran10/package.nix delete mode 100644 pkgs/development/compilers/gcc/patches/10/Added-mcf-thread-model-support-from-mcfgthread.patch delete mode 100644 pkgs/development/compilers/gcc/patches/clang-genconditions.patch delete mode 100644 pkgs/development/compilers/gcc/patches/gnat-cflags.patch diff --git a/doc/release-notes/rl-2511.section.md b/doc/release-notes/rl-2511.section.md index 523c43f7386a9..f261560026aba 100644 --- a/doc/release-notes/rl-2511.section.md +++ b/doc/release-notes/rl-2511.section.md @@ -20,7 +20,7 @@ - The `offrss` package was removed due to lack of upstream maintenance since 2012. It's recommended for users to migrate to another RSS reader -- GCC 9 has been removed, as it has reached end‐of‐life upstream and is no longer supported. +- GCC 9 and 10 have been removed, as they have reached end‐of‐life upstream and are no longer supported. - `base16-builder` node package has been removed due to lack of upstream maintenance. - `gentium` package now provides `Gentium-*.ttf` files, and not `GentiumPlus-*.ttf` files like before. The font identifiers `Gentium Plus*` are available in the `gentium-plus` package, and if you want to use the more recently updated package `gentium` [by sil](https://software.sil.org/gentium/), you should update your configuration files to use the `Gentium` font identifier. diff --git a/pkgs/by-name/gf/gfortran10/package.nix b/pkgs/by-name/gf/gfortran10/package.nix deleted file mode 100644 index 9cd90cd6f3b8f..0000000000000 --- a/pkgs/by-name/gf/gfortran10/package.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ wrapCC, gcc10 }: -wrapCC ( - gcc10.cc.override { - name = "gfortran"; - langFortran = true; - langCC = false; - langC = false; - profiledCompiler = false; - } -) diff --git a/pkgs/development/compilers/gcc/common/libgcc.nix b/pkgs/development/compilers/gcc/common/libgcc.nix index 1d921a0bca8df..e0437bc6e6e0d 100644 --- a/pkgs/development/compilers/gcc/common/libgcc.nix +++ b/pkgs/development/compilers/gcc/common/libgcc.nix @@ -41,145 +41,138 @@ lib.pipe drv ) ] - ++ + ++ ( + let + targetPlatformSlash = + if lib.systems.equals hostPlatform targetPlatform then "" else "${targetPlatform.config}/"; - # nixpkgs did not add the "libgcc" output until gcc11. In theory - # the following condition can be changed to `true`, but that has not - # been tested. - lib.optionals (lib.versionAtLeast version "11.0") + # If we are building a cross-compiler and the target libc provided + # to us at build time has a libgcc, use that instead of building a + # new one. This avoids having two separate (but identical) libgcc + # outpaths in the closure of most packages, which can be confusing. + useLibgccFromTargetLibc = libcCross != null && libcCross ? passthru.libgcc; - ( - let - targetPlatformSlash = - if lib.systems.equals hostPlatform targetPlatform then "" else "${targetPlatform.config}/"; - - # If we are building a cross-compiler and the target libc provided - # to us at build time has a libgcc, use that instead of building a - # new one. This avoids having two separate (but identical) libgcc - # outpaths in the closure of most packages, which can be confusing. - useLibgccFromTargetLibc = libcCross != null && libcCross ? passthru.libgcc; - - enableLibGccOutput = - (!stdenv.targetPlatform.isWindows || (lib.systems.equals stdenv.targetPlatform stdenv.hostPlatform)) - && !langJit - && !stdenv.hostPlatform.isDarwin - && enableShared - && !useLibgccFromTargetLibc; + enableLibGccOutput = + (!stdenv.targetPlatform.isWindows || (lib.systems.equals stdenv.targetPlatform stdenv.hostPlatform)) + && !langJit + && !stdenv.hostPlatform.isDarwin + && enableShared + && !useLibgccFromTargetLibc; - # For some reason libgcc_s.so has major-version "2" on m68k but - # "1" everywhere else. Might be worth changing this to "*". - libgcc_s-version-major = if targetPlatform.isM68k then "2" else "1"; + # For some reason libgcc_s.so has major-version "2" on m68k but + # "1" everywhere else. Might be worth changing this to "*". + libgcc_s-version-major = if targetPlatform.isM68k then "2" else "1"; - in - [ + in + [ - ( - pkg: - pkg.overrideAttrs ( - previousAttrs: - lib.optionalAttrs useLibgccFromTargetLibc { - passthru = (previousAttrs.passthru or { }) // { - inherit (libcCross) libgcc; - }; - } - ) - ) + ( + pkg: + pkg.overrideAttrs ( + previousAttrs: + lib.optionalAttrs useLibgccFromTargetLibc { + passthru = (previousAttrs.passthru or { }) // { + inherit (libcCross) libgcc; + }; + } + ) + ) - ( - pkg: - pkg.overrideAttrs ( - previousAttrs: - lib.optionalAttrs ((!langC) || langJit || enableLibGccOutput) { - outputs = previousAttrs.outputs ++ lib.optionals enableLibGccOutput [ "libgcc" ]; - # This is a separate phase because gcc assembles its phase scripts - # in bash instead of nix (we should fix that). - preFixupPhases = - (previousAttrs.preFixupPhases or [ ]) - ++ lib.optionals ((!langC) || enableLibGccOutput) [ "preFixupLibGccPhase" ]; - preFixupLibGccPhase = - # delete extra/unused builds of libgcc_s in non-langC builds - # (i.e. libgccjit, gnat, etc) to avoid potential confusion - lib.optionalString (!langC) '' - rm -f $out/lib/libgcc_s.so* - '' + ( + pkg: + pkg.overrideAttrs ( + previousAttrs: + lib.optionalAttrs ((!langC) || langJit || enableLibGccOutput) { + outputs = previousAttrs.outputs ++ lib.optionals enableLibGccOutput [ "libgcc" ]; + # This is a separate phase because gcc assembles its phase scripts + # in bash instead of nix (we should fix that). + preFixupPhases = + (previousAttrs.preFixupPhases or [ ]) + ++ lib.optionals ((!langC) || enableLibGccOutput) [ "preFixupLibGccPhase" ]; + preFixupLibGccPhase = + # delete extra/unused builds of libgcc_s in non-langC builds + # (i.e. libgccjit, gnat, etc) to avoid potential confusion + lib.optionalString (!langC) '' + rm -f $out/lib/libgcc_s.so* + '' - # move `libgcc_s.so` into its own output, `$libgcc` - # We maintain $libgcc/lib/$target/ structure to make sure target - # strip runs over libgcc_s.so and remove debug references to headers: - # https://github.com/NixOS/nixpkgs/issues/316114 - + lib.optionalString enableLibGccOutput ( - '' - # move libgcc from lib to its own output (libgcc) - mkdir -p $libgcc/${targetPlatformSlash}lib - mv $lib/${targetPlatformSlash}lib/libgcc_s.so $libgcc/${targetPlatformSlash}lib/ - mv $lib/${targetPlatformSlash}lib/libgcc_s.so.${libgcc_s-version-major} $libgcc/${targetPlatformSlash}lib/ - ln -s $libgcc/${targetPlatformSlash}lib/libgcc_s.so $lib/${targetPlatformSlash}lib/ - ln -s $libgcc/${targetPlatformSlash}lib/libgcc_s.so.${libgcc_s-version-major} $lib/${targetPlatformSlash}lib/ - '' - + lib.optionalString (targetPlatformSlash != "") '' - ln -s ${targetPlatformSlash}lib $libgcc/lib - '' - # - # Nixpkgs ordinarily turns dynamic linking into pseudo-static linking: - # libraries are still loaded dynamically, exactly which copy of each - # library is loaded is permanently fixed at compile time (via RUNPATH). - # For libgcc_s we must revert to the "impure dynamic linking" style found - # in imperative software distributions. We must do this because - # `libgcc_s` calls `malloc()` and therefore has a `DT_NEEDED` for `libc`, - # which creates two problems: - # - # 1. A circular package dependency `glibc`<-`libgcc`<-`glibc` - # - # 2. According to the `-Wl,-rpath` flags added by Nixpkgs' `ld-wrapper`, - # the two versions of `glibc` in the cycle above are actually - # different packages. The later one is compiled by this `gcc`, but - # the earlier one was compiled by the compiler *that compiled* this - # `gcc` (usually the bootstrapFiles). In any event, the `glibc` - # dynamic loader won't honor that specificity without namespaced - # manual loads (`dlmopen()`). Once a `libc` is present in the address - # space of a process, that `libc` will be used to satisfy all - # `DT_NEEDED`s for `libc`, regardless of `RUNPATH`s. - # - # So we wipe the RUNPATH using `patchelf --set-rpath ""`. We can't use - # `patchelf --remove-rpath`, because at least as of patchelf 0.15.0 it - # will leave the old RUNPATH string in the file where the reference - # scanner can still find it: - # - # https://github.com/NixOS/patchelf/issues/453 - # - # Note: we might be using the bootstrapFiles' copy of patchelf, so we have - # to keep doing it this way until both the issue is fixed *and* all the - # bootstrapFiles are regenerated, on every platform. - # - # This patchelfing is *not* effectively equivalent to copying - # `libgcc_s` into `glibc`'s outpath. There is one minor and one - # major difference: - # - # 1. (Minor): multiple builds of `glibc` (say, with different - # overrides or parameters) will all reference a single store - # path: - # - # /nix/store/xxx...xxx-gcc-libgcc/lib/libgcc_s.so.1 - # - # This many-to-one referrer relationship will be visible in the store's - # dependency graph, and will be available to `nix-store -q` queries. - # Copying `libgcc_s` into each of its referrers would lose that - # information. - # - # 2. (Major): by referencing `libgcc_s.so.1`, rather than copying it, we - # are still able to run `nix-store -qd` on it to find out how it got - # built! Most importantly, we can see from that deriver which compiler - # was used to build it (or if it is part of the unpacked - # bootstrap-files). Copying `libgcc_s.so.1` from one outpath to - # another eliminates the ability to make these queries. - # - + '' - patchelf --set-rpath "" $libgcc/lib/libgcc_s.so.${libgcc_s-version-major} - '' - ); - } - ) - ) - ] + # move `libgcc_s.so` into its own output, `$libgcc` + # We maintain $libgcc/lib/$target/ structure to make sure target + # strip runs over libgcc_s.so and remove debug references to headers: + # https://github.com/NixOS/nixpkgs/issues/316114 + + lib.optionalString enableLibGccOutput ( + '' + # move libgcc from lib to its own output (libgcc) + mkdir -p $libgcc/${targetPlatformSlash}lib + mv $lib/${targetPlatformSlash}lib/libgcc_s.so $libgcc/${targetPlatformSlash}lib/ + mv $lib/${targetPlatformSlash}lib/libgcc_s.so.${libgcc_s-version-major} $libgcc/${targetPlatformSlash}lib/ + ln -s $libgcc/${targetPlatformSlash}lib/libgcc_s.so $lib/${targetPlatformSlash}lib/ + ln -s $libgcc/${targetPlatformSlash}lib/libgcc_s.so.${libgcc_s-version-major} $lib/${targetPlatformSlash}lib/ + '' + + lib.optionalString (targetPlatformSlash != "") '' + ln -s ${targetPlatformSlash}lib $libgcc/lib + '' + # + # Nixpkgs ordinarily turns dynamic linking into pseudo-static linking: + # libraries are still loaded dynamically, exactly which copy of each + # library is loaded is permanently fixed at compile time (via RUNPATH). + # For libgcc_s we must revert to the "impure dynamic linking" style found + # in imperative software distributions. We must do this because + # `libgcc_s` calls `malloc()` and therefore has a `DT_NEEDED` for `libc`, + # which creates two problems: + # + # 1. A circular package dependency `glibc`<-`libgcc`<-`glibc` + # + # 2. According to the `-Wl,-rpath` flags added by Nixpkgs' `ld-wrapper`, + # the two versions of `glibc` in the cycle above are actually + # different packages. The later one is compiled by this `gcc`, but + # the earlier one was compiled by the compiler *that compiled* this + # `gcc` (usually the bootstrapFiles). In any event, the `glibc` + # dynamic loader won't honor that specificity without namespaced + # manual loads (`dlmopen()`). Once a `libc` is present in the address + # space of a process, that `libc` will be used to satisfy all + # `DT_NEEDED`s for `libc`, regardless of `RUNPATH`s. + # + # So we wipe the RUNPATH using `patchelf --set-rpath ""`. We can't use + # `patchelf --remove-rpath`, because at least as of patchelf 0.15.0 it + # will leave the old RUNPATH string in the file where the reference + # scanner can still find it: + # + # https://github.com/NixOS/patchelf/issues/453 + # + # Note: we might be using the bootstrapFiles' copy of patchelf, so we have + # to keep doing it this way until both the issue is fixed *and* all the + # bootstrapFiles are regenerated, on every platform. + # + # This patchelfing is *not* effectively equivalent to copying + # `libgcc_s` into `glibc`'s outpath. There is one minor and one + # major difference: + # + # 1. (Minor): multiple builds of `glibc` (say, with different + # overrides or parameters) will all reference a single store + # path: + # + # /nix/store/xxx...xxx-gcc-libgcc/lib/libgcc_s.so.1 + # + # This many-to-one referrer relationship will be visible in the store's + # dependency graph, and will be available to `nix-store -q` queries. + # Copying `libgcc_s` into each of its referrers would lose that + # information. + # + # 2. (Major): by referencing `libgcc_s.so.1`, rather than copying it, we + # are still able to run `nix-store -qd` on it to find out how it got + # built! Most importantly, we can see from that deriver which compiler + # was used to build it (or if it is part of the unpacked + # bootstrap-files). Copying `libgcc_s.so.1` from one outpath to + # another eliminates the ability to make these queries. + # + + '' + patchelf --set-rpath "" $libgcc/lib/libgcc_s.so.${libgcc_s-version-major} + '' + ); + } + ) ) + ] + ) ) diff --git a/pkgs/development/compilers/gcc/default.nix b/pkgs/development/compilers/gcc/default.nix index 456c83df7e57f..2d87fe210b612 100644 --- a/pkgs/development/compilers/gcc/default.nix +++ b/pkgs/development/compilers/gcc/default.nix @@ -82,12 +82,10 @@ let atLeast14 = versionAtLeast version "14"; atLeast13 = versionAtLeast version "13"; atLeast12 = versionAtLeast version "12"; - atLeast11 = versionAtLeast version "11"; is14 = majorVersion == "14"; is13 = majorVersion == "13"; is12 = majorVersion == "12"; is11 = majorVersion == "11"; - is10 = majorVersion == "10"; # releases have a form: MAJOR.MINOR.MICRO, like 14.2.1 # snapshots have a form like MAJOR.MINOR.MICRO.DATE, like 14.2.1.20250322 @@ -101,7 +99,7 @@ let # "14.2.0" -> "14.2.0" baseVersion = lib.concatStringsSep "." (lib.take 3 (lib.splitVersion version)); - disableBootstrap = atLeast11 && !stdenv.hostPlatform.isDarwin && (atLeast12 -> !profiledCompiler); + disableBootstrap = !stdenv.hostPlatform.isDarwin && (atLeast12 -> !profiledCompiler); inherit (stdenv) buildPlatform hostPlatform targetPlatform; targetConfig = @@ -224,7 +222,7 @@ pipe "mirror://gcc/snapshots/${majorVersion}-${snapDate}/gcc-${majorVersion}-${snapDate}.tar.xz" else "mirror://gcc/releases/gcc-${version}/gcc-${version}.tar.xz"; - ${if is10 || is11 || is13 then "hash" else "sha256"} = gccVersions.srcHashForVersion version; + ${if is11 || is13 then "hash" else "sha256"} = gccVersions.srcHashForVersion version; }; inherit patches; @@ -342,21 +340,16 @@ pipe buildFlags = # we do not yet have Nix-driven profiling assert atLeast12 -> (profiledCompiler -> !disableBootstrap); - if atLeast11 then - let - target = - optionalString (profiledCompiler) "profiled" - + optionalString ( - (lib.systems.equals targetPlatform hostPlatform) - && (lib.systems.equals hostPlatform buildPlatform) - && !disableBootstrap - ) "bootstrap"; - in - optional (target != "") target - else - optional ( - (lib.systems.equals targetPlatform hostPlatform) && (lib.systems.equals hostPlatform buildPlatform) - ) (if profiledCompiler then "profiledbootstrap" else "bootstrap"); + let + target = + optionalString (profiledCompiler) "profiled" + + optionalString ( + (lib.systems.equals targetPlatform hostPlatform) + && (lib.systems.equals hostPlatform buildPlatform) + && !disableBootstrap + ) "bootstrap"; + in + optional (target != "") target; inherit (callFile ./common/strip-attributes.nix { }) stripDebugList @@ -421,8 +414,7 @@ pipe ; isGNU = true; hardeningUnsupportedFlags = - optional (!atLeast11) "zerocallusedregs" - ++ optionals (!atLeast12) [ + optionals (!atLeast12) [ "fortify3" "trivialautovarinit" ] @@ -452,36 +444,25 @@ pipe platforms teams ; - } - // optionalAttrs (!atLeast11) { - badPlatforms = [ "aarch64-darwin" ]; - } - // optionalAttrs is10 { - badPlatforms = - if (!lib.systems.equals targetPlatform hostPlatform) then [ "aarch64-darwin" ] else [ ]; }; } // optionalAttrs enableMultilib { dontMoveLib64 = true; } )) - ( - [ - (callPackage ./common/libgcc.nix { - inherit - version - langC - langCC - langJit - targetPlatform - hostPlatform - withoutTargetLibc - enableShared - libcCross - ; - }) - ] - ++ optionals atLeast11 [ - (callPackage ./common/checksum.nix { inherit langC langCC; }) - ] - ) + ([ + (callPackage ./common/libgcc.nix { + inherit + version + langC + langCC + langJit + targetPlatform + hostPlatform + withoutTargetLibc + enableShared + libcCross + ; + }) + (callPackage ./common/checksum.nix { inherit langC langCC; }) + ]) diff --git a/pkgs/development/compilers/gcc/patches/10/Added-mcf-thread-model-support-from-mcfgthread.patch b/pkgs/development/compilers/gcc/patches/10/Added-mcf-thread-model-support-from-mcfgthread.patch deleted file mode 100644 index d9809e828f10c..0000000000000 --- a/pkgs/development/compilers/gcc/patches/10/Added-mcf-thread-model-support-from-mcfgthread.patch +++ /dev/null @@ -1,306 +0,0 @@ -From 86f2f767ddffd9f7c6f1470b987ae7b0d251b988 Mon Sep 17 00:00:00 2001 -From: Liu Hao -Date: Wed, 25 Apr 2018 21:54:19 +0800 -Subject: [PATCH] Added 'mcf' thread model support from mcfgthread. - -Signed-off-by: Liu Hao ---- - config/gthr.m4 | 1 + - gcc/config.gcc | 3 +++ - gcc/config/i386/mingw-mcfgthread.h | 1 + - gcc/config/i386/mingw-w64.h | 2 +- - gcc/config/i386/mingw32.h | 11 ++++++++++- - gcc/configure | 2 +- - gcc/configure.ac | 2 +- - libatomic/configure.tgt | 2 +- - libgcc/config.host | 6 ++++++ - libgcc/config/i386/gthr-mcf.h | 1 + - libgcc/config/i386/t-mingw-mcfgthread | 2 ++ - libgcc/configure | 1 + - libstdc++-v3/configure | 1 + - libstdc++-v3/libsupc++/atexit_thread.cc | 18 ++++++++++++++++++ - libstdc++-v3/libsupc++/guard.cc | 23 +++++++++++++++++++++++ - libstdc++-v3/src/c++11/thread.cc | 9 +++++++++ - 16 files changed, 80 insertions(+), 5 deletions(-) - create mode 100644 gcc/config/i386/mingw-mcfgthread.h - create mode 100644 libgcc/config/i386/gthr-mcf.h - create mode 100644 libgcc/config/i386/t-mingw-mcfgthread - -diff --git a/config/gthr.m4 b/config/gthr.m4 -index 7b29f1f3327..82e21fe1709 100644 ---- a/config/gthr.m4 -+++ b/config/gthr.m4 -@@ -21,6 +21,7 @@ case $1 in - tpf) thread_header=config/s390/gthr-tpf.h ;; - vxworks) thread_header=config/gthr-vxworks.h ;; - win32) thread_header=config/i386/gthr-win32.h ;; -+ mcf) thread_header=config/i386/gthr-mcf.h ;; - esac - AC_SUBST(thread_header) - ]) -diff --git a/gcc/config.gcc b/gcc/config.gcc -index 46a9029acec..112c24e95a3 100644 ---- a/gcc/config.gcc -+++ b/gcc/config.gcc -@@ -1758,6 +1758,9 @@ i[34567]86-*-mingw* | x86_64-*-mingw*) - if test x$enable_threads = xposix ; then - tm_file="${tm_file} i386/mingw-pthread.h" - fi -+ if test x$enable_threads = xmcf ; then -+ tm_file="${tm_file} i386/mingw-mcfgthread.h" -+ fi - tm_file="${tm_file} i386/mingw32.h" - # This makes the logic if mingw's or the w64 feature set has to be used - case ${target} in -diff --git a/gcc/config/i386/mingw-mcfgthread.h b/gcc/config/i386/mingw-mcfgthread.h -new file mode 100644 -index 00000000000..ec381a7798f ---- /dev/null -+++ b/gcc/config/i386/mingw-mcfgthread.h -@@ -0,0 +1 @@ -+#define TARGET_USE_MCFGTHREAD 1 -diff --git a/gcc/config/i386/mingw-w64.h b/gcc/config/i386/mingw-w64.h -index 484dc7a9e9f..a15bbeea500 100644 ---- a/gcc/config/i386/mingw-w64.h -+++ b/gcc/config/i386/mingw-w64.h -@@ -48,7 +48,7 @@ along with GCC; see the file COPYING3. If not see - "%{mwindows:-lgdi32 -lcomdlg32} " \ - "%{fvtable-verify=preinit:-lvtv -lpsapi; \ - fvtable-verify=std:-lvtv -lpsapi} " \ -- "-ladvapi32 -lshell32 -luser32 -lkernel32" -+ LIB_MCFGTHREAD "-ladvapi32 -lshell32 -luser32 -lkernel32" - - #undef SPEC_32 - #undef SPEC_64 -diff --git a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h -index 0612b87199a..76cea94f3b7 100644 ---- a/gcc/config/i386/mingw32.h -+++ b/gcc/config/i386/mingw32.h -@@ -32,6 +32,14 @@ along with GCC; see the file COPYING3. If not see - | MASK_STACK_PROBE | MASK_ALIGN_DOUBLE \ - | MASK_MS_BITFIELD_LAYOUT) - -+#ifndef TARGET_USE_MCFGTHREAD -+#define CPP_MCFGTHREAD() ((void)0) -+#define LIB_MCFGTHREAD "" -+#else -+#define CPP_MCFGTHREAD() (builtin_define("__USING_MCFGTHREAD__")) -+#define LIB_MCFGTHREAD " -lmcfgthread " -+#endif -+ - /* See i386/crtdll.h for an alternative definition. _INTEGRAL_MAX_BITS - is for compatibility with native compiler. */ - #define EXTRA_OS_CPP_BUILTINS() \ -@@ -50,6 +58,7 @@ along with GCC; see the file COPYING3. If not see - builtin_define_std ("WIN64"); \ - builtin_define ("_WIN64"); \ - } \ -+ CPP_MCFGTHREAD(); \ - } \ - while (0) - -@@ -93,7 +102,7 @@ along with GCC; see the file COPYING3. If not see - "%{mwindows:-lgdi32 -lcomdlg32} " \ - "%{fvtable-verify=preinit:-lvtv -lpsapi; \ - fvtable-verify=std:-lvtv -lpsapi} " \ -- "-ladvapi32 -lshell32 -luser32 -lkernel32" -+ LIB_MCFGTHREAD "-ladvapi32 -lshell32 -luser32 -lkernel32" - - /* Weak symbols do not get resolved if using a Windows dll import lib. - Make the unwind registration references strong undefs. */ -diff --git a/gcc/configure b/gcc/configure -index 6121e163259..52f0e00efe6 100755 ---- a/gcc/configure -+++ b/gcc/configure -@@ -11693,7 +11693,7 @@ case ${enable_threads} in - target_thread_file='single' - ;; - aix | dce | lynx | mipssde | posix | rtems | \ -- single | tpf | vxworks | win32) -+ single | tpf | vxworks | win32 | mcf) - target_thread_file=${enable_threads} - ;; - *) -diff --git a/gcc/configure.ac b/gcc/configure.ac -index b066cc609e1..4ecdba88de7 100644 ---- a/gcc/configure.ac -+++ b/gcc/configure.ac -@@ -1612,7 +1612,7 @@ case ${enable_threads} in - target_thread_file='single' - ;; - aix | dce | lynx | mipssde | posix | rtems | \ -- single | tpf | vxworks | win32) -+ single | tpf | vxworks | win32 | mcf) - target_thread_file=${enable_threads} - ;; - *) -diff --git a/libatomic/configure.tgt b/libatomic/configure.tgt -index ea8c34f8c71..23134ad7363 100644 ---- a/libatomic/configure.tgt -+++ b/libatomic/configure.tgt -@@ -145,7 +145,7 @@ case "${target}" in - *-*-mingw*) - # OS support for atomic primitives. - case ${target_thread_file} in -- win32) -+ win32 | mcf) - config_path="${config_path} mingw" - ;; - posix) -diff --git a/libgcc/config.host b/libgcc/config.host -index 11b4acaff55..9fbd38650bd 100644 ---- a/libgcc/config.host -+++ b/libgcc/config.host -@@ -737,6 +737,9 @@ i[34567]86-*-mingw*) - posix) - tmake_file="i386/t-mingw-pthread $tmake_file" - ;; -+ mcf) -+ tmake_file="i386/t-mingw-mcfgthread $tmake_file" -+ ;; - esac - # This has to match the logic for DWARF2_UNWIND_INFO in gcc/config/i386/cygming.h - if test x$ac_cv_sjlj_exceptions = xyes; then -@@ -761,6 +764,9 @@ x86_64-*-mingw*) - posix) - tmake_file="i386/t-mingw-pthread $tmake_file" - ;; -+ mcf) -+ tmake_file="i386/t-mingw-mcfgthread $tmake_file" -+ ;; - esac - # This has to match the logic for DWARF2_UNWIND_INFO in gcc/config/i386/cygming.h - if test x$ac_cv_sjlj_exceptions = xyes; then -diff --git a/libgcc/config/i386/gthr-mcf.h b/libgcc/config/i386/gthr-mcf.h -new file mode 100644 -index 00000000000..5ea2908361f ---- /dev/null -+++ b/libgcc/config/i386/gthr-mcf.h -@@ -0,0 +1 @@ -+#include -diff --git a/libgcc/config/i386/t-mingw-mcfgthread b/libgcc/config/i386/t-mingw-mcfgthread -new file mode 100644 -index 00000000000..4b9b10e32d6 ---- /dev/null -+++ b/libgcc/config/i386/t-mingw-mcfgthread -@@ -0,0 +1,2 @@ -+SHLIB_PTHREAD_CFLAG = -+SHLIB_PTHREAD_LDFLAG = -lmcfgthread -diff --git a/libgcc/configure b/libgcc/configure -index b2f3f870844..eff889dc3b3 100644 ---- a/libgcc/configure -+++ b/libgcc/configure -@@ -5451,6 +5451,7 @@ case $target_thread_file in - tpf) thread_header=config/s390/gthr-tpf.h ;; - vxworks) thread_header=config/gthr-vxworks.h ;; - win32) thread_header=config/i386/gthr-win32.h ;; -+ mcf) thread_header=config/i386/gthr-mcf.h ;; - esac - - -diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure -index ba094be6f15..979a5ab9ace 100755 ---- a/libstdc++-v3/configure -+++ b/libstdc++-v3/configure -@@ -15187,6 +15187,7 @@ case $target_thread_file in - tpf) thread_header=config/s390/gthr-tpf.h ;; - vxworks) thread_header=config/gthr-vxworks.h ;; - win32) thread_header=config/i386/gthr-win32.h ;; -+ mcf) thread_header=config/i386/gthr-mcf.h ;; - esac - - -diff --git a/libstdc++-v3/libsupc++/atexit_thread.cc b/libstdc++-v3/libsupc++/atexit_thread.cc -index de920d714c6..665fb74bd6b 100644 ---- a/libstdc++-v3/libsupc++/atexit_thread.cc -+++ b/libstdc++-v3/libsupc++/atexit_thread.cc -@@ -25,6 +25,22 @@ - #include - #include - #include "bits/gthr.h" -+ -+#ifdef __USING_MCFGTHREAD__ -+ -+#include -+ -+extern "C" int -+__cxxabiv1::__cxa_thread_atexit (void (*dtor)(void *), -+ void *obj, void *dso_handle) -+ _GLIBCXX_NOTHROW -+{ -+ return ::_MCFCRT_AtThreadExit((void (*)(_MCFCRT_STD intptr_t))dtor, (_MCFCRT_STD intptr_t)obj) ? 0 : -1; -+ (void)dso_handle; -+} -+ -+#else // __USING_MCFGTHREAD__ -+ - #ifdef _GLIBCXX_THREAD_ATEXIT_WIN32 - #define WIN32_LEAN_AND_MEAN - #include -@@ -167,3 +183,5 @@ __cxxabiv1::__cxa_thread_atexit (void (*dtor)(void *), void *obj, void */*dso_ha - } - - #endif /* _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ -+ -+#endif // __USING_MCFGTHREAD__ -diff --git a/libstdc++-v3/libsupc++/guard.cc b/libstdc++-v3/libsupc++/guard.cc -index 3a2ec3ad0d6..8b4cc96199b 100644 ---- a/libstdc++-v3/libsupc++/guard.cc -+++ b/libstdc++-v3/libsupc++/guard.cc -@@ -28,6 +28,27 @@ - #include - #include - #include -+ -+#ifdef __USING_MCFGTHREAD__ -+ -+#include -+ -+namespace __cxxabiv1 { -+ -+extern "C" int __cxa_guard_acquire(__guard *g){ -+ return ::_MCFCRT_WaitForOnceFlagForever((::_MCFCRT_OnceFlag *)g) == ::_MCFCRT_kOnceResultInitial; -+} -+extern "C" void __cxa_guard_abort(__guard *g) throw() { -+ ::_MCFCRT_SignalOnceFlagAsAborted((::_MCFCRT_OnceFlag *)g); -+} -+extern "C" void __cxa_guard_release(__guard *g) throw() { -+ ::_MCFCRT_SignalOnceFlagAsFinished((::_MCFCRT_OnceFlag *)g); -+} -+ -+} -+ -+#else // __USING_MCFGTHREAD__ -+ - #include - #include - #include -@@ -425,3 +446,5 @@ namespace __cxxabiv1 - #endif - } - } -+ -+#endif -diff --git a/libstdc++-v3/src/c++11/thread.cc b/libstdc++-v3/src/c++11/thread.cc -index 8238817c2e9..0c6a1f85f6f 100644 ---- a/libstdc++-v3/src/c++11/thread.cc -+++ b/libstdc++-v3/src/c++11/thread.cc -@@ -55,6 +55,15 @@ static inline int get_nprocs() - #elif defined(_GLIBCXX_USE_SC_NPROC_ONLN) - # include - # define _GLIBCXX_NPROCS sysconf(_SC_NPROC_ONLN) -+#elif defined(_WIN32) -+# include -+static inline int get_nprocs() -+{ -+ SYSTEM_INFO sysinfo; -+ GetSystemInfo(&sysinfo); -+ return (int)sysinfo.dwNumberOfProcessors; -+} -+# define _GLIBCXX_NPROCS get_nprocs() - #else - # define _GLIBCXX_NPROCS 0 - #endif --- -2.17.0 - diff --git a/pkgs/development/compilers/gcc/patches/clang-genconditions.patch b/pkgs/development/compilers/gcc/patches/clang-genconditions.patch deleted file mode 100644 index 655afd2abbc2c..0000000000000 --- a/pkgs/development/compilers/gcc/patches/clang-genconditions.patch +++ /dev/null @@ -1,34 +0,0 @@ -From https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92061#c5 - ---- a/gcc/genconditions.c 2019-01-01 12:37:19.064943662 +0100 -+++ b/gcc/genconditions.c 2019-10-11 10:57:11.464595789 +0200 -@@ -57,8 +57,9 @@ write_header (void) - \n\ - /* It is necessary, but not entirely safe, to include the headers below\n\ - in a generator program. As a defensive measure, don't do so when the\n\ -- table isn't going to have anything in it. */\n\ --#if GCC_VERSION >= 3001\n\ -+ table isn't going to have anything in it.\n\ -+ Clang 9 is buggy and doesn't handle __builtin_constant_p correctly. */\n\ -+#if GCC_VERSION >= 3001 && __clang_major__ < 9\n\ - \n\ - /* Do not allow checking to confuse the issue. */\n\ - #undef CHECKING_P\n\ -@@ -170,7 +171,7 @@ struct c_test\n\ - vary at run time. It works in 3.0.1 and later; 3.0 only when not\n\ - optimizing. */\n\ - \n\ --#if GCC_VERSION >= 3001\n\ -+#if GCC_VERSION >= 3001 && __clang_major__ < 9\n\ - static const struct c_test insn_conditions[] = {\n"); - - traverse_c_tests (write_one_condition, 0); -@@ -191,7 +192,7 @@ write_writer (void) - " unsigned int i;\n" - " const char *p;\n" - " puts (\"(define_conditions [\");\n" -- "#if GCC_VERSION >= 3001\n" -+ "#if GCC_VERSION >= 3001 && __clang_major__ < 9\n" - " for (i = 0; i < ARRAY_SIZE (insn_conditions); i++)\n" - " {\n" - " printf (\" (%d \\\"\", insn_conditions[i].value);\n" diff --git a/pkgs/development/compilers/gcc/patches/default.nix b/pkgs/development/compilers/gcc/patches/default.nix index f0bb8d5b7c757..27f1230f3558a 100644 --- a/pkgs/development/compilers/gcc/patches/default.nix +++ b/pkgs/development/compilers/gcc/patches/default.nix @@ -31,13 +31,11 @@ let atLeast14 = lib.versionAtLeast version "14"; atLeast13 = lib.versionAtLeast version "13"; atLeast12 = lib.versionAtLeast version "12"; - atLeast11 = lib.versionAtLeast version "11"; is15 = majorVersion == "15"; is14 = majorVersion == "14"; is13 = majorVersion == "13"; is12 = majorVersion == "12"; is11 = majorVersion == "11"; - is10 = majorVersion == "10"; # We only apply these patches when building a native toolchain for # aarch64-darwin, as it breaks building a foreign one: @@ -96,7 +94,6 @@ in ./12/mangle-NIX_STORE-in-__FILE__.patch ]; "11" = [ ./no-sys-dirs-riscv.patch ]; - "10" = [ ./no-sys-dirs-riscv.patch ]; } ."${majorVersion}" or [ ] ) @@ -266,16 +263,6 @@ in # Needed to build LLVM>18 ./cfi_startproc-reorder-label-2.diff ]; - "10" = [ - (fetchpatch { - # There are no upstream release tags in https://github.com/iains/gcc-10-branch. - # d04fe55 is the commit from https://github.com/gcc-mirror/gcc/releases/tag/releases%2Fgcc-10.5.0 - url = "https://github.com/iains/gcc-10-branch/compare/d04fe5541c53cb16d1ca5c80da044b4c7633dbc6...gcc-10-5Dr0-pre-0.diff"; - hash = "sha256-kVUHZKtYqkWIcqxHG7yAOR2B60w4KWLoxzaiFD/FWYk="; - }) - # Needed to build LLVM>18 - ./cfi_startproc-reorder-label-2.diff - ]; } .${majorVersion} or [ ] ) @@ -306,27 +293,3 @@ in url = "https://github.com/gcc-mirror/gcc/commit/d243f4009d8071b734df16cd70f4c5d09a373769.patch"; sha256 = "sha256-H97GZs2wwzfFGiFOgds/5KaweC+luCsWX3hRFf7+Sm4="; }) - -## gcc 10.0 and older ############################################################################## - -# Probably needed for gnat wrapper https://github.com/NixOS/nixpkgs/pull/62314 -++ optional (langAda && is10) ./gnat-cflags.patch -++ - # Backport native aarch64-darwin compilation fix from gcc12 - # https://github.com/NixOS/nixpkgs/pull/167595 - optional - ( - is10 - && buildPlatform.system == "aarch64-darwin" - && (!lib.systems.equals targetPlatform buildPlatform) - ) - (fetchpatch { - name = "0008-darwin-aarch64-self-host-driver.patch"; - url = "https://github.com/gcc-mirror/gcc/commit/834c8749ced550af3f17ebae4072fb7dfb90d271.diff"; - sha256 = "sha256-XtykrPd5h/tsnjY1wGjzSOJ+AyyNLsfnjuOZ5Ryq9vA="; - }) - -# Fix undefined symbol errors when building older versions with clang -++ optional ( - !atLeast11 && stdenv.cc.isClang && stdenv.hostPlatform.isDarwin -) ./clang-genconditions.patch diff --git a/pkgs/development/compilers/gcc/patches/gnat-cflags.patch b/pkgs/development/compilers/gcc/patches/gnat-cflags.patch deleted file mode 100644 index a16266bbf39c2..0000000000000 --- a/pkgs/development/compilers/gcc/patches/gnat-cflags.patch +++ /dev/null @@ -1,35 +0,0 @@ -diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in -index 4e74252bd74..0d848b5b4e3 100644 ---- a/gcc/ada/gcc-interface/Makefile.in -+++ b/gcc/ada/gcc-interface/Makefile.in -@@ -111,7 +111,7 @@ NO_OMIT_ADAFLAGS = -fno-omit-frame-pointer - NO_SIBLING_ADAFLAGS = -fno-optimize-sibling-calls - NO_REORDER_ADAFLAGS = -fno-toplevel-reorder - GNATLIBFLAGS = -W -Wall -gnatpg -nostdinc --GNATLIBCFLAGS = -g -O2 -+GNATLIBCFLAGS = -g -O2 $(CFLAGS_FOR_TARGET) - # Pretend that _Unwind_GetIPInfo is available for the target by default. This - # should be autodetected during the configuration of libada and passed down to - # here, but we need something for --disable-libada and hope for the best. -@@ -198,7 +198,7 @@ RTSDIR = rts$(subst /,_,$(MULTISUBDIR)) - # Link flags used to build gnat tools. By default we prefer to statically - # link with libgcc to avoid a dependency on shared libgcc (which is tricky - # to deal with as it may conflict with the libgcc provided by the system). --GCC_LINK_FLAGS=-static-libstdc++ -static-libgcc -+GCC_LINK_FLAGS=-static-libstdc++ -static-libgcc $(CFLAGS_FOR_TARGET) - - # End of variables for you to override. - -diff --git a/libada/Makefile.in b/libada/Makefile.in -index 522b9207326..ca866c74471 100644 ---- a/libada/Makefile.in -+++ b/libada/Makefile.in -@@ -59,7 +59,7 @@ LDFLAGS= - CFLAGS=-g - PICFLAG = @PICFLAG@ - GNATLIBFLAGS= -W -Wall -gnatpg -nostdinc --GNATLIBCFLAGS= -g -O2 -+GNATLIBCFLAGS= -g -O2 $(CFLAGS) - GNATLIBCFLAGS_FOR_C = -W -Wall $(GNATLIBCFLAGS) $(CFLAGS_FOR_TARGET) \ - -fexceptions -DIN_RTS @have_getipinfo@ @have_capability@ - diff --git a/pkgs/development/compilers/gcc/versions.nix b/pkgs/development/compilers/gcc/versions.nix index 25e20d6f1ceaf..5c25ad3bc215f 100644 --- a/pkgs/development/compilers/gcc/versions.nix +++ b/pkgs/development/compilers/gcc/versions.nix @@ -5,7 +5,6 @@ let "13" = "13.4.0"; "12" = "12.4.0"; "11" = "11.5.0"; - "10" = "10.5.0"; }; fromMajorMinor = majorMinorVersion: majorMinorToVersionMap."${majorMinorVersion}"; @@ -21,7 +20,6 @@ let "13.4.0" = "sha256-nEzm27BAVo/cVFWIrAPFy8lajb8MeqSQFwhDr7WcqPU="; "12.4.0" = "sha256-cE9lJgTMvMsUvavzR4yVEciXiLEss7v/3tNzQZFqkXU="; "11.5.0" = "sha256-puIYaOrVRc+H8MAfhCduS1KB1nIJhZHByJYkHwk2NHg="; - "10.5.0" = "sha256-JRCVQ/30bzl8NHtdi3osflaUpaUczkucbh6opxyjB8E="; } ."${version}"; diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 80aea71c2600a..a2a06875ae4f8 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -950,8 +950,9 @@ mapAliases { gcc8Stdenv = throw "gcc8Stdenv has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2024-11-20 gcc9 = throw "gcc9 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gcc9Stdenv = throw "gcc9Stdenv has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 - gcc10StdenvCompat = - if stdenv.cc.isGNU && lib.versionAtLeast stdenv.cc.version "11" then gcc10Stdenv else stdenv; # Added 2024-03-21 + gcc10 = throw "gcc10 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 + gcc10Stdenv = throw "gcc10Stdenv has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 + gcc10StdenvCompat = throw "gcc10StdenvCompat has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gcc-arm-embedded-6 = throw "gcc-arm-embedded-6 has been removed from Nixpkgs as it is unmaintained and obsolete"; # Added 2025-04-12 gcc-arm-embedded-7 = throw "gcc-arm-embedded-7 has been removed from Nixpkgs as it is unmaintained and obsolete"; # Added 2025-04-12 gcc-arm-embedded-8 = throw "gcc-arm-embedded-8 has been removed from Nixpkgs as it is unmaintained and obsolete"; # Added 2025-04-12 @@ -971,6 +972,7 @@ mapAliases { gfortran7 = throw "gfortran7 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2024-11-20 gfortran8 = throw "gfortran8 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2024-11-20 gfortran9 = throw "gfortran9 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 + gfortran10 = throw "gfortran10 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gg = go-graft; # Added 2025-03-07 ggobi = throw "'ggobi' has been removed from Nixpkgs, as it is unmaintained and broken"; # Added 2025-05-18 ghostwriter = makePlasma5Throw "ghostwriter"; # Added 2023-03-18 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c8cbe66897b47..aae38a0069d5f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4861,7 +4861,6 @@ with pkgs; extraBuildInputs = lib.optional stdenv.hostPlatform.isDarwin clang.cc; }; - gcc10Stdenv = overrideCC gccStdenv buildPackages.gcc10; gcc11Stdenv = overrideCC gccStdenv buildPackages.gcc11; gcc12Stdenv = overrideCC gccStdenv buildPackages.gcc12; gcc13Stdenv = overrideCC gccStdenv buildPackages.gcc13; @@ -4965,7 +4964,6 @@ with pkgs; }); inherit (callPackage ../development/compilers/gcc/all.nix { inherit noSysDirs; }) - gcc10 gcc11 gcc12 gcc13 From 5376784348f5c54177e835d4454d89cc437fcfc1 Mon Sep 17 00:00:00 2001 From: Emily Date: Sat, 9 Aug 2025 20:08:16 +0100 Subject: [PATCH 08/12] cc-wrapper: remove dead code for `langJava` --- pkgs/build-support/cc-wrapper/default.nix | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix index 2a88e3369a994..e32f8ca58b153 100644 --- a/pkgs/build-support/cc-wrapper/default.nix +++ b/pkgs/build-support/cc-wrapper/default.nix @@ -545,10 +545,6 @@ stdenvNoCC.mkDerivation { export named_fc=${targetPrefix}gfortran '' - + optionalString cc.langJava or false '' - wrap ${targetPrefix}gcj $wrapper $ccPath/${targetPrefix}gcj - '' - + optionalString cc.langGo or false '' wrap ${targetPrefix}gccgo $wrapper $ccPath/${targetPrefix}gccgo wrap ${targetPrefix}go ${./go-wrapper.sh} $ccPath/${targetPrefix}go @@ -559,7 +555,7 @@ stdenvNoCC.mkDerivation { bintools ] ++ extraTools - ++ optionals cc.langD or cc.langJava or false [ zlib ]; + ++ optionals cc.langD or false [ zlib ]; depsTargetTargetPropagated = optional (libcxx != null) libcxx ++ extraPackages; setupHooks = [ @@ -796,7 +792,7 @@ stdenvNoCC.mkDerivation { ln -s ${cc.man} $man ln -s ${cc.info} $info '' - + optionalString (cc.langD or cc.langJava or false && !isArocc) '' + + optionalString (cc.langD or false && !isArocc) '' echo "-B${zlib}${zlib.libdir or "/lib/"}" >> $out/nix-support/libc-cflags '' From b5a4a0a6cc9317155a9afe14cb74df9aec9827cb Mon Sep 17 00:00:00 2001 From: Emily Date: Fri, 8 Aug 2025 19:49:25 +0100 Subject: [PATCH 09/12] {gdc,gdmd}: drop MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GDC 11 was the last version that could bootstrap without a D compiler, and GDC don’t offer their own binaries any more. GCC 11 is now end‐of‐life and being removed (as is GCC 12, even). It’s possible that we could use another distribution’s binary packages to bootstrap this, or go via our DMD package (it’s apparently not possible to bootstrap GDC with LDC, but I’m not sure about DMD), but as nobody has worked on it in the three years since GCC 12 came out, it seems like interest is limited, and it’s more of a yak shave than I’m up for right now. A full from‐source bootstrap chain would of course be nice, but is more the realm of the minimal bootstrap work than something we’d want to keep GCC 11 around in the main package set indefinitely for. --- doc/languages-frameworks/dlang.section.md | 2 +- pkgs/build-support/cc-wrapper/default.nix | 18 +-- pkgs/by-name/gd/gdmd/0001-gdc-store-path.diff | 11 -- pkgs/by-name/gd/gdmd/package.nix | 48 ------- pkgs/by-name/ru/rund/package.nix | 2 +- .../compilers/gcc/common/configure-flags.nix | 5 - .../gcc/common/extra-target-flags.nix | 8 +- pkgs/development/compilers/gcc/default.nix | 7 -- .../compilers/gcc/ng/common/gcc/default.nix | 2 - .../compilers/gcc/patches/default.nix | 6 - .../compilers/gcc/patches/libphobos.patch | 119 ------------------ pkgs/top-level/aliases.nix | 3 + pkgs/top-level/all-packages.nix | 13 -- 13 files changed, 11 insertions(+), 233 deletions(-) delete mode 100644 pkgs/by-name/gd/gdmd/0001-gdc-store-path.diff delete mode 100644 pkgs/by-name/gd/gdmd/package.nix delete mode 100644 pkgs/development/compilers/gcc/patches/libphobos.patch diff --git a/doc/languages-frameworks/dlang.section.md b/doc/languages-frameworks/dlang.section.md index fa211dc6a43d7..a6b40d686d4bc 100644 --- a/doc/languages-frameworks/dlang.section.md +++ b/doc/languages-frameworks/dlang.section.md @@ -1,6 +1,6 @@ # D (Dlang) {#dlang} -Nixpkgs provides multiple D compilers such as `ldc`, `dmd` and `gdc`. +Nixpkgs provides multiple D compilers such as `ldc` and `dmd`. These can be used like any other package during build time. However, Nixpkgs provides a build helper for compiling packages using the `dub` package manager. diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix index e32f8ca58b153..c5cbb98d00d32 100644 --- a/pkgs/build-support/cc-wrapper/default.nix +++ b/pkgs/build-support/cc-wrapper/default.nix @@ -15,7 +15,6 @@ bintools, coreutils ? null, apple-sdk ? null, - zlib ? null, nativeTools, noLibc ? false, nativeLibc, @@ -534,10 +533,6 @@ stdenvNoCC.mkDerivation { ln -sf ${cc} $out/nix-support/gprconfig-gnat-unwrapped '' - + optionalString cc.langD or false '' - wrap ${targetPrefix}gdc $wrapper $ccPath/${targetPrefix}gdc - '' - + optionalString cc.langFortran or false '' wrap ${targetPrefix}gfortran $wrapper $ccPath/${targetPrefix}gfortran ln -sv ${targetPrefix}gfortran $out/bin/${targetPrefix}g77 @@ -554,8 +549,7 @@ stdenvNoCC.mkDerivation { propagatedBuildInputs = [ bintools ] - ++ extraTools - ++ optionals cc.langD or false [ zlib ]; + ++ extraTools; depsTargetTargetPropagated = optional (libcxx != null) libcxx ++ extraPackages; setupHooks = [ @@ -668,12 +662,12 @@ stdenvNoCC.mkDerivation { + optionalString (!isArocc) '' echo "-B${libc_lib}${libc.libdir or "/lib/"}" >> $out/nix-support/libc-crt1-cflags '' - + optionalString (!(cc.langD or false)) '' + + '' echo "-${ if isArocc then "I" else "idirafter" } ${libc_dev}${libc.incdir or "/include"}" >> $out/nix-support/libc-cflags '' - + optionalString (isGNU && (!(cc.langD or false))) '' + + optionalString isGNU '' for dir in "${cc}"/lib/gcc/*/*/include-fixed; do echo '-idirafter' ''${dir} >> $out/nix-support/libc-cflags done @@ -792,9 +786,6 @@ stdenvNoCC.mkDerivation { ln -s ${cc.man} $man ln -s ${cc.info} $info '' - + optionalString (cc.langD or false && !isArocc) '' - echo "-B${zlib}${zlib.libdir or "/lib/"}" >> $out/nix-support/libc-cflags - '' ## ## Hardening support @@ -853,9 +844,6 @@ stdenvNoCC.mkDerivation { + optionalString cc.langAda or false '' hardening_unsupported_flags+=" format stackprotector strictoverflow" '' - + optionalString cc.langD or false '' - hardening_unsupported_flags+=" format" - '' + optionalString cc.langFortran or false '' hardening_unsupported_flags+=" format" '' diff --git a/pkgs/by-name/gd/gdmd/0001-gdc-store-path.diff b/pkgs/by-name/gd/gdmd/0001-gdc-store-path.diff deleted file mode 100644 index e9813c00be208..0000000000000 --- a/pkgs/by-name/gd/gdmd/0001-gdc-store-path.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- a/dmd-script -+++ b/dmd-script -@@ -72,7 +72,7 @@ my @run_args; - # for the target prefix. - basename($0) =~ m/^(.*-)?g?dmd(-.*)?$/; - my $target_prefix = $1?$1:""; --my $gdc_dir = abs_path(dirname($0)); -+my $gdc_dir = "@gdc_dir@"; - my $gdc = File::Spec->catfile( $gdc_dir, $target_prefix . "gdc" . ($2?$2:"")); - - sub osHasEXE() { diff --git a/pkgs/by-name/gd/gdmd/package.nix b/pkgs/by-name/gd/gdmd/package.nix deleted file mode 100644 index 74bd4799809bd..0000000000000 --- a/pkgs/by-name/gd/gdmd/package.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ - lib, - stdenvNoCC, - fetchFromGitHub, - replaceVars, - gdc, - perl, -}: -stdenvNoCC.mkDerivation { - pname = "gdmd"; - version = "0.1.0-unstable-2024-05-30"; - - src = fetchFromGitHub { - owner = "D-Programming-GDC"; - repo = "gdmd"; - rev = "dc0ad9f739795f3ce5c69825efcd5d1d586bb013"; - hash = "sha256-Sw8ExEPDvGqGKcM9VKnOI6MGgXW0tAu51A90Wi4qrRE="; - }; - - patches = [ - (replaceVars ./0001-gdc-store-path.diff { - gdc_dir = "${gdc}/bin"; - }) - ]; - - buildInputs = [ - gdc - perl - ]; - - installFlags = [ - "DESTDIR=$(out)" - "prefix=" - ]; - - preInstall = '' - install -d $out/bin $out/share/man/man1 - ''; - - meta = { - description = "Wrapper for GDC that emulates DMD's command line"; - homepage = "https://gdcproject.org"; - license = lib.licenses.gpl3Plus; - platforms = lib.platforms.all; - maintainers = with lib.maintainers; [ jtbx ]; - mainProgram = "gdmd"; - }; -} diff --git a/pkgs/by-name/ru/rund/package.nix b/pkgs/by-name/ru/rund/package.nix index 7a9590fce6852..f2f18716e7bc7 100644 --- a/pkgs/by-name/ru/rund/package.nix +++ b/pkgs/by-name/ru/rund/package.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { buildInputs = [ dcompiler ]; buildPhase = '' - for candidate in dmd ldmd2 gdmd; do + for candidate in dmd ldmd2; do echo Checking for DCompiler $candidate ... dc=$(type -P $candidate || echo "") if [ ! "$dc" == "" ]; then diff --git a/pkgs/development/compilers/gcc/common/configure-flags.nix b/pkgs/development/compilers/gcc/common/configure-flags.nix index 7cedb913b1a7a..14f27b89caba1 100644 --- a/pkgs/development/compilers/gcc/common/configure-flags.nix +++ b/pkgs/development/compilers/gcc/common/configure-flags.nix @@ -23,7 +23,6 @@ langC, langCC, - langD ? false, langFortran, langAda ? false, langGo, @@ -207,7 +206,6 @@ let lib.concatStringsSep "," ( lib.optional langC "c" ++ lib.optional langCC "c++" - ++ lib.optional langD "d" ++ lib.optional langFortran "fortran" ++ lib.optional langAda "ada" ++ lib.optional langGo "go" @@ -287,9 +285,6 @@ let ++ lib.optionals langJit [ "--enable-host-shared" ] - ++ lib.optionals (langD) [ - "--with-target-system-zlib=yes" - ] # On mips64-unknown-linux-gnu libsanitizer defines collide with # glibc's definitions and fail the build. It was fixed in gcc-13+. ++ diff --git a/pkgs/development/compilers/gcc/common/extra-target-flags.nix b/pkgs/development/compilers/gcc/common/extra-target-flags.nix index 7acb440b434a0..da2ab30295612 100644 --- a/pkgs/development/compilers/gcc/common/extra-target-flags.nix +++ b/pkgs/development/compilers/gcc/common/extra-target-flags.nix @@ -2,7 +2,6 @@ lib, stdenv, withoutTargetLibc, - langD ? false, libcCross, threadsCross, }: @@ -18,8 +17,8 @@ in EXTRA_FLAGS_FOR_TARGET = let mkFlags = - dep: langD: - lib.optionals ((!lib.systems.equals targetPlatform hostPlatform) && dep != null && !langD) ( + dep: + lib.optionals ((!lib.systems.equals targetPlatform hostPlatform) && dep != null) ( [ "-O2 -idirafter ${lib.getDev dep}${dep.incdir or "/include"}" ] @@ -28,8 +27,7 @@ in ] ); in - mkFlags libcCross langD - ++ lib.optionals (!withoutTargetLibc) (mkFlags (threadsCross.package or null) langD); + mkFlags libcCross ++ lib.optionals (!withoutTargetLibc) (mkFlags (threadsCross.package or null)); EXTRA_LDFLAGS_FOR_TARGET = let diff --git a/pkgs/development/compilers/gcc/default.nix b/pkgs/development/compilers/gcc/default.nix index 2d87fe210b612..0aab42a2dc6d7 100644 --- a/pkgs/development/compilers/gcc/default.nix +++ b/pkgs/development/compilers/gcc/default.nix @@ -11,7 +11,6 @@ langAda ? false, langObjC ? stdenv.targetPlatform.isDarwin, langObjCpp ? stdenv.targetPlatform.isDarwin, - langD ? false, langGo ? false, reproducibleBuild ? true, profiledCompiler ? false, @@ -154,7 +153,6 @@ let langAda langC langCC - langD langFortran langGo langJit @@ -195,10 +193,6 @@ assert stdenv.buildPlatform.isDarwin -> gnused != null; assert langGo -> langCC; assert langAda -> gnat-bootstrap != null; -# TODO: fixup D bootstrapping, probably by using gdc11 (and maybe other changes). -# error: GDC is required to build d -assert atLeast12 -> !langD; - # threadsCross is just for MinGW assert threadsCross != { } -> stdenv.targetPlatform.isWindows; @@ -409,7 +403,6 @@ pipe langAda langFortran langGo - langD version ; isGNU = true; diff --git a/pkgs/development/compilers/gcc/ng/common/gcc/default.nix b/pkgs/development/compilers/gcc/ng/common/gcc/default.nix index 0b6ae8110375a..3d8ef0d8300e1 100644 --- a/pkgs/development/compilers/gcc/ng/common/gcc/default.nix +++ b/pkgs/development/compilers/gcc/ng/common/gcc/default.nix @@ -8,7 +8,6 @@ langAda ? false, langC ? true, langCC ? true, - langD ? false, langFortran ? false, langGo ? false, langJava ? false, @@ -176,7 +175,6 @@ stdenv.mkDerivation (finalAttrs: { lib.intersperse "," ( lib.optional langC "c" ++ lib.optional langCC "c++" - ++ lib.optional langD "d" ++ lib.optional langFortran "fortran" ++ lib.optional langJava "java" ++ lib.optional langAda "ada" diff --git a/pkgs/development/compilers/gcc/patches/default.nix b/pkgs/development/compilers/gcc/patches/default.nix index 27f1230f3558a..23e4bf10e99f5 100644 --- a/pkgs/development/compilers/gcc/patches/default.nix +++ b/pkgs/development/compilers/gcc/patches/default.nix @@ -5,7 +5,6 @@ langAda, langObjC, langObjCpp, - langD, langFortran, langGo, reproducibleBuild, @@ -109,11 +108,6 @@ in # Do not pass a default include dir on PowerPC+Musl # See https://github.com/NixOS/nixpkgs/pull/45340/commits/d6bb7d45162ac93e017cc9b665ae4836f6410710 ++ [ ./ppc-musl.patch ] -# Patches for libphobos, the standard library of the D language -# - Forces libphobos to be built with -j1, as libtool misbehaves in parallel -# - Gets rid of -idirafter flags added by our gcc wrappers, as gdc does not understand them -# See https://github.com/NixOS/nixpkgs/pull/69144#issuecomment-535176453 -++ optional langD ./libphobos.patch # Moves the .cfi_starproc instruction to after the function label # Needed to build llvm-18 and later # See https://github.com/NixOS/nixpkgs/pull/354107/commits/2de1b4b14e17f42ba8b4bf43a29347c91511e008 diff --git a/pkgs/development/compilers/gcc/patches/libphobos.patch b/pkgs/development/compilers/gcc/patches/libphobos.patch deleted file mode 100644 index a16ea5416ffbf..0000000000000 --- a/pkgs/development/compilers/gcc/patches/libphobos.patch +++ /dev/null @@ -1,119 +0,0 @@ -diff --git a/Makefile.in b/Makefile.in -index a375471..83c5ecb 100644 ---- a/Makefile.in -+++ b/Makefile.in -@@ -804,7 +804,7 @@ BASE_FLAGS_TO_PASS = \ - "STAGE1_LANGUAGES=$(STAGE1_LANGUAGES)" \ - "GNATBIND=$(GNATBIND)" \ - "GNATMAKE=$(GNATMAKE)" \ -- "GDC=$(GDC)" \ -+ "`echo 'GDC=$(GDC)' | sed -e 's/-idirafter [^ ]*//g'`" \ - "GDCFLAGS=$(GDCFLAGS)" \ - "AR_FOR_TARGET=$(AR_FOR_TARGET)" \ - "AS_FOR_TARGET=$(AS_FOR_TARGET)" \ -@@ -817,7 +817,7 @@ BASE_FLAGS_TO_PASS = \ - "GFORTRAN_FOR_TARGET=$(GFORTRAN_FOR_TARGET)" \ - "GOC_FOR_TARGET=$(GOC_FOR_TARGET)" \ - "GOCFLAGS_FOR_TARGET=$(GOCFLAGS_FOR_TARGET)" \ -- "GDC_FOR_TARGET=$(GDC_FOR_TARGET)" \ -+ "`echo 'GDC_FOR_TARGET=$(GDC_FOR_TARGET)' | sed -e 's/-idirafter [^ ]*//g'`" \ - "GDCFLAGS_FOR_TARGET=$(GDCFLAGS_FOR_TARGET)" \ - "LD_FOR_TARGET=$(LD_FOR_TARGET)" \ - "LIPO_FOR_TARGET=$(LIPO_FOR_TARGET)" \ -@@ -890,7 +890,7 @@ EXTRA_HOST_FLAGS = \ - 'DLLTOOL=$(DLLTOOL)' \ - 'GFORTRAN=$(GFORTRAN)' \ - 'GOC=$(GOC)' \ -- 'GDC=$(GDC)' \ -+ "`echo 'GDC=$(GDC)' | sed -e 's/-idirafter [^ ]*//g'`" \ - 'LD=$(LD)' \ - 'LIPO=$(LIPO)' \ - 'NM=$(NM)' \ -@@ -966,8 +966,11 @@ EXTRA_TARGET_FLAGS = \ - 'STAGE1_LDFLAGS=$$(POSTSTAGE1_LDFLAGS)' \ - 'STAGE1_LIBS=$$(POSTSTAGE1_LIBS)' \ - "TFLAGS=$$TFLAGS" -+EXTRA_TARGET_FLAGS_D = \ -+ "`echo $(EXTRA_TARGET_FLAGS) | sed -e 's/-idirafter [^ ]*//g'`" - - TARGET_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) -+TARGET_FLAGS_TO_PASS_D = $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS_D) - - # Flags to pass down to gcc. gcc builds a library, libgcc.a, so it - # unfortunately needs the native compiler and the target ar and -@@ -47285,7 +47288,7 @@ check-target-libphobos: - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libphobos && \ -- $(MAKE) $(TARGET_FLAGS_TO_PASS) check) -+ $(MAKE) $(TARGET_FLAGS_TO_PASS_D) check) - - @endif target-libphobos - -@@ -47300,7 +47303,7 @@ install-target-libphobos: installdirs - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libphobos && \ -- $(MAKE) $(TARGET_FLAGS_TO_PASS) install) -+ $(MAKE) $(TARGET_FLAGS_TO_PASS_D) install) - - @endif target-libphobos - -@@ -47315,7 +47318,7 @@ install-strip-target-libphobos: installdirs - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libphobos && \ -- $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) -+ $(MAKE) $(TARGET_FLAGS_TO_PASS_D) install-strip) - - @endif target-libphobos - -diff --git a/Makefile.tpl b/Makefile.tpl -index 41cae58..b3d32e7 100644 ---- a/Makefile.tpl -+++ b/Makefile.tpl -@@ -721,8 +721,11 @@ EXTRA_TARGET_FLAGS = \ - 'STAGE1_LDFLAGS=$$(POSTSTAGE1_LDFLAGS)' \ - 'STAGE1_LIBS=$$(POSTSTAGE1_LIBS)' \ - "TFLAGS=$$TFLAGS" -+EXTRA_TARGET_FLAGS_D = \ -+ "`echo $(EXTRA_TARGET_FLAGS) | sed -e 's/-idirafter [^ ]*//g'`" - - TARGET_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) -+TARGET_FLAGS_TO_PASS_D = $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS_D) - - # Flags to pass down to gcc. gcc builds a library, libgcc.a, so it - # unfortunately needs the native compiler and the target ar and -diff --git a/libphobos/Makefile.in b/libphobos/Makefile.in -index e894417..2d18dcb 100644 ---- a/libphobos/Makefile.in -+++ b/libphobos/Makefile.in -@@ -365,6 +365,7 @@ AM_MAKEFLAGS = \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ - "MAKE=$(MAKE)" \ -+ "`echo 'MAKEFLAGS=$(MAKEFLAGS)' | sed -e 's/-j[0-9]+/-j1/'`" \ - "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ - "PICFLAG=$(PICFLAG)" \ - "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ -@@ -694,6 +695,8 @@ uninstall-am: - - .PRECIOUS: Makefile - -+.NOTPARALLEL: -+ - # GNU Make needs to see an explicit $(MAKE) variable in the command it - # runs to enable its job server during parallel builds. Hence the - # comments below. -diff --git a/libphobos/configure b/libphobos/configure -index b3cb5f3..25adf2b 100755 ---- a/libphobos/configure -+++ b/libphobos/configure -@@ -5122,6 +5122,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' - ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' - ac_compiler_gnu=$ac_cv_c_compiler_gnu - -+GDC=`$as_echo "$GDC" | sed -e 's/-idirafter [^ ]*//g'` - - ac_ext=d - ac_compile='$GDC -c $GDCFLAGS conftest.$ac_ext >&5' diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index a2a06875ae4f8..d4be4bed8dcb5 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -963,6 +963,9 @@ mapAliases { gcj = gcj6; # Added 2024-09-13 gcj6 = throw "gcj6 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2024-09-13 gcolor2 = throw "'gcolor2' has been removed due to lack of maintenance upstream and depending on gtk2. Consider using 'gcolor3' or 'eyedropper' instead"; # Added 2024-09-15 + gdc = throw "gdc has been removed from Nixpkgs, as recent versions require complex bootstrapping"; # Added 2025-08-08 + gdc11 = throw "gdc11 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 + gdmd = throw "gdmd has been removed from Nixpkgs, as it depends on GDC which was removed"; # Added 2025-08-08 gdome2 = throw "'gdome2' has been removed from nixpkgs, as it is umaintained and obsolete"; # Added 2024-12-29 geocode-glib = throw "throw 'geocode-glib' has been removed, as it was unused and used outdated libraries"; # Added 2025-04-16 geos_3_11 = throw "geos_3_11 has been removed from nixpgks. Please use a more recent 'geos' instead."; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index aae38a0069d5f..5a12b8786180b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5251,19 +5251,6 @@ with pkgs; gcc-arm-embedded = gcc-arm-embedded-14; - # It would be better to match the default gcc so that there are no linking errors - # when using C/C++ libraries in D packages, but right now versions >= 12 are broken. - gdc = gdc11; - gdc11 = wrapCC ( - gcc11.cc.override { - name = "gdc"; - langCC = false; - langC = false; - langD = true; - profiledCompiler = false; - } - ); - # Haskell and GHC haskell = callPackage ./haskell-packages.nix { }; From 10ce2b47917a22617577ff811ac5ce99de35848c Mon Sep 17 00:00:00 2001 From: Emily Date: Fri, 8 Aug 2025 18:22:54 +0100 Subject: [PATCH 10/12] {gcc11,gfortran11,gdc11,gnat11,gnat-bootstrap11}: drop EOL since 2024; no longer used in the tree. --- doc/release-notes/rl-2511.section.md | 2 +- pkgs/by-name/gf/gfortran11/package.nix | 10 - pkgs/development/compilers/gcc/default.nix | 90 +++--- ...thread-model-support-from-mcfgthread.patch | 306 ------------------ .../compilers/gcc/patches/default.nix | 63 +--- .../gcc/patches/gfortran-driving.patch | 20 -- .../compilers/gcc/patches/no-sys-dirs.patch | 28 -- pkgs/development/compilers/gcc/versions.nix | 2 - .../compilers/gnat-bootstrap/default.nix | 17 - pkgs/top-level/aliases.nix | 7 +- pkgs/top-level/all-packages.nix | 34 -- 11 files changed, 55 insertions(+), 524 deletions(-) delete mode 100644 pkgs/by-name/gf/gfortran11/package.nix delete mode 100644 pkgs/development/compilers/gcc/patches/11/Added-mcf-thread-model-support-from-mcfgthread.patch delete mode 100644 pkgs/development/compilers/gcc/patches/gfortran-driving.patch delete mode 100644 pkgs/development/compilers/gcc/patches/no-sys-dirs.patch diff --git a/doc/release-notes/rl-2511.section.md b/doc/release-notes/rl-2511.section.md index f261560026aba..5285a32254be8 100644 --- a/doc/release-notes/rl-2511.section.md +++ b/doc/release-notes/rl-2511.section.md @@ -20,7 +20,7 @@ - The `offrss` package was removed due to lack of upstream maintenance since 2012. It's recommended for users to migrate to another RSS reader -- GCC 9 and 10 have been removed, as they have reached end‐of‐life upstream and are no longer supported. +- GCC 9, 10, and 11 have been removed, as they have reached end‐of‐life upstream and are no longer supported. - `base16-builder` node package has been removed due to lack of upstream maintenance. - `gentium` package now provides `Gentium-*.ttf` files, and not `GentiumPlus-*.ttf` files like before. The font identifiers `Gentium Plus*` are available in the `gentium-plus` package, and if you want to use the more recently updated package `gentium` [by sil](https://software.sil.org/gentium/), you should update your configuration files to use the `Gentium` font identifier. diff --git a/pkgs/by-name/gf/gfortran11/package.nix b/pkgs/by-name/gf/gfortran11/package.nix deleted file mode 100644 index d27a264fc5298..0000000000000 --- a/pkgs/by-name/gf/gfortran11/package.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ wrapCC, gcc11 }: -wrapCC ( - gcc11.cc.override { - name = "gfortran"; - langFortran = true; - langCC = false; - langC = false; - profiledCompiler = false; - } -) diff --git a/pkgs/development/compilers/gcc/default.nix b/pkgs/development/compilers/gcc/default.nix index 0aab42a2dc6d7..6d6189ed74995 100644 --- a/pkgs/development/compilers/gcc/default.nix +++ b/pkgs/development/compilers/gcc/default.nix @@ -80,11 +80,9 @@ let majorVersion = versions.major version; atLeast14 = versionAtLeast version "14"; atLeast13 = versionAtLeast version "13"; - atLeast12 = versionAtLeast version "12"; is14 = majorVersion == "14"; is13 = majorVersion == "13"; is12 = majorVersion == "12"; - is11 = majorVersion == "11"; # releases have a form: MAJOR.MINOR.MICRO, like 14.2.1 # snapshots have a form like MAJOR.MINOR.MICRO.DATE, like 14.2.1.20250322 @@ -98,7 +96,7 @@ let # "14.2.0" -> "14.2.0" baseVersion = lib.concatStringsSep "." (lib.take 3 (lib.splitVersion version)); - disableBootstrap = !stdenv.hostPlatform.isDarwin && (atLeast12 -> !profiledCompiler); + disableBootstrap = !stdenv.hostPlatform.isDarwin && !profiledCompiler; inherit (stdenv) buildPlatform hostPlatform targetPlatform; targetConfig = @@ -216,7 +214,7 @@ pipe "mirror://gcc/snapshots/${majorVersion}-${snapDate}/gcc-${majorVersion}-${snapDate}.tar.xz" else "mirror://gcc/releases/gcc-${version}/gcc-${version}.tar.xz"; - ${if is11 || is13 then "hash" else "sha256"} = gccVersions.srcHashForVersion version; + ${if is13 then "hash" else "sha256"} = gccVersions.srcHashForVersion version; }; inherit patches; @@ -236,8 +234,7 @@ pipe "format" "pie" "stackclashprotection" - ] - ++ optionals (is11 && langAda) [ "fortify3" ]; + ]; postPatch = '' configureScripts=$(find . -name configure) @@ -258,7 +255,7 @@ pipe # This should kill all the stdinc frameworks that gcc and friends like to # insert into default search paths. + optionalString hostPlatform.isDarwin '' - substituteInPlace gcc/config/darwin-c.c${optionalString atLeast12 "c"} \ + substituteInPlace gcc/config/darwin-c.cc \ --replace 'if (stdinc)' 'if (0)' substituteInPlace libgcc/config/t-slibgcc-darwin \ @@ -333,7 +330,7 @@ pipe buildFlags = # we do not yet have Nix-driven profiling - assert atLeast12 -> (profiledCompiler -> !disableBootstrap); + assert profiledCompiler -> !disableBootstrap; let target = optionalString (profiledCompiler) "profiled" @@ -354,45 +351,38 @@ pipe # https://gcc.gnu.org/PR109898 enableParallelInstalling = false; - env = mapAttrs (_: v: toString v) ( - { - - NIX_NO_SELF_RPATH = true; - - # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210 - ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64"; - - # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the - # library headers and binaries, regardless of the language being compiled. - # - # The LTO code doesn't find zlib, so we just add it to $CPATH and - # $LIBRARY_PATH in this case. - # - # Cross-compiling, we need gcc not to read ./specs in order to build the g++ - # compiler (after the specs for the cross-gcc are created). Having - # LIBRARY_PATH= makes gcc read the specs from ., and the build breaks. - - CPATH = optionals (lib.systems.equals targetPlatform hostPlatform) ( - makeSearchPathOutput "dev" "include" ([ ] ++ optional (zlib != null) zlib) - ); - - LIBRARY_PATH = optionals (lib.systems.equals targetPlatform hostPlatform) ( - makeLibraryPath (optional (zlib != null) zlib) - ); - - NIX_LDFLAGS = optionalString hostPlatform.isSunOS "-lm"; - - inherit (callFile ./common/extra-target-flags.nix { }) - EXTRA_FLAGS_FOR_TARGET - EXTRA_LDFLAGS_FOR_TARGET - ; - } - // - optionalAttrs (!atLeast12 && stdenv.cc.isClang && (!lib.systems.equals targetPlatform hostPlatform)) - { - NIX_CFLAGS_COMPILE = "-Wno-register"; - } - ); + env = mapAttrs (_: v: toString v) { + + NIX_NO_SELF_RPATH = true; + + # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210 + ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64"; + + # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the + # library headers and binaries, regardless of the language being compiled. + # + # The LTO code doesn't find zlib, so we just add it to $CPATH and + # $LIBRARY_PATH in this case. + # + # Cross-compiling, we need gcc not to read ./specs in order to build the g++ + # compiler (after the specs for the cross-gcc are created). Having + # LIBRARY_PATH= makes gcc read the specs from ., and the build breaks. + + CPATH = optionals (lib.systems.equals targetPlatform hostPlatform) ( + makeSearchPathOutput "dev" "include" ([ ] ++ optional (zlib != null) zlib) + ); + + LIBRARY_PATH = optionals (lib.systems.equals targetPlatform hostPlatform) ( + makeLibraryPath (optional (zlib != null) zlib) + ); + + NIX_LDFLAGS = optionalString hostPlatform.isSunOS "-lm"; + + inherit (callFile ./common/extra-target-flags.nix { }) + EXTRA_FLAGS_FOR_TARGET + EXTRA_LDFLAGS_FOR_TARGET + ; + }; passthru = { inherit @@ -407,11 +397,7 @@ pipe ; isGNU = true; hardeningUnsupportedFlags = - optionals (!atLeast12) [ - "fortify3" - "trivialautovarinit" - ] - ++ optionals (!atLeast13) [ + optionals (!atLeast13) [ "strictflexarrays1" "strictflexarrays3" ] diff --git a/pkgs/development/compilers/gcc/patches/11/Added-mcf-thread-model-support-from-mcfgthread.patch b/pkgs/development/compilers/gcc/patches/11/Added-mcf-thread-model-support-from-mcfgthread.patch deleted file mode 100644 index 77202438e47d8..0000000000000 --- a/pkgs/development/compilers/gcc/patches/11/Added-mcf-thread-model-support-from-mcfgthread.patch +++ /dev/null @@ -1,306 +0,0 @@ -From 86f2f767ddffd9f7c6f1470b987ae7b0d251b988 Mon Sep 17 00:00:00 2001 -From: Liu Hao -Date: Wed, 25 Apr 2018 21:54:19 +0800 -Subject: [PATCH] Added 'mcf' thread model support from mcfgthread. - -Signed-off-by: Liu Hao ---- - config/gthr.m4 | 1 + - gcc/config.gcc | 3 +++ - gcc/config/i386/mingw-mcfgthread.h | 1 + - gcc/config/i386/mingw-w64.h | 2 +- - gcc/config/i386/mingw32.h | 11 ++++++++++- - gcc/configure | 2 +- - gcc/configure.ac | 2 +- - libatomic/configure.tgt | 2 +- - libgcc/config.host | 6 ++++++ - libgcc/config/i386/gthr-mcf.h | 1 + - libgcc/config/i386/t-mingw-mcfgthread | 2 ++ - libgcc/configure | 1 + - libstdc++-v3/configure | 1 + - libstdc++-v3/libsupc++/atexit_thread.cc | 18 ++++++++++++++++++ - libstdc++-v3/libsupc++/guard.cc | 23 +++++++++++++++++++++++ - libstdc++-v3/src/c++11/thread.cc | 9 +++++++++ - 16 files changed, 80 insertions(+), 5 deletions(-) - create mode 100644 gcc/config/i386/mingw-mcfgthread.h - create mode 100644 libgcc/config/i386/gthr-mcf.h - create mode 100644 libgcc/config/i386/t-mingw-mcfgthread - -diff --git a/config/gthr.m4 b/config/gthr.m4 -index 7b29f1f3327..82e21fe1709 100644 ---- a/config/gthr.m4 -+++ b/config/gthr.m4 -@@ -21,6 +21,7 @@ case $1 in - tpf) thread_header=config/s390/gthr-tpf.h ;; - vxworks) thread_header=config/gthr-vxworks.h ;; - win32) thread_header=config/i386/gthr-win32.h ;; -+ mcf) thread_header=config/i386/gthr-mcf.h ;; - esac - AC_SUBST(thread_header) - ]) -diff --git a/gcc/config.gcc b/gcc/config.gcc -index 46a9029acec..112c24e95a3 100644 ---- a/gcc/config.gcc -+++ b/gcc/config.gcc -@@ -1758,6 +1758,9 @@ i[34567]86-*-mingw* | x86_64-*-mingw*) - if test x$enable_threads = xposix ; then - tm_file="${tm_file} i386/mingw-pthread.h" - fi -+ if test x$enable_threads = xmcf ; then -+ tm_file="${tm_file} i386/mingw-mcfgthread.h" -+ fi - tm_file="${tm_file} i386/mingw32.h" - # This makes the logic if mingw's or the w64 feature set has to be used - case ${target} in -diff --git a/gcc/config/i386/mingw-mcfgthread.h b/gcc/config/i386/mingw-mcfgthread.h -new file mode 100644 -index 00000000000..ec381a7798f ---- /dev/null -+++ b/gcc/config/i386/mingw-mcfgthread.h -@@ -0,0 +1 @@ -+#define TARGET_USE_MCFGTHREAD 1 -diff --git a/gcc/config/i386/mingw-w64.h b/gcc/config/i386/mingw-w64.h -index 484dc7a9e9f..a15bbeea500 100644 ---- a/gcc/config/i386/mingw-w64.h -+++ b/gcc/config/i386/mingw-w64.h -@@ -48,7 +48,7 @@ along with GCC; see the file COPYING3. If not see - "%{mwindows:-lgdi32 -lcomdlg32} " \ - "%{fvtable-verify=preinit:-lvtv -lpsapi; \ - fvtable-verify=std:-lvtv -lpsapi} " \ -- "-ladvapi32 -lshell32 -luser32 -lkernel32" -+ LIB_MCFGTHREAD "-ladvapi32 -lshell32 -luser32 -lkernel32" - - #undef SPEC_32 - #undef SPEC_64 -diff --git a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h -index 0612b87199a..76cea94f3b7 100644 ---- a/gcc/config/i386/mingw32.h -+++ b/gcc/config/i386/mingw32.h -@@ -32,6 +32,14 @@ along with GCC; see the file COPYING3. If not see - | MASK_STACK_PROBE | MASK_ALIGN_DOUBLE \ - | MASK_MS_BITFIELD_LAYOUT) - -+#ifndef TARGET_USE_MCFGTHREAD -+#define CPP_MCFGTHREAD() ((void)0) -+#define LIB_MCFGTHREAD "" -+#else -+#define CPP_MCFGTHREAD() (builtin_define("__USING_MCFGTHREAD__")) -+#define LIB_MCFGTHREAD " -lmcfgthread " -+#endif -+ - /* See i386/crtdll.h for an alternative definition. _INTEGRAL_MAX_BITS - is for compatibility with native compiler. */ - #define EXTRA_OS_CPP_BUILTINS() \ -@@ -50,6 +58,7 @@ along with GCC; see the file COPYING3. If not see - builtin_define_std ("WIN64"); \ - builtin_define ("_WIN64"); \ - } \ -+ CPP_MCFGTHREAD(); \ - } \ - while (0) - -@@ -93,7 +102,7 @@ along with GCC; see the file COPYING3. If not see - "%{mwindows:-lgdi32 -lcomdlg32} " \ - "%{fvtable-verify=preinit:-lvtv -lpsapi; \ - fvtable-verify=std:-lvtv -lpsapi} " \ -- "-ladvapi32 -lshell32 -luser32 -lkernel32" -+ LIB_MCFGTHREAD "-ladvapi32 -lshell32 -luser32 -lkernel32" - - /* Weak symbols do not get resolved if using a Windows dll import lib. - Make the unwind registration references strong undefs. */ -diff --git a/gcc/configure b/gcc/configure -index 6121e163259..52f0e00efe6 100755 ---- a/gcc/configure -+++ b/gcc/configure -@@ -11693,7 +11693,7 @@ case ${enable_threads} in - target_thread_file='single' - ;; - aix | dce | lynx | mipssde | posix | rtems | \ -- single | tpf | vxworks | win32) -+ single | tpf | vxworks | win32 | mcf) - target_thread_file=${enable_threads} - ;; - *) -diff --git a/gcc/configure.ac b/gcc/configure.ac -index b066cc609e1..4ecdba88de7 100644 ---- a/gcc/configure.ac -+++ b/gcc/configure.ac -@@ -1612,7 +1612,7 @@ case ${enable_threads} in - target_thread_file='single' - ;; - aix | dce | lynx | mipssde | posix | rtems | \ -- single | tpf | vxworks | win32) -+ single | tpf | vxworks | win32 | mcf) - target_thread_file=${enable_threads} - ;; - *) -diff --git a/libatomic/configure.tgt b/libatomic/configure.tgt -index ea8c34f8c71..23134ad7363 100644 ---- a/libatomic/configure.tgt -+++ b/libatomic/configure.tgt -@@ -145,7 +145,7 @@ case "${target}" in - *-*-mingw*) - # OS support for atomic primitives. - case ${target_thread_file} in -- win32) -+ win32 | mcf) - config_path="${config_path} mingw" - ;; - posix) -diff --git a/libgcc/config.host b/libgcc/config.host -index 11b4acaff55..9fbd38650bd 100644 ---- a/libgcc/config.host -+++ b/libgcc/config.host -@@ -737,6 +737,9 @@ i[34567]86-*-mingw*) - posix) - tmake_file="i386/t-mingw-pthread $tmake_file" - ;; -+ mcf) -+ tmake_file="i386/t-mingw-mcfgthread $tmake_file" -+ ;; - esac - # This has to match the logic for DWARF2_UNWIND_INFO in gcc/config/i386/cygming.h - if test x$ac_cv_sjlj_exceptions = xyes; then -@@ -761,6 +764,9 @@ x86_64-*-mingw*) - posix) - tmake_file="i386/t-mingw-pthread $tmake_file" - ;; -+ mcf) -+ tmake_file="i386/t-mingw-mcfgthread $tmake_file" -+ ;; - esac - # This has to match the logic for DWARF2_UNWIND_INFO in gcc/config/i386/cygming.h - if test x$ac_cv_sjlj_exceptions = xyes; then -diff --git a/libgcc/config/i386/gthr-mcf.h b/libgcc/config/i386/gthr-mcf.h -new file mode 100644 -index 00000000000..5ea2908361f ---- /dev/null -+++ b/libgcc/config/i386/gthr-mcf.h -@@ -0,0 +1 @@ -+#include -diff --git a/libgcc/config/i386/t-mingw-mcfgthread b/libgcc/config/i386/t-mingw-mcfgthread -new file mode 100644 -index 00000000000..4b9b10e32d6 ---- /dev/null -+++ b/libgcc/config/i386/t-mingw-mcfgthread -@@ -0,0 +1,2 @@ -+SHLIB_PTHREAD_CFLAG = -+SHLIB_PTHREAD_LDFLAG = -lmcfgthread -diff --git a/libgcc/configure b/libgcc/configure -index b2f3f870844..eff889dc3b3 100644 ---- a/libgcc/configure -+++ b/libgcc/configure -@@ -5451,6 +5451,7 @@ case $target_thread_file in - tpf) thread_header=config/s390/gthr-tpf.h ;; - vxworks) thread_header=config/gthr-vxworks.h ;; - win32) thread_header=config/i386/gthr-win32.h ;; -+ mcf) thread_header=config/i386/gthr-mcf.h ;; - esac - - -diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure -index ba094be6f15..979a5ab9ace 100755 ---- a/libstdc++-v3/configure -+++ b/libstdc++-v3/configure -@@ -15187,6 +15187,7 @@ case $target_thread_file in - tpf) thread_header=config/s390/gthr-tpf.h ;; - vxworks) thread_header=config/gthr-vxworks.h ;; - win32) thread_header=config/i386/gthr-win32.h ;; -+ mcf) thread_header=config/i386/gthr-mcf.h ;; - esac - - -diff --git a/libstdc++-v3/libsupc++/atexit_thread.cc b/libstdc++-v3/libsupc++/atexit_thread.cc -index de920d714c6..665fb74bd6b 100644 ---- a/libstdc++-v3/libsupc++/atexit_thread.cc -+++ b/libstdc++-v3/libsupc++/atexit_thread.cc -@@ -25,6 +25,22 @@ - #include - #include - #include "bits/gthr.h" -+ -+#ifdef __USING_MCFGTHREAD__ -+ -+#include -+namespace __cxxabiv1 { -+extern "C" int -+__cxa_thread_atexit (void (_GLIBCXX_CDTOR_CALLABI *dtor)(void *), -+ void *obj, void *dso_handle) -+ _GLIBCXX_NOTHROW -+{ -+ return ::_MCFCRT_AtThreadExit((void (*)(_MCFCRT_STD intptr_t))dtor, (_MCFCRT_STD intptr_t)obj) ? 0 : -1; -+ (void)dso_handle; -+} -+} -+#else // __USING_MCFGTHREAD__ -+ - #ifdef _GLIBCXX_THREAD_ATEXIT_WIN32 - #define WIN32_LEAN_AND_MEAN - #include -@@ -167,3 +183,5 @@ __cxxabiv1::__cxa_thread_atexit (void (*dtor)(void *), void *obj, void */*dso_ha - } - - #endif /* _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ -+ -+#endif // __USING_MCFGTHREAD__ -diff --git a/libstdc++-v3/libsupc++/guard.cc b/libstdc++-v3/libsupc++/guard.cc -index 3a2ec3ad0d6..8b4cc96199b 100644 ---- a/libstdc++-v3/libsupc++/guard.cc -+++ b/libstdc++-v3/libsupc++/guard.cc -@@ -28,6 +28,27 @@ - #include - #include - #include -+ -+#ifdef __USING_MCFGTHREAD__ -+ -+#include -+ -+namespace __cxxabiv1 { -+ -+extern "C" int __cxa_guard_acquire(__guard *g){ -+ return ::_MCFCRT_WaitForOnceFlagForever((::_MCFCRT_OnceFlag *)g) == ::_MCFCRT_kOnceResultInitial; -+} -+extern "C" void __cxa_guard_abort(__guard *g) throw() { -+ ::_MCFCRT_SignalOnceFlagAsAborted((::_MCFCRT_OnceFlag *)g); -+} -+extern "C" void __cxa_guard_release(__guard *g) throw() { -+ ::_MCFCRT_SignalOnceFlagAsFinished((::_MCFCRT_OnceFlag *)g); -+} -+ -+} -+ -+#else // __USING_MCFGTHREAD__ -+ - #include - #include - #include -@@ -425,3 +446,5 @@ namespace __cxxabiv1 - #endif - } - } -+ -+#endif -diff --git a/libstdc++-v3/src/c++11/thread.cc b/libstdc++-v3/src/c++11/thread.cc -index 8238817c2e9..0c6a1f85f6f 100644 ---- a/libstdc++-v3/src/c++11/thread.cc -+++ b/libstdc++-v3/src/c++11/thread.cc -@@ -55,6 +55,15 @@ static inline int get_nprocs() - #elif defined(_GLIBCXX_USE_SC_NPROC_ONLN) - # include - # define _GLIBCXX_NPROCS sysconf(_SC_NPROC_ONLN) -+#elif defined(_WIN32) -+# include -+static inline int get_nprocs() -+{ -+ SYSTEM_INFO sysinfo; -+ GetSystemInfo(&sysinfo); -+ return (int)sysinfo.dwNumberOfProcessors; -+} -+# define _GLIBCXX_NPROCS get_nprocs() - #else - # define _GLIBCXX_NPROCS 0 - #endif --- -2.17.0 - diff --git a/pkgs/development/compilers/gcc/patches/default.nix b/pkgs/development/compilers/gcc/patches/default.nix index 23e4bf10e99f5..ae5080f9f6b0b 100644 --- a/pkgs/development/compilers/gcc/patches/default.nix +++ b/pkgs/development/compilers/gcc/patches/default.nix @@ -29,12 +29,10 @@ let atLeast15 = lib.versionAtLeast version "15"; atLeast14 = lib.versionAtLeast version "14"; atLeast13 = lib.versionAtLeast version "13"; - atLeast12 = lib.versionAtLeast version "12"; is15 = majorVersion == "15"; is14 = majorVersion == "14"; is13 = majorVersion == "13"; is12 = majorVersion == "12"; - is11 = majorVersion == "11"; # We only apply these patches when building a native toolchain for # aarch64-darwin, as it breaks building a foreign one: @@ -49,28 +47,20 @@ let in # -# Patches below are organized into three general categories: -# 1. Patches relevant to gcc>=12 on every platform -# 2. Patches relevant to gcc>=12 on specific platforms -# 3. Patches relevant only to gcc<12 +# Patches below are organized into two general categories: +# 1. Patches relevant on every platform +# 2. Patches relevant on specific platforms # -## 1. Patches relevant to gcc>=12 on every platform #################################### +## 1. Patches relevant on every platform #################################### [ ] -# Backport "c++: conversion to base of vbase in NSDMI" -# Fixes https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80431 -++ optional (!atLeast12) (fetchpatch { - name = "gcc-bug80431-fix"; - url = "https://github.com/gcc-mirror/gcc/commit/de31f5445b12fd9ab9969dc536d821fe6f0edad0.patch"; - hash = "sha256-bnHKJP5jR8rNJjRTi58/N/qZ5fPkuFBk7WblJWQpKOs="; -}) # Pass the path to a C++ compiler directly in the Makefile.in ++ optional (!lib.systems.equals targetPlatform hostPlatform) ./libstdc++-target.patch ++ optionals (noSysDirs) ( [ # Do not try looking for binaries and libraries in /lib and /usr/lib - (if atLeast12 then ./gcc-12-no-sys-dirs.patch else ./no-sys-dirs.patch) + ./gcc-12-no-sys-dirs.patch ] ++ ( { @@ -92,19 +82,17 @@ in ./no-sys-dirs-riscv.patch ./12/mangle-NIX_STORE-in-__FILE__.patch ]; - "11" = [ ./no-sys-dirs-riscv.patch ]; } ."${majorVersion}" or [ ] ) ) # Pass CFLAGS on to gnat -++ optional (atLeast12 && langAda) ./gnat-cflags-11.patch +++ optional langAda ./gnat-cflags-11.patch ++ optional langFortran ( # Fix interaction of gfortran and libtool # Fixes the output of -v # See also https://github.com/nixOS/nixpkgs/commit/cc6f814a8f0e9b70ede5b24192558664fa1f98a2 - if atLeast12 then ./gcc-12-gfortran-driving.patch else ./gfortran-driving.patch -) + ./gcc-12-gfortran-driving.patch) # Do not pass a default include dir on PowerPC+Musl # See https://github.com/NixOS/nixpkgs/pull/45340/commits/d6bb7d45162ac93e017cc9b665ae4836f6410710 ++ [ ./ppc-musl.patch ] @@ -114,12 +102,12 @@ in ++ optional (!atLeast14) ./cfi_startproc-reorder-label-09-1.diff ++ optional (atLeast14 && !canApplyIainsDarwinPatches) ./cfi_startproc-reorder-label-14-1.diff -## 2. Patches relevant to gcc>=12 on specific platforms #################################### +## 2. Patches relevant on specific platforms #################################### ### Musl+Go+gcc12 # backport fixes to build gccgo with musl libc -++ optionals (stdenv.hostPlatform.isMusl && langGo && atLeast12) [ +++ optionals (stdenv.hostPlatform.isMusl && langGo) [ # libgo: handle stat st_atim32 field and SYS_SECCOMP # syscall: gofmt # Add blank lines after //sys comments where needed, and then run gofmt @@ -185,9 +173,7 @@ in ) ../patches/15/libgcc-darwin-detection.patch # Fix detection of bootstrap compiler Ada support (cctools as) on Nix Darwin -++ optional ( - atLeast12 && stdenv.hostPlatform.isDarwin && langAda -) ./ada-cctools-as-detection-configure.patch +++ optional (stdenv.hostPlatform.isDarwin && langAda) ./ada-cctools-as-detection-configure.patch # Remove CoreServices on Darwin, as it is only needed for macOS SDK 14+ ++ optional ( @@ -247,16 +233,6 @@ in # Needed to build LLVM>18 ./cfi_startproc-reorder-label-2.diff ]; - "11" = [ - (fetchpatch { - # There are no upstream release tags in https://github.com/iains/gcc-11-branch. - # 5cc4c42a0d4de08715c2eef8715ad5b2e92a23b6 is the commit from https://github.com/gcc-mirror/gcc/releases/tag/releases%2Fgcc-11.5.0 - url = "https://github.com/iains/gcc-11-branch/compare/5cc4c42a0d4de08715c2eef8715ad5b2e92a23b6..gcc-11.5-darwin-r0.diff"; - hash = "sha256-7lH+GkgkrE6nOp9PMdIoqlQNWK31s6oW+lDt1LIkadE="; - }) - # Needed to build LLVM>18 - ./cfi_startproc-reorder-label-2.diff - ]; } .${majorVersion} or [ ] ) @@ -268,22 +244,3 @@ in ++ optional ( !atLeast13 && !withoutTargetLibc && targetPlatform.isMinGW && threadsCross.model == "mcf" ) (./. + "/${majorVersion}/Added-mcf-thread-model-support-from-mcfgthread.patch") - -############################################################################## -## -## 3. Patches relevant only to gcc<12 -## -## Above this point are patches which might potentially be applied -## to gcc version 12 or newer. Below this point are patches which -## will *only* be used for gcc versions older than gcc12. -## -############################################################################## - -## gcc 11.0 and older ############################################################################## - -# openjdk build fails without this on -march=opteron; is upstream in gcc12 -++ optional is11 (fetchpatch { - name = "darwin-aarch64-self-host-driver.patch"; - url = "https://github.com/gcc-mirror/gcc/commit/d243f4009d8071b734df16cd70f4c5d09a373769.patch"; - sha256 = "sha256-H97GZs2wwzfFGiFOgds/5KaweC+luCsWX3hRFf7+Sm4="; -}) diff --git a/pkgs/development/compilers/gcc/patches/gfortran-driving.patch b/pkgs/development/compilers/gcc/patches/gfortran-driving.patch deleted file mode 100644 index 70708886b4058..0000000000000 --- a/pkgs/development/compilers/gcc/patches/gfortran-driving.patch +++ /dev/null @@ -1,20 +0,0 @@ -This patch fixes interaction with Libtool. -See , for details. - ---- a/gcc/fortran/gfortranspec.c -+++ b/gcc/fortran/gfortranspec.c -@@ -461,8 +461,15 @@ For more information about these matters, see the file named COPYING\n\n")); - { - fprintf (stderr, _("Driving:")); - for (i = 0; i < g77_newargc; i++) -+ { -+ if (g77_new_decoded_options[i].opt_index == OPT_l) -+ /* Make sure no white space is inserted after `-l'. */ -+ fprintf (stderr, " -l%s", -+ g77_new_decoded_options[i].canonical_option[1]); -+ else - fprintf (stderr, " %s", - g77_new_decoded_options[i].orig_option_with_args_text); -+ } - fprintf (stderr, "\n"); - } diff --git a/pkgs/development/compilers/gcc/patches/no-sys-dirs.patch b/pkgs/development/compilers/gcc/patches/no-sys-dirs.patch deleted file mode 100644 index 36df51904acf4..0000000000000 --- a/pkgs/development/compilers/gcc/patches/no-sys-dirs.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff -ru -x '*~' gcc-4.8.3-orig/gcc/cppdefault.c gcc-4.8.3/gcc/cppdefault.c ---- gcc-4.8.3-orig/gcc/cppdefault.c 2013-01-10 21:38:27.000000000 +0100 -+++ gcc-4.8.3/gcc/cppdefault.c 2014-08-18 16:20:32.893944536 +0200 -@@ -35,6 +35,8 @@ - # undef CROSS_INCLUDE_DIR - #endif - -+#undef LOCAL_INCLUDE_DIR -+ - const struct default_include cpp_include_defaults[] - #ifdef INCLUDE_DEFAULTS - = INCLUDE_DEFAULTS; -diff -ru -x '*~' gcc-4.8.3-orig/gcc/gcc.c gcc-4.8.3/gcc/gcc.c ---- gcc-4.8.3-orig/gcc/gcc.c 2014-03-23 12:30:57.000000000 +0100 -+++ gcc-4.8.3/gcc/gcc.c 2014-08-18 13:19:32.689201690 +0200 -@@ -1162,10 +1162,10 @@ - /* Default prefixes to attach to command names. */ - - #ifndef STANDARD_STARTFILE_PREFIX_1 --#define STANDARD_STARTFILE_PREFIX_1 "/lib/" -+#define STANDARD_STARTFILE_PREFIX_1 "" - #endif - #ifndef STANDARD_STARTFILE_PREFIX_2 --#define STANDARD_STARTFILE_PREFIX_2 "/usr/lib/" -+#define STANDARD_STARTFILE_PREFIX_2 "" - #endif - - #ifdef CROSS_DIRECTORY_STRUCTURE /* Don't use these prefixes for a cross compiler. */ diff --git a/pkgs/development/compilers/gcc/versions.nix b/pkgs/development/compilers/gcc/versions.nix index 5c25ad3bc215f..7c69f0484d776 100644 --- a/pkgs/development/compilers/gcc/versions.nix +++ b/pkgs/development/compilers/gcc/versions.nix @@ -4,7 +4,6 @@ let "14" = "14.3.0"; "13" = "13.4.0"; "12" = "12.4.0"; - "11" = "11.5.0"; }; fromMajorMinor = majorMinorVersion: majorMinorToVersionMap."${majorMinorVersion}"; @@ -19,7 +18,6 @@ let "14.3.0" = "sha256-4Nx3KXYlYxrI5Q+pL//v6Jmk63AlktpcMu8E4ik6yjo="; "13.4.0" = "sha256-nEzm27BAVo/cVFWIrAPFy8lajb8MeqSQFwhDr7WcqPU="; "12.4.0" = "sha256-cE9lJgTMvMsUvavzR4yVEciXiLEss7v/3tNzQZFqkXU="; - "11.5.0" = "sha256-puIYaOrVRc+H8MAfhCduS1KB1nIJhZHByJYkHwk2NHg="; } ."${version}"; diff --git a/pkgs/development/compilers/gnat-bootstrap/default.nix b/pkgs/development/compilers/gnat-bootstrap/default.nix index 7de8a33bc5cba..cca928a0f997e 100644 --- a/pkgs/development/compilers/gnat-bootstrap/default.nix +++ b/pkgs/development/compilers/gnat-bootstrap/default.nix @@ -33,23 +33,6 @@ stdenv.mkDerivation ( url = "https://github.com/alire-project/GNAT-FSF-builds/releases/download/gnat-${finalAttrs.version}/gnat-${stdenv.hostPlatform.system}-${finalAttrs.version}.tar.gz"; in { - "11" = { - gccVersion = "11.2.0"; - alireRevision = "4"; - } - // { - x86_64-darwin = { - inherit url; - hash = "sha256-FmBgD20PPQlX/ddhJliCTb/PRmKxe9z7TFPa2/SK4GY="; - upstreamTriplet = "x86_64-apple-darwin19.6.0"; - }; - x86_64-linux = { - inherit url; - hash = "sha256-8fMBJp6igH+Md5jE4LMubDmC4GLt4A+bZG/Xcz2LAJQ="; - upstreamTriplet = "x86_64-pc-linux-gnu"; - }; - } - .${stdenv.hostPlatform.system} or throwUnsupportedSystem; "12" = { gccVersion = "12.1.0"; alireRevision = "2"; diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index d4be4bed8dcb5..415050b754e1f 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -953,6 +953,8 @@ mapAliases { gcc10 = throw "gcc10 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gcc10Stdenv = throw "gcc10Stdenv has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gcc10StdenvCompat = throw "gcc10StdenvCompat has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 + gcc11 = throw "gcc11 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 + gcc11Stdenv = throw "gcc11Stdenv has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gcc-arm-embedded-6 = throw "gcc-arm-embedded-6 has been removed from Nixpkgs as it is unmaintained and obsolete"; # Added 2025-04-12 gcc-arm-embedded-7 = throw "gcc-arm-embedded-7 has been removed from Nixpkgs as it is unmaintained and obsolete"; # Added 2025-04-12 gcc-arm-embedded-8 = throw "gcc-arm-embedded-8 has been removed from Nixpkgs as it is unmaintained and obsolete"; # Added 2025-04-12 @@ -976,6 +978,7 @@ mapAliases { gfortran8 = throw "gfortran8 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2024-11-20 gfortran9 = throw "gfortran9 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gfortran10 = throw "gfortran10 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 + gfortran11 = throw "gfortran11 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gg = go-graft; # Added 2025-03-07 ggobi = throw "'ggobi' has been removed from Nixpkgs, as it is unmaintained and broken"; # Added 2025-05-18 ghostwriter = makePlasma5Throw "ghostwriter"; # Added 2023-03-18 @@ -1023,7 +1026,9 @@ mapAliases { gmailieer = throw "'gmailieer' has been renamed to/replaced by 'lieer'"; # Converted to throw 2024-10-17 gmnisrv = throw "'gmnisrv' has been removed due to lack of maintenance upstream"; # Added 2025-06-07 gmp4 = throw "'gmp4' is end-of-life, consider using 'gmp' instead"; # Added 2024-12-24 - gnatboot11 = gnat-bootstrap11; + gnat11 = throw "gnat11 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 + gnat-bootstrap11 = throw "gnat-bootstrap11 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 + gnatboot11 = throw "gnatboot11 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gnatboot12 = gnat-bootstrap12; gnatboot = gnat-bootstrap; gnatcoll-core = gnatPackages.gnatcoll-core; # Added 2024-02-25 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5a12b8786180b..77e1eaaf19bd5 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4861,7 +4861,6 @@ with pkgs; extraBuildInputs = lib.optional stdenv.hostPlatform.isDarwin clang.cc; }; - gcc11Stdenv = overrideCC gccStdenv buildPackages.gcc11; gcc12Stdenv = overrideCC gccStdenv buildPackages.gcc12; gcc13Stdenv = overrideCC gccStdenv buildPackages.gcc13; gcc14Stdenv = overrideCC gccStdenv buildPackages.gcc14; @@ -4964,7 +4963,6 @@ with pkgs; }); inherit (callPackage ../development/compilers/gcc/all.nix { inherit noSysDirs; }) - gcc11 gcc12 gcc13 gcc14 @@ -4985,34 +4983,6 @@ with pkgs; gnat = gnat13; # When changing this, update also gnatPackages - gnat11 = wrapCC ( - gcc11.cc.override { - name = "gnat"; - langC = true; - langCC = false; - langAda = true; - profiledCompiler = false; - # As per upstream instructions building a cross compiler - # should be done with a (native) compiler of the same version. - # If we are cross-compiling GNAT, we may as well do the same. - gnat-bootstrap = - if stdenv.hostPlatform == stdenv.targetPlatform && stdenv.buildPlatform == stdenv.hostPlatform then - buildPackages.gnat-bootstrap11 - else - buildPackages.gnat11; - stdenv = - if - stdenv.hostPlatform == stdenv.targetPlatform - && stdenv.buildPlatform == stdenv.hostPlatform - && stdenv.buildPlatform.isDarwin - && stdenv.buildPlatform.isx86_64 - then - overrideCC stdenv gnat-bootstrap11 - else - stdenv; - } - ); - gnat12 = wrapCC ( gcc12.cc.override { name = "gnat"; @@ -5126,9 +5096,6 @@ with pkgs; ); gnat-bootstrap = gnat-bootstrap12; - gnat-bootstrap11 = wrapCC ( - callPackage ../development/compilers/gnat-bootstrap { majorVersion = "11"; } - ); gnat-bootstrap12 = wrapCCWith ( { cc = callPackage ../development/compilers/gnat-bootstrap { majorVersion = "12"; }; @@ -5911,7 +5878,6 @@ with pkgs; libcxx extraPackages nixSupport - zlib ; } // extraArgs; From 1101f10001f83efecdbf176063940c2cd09edcc0 Mon Sep 17 00:00:00 2001 From: Emily Date: Fri, 8 Aug 2025 18:22:54 +0100 Subject: [PATCH 11/12] gnat-bootstrap: gnat-bootstrap12 -> gnat-bootstrap13 According to the comment on the `gnat` definition, this should have happened already. --- pkgs/top-level/all-packages.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 77e1eaaf19bd5..6b38fc9051c0a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5095,7 +5095,7 @@ with pkgs; } ); - gnat-bootstrap = gnat-bootstrap12; + gnat-bootstrap = gnat-bootstrap13; gnat-bootstrap12 = wrapCCWith ( { cc = callPackage ../development/compilers/gnat-bootstrap { majorVersion = "12"; }; From f3186c59589ca56c3002ace9846e838879887d24 Mon Sep 17 00:00:00 2001 From: Emily Date: Fri, 8 Aug 2025 18:22:54 +0100 Subject: [PATCH 12/12] {gcc12,gfortran12,gccgo12,gnat12,gnat-bootstrap12}: drop EOL as of July; no longer used in the tree. --- doc/release-notes/rl-2511.section.md | 2 +- pkgs/by-name/gf/gfortran12/package.nix | 10 - .../compilers/gcc/common/configure-flags.nix | 12 - pkgs/development/compilers/gcc/default.nix | 8 +- ...thread-model-support-from-mcfgthread.patch | 306 ------------------ .../12/mangle-NIX_STORE-in-__FILE__.patch | 99 ------ .../compilers/gcc/patches/default.nix | 25 -- .../gnat-darwin-dylib-install-name.patch | 19 -- .../gcc/patches/no-sys-dirs-riscv.patch | 12 - pkgs/development/compilers/gcc/versions.nix | 2 - pkgs/top-level/aliases.nix | 9 +- pkgs/top-level/all-packages.nix | 54 ---- pkgs/top-level/python-packages.nix | 2 +- 13 files changed, 11 insertions(+), 549 deletions(-) delete mode 100644 pkgs/by-name/gf/gfortran12/package.nix delete mode 100644 pkgs/development/compilers/gcc/patches/12/Added-mcf-thread-model-support-from-mcfgthread.patch delete mode 100644 pkgs/development/compilers/gcc/patches/12/mangle-NIX_STORE-in-__FILE__.patch delete mode 100644 pkgs/development/compilers/gcc/patches/gnat-darwin-dylib-install-name.patch delete mode 100644 pkgs/development/compilers/gcc/patches/no-sys-dirs-riscv.patch diff --git a/doc/release-notes/rl-2511.section.md b/doc/release-notes/rl-2511.section.md index 5285a32254be8..bf496bb33a9f9 100644 --- a/doc/release-notes/rl-2511.section.md +++ b/doc/release-notes/rl-2511.section.md @@ -20,7 +20,7 @@ - The `offrss` package was removed due to lack of upstream maintenance since 2012. It's recommended for users to migrate to another RSS reader -- GCC 9, 10, and 11 have been removed, as they have reached end‐of‐life upstream and are no longer supported. +- GCC 9, 10, 11, and 12 have been removed, as they have reached end‐of‐life upstream and are no longer supported. - `base16-builder` node package has been removed due to lack of upstream maintenance. - `gentium` package now provides `Gentium-*.ttf` files, and not `GentiumPlus-*.ttf` files like before. The font identifiers `Gentium Plus*` are available in the `gentium-plus` package, and if you want to use the more recently updated package `gentium` [by sil](https://software.sil.org/gentium/), you should update your configuration files to use the `Gentium` font identifier. diff --git a/pkgs/by-name/gf/gfortran12/package.nix b/pkgs/by-name/gf/gfortran12/package.nix deleted file mode 100644 index 95280bb8761b5..0000000000000 --- a/pkgs/by-name/gf/gfortran12/package.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ wrapCC, gcc12 }: -wrapCC ( - gcc12.cc.override { - name = "gfortran"; - langFortran = true; - langCC = false; - langC = false; - profiledCompiler = false; - } -) diff --git a/pkgs/development/compilers/gcc/common/configure-flags.nix b/pkgs/development/compilers/gcc/common/configure-flags.nix index 14f27b89caba1..88d405c3c8e75 100644 --- a/pkgs/development/compilers/gcc/common/configure-flags.nix +++ b/pkgs/development/compilers/gcc/common/configure-flags.nix @@ -285,18 +285,6 @@ let ++ lib.optionals langJit [ "--enable-host-shared" ] - # On mips64-unknown-linux-gnu libsanitizer defines collide with - # glibc's definitions and fail the build. It was fixed in gcc-13+. - ++ - lib.optionals - ( - targetPlatform.isMips - && targetPlatform.parsed.abi.name == "gnu" - && lib.versions.major version == "12" - ) - [ - "--disable-libsanitizer" - ] ++ lib.optionals targetPlatform.isAlpha [ # Workaround build failures like: # cc1: error: fp software completion requires '-mtrap-precision=i' [-Werror] diff --git a/pkgs/development/compilers/gcc/default.nix b/pkgs/development/compilers/gcc/default.nix index 6d6189ed74995..1550dd43f913a 100644 --- a/pkgs/development/compilers/gcc/default.nix +++ b/pkgs/development/compilers/gcc/default.nix @@ -79,10 +79,8 @@ let majorVersion = versions.major version; atLeast14 = versionAtLeast version "14"; - atLeast13 = versionAtLeast version "13"; is14 = majorVersion == "14"; is13 = majorVersion == "13"; - is12 = majorVersion == "12"; # releases have a form: MAJOR.MINOR.MICRO, like 14.2.1 # snapshots have a form like MAJOR.MINOR.MICRO.DATE, like 14.2.1.20250322 @@ -397,11 +395,7 @@ pipe ; isGNU = true; hardeningUnsupportedFlags = - optionals (!atLeast13) [ - "strictflexarrays1" - "strictflexarrays3" - ] - ++ optional ( + optional ( !(targetPlatform.isLinux && targetPlatform.isx86_64 && targetPlatform.libc == "glibc") ) "shadowstack" ++ optional (!(targetPlatform.isLinux && targetPlatform.isAarch64)) "pacret" diff --git a/pkgs/development/compilers/gcc/patches/12/Added-mcf-thread-model-support-from-mcfgthread.patch b/pkgs/development/compilers/gcc/patches/12/Added-mcf-thread-model-support-from-mcfgthread.patch deleted file mode 100644 index 77202438e47d8..0000000000000 --- a/pkgs/development/compilers/gcc/patches/12/Added-mcf-thread-model-support-from-mcfgthread.patch +++ /dev/null @@ -1,306 +0,0 @@ -From 86f2f767ddffd9f7c6f1470b987ae7b0d251b988 Mon Sep 17 00:00:00 2001 -From: Liu Hao -Date: Wed, 25 Apr 2018 21:54:19 +0800 -Subject: [PATCH] Added 'mcf' thread model support from mcfgthread. - -Signed-off-by: Liu Hao ---- - config/gthr.m4 | 1 + - gcc/config.gcc | 3 +++ - gcc/config/i386/mingw-mcfgthread.h | 1 + - gcc/config/i386/mingw-w64.h | 2 +- - gcc/config/i386/mingw32.h | 11 ++++++++++- - gcc/configure | 2 +- - gcc/configure.ac | 2 +- - libatomic/configure.tgt | 2 +- - libgcc/config.host | 6 ++++++ - libgcc/config/i386/gthr-mcf.h | 1 + - libgcc/config/i386/t-mingw-mcfgthread | 2 ++ - libgcc/configure | 1 + - libstdc++-v3/configure | 1 + - libstdc++-v3/libsupc++/atexit_thread.cc | 18 ++++++++++++++++++ - libstdc++-v3/libsupc++/guard.cc | 23 +++++++++++++++++++++++ - libstdc++-v3/src/c++11/thread.cc | 9 +++++++++ - 16 files changed, 80 insertions(+), 5 deletions(-) - create mode 100644 gcc/config/i386/mingw-mcfgthread.h - create mode 100644 libgcc/config/i386/gthr-mcf.h - create mode 100644 libgcc/config/i386/t-mingw-mcfgthread - -diff --git a/config/gthr.m4 b/config/gthr.m4 -index 7b29f1f3327..82e21fe1709 100644 ---- a/config/gthr.m4 -+++ b/config/gthr.m4 -@@ -21,6 +21,7 @@ case $1 in - tpf) thread_header=config/s390/gthr-tpf.h ;; - vxworks) thread_header=config/gthr-vxworks.h ;; - win32) thread_header=config/i386/gthr-win32.h ;; -+ mcf) thread_header=config/i386/gthr-mcf.h ;; - esac - AC_SUBST(thread_header) - ]) -diff --git a/gcc/config.gcc b/gcc/config.gcc -index 46a9029acec..112c24e95a3 100644 ---- a/gcc/config.gcc -+++ b/gcc/config.gcc -@@ -1758,6 +1758,9 @@ i[34567]86-*-mingw* | x86_64-*-mingw*) - if test x$enable_threads = xposix ; then - tm_file="${tm_file} i386/mingw-pthread.h" - fi -+ if test x$enable_threads = xmcf ; then -+ tm_file="${tm_file} i386/mingw-mcfgthread.h" -+ fi - tm_file="${tm_file} i386/mingw32.h" - # This makes the logic if mingw's or the w64 feature set has to be used - case ${target} in -diff --git a/gcc/config/i386/mingw-mcfgthread.h b/gcc/config/i386/mingw-mcfgthread.h -new file mode 100644 -index 00000000000..ec381a7798f ---- /dev/null -+++ b/gcc/config/i386/mingw-mcfgthread.h -@@ -0,0 +1 @@ -+#define TARGET_USE_MCFGTHREAD 1 -diff --git a/gcc/config/i386/mingw-w64.h b/gcc/config/i386/mingw-w64.h -index 484dc7a9e9f..a15bbeea500 100644 ---- a/gcc/config/i386/mingw-w64.h -+++ b/gcc/config/i386/mingw-w64.h -@@ -48,7 +48,7 @@ along with GCC; see the file COPYING3. If not see - "%{mwindows:-lgdi32 -lcomdlg32} " \ - "%{fvtable-verify=preinit:-lvtv -lpsapi; \ - fvtable-verify=std:-lvtv -lpsapi} " \ -- "-ladvapi32 -lshell32 -luser32 -lkernel32" -+ LIB_MCFGTHREAD "-ladvapi32 -lshell32 -luser32 -lkernel32" - - #undef SPEC_32 - #undef SPEC_64 -diff --git a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h -index 0612b87199a..76cea94f3b7 100644 ---- a/gcc/config/i386/mingw32.h -+++ b/gcc/config/i386/mingw32.h -@@ -32,6 +32,14 @@ along with GCC; see the file COPYING3. If not see - | MASK_STACK_PROBE | MASK_ALIGN_DOUBLE \ - | MASK_MS_BITFIELD_LAYOUT) - -+#ifndef TARGET_USE_MCFGTHREAD -+#define CPP_MCFGTHREAD() ((void)0) -+#define LIB_MCFGTHREAD "" -+#else -+#define CPP_MCFGTHREAD() (builtin_define("__USING_MCFGTHREAD__")) -+#define LIB_MCFGTHREAD " -lmcfgthread " -+#endif -+ - /* See i386/crtdll.h for an alternative definition. _INTEGRAL_MAX_BITS - is for compatibility with native compiler. */ - #define EXTRA_OS_CPP_BUILTINS() \ -@@ -50,6 +58,7 @@ along with GCC; see the file COPYING3. If not see - builtin_define_std ("WIN64"); \ - builtin_define ("_WIN64"); \ - } \ -+ CPP_MCFGTHREAD(); \ - } \ - while (0) - -@@ -93,7 +102,7 @@ along with GCC; see the file COPYING3. If not see - "%{mwindows:-lgdi32 -lcomdlg32} " \ - "%{fvtable-verify=preinit:-lvtv -lpsapi; \ - fvtable-verify=std:-lvtv -lpsapi} " \ -- "-ladvapi32 -lshell32 -luser32 -lkernel32" -+ LIB_MCFGTHREAD "-ladvapi32 -lshell32 -luser32 -lkernel32" - - /* Weak symbols do not get resolved if using a Windows dll import lib. - Make the unwind registration references strong undefs. */ -diff --git a/gcc/configure b/gcc/configure -index 6121e163259..52f0e00efe6 100755 ---- a/gcc/configure -+++ b/gcc/configure -@@ -11693,7 +11693,7 @@ case ${enable_threads} in - target_thread_file='single' - ;; - aix | dce | lynx | mipssde | posix | rtems | \ -- single | tpf | vxworks | win32) -+ single | tpf | vxworks | win32 | mcf) - target_thread_file=${enable_threads} - ;; - *) -diff --git a/gcc/configure.ac b/gcc/configure.ac -index b066cc609e1..4ecdba88de7 100644 ---- a/gcc/configure.ac -+++ b/gcc/configure.ac -@@ -1612,7 +1612,7 @@ case ${enable_threads} in - target_thread_file='single' - ;; - aix | dce | lynx | mipssde | posix | rtems | \ -- single | tpf | vxworks | win32) -+ single | tpf | vxworks | win32 | mcf) - target_thread_file=${enable_threads} - ;; - *) -diff --git a/libatomic/configure.tgt b/libatomic/configure.tgt -index ea8c34f8c71..23134ad7363 100644 ---- a/libatomic/configure.tgt -+++ b/libatomic/configure.tgt -@@ -145,7 +145,7 @@ case "${target}" in - *-*-mingw*) - # OS support for atomic primitives. - case ${target_thread_file} in -- win32) -+ win32 | mcf) - config_path="${config_path} mingw" - ;; - posix) -diff --git a/libgcc/config.host b/libgcc/config.host -index 11b4acaff55..9fbd38650bd 100644 ---- a/libgcc/config.host -+++ b/libgcc/config.host -@@ -737,6 +737,9 @@ i[34567]86-*-mingw*) - posix) - tmake_file="i386/t-mingw-pthread $tmake_file" - ;; -+ mcf) -+ tmake_file="i386/t-mingw-mcfgthread $tmake_file" -+ ;; - esac - # This has to match the logic for DWARF2_UNWIND_INFO in gcc/config/i386/cygming.h - if test x$ac_cv_sjlj_exceptions = xyes; then -@@ -761,6 +764,9 @@ x86_64-*-mingw*) - posix) - tmake_file="i386/t-mingw-pthread $tmake_file" - ;; -+ mcf) -+ tmake_file="i386/t-mingw-mcfgthread $tmake_file" -+ ;; - esac - # This has to match the logic for DWARF2_UNWIND_INFO in gcc/config/i386/cygming.h - if test x$ac_cv_sjlj_exceptions = xyes; then -diff --git a/libgcc/config/i386/gthr-mcf.h b/libgcc/config/i386/gthr-mcf.h -new file mode 100644 -index 00000000000..5ea2908361f ---- /dev/null -+++ b/libgcc/config/i386/gthr-mcf.h -@@ -0,0 +1 @@ -+#include -diff --git a/libgcc/config/i386/t-mingw-mcfgthread b/libgcc/config/i386/t-mingw-mcfgthread -new file mode 100644 -index 00000000000..4b9b10e32d6 ---- /dev/null -+++ b/libgcc/config/i386/t-mingw-mcfgthread -@@ -0,0 +1,2 @@ -+SHLIB_PTHREAD_CFLAG = -+SHLIB_PTHREAD_LDFLAG = -lmcfgthread -diff --git a/libgcc/configure b/libgcc/configure -index b2f3f870844..eff889dc3b3 100644 ---- a/libgcc/configure -+++ b/libgcc/configure -@@ -5451,6 +5451,7 @@ case $target_thread_file in - tpf) thread_header=config/s390/gthr-tpf.h ;; - vxworks) thread_header=config/gthr-vxworks.h ;; - win32) thread_header=config/i386/gthr-win32.h ;; -+ mcf) thread_header=config/i386/gthr-mcf.h ;; - esac - - -diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure -index ba094be6f15..979a5ab9ace 100755 ---- a/libstdc++-v3/configure -+++ b/libstdc++-v3/configure -@@ -15187,6 +15187,7 @@ case $target_thread_file in - tpf) thread_header=config/s390/gthr-tpf.h ;; - vxworks) thread_header=config/gthr-vxworks.h ;; - win32) thread_header=config/i386/gthr-win32.h ;; -+ mcf) thread_header=config/i386/gthr-mcf.h ;; - esac - - -diff --git a/libstdc++-v3/libsupc++/atexit_thread.cc b/libstdc++-v3/libsupc++/atexit_thread.cc -index de920d714c6..665fb74bd6b 100644 ---- a/libstdc++-v3/libsupc++/atexit_thread.cc -+++ b/libstdc++-v3/libsupc++/atexit_thread.cc -@@ -25,6 +25,22 @@ - #include - #include - #include "bits/gthr.h" -+ -+#ifdef __USING_MCFGTHREAD__ -+ -+#include -+namespace __cxxabiv1 { -+extern "C" int -+__cxa_thread_atexit (void (_GLIBCXX_CDTOR_CALLABI *dtor)(void *), -+ void *obj, void *dso_handle) -+ _GLIBCXX_NOTHROW -+{ -+ return ::_MCFCRT_AtThreadExit((void (*)(_MCFCRT_STD intptr_t))dtor, (_MCFCRT_STD intptr_t)obj) ? 0 : -1; -+ (void)dso_handle; -+} -+} -+#else // __USING_MCFGTHREAD__ -+ - #ifdef _GLIBCXX_THREAD_ATEXIT_WIN32 - #define WIN32_LEAN_AND_MEAN - #include -@@ -167,3 +183,5 @@ __cxxabiv1::__cxa_thread_atexit (void (*dtor)(void *), void *obj, void */*dso_ha - } - - #endif /* _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ -+ -+#endif // __USING_MCFGTHREAD__ -diff --git a/libstdc++-v3/libsupc++/guard.cc b/libstdc++-v3/libsupc++/guard.cc -index 3a2ec3ad0d6..8b4cc96199b 100644 ---- a/libstdc++-v3/libsupc++/guard.cc -+++ b/libstdc++-v3/libsupc++/guard.cc -@@ -28,6 +28,27 @@ - #include - #include - #include -+ -+#ifdef __USING_MCFGTHREAD__ -+ -+#include -+ -+namespace __cxxabiv1 { -+ -+extern "C" int __cxa_guard_acquire(__guard *g){ -+ return ::_MCFCRT_WaitForOnceFlagForever((::_MCFCRT_OnceFlag *)g) == ::_MCFCRT_kOnceResultInitial; -+} -+extern "C" void __cxa_guard_abort(__guard *g) throw() { -+ ::_MCFCRT_SignalOnceFlagAsAborted((::_MCFCRT_OnceFlag *)g); -+} -+extern "C" void __cxa_guard_release(__guard *g) throw() { -+ ::_MCFCRT_SignalOnceFlagAsFinished((::_MCFCRT_OnceFlag *)g); -+} -+ -+} -+ -+#else // __USING_MCFGTHREAD__ -+ - #include - #include - #include -@@ -425,3 +446,5 @@ namespace __cxxabiv1 - #endif - } - } -+ -+#endif -diff --git a/libstdc++-v3/src/c++11/thread.cc b/libstdc++-v3/src/c++11/thread.cc -index 8238817c2e9..0c6a1f85f6f 100644 ---- a/libstdc++-v3/src/c++11/thread.cc -+++ b/libstdc++-v3/src/c++11/thread.cc -@@ -55,6 +55,15 @@ static inline int get_nprocs() - #elif defined(_GLIBCXX_USE_SC_NPROC_ONLN) - # include - # define _GLIBCXX_NPROCS sysconf(_SC_NPROC_ONLN) -+#elif defined(_WIN32) -+# include -+static inline int get_nprocs() -+{ -+ SYSTEM_INFO sysinfo; -+ GetSystemInfo(&sysinfo); -+ return (int)sysinfo.dwNumberOfProcessors; -+} -+# define _GLIBCXX_NPROCS get_nprocs() - #else - # define _GLIBCXX_NPROCS 0 - #endif --- -2.17.0 - diff --git a/pkgs/development/compilers/gcc/patches/12/mangle-NIX_STORE-in-__FILE__.patch b/pkgs/development/compilers/gcc/patches/12/mangle-NIX_STORE-in-__FILE__.patch deleted file mode 100644 index 8a09af2183f1f..0000000000000 --- a/pkgs/development/compilers/gcc/patches/12/mangle-NIX_STORE-in-__FILE__.patch +++ /dev/null @@ -1,99 +0,0 @@ -From 30908556fece379ffd7c0da96c774d8bd297e459 Mon Sep 17 00:00:00 2001 -From: Sergei Trofimovich -Date: Fri, 22 Sep 2023 22:41:49 +0100 -Subject: [PATCH] gcc/file-prefix-map.cc: always mangle __FILE__ into invalid - store path - -Without the change `__FILE__` used in static inline functions in headers -embed paths to header files into executable images. For local headers -it's not a problem, but for headers in `/nix/store` this causes `-dev` -inputs to be retained in runtime closure. - -Typical examples are `nix` -> `nlohmann_json` and `pipewire` -> -`lttng-ust.dev`. - -For this reason we want to remove the occurrences of hashes in the -expansion of `__FILE__`. `nuke-references` does it by replacing hashes -by `eeeeee...`. It is handy to be able to invert the transformation to -go back to the original store path. The chosen solution is to make the -hash uppercase: -- it does not trigger runtime references (except for all digit hashes, - which are unlikely enough) -- it visually looks like a bogus store path -- it is easy to find the original store path if required - -Ideally we would like to use `-fmacro-prefix-map=` feature of `gcc` as: - - -fmacro-prefix-map=/nix/store/$hash1-nlohmann-json-ver=/nix/store/$HASH1-nlohmann-json-ver - -fmacro-prefix-map=/nix/... - -In practice it quickly exhausts argument length limit due to `gcc` -deficiency: https://gcc.gnu.org/PR111527 - -Until it's fixed let's hardcode header mangling if $NIX_STORE variable -is present in the environment. - -Tested as: - - $ printf "# 0 \"/nix/store/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-pppppp-vvvvvvv\" \nconst char * f(void) { return __FILE__; }" | NIX_STORE=/nix/store ./gcc/xgcc -Bgcc -x c - -S -o - - ... - .string "/nix/store/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA-pppppp-vvvvvvv" - ... - -Mangled successfully. - -To reverse the effect of the mangle use new `NIX_GCC_DONT_MANGLE_PREFIX_MAP` -environment variable. It should not normally be needed. ---- a/gcc/file-prefix-map.cc -+++ b/gcc/file-prefix-map.cc -@@ -65,7 +65,7 @@ add_prefix_map (file_prefix_map *&maps, const char *arg, const char *opt) - remapping was performed. */ - - static const char * --remap_filename (file_prefix_map *maps, const char *filename) -+remap_filename (file_prefix_map *maps, const char *filename, bool mangle_nix_store = false) - { - file_prefix_map *map; - char *s; -@@ -76,7 +76,31 @@ remap_filename (file_prefix_map *maps, const char *filename) - if (filename_ncmp (filename, map->old_prefix, map->old_len) == 0) - break; - if (!map) -- return filename; -+ { -+ if (mangle_nix_store && getenv("NIX_GCC_DONT_MANGLE_PREFIX_MAP") == NULL) -+ { -+ /* Remap the 32 characters after $NIX_STORE/ to uppercase -+ * -+ * That way we avoid argument parameters explosion -+ * and still avoid embedding headers into runtime closure: -+ * https://gcc.gnu.org/PR111527 -+ */ -+ char * nix_store = getenv("NIX_STORE"); -+ size_t nix_store_len = nix_store ? strlen(nix_store) : 0; -+ const char * name = filename; -+ size_t name_len = strlen(name); -+ if (nix_store && name_len >= nix_store_len + 1 + 32 && memcmp(name, nix_store, nix_store_len) == 0) -+ { -+ s = (char *) ggc_alloc_atomic (name_len + 1); -+ memcpy(s, name, name_len + 1); -+ for (size_t i = nix_store_len + 1; i < nix_store_len + 1 + 32; i++) { -+ s[i] = TOUPPER(s[i]); -+ } -+ return s; -+ } -+ } -+ return filename; -+ } - name = filename + map->old_len; - name_len = strlen (name) + 1; - -@@ -129,7 +153,7 @@ add_profile_prefix_map (const char *arg) - const char * - remap_macro_filename (const char *filename) - { -- return remap_filename (macro_prefix_maps, filename); -+ return remap_filename (macro_prefix_maps, filename, true); - } - - /* Remap using -fdebug-prefix-map. Return the GC-allocated new name diff --git a/pkgs/development/compilers/gcc/patches/default.nix b/pkgs/development/compilers/gcc/patches/default.nix index ae5080f9f6b0b..9e6f94b121dce 100644 --- a/pkgs/development/compilers/gcc/patches/default.nix +++ b/pkgs/development/compilers/gcc/patches/default.nix @@ -28,11 +28,9 @@ let atLeast15 = lib.versionAtLeast version "15"; atLeast14 = lib.versionAtLeast version "14"; - atLeast13 = lib.versionAtLeast version "13"; is15 = majorVersion == "15"; is14 = majorVersion == "14"; is13 = majorVersion == "13"; - is12 = majorVersion == "12"; # We only apply these patches when building a native toolchain for # aarch64-darwin, as it breaks building a foreign one: @@ -78,10 +76,6 @@ in ./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 - ]; } ."${majorVersion}" or [ ] ) @@ -186,7 +180,6 @@ in "15" = [ ../patches/14/gnat-darwin-dylib-install-name-14.patch ]; "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 [ ] ) @@ -223,24 +216,6 @@ in hash = "sha256-xqkBDFYZ6fdowtqR3kV7bR8a4Cu11RDokSzGn1k3a1w="; }) ]; - # Patches from https://github.com/iains/gcc-12-branch/compare/2bada4bc59bed4be34fab463bdb3c3ebfd2b41bb..gcc-12-4-darwin - "12" = [ - (fetchurl { - name = "gcc-12-darwin-aarch64-support.patch"; - url = "https://raw.githubusercontent.com/Homebrew/formula-patches/1ed9eaea059f1677d27382c62f21462b476b37fe/gcc/gcc-12.4.0.diff"; - sha256 = "sha256-wOjpT79lps4TKG5/E761odhLGCphBIkCbOPiQg/D1Fw="; - }) - # Needed to build LLVM>18 - ./cfi_startproc-reorder-label-2.diff - ]; } .${majorVersion} or [ ] ) - -## Windows - -# Backported mcf thread model support from gcc13: -# https://github.com/gcc-mirror/gcc/commit/f036d759ecee538555fa8c6b11963e4033732463 -++ optional ( - !atLeast13 && !withoutTargetLibc && targetPlatform.isMinGW && threadsCross.model == "mcf" -) (./. + "/${majorVersion}/Added-mcf-thread-model-support-from-mcfgthread.patch") diff --git a/pkgs/development/compilers/gcc/patches/gnat-darwin-dylib-install-name.patch b/pkgs/development/compilers/gcc/patches/gnat-darwin-dylib-install-name.patch deleted file mode 100644 index 01e5de86a4383..0000000000000 --- a/pkgs/development/compilers/gcc/patches/gnat-darwin-dylib-install-name.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- a/gcc/ada/gcc-interface/Makefile.in 2022-08-19 18:09:52.000000000 +1000 -+++ b/gcc/ada/gcc-interface/Makefile.in 2023-01-11 01:54:06.000000000 +1100 -@@ -795,14 +795,14 @@ - -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) \ - $(MISCLIB) - cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \ - | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -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) \ - $(THREADSLIB) -Wl,libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) - cd $(RTSDIR); $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ - libgnat$(soext) diff --git a/pkgs/development/compilers/gcc/patches/no-sys-dirs-riscv.patch b/pkgs/development/compilers/gcc/patches/no-sys-dirs-riscv.patch deleted file mode 100644 index 00e2838af6fd4..0000000000000 --- a/pkgs/development/compilers/gcc/patches/no-sys-dirs-riscv.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- a/gcc/config/riscv/linux.h -+++ b/gcc/config/riscv/linux.h -@@ -69,8 +69,4 @@ - - #define TARGET_ASM_FILE_END file_end_indicate_exec_stack - --#define STARTFILE_PREFIX_SPEC \ -- "/lib" XLEN_SPEC "/" ABI_SPEC "/ " \ -- "/usr/lib" XLEN_SPEC "/" ABI_SPEC "/ " \ -- "/lib/ " \ -- "/usr/lib/ " -+#define STARTFILE_PREFIX_SPEC "" diff --git a/pkgs/development/compilers/gcc/versions.nix b/pkgs/development/compilers/gcc/versions.nix index 7c69f0484d776..521d129bbb375 100644 --- a/pkgs/development/compilers/gcc/versions.nix +++ b/pkgs/development/compilers/gcc/versions.nix @@ -3,7 +3,6 @@ let "15" = "15.2.0"; "14" = "14.3.0"; "13" = "13.4.0"; - "12" = "12.4.0"; }; fromMajorMinor = majorMinorVersion: majorMinorToVersionMap."${majorMinorVersion}"; @@ -17,7 +16,6 @@ let "15.2.0" = "sha256-Q4/ZloJrDIJIWinaA6ctcdbjVBqD7HAt9Ccfb+Al0k4="; "14.3.0" = "sha256-4Nx3KXYlYxrI5Q+pL//v6Jmk63AlktpcMu8E4ik6yjo="; "13.4.0" = "sha256-nEzm27BAVo/cVFWIrAPFy8lajb8MeqSQFwhDr7WcqPU="; - "12.4.0" = "sha256-cE9lJgTMvMsUvavzR4yVEciXiLEss7v/3tNzQZFqkXU="; } ."${version}"; diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 415050b754e1f..f86b74337d906 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -955,6 +955,8 @@ mapAliases { gcc10StdenvCompat = throw "gcc10StdenvCompat has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gcc11 = throw "gcc11 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gcc11Stdenv = throw "gcc11Stdenv has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 + gcc12 = throw "gcc12 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 + gcc12Stdenv = throw "gcc12Stdenv has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gcc-arm-embedded-6 = throw "gcc-arm-embedded-6 has been removed from Nixpkgs as it is unmaintained and obsolete"; # Added 2025-04-12 gcc-arm-embedded-7 = throw "gcc-arm-embedded-7 has been removed from Nixpkgs as it is unmaintained and obsolete"; # Added 2025-04-12 gcc-arm-embedded-8 = throw "gcc-arm-embedded-8 has been removed from Nixpkgs as it is unmaintained and obsolete"; # Added 2025-04-12 @@ -962,6 +964,7 @@ mapAliases { gcc-arm-embedded-10 = throw "gcc-arm-embedded-10 has been removed from Nixpkgs as it is unmaintained and obsolete"; # Added 2025-04-12 gcc-arm-embedded-11 = throw "gcc-arm-embedded-11 has been removed from Nixpkgs as it is unmaintained and obsolete"; # Added 2025-04-12 gcc-arm-embedded-12 = throw "gcc-arm-embedded-12 has been removed from Nixpkgs as it is unmaintained and obsolete"; # Added 2025-04-12 + gccgo12 = throw "gccgo12 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gcj = gcj6; # Added 2024-09-13 gcj6 = throw "gcj6 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2024-09-13 gcolor2 = throw "'gcolor2' has been removed due to lack of maintenance upstream and depending on gtk2. Consider using 'gcolor3' or 'eyedropper' instead"; # Added 2024-09-15 @@ -979,6 +982,7 @@ mapAliases { gfortran9 = throw "gfortran9 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gfortran10 = throw "gfortran10 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gfortran11 = throw "gfortran11 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 + gfortran12 = throw "gfortran12 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gg = go-graft; # Added 2025-03-07 ggobi = throw "'ggobi' has been removed from Nixpkgs, as it is unmaintained and broken"; # Added 2025-05-18 ghostwriter = makePlasma5Throw "ghostwriter"; # Added 2023-03-18 @@ -1029,7 +1033,10 @@ mapAliases { gnat11 = throw "gnat11 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gnat-bootstrap11 = throw "gnat-bootstrap11 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gnatboot11 = throw "gnatboot11 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 - gnatboot12 = gnat-bootstrap12; + gnat12 = throw "gnat12 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 + gnat-bootstrap12 = throw "gnat-bootstrap12 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 + gnatboot12 = throw "gnatboot12 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 + gnat12Packages = throw "gnat12Packages has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gnatboot = gnat-bootstrap; gnatcoll-core = gnatPackages.gnatcoll-core; # Added 2024-02-25 gnatcoll-gmp = gnatPackages.gnatcoll-gmp; # Added 2024-02-25 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6b38fc9051c0a..34809a6c4df25 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4861,7 +4861,6 @@ with pkgs; extraBuildInputs = lib.optional stdenv.hostPlatform.isDarwin clang.cc; }; - gcc12Stdenv = overrideCC gccStdenv buildPackages.gcc12; gcc13Stdenv = overrideCC gccStdenv buildPackages.gcc13; gcc14Stdenv = overrideCC gccStdenv buildPackages.gcc14; gcc15Stdenv = overrideCC gccStdenv buildPackages.gcc15; @@ -4963,7 +4962,6 @@ with pkgs; }); inherit (callPackage ../development/compilers/gcc/all.nix { inherit noSysDirs; }) - gcc12 gcc13 gcc14 gcc15 @@ -4983,34 +4981,6 @@ with pkgs; gnat = gnat13; # When changing this, update also gnatPackages - gnat12 = wrapCC ( - gcc12.cc.override { - name = "gnat"; - langC = true; - langCC = false; - langAda = true; - profiledCompiler = false; - # As per upstream instructions building a cross compiler - # should be done with a (native) compiler of the same version. - # If we are cross-compiling GNAT, we may as well do the same. - gnat-bootstrap = - if stdenv.hostPlatform == stdenv.targetPlatform && stdenv.buildPlatform == stdenv.hostPlatform then - buildPackages.gnat-bootstrap12 - else - buildPackages.gnat12; - stdenv = - if - stdenv.hostPlatform == stdenv.targetPlatform - && stdenv.buildPlatform == stdenv.hostPlatform - && stdenv.buildPlatform.isDarwin - && stdenv.buildPlatform.isx86_64 - then - overrideCC stdenv gnat-bootstrap12 - else - stdenv; - } - ); - gnat13 = wrapCC ( gcc13.cc.override { name = "gnat"; @@ -5096,14 +5066,6 @@ with pkgs; ); gnat-bootstrap = gnat-bootstrap13; - gnat-bootstrap12 = wrapCCWith ( - { - cc = callPackage ../development/compilers/gnat-bootstrap { majorVersion = "12"; }; - } - // lib.optionalAttrs (stdenv.hostPlatform.isDarwin) { - bintools = bintoolsDualAs; - } - ); gnat-bootstrap13 = wrapCCWith ( { cc = callPackage ../development/compilers/gnat-bootstrap { majorVersion = "13"; }; @@ -5121,7 +5083,6 @@ with pkgs; } ); - gnat12Packages = recurseIntoAttrs (callPackage ./ada-packages.nix { gnat = buildPackages.gnat12; }); gnat13Packages = recurseIntoAttrs (callPackage ./ada-packages.nix { gnat = buildPackages.gnat13; }); gnat14Packages = recurseIntoAttrs (callPackage ./ada-packages.nix { gnat = buildPackages.gnat14; }); gnat15Packages = recurseIntoAttrs (callPackage ./ada-packages.nix { gnat = buildPackages.gnat15; }); @@ -5147,21 +5108,6 @@ with pkgs; } ); - gccgo12 = wrapCC ( - gcc12.cc.override { - name = "gccgo"; - langCC = true; # required for go. - langC = true; - langGo = true; - langJit = true; - profiledCompiler = false; - } - // { - # not supported on darwin: https://github.com/golang/go/issues/463 - meta.broken = stdenv.hostPlatform.isDarwin; - } - ); - gccgo13 = wrapCC ( gcc13.cc.override { name = "gccgo"; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 21ac86e4658ec..9b3932b29f6b9 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -17943,7 +17943,7 @@ self: super: with self; { # # We use the nixpkgs' default libstdc++ to stay compatible with other # python modules - stdenv = pkgs.stdenvAdapters.useLibsFrom stdenv pkgs.gcc12Stdenv; + #stdenv = pkgs.stdenvAdapters.useLibsFrom stdenv pkgs.gcc12Stdenv; }; tensorflow-datasets = callPackage ../development/python-modules/tensorflow-datasets { };