diff --git a/tidepool/src/builders/basic.nix b/tidepool/src/builders/basic.nix index bcbf459..5744e2e 100644 --- a/tidepool/src/builders/basic.nix +++ b/tidepool/src/builders/basic.nix @@ -53,10 +53,19 @@ in script = lib.strings.concatMapSep "\n" (entry: entry.value) sorted.result; - executable = if system == "i686-linux" then - "${foundation.stage2-bash}/bin/bash" - else - "${(lib.packages.build packages.foundation.bash.versions."5.2.15-stage1" "i686-linux" system system).package}/bin/bash"; + executable = + if system == "i686-linux" then + "${foundation.stage2-bash}/bin/bash" + else if system == "x86_64-linux" then + "${ + (lib.packages.build packages.foundation.bash.versions."5.2.15-stage1" "i686-linux" system system) + .package + }/bin/bash" + else + "${ + (lib.packages.build packages.foundation.bash.versions."5.2.15-stage1" "x86_64-linux" system system) + .package + }/bin/bash"; built = builtins.derivation ( package.env @@ -87,6 +96,13 @@ in (lib.packages.build packages.foundation.coreutils.versions."9.4-stage1" "i686-linux" system system) .package ] + ++ lib.lists.when (system != "i686-linux" && system != "x86_64-linux") [ + (lib.packages.build packages.foundation.bash.versions."5.2.15-stage1" "x86_64-linux" system system) + .package + (lib.packages.build packages.foundation.coreutils.versions."9.4-stage1" "x86_64-linux" system + system + ).package + ] ); in builtins.concatStringsSep ":" ( 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 679039d..da2e9c6 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 @@ -9,9 +9,11 @@ let ; inherit (global.internal.packages) foundation; - package = packages.foundation.gnupatch.versions."2.7-stage1".extend { + package = packages.foundation.bash.versions."5.2.15-stage1".extend { platform = { - build = lib.modules.overrides.force "i686-linux"; + build = lib.modules.overrides.force ( + if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; }; @@ -32,6 +34,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "aarch64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "riscv64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.passthrough.extend { 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 853de11..20391a4 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 @@ -32,6 +32,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "x86_64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "x86_64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.basic; @@ -43,17 +53,31 @@ 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"; - }; + 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"; + } + 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"; + }; 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/binutils/versions/2.41-stage1-passthrough.nix b/tidepool/src/packages/foundation/binutils/versions/2.41-stage1-passthrough.nix index f92eac5..743341d 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 @@ -11,7 +11,9 @@ let package = packages.foundation.binutils.versions."2.41-stage1".extend { platform = { - build = lib.modules.overrides.force "i686-linux"; + build = lib.modules.overrides.force ( + if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; }; @@ -31,6 +33,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "aarch64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "riscv64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.passthrough.extend { 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 e96ade5..f5a6a21 100644 --- a/tidepool/src/packages/foundation/binutils/versions/2.41-stage1.nix +++ b/tidepool/src/packages/foundation/binutils/versions/2.41-stage1.nix @@ -81,6 +81,31 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "x86_64-linux"; + host = "x86_64-linux"; + target = "x86_64-linux"; + } + { + build = "x86_64-linux"; + host = "x86_64-linux"; + target = "aarch64-linux"; + } + { + build = "x86_64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "x86_64-linux"; + host = "x86_64-linux"; + target = "riscv64-linux"; + } + { + build = "x86_64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.basic; @@ -92,33 +117,54 @@ 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"; - gnupatch = packages.foundation.gnupatch.versions."2.7-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"; - 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"; - binutils = packages.foundation.binutils.versions."2.41-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"; + gnupatch = packages.foundation.gnupatch.versions."2.7-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"; + 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"; + 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"; + gnupatch = packages.foundation.gnupatch.versions."2.7-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"; + 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"; + 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-stage2"; + 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"; + packages.foundation.binutils.versions."2.41-stage1-passthrough"; }; }; }; 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 b50d6e1..e0ae93e 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 @@ -11,7 +11,9 @@ let package = packages.foundation.bzip2.versions."1.0.8-stage1".extend { platform = { - build = lib.modules.overrides.force "i686-linux"; + build = lib.modules.overrides.force ( + if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; }; @@ -31,6 +33,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "aarch64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "riscv64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.passthrough.extend { 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 30eada7..7be52de 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 @@ -35,6 +35,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "x86_64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "x86_64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.basic; @@ -46,11 +56,19 @@ in deps = { build = { - build = { - 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"; - }; + build = + if (config.platform.build == "i686-linux") then + { + 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"; + } + 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"; + }; host = { binutils = packages.foundation.binutils.versions."2.41-stage1"; 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 f85f703..34b972f 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 @@ -11,7 +11,9 @@ let package = packages.foundation.coreutils.versions."9.4-stage1".extend { platform = { - build = lib.modules.overrides.force "i686-linux"; + build = lib.modules.overrides.force ( + if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; }; @@ -31,6 +33,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "aarch64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "riscv64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.passthrough.extend { 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 4f0c0b4..fffa0a7 100644 --- a/tidepool/src/packages/foundation/coreutils/versions/9.4-stage1.nix +++ b/tidepool/src/packages/foundation/coreutils/versions/9.4-stage1.nix @@ -42,6 +42,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "x86_64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "x86_64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.basic; @@ -53,17 +63,31 @@ 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"; - }; + 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"; + } + 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"; + }; host = { binutils = packages.foundation.binutils.versions."2.41-stage1"; 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 c1daef8..9a69e7e 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 @@ -11,7 +11,9 @@ let package = packages.foundation.diffutils.versions."3.10-stage1".extend { platform = { - build = lib.modules.overrides.force "i686-linux"; + build = lib.modules.overrides.force ( + if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; }; @@ -31,6 +33,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "aarch64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "riscv64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.passthrough.extend { 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 a487971..766900a 100644 --- a/tidepool/src/packages/foundation/diffutils/versions/3.10-stage1.nix +++ b/tidepool/src/packages/foundation/diffutils/versions/3.10-stage1.nix @@ -31,6 +31,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "x86_64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "x86_64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.basic; @@ -42,18 +52,33 @@ 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"; + } + 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"; + }; host = { 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 eb08710..b2ea1e7 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 @@ -11,7 +11,9 @@ let package = packages.foundation.findutils.versions."4.9.0-stage1".extend { platform = { - build = lib.modules.overrides.force "i686-linux"; + build = lib.modules.overrides.force ( + if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; }; @@ -31,6 +33,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "aarch64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "riscv64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.passthrough.extend { 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 b3e0a8d..fdee6e4 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 @@ -31,6 +31,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "x86_64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "x86_64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.basic; @@ -42,18 +52,33 @@ 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"; + } + 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"; + }; host = { 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 0933fab..831e27d 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 @@ -11,7 +11,9 @@ let package = packages.foundation.gawk.versions."5.2.2-stage1".extend { platform = { - build = lib.modules.overrides.force "i686-linux"; + build = lib.modules.overrides.force ( + if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; }; @@ -31,6 +33,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "aarch64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "riscv64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.passthrough.extend { 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 4daa6ce..a5bd9eb 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 @@ -31,6 +31,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "x86_64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "x86_64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.basic; @@ -42,18 +52,33 @@ 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"; + } + 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"; + }; host = { 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 6820b41..fea0c27 100644 --- a/tidepool/src/packages/foundation/gcc/default.nix +++ b/tidepool/src/packages/foundation/gcc/default.nix @@ -8,14 +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-stage4"; + latest = config.packages.foundation.gcc.versions."13.2.0-stage5"; versions = { + "13.2.0-stage5" = ./versions/13.2.0-stage5.nix; "13.2.0-stage4" = ./versions/13.2.0-stage4.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; }; }; diff --git a/tidepool/src/packages/foundation/gcc/versions/13.2.0-bootstrap.nix b/tidepool/src/packages/foundation/gcc/versions/13.2.0-bootstrap.nix index 09304bf..a7af20c 100644 --- a/tidepool/src/packages/foundation/gcc/versions/13.2.0-bootstrap.nix +++ b/tidepool/src/packages/foundation/gcc/versions/13.2.0-bootstrap.nix @@ -33,8 +33,8 @@ in hooks = ctx: { "aux:gcc:env" = lib.dag.entry.before [ "unpack" ] '' - export CC='gcc -Wl,-dynamic-linker -Wl,${foundation.stage1-musl}/lib/libc.so' - export CXX='g++ -Wl,-dynamic-linker -Wl,${foundation.stage1-musl}/lib/libc.so' + export CC='gcc -Wl,-dynamic-linker -Wl,${foundation.stage1-musl}/lib/libc.so -B${foundation.stage1-musl}/lib' + export CXX='g++ -Wl,-dynamic-linker -Wl,${foundation.stage1-musl}/lib/libc.so -B${foundation.stage1-musl}/lib' export CC_FOR_TARGET=$CC export CXX_FOR_TARGET=$CXX export CC_FOR_BUILD=$CC 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 new file mode 100644 index 0000000..1b46137 --- /dev/null +++ b/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage0.nix @@ -0,0 +1,208 @@ +# gcc-bootstrap-glibc +{ config, global }: + +let + inherit (global) + lib + packages + builders + mirrors + ; + inherit (global.internal.packages) foundation; + + 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"; + host = "i686-linux"; + target = "i686-linux"; + } + ]; + + builder = builders.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 c11ad9f..d2957fe 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 @@ -90,6 +90,16 @@ in host = "i686-linux"; target = "x86_64-linux"; } + { + build = "x86_64-linux"; + host = "x86_64-linux"; + target = "aarch64-linux"; + } + { + build = "x86_64-linux"; + host = "x86_64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.basic; @@ -128,22 +138,39 @@ in 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"; - gcc = packages.foundation.gcc.versions."13.2.0-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"; - }; - + 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"; + gcc = packages.foundation.gcc.versions."13.2.0-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"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + 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"; + }; target = { binutils = packages.foundation.binutils.versions."2.41-stage1"; }; 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 8094875..0691b89 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 @@ -28,9 +28,7 @@ let gccFlags = [ "-Wl,-dynamic-linker" - "-Wl,${config.deps.target.target.glibc.package}/lib/ld-linux${ - lib.strings.when (platform.target.isx86 && platform.target.is64bit) "-x86-64" - }.so.2" + "-Wl,${config.deps.target.target.glibc.dynamicLinker}" "-B${config.deps.target.target.glibc.package}/lib" ]; @@ -47,7 +45,6 @@ let "--disable-multilib" "--with-headers=${config.deps.target.target.glibc.package}/include" "--with-build-sysroot=/" - # "--with-sysroot=${config.deps.target.target.glibc.package}" "--with-native-system-header-dir=${config.deps.target.target.glibc.package}/include" "--with-build-time-tools=${config.deps.build.target.binutils.package}/bin" ]; @@ -88,6 +85,16 @@ in host = "i686-linux"; target = "x86_64-linux"; } + { + build = "x86_64-linux"; + host = "x86_64-linux"; + target = "aarch64-linux"; + } + { + build = "x86_64-linux"; + host = "x86_64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.basic; @@ -126,21 +133,39 @@ in 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"; - gcc = packages.foundation.gcc.versions."13.2.0-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"; - }; + 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"; + gcc = packages.foundation.gcc.versions."13.2.0-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"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + 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"; + }; target = { binutils = packages.foundation.binutils.versions."2.41-stage1"; @@ -155,14 +180,13 @@ in }; env = { - CC = "gcc -Wl,-dynamic-linker"; - CXX = "g++ -Wl,-dynamic-linker"; - CFLAGS_FOR_TARGET = "-Wl,-dynamic-linker -Wl,${config.deps.target.target.glibc.package}/lib/ld-linux-x86-64.so.2 -B${config.deps.target.target.glibc.package}/lib"; + 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.before [ "unpack" "configure" "build" "install" ] '' + "aux:gcc-cross:env" = lib.dag.entry.before [ "unpack" "configure" "build" "install" ] '' 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 @@ -196,16 +220,14 @@ in configure = '' # Configure - mkdir build cd build - echo PATH=$PATH # TODO(vlinkz) Hack to fix missing crti.o and crtn.o. Figure out how to properly find their paths. mkdir gcc ln -sv ${config.deps.target.target.glibc.package}/lib/{crti.o,crtn.o} gcc - mkdir -p x86_64-unknown-linux-gnu/libstdc++-v3/src - ln -sv ${config.deps.target.target.glibc.package}/lib/{crti.o,crtn.o} x86_64-unknown-linux-gnu/libstdc++-v3/src + mkdir -p ${platform.target.triple}/libstdc++-v3/src + ln -sv ${config.deps.target.target.glibc.package}/lib/{crti.o,crtn.o} ${platform.target.triple}/libstdc++-v3/src bash ../configure ${builtins.concatStringsSep " " configureFlags} ''; diff --git a/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage3-passthrough.nix b/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage3-passthrough.nix index 2dcd6ac..1d1a1b0 100644 --- a/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage3-passthrough.nix +++ b/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage3-passthrough.nix @@ -12,7 +12,9 @@ let package = packages.foundation.gcc.versions."13.2.0-stage3".extend { platform = { - build = lib.modules.overrides.force "i686-linux"; + build = lib.modules.overrides.force ( + if config.platform.target == "x86_64-linux" then "i686-linux" else "x86_64-linux" + ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; }; @@ -32,6 +34,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "aarch64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "riscv64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.passthrough.extend { 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 c9e7149..05025c5 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 @@ -1,4 +1,4 @@ -# gcc-bootstrap +# gcc-crossed { config, global }: let @@ -28,20 +28,18 @@ let gccFlags = [ "-Wl,-dynamic-linker" - "-Wl,${config.deps.host.host.glibc.package}/lib/ld-linux${ - lib.strings.when (platform.target.isx86 && platform.target.is64bit) "-x86-64" - }.so.2" + "-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" ]; configureFlags = [ "--prefix=${builtins.placeholder "out"}" - # Pretend we're native even though we're not - "--build=${platform.target.triple}" + "--build=${platform.build.triple}" "--host=${platform.host.triple}" "--target=${platform.target.triple}" - "--with-as=${config.deps.build.target.binutils.package}/bin/${prefix}as" - "--with-ld=${config.deps.build.target.binutils.package}/bin/${prefix}ld" "--enable-languages=c,c++" "--disable-lto" "--disable-bootstrap" @@ -88,6 +86,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "x86_64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "x86_64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.basic; @@ -126,20 +134,41 @@ in 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-stage1"; - }; + 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-stage1"; + gcc = packages.foundation.gcc.versions."13.2.0-stage0"; + glibc = packages.foundation.glibc.versions."2.38-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"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + glibc = packages.foundation.glibc.versions."2.38-stage1-passthrough"; + }; host = { gcc = packages.foundation.gcc.versions."13.2.0-stage2"; @@ -157,10 +186,23 @@ in }; }; - env = { - CFLAGS_FOR_TARGET = "-Wl,-dynamic-linker -Wl,${config.deps.host.host.glibc.package}/lib/ld-linux-x86-64.so.2"; - LIBRARY_PATH = "${config.deps.host.host.glibc.package}/lib"; + 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: { @@ -177,6 +219,10 @@ in }; phases = { + "aux:gcc:env" = ''''; + + "aux:gcc-cross:env" = ''''; + unpack = '' # Unpack tar xf ${config.src.gcc} @@ -218,9 +264,5 @@ in make -j $NIX_BUILD_CORES install ''; }; - - context = { - a = true; - }; }; } 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 cc4f771..fe06412 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 @@ -24,10 +24,11 @@ let gccFlags = [ "-Wl,-dynamic-linker" - "-Wl,${config.deps.host.host.glibc.package}/lib/ld-linux${ - lib.strings.when (platform.target.isx86 && platform.target.is64bit) "-x86-64" - }.so.2" + "-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" ]; configureFlags = [ @@ -80,6 +81,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "aarch64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "riscv64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.basic; @@ -150,7 +161,7 @@ in }; env = { - CFLAGS_FOR_TARGET = "-Wl,-dynamic-linker -Wl,${"${config.deps.host.host.glibc.package}/lib/ld-linux${lib.strings.when (platform.target.isx86 && platform.target.is64bit) "-x86-64"}.so.2"}"; + CFLAGS_FOR_TARGET = "-Wl,-dynamic-linker -Wl,${config.deps.host.host.glibc.dynamicLinker}"; LIBRARY_PATH = "${config.deps.host.host.glibc.package}/lib"; }; diff --git a/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage5.nix b/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage5.nix new file mode 100644 index 0000000..2c074e3 --- /dev/null +++ b/tidepool/src/packages/foundation/gcc/versions/13.2.0-stage5.nix @@ -0,0 +1,79 @@ +{ config, global }: + +let + inherit (global) + lib + packages + builders + mirrors + ; + inherit (global.internal.packages) foundation; + + package = + if + config.platform.build == config.platform.host && config.platform.host != config.platform.target + then + packages.foundation.gcc.versions."13.2.0-stage2".extend { + platform = lib.modules.overrides.force config.platform; + } + else if + config.platform.build != config.platform.host && config.platform.host == config.platform.target + then + packages.foundation.gcc.versions."13.2.0-stage3".extend { + platform = lib.modules.overrides.force config.platform; + } + else + packages.foundation.gcc.versions."13.2.0-stage4".extend { + platform = lib.modules.overrides.force config.platform; + }; +in +{ + config = { + meta = { + description = "GNU Compiler Collection."; + homepage = "https://gcc.gnu.org"; + license = lib.licenses.gpl3Plus; + }; + + platforms = [ + { + build = "i686-linux"; + host = "i686-linux"; + target = "i686-linux"; + } + { + build = "x86_64-linux"; + host = "x86_64-linux"; + target = "x86_64-linux"; + } + { + build = "aarch64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "riscv64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } + { + build = "x86_64-linux"; + host = "x86_64-linux"; + target = "aarch64-linux"; + } + { + build = "x86_64-linux"; + host = "x86_64-linux"; + target = "riscv64-linux"; + } + ]; + + hooks = package.hooks; + + builder = builders.passthrough.extend { + settings = { + derivation = package.package; + }; + }; + }; +} diff --git a/tidepool/src/packages/foundation/glibc/versions/2.38-bootstrap.nix b/tidepool/src/packages/foundation/glibc/versions/2.38-bootstrap.nix index 03d346f..748d141 100644 --- a/tidepool/src/packages/foundation/glibc/versions/2.38-bootstrap.nix +++ b/tidepool/src/packages/foundation/glibc/versions/2.38-bootstrap.nix @@ -1,10 +1,30 @@ { config, global }: let - inherit (global) lib packages builders; + inherit (global) + lib + packages + builders + mirrors + ; inherit (global.internal.packages) foundation; + + version = lib.strings.removeSuffix "-bootstrap" 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 { + options = { + dynamicLinker = lib.options.create { + type = lib.types.string; + description = "The dynamic linker/loader to be used."; + }; + }; + config = { meta = { description = "The GNU C Library."; @@ -20,10 +40,68 @@ in } ]; - builder = builders.passthrough.extend { - settings = { - derivation = foundation.stage2-glibc; + builder = builders.basic; + + src = builtins.fetchurl { + url = "${mirrors.gnu}/libc/glibc-${version}.tar.xz"; + sha256 = "+4KZiZiyspllRnvBtp0VLpwwfSzzAcnq+0VVt3DvP9I="; + }; + + 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"; + python = packages.foundation.python.versions."3.12.0-bootstrap"; + bison = packages.foundation.bison.versions."3.8.2-bootstrap"; + }; + host = { + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; + linux-headers = packages.foundation.linux-headers.versions."6.5.6-stage1"; + }; }; }; + + dynamicLinker = "${config.package.outPath}/lib/ld-linux.so.2"; + + phases = { + unpack = '' + tar xf ${config.src} + cd glibc-${version} + ''; + + configure = '' + 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 + ''; + + build = '' + # Build + make -j $NIX_BUILD_CORES + ''; + + install = '' + # Install + make -j $NIX_BUILD_CORES install + ln -sv $(ls -d ${config.deps.build.host.linux-headers.package}/include/* | grep -v scsi\$) $out/include/ + ''; + }; }; } 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 65b51fb..cfc5409 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 @@ -11,13 +11,23 @@ let package = packages.foundation.glibc.versions."2.38-stage1".extend { platform = { - build = lib.modules.overrides.force "i686-linux"; + build = lib.modules.overrides.force ( + if config.platform.build == "x86_64-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 { + options = { + dynamicLinker = lib.options.create { + type = lib.types.string; + default = "ld-linux-x86-64.so.2"; + description = "The dynamic linker/loader to be used."; + }; + }; + config = { meta = { description = "The GNU C Library."; @@ -31,8 +41,20 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "aarch64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "riscv64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; + dynamicLinker = package.dynamicLinker; + builder = builders.passthrough.extend { settings = { derivation = package.package; 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 f0faddf..fb72a44 100644 --- a/tidepool/src/packages/foundation/glibc/versions/2.38-stage1.nix +++ b/tidepool/src/packages/foundation/glibc/versions/2.38-stage1.nix @@ -18,6 +18,14 @@ let }; in { + options = { + dynamicLinker = lib.options.create { + type = lib.types.string; + default = "ld-linux-x86-64.so.2"; + description = "The dynamic linker/loader to be used."; + }; + }; + config = { meta = { description = "The GNU C Library."; @@ -31,6 +39,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "x86_64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "x86_64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.basic; @@ -42,29 +60,60 @@ in 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"; - python = packages.foundation.python.versions."3.12.0-bootstrap"; - bison = packages.foundation.bison.versions."3.8.2-bootstrap"; - linux-headers = packages.foundation.linux-headers.versions."6.5.6-bootstrap"; - }; + 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"; + python = packages.foundation.python.versions."3.12.0-bootstrap"; + bison = packages.foundation.bison.versions."3.8.2-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"; + python = packages.foundation.python.versions."3.12.0-stage1"; + bison = packages.foundation.bison.versions."3.8.2-stage1-passthrough"; + }; 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"; }; }; }; + dynamicLinker = + "${config.package.outPath}/lib/" + + ( + if platform.target.double == "x86_64-linux" then + "ld-linux-x86-64.so.2" + else if platform.target.double == "aarch64-linux" then + "ld-linux-aarch64.so.1" + else if platform.target.double == "riscv64-linux" then + "ld-linux-riscv64-lp64d.so.1" + else + "ld-linux.so.2" + ); + phases = { unpack = '' tar xf ${config.src} @@ -79,7 +128,7 @@ in --prefix=$out \ --build=${platform.build.triple} \ --host=${platform.host.triple} \ - --with-headers=${config.deps.build.build.linux-headers.package}/include \ + --with-headers=${config.deps.build.host.linux-headers.package}/include \ --with-binutils=${config.deps.build.host.binutils.package}/${platform.target.triple}/bin ''; @@ -91,7 +140,7 @@ in install = '' # Install make -j $NIX_BUILD_CORES install - ln -sv $(ls -d ${config.deps.build.build.linux-headers.package}/include/* | grep -v scsi\$) $out/include/ + 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 d257ed8..d3ac739 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 @@ -11,7 +11,9 @@ let package = packages.foundation.gnugrep.versions."3.11-stage1".extend { platform = { - build = lib.modules.overrides.force "i686-linux"; + build = lib.modules.overrides.force ( + if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; }; @@ -31,6 +33,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "aarch64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "riscv64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.passthrough.extend { 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 a0ba77d..105565e 100644 --- a/tidepool/src/packages/foundation/gnugrep/versions/3.11-stage1.nix +++ b/tidepool/src/packages/foundation/gnugrep/versions/3.11-stage1.nix @@ -31,6 +31,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "x86_64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "x86_64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.basic; @@ -42,18 +52,33 @@ 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"; + } + 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"; + }; host = { 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 d7fa27b..1475922 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 @@ -11,7 +11,9 @@ let package = packages.foundation.gnumake.versions."4.4.1-stage1".extend { platform = { - build = lib.modules.overrides.force "i686-linux"; + build = lib.modules.overrides.force ( + if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; }; @@ -31,6 +33,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "aarch64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "riscv64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.passthrough.extend { 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 d08cae6..c268399 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 @@ -36,6 +36,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "x86_64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "x86_64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.basic; @@ -47,18 +57,34 @@ 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"; + } + 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"; + }; host = { 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 f4cac3b..4cecae7 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 @@ -11,7 +11,9 @@ let package = packages.foundation.gnupatch.versions."2.7-stage1".extend { platform = { - build = lib.modules.overrides.force "i686-linux"; + build = lib.modules.overrides.force ( + if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; }; @@ -31,6 +33,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "aarch64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "riscv64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.passthrough.extend { 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 9945048..fd0988d 100644 --- a/tidepool/src/packages/foundation/gnupatch/versions/2.7-stage1.nix +++ b/tidepool/src/packages/foundation/gnupatch/versions/2.7-stage1.nix @@ -31,6 +31,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "x86_64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "x86_64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.basic; @@ -42,18 +52,34 @@ 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"; + } + 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"; + }; host = { 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 3eeee7b..04db097 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 @@ -11,7 +11,9 @@ let package = packages.foundation.gnused.versions."4.9-stage1".extend { platform = { - build = lib.modules.overrides.force "i686-linux"; + build = lib.modules.overrides.force ( + if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; }; @@ -31,6 +33,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "aarch64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "riscv64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.passthrough.extend { 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 aef7941..2d4445b 100644 --- a/tidepool/src/packages/foundation/gnused/versions/4.9-stage1.nix +++ b/tidepool/src/packages/foundation/gnused/versions/4.9-stage1.nix @@ -31,6 +31,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "x86_64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "x86_64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.basic; @@ -42,18 +52,33 @@ 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"; + } + 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"; + }; host = { 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 6537cc6..e45d75f 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 @@ -11,7 +11,9 @@ let package = packages.foundation.gnutar.versions."1.35-stage1".extend { platform = { - build = lib.modules.overrides.force "i686-linux"; + build = lib.modules.overrides.force ( + if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; }; @@ -31,6 +33,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "aarch64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "riscv64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.passthrough.extend { 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 190ddc7..34a5a39 100644 --- a/tidepool/src/packages/foundation/gnutar/versions/1.35-stage1.nix +++ b/tidepool/src/packages/foundation/gnutar/versions/1.35-stage1.nix @@ -31,6 +31,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "x86_64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "x86_64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.basic; @@ -42,18 +52,34 @@ 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"; + } + 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"; + }; host = { 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 8dffe88..bffb0bd 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 @@ -11,7 +11,9 @@ let package = packages.foundation.gzip.versions."1.13-stage1".extend { platform = { - build = lib.modules.overrides.force "i686-linux"; + build = lib.modules.overrides.force ( + if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; }; @@ -31,6 +33,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "aarch64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "riscv64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.passthrough.extend { 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 339b483..a2d2dd0 100644 --- a/tidepool/src/packages/foundation/gzip/versions/1.13-stage1.nix +++ b/tidepool/src/packages/foundation/gzip/versions/1.13-stage1.nix @@ -31,6 +31,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "aarch64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "x86_64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.basic; @@ -42,18 +52,33 @@ 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"; + } + 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"; + }; host = { 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 18cf1ae..de14449 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 @@ -25,6 +25,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "aarch64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "riscv64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.passthrough.extend { 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 6020e45..fa6acd6 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 @@ -22,9 +22,24 @@ in platforms = [ { build = "i686-linux"; - host = "x86_64-linux"; + host = "i686-linux"; + target = "i686-linux"; + } + { + build = "i686-linux"; + host = "i686-linux"; target = "x86_64-linux"; } + { + build = "x86_64-linux"; + host = "x86_64-linux"; + target = "aarch64-linux"; + } + { + build = "x86_64-linux"; + host = "x86_64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.basic; @@ -36,22 +51,41 @@ in deps = { build = { - build = { - 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"; - }; + build = + if (config.platform.build == "i686-linux") then + { + 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"; + } + else + { + 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"; + }; host = { binutils = packages.foundation.binutils.versions."2.41-stage1"; - gcc = packages.foundation.gcc.versions."13.2.0-stage2"; + 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"; }; }; }; @@ -66,7 +100,7 @@ in make -j $NIX_BUILD_CORES V=1 \ "CC=$CC" \ "HOSTCC=$CC" \ - ARCH=${platform.host.linux.arch} \ + ARCH=${platform.target.linux.arch} \ headers ''; diff --git a/tidepool/src/packages/foundation/python/default.nix b/tidepool/src/packages/foundation/python/default.nix index 100ec51..10f4791 100644 --- a/tidepool/src/packages/foundation/python/default.nix +++ b/tidepool/src/packages/foundation/python/default.nix @@ -2,9 +2,11 @@ { config.packages.foundation.python = { stable = config.packages.foundation.python.versions."3.12.0-bootstrap"; + latest = config.packages.foundation.python.versions."3.12.0-stage1"; versions = { "3.12.0-bootstrap" = ./versions/3.12.0-bootstrap.nix; + "3.12.0-stage1" = ./versions/3.12.0-stage1.nix; }; }; } diff --git a/tidepool/src/packages/foundation/python/patches/no-ldconfig.patch b/tidepool/src/packages/foundation/python/patches/no-ldconfig.patch new file mode 100644 index 0000000..0e050f8 --- /dev/null +++ b/tidepool/src/packages/foundation/python/patches/no-ldconfig.patch @@ -0,0 +1,108 @@ +From 5330b6af9f832af59aa5c61d9ef6971053a8e709 Mon Sep 17 00:00:00 2001 +From: Jonathan Ringer +Date: Mon, 9 Nov 2020 10:24:35 -0800 +Subject: [PATCH] CPython: Don't use ldconfig + +--- + Lib/ctypes/util.py | 77 ++-------------------------------------------- + 1 file changed, 2 insertions(+), 75 deletions(-) + +diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py +index 0c2510e161..7fb98af308 100644 +--- a/Lib/ctypes/util.py ++++ b/Lib/ctypes/util.py +@@ -100,53 +100,7 @@ def _is_elf(filename): + return thefile.read(4) == elf_header + + def _findLib_gcc(name): +- # Run GCC's linker with the -t (aka --trace) option and examine the +- # library name it prints out. The GCC command will fail because we +- # haven't supplied a proper program with main(), but that does not +- # matter. +- expr = os.fsencode(r'[^\(\)\s]*lib%s\.[^\(\)\s]*' % re.escape(name)) +- +- c_compiler = shutil.which('gcc') +- if not c_compiler: +- c_compiler = shutil.which('cc') +- if not c_compiler: +- # No C compiler available, give up +- return None +- +- temp = tempfile.NamedTemporaryFile() +- try: +- args = [c_compiler, '-Wl,-t', '-o', temp.name, '-l' + name] +- +- env = dict(os.environ) +- env['LC_ALL'] = 'C' +- env['LANG'] = 'C' +- try: +- proc = subprocess.Popen(args, +- stdout=subprocess.PIPE, +- stderr=subprocess.STDOUT, +- env=env) +- except OSError: # E.g. bad executable +- return None +- with proc: +- trace = proc.stdout.read() +- finally: +- try: +- temp.close() +- except FileNotFoundError: +- # Raised if the file was already removed, which is the normal +- # behaviour of GCC if linking fails +- pass +- res = re.findall(expr, trace) +- if not res: +- return None +- +- for file in res: +- # Check if the given file is an elf file: gcc can report +- # some files that are linker scripts and not actual +- # shared objects. See bpo-41976 for more details +- if not _is_elf(file): +- continue +- return os.fsdecode(file) ++ return None + + + if sys.platform == "sunos5": +@@ -268,34 +222,7 @@ def find_library(name, is64 = False): + else: + + def _findSoname_ldconfig(name): +- import struct +- if struct.calcsize('l') == 4: +- machine = os.uname().machine + '-32' +- else: +- machine = os.uname().machine + '-64' +- mach_map = { +- 'x86_64-64': 'libc6,x86-64', +- 'ppc64-64': 'libc6,64bit', +- 'sparc64-64': 'libc6,64bit', +- 's390x-64': 'libc6,64bit', +- 'ia64-64': 'libc6,IA-64', +- } +- abi_type = mach_map.get(machine, 'libc6') +- +- # XXX assuming GLIBC's ldconfig (with option -p) +- regex = r'\s+(lib%s\.[^\s]+)\s+\(%s' +- regex = os.fsencode(regex % (re.escape(name), abi_type)) +- try: +- with subprocess.Popen(['/sbin/ldconfig', '-p'], +- stdin=subprocess.DEVNULL, +- stderr=subprocess.DEVNULL, +- stdout=subprocess.PIPE, +- env={'LC_ALL': 'C', 'LANG': 'C'}) as p: +- res = re.search(regex, p.stdout.read()) +- if res: +- return os.fsdecode(res.group(1)) +- except OSError: +- pass ++ return None + + def _findLib_ld(name): + # See issue #9998 for why this is needed +-- +2.33.1 + + 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 new file mode 100644 index 0000000..b9359bd --- /dev/null +++ b/tidepool/src/packages/foundation/python/versions/3.12.0-stage1.nix @@ -0,0 +1,115 @@ +{ config, global }: + +let + inherit (global) + lib + packages + builders + mirrors + ; + inherit (global.internal.packages) foundation; + + 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; + }; + + patches = [ + ../patches/no-ldconfig.patch + ]; +in +{ + config = { + meta = { + description = "A high-level dynamically-typed programming language."; + homepage = "https://www.python.org"; + license = lib.licenses.psfl; + }; + + platforms = [ + { + build = "x86_64-linux"; + host = "x86_64-linux"; + target = "x86_64-linux"; + } + { + build = "aarch64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "riscv64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } + ]; + + builder = builders.basic; + + src = builtins.fetchurl { + url = "https://www.python.org/ftp/python/${version}/Python-${version}.tar.xz"; + sha256 = "eVw09E30Wg6blxDIxxwVxnGHFSTNQSyhTe8hLozLFV0="; + }; + + 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"; + }; + + host = { + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + }; + }; + }; + + 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 + tar xf ${config.src} + cd Python-${version} + ''; + + patch = '' + # Patch + ${lib.strings.concatMapSep "\n" (file: "patch -Np1 -i ${file}") patches} + ''; + + configure = '' + bash ./configure \ + --prefix=$out \ + --build=${platform.build.triple} \ + --host=${platform.host.triple} + ''; + + build = '' + # Build + make -j $NIX_BUILD_CORES + ''; + + install = '' + # Install + make -j $NIX_BUILD_CORES install + ''; + }; + }; +} 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 650d0c6..760a435 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 @@ -11,7 +11,9 @@ let package = packages.foundation.xz.versions."5.4.3-stage1".extend { platform = { - build = lib.modules.overrides.force "i686-linux"; + build = lib.modules.overrides.force ( + if config.platform.build == "x86_64-linux" then "i686-linux" else "x86_64-linux" + ); host = lib.modules.overrides.force config.platform.host; target = lib.modules.overrides.force config.platform.target; }; @@ -34,6 +36,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "aarch64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "riscv64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.passthrough.extend { 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 65a980a..2b8ca78 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 @@ -34,6 +34,16 @@ in host = "x86_64-linux"; target = "x86_64-linux"; } + { + build = "x86_64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "x86_64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } ]; builder = builders.basic; @@ -45,15 +55,27 @@ in deps = { build = { - build = { - gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; - gnused = packages.foundation.gnused.versions."4.9-bootstrap"; - gawk = packages.foundation.gawk.versions."5.2.2-bootstrap"; - gnutar = packages.foundation.gnutar.versions."1.35-bootstrap"; - 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"; - }; + 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"; + gawk = packages.foundation.gawk.versions."5.2.2-bootstrap"; + gnutar = packages.foundation.gnutar.versions."1.35-bootstrap"; + 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"; + } + else + { + gnumake = packages.foundation.gnumake.versions."4.4.1-stage1-passthrough"; + gnused = packages.foundation.gnused.versions."4.9-stage1-passthrough"; + gawk = packages.foundation.gawk.versions."5.2.2-stage1-passthrough"; + gnutar = packages.foundation.gnutar.versions."1.35-stage1-passthrough"; + 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"; + }; host = { binutils = packages.foundation.binutils.versions."2.41-stage1"; diff --git a/tidepool/src/packages/foundation/zlib/default.nix b/tidepool/src/packages/foundation/zlib/default.nix index 07599cf..048c8d2 100644 --- a/tidepool/src/packages/foundation/zlib/default.nix +++ b/tidepool/src/packages/foundation/zlib/default.nix @@ -2,9 +2,11 @@ { config.packages.foundation.zlib = { stable = config.packages.foundation.zlib.versions."1.3-bootstrap"; + latest = config.packages.foundation.zlib.versions."1.3-stage1"; versions = { "1.3-bootstrap" = ./versions/1.3-bootstrap.nix; + "1.3-stage1" = ./versions/1.3-stage1.nix; }; }; } diff --git a/tidepool/src/packages/foundation/zlib/versions/1.3-stage1.nix b/tidepool/src/packages/foundation/zlib/versions/1.3-stage1.nix new file mode 100644 index 0000000..79e9620 --- /dev/null +++ b/tidepool/src/packages/foundation/zlib/versions/1.3-stage1.nix @@ -0,0 +1,94 @@ +{ config, global }: + +let + inherit (global) + lib + packages + builders + mirrors + ; + inherit (global.internal.packages) foundation; + + 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 = "Lossless data-compression library."; + homepage = "https://zlib.net"; + license = lib.licenses.zlib; + }; + + platforms = [ + { + build = "x86_64-linux"; + host = "x86_64-linux"; + target = "x86_64-linux"; + } + { + build = "aarch64-linux"; + host = "aarch64-linux"; + target = "aarch64-linux"; + } + { + build = "riscv64-linux"; + host = "riscv64-linux"; + target = "riscv64-linux"; + } + ]; + + builder = builders.basic; + + src = builtins.fetchurl { + url = "https://github.com/madler/zlib/releases/download/v${version}/zlib-${version}.tar.xz"; + sha256 = "ipuiiY4dDXdOymultGJ6EeVYi6hciFEzbrON5GgwUKc="; + }; + + 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"; + }; + + host = { + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + }; + }; + }; + + phases = { + unpack = '' + # Unpack + tar xf ${config.src} + cd zlib-${version} + ''; + + configure = '' + # Configure + bash ./configure \ + --prefix=$out + ''; + + build = '' + # Build + make -j $NIX_BUILD_CORES + ''; + + install = '' + # Install + make -j $NIX_BUILD_CORES install + ''; + }; + }; +}