From 8d2a93149d9f05fabcc0f6cbd7cf1499e9076837 Mon Sep 17 00:00:00 2001 From: Victor Fuentes Date: Sun, 21 Sep 2025 16:29:36 -0700 Subject: [PATCH] refactor: fix cross compiling packages --- .../versions/5.2.15-stage1-passthrough.nix | 12 +- .../bash/versions/5.2.15-stage1.nix | 46 ++-- .../versions/2.41-stage1-passthrough.nix | 18 +- .../binutils/versions/2.41-stage1.nix | 81 +++---- .../versions/3.8.2-stage1-passthrough.nix | 16 +- .../bison/versions/3.8.2-stage1.nix | 65 ++++-- .../versions/1.0.8-stage1-passthrough.nix | 12 +- .../bzip2/versions/1.0.8-stage1.nix | 43 ++-- .../versions/9.4-stage1-passthrough.nix | 12 +- .../coreutils/versions/9.4-stage1.nix | 9 +- .../versions/3.10-stage1-passthrough.nix | 12 +- .../diffutils/versions/3.10-stage1.nix | 11 +- .../versions/4.9.0-stage1-passthrough.nix | 12 +- .../findutils/versions/4.9.0-stage1.nix | 11 +- .../versions/5.2.2-stage1-passthrough.nix | 12 +- .../foundation/gawk/versions/5.2.2-stage1.nix | 11 +- .../src/packages/foundation/gcc/default.nix | 13 +- ....2.0-stage5.nix => 13.2.0-passthrough.nix} | 12 ++ .../foundation/gcc/versions/13.2.0-stage0.nix | 201 ------------------ .../foundation/gcc/versions/13.2.0-stage1.nix | 5 +- .../foundation/gcc/versions/13.2.0-stage2.nix | 15 +- .../foundation/gcc/versions/13.2.0-stage3.nix | 29 +-- .../foundation/gcc/versions/13.2.0-stage4.nix | 78 ++++--- .../versions/2.38-stage1-passthrough.nix | 12 +- .../foundation/glibc/versions/2.38-stage1.nix | 64 +++++- .../versions/3.11-stage1-passthrough.nix | 12 +- .../gnugrep/versions/3.11-stage1.nix | 11 +- .../versions/1.4.19-stage1-passthrough.nix | 14 +- .../gnum4/versions/1.4.19-stage1.nix | 64 ++++-- .../versions/4.4.1-stage1-passthrough.nix | 12 +- .../gnumake/versions/4.4.1-stage1.nix | 11 +- .../versions/2.7-stage1-passthrough.nix | 12 +- .../gnupatch/versions/2.7-stage1.nix | 11 +- .../versions/4.9-stage1-passthrough.nix | 12 +- .../foundation/gnused/versions/4.9-stage1.nix | 11 +- .../versions/1.35-stage1-passthrough.nix | 12 +- .../gnutar/versions/1.35-stage1.nix | 11 +- .../gzip/versions/1.13-stage1-passthrough.nix | 12 +- .../foundation/gzip/versions/1.13-stage1.nix | 14 +- .../versions/6.5.6-stage1-passthrough.nix | 14 +- .../linux-headers/versions/6.5.6-stage1.nix | 15 +- .../src/packages/foundation/musl/default.nix | 4 +- .../versions/1.2.4-stage1-passthrough.nix | 52 +++++ .../foundation/musl/versions/1.2.4-stage1.nix | 144 +++++++++++++ .../foundation/musl/versions/1.2.4.nix | 99 --------- .../python/versions/3.12.0-stage1.nix | 101 ++++++--- .../xz/versions/5.4.3-stage1-passthrough.nix | 12 +- .../foundation/xz/versions/5.4.3-stage1.nix | 11 +- .../zlib/versions/1.3-bootstrap.nix | 8 + .../foundation/zlib/versions/1.3-stage1.nix | 63 +++++- 50 files changed, 951 insertions(+), 603 deletions(-) rename tidepool/src/packages/foundation/gcc/versions/{13.2.0-stage5.nix => 13.2.0-passthrough.nix} (84%) delete mode 100644 tidepool/src/packages/foundation/gcc/versions/13.2.0-stage0.nix create mode 100644 tidepool/src/packages/foundation/musl/versions/1.2.4-stage1-passthrough.nix create mode 100644 tidepool/src/packages/foundation/musl/versions/1.2.4-stage1.nix delete mode 100644 tidepool/src/packages/foundation/musl/versions/1.2.4.nix diff --git a/tidepool/src/packages/foundation/bash/versions/5.2.15-stage1-passthrough.nix b/tidepool/src/packages/foundation/bash/versions/5.2.15-stage1-passthrough.nix index 0d58cef..8311725 100644 --- a/tidepool/src/packages/foundation/bash/versions/5.2.15-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/bash/versions/5.2.15-stage1-passthrough.nix @@ -10,7 +10,12 @@ let package = packages.foundation.bash.versions."5.2.15-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + if config.platform.build != config.platform.target then + config.platform.build + else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then + "i686-linux" + else + "x86_64-linux" ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; @@ -26,7 +31,10 @@ in main = "/bin/bash"; }; - platforms.build = "@linux"; + platforms = { + build = "@linux"; + host = "@linux"; + }; builder = builders.foundation.passthrough.extend { settings = { diff --git a/tidepool/src/packages/foundation/bash/versions/5.2.15-stage1.nix b/tidepool/src/packages/foundation/bash/versions/5.2.15-stage1.nix index c08eaa5..348117f 100644 --- a/tidepool/src/packages/foundation/bash/versions/5.2.15-stage1.nix +++ b/tidepool/src/packages/foundation/bash/versions/5.2.15-stage1.nix @@ -26,6 +26,9 @@ in }; platforms = [ + { + build = "i686-linux"; + } { build = "i686-linux"; host = "x86_64-linux"; @@ -57,6 +60,8 @@ in gzip = packages.foundation.gzip.versions."1.13-bootstrap"; diffutils = packages.foundation.diffutils.versions."3.10-bootstrap"; findutils = packages.foundation.findutils.versions."4.9.0-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; } else { @@ -69,18 +74,15 @@ in gzip = packages.foundation.gzip.versions."1.13-stage1-passthrough"; diffutils = packages.foundation.diffutils.versions."3.10-stage1-passthrough"; findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; }; - host = { + + host = lib.attrs.when (config.platform.build != config.platform.host) { gcc = packages.foundation.gcc.versions."13.2.0-stage2"; binutils = packages.foundation.binutils.versions."2.41-stage1"; }; }; - - host = { - host = { - coreutils = packages.foundation.coreutils.versions."9.4-stage1"; - }; - }; }; phases = { @@ -90,15 +92,26 @@ in cd bash-${version} ''; - configure = '' - # Configure - bash ./configure \ - --prefix=$out \ - --build=${platform.build.triple} \ - --host=${platform.host.triple} \ - --enable-static-link \ - bash_cv_func_strtoimax=y \ - ''; + configure = + let + flags = builtins.concatStringsSep " " ( + [ + "--prefix=$out" + "--build=${platform.build.triple}" + "--host=${platform.host.triple}" + "--enable-static-link" + ] + ++ lib.lists.when (config.platform.host == "i686-linux") [ + "--without-bash-malloc" + ] + ); + in + '' + # Configure + bash ./configure \ + ${flags} \ + bash_cv_func_strtoimax=y + ''; build = '' # Build @@ -113,6 +126,5 @@ in ln -s $out/bin/bash $out/bin/sh ''; }; - }; } diff --git a/tidepool/src/packages/foundation/binutils/versions/2.41-stage1-passthrough.nix b/tidepool/src/packages/foundation/binutils/versions/2.41-stage1-passthrough.nix index 71bf739..2c38f20 100644 --- a/tidepool/src/packages/foundation/binutils/versions/2.41-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/binutils/versions/2.41-stage1-passthrough.nix @@ -10,7 +10,12 @@ let package = packages.foundation.binutils.versions."2.41-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + if config.platform.build != config.platform.target then + config.platform.build + else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then + "i686-linux" + else + "x86_64-linux" ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; @@ -25,7 +30,16 @@ in license = lib.licenses.gpl3Plus; }; - platforms.build = "@linux"; + platforms = [ + { + build = "@linux"; + host = "@linux"; + } + { + build = "@linux"; + target = "@linux"; + } + ]; builder = builders.foundation.passthrough.extend { settings = { diff --git a/tidepool/src/packages/foundation/binutils/versions/2.41-stage1.nix b/tidepool/src/packages/foundation/binutils/versions/2.41-stage1.nix index cd439fc..892c056 100644 --- a/tidepool/src/packages/foundation/binutils/versions/2.41-stage1.nix +++ b/tidepool/src/packages/foundation/binutils/versions/2.41-stage1.nix @@ -14,47 +14,35 @@ let target = lib.systems.withBuildInfo config.platform.target; }; - isBuildBootstrapped = platform.build.double == "i686-linux"; - isHostBootstrapped = platform.host.double == "i686-linux"; - - isBootstrapped = isBuildBootstrapped && isHostBootstrapped; - - isCross = - platform.build.double != platform.host.double && platform.host.double == platform.target.double; - version = lib.strings.removeSuffix "-stage1" config.version; patches = [ ../patches/2.41-deterministic.patch ]; - configureFlags = - lib.lists.when (!isCross) [ - "LDFLAGS=--static" - ] - ++ [ - "--prefix=${builtins.placeholder "out"}" - "--build=${platform.build.triple}" - "--host=${platform.host.triple}" - "--target=${platform.target.triple}" + configureFlags = [ + "--prefix=${builtins.placeholder "out"}" + "--build=${platform.build.triple}" + "--host=${platform.host.triple}" + "--target=${platform.target.triple}" - "--with-sysroot=/" - "--enable-deterministic-archives" - # depends on bison - "--disable-gprofng" + "--with-sysroot=/" + "--enable-deterministic-archives" + # depends on bison + "--disable-gprofng" - # Turn on --enable-new-dtags by default to make the linker set - # RUNPATH instead of RPATH on binaries. This is important because - # RUNPATH can be overridden using LD_LIBRARY_PATH at runtime. - "--enable-new-dtags" + # Turn on --enable-new-dtags by default to make the linker set + # RUNPATH instead of RPATH on binaries. This is important because + # RUNPATH can be overridden using LD_LIBRARY_PATH at runtime. + "--enable-new-dtags" - # By default binutils searches $libdir for libraries. This brings in - # libbfd and libopcodes into a default visibility. Drop default lib - # path to force users to declare their use of these libraries. - "--with-lib-path=:" + # By default binutils searches $libdir for libraries. This brings in + # libbfd and libopcodes into a default visibility. Drop default lib + # path to force users to declare their use of these libraries. + "--with-lib-path=:" - "--disable-multilib" - ]; + "--disable-multilib" + ]; in { config = { @@ -66,13 +54,17 @@ in platforms = [ { - build = "@linux"; - target = "@linux"; + build = "i686-linux"; + target = "x86_64-linux"; } { - build = "@linux"; + build = "x86_64-linux"; host = "@linux"; } + { + build = "x86_64-linux"; + target = "@linux"; + } ]; builder = builders.foundation.basic; @@ -98,6 +90,7 @@ in gzip = packages.foundation.gzip.versions."1.13-bootstrap"; bzip2 = packages.foundation.bzip2.versions."1.0.8-bootstrap"; xz = packages.foundation.xz.versions."5.4.3-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; binutils = packages.foundation.binutils.versions."2.41-bootstrap"; } else @@ -113,25 +106,13 @@ in gzip = packages.foundation.gzip.versions."1.13-stage1-passthrough"; bzip2 = packages.foundation.bzip2.versions."1.0.8-stage1-passthrough"; xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; }; - host = { - gcc = - if isBootstrapped then - packages.foundation.gcc.versions."13.2.0-bootstrap" - else if isCross then - packages.foundation.gcc.versions."13.2.0-stage2" - else - packages.foundation.gcc.versions."13.2.0-stage4"; - - binutils = - if isBootstrapped then - packages.foundation.binutils.versions."2.41-bootstrap" - else if isCross then - packages.foundation.binutils.versions."2.41-stage1" - else - packages.foundation.binutils.versions."2.41-stage1-passthrough"; + host = lib.attrs.when (config.platform.build != config.platform.host) { + gcc = packages.foundation.gcc.versions."13.2.0-stage2"; + binutils = packages.foundation.binutils.versions."2.41-stage1"; }; }; }; diff --git a/tidepool/src/packages/foundation/bison/versions/3.8.2-stage1-passthrough.nix b/tidepool/src/packages/foundation/bison/versions/3.8.2-stage1-passthrough.nix index c223d46..03aea30 100644 --- a/tidepool/src/packages/foundation/bison/versions/3.8.2-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/bison/versions/3.8.2-stage1-passthrough.nix @@ -9,7 +9,14 @@ let package = packages.foundation.bison.versions."3.8.2-stage1".extend { platform = { - build = lib.modules.overrides.force "i686-linux"; + build = lib.modules.overrides.force ( + if config.platform.build != config.platform.target then + config.platform.build + else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then + "i686-linux" + else + "x86_64-linux" + ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; }; @@ -23,12 +30,17 @@ in license = lib.licenses.gpl3Plus; }; - platforms.build = "x86_64-linux"; + platforms = { + build = "@linux"; + host = "@linux"; + }; builder = builders.foundation.passthrough.extend { settings = { derivation = package.package; }; }; + + hooks = package.hooks; }; } diff --git a/tidepool/src/packages/foundation/bison/versions/3.8.2-stage1.nix b/tidepool/src/packages/foundation/bison/versions/3.8.2-stage1.nix index 736385c..966b470 100644 --- a/tidepool/src/packages/foundation/bison/versions/3.8.2-stage1.nix +++ b/tidepool/src/packages/foundation/bison/versions/3.8.2-stage1.nix @@ -24,10 +24,19 @@ in license = lib.licenses.gpl3Plus; }; - platforms = { - build = "i686-linux"; - host = "x86_64-linux"; - }; + platforms = [ + { + build = "i686-linux"; + } + { + build = "i686-linux"; + host = "x86_64-linux"; + } + { + build = "x86_64-linux"; + host = "@linux"; + } + ]; builder = builders.foundation.basic; @@ -38,29 +47,41 @@ in deps = { build = { - build = { - gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; - gnused = packages.foundation.gnused.versions."4.9-bootstrap"; - gnugrep = packages.foundation.gnugrep.versions."3.11-bootstrap"; - gawk = packages.foundation.gawk.versions."5.2.2-bootstrap"; - diffutils = packages.foundation.diffutils.versions."3.10-bootstrap"; - findutils = packages.foundation.findutils.versions."4.9.0-bootstrap"; - gnutar = packages.foundation.gnutar.versions."1.35-bootstrap"; - xz = packages.foundation.xz.versions."5.4.3-bootstrap"; - gnum4 = packages.foundation.gnum4.versions."1.4.19-bootstrap"; - }; + build = + if (config.platform.build == "i686-linux") then + { + gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; + gnused = packages.foundation.gnused.versions."4.9-bootstrap"; + gnugrep = packages.foundation.gnugrep.versions."3.11-bootstrap"; + gawk = packages.foundation.gawk.versions."5.2.2-bootstrap"; + diffutils = packages.foundation.diffutils.versions."3.10-bootstrap"; + findutils = packages.foundation.findutils.versions."4.9.0-bootstrap"; + gnutar = packages.foundation.gnutar.versions."1.35-bootstrap"; + xz = packages.foundation.xz.versions."5.4.3-bootstrap"; + gnum4 = packages.foundation.gnum4.versions."1.4.19-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; + } + else + { + gnumake = packages.foundation.gnumake.versions."4.4.1-stage1-passthrough"; + gnused = packages.foundation.gnused.versions."4.9-stage1-passthrough"; + gnugrep = packages.foundation.gnugrep.versions."3.11-stage1-passthrough"; + gawk = packages.foundation.gawk.versions."5.2.2-stage1-passthrough"; + diffutils = packages.foundation.diffutils.versions."3.10-stage1-passthrough"; + findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; + gnutar = packages.foundation.gnutar.versions."1.35-stage1-passthrough"; + xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; + gnum4 = packages.foundation.gnum4.versions."1.4.19-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; + }; - host = { + host = lib.attrs.when (config.platform.build != config.platform.host) { gcc = packages.foundation.gcc.versions."13.2.0-stage2"; binutils = packages.foundation.binutils.versions."2.41-stage1"; }; }; - - host = { - host = { - glibc = packages.foundation.glibc.versions."2.38-stage1"; - }; - }; }; phases = { diff --git a/tidepool/src/packages/foundation/bzip2/versions/1.0.8-stage1-passthrough.nix b/tidepool/src/packages/foundation/bzip2/versions/1.0.8-stage1-passthrough.nix index b6b1fda..970c19c 100644 --- a/tidepool/src/packages/foundation/bzip2/versions/1.0.8-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/bzip2/versions/1.0.8-stage1-passthrough.nix @@ -10,7 +10,12 @@ let package = packages.foundation.bzip2.versions."1.0.8-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + if config.platform.build != config.platform.target then + config.platform.build + else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then + "i686-linux" + else + "x86_64-linux" ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; @@ -25,7 +30,10 @@ in license = lib.licenses.bsdOriginal; }; - platforms.build = "@linux"; + platforms = { + build = "@linux"; + host = "@linux"; + }; builder = builders.foundation.passthrough.extend { settings = { diff --git a/tidepool/src/packages/foundation/bzip2/versions/1.0.8-stage1.nix b/tidepool/src/packages/foundation/bzip2/versions/1.0.8-stage1.nix index bb5251a..6c9e585 100644 --- a/tidepool/src/packages/foundation/bzip2/versions/1.0.8-stage1.nix +++ b/tidepool/src/packages/foundation/bzip2/versions/1.0.8-stage1.nix @@ -28,6 +28,9 @@ in }; platforms = [ + { + build = "i686-linux"; + } { build = "i686-linux"; host = "x86_64-linux"; @@ -53,17 +56,21 @@ in gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; gnutar = packages.foundation.gnutar.versions."1.35-bootstrap"; gzip = packages.foundation.gzip.versions."1.13-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; } else { gnumake = packages.foundation.gnumake.versions."4.4.1-stage1-passthrough"; gnutar = packages.foundation.gnutar.versions."1.35-stage1-passthrough"; gzip = packages.foundation.gzip.versions."1.13-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; }; - host = { - binutils = packages.foundation.binutils.versions."2.41-stage1"; + host = lib.attrs.when (config.platform.build != config.platform.host) { gcc = packages.foundation.gcc.versions."13.2.0-stage2"; + binutils = packages.foundation.binutils.versions."2.41-stage1"; }; }; }; @@ -75,17 +82,27 @@ in cd bzip2-${version} ''; - build = '' - # Build - make \ - -j $NIX_BUILD_CORES \ - CC="$CC" \ - AR="${config.deps.build.host.binutils.package}/bin/${prefix}ar" \ - RANLIB="${config.deps.build.host.binutils.package}/bin/${prefix}ranlib" \ - STRIP="${config.deps.build.host.binutils.package}/bin/${prefix}strip" \ - NM="${config.deps.build.host.binutils.package}/bin/${prefix}nm" \ - bzip2 bzip2recover - ''; + build = + let + flags = builtins.concatStringsSep " " ( + [ + "CC=\"$CC\"" + ] + ++ lib.lists.when (config.platform.build != config.platform.host) [ + "AR=\"${config.deps.build.host.binutils.package}/bin/${prefix}ar\"" + "RANLIB=\"${config.deps.build.host.binutils.package}/bin/${prefix}ranlib\"" + "STRIP=\"${config.deps.build.host.binutils.package}/bin/${prefix}strip\"" + "NM=\"${config.deps.build.host.binutils.package}/bin/${prefix}nm\"" + ] + ); + in + '' + # Build + make \ + -j $NIX_BUILD_CORES \ + ${flags} \ + bzip2 bzip2recover + ''; install = '' # Install diff --git a/tidepool/src/packages/foundation/coreutils/versions/9.4-stage1-passthrough.nix b/tidepool/src/packages/foundation/coreutils/versions/9.4-stage1-passthrough.nix index 5f9b9dd..b668c7b 100644 --- a/tidepool/src/packages/foundation/coreutils/versions/9.4-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/coreutils/versions/9.4-stage1-passthrough.nix @@ -10,7 +10,12 @@ let package = packages.foundation.coreutils.versions."9.4-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + if config.platform.build != config.platform.target then + config.platform.build + else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then + "i686-linux" + else + "x86_64-linux" ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; @@ -25,7 +30,10 @@ in license = lib.licenses.gpl3Plus; }; - platforms.build = "@linux"; + platforms = { + build = "@linux"; + host = "@linux"; + }; builder = builders.foundation.passthrough.extend { settings = { diff --git a/tidepool/src/packages/foundation/coreutils/versions/9.4-stage1.nix b/tidepool/src/packages/foundation/coreutils/versions/9.4-stage1.nix index d99aab6..adf53d3 100644 --- a/tidepool/src/packages/foundation/coreutils/versions/9.4-stage1.nix +++ b/tidepool/src/packages/foundation/coreutils/versions/9.4-stage1.nix @@ -32,6 +32,9 @@ in }; platforms = [ + { + build = "i686-linux"; + } { build = "i686-linux"; host = "x86_64-linux"; @@ -63,6 +66,8 @@ in gzip = packages.foundation.gzip.versions."1.13-bootstrap"; diffutils = packages.foundation.diffutils.versions."3.10-bootstrap"; findutils = packages.foundation.findutils.versions."4.9.0-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; } else { @@ -75,9 +80,11 @@ in gzip = packages.foundation.gzip.versions."1.13-stage1-passthrough"; diffutils = packages.foundation.diffutils.versions."3.10-stage1-passthrough"; findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; }; - host = { + host = lib.attrs.when (config.platform.build != config.platform.host) { binutils = packages.foundation.binutils.versions."2.41-stage1"; gcc = packages.foundation.gcc.versions."13.2.0-stage2"; }; diff --git a/tidepool/src/packages/foundation/diffutils/versions/3.10-stage1-passthrough.nix b/tidepool/src/packages/foundation/diffutils/versions/3.10-stage1-passthrough.nix index 6a3100e..74db586 100644 --- a/tidepool/src/packages/foundation/diffutils/versions/3.10-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/diffutils/versions/3.10-stage1-passthrough.nix @@ -10,7 +10,12 @@ let package = packages.foundation.diffutils.versions."3.10-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + if config.platform.build != config.platform.target then + config.platform.build + else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then + "i686-linux" + else + "x86_64-linux" ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; @@ -25,7 +30,10 @@ in license = lib.licenses.gpl3Only; }; - platforms.build = "@linux"; + platforms = { + build = "@linux"; + host = "@linux"; + }; builder = builders.foundation.passthrough.extend { settings = { diff --git a/tidepool/src/packages/foundation/diffutils/versions/3.10-stage1.nix b/tidepool/src/packages/foundation/diffutils/versions/3.10-stage1.nix index 022dee0..bceccf9 100644 --- a/tidepool/src/packages/foundation/diffutils/versions/3.10-stage1.nix +++ b/tidepool/src/packages/foundation/diffutils/versions/3.10-stage1.nix @@ -25,6 +25,9 @@ in }; platforms = [ + { + build = "i686-linux"; + } { build = "i686-linux"; host = "x86_64-linux"; @@ -57,6 +60,8 @@ in diffutils = packages.foundation.diffutils.versions."3.10-bootstrap"; findutils = packages.foundation.findutils.versions."4.9.0-bootstrap"; xz = packages.foundation.xz.versions."5.4.3-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; } else { @@ -70,11 +75,13 @@ in diffutils = packages.foundation.diffutils.versions."3.10-stage1-passthrough"; findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; }; - host = { - binutils = packages.foundation.binutils.versions."2.41-stage1"; + host = lib.attrs.when (config.platform.build != config.platform.host) { gcc = packages.foundation.gcc.versions."13.2.0-stage2"; + binutils = packages.foundation.binutils.versions."2.41-stage1"; }; }; }; diff --git a/tidepool/src/packages/foundation/findutils/versions/4.9.0-stage1-passthrough.nix b/tidepool/src/packages/foundation/findutils/versions/4.9.0-stage1-passthrough.nix index bfd8982..d4f5598 100644 --- a/tidepool/src/packages/foundation/findutils/versions/4.9.0-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/findutils/versions/4.9.0-stage1-passthrough.nix @@ -10,7 +10,12 @@ let package = packages.foundation.findutils.versions."4.9.0-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + if config.platform.build != config.platform.target then + config.platform.build + else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then + "i686-linux" + else + "x86_64-linux" ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; @@ -25,7 +30,10 @@ in license = lib.licenses.gpl3Plus; }; - platforms.build = "@linux"; + platforms = { + build = "@linux"; + host = "@linux"; + }; builder = builders.foundation.passthrough.extend { settings = { diff --git a/tidepool/src/packages/foundation/findutils/versions/4.9.0-stage1.nix b/tidepool/src/packages/foundation/findutils/versions/4.9.0-stage1.nix index 905eba1..b66c213 100644 --- a/tidepool/src/packages/foundation/findutils/versions/4.9.0-stage1.nix +++ b/tidepool/src/packages/foundation/findutils/versions/4.9.0-stage1.nix @@ -25,6 +25,9 @@ in }; platforms = [ + { + build = "i686-linux"; + } { build = "i686-linux"; host = "x86_64-linux"; @@ -57,6 +60,8 @@ in diffutils = packages.foundation.diffutils.versions."3.10-bootstrap"; findutils = packages.foundation.findutils.versions."4.9.0-bootstrap"; xz = packages.foundation.xz.versions."5.4.3-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; } else { @@ -70,11 +75,13 @@ in diffutils = packages.foundation.diffutils.versions."3.10-stage1-passthrough"; findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; }; - host = { - binutils = packages.foundation.binutils.versions."2.41-stage1"; + host = lib.attrs.when (config.platform.build != config.platform.host) { gcc = packages.foundation.gcc.versions."13.2.0-stage2"; + binutils = packages.foundation.binutils.versions."2.41-stage1"; }; }; }; diff --git a/tidepool/src/packages/foundation/gawk/versions/5.2.2-stage1-passthrough.nix b/tidepool/src/packages/foundation/gawk/versions/5.2.2-stage1-passthrough.nix index 3709c5c..95bed6b 100644 --- a/tidepool/src/packages/foundation/gawk/versions/5.2.2-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/gawk/versions/5.2.2-stage1-passthrough.nix @@ -10,7 +10,12 @@ let package = packages.foundation.gawk.versions."5.2.2-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + if config.platform.build != config.platform.target then + config.platform.build + else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then + "i686-linux" + else + "x86_64-linux" ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; @@ -25,7 +30,10 @@ in license = lib.licenses.gpl3Plus; }; - platforms.build = "@linux"; + platforms = { + build = "@linux"; + host = "@linux"; + }; builder = builders.foundation.passthrough.extend { settings = { diff --git a/tidepool/src/packages/foundation/gawk/versions/5.2.2-stage1.nix b/tidepool/src/packages/foundation/gawk/versions/5.2.2-stage1.nix index f054ad6..cad9c7f 100644 --- a/tidepool/src/packages/foundation/gawk/versions/5.2.2-stage1.nix +++ b/tidepool/src/packages/foundation/gawk/versions/5.2.2-stage1.nix @@ -25,6 +25,9 @@ in }; platforms = [ + { + build = "i686-linux"; + } { build = "i686-linux"; host = "x86_64-linux"; @@ -57,6 +60,8 @@ in diffutils = packages.foundation.diffutils.versions."3.10-bootstrap"; findutils = packages.foundation.findutils.versions."4.9.0-bootstrap"; xz = packages.foundation.xz.versions."5.4.3-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; } else { @@ -70,11 +75,13 @@ in diffutils = packages.foundation.diffutils.versions."3.10-stage1-passthrough"; findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; }; - host = { - binutils = packages.foundation.binutils.versions."2.41-stage1"; + host = lib.attrs.when (config.platform.build != config.platform.host) { gcc = packages.foundation.gcc.versions."13.2.0-stage2"; + binutils = packages.foundation.binutils.versions."2.41-stage1"; }; }; }; diff --git a/tidepool/src/packages/foundation/gcc/default.nix b/tidepool/src/packages/foundation/gcc/default.nix index fea0c27..1c8e798 100644 --- a/tidepool/src/packages/foundation/gcc/default.nix +++ b/tidepool/src/packages/foundation/gcc/default.nix @@ -8,17 +8,16 @@ { config.packages.foundation.gcc = { stable = config.packages.foundation.gcc.versions."13.2.0-bootstrap"; - latest = config.packages.foundation.gcc.versions."13.2.0-stage5"; + latest = config.packages.foundation.gcc.versions."13.2.0-passthrough"; versions = { - "13.2.0-stage5" = ./versions/13.2.0-stage5.nix; - "13.2.0-stage4" = ./versions/13.2.0-stage4.nix; + "13.2.0-bootstrap" = ./versions/13.2.0-bootstrap.nix; + "13.2.0-passthrough" = ./versions/13.2.0-passthrough.nix; + "13.2.0-stage1" = ./versions/13.2.0-stage1.nix; + "13.2.0-stage2" = ./versions/13.2.0-stage2.nix; "13.2.0-stage3-passthrough" = ./versions/13.2.0-stage3-passthrough.nix; "13.2.0-stage3" = ./versions/13.2.0-stage3.nix; - "13.2.0-stage2" = ./versions/13.2.0-stage2.nix; - "13.2.0-stage1" = ./versions/13.2.0-stage1.nix; - "13.2.0-stage0" = ./versions/13.2.0-stage0.nix; - "13.2.0-bootstrap" = ./versions/13.2.0-bootstrap.nix; + "13.2.0-stage4" = ./versions/13.2.0-stage4.nix; }; }; } diff --git a/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage5.nix b/tidepool/src/packages/foundation/gcc/versions/13.2.0-passthrough.nix similarity index 84% rename from tidepool/src/packages/foundation/gcc/versions/13.2.0-stage5.nix rename to tidepool/src/packages/foundation/gcc/versions/13.2.0-passthrough.nix index 5c535a4..6953ade 100644 --- a/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage5.nix +++ b/tidepool/src/packages/foundation/gcc/versions/13.2.0-passthrough.nix @@ -37,6 +37,18 @@ in { build = "@linux"; } + { + build = "i686-linux"; + host = "@linux"; + } + { + build = "i686-linux"; + target = "@linux"; + } + { + build = "x86_64-linux"; + host = "@linux"; + } { build = "x86_64-linux"; target = "@linux"; diff --git a/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage0.nix b/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage0.nix deleted file mode 100644 index 414991c..0000000 --- a/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage0.nix +++ /dev/null @@ -1,201 +0,0 @@ -# gcc-bootstrap-glibc -{ config, global }: - -let - inherit (global) - lib - packages - builders - mirrors - ; - - version = lib.strings.removeSuffix "-stage0" config.version; - - platform = { - build = lib.systems.withBuildInfo config.platform.build; - host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; - }; - - patches = [ - ../patches/libstdc++-target.patch - ]; - - gccFlags = [ - "-Wl,-dynamic-linker" - "-Wl,${config.deps.target.target.glibc.dynamicLinker}" - "-B${config.deps.target.target.glibc.package}/lib" - ]; - - configureFlags = [ - "--prefix=${builtins.placeholder "out"}" - "--build=${platform.build.triple}" - "--host=${platform.host.triple}" - "--target=${platform.target.triple}" - "--enable-languages=c,c++" - "--disable-lto" - "--disable-bootstrap" - "--disable-libsanitizer" - "--disable-multilib" - "--with-build-sysroot=/" - "--with-native-system-header-dir=${config.deps.target.target.glibc.package}/include" - ]; -in -{ - options = { - gmp.version = lib.options.create { - type = lib.types.string; - description = "Version of gmp."; - }; - - mpfr.version = lib.options.create { - type = lib.types.string; - description = "Version of mpfr."; - }; - - mpc.version = lib.options.create { - type = lib.types.string; - description = "Version of mpc."; - }; - - isl.version = lib.options.create { - type = lib.types.string; - description = "Version of isl."; - }; - }; - - config = { - meta = { - description = "GNU Compiler Collection."; - homepage = "https://gcc.gnu.org"; - license = lib.licenses.gpl3Plus; - }; - - platforms.build = "i686-linux"; - - builder = builders.foundation.basic; - - gmp.version = "6.3.0"; - mpfr.version = "4.2.1"; - mpc.version = "1.3.1"; - isl.version = "0.24"; - - src = { - gcc = builtins.fetchurl { - url = "${mirrors.gnu}/gcc/gcc-${version}/gcc-${version}.tar.xz"; - sha256 = "4nXnZEKmBnNBon8Exca4PYYTFEAEwEE1KIY9xrXHQ9o="; - }; - - gmp = builtins.fetchurl { - url = "${mirrors.gnu}/gmp/gmp-${config.gmp.version}.tar.xz"; - sha256 = "o8K4AgG4nmhhb0rTC8Zq7kknw85Q4zkpyoGdXENTiJg="; - }; - - mpfr = builtins.fetchurl { - url = "${mirrors.gnu}/mpfr/mpfr-${config.mpfr.version}.tar.xz"; - sha256 = "J3gHNTpnJpeJlpRa8T5Sgp46vXqaW3+yeTiU4Y8fy7I="; - }; - - mpc = builtins.fetchurl { - url = "${mirrors.gnu}/mpc/mpc-${config.mpc.version}.tar.gz"; - sha256 = "q2QkkvXPiCt0qgy3MM1BCoHtzb7IlRg86TDnBsHHWbg="; - }; - - isl = builtins.fetchurl { - url = "https://gcc.gnu.org/pub/gcc/infrastructure/isl-${config.isl.version}.tar.bz2"; - sha256 = "/PeN2WVsEOuM+fvV9ZoLawE4YgX+GTSzsoegoYmBRcA="; - }; - }; - - deps = { - build = { - build = { - bzip2 = packages.foundation.bzip2.versions."1.0.8-bootstrap"; - diffutils = packages.foundation.diffutils.versions."3.10-bootstrap"; - findutils = packages.foundation.findutils.versions."4.9.0-bootstrap"; - gawk = packages.foundation.gawk.versions."5.2.2-bootstrap"; - gnugrep = packages.foundation.gnugrep.versions."3.11-bootstrap"; - gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; - gnupatch = packages.foundation.gnupatch.versions."2.7-bootstrap"; - gnused = packages.foundation.gnused.versions."4.9-bootstrap"; - gnutar = packages.foundation.gnutar.versions."1.35-bootstrap"; - gzip = packages.foundation.gzip.versions."1.13-bootstrap"; - xz = packages.foundation.xz.versions."5.4.3-bootstrap"; - binutils = packages.foundation.binutils.versions."2.41-bootstrap"; - }; - - host = { - gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; - }; - }; - - target = { - target = { - glibc = packages.foundation.glibc.versions."2.38-bootstrap"; - }; - }; - }; - - env = { - CFLAGS_FOR_TARGET = "-Wl,-dynamic-linker -Wl,${config.deps.target.target.glibc.dynamicLinker} -B${config.deps.target.target.glibc.package}/lib"; - LDFLAGS_FOR_TARGET = "-L$(pwd)/${platform.target.triple}/libgcc -L${config.deps.target.target.glibc.package}/lib"; - LIBRARY_PATH = "${config.deps.target.target.glibc.package}/lib"; - }; - - hooks = ctx: { - "aux:gcc:env" = lib.dag.entry.between [ "unpack" ] [ "configure" ] '' - export CC='${config.package}/bin/gcc ${builtins.concatStringsSep " " gccFlags}' - export CXX='${config.package}/bin/g++ ${builtins.concatStringsSep " " gccFlags}' - export CC_FOR_TARGET=$CC - export CXX_FOR_TARGET=$CXX - export CC_FOR_BUILD=$CC - export CXX_FOR_BUILD=$CXX - alias gcc='$CC' - alias g++='$CXX' - ''; - }; - - phases = { - unpack = '' - # Unpack - tar xf ${config.src.gcc} - tar xf ${config.src.gmp} - tar xf ${config.src.mpfr} - tar xf ${config.src.mpc} - tar xf ${config.src.isl} - cd gcc-${version} - - ln -s ../gmp-${config.gmp.version} gmp - ln -s ../mpfr-${config.mpfr.version} mpfr - ln -s ../mpc-${config.mpc.version} mpc - ln -s ../isl-${config.isl.version} isl - ''; - - patch = '' - ${lib.strings.concatMapSep "\n" (file: "patch -Np1 -i ${file}") patches} - ''; - - configure = '' - # Configure - mkdir build - cd build - - bash ../configure ${builtins.concatStringsSep " " configureFlags} - ''; - - build = '' - # Build - make -j $NIX_BUILD_CORES V=1 - ''; - - install = '' - # Install - ${lib.strings.when (platform.host.is64bit) '' - mkdir -p $out/lib - ln -s lib $out/lib64 - ''} - make -j $NIX_BUILD_CORES install - ''; - }; - }; -} diff --git a/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage1.nix b/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage1.nix index 576765c..268bf4c 100644 --- a/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage1.nix +++ b/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage1.nix @@ -170,13 +170,12 @@ in }; hooks = ctx: { - "aux:gcc:env" = lib.dag.entry.before [ "unpack" "configure" "build" "install" ] '' + # Explicitly don't set CC_FOR_BUILD + "aux:gcc-cross:env" = lib.dag.entry.between [ "aux:gcc:env" ] [ "configure" ] '' export CC='${config.package}/bin/${prefix}gcc' export CXX='${config.package}/bin/${prefix}g++' export CC_FOR_TARGET=$CC export CXX_FOR_TARGET=$CXX - export CC_FOR_BUILD=$CC - export CXX_FOR_BUILD=$CXX alias gcc='$CC' alias g++='$CXX' ''; diff --git a/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage2.nix b/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage2.nix index ff5741f..d5005dc 100644 --- a/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage2.nix +++ b/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage2.nix @@ -21,6 +21,10 @@ let platform.build.triple != platform.target.triple ) "${platform.target.triple}-"; + libPrefix = lib.strings.when ( + platform.build.triple != platform.target.triple + ) "/${platform.target.triple}"; + patches = [ ../patches/libstdc++-target.patch ]; @@ -29,6 +33,8 @@ let "-Wl,-dynamic-linker" "-Wl,${config.deps.target.target.glibc.dynamicLinker}" "-B${config.deps.target.target.glibc.package}/lib" + "-L${config.package.outPath}${libPrefix}/lib" + "-Wl,-rpath,${config.package.outPath}${libPrefix}/lib" ]; configureFlags = [ @@ -178,13 +184,12 @@ in }; hooks = ctx: { - "aux:gcc-cross:env" = lib.dag.entry.before [ "unpack" "configure" "build" "install" ] '' + # Explicitly don't set CC_FOR_BUILD + "aux:gcc-cross:env" = lib.dag.entry.between [ "aux:gcc:env" ] [ "configure" ] '' export CC='${config.package}/bin/${prefix}gcc ${builtins.concatStringsSep " " gccFlags}' export CXX='${config.package}/bin/${prefix}g++ ${builtins.concatStringsSep " " gccFlags}' export CC_FOR_TARGET=$CC export CXX_FOR_TARGET=$CXX - export CC_FOR_BUILD=$CC - export CXX_FOR_BUILD=$CXX alias gcc='$CC' alias g++='$CXX' ''; @@ -235,6 +240,10 @@ in mkdir -p $out/lib ln -s lib $out/lib64 ''} + ${lib.strings.when (platform.target.is64bit) '' + mkdir -p $out/${platform.target.triple}/lib + ln -s lib $out/${platform.target.triple}/lib64 + ''} make -j $NIX_BUILD_CORES install ''; }; diff --git a/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage3.nix b/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage3.nix index aa34d28..6347a3b 100644 --- a/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage3.nix +++ b/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage3.nix @@ -17,10 +17,6 @@ let target = lib.systems.withBuildInfo config.platform.target; }; - prefix = lib.strings.when ( - platform.build.triple != platform.target.triple - ) "${platform.target.triple}-"; - patches = [ ../patches/libstdc++-target.patch ]; @@ -29,9 +25,8 @@ let "-Wl,-dynamic-linker" "-Wl,${config.deps.host.host.glibc.dynamicLinker}" "-B${config.deps.host.host.glibc.package}/lib" - ] - ++ lib.lists.when (config.platform.target == "riscv64-linux") [ "-L${config.package.outPath}/lib" + "-Wl,-rpath,${config.package.outPath}/lib" ]; configureFlags = [ @@ -140,8 +135,8 @@ in gnutar = packages.foundation.gnutar.versions."1.35-bootstrap"; gzip = packages.foundation.gzip.versions."1.13-bootstrap"; xz = packages.foundation.xz.versions."5.4.3-bootstrap"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; - gcc = packages.foundation.gcc.versions."13.2.0-stage0"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; glibc = packages.foundation.glibc.versions."2.38-bootstrap"; } else @@ -164,9 +159,6 @@ in host = { gcc = packages.foundation.gcc.versions."13.2.0-stage2"; - }; - - target = { binutils = packages.foundation.binutils.versions."2.41-stage1"; }; }; @@ -179,26 +171,17 @@ in }; env = rec { - CC_FOR_BUILD = "${config.deps.build.build.gcc.package}/bin/gcc -Wl,-dynamic-linker -Wl,${config.deps.build.build.glibc.dynamicLinker} -B${config.deps.build.build.glibc.package}/lib"; - CXX_FOR_BUILD = "${config.deps.build.build.gcc.package}/bin/g++ -Wl,-dynamic-linker -Wl,${config.deps.build.build.glibc.dynamicLinker} -B${config.deps.build.build.glibc.package}/lib"; CFLAGS_FOR_BUILD = "-Wl,-dynamic-linker -Wl,${config.deps.build.build.glibc.dynamicLinker} -B${config.deps.build.build.glibc.package}/lib"; LDFLAGS_FOR_BUILD = "-L${config.deps.build.build.gcc.package}/lib -L${config.deps.build.build.glibc.package}/lib -Wl,-rpath,${config.deps.build.build.gcc.package}/lib -Wl,-rpath,${config.deps.build.build.glibc.package}/lib"; - - CC_FOR_TARGET = "${prefix}gcc -Wl,-dynamic-linker -Wl,${config.deps.host.host.glibc.dynamicLinker} -B${config.deps.host.host.glibc.package}/lib"; - CXX_FOR_TARGET = "${prefix}g++ -Wl,-dynamic-linker -Wl,${config.deps.host.host.glibc.dynamicLinker} -B${config.deps.host.host.glibc.package}/lib"; CFLAGS_FOR_TARGET = "-Wl,-dynamic-linker -Wl,${config.deps.host.host.glibc.dynamicLinker} -B${config.deps.host.host.glibc.package}/lib"; LDFLAGS_FOR_TARGET = "-L$(pwd)/${platform.target.triple}/libgcc -L${config.deps.host.host.glibc.package}/lib"; - CC = CC_FOR_TARGET; - CXX = CXX_FOR_TARGET; CFLAGS = CFLAGS_FOR_TARGET; LDFLAGS = LDFLAGS_FOR_TARGET; - LIBRARY_PATH = "${config.deps.host.host.glibc.package}/lib"; - LD_LIBRARY_PATH = "${config.deps.host.host.glibc.package}/lib"; }; hooks = ctx: { - "aux:gcc:env" = lib.dag.entry.before [ "unpack" "configure" "build" "install" ] '' + "aux:gcc:env" = lib.dag.entry.between [ "unpack" ] [ "configure" ] '' export CC='${config.package}/bin/gcc ${builtins.concatStringsSep " " gccFlags}' export CXX='${config.package}/bin/g++ ${builtins.concatStringsSep " " gccFlags}' export CC_FOR_TARGET=$CC @@ -211,10 +194,6 @@ in }; phases = { - "aux:gcc:env" = ''''; - - "aux:gcc-cross:env" = ''''; - unpack = '' # Unpack tar xf ${config.src.gcc} diff --git a/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage4.nix b/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage4.nix index 70ea098..9bb9c8c 100644 --- a/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage4.nix +++ b/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage4.nix @@ -25,9 +25,8 @@ let "-Wl,-dynamic-linker" "-Wl,${config.deps.host.host.glibc.dynamicLinker}" "-B${config.deps.host.host.glibc.package}/lib" - ] - ++ lib.lists.when (config.platform.target == "riscv64-linux") [ "-L${config.package.outPath}/lib" + "-Wl,-rpath,${config.package.outPath}/lib" ]; configureFlags = [ @@ -112,34 +111,61 @@ in deps = { build = { - build = { - bzip2 = packages.foundation.bzip2.versions."1.0.8-stage1-passthrough"; - diffutils = packages.foundation.diffutils.versions."3.10-stage1-passthrough"; - findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; - gawk = packages.foundation.gawk.versions."5.2.2-stage1-passthrough"; - gnugrep = packages.foundation.gnugrep.versions."3.11-stage1-passthrough"; - gnumake = packages.foundation.gnumake.versions."4.4.1-stage1-passthrough"; - gnupatch = packages.foundation.gnupatch.versions."2.7-stage1-passthrough"; - gnused = packages.foundation.gnused.versions."4.9-stage1-passthrough"; - gnutar = packages.foundation.gnutar.versions."1.35-stage1-passthrough"; - gzip = packages.foundation.gzip.versions."1.13-stage1-passthrough"; - xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; - binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - }; + build = + if (config.platform.build == "i686-linux") then + { + bzip2 = packages.foundation.bzip2.versions."1.0.8-bootstrap"; + diffutils = packages.foundation.diffutils.versions."3.10-bootstrap"; + findutils = packages.foundation.findutils.versions."4.9.0-bootstrap"; + gawk = packages.foundation.gawk.versions."5.2.2-bootstrap"; + gnugrep = packages.foundation.gnugrep.versions."3.11-bootstrap"; + gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; + gnupatch = packages.foundation.gnupatch.versions."2.7-bootstrap"; + gnused = packages.foundation.gnused.versions."4.9-bootstrap"; + gnutar = packages.foundation.gnutar.versions."1.35-bootstrap"; + gzip = packages.foundation.gzip.versions."1.13-bootstrap"; + xz = packages.foundation.xz.versions."5.4.3-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; + } + else + { + bzip2 = packages.foundation.bzip2.versions."1.0.8-stage1-passthrough"; + diffutils = packages.foundation.diffutils.versions."3.10-stage1-passthrough"; + findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; + gawk = packages.foundation.gawk.versions."5.2.2-stage1-passthrough"; + gnugrep = packages.foundation.gnugrep.versions."3.11-stage1-passthrough"; + gnumake = packages.foundation.gnumake.versions."4.4.1-stage1-passthrough"; + gnupatch = packages.foundation.gnupatch.versions."2.7-stage1-passthrough"; + gnused = packages.foundation.gnused.versions."4.9-stage1-passthrough"; + gnutar = packages.foundation.gnutar.versions."1.35-stage1-passthrough"; + gzip = packages.foundation.gzip.versions."1.13-stage1-passthrough"; + xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; + }; - host = { - gcc = packages.foundation.gcc.versions."13.2.0-stage3-passthrough"; - }; - - target = { - binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - }; + host = + if (config.platform.build == "i686-linux") then + { + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; + } + else + { + gcc = packages.foundation.gcc.versions."13.2.0-stage3-passthrough"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; + }; }; host = { - host = { - glibc = packages.foundation.glibc.versions."2.38-stage1-passthrough"; - }; + host = + if (config.platform.build == "i686-linux") then + { + glibc = packages.foundation.glibc.versions."2.38-bootstrap"; + } + else + { + glibc = packages.foundation.glibc.versions."2.38-stage1-passthrough"; + }; }; }; diff --git a/tidepool/src/packages/foundation/glibc/versions/2.38-stage1-passthrough.nix b/tidepool/src/packages/foundation/glibc/versions/2.38-stage1-passthrough.nix index 546a104..2d26167 100644 --- a/tidepool/src/packages/foundation/glibc/versions/2.38-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/glibc/versions/2.38-stage1-passthrough.nix @@ -10,7 +10,12 @@ let package = packages.foundation.glibc.versions."2.38-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + if config.platform.build != config.platform.target then + config.platform.build + else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then + "i686-linux" + else + "x86_64-linux" ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; @@ -33,7 +38,10 @@ in license = lib.licenses.lgpl2Plus; }; - platforms.build = "@linux"; + platforms = { + build = "@linux"; + host = "@linux"; + }; dynamicLinker = package.dynamicLinker; diff --git a/tidepool/src/packages/foundation/glibc/versions/2.38-stage1.nix b/tidepool/src/packages/foundation/glibc/versions/2.38-stage1.nix index 1c980df..c8a8c92 100644 --- a/tidepool/src/packages/foundation/glibc/versions/2.38-stage1.nix +++ b/tidepool/src/packages/foundation/glibc/versions/2.38-stage1.nix @@ -33,6 +33,9 @@ in }; platforms = [ + { + build = "i686-linux"; + } { build = "i686-linux"; host = "x86_64-linux"; @@ -68,6 +71,11 @@ in xz = packages.foundation.xz.versions."5.4.3-bootstrap"; python = packages.foundation.python.versions."3.12.0-bootstrap"; bison = packages.foundation.bison.versions."3.8.2-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; + } + // lib.attrs.when (config.platform.build != config.platform.host) { + glibc = packages.foundation.glibc.versions."2.38-bootstrap"; } else { @@ -84,11 +92,18 @@ in xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; python = packages.foundation.python.versions."3.12.0-stage1"; bison = packages.foundation.bison.versions."3.8.2-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; + } + // lib.attrs.when (config.platform.build != config.platform.host) { + glibc = packages.foundation.glibc.versions."2.38-stage1-passthrough"; }; host = { + linux-headers = packages.foundation.linux-headers.versions."6.5.6-stage1"; + } + // lib.attrs.when (config.platform.build != config.platform.host) { gcc = packages.foundation.gcc.versions."13.2.0-stage1"; binutils = packages.foundation.binutils.versions."2.41-stage1"; - linux-headers = packages.foundation.linux-headers.versions."6.5.6-stage1"; }; }; }; @@ -112,17 +127,26 @@ in cd glibc-${version} ''; - configure = '' - mkdir build - cd build + configure = + let + flags = builtins.concatStringsSep " " ( + [ + "--prefix=$out" + "--build=${platform.build.triple}" + "--host=${platform.host.triple}" + "--with-headers=${config.deps.build.host.linux-headers.package}/include" + ] + ++ lib.lists.when (config.platform.build != config.platform.host) [ + "--with-binutils=${config.deps.build.host.binutils.package}/${platform.target.triple}/bin" + ] + ); + in + '' + mkdir build + cd build - bash ../configure \ - --prefix=$out \ - --build=${platform.build.triple} \ - --host=${platform.host.triple} \ - --with-headers=${config.deps.build.host.linux-headers.package}/include \ - --with-binutils=${config.deps.build.host.binutils.package}/${platform.target.triple}/bin - ''; + bash ../configure ${flags} + ''; build = '' # Build @@ -132,6 +156,24 @@ in install = '' # Install make -j $NIX_BUILD_CORES install + ${ + if + ( + config.platform.build == config.platform.host + || config.platform.build == "i686-linux" && config.platform.host == "x86_64-linux" + ) + then + "make \"localedata/install-locales\" \"localedir=$out/lib/locale\"" + else + '' + mkdir -p $TMPDIR/${config.deps.build.build.glibc.package}/lib/locale + sed -i -e \ + 's,^$(rtld-prefix) $(common-objpfx)locale/localedef,localedef --prefix=''${TMPDIR} --${platform.host.system.cpu.endian.name}-endian,' \ + ../localedata/Makefile + make SHELL='sh -x' "localedata/install-locales" "localedir=$out/lib/locale" + cp -r $TMPDIR/${config.deps.build.build.glibc.package}/lib/locale $out/lib + '' + } ln -sv $(ls -d ${config.deps.build.host.linux-headers.package}/include/* | grep -v scsi\$) $out/include/ ''; }; diff --git a/tidepool/src/packages/foundation/gnugrep/versions/3.11-stage1-passthrough.nix b/tidepool/src/packages/foundation/gnugrep/versions/3.11-stage1-passthrough.nix index 1d5a51a..bf274ee 100644 --- a/tidepool/src/packages/foundation/gnugrep/versions/3.11-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/gnugrep/versions/3.11-stage1-passthrough.nix @@ -10,7 +10,12 @@ let package = packages.foundation.gnugrep.versions."3.11-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + if config.platform.build != config.platform.target then + config.platform.build + else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then + "i686-linux" + else + "x86_64-linux" ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; @@ -25,7 +30,10 @@ in license = lib.licenses.gpl3Plus; }; - platforms.build = "@linux"; + platforms = { + build = "@linux"; + host = "@linux"; + }; builder = builders.foundation.passthrough.extend { settings = { diff --git a/tidepool/src/packages/foundation/gnugrep/versions/3.11-stage1.nix b/tidepool/src/packages/foundation/gnugrep/versions/3.11-stage1.nix index a20b012..8e98e60 100644 --- a/tidepool/src/packages/foundation/gnugrep/versions/3.11-stage1.nix +++ b/tidepool/src/packages/foundation/gnugrep/versions/3.11-stage1.nix @@ -25,6 +25,9 @@ in }; platforms = [ + { + build = "i686-linux"; + } { build = "i686-linux"; host = "x86_64-linux"; @@ -57,6 +60,8 @@ in diffutils = packages.foundation.diffutils.versions."3.10-bootstrap"; findutils = packages.foundation.findutils.versions."4.9.0-bootstrap"; xz = packages.foundation.xz.versions."5.4.3-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; } else { @@ -70,11 +75,13 @@ in diffutils = packages.foundation.diffutils.versions."3.10-stage1-passthrough"; findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; }; - host = { - binutils = packages.foundation.binutils.versions."2.41-stage1"; + host = lib.attrs.when (config.platform.build != config.platform.host) { gcc = packages.foundation.gcc.versions."13.2.0-stage2"; + binutils = packages.foundation.binutils.versions."2.41-stage1"; }; }; }; diff --git a/tidepool/src/packages/foundation/gnum4/versions/1.4.19-stage1-passthrough.nix b/tidepool/src/packages/foundation/gnum4/versions/1.4.19-stage1-passthrough.nix index 4657dd5..cd9dee3 100644 --- a/tidepool/src/packages/foundation/gnum4/versions/1.4.19-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/gnum4/versions/1.4.19-stage1-passthrough.nix @@ -9,7 +9,14 @@ let package = packages.foundation.gnum4.versions."1.4.19-stage1".extend { platform = { - build = lib.modules.overrides.force "i686-linux"; + build = lib.modules.overrides.force ( + if config.platform.build != config.platform.target then + config.platform.build + else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then + "i686-linux" + else + "x86_64-linux" + ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; }; @@ -23,7 +30,10 @@ in license = lib.licenses.gpl3Plus; }; - platforms.build = "x86_64-linux"; + platforms = { + build = "@linux"; + host = "@linux"; + }; builder = builders.foundation.passthrough.extend { settings = { diff --git a/tidepool/src/packages/foundation/gnum4/versions/1.4.19-stage1.nix b/tidepool/src/packages/foundation/gnum4/versions/1.4.19-stage1.nix index 51432cc..bbda931 100644 --- a/tidepool/src/packages/foundation/gnum4/versions/1.4.19-stage1.nix +++ b/tidepool/src/packages/foundation/gnum4/versions/1.4.19-stage1.nix @@ -24,10 +24,19 @@ in license = lib.licenses.gpl3Plus; }; - platforms = { - build = "i686-linux"; - host = "x86_64-linux"; - }; + platforms = [ + { + build = "i686-linux"; + } + { + build = "i686-linux"; + host = "x86_64-linux"; + } + { + build = "x86_64-linux"; + host = "@linux"; + } + ]; builder = builders.foundation.basic; @@ -38,22 +47,41 @@ in deps = { build = { - build = { - gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; - gnupatch = packages.foundation.gnupatch.versions."2.7-bootstrap"; - gnused = packages.foundation.gnused.versions."4.9-bootstrap"; - gnutar = packages.foundation.gnutar.versions."1.35-bootstrap"; - gnugrep = packages.foundation.gnugrep.versions."3.11-bootstrap"; - gawk = packages.foundation.gawk.versions."5.2.2-bootstrap"; - gzip = packages.foundation.gzip.versions."1.13-bootstrap"; - diffutils = packages.foundation.diffutils.versions."3.10-bootstrap"; - findutils = packages.foundation.findutils.versions."4.9.0-bootstrap"; - xz = packages.foundation.xz.versions."5.4.3-bootstrap"; - }; + build = + if (config.platform.build == "i686-linux") then + { + gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; + gnupatch = packages.foundation.gnupatch.versions."2.7-bootstrap"; + gnused = packages.foundation.gnused.versions."4.9-bootstrap"; + gnutar = packages.foundation.gnutar.versions."1.35-bootstrap"; + gnugrep = packages.foundation.gnugrep.versions."3.11-bootstrap"; + gawk = packages.foundation.gawk.versions."5.2.2-bootstrap"; + gzip = packages.foundation.gzip.versions."1.13-bootstrap"; + diffutils = packages.foundation.diffutils.versions."3.10-bootstrap"; + findutils = packages.foundation.findutils.versions."4.9.0-bootstrap"; + xz = packages.foundation.xz.versions."5.4.3-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; + } + else + { + gnumake = packages.foundation.gnumake.versions."4.4.1-stage1-passthrough"; + gnupatch = packages.foundation.gnupatch.versions."2.7-stage1-passthrough"; + gnused = packages.foundation.gnused.versions."4.9-stage1-passthrough"; + gnutar = packages.foundation.gnutar.versions."1.35-stage1-passthrough"; + gnugrep = packages.foundation.gnugrep.versions."3.11-stage1-passthrough"; + gawk = packages.foundation.gawk.versions."5.2.2-stage1-passthrough"; + gzip = packages.foundation.gzip.versions."1.13-stage1-passthrough"; + diffutils = packages.foundation.diffutils.versions."3.10-stage1-passthrough"; + findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; + xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; + }; - host = { - binutils = packages.foundation.binutils.versions."2.41-stage1"; + host = lib.attrs.when (config.platform.build != config.platform.host) { gcc = packages.foundation.gcc.versions."13.2.0-stage2"; + binutils = packages.foundation.binutils.versions."2.41-stage1"; }; }; }; diff --git a/tidepool/src/packages/foundation/gnumake/versions/4.4.1-stage1-passthrough.nix b/tidepool/src/packages/foundation/gnumake/versions/4.4.1-stage1-passthrough.nix index 1781595..a78fc91 100644 --- a/tidepool/src/packages/foundation/gnumake/versions/4.4.1-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/gnumake/versions/4.4.1-stage1-passthrough.nix @@ -10,7 +10,12 @@ let package = packages.foundation.gnumake.versions."4.4.1-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + if config.platform.build != config.platform.target then + config.platform.build + else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then + "i686-linux" + else + "x86_64-linux" ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; @@ -25,7 +30,10 @@ in license = lib.licenses.gpl3Plus; }; - platforms.build = "@linux"; + platforms = { + build = "@linux"; + host = "@linux"; + }; builder = builders.foundation.passthrough.extend { settings = { diff --git a/tidepool/src/packages/foundation/gnumake/versions/4.4.1-stage1.nix b/tidepool/src/packages/foundation/gnumake/versions/4.4.1-stage1.nix index e7833a5..12badee 100644 --- a/tidepool/src/packages/foundation/gnumake/versions/4.4.1-stage1.nix +++ b/tidepool/src/packages/foundation/gnumake/versions/4.4.1-stage1.nix @@ -30,6 +30,9 @@ in }; platforms = [ + { + build = "i686-linux"; + } { build = "i686-linux"; host = "x86_64-linux"; @@ -63,6 +66,8 @@ in diffutils = packages.foundation.diffutils.versions."3.10-bootstrap"; findutils = packages.foundation.findutils.versions."4.9.0-bootstrap"; xz = packages.foundation.xz.versions."5.4.3-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; } else { @@ -76,11 +81,13 @@ in diffutils = packages.foundation.diffutils.versions."3.10-stage1-passthrough"; findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; }; - host = { - binutils = packages.foundation.binutils.versions."2.41-stage1"; + host = lib.attrs.when (config.platform.build != config.platform.host) { gcc = packages.foundation.gcc.versions."13.2.0-stage2"; + binutils = packages.foundation.binutils.versions."2.41-stage1"; }; }; }; diff --git a/tidepool/src/packages/foundation/gnupatch/versions/2.7-stage1-passthrough.nix b/tidepool/src/packages/foundation/gnupatch/versions/2.7-stage1-passthrough.nix index 23595c6..3721563 100644 --- a/tidepool/src/packages/foundation/gnupatch/versions/2.7-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/gnupatch/versions/2.7-stage1-passthrough.nix @@ -10,7 +10,12 @@ let package = packages.foundation.gnupatch.versions."2.7-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + if config.platform.build != config.platform.target then + config.platform.build + else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then + "i686-linux" + else + "x86_64-linux" ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; @@ -25,7 +30,10 @@ in license = lib.licenses.gpl3Plus; }; - platforms.build = "@linux"; + platforms = { + build = "@linux"; + host = "@linux"; + }; builder = builders.foundation.passthrough.extend { settings = { diff --git a/tidepool/src/packages/foundation/gnupatch/versions/2.7-stage1.nix b/tidepool/src/packages/foundation/gnupatch/versions/2.7-stage1.nix index 24c5ead..592cb44 100644 --- a/tidepool/src/packages/foundation/gnupatch/versions/2.7-stage1.nix +++ b/tidepool/src/packages/foundation/gnupatch/versions/2.7-stage1.nix @@ -25,6 +25,9 @@ in }; platforms = [ + { + build = "i686-linux"; + } { build = "i686-linux"; host = "x86_64-linux"; @@ -58,6 +61,8 @@ in diffutils = packages.foundation.diffutils.versions."3.10-bootstrap"; findutils = packages.foundation.findutils.versions."4.9.0-bootstrap"; xz = packages.foundation.xz.versions."5.4.3-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; } else { @@ -71,11 +76,13 @@ in diffutils = packages.foundation.diffutils.versions."3.10-stage1-passthrough"; findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; }; - host = { - binutils = packages.foundation.binutils.versions."2.41-stage1"; + host = lib.attrs.when (config.platform.build != config.platform.host) { gcc = packages.foundation.gcc.versions."13.2.0-stage2"; + binutils = packages.foundation.binutils.versions."2.41-stage1"; }; }; }; diff --git a/tidepool/src/packages/foundation/gnused/versions/4.9-stage1-passthrough.nix b/tidepool/src/packages/foundation/gnused/versions/4.9-stage1-passthrough.nix index b2e08eb..eecf142 100644 --- a/tidepool/src/packages/foundation/gnused/versions/4.9-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/gnused/versions/4.9-stage1-passthrough.nix @@ -10,7 +10,12 @@ let package = packages.foundation.gnused.versions."4.9-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + if config.platform.build != config.platform.target then + config.platform.build + else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then + "i686-linux" + else + "x86_64-linux" ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; @@ -25,7 +30,10 @@ in license = lib.licenses.gpl3Plus; }; - platforms.build = "@linux"; + platforms = { + build = "@linux"; + host = "@linux"; + }; builder = builders.foundation.passthrough.extend { settings = { diff --git a/tidepool/src/packages/foundation/gnused/versions/4.9-stage1.nix b/tidepool/src/packages/foundation/gnused/versions/4.9-stage1.nix index e2db810..2c8ab9a 100644 --- a/tidepool/src/packages/foundation/gnused/versions/4.9-stage1.nix +++ b/tidepool/src/packages/foundation/gnused/versions/4.9-stage1.nix @@ -25,6 +25,9 @@ in }; platforms = [ + { + build = "i686-linux"; + } { build = "i686-linux"; host = "x86_64-linux"; @@ -57,6 +60,8 @@ in diffutils = packages.foundation.diffutils.versions."3.10-bootstrap"; findutils = packages.foundation.findutils.versions."4.9.0-bootstrap"; xz = packages.foundation.xz.versions."5.4.3-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; } else { @@ -70,11 +75,13 @@ in diffutils = packages.foundation.diffutils.versions."3.10-stage1-passthrough"; findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; }; - host = { - binutils = packages.foundation.binutils.versions."2.41-stage1"; + host = lib.attrs.when (config.platform.build != config.platform.host) { gcc = packages.foundation.gcc.versions."13.2.0-stage2"; + binutils = packages.foundation.binutils.versions."2.41-stage1"; }; }; }; diff --git a/tidepool/src/packages/foundation/gnutar/versions/1.35-stage1-passthrough.nix b/tidepool/src/packages/foundation/gnutar/versions/1.35-stage1-passthrough.nix index e55b5ca..3aa404f 100644 --- a/tidepool/src/packages/foundation/gnutar/versions/1.35-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/gnutar/versions/1.35-stage1-passthrough.nix @@ -10,7 +10,12 @@ let package = packages.foundation.gnutar.versions."1.35-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + if config.platform.build != config.platform.target then + config.platform.build + else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then + "i686-linux" + else + "x86_64-linux" ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; @@ -25,7 +30,10 @@ in license = lib.licenses.gpl3Plus; }; - platforms.build = "@linux"; + platforms = { + build = "@linux"; + host = "@linux"; + }; builder = builders.foundation.passthrough.extend { settings = { diff --git a/tidepool/src/packages/foundation/gnutar/versions/1.35-stage1.nix b/tidepool/src/packages/foundation/gnutar/versions/1.35-stage1.nix index 6a71fcc..e161441 100644 --- a/tidepool/src/packages/foundation/gnutar/versions/1.35-stage1.nix +++ b/tidepool/src/packages/foundation/gnutar/versions/1.35-stage1.nix @@ -25,6 +25,9 @@ in }; platforms = [ + { + build = "i686-linux"; + } { build = "i686-linux"; host = "x86_64-linux"; @@ -58,6 +61,8 @@ in diffutils = packages.foundation.diffutils.versions."3.10-bootstrap"; findutils = packages.foundation.findutils.versions."4.9.0-bootstrap"; xz = packages.foundation.xz.versions."5.4.3-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; } else { @@ -71,11 +76,13 @@ in diffutils = packages.foundation.diffutils.versions."3.10-stage1-passthrough"; findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; }; - host = { - binutils = packages.foundation.binutils.versions."2.41-stage1"; + host = lib.attrs.when (config.platform.build != config.platform.host) { gcc = packages.foundation.gcc.versions."13.2.0-stage2"; + binutils = packages.foundation.binutils.versions."2.41-stage1"; }; }; }; diff --git a/tidepool/src/packages/foundation/gzip/versions/1.13-stage1-passthrough.nix b/tidepool/src/packages/foundation/gzip/versions/1.13-stage1-passthrough.nix index 14977df..92ee61d 100644 --- a/tidepool/src/packages/foundation/gzip/versions/1.13-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/gzip/versions/1.13-stage1-passthrough.nix @@ -10,7 +10,12 @@ let package = packages.foundation.gzip.versions."1.13-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + if config.platform.build != config.platform.target then + config.platform.build + else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then + "i686-linux" + else + "x86_64-linux" ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; @@ -25,7 +30,10 @@ in license = lib.licenses.gpl3Plus; }; - platforms.build = "@linux"; + platforms = { + build = "@linux"; + host = "@linux"; + }; builder = builders.foundation.passthrough.extend { settings = { diff --git a/tidepool/src/packages/foundation/gzip/versions/1.13-stage1.nix b/tidepool/src/packages/foundation/gzip/versions/1.13-stage1.nix index 27c3803..d57f0d0 100644 --- a/tidepool/src/packages/foundation/gzip/versions/1.13-stage1.nix +++ b/tidepool/src/packages/foundation/gzip/versions/1.13-stage1.nix @@ -25,6 +25,9 @@ in }; platforms = [ + { + build = "i686-linux"; + } { build = "i686-linux"; host = "x86_64-linux"; @@ -33,9 +36,6 @@ in build = "x86_64-linux"; host = "@linux"; } - { - build = "@linux"; - } ]; builder = builders.foundation.basic; @@ -60,6 +60,8 @@ in diffutils = packages.foundation.diffutils.versions."3.10-bootstrap"; findutils = packages.foundation.findutils.versions."4.9.0-bootstrap"; xz = packages.foundation.xz.versions."5.4.3-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; } else { @@ -73,11 +75,13 @@ in diffutils = packages.foundation.diffutils.versions."3.10-stage1-passthrough"; findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; }; - host = { - binutils = packages.foundation.binutils.versions."2.41-stage1"; + host = lib.attrs.when (config.platform.build != config.platform.host) { gcc = packages.foundation.gcc.versions."13.2.0-stage2"; + binutils = packages.foundation.binutils.versions."2.41-stage1"; }; }; }; diff --git a/tidepool/src/packages/foundation/linux-headers/versions/6.5.6-stage1-passthrough.nix b/tidepool/src/packages/foundation/linux-headers/versions/6.5.6-stage1-passthrough.nix index 5c7a5a5..e0e09c2 100644 --- a/tidepool/src/packages/foundation/linux-headers/versions/6.5.6-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/linux-headers/versions/6.5.6-stage1-passthrough.nix @@ -5,7 +5,14 @@ let package = packages.foundation.linux-headers.versions."6.5.6-stage1".extend { platform = { - build = lib.modules.overrides.force "i686-linux"; + build = lib.modules.overrides.force ( + if config.platform.build != config.platform.target then + config.platform.build + else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then + "i686-linux" + else + "x86_64-linux" + ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; }; @@ -18,7 +25,10 @@ in license = lib.licenses.lgpl2Plus; }; - platforms.build = "@linux"; + platforms = { + build = "@linux"; + host = "@linux"; + }; builder = builders.foundation.passthrough.extend { settings = { diff --git a/tidepool/src/packages/foundation/linux-headers/versions/6.5.6-stage1.nix b/tidepool/src/packages/foundation/linux-headers/versions/6.5.6-stage1.nix index 310009e..22717cf 100644 --- a/tidepool/src/packages/foundation/linux-headers/versions/6.5.6-stage1.nix +++ b/tidepool/src/packages/foundation/linux-headers/versions/6.5.6-stage1.nix @@ -45,6 +45,8 @@ in gnutar = packages.foundation.gnutar.versions."1.35-bootstrap"; gzip = packages.foundation.gzip.versions."1.13-bootstrap"; xz = packages.foundation.xz.versions."5.4.3-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; } else { @@ -58,15 +60,12 @@ in gnutar = packages.foundation.gnutar.versions."1.35-stage1-passthrough"; gzip = packages.foundation.gzip.versions."1.13-stage1-passthrough"; xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; }; - - host = { + host = lib.attrs.when (config.platform.build != config.platform.host) { + gcc = packages.foundation.gcc.versions."13.2.0-stage2"; binutils = packages.foundation.binutils.versions."2.41-stage1"; - gcc = - if (config.platform.build == "i686-linux") then - packages.foundation.gcc.versions."13.2.0-bootstrap" - else - packages.foundation.gcc.versions."13.2.0-stage4"; }; }; }; @@ -79,7 +78,7 @@ in build = '' make -j $NIX_BUILD_CORES V=1 \ - "CC=$CC" \ + "CC=$CC_FOR_TARGET" \ "HOSTCC=$CC" \ ARCH=${platform.target.linux.arch} \ headers diff --git a/tidepool/src/packages/foundation/musl/default.nix b/tidepool/src/packages/foundation/musl/default.nix index a25d78d..71ea175 100644 --- a/tidepool/src/packages/foundation/musl/default.nix +++ b/tidepool/src/packages/foundation/musl/default.nix @@ -2,10 +2,12 @@ { config.packages.foundation.musl = { stable = config.packages.foundation.musl.versions."1.2.4-bootstrap"; + latest = config.packages.foundation.musl.versions."1.2.4-stage1-passthrough"; versions = { - "1.2.4" = ./versions/1.2.4.nix; "1.2.4-bootstrap" = ./versions/1.2.4-bootstrap.nix; + "1.2.4-stage1-passthrough" = ./versions/1.2.4-stage1-passthrough.nix; + "1.2.4-stage1" = ./versions/1.2.4-stage1.nix; }; }; } diff --git a/tidepool/src/packages/foundation/musl/versions/1.2.4-stage1-passthrough.nix b/tidepool/src/packages/foundation/musl/versions/1.2.4-stage1-passthrough.nix new file mode 100644 index 0000000..d489075 --- /dev/null +++ b/tidepool/src/packages/foundation/musl/versions/1.2.4-stage1-passthrough.nix @@ -0,0 +1,52 @@ +{ config, global }: + +let + inherit (global) + lib + packages + builders + ; + + package = packages.foundation.musl.versions."1.2.4-stage1".extend { + platform = { + build = lib.modules.overrides.force ( + if config.platform.build != config.platform.target then + config.platform.build + else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then + "i686-linux" + else + "x86_64-linux" + ); + host = lib.modules.overrides.force config.platform.host; + target = lib.modules.overrides.force config.platform.target; + }; + }; +in +{ + config = { + meta = { + description = "An efficient, small, quality libc implementation."; + homepage = "https://musl.libc.org"; + license = lib.licenses.mit; + }; + + platforms = [ + { + build = "@linux"; + host = "@linux"; + } + { + build = "@linux"; + target = "@linux"; + } + ]; + + builder = builders.foundation.passthrough.extend { + settings = { + derivation = package.package; + }; + }; + + hooks = package.hooks; + }; +} diff --git a/tidepool/src/packages/foundation/musl/versions/1.2.4-stage1.nix b/tidepool/src/packages/foundation/musl/versions/1.2.4-stage1.nix new file mode 100644 index 0000000..074b286 --- /dev/null +++ b/tidepool/src/packages/foundation/musl/versions/1.2.4-stage1.nix @@ -0,0 +1,144 @@ +{ config, global }: + +let + inherit (global) lib packages builders; + + version = lib.strings.removeSuffix "-stage1" config.version; + + platform = { + build = lib.systems.withBuildInfo config.platform.build; + host = lib.systems.withBuildInfo config.platform.host; + target = lib.systems.withBuildInfo config.platform.target; + }; + +in +{ + config = { + meta = { + description = "An efficient, small, quality libc implementation."; + homepage = "https://musl.libc.org"; + license = lib.licenses.mit; + }; + + platforms = [ + { + build = "i686-linux"; + } + { + build = "i686-linux"; + host = "x86_64-linux"; + } + { + build = "i686-linux"; + target = "x86_64-linux"; + } + { + build = "x86_64-linux"; + host = "@linux"; + } + { + build = "x86_64-linux"; + target = "@linux"; + } + ]; + + builder = builders.foundation.basic; + + src = builtins.fetchurl { + url = "https://musl.libc.org/releases/musl-${version}.tar.gz"; + sha256 = "ejXq4z1TcqfA2hGI3nmHJvaIJVE7euPr6XqqpSEU8Dk="; + }; + + deps = { + build = { + build = + if (config.platform.build == "i686-linux") then + { + gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; + gnused = packages.foundation.gnused.versions."4.9-bootstrap"; + gnugrep = packages.foundation.gnugrep.versions."3.11-bootstrap"; + gnutar = packages.foundation.gnutar.versions."1.35-bootstrap"; + gzip = packages.foundation.gzip.versions."1.13-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; + bash = packages.foundation.bash.versions."5.2.15-bootstrap"; + } + else + { + gnumake = packages.foundation.gnumake.versions."4.4.1-stage1-passthrough"; + gnused = packages.foundation.gnused.versions."4.9-stage1-passthrough"; + gnugrep = packages.foundation.gnugrep.versions."3.11-stage1-passthrough"; + gnutar = packages.foundation.gnutar.versions."1.35-stage1-passthrough"; + gzip = packages.foundation.gzip.versions."1.13-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; + bash = packages.foundation.bash.versions."5.2.15-stage1-passthrough"; + }; + host = lib.attrs.when (config.platform.build != config.platform.host) { + gcc = packages.foundation.gcc.versions."13.2.0-stage2"; + binutils = packages.foundation.binutils.versions."2.41-stage1"; + }; + target = lib.attrs.when (config.platform.host != config.platform.target) { + gcc = packages.foundation.gcc.versions."13.2.0-stage2"; + binutils = packages.foundation.binutils.versions."2.41-stage1"; + }; + }; + host = { + host = lib.attrs.when (config.platform.build != config.platform.host) { + bash = packages.foundation.bash.versions."5.2.15-stage1"; + }; + }; + }; + + phases = { + "aux:gcc:env" = ""; + "aux:gcc-cross:env" = ""; + + unpack = '' + # Unpack + tar xzf ${config.src} + cd musl-${version} + ''; + + patch = '' + # Patch + # https://github.com/ZilchOS/bootstrap-from-tcc/blob/2e0c68c36b3437386f786d619bc9a16177f2e149/using-nix/2a3-intermediate-musl.nix + sed -i 's|/bin/sh|${config.deps.build.build.bash.package}/bin/bash|' \ + tools/*.sh + # patch popen/system to search in PATH instead of hardcoding /bin/sh + sed -i 's|posix_spawn(&pid, "/bin/sh",|posix_spawnp(\&pid, "sh",|' \ + src/stdio/popen.c src/process/system.c + sed -i 's|execl("/bin/sh", "sh", "-c",|execlp("sh", "-c",|'\ + src/misc/wordexp.c + ''; + + configure = '' + # Configure + bash ./configure \ + --prefix=$out \ + --build=${platform.build.triple} \ + --host=${platform.host.triple} \ + --target=${platform.target.triple} \ + --syslibdir=$out/lib \ + --enable-wrapper + ''; + + build = '' + # Build + make -j $NIX_BUILD_CORES + ''; + + install = '' + # Install + make -j $NIX_BUILD_CORES install + sed -i 's|/bin/sh|${ + if (config.platform.build != config.platform.host) then + config.deps.host.host.bash.package + else + config.deps.build.build.bash.package + }/bin/bash|' $out/bin/* + ln -s ../lib/libc.so $out/bin/ldd + ''; + }; + }; +} diff --git a/tidepool/src/packages/foundation/musl/versions/1.2.4.nix b/tidepool/src/packages/foundation/musl/versions/1.2.4.nix deleted file mode 100644 index 8bd3526..0000000 --- a/tidepool/src/packages/foundation/musl/versions/1.2.4.nix +++ /dev/null @@ -1,99 +0,0 @@ -{ config, global }: - -let - inherit (global) lib packages builders; - - platform = { - build = lib.systems.withBuildInfo config.platform.build; - host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; - }; -in -{ - config = { - meta = { - description = "An efficient, small, quality libc implementation."; - homepage = "https://musl.libc.org"; - license = lib.licenses.mit; - }; - - platforms = { - build = "i686-linux"; - target = [ - "i686-linux" - "x86_64-linux" - ]; - }; - - builder = builders.foundation.basic; - - src = builtins.fetchurl { - url = "https://musl.libc.org/releases/musl-${config.version}.tar.gz"; - sha256 = "ejXq4z1TcqfA2hGI3nmHJvaIJVE7euPr6XqqpSEU8Dk="; - }; - - deps = { - build = { - only = { - inherit (packages.foundation) - gcc - binutils - gnumake - gnused - gnugrep - gnutar - gzip - ; - }; - - host = { - inherit (packages.foundation) - bash - ; - }; - }; - }; - - phases = { - unpack = '' - # Unpack - tar xzf ${config.src} - cd musl-${config.version} - ''; - - patch = '' - # Patch - # https://github.com/ZilchOS/bootstrap-from-tcc/blob/2e0c68c36b3437386f786d619bc9a16177f2e149/using-nix/2a3-intermediate-musl.nix - sed -i 's|/bin/sh|${config.deps.build.host.bash.package}/bin/bash|' \ - tools/*.sh - # patch popen/system to search in PATH instead of hardcoding /bin/sh - sed -i 's|posix_spawn(&pid, "/bin/sh",|posix_spawnp(\&pid, "sh",|' \ - src/stdio/popen.c src/process/system.c - sed -i 's|execl("/bin/sh", "sh", "-c",|execlp("sh", "-c",|'\ - src/misc/wordexp.c - ''; - - configure = '' - # Configure - bash ./configure \ - --prefix=$out \ - --build=${platform.build.triple} \ - --host=${platform.host.triple} \ - --syslibdir=$out/lib \ - --enable-wrapper - ''; - - build = '' - # Build - make -j $NIX_BUILD_CORES - ''; - - install = '' - # Install - make -j $NIX_BUILD_CORES install - sed -i 's|/bin/sh|${config.deps.build.host.bash.package}/bin/bash|' $out/bin/* - ln -s ../lib/libc.so $out/bin/ldd - ''; - }; - }; -} diff --git a/tidepool/src/packages/foundation/python/versions/3.12.0-stage1.nix b/tidepool/src/packages/foundation/python/versions/3.12.0-stage1.nix index 711379e..e77db5d 100644 --- a/tidepool/src/packages/foundation/python/versions/3.12.0-stage1.nix +++ b/tidepool/src/packages/foundation/python/versions/3.12.0-stage1.nix @@ -27,7 +27,19 @@ in license = lib.licenses.psfl; }; - platforms.build = "@linux"; + platforms = [ + { + build = "i686-linux"; + } + { + build = "i686-linux"; + host = "x86_64-linux"; + } + { + build = "x86_64-linux"; + host = "@linux"; + } + ]; builder = builders.foundation.basic; @@ -38,32 +50,51 @@ in deps = { build = { - build = { - gnumake = packages.foundation.gnumake.versions."4.4.1-stage1-passthrough"; - gnupatch = packages.foundation.gnupatch.versions."2.7-stage1-passthrough"; - gnused = packages.foundation.gnused.versions."4.9-stage1-passthrough"; - gnutar = packages.foundation.gnutar.versions."1.35-stage1-passthrough"; - gnugrep = packages.foundation.gnugrep.versions."3.11-stage1-passthrough"; - gawk = packages.foundation.gawk.versions."5.2.2-stage1-passthrough"; - diffutils = packages.foundation.diffutils.versions."3.10-stage1-passthrough"; - findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; - xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; - zlib = packages.foundation.zlib.versions."1.3-stage1"; - }; + build = + if (config.platform.build == "i686-linux") then + { + gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; + gnupatch = packages.foundation.gnupatch.versions."2.7-bootstrap"; + gnused = packages.foundation.gnused.versions."4.9-bootstrap"; + gnutar = packages.foundation.gnutar.versions."1.35-bootstrap"; + gnugrep = packages.foundation.gnugrep.versions."3.11-bootstrap"; + gawk = packages.foundation.gawk.versions."5.2.2-bootstrap"; + diffutils = packages.foundation.diffutils.versions."3.10-bootstrap"; + findutils = packages.foundation.findutils.versions."4.9.0-bootstrap"; + xz = packages.foundation.xz.versions."5.4.3-bootstrap"; + zlib = packages.foundation.zlib.versions."1.3-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; + } + // lib.attrs.when (config.platform.build != config.platform.host) { + python = packages.foundation.python.versions."3.12.0-bootstrap"; + } + else + { + gnumake = packages.foundation.gnumake.versions."4.4.1-stage1-passthrough"; + gnupatch = packages.foundation.gnupatch.versions."2.7-stage1-passthrough"; + gnused = packages.foundation.gnused.versions."4.9-stage1-passthrough"; + gnutar = packages.foundation.gnutar.versions."1.35-stage1-passthrough"; + gnugrep = packages.foundation.gnugrep.versions."3.11-stage1-passthrough"; + gawk = packages.foundation.gawk.versions."5.2.2-stage1-passthrough"; + diffutils = packages.foundation.diffutils.versions."3.10-stage1-passthrough"; + findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; + xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; + zlib = packages.foundation.zlib.versions."1.3-stage1"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; + } + // lib.attrs.when (config.platform.build != config.platform.host) { + python = packages.foundation.python.versions."3.12.0-stage1"; + }; - host = { - binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + host = lib.attrs.when (config.platform.build != config.platform.host) { + gcc = packages.foundation.gcc.versions."13.2.0-stage2"; + binutils = packages.foundation.binutils.versions."2.41-stage1"; }; }; }; - env = { - C_INCLUDE_PATH = "${config.deps.build.build.zlib.package}/include"; - LIBRARY_PATH = "${config.deps.build.build.zlib.package}/lib"; - LD_LIBRARY_PATH = "${config.deps.build.build.zlib.package}/lib"; - }; - phases = { unpack = '' # Unpack @@ -76,12 +107,26 @@ in ${lib.strings.concatMapSep "\n" (file: "patch -Np1 -i ${file}") patches} ''; - configure = '' - bash ./configure \ - --prefix=$out \ - --build=${platform.build.triple} \ - --host=${platform.host.triple} - ''; + configure = + + let + flags = builtins.concatStringsSep " " ( + [ + "--prefix=$out" + "--build=${platform.build.triple}" + "--host=${platform.host.triple}" + ] + ++ lib.lists.when (config.platform.build != config.platform.host) [ + "--with-build-python=\"${config.deps.build.build.python.package}/bin/python3\"" + "ac_cv_buggy_getaddrinfo=no" + "ac_cv_file__dev_ptmx=yes" + "ac_cv_file__dev_ptc=yes" + ] + ); + in + '' + bash ./configure ${flags} + ''; build = '' # Build diff --git a/tidepool/src/packages/foundation/xz/versions/5.4.3-stage1-passthrough.nix b/tidepool/src/packages/foundation/xz/versions/5.4.3-stage1-passthrough.nix index f103fb7..377a2d1 100644 --- a/tidepool/src/packages/foundation/xz/versions/5.4.3-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/xz/versions/5.4.3-stage1-passthrough.nix @@ -10,7 +10,12 @@ let package = packages.foundation.xz.versions."5.4.3-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + if config.platform.build != config.platform.target then + config.platform.build + else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then + "i686-linux" + else + "x86_64-linux" ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; @@ -28,7 +33,10 @@ in ]; }; - platforms.build = "@linux"; + platforms = { + build = "@linux"; + host = "@linux"; + }; builder = builders.foundation.passthrough.extend { settings = { diff --git a/tidepool/src/packages/foundation/xz/versions/5.4.3-stage1.nix b/tidepool/src/packages/foundation/xz/versions/5.4.3-stage1.nix index 636ff34..411ceb9 100644 --- a/tidepool/src/packages/foundation/xz/versions/5.4.3-stage1.nix +++ b/tidepool/src/packages/foundation/xz/versions/5.4.3-stage1.nix @@ -27,6 +27,9 @@ in }; platforms = [ + { + build = "i686-linux"; + } { build = "i686-linux"; host = "x86_64-linux"; @@ -56,6 +59,8 @@ in gnugrep = packages.foundation.gnugrep.versions."3.11-bootstrap"; gzip = packages.foundation.gzip.versions."1.13-bootstrap"; xz = packages.foundation.xz.versions."5.4.3-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; } else { @@ -66,11 +71,13 @@ in gnugrep = packages.foundation.gnugrep.versions."3.11-stage1-passthrough"; gzip = packages.foundation.gzip.versions."1.13-stage1-passthrough"; xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; }; - host = { - binutils = packages.foundation.binutils.versions."2.41-stage1"; + host = lib.attrs.when (config.platform.build != config.platform.host) { gcc = packages.foundation.gcc.versions."13.2.0-stage2"; + binutils = packages.foundation.binutils.versions."2.41-stage1"; }; }; }; diff --git a/tidepool/src/packages/foundation/zlib/versions/1.3-bootstrap.nix b/tidepool/src/packages/foundation/zlib/versions/1.3-bootstrap.nix index 466a714..a2e8e71 100644 --- a/tidepool/src/packages/foundation/zlib/versions/1.3-bootstrap.nix +++ b/tidepool/src/packages/foundation/zlib/versions/1.3-bootstrap.nix @@ -19,5 +19,13 @@ in derivation = foundation.stage1-zlib; }; }; + + hooks = ctx: { + "aux:zlib:env" = lib.dag.entry.between [ "unpack" ] [ "configure" ] '' + export C_INCLUDE_PATH="''${C_INCLUDE_PATH:+$C_INCLUDE_PATH:}${foundation.stage1-zlib}/include" + export LIBRARY_PATH="''${LIBRARY_PATH:+$LIBRARY_PATH:}${foundation.stage1-zlib}/lib" + export LD_LIBRARY_PATH="''${LIBRARY_PATH:+$LIBRARY_PATH:}${foundation.stage1-zlib}/lib" + ''; + }; }; } diff --git a/tidepool/src/packages/foundation/zlib/versions/1.3-stage1.nix b/tidepool/src/packages/foundation/zlib/versions/1.3-stage1.nix index c61c1b1..7175527 100644 --- a/tidepool/src/packages/foundation/zlib/versions/1.3-stage1.nix +++ b/tidepool/src/packages/foundation/zlib/versions/1.3-stage1.nix @@ -8,6 +8,12 @@ let ; version = lib.strings.removeSuffix "-stage1" config.version; + + platform = { + build = lib.systems.withBuildInfo config.platform.build; + host = lib.systems.withBuildInfo config.platform.host; + target = lib.systems.withBuildInfo config.platform.target; + }; in { config = { @@ -17,7 +23,19 @@ in license = lib.licenses.zlib; }; - platforms.build = "@linux"; + platforms = [ + { + build = "i686-linux"; + } + { + build = "i686-linux"; + host = "x86_64-linux"; + } + { + build = "x86_64-linux"; + host = "@linux"; + } + ]; builder = builders.foundation.basic; @@ -28,21 +46,43 @@ in deps = { build = { - build = { - gnumake = packages.foundation.gnumake.versions."4.4.1-stage1-passthrough"; - gnused = packages.foundation.gnused.versions."4.9-stage1-passthrough"; - gnutar = packages.foundation.gnutar.versions."1.35-stage1-passthrough"; - gnugrep = packages.foundation.gnugrep.versions."3.11-stage1-passthrough"; - xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; - }; + build = + if (config.platform.build == "i686-linux") then + { + gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; + gnused = packages.foundation.gnused.versions."4.9-bootstrap"; + gnutar = packages.foundation.gnutar.versions."1.35-bootstrap"; + gnugrep = packages.foundation.gnugrep.versions."3.11-bootstrap"; + xz = packages.foundation.xz.versions."5.4.3-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; + } + else + { + gnumake = packages.foundation.gnumake.versions."4.4.1-stage1-passthrough"; + gnused = packages.foundation.gnused.versions."4.9-stage1-passthrough"; + gnutar = packages.foundation.gnutar.versions."1.35-stage1-passthrough"; + gnugrep = packages.foundation.gnugrep.versions."3.11-stage1-passthrough"; + xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; + }; - host = { - binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + host = lib.attrs.when (config.platform.build != config.platform.host) { + gcc = packages.foundation.gcc.versions."13.2.0-stage2"; + binutils = packages.foundation.binutils.versions."2.41-stage1"; }; }; }; + hooks = ctx: { + "aux:zlib:env" = lib.dag.entry.between [ "unpack" ] [ "configure" ] '' + export C_INCLUDE_PATH="''${C_INCLUDE_PATH:+$C_INCLUDE_PATH:}${config.package}/include" + export LIBRARY_PATH="''${LIBRARY_PATH:+$LIBRARY_PATH:}${config.package}/lib" + export LD_LIBRARY_PATH="''${LIBRARY_PATH:+$LIBRARY_PATH:}${config.package}/lib" + ''; + }; + phases = { unpack = '' # Unpack @@ -52,6 +92,7 @@ in configure = '' # Configure + export CHOST=${platform.host.triple} bash ./configure \ --prefix=$out '';