From be0d6bc0e1acb73ee2bfc102a0e65bc1c5fa8573 Mon Sep 17 00:00:00 2001 From: Ross Smyth Date: Tue, 7 Oct 2025 03:46:52 +0000 Subject: [PATCH] refactor: remove target (#31) WIP. Posting just to make sure people know this is something I'd like to do. Context: https://matrix.to/#/!PvnunzXUk4Vm1CmKS4:auxolotl.org/$bOm6iaBpWbo-KRJgo7FUZdeFIv9StzRHxklbx7OQ23g?via=auxolotl.org&via=matrix.org&via=catgirl.cloud Reasons: 1. Why should GCC inflict complication upon all of tidepool just because of its own architectural deficiencies? 2. Most other compilers are multi-target so it doesn't matter 2. Target is useless for 99.9% of packages and only leads to user confusion, especially since many compilers also call what would be host here "target". 3. Canadian-cross is not very well supported. GCC barely supports it, and is broken in many cases. Nixpkgs does not support it (regardless of what its API may imply) and no one has ever complained. Plan: 1. Remove most target related things. No reason to have it. 2. Add configuration parameter on GCC that selects its target What does this mean: This basically moves target to be a GCC-specific artifact rather than an official parameter every package must endure the cognitive load of. This is because it is. Nixpkgs plans on dumping target in the future as well because of this. Or at least making it an alias. If you want to create a compiler with a different target, then override GCC to do so. No need to pervade all of tidepool just for GCC. Co-authored-by: Victor Fuentes Reviewed-on: https://git.auxolotl.org/auxolotl/labs/pulls/31 Reviewed-by: vlinkz Co-authored-by: Ross Smyth Co-committed-by: Ross Smyth --- tidepool/src/builders/foundation/basic.nix | 36 ++---- tidepool/src/lib/packages.nix | 117 ++++-------------- tidepool/src/lib/platforms.nix | 24 +--- tidepool/src/lib/types.nix | 87 +++---------- tidepool/src/packages/aux/a.nix | 7 +- tidepool/src/packages/aux/b.nix | 9 +- tidepool/src/packages/aux/c.nix | 4 - .../versions/5.2.15-stage1-passthrough.nix | 12 +- .../bash/versions/5.2.15-stage1.nix | 20 +-- .../versions/2.41-stage1-passthrough.nix | 31 +++-- .../binutils/versions/2.41-stage1.nix | 53 +++++--- .../versions/3.8.2-stage1-passthrough.nix | 12 +- .../bison/versions/3.8.2-stage1.nix | 20 +-- .../versions/1.0.8-stage1-passthrough.nix | 12 +- .../bzip2/versions/1.0.8-stage1.nix | 28 +++-- .../versions/9.4-stage1-passthrough.nix | 12 +- .../coreutils/versions/9.4-stage1.nix | 20 +-- .../versions/3.10-stage1-passthrough.nix | 12 +- .../diffutils/versions/3.10-stage1.nix | 20 +-- .../versions/4.9.0-stage1-passthrough.nix | 12 +- .../findutils/versions/4.9.0-stage1.nix | 20 +-- .../versions/5.2.2-stage1-passthrough.nix | 12 +- .../foundation/gawk/versions/5.2.2-stage1.nix | 20 +-- .../gcc/versions/13.2.0-passthrough.nix | 21 ++-- .../foundation/gcc/versions/13.2.0-stage1.nix | 41 +++--- .../foundation/gcc/versions/13.2.0-stage2.nix | 65 +++++----- .../versions/13.2.0-stage3-passthrough.nix | 9 +- .../foundation/gcc/versions/13.2.0-stage3.nix | 49 ++++---- .../foundation/gcc/versions/13.2.0-stage4.nix | 112 +++++++---------- .../glibc/versions/2.38-bootstrap.nix | 45 ++++--- .../versions/2.38-stage1-passthrough.nix | 12 +- .../foundation/glibc/versions/2.38-stage1.nix | 37 +++--- .../versions/3.11-stage1-passthrough.nix | 12 +- .../gnugrep/versions/3.11-stage1.nix | 20 +-- .../versions/1.4.19-stage1-passthrough.nix | 12 +- .../gnum4/versions/1.4.19-stage1.nix | 20 +-- .../versions/4.4.1-stage1-passthrough.nix | 12 +- .../gnumake/versions/4.4.1-stage1.nix | 20 +-- .../versions/2.7-stage1-passthrough.nix | 12 +- .../gnupatch/versions/2.7-stage1.nix | 21 ++-- .../versions/4.9-stage1-passthrough.nix | 12 +- .../foundation/gnused/versions/4.9-stage1.nix | 20 +-- .../versions/1.35-stage1-passthrough.nix | 12 +- .../gnutar/versions/1.35-stage1.nix | 21 ++-- .../gzip/versions/1.13-stage1-passthrough.nix | 12 +- .../foundation/gzip/versions/1.13-stage1.nix | 20 +-- .../versions/6.5.6-stage1-passthrough.nix | 12 +- .../linux-headers/versions/6.5.6-stage1.nix | 74 +++++------ .../versions/1.2.4-stage1-passthrough.nix | 16 +-- .../foundation/musl/versions/1.2.4-stage1.nix | 48 +++---- .../python/versions/3.12.0-stage1.nix | 92 +++++++------- .../xz/versions/5.4.3-stage1-passthrough.nix | 12 +- .../foundation/xz/versions/5.4.3-stage1.nix | 20 +-- .../foundation/zlib/versions/1.3-stage1.nix | 20 +-- 54 files changed, 685 insertions(+), 826 deletions(-) diff --git a/tidepool/src/builders/foundation/basic.nix b/tidepool/src/builders/foundation/basic.nix index 0cd49df..1210d43 100644 --- a/tidepool/src/builders/foundation/basic.nix +++ b/tidepool/src/builders/foundation/basic.nix @@ -25,12 +25,8 @@ in phasesWithHooks = let all = lib.lists.flatten [ - hooks.build.build - hooks.build.host - hooks.build.target - hooks.host.host - hooks.host.target - hooks.target.target + hooks.build + hooks.host ]; in builtins.foldl' ( @@ -62,13 +58,11 @@ in "${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 + (lib.packages.build packages.foundation.bash.versions."5.2.15-stage1" "i686-linux" system).package }/bin/bash" else "${ - (lib.packages.build packages.foundation.bash.versions."5.2.15-stage1" "x86_64-linux" system system) - .package + (lib.packages.build packages.foundation.bash.versions."5.2.15-stage1" "x86_64-linux" system).package }/bin/bash"; built = builtins.derivation ( @@ -86,28 +80,20 @@ in PATH = let bins = lib.paths.bin ( - (lib.packages.dependencies.get dependencies.build.build) - ++ (lib.packages.dependencies.get dependencies.build.host) - ++ (lib.packages.dependencies.get dependencies.build.target) - ++ (lib.packages.dependencies.get dependencies.host.host) - ++ (lib.packages.dependencies.get dependencies.host.target) - ++ (lib.packages.dependencies.get dependencies.target.target) + (lib.packages.dependencies.get dependencies.build) + ++ (lib.packages.dependencies.get dependencies.host) ++ lib.lists.when (system == "i686-linux") [ foundation.stage2-bash foundation.stage2-coreutils ] ++ lib.lists.when (system == "x86_64-linux") [ - (lib.packages.build packages.foundation.bash.versions."5.2.15-stage1" "i686-linux" system system) - .package - (lib.packages.build packages.foundation.coreutils.versions."9.4-stage1" "i686-linux" system system) - .package + (lib.packages.build packages.foundation.bash.versions."5.2.15-stage1" "i686-linux" system).package + (lib.packages.build packages.foundation.coreutils.versions."9.4-stage1" "i686-linux" 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) + (lib.packages.build packages.foundation.bash.versions."5.2.15-stage1" "x86_64-linux" system).package + (lib.packages.build packages.foundation.coreutils.versions."9.4-stage1" "x86_64-linux" system) .package - (lib.packages.build packages.foundation.coreutils.versions."9.4-stage1" "x86_64-linux" system - system - ).package ] ); in @@ -165,7 +151,7 @@ in Review the phases printed above and resolve the cycle to proceed. TIP: This can happen when you have two of the same dependency added as different dependencies - such as `build.build` and `build.host`. + such as `build` and `host`. ''; }; } diff --git a/tidepool/src/lib/packages.nix b/tidepool/src/lib/packages.nix index af91689..f60ea19 100644 --- a/tidepool/src/lib/packages.nix +++ b/tidepool/src/lib/packages.nix @@ -15,8 +15,7 @@ in builtins.map (dependency: dependency.package) available; build = - build: host: target: - builtins.mapAttrs (name: dep: (lib.packages.resolve dep).packages.${build}.${host}.${target}); + build: host: builtins.mapAttrs (name: dep: (lib.packages.resolve dep).packages.${build}.${host}); collect = package: @@ -32,31 +31,13 @@ in let dependency = lib.packages.resolve dep; deps = { - build = { - build = - getPropagatedDependencies dependency.deps.build.build ++ process dependency.deps.build.build; - host = getPropagatedDependencies dependency.deps.build.host ++ process dependency.deps.build.host; - target = - getPropagatedDependencies dependency.deps.build.target ++ process dependency.deps.build.target; - }; - host = { - host = getPropagatedDependencies dependency.deps.host.host ++ process dependency.deps.host.host; - target = - getPropagatedDependencies dependency.deps.host.target ++ process dependency.deps.host.target; - }; - target = { - target = - getPropagatedDependencies dependency.deps.target.target ++ process dependency.deps.target.target; - }; + build = getPropagatedDependencies dependency.deps.build ++ process dependency.deps.build; + host = getPropagatedDependencies dependency.deps.host ++ process dependency.deps.host; }; in lib.lists.flatten [ - deps.build.build - deps.build.host - deps.build.target - deps.host.host - deps.host.target - deps.target.target + deps.build + deps.host ]; propagated = lib.attrs.mapToList getDeps dependencies; @@ -66,28 +47,8 @@ in withoutNulls = deps: builtins.filter (dep: dep != null) deps; in { - build = { - build = withoutNulls ( - builtins.attrValues package.deps.build.build ++ process package.deps.build.build - ); - host = withoutNulls ( - builtins.attrValues package.deps.build.host ++ process package.deps.build.host - ); - target = withoutNulls ( - builtins.attrValues package.deps.build.target ++ process package.deps.build.target - ); - }; - host = { - host = withoutNulls (builtins.attrValues package.deps.host.host ++ process package.deps.host.host); - target = withoutNulls ( - builtins.attrValues package.deps.host.target ++ process package.deps.host.target - ); - }; - target = { - target = withoutNulls ( - builtins.attrValues package.deps.target.target ++ process package.deps.target.target - ); - }; + build = withoutNulls (builtins.attrValues package.deps.build ++ process package.deps.build); + host = withoutNulls (builtins.attrValues package.deps.host ++ process package.deps.host); }; }; @@ -119,7 +80,6 @@ in type = lib.types.enum [ "build" "host" - "target" ]; writable = false; default.value = path; @@ -134,15 +94,11 @@ in result.config; build = process "build" [ - collected.build.build - collected.build.host - collected.build.target + collected.build ]; host = process "host" [ - collected.host.host - collected.host.target + collected.host ]; - target = process "target" [ collected.target.target ]; in build // host @@ -150,7 +106,6 @@ in inherit build host - target package ; @@ -159,9 +114,7 @@ in __toString = value: let - all = builtins.mapAttrs ( - host: targets: builtins.mapAttrs (target: deps: builtins.map (dep: dep.package) deps) targets - ) collected; + all = builtins.mapAttrs (host: deps: builtins.map (dep: dep.package) deps) collected; in builtins.toJSON ( builtins.removeAttrs value [ @@ -190,36 +143,12 @@ in hooks; in { - build = { - build = process [ - "build" - "build" - ]; - host = process [ - "build" - "host" - ]; - target = process [ - "build" - "target" - ]; - }; - host = { - host = process [ - "host" - "host" - ]; - target = process [ - "host" - "target" - ]; - }; - target = { - target = process [ - "target" - "target" - ]; - }; + build = process [ + "build" + ]; + host = process [ + "host" + ]; }; }; @@ -263,7 +192,7 @@ in alias; build = - alias: build: host: target: + alias: build: host: let package = lib.packages.resolve alias; @@ -277,36 +206,34 @@ in buildSystem = lib.systems.withBuildInfo build; hostSystem = lib.systems.withBuildInfo host; - targetSystem = lib.systems.withBuildInfo target; platform = { build = lib.modules.override 75 build; host = lib.modules.override 75 host; - target = lib.modules.override 75 target; }; built = package.extendTemporarily { inherit platform; }; - support = lib.packages.supports package buildSystem.double hostSystem.double targetSystem.double; + support = lib.packages.supports package buildSystem.double hostSystem.double; result = if !support.compatible then - builtins.throw "📦 [Aux Tidepool] Package `${identifier}` does not support the platform build=${buildSystem.double}, host=${hostSystem.double}, target=${targetSystem.double}." + builtins.throw "📦 [Aux Tidepool] Package `${identifier}` does not support the platform build=${buildSystem.double}, host=${hostSystem.double}" else if support.broken then builtins.throw "📦 [Aux Tidepool] Package `${identifier}` is marked as broken and cannot be built." else built; in - builtins.addErrorContext "📦 [Aux Tidepool] while building package `${identifier}` for platform build=${buildSystem.double}, host=${hostSystem.double}, target=${targetSystem.double}." result; + builtins.addErrorContext "📦 [Aux Tidepool] while building package `${identifier}` for platform build=${buildSystem.double}, host=${hostSystem.double}" result; supports = - alias: build: host: target: + alias: build: host: let package = lib.packages.resolve alias; matches = builtins.filter ( - platform: platform.build == build && platform.host == host && platform.target == target + platform: platform.build == build && platform.host == host ) package.platforms; in { diff --git a/tidepool/src/lib/platforms.nix b/tidepool/src/lib/platforms.nix index c663cfc..ef5b3d3 100644 --- a/tidepool/src/lib/platforms.nix +++ b/tidepool/src/lib/platforms.nix @@ -12,31 +12,26 @@ in # { # build = "x86_64-linux"; # host = "x86_64-linux"; - # target = "x86_64-linux"; # } # # { # build = "*"; # host = "*"; - # target = "@host"; # } # # { # build = "*"; # host = ["x86_64-linux", "aarch64-linux"]; - # target = "@host"; # } # # [ # { # build = "*"; # host = ["x86_64-linux", "aarch64-linux"]; - # target = "@host"; # } # { # build = "i686-linux"; # host = "@build"; - # target = "@host"; # } # ] # @@ -51,24 +46,13 @@ in let build = lib.platforms.expand spec spec.build; host = lib.platforms.expand spec spec.host; - target = lib.platforms.expand spec spec.target; in builtins.concatMap ( build: - builtins.concatMap ( - host: - builtins.map (target: { - build = build; - host = if host == "@build" then build else host; - target = - if target == "@host" then - if host == "@build" then build else host - else if target == "@build" then - build - else - target; - }) target - ) host + builtins.map (host: { + build = build; + host = if host == "@build" then build else host; + }) host ) build ) specs ); diff --git a/tidepool/src/lib/types.nix b/tidepool/src/lib/types.nix index 9ca3b01..f682163 100644 --- a/tidepool/src/lib/types.nix +++ b/tidepool/src/lib/types.nix @@ -293,8 +293,7 @@ in platforms = { build = lib.types.attrs.of lib.types.platforms.host; - host = lib.types.attrs.of lib.types.platforms.target; - target = lib.types.attrs.of (lib.types.attrs.of lib.types.platforms.alias); + host = lib.types.attrs.of lib.types.platforms.host; alias = lib.types.submodule { options = { stable = lib.options.create { @@ -331,12 +330,6 @@ in type = lib.types.string; default.value = "@build"; }; - - target = lib.options.create { - description = "The target platform for the package."; - type = lib.types.string; - default.value = "@host"; - }; }; } ); @@ -491,49 +484,18 @@ in }; deps = - build: host: target: + build: host: lib.types.submodule { options = { - build = { - build = lib.options.create { - description = "Dependencies which are created in the build environment and are executed in the build environment."; - type = lib.types.dependencies; - default.value = { }; - }; - - host = lib.options.create { - description = "Dependencies which are created in the build environment and are executed in the host environment."; - type = lib.types.dependencies; - default.value = { }; - }; - - target = lib.options.create { - description = "Dependencies which are created in the build environment and are executed in the target environment."; - type = lib.types.dependencies; - default.value = { }; - }; + build = lib.options.create { + description = "Dependencies which are executed in the build environment."; + type = lib.types.dependencies; + default.value = { }; }; - - host = { - host = lib.options.create { - description = "Dependencies which are executed in the host environment."; - type = lib.types.dependencies; - default.value = { }; - }; - - target = lib.options.create { - description = "Dependencies which are executed in the host environment which produces code for the target environment."; - type = lib.types.dependencies; - default.value = { }; - }; - }; - - target = { - target = lib.options.create { - description = "Dependencies which are executed in the target environment."; - type = lib.types.dependencies; - default.value = { }; - }; + host = lib.options.create { + description = "Dependencies which are executed in the host environment."; + type = lib.types.dependencies; + default.value = { }; }; }; }; @@ -546,7 +508,6 @@ in let build = config.platform.build; host = config.platform.host; - target = config.platform.target; in { options = { @@ -728,12 +689,6 @@ in type = lib.types.string; default.value = initial.host or "x86_64-linux"; }; - - target = lib.options.create { - description = "The target platform for the package."; - type = lib.types.string; - default.value = initial.target or "x86_64-linux"; - }; }; name = lib.options.create { @@ -815,11 +770,7 @@ in type = lib.types.raw; writable = false; default.value = lib.attrs.generate lib.systems.doubles.all ( - build: - lib.attrs.generate lib.systems.doubles.all ( - host: - lib.attrs.generate lib.systems.doubles.all (target: lib.packages.build config build host target) - ) + build: lib.attrs.generate lib.systems.doubles.all (host: lib.packages.build config build host) ); }; @@ -857,21 +808,11 @@ in deps = lib.options.create { description = "The dependencies for the package."; - type = deps build host target; + type = deps build host; default.value = { }; apply = value: { - build = { - build = lib.packages.dependencies.build build build build value.build.build; - host = lib.packages.dependencies.build build build host value.build.host; - target = lib.packages.dependencies.build build build target value.build.target; - }; - host = { - host = lib.packages.dependencies.build build host host value.host.host; - target = lib.packages.dependencies.build build host target value.host.target; - }; - target = { - target = lib.packages.dependencies.build build target target value.target.target; - }; + build = lib.packages.dependencies.build build build value.build; + host = lib.packages.dependencies.build build host value.host; }; }; }; diff --git a/tidepool/src/packages/aux/a.nix b/tidepool/src/packages/aux/a.nix index f640b44..f72abd8 100644 --- a/tidepool/src/packages/aux/a.nix +++ b/tidepool/src/packages/aux/a.nix @@ -13,23 +13,20 @@ in { build = "i686-linux"; host = "i686-linux"; - target = "i686-linux"; } { build = "i686-linux"; host = "x86_64-linux"; - target = "i686-linux"; } { build = "i686-linux"; host = "x86_64-linux"; - target = "x86_64-linux"; } ]; builder = builders.foundation.basic; - deps.host.host = { + deps.host = { inherit (packages.aux) b; }; @@ -41,7 +38,7 @@ in in { install = '' - echo "a with b: ${config.deps.host.host.b.platform.host}" > $out + echo "a with b: ${config.deps.host.b.platform.host}" > $out echo >> $out echo a=$out >> $out echo b=$AUX_B >> $out diff --git a/tidepool/src/packages/aux/b.nix b/tidepool/src/packages/aux/b.nix index 92a75da..e83779c 100644 --- a/tidepool/src/packages/aux/b.nix +++ b/tidepool/src/packages/aux/b.nix @@ -17,17 +17,14 @@ in { build = "i686-linux"; host = "i686-linux"; - target = "i686-linux"; } { build = "i686-linux"; host = "x86_64-linux"; - target = "i686-linux"; } { build = "i686-linux"; host = "x86_64-linux"; - target = "x86_64-linux"; } ]; @@ -37,10 +34,8 @@ in deps = { build = { - host = { - c = packages.aux.c.extend { - propagate = true; - }; + c = packages.aux.c.extend { + propagate = true; }; }; }; diff --git a/tidepool/src/packages/aux/c.nix b/tidepool/src/packages/aux/c.nix index 024918c..327e4d8 100644 --- a/tidepool/src/packages/aux/c.nix +++ b/tidepool/src/packages/aux/c.nix @@ -17,22 +17,18 @@ in { build = "i686-linux"; host = "i686-linux"; - target = "i686-linux"; } { build = "i686-linux"; host = "i686-linux"; - target = "x86_64-linux"; } { build = "i686-linux"; host = "x86_64-linux"; - target = "i686-linux"; } { build = "i686-linux"; host = "x86_64-linux"; - target = "x86_64-linux"; } ]; 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 8311725..36162c3 100644 --- a/tidepool/src/packages/foundation/bash/versions/5.2.15-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/bash/versions/5.2.15-stage1-passthrough.nix @@ -10,15 +10,15 @@ let package = packages.foundation.bash.versions."5.2.15-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build != config.platform.target then - config.platform.build - else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then - "i686-linux" + if (config.platform.build == config.platform.host) then + if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then + "i686-linux" + else + "x86_64-linux" else - "x86_64-linux" + config.platform.build ); host = lib.modules.overrides.force config.platform.host; - target = lib.modules.overrides.force config.platform.target; }; }; in 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 0b26454..8beac37 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 @@ -13,7 +13,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; in { @@ -47,8 +46,8 @@ in }; deps = { - build = { - build = + build = + ( if (config.platform.build == "i686-linux") then { gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; @@ -76,13 +75,16 @@ in findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; gcc = packages.foundation.gcc.versions."13.2.0-stage4"; binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - }; - - host = lib.attrs.when (config.platform.build != config.platform.host) { - gcc = packages.foundation.gcc.versions."13.2.0-stage2"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; + } + ) + // lib.attrs.when (config.platform.build != config.platform.host) { + gcc-cross = packages.foundation.gcc.versions."13.2.0-stage2".extend { + settings.target = config.platform.host; + }; + binutils-cross = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.platform.host; + }; }; - }; }; phases = { 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 2c38f20..561bed8 100644 --- a/tidepool/src/packages/foundation/binutils/versions/2.41-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/binutils/versions/2.41-stage1-passthrough.nix @@ -10,19 +10,34 @@ let package = packages.foundation.binutils.versions."2.41-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build != config.platform.target then - config.platform.build - else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then - "i686-linux" + if (config.platform.build == config.platform.host) then + if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then + "i686-linux" + else + "x86_64-linux" else - "x86_64-linux" + config.platform.build ); host = lib.modules.overrides.force config.platform.host; - target = lib.modules.overrides.force config.platform.target; }; + inherit (config) settings; }; in { + options = { + settings = { + target = lib.options.create { + type = lib.types.nullish lib.types.string; + default.value = null; + }; + allTargets = lib.options.create { + description = "Include all targets (dramatically increases size of binaries)."; + type = lib.types.bool; + default.value = false; + }; + }; + }; + config = { meta = { description = "Tools for manipulating binaries (linker, assembler, etc.)"; @@ -35,10 +50,6 @@ in build = "@linux"; host = "@linux"; } - { - build = "@linux"; - target = "@linux"; - } ]; builder = builders.foundation.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 6f37ba1..335ac81 100644 --- a/tidepool/src/packages/foundation/binutils/versions/2.41-stage1.nix +++ b/tidepool/src/packages/foundation/binutils/versions/2.41-stage1.nix @@ -11,7 +11,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; version = lib.strings.removeSuffix "-stage1" config.version; @@ -24,7 +23,6 @@ let "--prefix=${builtins.placeholder "out"}" "--build=${platform.build.triple}" "--host=${platform.host.triple}" - "--target=${platform.target.triple}" "--with-sysroot=/" "--enable-deterministic-archives" @@ -42,9 +40,30 @@ let "--with-lib-path=:" "--disable-multilib" + "--enable-64-bit-bfd" + ] + ++ lib.lists.when (config.settings.allTargets) [ + "--enable-target=all" + ] + ++ lib.lists.when (config.settings.target != null) [ + "--target=${(lib.systems.withBuildInfo config.settings.target).triple}" ]; in { + options = { + settings = { + target = lib.options.create { + type = lib.types.nullish lib.types.string; + default.value = null; + }; + allTargets = lib.options.create { + description = "Include all targets (dramatically increases size of binaries)."; + type = lib.types.bool; + default.value = false; + }; + }; + }; + config = { meta = { description = "Tools for manipulating binaries (linker, assembler, etc.)"; @@ -55,16 +74,15 @@ in platforms = [ { build = "i686-linux"; - target = "x86_64-linux"; + } + { + build = "i686-linux"; + host = "x86_64-linux"; } { build = "x86_64-linux"; host = "@linux"; } - { - build = "x86_64-linux"; - target = "@linux"; - } ]; builder = builders.foundation.basic; @@ -75,8 +93,8 @@ in }; deps = { - build = { - build = + build = + ( if (config.platform.build == "i686-linux") then { gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; @@ -108,13 +126,16 @@ in xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; gcc = packages.foundation.gcc.versions."13.2.0-stage4"; binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - }; - - host = lib.attrs.when (config.platform.build != config.platform.host) { - gcc = packages.foundation.gcc.versions."13.2.0-stage2"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; - }; - }; + } + ) + // (lib.attrs.when (config.platform.build != config.platform.host) { + gcc-cross = packages.foundation.gcc.versions."13.2.0-stage2".extend { + settings.target = config.platform.host; + }; + binutils-cross = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.platform.host; + }; + }); }; phases = { diff --git a/tidepool/src/packages/foundation/bison/versions/3.8.2-stage1-passthrough.nix b/tidepool/src/packages/foundation/bison/versions/3.8.2-stage1-passthrough.nix index 03aea30..55f4a35 100644 --- a/tidepool/src/packages/foundation/bison/versions/3.8.2-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/bison/versions/3.8.2-stage1-passthrough.nix @@ -10,15 +10,15 @@ let package = packages.foundation.bison.versions."3.8.2-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build != config.platform.target then - config.platform.build - else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then - "i686-linux" + if (config.platform.build == config.platform.host) then + if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then + "i686-linux" + else + "x86_64-linux" else - "x86_64-linux" + config.platform.build ); host = lib.modules.overrides.force config.platform.host; - target = lib.modules.overrides.force config.platform.target; }; }; in diff --git a/tidepool/src/packages/foundation/bison/versions/3.8.2-stage1.nix b/tidepool/src/packages/foundation/bison/versions/3.8.2-stage1.nix index dfe6ec0..59c4ccf 100644 --- a/tidepool/src/packages/foundation/bison/versions/3.8.2-stage1.nix +++ b/tidepool/src/packages/foundation/bison/versions/3.8.2-stage1.nix @@ -13,7 +13,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; in { @@ -46,8 +45,8 @@ in }; deps = { - build = { - build = + build = + ( if (config.platform.build == "i686-linux") then { gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; @@ -75,13 +74,16 @@ in gnum4 = packages.foundation.gnum4.versions."1.4.19-stage1-passthrough"; gcc = packages.foundation.gcc.versions."13.2.0-stage4"; binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - }; - - host = lib.attrs.when (config.platform.build != config.platform.host) { - gcc = packages.foundation.gcc.versions."13.2.0-stage2"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; + } + ) + // lib.attrs.when (config.platform.build != config.platform.host) { + gcc-cross = packages.foundation.gcc.versions."13.2.0-stage2".extend { + settings.target = config.platform.host; + }; + binutils-cross = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.platform.host; + }; }; - }; }; phases = { diff --git a/tidepool/src/packages/foundation/bzip2/versions/1.0.8-stage1-passthrough.nix b/tidepool/src/packages/foundation/bzip2/versions/1.0.8-stage1-passthrough.nix index 970c19c..656e64e 100644 --- a/tidepool/src/packages/foundation/bzip2/versions/1.0.8-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/bzip2/versions/1.0.8-stage1-passthrough.nix @@ -10,15 +10,15 @@ let package = packages.foundation.bzip2.versions."1.0.8-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build != config.platform.target then - config.platform.build - else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then - "i686-linux" + if (config.platform.build == config.platform.host) then + if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then + "i686-linux" + else + "x86_64-linux" else - "x86_64-linux" + config.platform.build ); host = lib.modules.overrides.force config.platform.host; - target = lib.modules.overrides.force config.platform.target; }; }; in 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 55996ec..74d2b11 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 @@ -12,7 +12,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; prefix = lib.strings.when ( @@ -49,8 +48,8 @@ in }; deps = { - build = { - build = + build = + ( if (config.platform.build == "i686-linux") then { gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; @@ -66,13 +65,16 @@ in gzip = packages.foundation.gzip.versions."1.13-stage1-passthrough"; gcc = packages.foundation.gcc.versions."13.2.0-stage4"; binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - }; - - host = lib.attrs.when (config.platform.build != config.platform.host) { - gcc = packages.foundation.gcc.versions."13.2.0-stage2"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; + } + ) + // lib.attrs.when (config.platform.build != config.platform.host) { + gcc-cross = packages.foundation.gcc.versions."13.2.0-stage2".extend { + settings.target = config.platform.host; + }; + binutils-cross = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.platform.host; + }; }; - }; }; phases = { @@ -89,10 +91,10 @@ in "CC=\"$CC\"" ] ++ lib.lists.when (config.platform.build != config.platform.host) [ - "AR=\"${config.deps.build.host.binutils.package}/bin/${prefix}ar\"" - "RANLIB=\"${config.deps.build.host.binutils.package}/bin/${prefix}ranlib\"" - "STRIP=\"${config.deps.build.host.binutils.package}/bin/${prefix}strip\"" - "NM=\"${config.deps.build.host.binutils.package}/bin/${prefix}nm\"" + "AR=\"${config.deps.build.binutils-cross.package}/bin/${prefix}ar\"" + "RANLIB=\"${config.deps.build.binutils-cross.package}/bin/${prefix}ranlib\"" + "STRIP=\"${config.deps.build.binutils-cross.package}/bin/${prefix}strip\"" + "NM=\"${config.deps.build.binutils-cross.package}/bin/${prefix}nm\"" ] ); in 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 b668c7b..0c17455 100644 --- a/tidepool/src/packages/foundation/coreutils/versions/9.4-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/coreutils/versions/9.4-stage1-passthrough.nix @@ -10,15 +10,15 @@ let package = packages.foundation.coreutils.versions."9.4-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build != config.platform.target then - config.platform.build - else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then - "i686-linux" + if (config.platform.build == config.platform.host) then + if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then + "i686-linux" + else + "x86_64-linux" else - "x86_64-linux" + config.platform.build ); host = lib.modules.overrides.force config.platform.host; - target = lib.modules.overrides.force config.platform.target; }; }; in 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 0e13722..cce47ac 100644 --- a/tidepool/src/packages/foundation/coreutils/versions/9.4-stage1.nix +++ b/tidepool/src/packages/foundation/coreutils/versions/9.4-stage1.nix @@ -13,7 +13,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; configureFlags = [ @@ -53,8 +52,8 @@ in }; deps = { - build = { - build = + build = + ( if (config.platform.build == "i686-linux") then { gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; @@ -82,13 +81,16 @@ in findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; gcc = packages.foundation.gcc.versions."13.2.0-stage4"; binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - }; - - host = lib.attrs.when (config.platform.build != config.platform.host) { - binutils = packages.foundation.binutils.versions."2.41-stage1"; - gcc = packages.foundation.gcc.versions."13.2.0-stage2"; + } + ) + // lib.attrs.when (config.platform.build != config.platform.host) { + binutils-cross = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.platform.host; + }; + gcc-cross = packages.foundation.gcc.versions."13.2.0-stage2".extend { + settings.target = config.platform.host; + }; }; - }; }; phases = { 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 74db586..4ddeb2c 100644 --- a/tidepool/src/packages/foundation/diffutils/versions/3.10-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/diffutils/versions/3.10-stage1-passthrough.nix @@ -10,15 +10,15 @@ let package = packages.foundation.diffutils.versions."3.10-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build != config.platform.target then - config.platform.build - else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then - "i686-linux" + if (config.platform.build == config.platform.host) then + if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then + "i686-linux" + else + "x86_64-linux" else - "x86_64-linux" + config.platform.build ); host = lib.modules.overrides.force config.platform.host; - target = lib.modules.overrides.force config.platform.target; }; }; in 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 8a02314..d7bc1c6 100644 --- a/tidepool/src/packages/foundation/diffutils/versions/3.10-stage1.nix +++ b/tidepool/src/packages/foundation/diffutils/versions/3.10-stage1.nix @@ -13,7 +13,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; in { @@ -46,8 +45,8 @@ in }; deps = { - build = { - build = + build = + ( if (config.platform.build == "i686-linux") then { gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; @@ -77,13 +76,16 @@ in xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; gcc = packages.foundation.gcc.versions."13.2.0-stage4"; binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - }; - - host = lib.attrs.when (config.platform.build != config.platform.host) { - gcc = packages.foundation.gcc.versions."13.2.0-stage2"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; + } + ) + // lib.attrs.when (config.platform.build != config.platform.host) { + gcc-cross = packages.foundation.gcc.versions."13.2.0-stage2".extend { + settings.target = config.platform.host; + }; + binutils-cross = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.platform.host; + }; }; - }; }; phases = { 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 d4f5598..32a3667 100644 --- a/tidepool/src/packages/foundation/findutils/versions/4.9.0-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/findutils/versions/4.9.0-stage1-passthrough.nix @@ -10,15 +10,15 @@ let package = packages.foundation.findutils.versions."4.9.0-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build != config.platform.target then - config.platform.build - else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then - "i686-linux" + if (config.platform.build == config.platform.host) then + if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then + "i686-linux" + else + "x86_64-linux" else - "x86_64-linux" + config.platform.build ); host = lib.modules.overrides.force config.platform.host; - target = lib.modules.overrides.force config.platform.target; }; }; in 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 589ccc0..b9d4330 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 @@ -13,7 +13,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; in { @@ -46,8 +45,8 @@ in }; deps = { - build = { - build = + build = + ( if (config.platform.build == "i686-linux") then { gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; @@ -77,13 +76,16 @@ in xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; gcc = packages.foundation.gcc.versions."13.2.0-stage4"; binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - }; - - host = lib.attrs.when (config.platform.build != config.platform.host) { - gcc = packages.foundation.gcc.versions."13.2.0-stage2"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; + } + ) + // lib.attrs.when (config.platform.build != config.platform.host) { + gcc-cross = packages.foundation.gcc.versions."13.2.0-stage2".extend { + settings.target = config.platform.host; + }; + binutils-cross = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.platform.host; + }; }; - }; }; phases = { 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 95bed6b..df70698 100644 --- a/tidepool/src/packages/foundation/gawk/versions/5.2.2-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/gawk/versions/5.2.2-stage1-passthrough.nix @@ -10,15 +10,15 @@ let package = packages.foundation.gawk.versions."5.2.2-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build != config.platform.target then - config.platform.build - else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then - "i686-linux" + if (config.platform.build == config.platform.host) then + if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then + "i686-linux" + else + "x86_64-linux" else - "x86_64-linux" + config.platform.build ); host = lib.modules.overrides.force config.platform.host; - target = lib.modules.overrides.force config.platform.target; }; }; in 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 e42a000..215f73c 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 @@ -13,7 +13,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; in { @@ -46,8 +45,8 @@ in }; deps = { - build = { - build = + build = + ( if (config.platform.build == "i686-linux") then { gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; @@ -77,13 +76,16 @@ in xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; gcc = packages.foundation.gcc.versions."13.2.0-stage4"; binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - }; - - host = lib.attrs.when (config.platform.build != config.platform.host) { - gcc = packages.foundation.gcc.versions."13.2.0-stage2"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; + } + ) + // lib.attrs.when (config.platform.build != config.platform.host) { + gcc-cross = packages.foundation.gcc.versions."13.2.0-stage2".extend { + settings.target = config.platform.host; + }; + binutils-cross = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.platform.host; + }; }; - }; }; phases = { diff --git a/tidepool/src/packages/foundation/gcc/versions/13.2.0-passthrough.nix b/tidepool/src/packages/foundation/gcc/versions/13.2.0-passthrough.nix index 6953ade..29b8d39 100644 --- a/tidepool/src/packages/foundation/gcc/versions/13.2.0-passthrough.nix +++ b/tidepool/src/packages/foundation/gcc/versions/13.2.0-passthrough.nix @@ -9,13 +9,14 @@ let package = if - config.platform.build == config.platform.host && config.platform.host != config.platform.target + config.platform.build == config.platform.host && config.platform.host != config.settings.target then packages.foundation.gcc.versions."13.2.0-stage2".extend { platform = lib.modules.overrides.force config.platform; + settings.target = config.settings.target; } else if - config.platform.build != config.platform.host && config.platform.host == config.platform.target + config.platform.build != config.platform.host && config.platform.host == config.settings.target then packages.foundation.gcc.versions."13.2.0-stage3".extend { platform = lib.modules.overrides.force config.platform; @@ -26,6 +27,14 @@ let }; in { + options = { + settings.target = lib.options.create { + type = lib.types.string; + default.value = config.platform.host; + description = "Target of the compiler"; + }; + }; + config = { meta = { description = "GNU Compiler Collection."; @@ -41,18 +50,10 @@ in build = "i686-linux"; host = "@linux"; } - { - build = "i686-linux"; - target = "@linux"; - } { build = "x86_64-linux"; host = "@linux"; } - { - build = "x86_64-linux"; - target = "@linux"; - } ]; hooks = package.hooks; 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 c022154..361611c 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 @@ -14,7 +14,7 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; + target = lib.systems.withBuildInfo config.settings.target; }; prefix = lib.strings.when ( @@ -26,13 +26,12 @@ let ]; configureFlags = [ - "LDFLAGS=--static" "--prefix=${builtins.placeholder "out"}" "--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" + "--with-as=${config.deps.build.binutils-cross.package}/bin/${prefix}as" + "--with-ld=${config.deps.build.binutils-cross.package}/bin/${prefix}ld" "--enable-languages=c,c++" "--disable-bootstrap" "--disable-libsanitizer" @@ -74,6 +73,12 @@ in type = lib.types.string; description = "Version of isl."; }; + + settings.target = lib.options.create { + type = lib.types.string; + default.value = "x86_64-linux"; + description = "Target of the compiler"; + }; }; config = { @@ -86,11 +91,9 @@ in platforms = [ { build = "i686-linux"; - target = "x86_64-linux"; } { build = "x86_64-linux"; - target = "@linux"; } ]; @@ -129,8 +132,8 @@ in }; deps = { - build = { - build = + build = + ( if (config.platform.build == "i686-linux") then { bzip2 = packages.foundation.bzip2.versions."1.0.8-bootstrap"; @@ -162,11 +165,13 @@ in 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"; + } + ) + // { + binutils-cross = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.settings.target; + }; }; - }; }; hooks = ctx: { @@ -178,12 +183,8 @@ in export CXX='${config.package}/bin/${prefix}g++ ${ builtins.concatStringsSep " " (ctx.host."foundation:cflags") }' - export CC_FOR_TARGET='${config.package}/bin/${prefix}gcc ${ - builtins.concatStringsSep " " (ctx.target."foundation:cflags") - }' - export CXX_FOR_TARGET='${config.package}/bin/${prefix}g++ ${ - builtins.concatStringsSep " " (ctx.target."foundation:cflags") - }' + export CC_FOR_TARGET=$CC + export CXX_FOR_TARGET=$CXX alias gcc='$CC' alias g++='$CXX' ''; @@ -210,10 +211,6 @@ in ''; configure = '' - echo "--configure: ${builtins.concatStringsSep " " configureFlags}" - ls -la ${config.deps.build.build.binutils.package}/bin - ls -la ${config.deps.build.build.gcc.package}/bin - # Configure mkdir build cd build 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 c0025d4..704c68c 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 @@ -14,7 +14,7 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; + target = lib.systems.withBuildInfo config.settings.target; }; prefix = lib.strings.when ( @@ -30,9 +30,9 @@ let ]; gccFlags = [ - "-Wl,-dynamic-linker=${config.deps.target.target.glibc.dynamicLinker}" - "-L${config.deps.target.target.glibc.package}/lib" - "-B${config.deps.target.target.glibc.package}/lib" + "-Wl,-dynamic-linker=${config.deps.host.glibc.dynamicLinker}" + "-L${config.deps.host.glibc.package}/lib" + "-B${config.deps.host.glibc.package}/lib" "-L${config.package.outPath}${libPrefix}/lib" "-B${config.package.outPath}${libPrefix}/lib" ]; @@ -42,16 +42,16 @@ let "--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" + "--with-as=${config.deps.build.binutils-cross.package}/bin/${prefix}as" + "--with-ld=${config.deps.build.binutils-cross.package}/bin/${prefix}ld" "--enable-languages=c,c++" "--disable-libsanitizer" "--disable-lto" "--disable-multilib" - "--with-headers=${config.deps.target.target.glibc.package}/include" + "--with-headers=${config.deps.host.glibc.package}/include" "--with-build-sysroot=/" - "--with-native-system-header-dir=${config.deps.target.target.glibc.package}/include" - "--with-build-time-tools=${config.deps.build.target.binutils.package}/bin" + "--with-native-system-header-dir=${config.deps.host.glibc.package}/include" + "--with-build-time-tools=${config.deps.build.binutils-cross.package}/bin" ]; in { @@ -75,6 +75,12 @@ in type = lib.types.string; description = "Version of isl."; }; + + settings.target = lib.options.create { + type = lib.types.string; + default.value = "x86_64-linux"; + description = "Target of the compiler"; + }; }; config = { @@ -87,11 +93,9 @@ in platforms = [ { build = "i686-linux"; - target = "x86_64-linux"; } { build = "x86_64-linux"; - target = "@linux"; } ]; @@ -130,8 +134,8 @@ in }; deps = { - build = { - build = + build = + ( if (config.platform.build == "i686-linux") then { bzip2 = packages.foundation.bzip2.versions."1.0.8-bootstrap"; @@ -163,24 +167,25 @@ in 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"; + } + ) + // { + binutils-cross = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.settings.target; + }; }; - }; - target = { - target = { - glibc = packages.foundation.glibc.versions."2.38-stage1"; + host = { + glibc = packages.foundation.glibc.versions."2.38-stage1".extend { + platform.host = lib.modules.overrides.force config.settings.target; }; }; }; 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"; + CFLAGS_FOR_TARGET = "-Wl,-dynamic-linker -Wl,${config.deps.host.glibc.dynamicLinker} -B${config.deps.host.glibc.package}/lib"; + LDFLAGS_FOR_TARGET = "-L$(pwd)/${platform.target.triple}/libgcc -L${config.deps.host.glibc.package}/lib"; + LIBRARY_PATH = "${config.deps.host.glibc.package}/lib"; }; hooks = ctx: { @@ -192,12 +197,8 @@ in export CXX='${config.package}/bin/${prefix}g++ ${ builtins.concatStringsSep " " (gccFlags ++ ctx.host."foundation:cflags") }' - export CC_FOR_TARGET='${config.package}/bin/${prefix}gcc ${ - builtins.concatStringsSep " " (gccFlags ++ ctx.target."foundation:cflags") - }' - export CXX_FOR_TARGET='${config.package}/bin/${prefix}g++ ${ - builtins.concatStringsSep " " (gccFlags ++ ctx.target."foundation:cflags") - }' + export CC_FOR_TARGET=$CC + export CXX_FOR_TARGET=$CXX alias gcc='$CC' alias g++='$CXX' ''; @@ -230,9 +231,9 @@ in # 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 + ln -sv ${config.deps.host.glibc.package}/lib/{crti.o,crtn.o} gcc 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 + ln -sv ${config.deps.host.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 5cb5b05..7e39242 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 @@ -11,10 +11,15 @@ let package = packages.foundation.gcc.versions."13.2.0-stage3".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.target == "x86_64-linux" then "i686-linux" else "x86_64-linux" + if (config.platform.build == config.platform.host) then + if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then + "i686-linux" + else + "x86_64-linux" + else + config.platform.build ); host = lib.modules.overrides.force config.platform.host; - target = lib.modules.overrides.force config.platform.target; }; }; in 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 8e60bdc..fee2817 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 @@ -14,7 +14,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; patches = [ @@ -22,9 +21,9 @@ let ]; gccFlags = [ - "-Wl,-dynamic-linker=${config.deps.host.host.glibc.dynamicLinker}" - "-L${config.deps.host.host.glibc.package}/lib" - "-B${config.deps.host.host.glibc.package}/lib" + "-Wl,-dynamic-linker=${config.deps.host.glibc.dynamicLinker}" + "-L${config.deps.host.glibc.package}/lib" + "-B${config.deps.host.glibc.package}/lib" "-L${config.package.outPath}/lib" "-B${config.package.outPath}/lib" ]; @@ -33,13 +32,13 @@ let "--prefix=${builtins.placeholder "out"}" "--build=${platform.build.triple}" "--host=${platform.host.triple}" - "--target=${platform.target.triple}" + "--target=${platform.host.triple}" "--enable-languages=c,c++" "--disable-lto" "--disable-bootstrap" "--disable-libsanitizer" "--disable-multilib" - "--with-native-system-header-dir=${config.deps.host.host.glibc.package}/include" + "--with-native-system-header-dir=${config.deps.host.glibc.package}/include" "--with-gxx-include-dir=${builtins.placeholder "out"}/include/c++/${config.version}/" "--with-build-sysroot=/" ]; @@ -65,6 +64,11 @@ in type = lib.types.string; description = "Version of isl."; }; + + target.triple = lib.options.create { + type = lib.types.string; + description = "Target of GCC"; + }; }; config = { @@ -120,8 +124,8 @@ in }; deps = { - build = { - build = + build = + ( if (config.platform.build == "i686-linux") then { bzip2 = packages.foundation.bzip2.versions."1.0.8-bootstrap"; @@ -155,29 +159,30 @@ in 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"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; + } + ) + // { + gcc-cross = packages.foundation.gcc.versions."13.2.0-stage2".extend { + settings.target = config.platform.host; + }; + binutils-cross = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.platform.host; + }; }; - }; host = { - host = { - glibc = packages.foundation.glibc.versions."2.38-stage1"; - }; + glibc = packages.foundation.glibc.versions."2.38-stage1"; }; }; env = rec { - 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"; - 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"; + CFLAGS_FOR_BUILD = "-Wl,-dynamic-linker -Wl,${config.deps.build.glibc.dynamicLinker} -B${config.deps.build.glibc.package}/lib"; + LDFLAGS_FOR_BUILD = "-L${config.deps.build.gcc.package}/lib -L${config.deps.build.glibc.package}/lib -Wl,-rpath,${config.deps.build.gcc.package}/lib -Wl,-rpath,${config.deps.build.glibc.package}/lib"; + CFLAGS_FOR_TARGET = "-Wl,-dynamic-linker -Wl,${config.deps.host.glibc.dynamicLinker} -B${config.deps.host.glibc.package}/lib"; + LDFLAGS_FOR_TARGET = "-L$(pwd)/${platform.host.triple}/libgcc -L${config.deps.host.glibc.package}/lib"; CFLAGS = CFLAGS_FOR_TARGET; LDFLAGS = LDFLAGS_FOR_TARGET; - LIBRARY_PATH = "${config.deps.host.host.glibc.package}/lib"; + LIBRARY_PATH = "${config.deps.host.glibc.package}/lib"; }; hooks = ctx: { 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 0d506eb..8e8151a 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 @@ -14,7 +14,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; patches = [ @@ -22,9 +21,9 @@ let ]; gccFlags = [ - "-Wl,-dynamic-linker=${config.deps.host.host.glibc.dynamicLinker}" - "-L${config.deps.host.host.glibc.package}/lib" - "-B${config.deps.host.host.glibc.package}/lib" + "-Wl,-dynamic-linker=${config.deps.host.glibc.dynamicLinker}" + "-L${config.deps.host.glibc.package}/lib" + "-B${config.deps.host.glibc.package}/lib" "-L${config.package.outPath}/lib" "-B${config.package.outPath}/lib" ]; @@ -33,14 +32,13 @@ let "--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.host.host.glibc.package}/include" + "--with-native-system-header-dir=${config.deps.host.glibc.package}/include" ]; in { @@ -110,68 +108,54 @@ in }; deps = { - build = { - build = - if (config.platform.build == "i686-linux") then - { - bzip2 = packages.foundation.bzip2.versions."1.0.8-bootstrap"; - diffutils = packages.foundation.diffutils.versions."3.10-bootstrap"; - findutils = packages.foundation.findutils.versions."4.9.0-bootstrap"; - gawk = packages.foundation.gawk.versions."5.2.2-bootstrap"; - gnugrep = packages.foundation.gnugrep.versions."3.11-bootstrap"; - gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; - gnupatch = packages.foundation.gnupatch.versions."2.7-bootstrap"; - gnused = packages.foundation.gnused.versions."4.9-bootstrap"; - gnutar = packages.foundation.gnutar.versions."1.35-bootstrap"; - gzip = packages.foundation.gzip.versions."1.13-bootstrap"; - xz = packages.foundation.xz.versions."5.4.3-bootstrap"; - binutils = packages.foundation.binutils.versions."2.41-bootstrap"; - } - else - { - bzip2 = packages.foundation.bzip2.versions."1.0.8-stage1-passthrough"; - diffutils = packages.foundation.diffutils.versions."3.10-stage1-passthrough"; - findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; - gawk = packages.foundation.gawk.versions."5.2.2-stage1-passthrough"; - gnugrep = packages.foundation.gnugrep.versions."3.11-stage1-passthrough"; - gnumake = packages.foundation.gnumake.versions."4.4.1-stage1-passthrough"; - gnupatch = packages.foundation.gnupatch.versions."2.7-stage1-passthrough"; - gnused = packages.foundation.gnused.versions."4.9-stage1-passthrough"; - gnutar = packages.foundation.gnutar.versions."1.35-stage1-passthrough"; - gzip = packages.foundation.gzip.versions."1.13-stage1-passthrough"; - xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; - binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - }; + 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"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; + } + else + { + bzip2 = packages.foundation.bzip2.versions."1.0.8-stage1-passthrough"; + diffutils = packages.foundation.diffutils.versions."3.10-stage1-passthrough"; + findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; + gawk = packages.foundation.gawk.versions."5.2.2-stage1-passthrough"; + gnugrep = packages.foundation.gnugrep.versions."3.11-stage1-passthrough"; + gnumake = packages.foundation.gnumake.versions."4.4.1-stage1-passthrough"; + gnupatch = packages.foundation.gnupatch.versions."2.7-stage1-passthrough"; + gnused = packages.foundation.gnused.versions."4.9-stage1-passthrough"; + gnutar = packages.foundation.gnutar.versions."1.35-stage1-passthrough"; + gzip = packages.foundation.gzip.versions."1.13-stage1-passthrough"; + xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage3-passthrough"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; + }; - host = - if (config.platform.build == "i686-linux") then - { - gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; - binutils = packages.foundation.binutils.versions."2.41-bootstrap"; - } - else - { - gcc = packages.foundation.gcc.versions."13.2.0-stage3-passthrough"; - binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - }; - }; - - host = { - host = - if (config.platform.build == "i686-linux") then - { - glibc = packages.foundation.glibc.versions."2.38-bootstrap"; - } - else - { - glibc = packages.foundation.glibc.versions."2.38-stage1-passthrough"; - }; - }; + host = + if (config.platform.build == "i686-linux") then + { + glibc = packages.foundation.glibc.versions."2.38-bootstrap"; + } + else + { + glibc = packages.foundation.glibc.versions."2.38-stage1-passthrough"; + }; }; env = { - CFLAGS_FOR_TARGET = "-Wl,-dynamic-linker -Wl,${config.deps.host.host.glibc.dynamicLinker}"; - LIBRARY_PATH = "${config.deps.host.host.glibc.package}/lib"; + CFLAGS_FOR_TARGET = "-Wl,-dynamic-linker -Wl,${config.deps.host.glibc.dynamicLinker}"; + LIBRARY_PATH = "${config.deps.host.glibc.package}/lib"; }; hooks = ctx: { 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 d852406..ab76813 100644 --- a/tidepool/src/packages/foundation/glibc/versions/2.38-bootstrap.nix +++ b/tidepool/src/packages/foundation/glibc/versions/2.38-bootstrap.nix @@ -13,7 +13,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; in { @@ -42,26 +41,24 @@ 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"; - }; - 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"; - }; + 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"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; + }; + host = { + linux-headers = packages.foundation.linux-headers.versions."6.5.6-stage1"; }; }; @@ -81,8 +78,8 @@ in --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 + --with-headers=${config.deps.host.linux-headers.package}/include \ + --with-binutils=${config.deps.build.binutils.package}/bin ''; build = '' @@ -93,7 +90,7 @@ in 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/ + ln -sv $(ls -d ${config.deps.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 2d26167..1efe447 100644 --- a/tidepool/src/packages/foundation/glibc/versions/2.38-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/glibc/versions/2.38-stage1-passthrough.nix @@ -10,15 +10,15 @@ let package = packages.foundation.glibc.versions."2.38-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build != config.platform.target then - config.platform.build - else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then - "i686-linux" + if (config.platform.build == config.platform.host) then + if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then + "i686-linux" + else + "x86_64-linux" else - "x86_64-linux" + config.platform.build ); host = lib.modules.overrides.force config.platform.host; - target = lib.modules.overrides.force config.platform.target; }; }; in 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 1c06cda..a0b0873 100644 --- a/tidepool/src/packages/foundation/glibc/versions/2.38-stage1.nix +++ b/tidepool/src/packages/foundation/glibc/versions/2.38-stage1.nix @@ -13,7 +13,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; in { @@ -54,8 +53,8 @@ in }; deps = { - build = { - build = + build = + ( if (config.platform.build == "i686-linux") then { bzip2 = packages.foundation.bzip2.versions."1.0.8-bootstrap"; @@ -97,25 +96,29 @@ in } // lib.attrs.when (config.platform.build != config.platform.host) { glibc = packages.foundation.glibc.versions."2.38-stage1-passthrough"; - }; - host = { - linux-headers = packages.foundation.linux-headers.versions."6.5.6-stage1"; - } + } + ) // lib.attrs.when (config.platform.build != config.platform.host) { - gcc = packages.foundation.gcc.versions."13.2.0-stage1"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; + gcc-cross = packages.foundation.gcc.versions."13.2.0-stage1".extend { + settings.target = config.platform.host; + }; + binutils-cross = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.platform.host; + }; }; + host = { + linux-headers = packages.foundation.linux-headers.versions."6.5.6-stage1"; }; }; dynamicLinker = "${config.package.outPath}/lib/" + ( - if platform.target.double == "x86_64-linux" then + if platform.host.double == "x86_64-linux" then "ld-linux-x86-64.so.2" - else if platform.target.double == "aarch64-linux" then + else if platform.host.double == "aarch64-linux" then "ld-linux-aarch64.so.1" - else if platform.target.double == "riscv64-linux" then + else if platform.host.double == "riscv64-linux" then "ld-linux-riscv64-lp64d.so.1" else "ld-linux.so.2" @@ -134,10 +137,10 @@ in "--prefix=$out" "--build=${platform.build.triple}" "--host=${platform.host.triple}" - "--with-headers=${config.deps.build.host.linux-headers.package}/include" + "--with-headers=${config.deps.host.linux-headers.package}/include" ] ++ lib.lists.when (config.platform.build != config.platform.host) [ - "--with-binutils=${config.deps.build.host.binutils.package}/${platform.target.triple}/bin" + "--with-binutils=${config.deps.build.binutils-cross.package}/${platform.host.triple}/bin" ] ); in @@ -166,15 +169,15 @@ in "make \"localedata/install-locales\" \"localedir=$out/lib/locale\"" else '' - mkdir -p $TMPDIR/${config.deps.build.build.glibc.package}/lib/locale + mkdir -p $TMPDIR/${config.deps.build.glibc.package}/lib/locale sed -i -e \ 's,^$(rtld-prefix) $(common-objpfx)locale/localedef,localedef --prefix=''${TMPDIR} --${platform.host.system.cpu.endian.name}-endian,' \ ../localedata/Makefile make SHELL='sh -x' "localedata/install-locales" "localedir=$out/lib/locale" - cp -r $TMPDIR/${config.deps.build.build.glibc.package}/lib/locale $out/lib + cp -r $TMPDIR/${config.deps.build.glibc.package}/lib/locale $out/lib '' } - ln -sv $(ls -d ${config.deps.build.host.linux-headers.package}/include/* | grep -v scsi\$) $out/include/ + ln -sv $(ls -d ${config.deps.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 bf274ee..4756947 100644 --- a/tidepool/src/packages/foundation/gnugrep/versions/3.11-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/gnugrep/versions/3.11-stage1-passthrough.nix @@ -10,15 +10,15 @@ let package = packages.foundation.gnugrep.versions."3.11-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build != config.platform.target then - config.platform.build - else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then - "i686-linux" + if (config.platform.build == config.platform.host) then + if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then + "i686-linux" + else + "x86_64-linux" else - "x86_64-linux" + config.platform.build ); host = lib.modules.overrides.force config.platform.host; - target = lib.modules.overrides.force config.platform.target; }; }; in 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 2e8dd88..3218973 100644 --- a/tidepool/src/packages/foundation/gnugrep/versions/3.11-stage1.nix +++ b/tidepool/src/packages/foundation/gnugrep/versions/3.11-stage1.nix @@ -13,7 +13,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; in { @@ -46,8 +45,8 @@ in }; deps = { - build = { - build = + build = + ( if (config.platform.build == "i686-linux") then { gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; @@ -77,13 +76,16 @@ in xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; gcc = packages.foundation.gcc.versions."13.2.0-stage4"; binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - }; - - host = lib.attrs.when (config.platform.build != config.platform.host) { - gcc = packages.foundation.gcc.versions."13.2.0-stage2"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; + } + ) + // lib.attrs.when (config.platform.build != config.platform.host) { + gcc-cross = packages.foundation.gcc.versions."13.2.0-stage2".extend { + settings.target = config.platform.host; + }; + binutils-cross = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.platform.host; + }; }; - }; }; phases = { diff --git a/tidepool/src/packages/foundation/gnum4/versions/1.4.19-stage1-passthrough.nix b/tidepool/src/packages/foundation/gnum4/versions/1.4.19-stage1-passthrough.nix index cd9dee3..bc6083b 100644 --- a/tidepool/src/packages/foundation/gnum4/versions/1.4.19-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/gnum4/versions/1.4.19-stage1-passthrough.nix @@ -10,15 +10,15 @@ let package = packages.foundation.gnum4.versions."1.4.19-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build != config.platform.target then - config.platform.build - else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then - "i686-linux" + if (config.platform.build == config.platform.host) then + if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then + "i686-linux" + else + "x86_64-linux" else - "x86_64-linux" + config.platform.build ); host = lib.modules.overrides.force config.platform.host; - target = lib.modules.overrides.force config.platform.target; }; }; in diff --git a/tidepool/src/packages/foundation/gnum4/versions/1.4.19-stage1.nix b/tidepool/src/packages/foundation/gnum4/versions/1.4.19-stage1.nix index a423adf..9324a05 100644 --- a/tidepool/src/packages/foundation/gnum4/versions/1.4.19-stage1.nix +++ b/tidepool/src/packages/foundation/gnum4/versions/1.4.19-stage1.nix @@ -13,7 +13,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; in { @@ -46,8 +45,8 @@ in }; deps = { - build = { - build = + build = + ( if (config.platform.build == "i686-linux") then { gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; @@ -77,13 +76,16 @@ in xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; gcc = packages.foundation.gcc.versions."13.2.0-stage4"; binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - }; - - host = lib.attrs.when (config.platform.build != config.platform.host) { - gcc = packages.foundation.gcc.versions."13.2.0-stage2"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; + } + ) + // lib.attrs.when (config.platform.build != config.platform.host) { + gcc-cross = packages.foundation.gcc.versions."13.2.0-stage2".extend { + settings.target = config.platform.host; + }; + binutils-cross = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.platform.host; + }; }; - }; }; phases = { 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 a78fc91..68e27db 100644 --- a/tidepool/src/packages/foundation/gnumake/versions/4.4.1-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/gnumake/versions/4.4.1-stage1-passthrough.nix @@ -10,15 +10,15 @@ let package = packages.foundation.gnumake.versions."4.4.1-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build != config.platform.target then - config.platform.build - else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then - "i686-linux" + if (config.platform.build == config.platform.host) then + if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then + "i686-linux" + else + "x86_64-linux" else - "x86_64-linux" + config.platform.build ); host = lib.modules.overrides.force config.platform.host; - target = lib.modules.overrides.force config.platform.target; }; }; in 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 4458093..a908ca1 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 @@ -13,7 +13,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; patches = [ @@ -51,8 +50,8 @@ in }; deps = { - build = { - build = + build = + ( if (config.platform.build == "i686-linux") then { @@ -83,13 +82,16 @@ in xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; gcc = packages.foundation.gcc.versions."13.2.0-stage4"; binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - }; - - host = lib.attrs.when (config.platform.build != config.platform.host) { - gcc = packages.foundation.gcc.versions."13.2.0-stage2"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; + } + ) + // lib.attrs.when (config.platform.build != config.platform.host) { + gcc-cross = packages.foundation.gcc.versions."13.2.0-stage2".extend { + settings.target = config.platform.host; + }; + binutils-cross = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.platform.host; + }; }; - }; }; phases = { 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 3721563..c23bd62 100644 --- a/tidepool/src/packages/foundation/gnupatch/versions/2.7-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/gnupatch/versions/2.7-stage1-passthrough.nix @@ -10,15 +10,15 @@ let package = packages.foundation.gnupatch.versions."2.7-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build != config.platform.target then - config.platform.build - else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then - "i686-linux" + if (config.platform.build == config.platform.host) then + if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then + "i686-linux" + else + "x86_64-linux" else - "x86_64-linux" + config.platform.build ); host = lib.modules.overrides.force config.platform.host; - target = lib.modules.overrides.force config.platform.target; }; }; in 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 302c4e1..4b4ca81 100644 --- a/tidepool/src/packages/foundation/gnupatch/versions/2.7-stage1.nix +++ b/tidepool/src/packages/foundation/gnupatch/versions/2.7-stage1.nix @@ -13,7 +13,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; in { @@ -46,10 +45,9 @@ in }; deps = { - build = { - build = + 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"; @@ -78,13 +76,16 @@ in xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; gcc = packages.foundation.gcc.versions."13.2.0-stage4"; binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - }; - - host = lib.attrs.when (config.platform.build != config.platform.host) { - gcc = packages.foundation.gcc.versions."13.2.0-stage2"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; + } + ) + // lib.attrs.when (config.platform.build != config.platform.host) { + gcc-cross = packages.foundation.gcc.versions."13.2.0-stage2".extend { + settings.target = config.platform.host; + }; + binutils-cross = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.platform.host; + }; }; - }; }; phases = { 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 eecf142..09979fb 100644 --- a/tidepool/src/packages/foundation/gnused/versions/4.9-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/gnused/versions/4.9-stage1-passthrough.nix @@ -10,15 +10,15 @@ let package = packages.foundation.gnused.versions."4.9-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build != config.platform.target then - config.platform.build - else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then - "i686-linux" + if (config.platform.build == config.platform.host) then + if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then + "i686-linux" + else + "x86_64-linux" else - "x86_64-linux" + config.platform.build ); host = lib.modules.overrides.force config.platform.host; - target = lib.modules.overrides.force config.platform.target; }; }; in 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 d087564..572adcf 100644 --- a/tidepool/src/packages/foundation/gnused/versions/4.9-stage1.nix +++ b/tidepool/src/packages/foundation/gnused/versions/4.9-stage1.nix @@ -13,7 +13,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; in { @@ -46,8 +45,8 @@ in }; deps = { - build = { - build = + build = + ( if (config.platform.build == "i686-linux") then { gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; @@ -77,13 +76,16 @@ in xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; gcc = packages.foundation.gcc.versions."13.2.0-stage4"; binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - }; - - host = lib.attrs.when (config.platform.build != config.platform.host) { - gcc = packages.foundation.gcc.versions."13.2.0-stage2"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; + } + ) + // lib.attrs.when (config.platform.build != config.platform.host) { + gcc-cross = packages.foundation.gcc.versions."13.2.0-stage2".extend { + settings.target = config.platform.host; + }; + binutils-cross = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.platform.host; + }; }; - }; }; phases = { 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 3aa404f..3202dd7 100644 --- a/tidepool/src/packages/foundation/gnutar/versions/1.35-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/gnutar/versions/1.35-stage1-passthrough.nix @@ -10,15 +10,15 @@ let package = packages.foundation.gnutar.versions."1.35-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build != config.platform.target then - config.platform.build - else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then - "i686-linux" + if (config.platform.build == config.platform.host) then + if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then + "i686-linux" + else + "x86_64-linux" else - "x86_64-linux" + config.platform.build ); host = lib.modules.overrides.force config.platform.host; - target = lib.modules.overrides.force config.platform.target; }; }; in 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 0f054df..42530ae 100644 --- a/tidepool/src/packages/foundation/gnutar/versions/1.35-stage1.nix +++ b/tidepool/src/packages/foundation/gnutar/versions/1.35-stage1.nix @@ -13,7 +13,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; in { @@ -46,10 +45,9 @@ in }; deps = { - build = { - build = + 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"; @@ -78,13 +76,16 @@ in xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; gcc = packages.foundation.gcc.versions."13.2.0-stage4"; binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - }; - - host = lib.attrs.when (config.platform.build != config.platform.host) { - gcc = packages.foundation.gcc.versions."13.2.0-stage2"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; + } + ) + // lib.attrs.when (config.platform.build != config.platform.host) { + gcc-cross = packages.foundation.gcc.versions."13.2.0-stage2".extend { + settings.target = config.platform.host; + }; + binutils-cross = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.platform.host; + }; }; - }; }; phases = { 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 92ee61d..33c791e 100644 --- a/tidepool/src/packages/foundation/gzip/versions/1.13-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/gzip/versions/1.13-stage1-passthrough.nix @@ -10,15 +10,15 @@ let package = packages.foundation.gzip.versions."1.13-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build != config.platform.target then - config.platform.build - else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then - "i686-linux" + if (config.platform.build == config.platform.host) then + if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then + "i686-linux" + else + "x86_64-linux" else - "x86_64-linux" + config.platform.build ); host = lib.modules.overrides.force config.platform.host; - target = lib.modules.overrides.force config.platform.target; }; }; in 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 3c4b211..9101ef8 100644 --- a/tidepool/src/packages/foundation/gzip/versions/1.13-stage1.nix +++ b/tidepool/src/packages/foundation/gzip/versions/1.13-stage1.nix @@ -13,7 +13,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; in { @@ -46,8 +45,8 @@ in }; deps = { - build = { - build = + build = + ( if (config.platform.build == "i686-linux") then { gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; @@ -77,13 +76,16 @@ in xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; gcc = packages.foundation.gcc.versions."13.2.0-stage4"; binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - }; - - host = lib.attrs.when (config.platform.build != config.platform.host) { - gcc = packages.foundation.gcc.versions."13.2.0-stage2"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; + } + ) + // lib.attrs.when (config.platform.build != config.platform.host) { + gcc-cross = packages.foundation.gcc.versions."13.2.0-stage2".extend { + settings.target = config.platform.host; + }; + binutils-cross = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.platform.host; + }; }; - }; }; phases = { 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 e0e09c2..996140f 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 @@ -6,15 +6,15 @@ let package = packages.foundation.linux-headers.versions."6.5.6-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build != config.platform.target then - config.platform.build - else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then - "i686-linux" + if (config.platform.build == config.platform.host) then + if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then + "i686-linux" + else + "x86_64-linux" else - "x86_64-linux" + config.platform.build ); host = lib.modules.overrides.force config.platform.host; - target = lib.modules.overrides.force config.platform.target; }; }; in 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 ed93d75..d30ce67 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 @@ -8,7 +8,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; in { @@ -20,7 +19,7 @@ in platforms = { build = "@linux"; - target = "@linux"; + host = "@linux"; }; builder = builders.foundation.basic; @@ -31,43 +30,38 @@ in }; deps = { - build = { - 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"; - gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; - binutils = packages.foundation.binutils.versions."2.41-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"; - gcc = packages.foundation.gcc.versions."13.2.0-stage4"; - binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - }; - host = lib.attrs.when (config.platform.build != config.platform.host) { - gcc = packages.foundation.gcc.versions."13.2.0-stage2"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; - }; - }; + 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"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-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"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; + } + ); }; phases = { @@ -80,7 +74,7 @@ in make -j $NIX_BUILD_CORES V=1 \ "CC=''${CC_FOR_TARGET:-''${CC}}" \ "HOSTCC=$CC" \ - ARCH=${platform.target.linux.arch} \ + ARCH=${platform.host.linux.arch} \ headers ''; diff --git a/tidepool/src/packages/foundation/musl/versions/1.2.4-stage1-passthrough.nix b/tidepool/src/packages/foundation/musl/versions/1.2.4-stage1-passthrough.nix index d489075..68c9fbc 100644 --- a/tidepool/src/packages/foundation/musl/versions/1.2.4-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/musl/versions/1.2.4-stage1-passthrough.nix @@ -10,15 +10,15 @@ let package = packages.foundation.musl.versions."1.2.4-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build != config.platform.target then - config.platform.build - else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then - "i686-linux" + if (config.platform.build == config.platform.host) then + if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then + "i686-linux" + else + "x86_64-linux" else - "x86_64-linux" + config.platform.build ); host = lib.modules.overrides.force config.platform.host; - target = lib.modules.overrides.force config.platform.target; }; }; in @@ -35,10 +35,6 @@ in build = "@linux"; host = "@linux"; } - { - build = "@linux"; - target = "@linux"; - } ]; builder = builders.foundation.passthrough.extend { diff --git a/tidepool/src/packages/foundation/musl/versions/1.2.4-stage1.nix b/tidepool/src/packages/foundation/musl/versions/1.2.4-stage1.nix index 16c7451..04a7fca 100644 --- a/tidepool/src/packages/foundation/musl/versions/1.2.4-stage1.nix +++ b/tidepool/src/packages/foundation/musl/versions/1.2.4-stage1.nix @@ -8,7 +8,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; in @@ -28,18 +27,10 @@ in build = "i686-linux"; host = "x86_64-linux"; } - { - build = "i686-linux"; - target = "x86_64-linux"; - } { build = "x86_64-linux"; host = "@linux"; } - { - build = "x86_64-linux"; - target = "@linux"; - } ]; builder = builders.foundation.basic; @@ -50,8 +41,8 @@ in }; deps = { - build = { - build = + build = + ( if (config.platform.build == "i686-linux") then { gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; @@ -73,20 +64,22 @@ in gcc = packages.foundation.gcc.versions."13.2.0-stage4"; binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; bash = packages.foundation.bash.versions."5.2.15-stage1-passthrough"; - }; - host = lib.attrs.when (config.platform.build != config.platform.host) { - gcc = packages.foundation.gcc.versions."13.2.0-stage2"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; - }; - target = lib.attrs.when (config.platform.host != config.platform.target) { - gcc = packages.foundation.gcc.versions."13.2.0-stage2"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; - }; - }; - host = { - host = lib.attrs.when (config.platform.build != config.platform.host) { - bash = packages.foundation.bash.versions."5.2.15-stage1"; + } + ) + // lib.attrs.when (config.platform.build != config.platform.host) { + gcc = packages.foundation.gcc.versions."13.2.0-stage2".extend { + settings.target = config.platform.host; + }; + binutils = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.platform.host; + }; }; + # target = lib.attrs.when (config.platform.host != config.platform.target) { + # gcc = packages.foundation.gcc.versions."13.2.0-stage2"; + # binutils = packages.foundation.binutils.versions."2.41-stage1"; + # }; + host = lib.attrs.when (config.platform.build != config.platform.host) { + bash = packages.foundation.bash.versions."5.2.15-stage1"; }; }; @@ -103,7 +96,7 @@ in patch = '' # Patch # https://github.com/ZilchOS/bootstrap-from-tcc/blob/2e0c68c36b3437386f786d619bc9a16177f2e149/using-nix/2a3-intermediate-musl.nix - sed -i 's|/bin/sh|${config.deps.build.build.bash.package}/bin/bash|' \ + sed -i 's|/bin/sh|${config.deps.build.bash.package}/bin/bash|' \ tools/*.sh # patch popen/system to search in PATH instead of hardcoding /bin/sh sed -i 's|posix_spawn(&pid, "/bin/sh",|posix_spawnp(\&pid, "sh",|' \ @@ -118,7 +111,6 @@ in --prefix=$out \ --build=${platform.build.triple} \ --host=${platform.host.triple} \ - --target=${platform.target.triple} \ --syslibdir=$out/lib \ --enable-wrapper ''; @@ -133,9 +125,9 @@ in make -j $NIX_BUILD_CORES install sed -i 's|/bin/sh|${ if (config.platform.build != config.platform.host) then - config.deps.host.host.bash.package + config.deps.host.bash.package else - config.deps.build.build.bash.package + config.deps.build.bash.package }/bin/bash|' $out/bin/* ln -s ../lib/libc.so $out/bin/ldd ''; diff --git a/tidepool/src/packages/foundation/python/versions/3.12.0-stage1.nix b/tidepool/src/packages/foundation/python/versions/3.12.0-stage1.nix index e6a23b1..b9f9e27 100644 --- a/tidepool/src/packages/foundation/python/versions/3.12.0-stage1.nix +++ b/tidepool/src/packages/foundation/python/versions/3.12.0-stage1.nix @@ -12,7 +12,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; patches = [ @@ -49,56 +48,53 @@ in }; deps = { - build = { - build = - ( - if (config.platform.build == "i686-linux") then - { - gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; - gnupatch = packages.foundation.gnupatch.versions."2.7-bootstrap"; - gnused = packages.foundation.gnused.versions."4.9-bootstrap"; - gnutar = packages.foundation.gnutar.versions."1.35-bootstrap"; - gnugrep = packages.foundation.gnugrep.versions."3.11-bootstrap"; - gawk = packages.foundation.gawk.versions."5.2.2-bootstrap"; - diffutils = packages.foundation.diffutils.versions."3.10-bootstrap"; - findutils = packages.foundation.findutils.versions."4.9.0-bootstrap"; - xz = packages.foundation.xz.versions."5.4.3-bootstrap"; - gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; - binutils = packages.foundation.binutils.versions."2.41-bootstrap"; - } - else - { - gnumake = packages.foundation.gnumake.versions."4.4.1-stage1-passthrough"; - gnupatch = packages.foundation.gnupatch.versions."2.7-stage1-passthrough"; - gnused = packages.foundation.gnused.versions."4.9-stage1-passthrough"; - gnutar = packages.foundation.gnutar.versions."1.35-stage1-passthrough"; - gnugrep = packages.foundation.gnugrep.versions."3.11-stage1-passthrough"; - gawk = packages.foundation.gawk.versions."5.2.2-stage1-passthrough"; - diffutils = packages.foundation.diffutils.versions."3.10-stage1-passthrough"; - findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; - xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; - gcc = packages.foundation.gcc.versions."13.2.0-stage4"; - binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - } - ) - // lib.attrs.when (config.platform.build != config.platform.host) { - python = packages.foundation.python.versions."3.12.0-stage1"; + build = + ( + if (config.platform.build == "i686-linux") then + { + gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; + gnupatch = packages.foundation.gnupatch.versions."2.7-bootstrap"; + gnused = packages.foundation.gnused.versions."4.9-bootstrap"; + gnutar = packages.foundation.gnutar.versions."1.35-bootstrap"; + gnugrep = packages.foundation.gnugrep.versions."3.11-bootstrap"; + gawk = packages.foundation.gawk.versions."5.2.2-bootstrap"; + diffutils = packages.foundation.diffutils.versions."3.10-bootstrap"; + findutils = packages.foundation.findutils.versions."4.9.0-bootstrap"; + xz = packages.foundation.xz.versions."5.4.3-bootstrap"; + gcc = packages.foundation.gcc.versions."13.2.0-bootstrap"; + binutils = packages.foundation.binutils.versions."2.41-bootstrap"; + } + else + { + gnumake = packages.foundation.gnumake.versions."4.4.1-stage1-passthrough"; + gnupatch = packages.foundation.gnupatch.versions."2.7-stage1-passthrough"; + gnused = packages.foundation.gnused.versions."4.9-stage1-passthrough"; + gnutar = packages.foundation.gnutar.versions."1.35-stage1-passthrough"; + gnugrep = packages.foundation.gnugrep.versions."3.11-stage1-passthrough"; + gawk = packages.foundation.gawk.versions."5.2.2-stage1-passthrough"; + diffutils = packages.foundation.diffutils.versions."3.10-stage1-passthrough"; + findutils = packages.foundation.findutils.versions."4.9.0-stage1-passthrough"; + xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; + gcc = packages.foundation.gcc.versions."13.2.0-stage4"; + binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; + } + ) + // lib.attrs.when (config.platform.build != config.platform.host) { + python = packages.foundation.python.versions."3.12.0-stage1"; + gcc = packages.foundation.gcc.versions."13.2.0-stage2".extend { + settings.target = config.platform.host; + }; + binutils = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.platform.host; }; - - host = lib.attrs.when (config.platform.build != config.platform.host) { - gcc = packages.foundation.gcc.versions."13.2.0-stage2"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; }; - }; host = { - host = { - zlib = - if (config.platform.build == "i686-linux" && config.platform.build == config.platform.host) then - packages.foundation.zlib.versions."1.3-bootstrap" - else - packages.foundation.zlib.versions."1.3-stage1"; - }; + zlib = + if (config.platform.build == "i686-linux" && config.platform.build == config.platform.host) then + packages.foundation.zlib.versions."1.3-bootstrap" + else + packages.foundation.zlib.versions."1.3-stage1"; }; }; @@ -124,7 +120,7 @@ in "--host=${platform.host.triple}" ] ++ lib.lists.when (config.platform.build != config.platform.host) [ - "--with-build-python=\"${config.deps.build.build.python.package}/bin/python3\"" + "--with-build-python=\"${config.deps.build.python.package}/bin/python3\"" "ac_cv_buggy_getaddrinfo=no" "ac_cv_file__dev_ptmx=yes" "ac_cv_file__dev_ptc=yes" 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 377a2d1..823569e 100644 --- a/tidepool/src/packages/foundation/xz/versions/5.4.3-stage1-passthrough.nix +++ b/tidepool/src/packages/foundation/xz/versions/5.4.3-stage1-passthrough.nix @@ -10,15 +10,15 @@ let package = packages.foundation.xz.versions."5.4.3-stage1".extend { platform = { build = lib.modules.overrides.force ( - if config.platform.build != config.platform.target then - config.platform.build - else if config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux" then - "i686-linux" + if (config.platform.build == config.platform.host) then + if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then + "i686-linux" + else + "x86_64-linux" else - "x86_64-linux" + config.platform.build ); host = lib.modules.overrides.force config.platform.host; - target = lib.modules.overrides.force config.platform.target; }; }; in 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 cdb0f12..2d57bb7 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 @@ -12,7 +12,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; in { @@ -48,8 +47,8 @@ in }; deps = { - build = { - build = + build = + ( if (config.platform.build == "i686-linux") then { gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; @@ -73,13 +72,16 @@ in xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; gcc = packages.foundation.gcc.versions."13.2.0-stage4"; binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - }; - - host = lib.attrs.when (config.platform.build != config.platform.host) { - gcc = packages.foundation.gcc.versions."13.2.0-stage2"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; + } + ) + // lib.attrs.when (config.platform.build != config.platform.host) { + gcc = packages.foundation.gcc.versions."13.2.0-stage2".extend { + settings.target = config.platform.host; + }; + binutils = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.platform.host; + }; }; - }; }; phases = { diff --git a/tidepool/src/packages/foundation/zlib/versions/1.3-stage1.nix b/tidepool/src/packages/foundation/zlib/versions/1.3-stage1.nix index 12dcb19..c447215 100644 --- a/tidepool/src/packages/foundation/zlib/versions/1.3-stage1.nix +++ b/tidepool/src/packages/foundation/zlib/versions/1.3-stage1.nix @@ -12,7 +12,6 @@ let platform = { build = lib.systems.withBuildInfo config.platform.build; host = lib.systems.withBuildInfo config.platform.host; - target = lib.systems.withBuildInfo config.platform.target; }; in { @@ -45,8 +44,8 @@ in }; deps = { - build = { - build = + build = + ( if (config.platform.build == "i686-linux") then { gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap"; @@ -66,13 +65,16 @@ in xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough"; gcc = packages.foundation.gcc.versions."13.2.0-stage4"; binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough"; - }; - - host = lib.attrs.when (config.platform.build != config.platform.host) { - gcc = packages.foundation.gcc.versions."13.2.0-stage2"; - binutils = packages.foundation.binutils.versions."2.41-stage1"; + } + ) + // lib.attrs.when (config.platform.build != config.platform.host) { + gcc = packages.foundation.gcc.versions."13.2.0-stage2".extend { + settings.target = config.platform.host; + }; + binutils = packages.foundation.binutils.versions."2.41-stage1".extend { + settings.target = config.platform.host; + }; }; - }; }; context = {