refactor: pass system w/ build info as pkg platform

This commit is contained in:
Victor Fuentes 2025-10-06 23:32:21 -07:00
parent a5b66548d3
commit 80890b1dd5
Signed by: vlinkz
GPG key ID: DF727B8D5AF99C64
51 changed files with 210 additions and 298 deletions

View file

@ -54,22 +54,20 @@ in
'') sorted.result;
executable =
if system == "i686-linux" then
if system.double == "i686-linux" then
"${foundation.stage2-bash}/bin/bash"
else if system == "x86_64-linux" then
"${
(lib.packages.build packages.foundation.bash.versions."5.2.15-stage1" "i686-linux" system).package
}/bin/bash"
else
"${
(lib.packages.build packages.foundation.bash.versions."5.2.15-stage1" "x86_64-linux" system).package
(lib.packages.build packages.foundation.bash.versions."5.2.15-stage1-passthrough" system system)
.package
}/bin/bash";
built = builtins.derivation (
package.env
// {
inherit (package) name;
inherit script system;
inherit script;
system = system.double;
outputs = builtins.attrNames (lib.packages.getOutputs package);
@ -82,19 +80,20 @@ in
bins = lib.paths.bin (
(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).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).package
(lib.packages.build packages.foundation.coreutils.versions."9.4-stage1" "x86_64-linux" system)
.package
]
++ (
if (system.double == "i686-linux") then
[
foundation.stage2-bash
foundation.stage2-coreutils
]
else
[
(lib.packages.build packages.foundation.bash.versions."5.2.15-stage1-passthrough" system system)
.package
(lib.packages.build packages.foundation.coreutils.versions."9.4-stage1-passthrough" system system)
.package
]
)
);
in
builtins.concatStringsSep ":" (

View file

@ -15,7 +15,10 @@ in
builtins.map (dependency: dependency.package) available;
build =
build: host: builtins.mapAttrs (name: dep: (lib.packages.resolve dep).packages.${build}.${host});
build: host:
builtins.mapAttrs (
name: dep: (lib.packages.resolve dep).extend { platform = { inherit build host; }; }
);
collect =
package:
@ -204,9 +207,6 @@ in
package.version
];
buildSystem = lib.systems.withBuildInfo build;
hostSystem = lib.systems.withBuildInfo host;
platform = {
build = lib.modules.override 75 build;
host = lib.modules.override 75 host;
@ -216,17 +216,17 @@ in
inherit platform;
};
support = lib.packages.supports package buildSystem.double hostSystem.double;
support = lib.packages.supports package build.double host.double;
result =
if !support.compatible then
builtins.throw "📦 [Aux Tidepool] Package `${identifier}` does not support the platform build=${buildSystem.double}, host=${hostSystem.double}"
builtins.throw "📦 [Aux Tidepool] Package `${identifier}` does not support the platform build=${build.double}, host=${host.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}" result;
builtins.addErrorContext "📦 [Aux Tidepool] while building package `${identifier}` for platform build=${build.double}, host=${host.double}" result;
supports =
alias: build: host:

View file

@ -33,6 +33,12 @@ in
lib.systems = {
match = builtins.mapAttrs (lib.fp.const matchAnyAttrs) lib.systems.patterns;
isExecutable =
a: b:
(a.isAndroid == b.isAndroid)
&& a.system.kernel == b.system.kernel
&& lib.systems.validate.compatible a.system.cpu b.system.cpu;
platforms = {
pc = {
linux-kernel = {
@ -2560,12 +2566,6 @@ in
double = lib.systems.into.double resolved.system;
triple = lib.systems.into.triple resolved.system;
isExecutable =
platform:
(resolved.isAndroid == platform.isAndroid)
&& resolved.system.kernel == platform.system.kernel
&& lib.systems.validate.compatible resolved.system.cpu platform.system.cpu;
# The difference between `isStatic` and `hasSharedLibraries` is mainly the
# addition of the `staticMarker` (see make-derivation.nix). Some
# platforms, like embedded machines without a libc (e.g. arm-none-eabi)

View file

@ -680,13 +680,13 @@ in
{
build = lib.options.create {
description = "The build platform for the package.";
type = lib.types.string;
type = lib.types.platform;
default.value = initial.build or "x86_64-linux";
};
host = lib.options.create {
description = "The host platform for the package.";
type = lib.types.string;
type = lib.types.platform;
default.value = initial.host or "x86_64-linux";
};
};
@ -770,7 +770,10 @@ 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.packages.build config build host)
build:
lib.attrs.generate lib.systems.doubles.all (
host: lib.packages.build config (lib.systems.withBuildInfo build) (lib.systems.withBuildInfo host)
)
);
};

View file

@ -11,7 +11,9 @@ let
platform = {
build = lib.modules.overrides.force (
if (config.platform.build == config.platform.host) then
if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then
if
(config.platform.build.double == "x86_64-linux" || config.platform.build.double == "i686-linux")
then
"i686-linux"
else
"x86_64-linux"

View file

@ -9,11 +9,6 @@ let
;
version = lib.strings.removeSuffix "-stage1" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
in
{
config = {
@ -48,7 +43,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap";
gnupatch = packages.foundation.gnupatch.versions."2.7-bootstrap";
@ -99,8 +94,8 @@ in
flags = builtins.concatStringsSep " " (
[
"--prefix=$out"
"--build=${platform.build.triple}"
"--host=${platform.host.triple}"
"--build=${config.platform.build.triple}"
"--host=${config.platform.host.triple}"
"--enable-static-link"
]
++ lib.lists.when (config.platform.host == "i686-linux") [

View file

@ -11,7 +11,9 @@ let
platform = {
build = lib.modules.overrides.force (
if (config.platform.build == config.platform.host) then
if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then
if
(config.platform.build.double == "x86_64-linux" || config.platform.build.double == "i686-linux")
then
"i686-linux"
else
"x86_64-linux"
@ -27,8 +29,9 @@ in
options = {
settings = {
target = lib.options.create {
type = lib.types.nullish lib.types.string;
type = lib.types.nullish (lib.types.either lib.types.string lib.types.platform);
default.value = null;
apply = value: if builtins.isString value then lib.systems.withBuildInfo value else value;
};
allTargets = lib.options.create {
description = "Include all targets (dramatically increases size of binaries).";

View file

@ -8,11 +8,6 @@ let
mirrors
;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
version = lib.strings.removeSuffix "-stage1" config.version;
patches = [
@ -21,8 +16,8 @@ let
configureFlags = [
"--prefix=${builtins.placeholder "out"}"
"--build=${platform.build.triple}"
"--host=${platform.host.triple}"
"--build=${config.platform.build.triple}"
"--host=${config.platform.host.triple}"
"--with-sysroot=/"
"--enable-deterministic-archives"
@ -46,15 +41,16 @@ let
"--enable-target=all"
]
++ lib.lists.when (config.settings.target != null) [
"--target=${(lib.systems.withBuildInfo config.settings.target).triple}"
"--target=${config.settings.target.triple}"
];
in
{
options = {
settings = {
target = lib.options.create {
type = lib.types.nullish lib.types.string;
type = lib.types.nullish (lib.types.either lib.types.string lib.types.platform);
default.value = null;
apply = value: if builtins.isString value then lib.systems.withBuildInfo value else value;
};
allTargets = lib.options.create {
description = "Include all targets (dramatically increases size of binaries).";
@ -95,7 +91,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap";
gnused = packages.foundation.gnused.versions."4.9-bootstrap";

View file

@ -11,7 +11,9 @@ let
platform = {
build = lib.modules.overrides.force (
if (config.platform.build == config.platform.host) then
if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then
if
(config.platform.build.double == "x86_64-linux" || config.platform.build.double == "i686-linux")
then
"i686-linux"
else
"x86_64-linux"

View file

@ -9,11 +9,6 @@ let
;
version = lib.strings.removeSuffix "-stage1" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
in
{
config = {
@ -47,7 +42,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap";
gnused = packages.foundation.gnused.versions."4.9-bootstrap";
@ -97,8 +92,8 @@ in
# Configure
bash ./configure \
--prefix=$out \
--build=${platform.build.triple} \
--host=${platform.host.triple}
--build=${config.platform.build.triple} \
--host=${config.platform.host.triple}
'';
build = ''

View file

@ -11,7 +11,9 @@ let
platform = {
build = lib.modules.overrides.force (
if (config.platform.build == config.platform.host) then
if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then
if
(config.platform.build.double == "x86_64-linux" || config.platform.build.double == "i686-linux")
then
"i686-linux"
else
"x86_64-linux"

View file

@ -9,14 +9,9 @@ let
version = lib.strings.removeSuffix "-stage1" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
prefix = lib.strings.when (
platform.build.triple != platform.host.triple
) "${platform.host.triple}-";
config.platform.build.triple != config.platform.host.triple
) "${config.platform.host.triple}-";
in
{
config = {
@ -50,7 +45,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap";
gnutar = packages.foundation.gnutar.versions."1.35-bootstrap";

View file

@ -11,7 +11,9 @@ let
platform = {
build = lib.modules.overrides.force (
if (config.platform.build == config.platform.host) then
if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then
if
(config.platform.build.double == "x86_64-linux" || config.platform.build.double == "i686-linux")
then
"i686-linux"
else
"x86_64-linux"

View file

@ -10,15 +10,10 @@ let
version = lib.strings.removeSuffix "-stage1" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
configureFlags = [
"--prefix=${builtins.placeholder "out"}"
"--build=${platform.build.triple}"
"--host=${platform.host.triple}"
"--build=${config.platform.build.triple}"
"--host=${config.platform.host.triple}"
"--enable-single-binary=symlinks"
];
in
@ -54,7 +49,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap";
gnupatch = packages.foundation.gnupatch.versions."2.7-bootstrap";

View file

@ -11,7 +11,9 @@ let
platform = {
build = lib.modules.overrides.force (
if (config.platform.build == config.platform.host) then
if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then
if
(config.platform.build.double == "x86_64-linux" || config.platform.build.double == "i686-linux")
then
"i686-linux"
else
"x86_64-linux"

View file

@ -9,11 +9,6 @@ let
;
version = lib.strings.removeSuffix "-stage1" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
in
{
config = {
@ -47,7 +42,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap";
gnupatch = packages.foundation.gnupatch.versions."2.7-bootstrap";
@ -99,8 +94,8 @@ in
# Configure
bash ./configure \
--prefix=$out \
--build=${platform.build.triple} \
--host=${platform.host.triple}
--build=${config.platform.build.triple} \
--host=${config.platform.host.triple}
'';
build = ''

View file

@ -11,7 +11,9 @@ let
platform = {
build = lib.modules.overrides.force (
if (config.platform.build == config.platform.host) then
if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then
if
(config.platform.build.double == "x86_64-linux" || config.platform.build.double == "i686-linux")
then
"i686-linux"
else
"x86_64-linux"

View file

@ -9,11 +9,6 @@ let
;
version = lib.strings.removeSuffix "-stage1" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
in
{
config = {
@ -47,7 +42,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap";
gnupatch = packages.foundation.gnupatch.versions."2.7-bootstrap";
@ -99,8 +94,8 @@ in
# Configure
bash ./configure \
--prefix=$out \
--build=${platform.build.triple} \
--host=${platform.host.triple}
--build=${config.platform.build.triple} \
--host=${config.platform.host.triple}
'';
build = ''

View file

@ -11,7 +11,9 @@ let
platform = {
build = lib.modules.overrides.force (
if (config.platform.build == config.platform.host) then
if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then
if
(config.platform.build.double == "x86_64-linux" || config.platform.build.double == "i686-linux")
then
"i686-linux"
else
"x86_64-linux"

View file

@ -9,11 +9,6 @@ let
;
version = lib.strings.removeSuffix "-stage1" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
in
{
config = {
@ -47,7 +42,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap";
gnupatch = packages.foundation.gnupatch.versions."2.7-bootstrap";
@ -99,8 +94,8 @@ in
# Configure
bash ./configure \
--prefix=$out \
--build=${platform.build.triple} \
--host=${platform.host.triple}
--build=${config.platform.build.triple} \
--host=${config.platform.host.triple}
'';
build = ''

View file

@ -29,9 +29,9 @@ in
{
options = {
settings.target = lib.options.create {
type = lib.types.string;
type = lib.types.either lib.types.string lib.types.platform;
default.value = config.platform.host;
description = "Target of the compiler";
apply = value: if builtins.isString value then lib.systems.withBuildInfo value else value;
};
};

View file

@ -11,15 +11,9 @@ let
version = lib.strings.removeSuffix "-stage1" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
target = lib.systems.withBuildInfo config.settings.target;
};
prefix = lib.strings.when (
platform.build.triple != platform.target.triple
) "${platform.target.triple}-";
config.platform.build.triple != config.settings.target.triple
) "${config.settings.target.triple}-";
patches = [
../patches/libstdc++-target.patch
@ -27,9 +21,9 @@ let
configureFlags = [
"--prefix=${builtins.placeholder "out"}"
"--build=${platform.build.triple}"
"--host=${platform.host.triple}"
"--target=${platform.target.triple}"
"--build=${config.platform.build.triple}"
"--host=${config.platform.host.triple}"
"--target=${config.settings.target.triple}"
"--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++"
@ -75,9 +69,9 @@ in
};
settings.target = lib.options.create {
type = lib.types.string;
type = lib.types.either lib.types.string lib.types.platform;
default.value = "x86_64-linux";
description = "Target of the compiler";
apply = value: if builtins.isString value then lib.systems.withBuildInfo value else value;
};
};
@ -134,7 +128,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
bzip2 = packages.foundation.bzip2.versions."1.0.8-bootstrap";
diffutils = packages.foundation.diffutils.versions."3.10-bootstrap";
@ -225,7 +219,7 @@ in
install = ''
# Install
${lib.strings.when (platform.host.is64bit) ''
${lib.strings.when (config.platform.host.is64bit) ''
mkdir -p $out/lib
ln -s lib $out/lib64
''}

View file

@ -11,19 +11,13 @@ let
version = lib.strings.removeSuffix "-stage2" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
target = lib.systems.withBuildInfo config.settings.target;
};
prefix = lib.strings.when (
platform.build.triple != platform.target.triple
) "${platform.target.triple}-";
config.platform.build.triple != config.settings.target.triple
) "${config.settings.target.triple}-";
libPrefix = lib.strings.when (
platform.build.triple != platform.target.triple
) "/${platform.target.triple}";
config.platform.build.triple != config.settings.target.triple
) "/${config.settings.target.triple}";
patches = [
../patches/libstdc++-target.patch
@ -40,9 +34,9 @@ let
configureFlags = [
"--prefix=${builtins.placeholder "out"}"
"--build=${platform.build.triple}"
"--host=${platform.host.triple}"
"--target=${platform.target.triple}"
"--build=${config.platform.build.triple}"
"--host=${config.platform.host.triple}"
"--target=${config.settings.target.triple}"
"--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++"
@ -78,9 +72,9 @@ in
};
settings.target = lib.options.create {
type = lib.types.string;
type = lib.types.either lib.types.string lib.types.platform;
default.value = "x86_64-linux";
description = "Target of the compiler";
apply = value: if builtins.isString value then lib.systems.withBuildInfo value else value;
};
};
@ -137,7 +131,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
bzip2 = packages.foundation.bzip2.versions."1.0.8-bootstrap";
diffutils = packages.foundation.diffutils.versions."3.10-bootstrap";
@ -185,7 +179,7 @@ in
env = {
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";
LDFLAGS_FOR_TARGET = "-L$(pwd)/${config.settings.target.triple}/libgcc -L${config.deps.host.glibc.package}/lib";
LIBRARY_PATH = "${config.deps.host.glibc.package}/lib";
};
@ -233,8 +227,8 @@ 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.host.glibc.package}/lib/{crti.o,crtn.o} gcc
mkdir -p ${platform.target.triple}/libstdc++-v3/src
ln -sv ${config.deps.host.glibc.package}/lib/{crti.o,crtn.o} ${platform.target.triple}/libstdc++-v3/src
mkdir -p ${config.settings.target.triple}/libstdc++-v3/src
ln -sv ${config.deps.host.glibc.package}/lib/{crti.o,crtn.o} ${config.settings.target.triple}/libstdc++-v3/src
bash ../configure ${builtins.concatStringsSep " " configureFlags}
'';
@ -246,13 +240,13 @@ in
install = ''
# Install
${lib.strings.when (platform.host.is64bit) ''
${lib.strings.when (config.platform.host.is64bit) ''
mkdir -p $out/lib
ln -s lib $out/lib64
''}
${lib.strings.when (platform.target.is64bit) ''
mkdir -p $out/${platform.target.triple}/lib
ln -s lib $out/${platform.target.triple}/lib64
${lib.strings.when (config.settings.target.is64bit) ''
mkdir -p $out/${config.settings.target.triple}/lib
ln -s lib $out/${config.settings.target.triple}/lib64
''}
make -j $NIX_BUILD_CORES install
'';

View file

@ -12,7 +12,9 @@ let
platform = {
build = lib.modules.overrides.force (
if (config.platform.build == config.platform.host) then
if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then
if
(config.platform.build.double == "x86_64-linux" || config.platform.build.double == "i686-linux")
then
"i686-linux"
else
"x86_64-linux"

View file

@ -11,11 +11,6 @@ let
version = lib.strings.removeSuffix "-stage3" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
patches = [
../patches/libstdc++-target.patch
];
@ -31,9 +26,9 @@ let
configureFlags = [
"--prefix=${builtins.placeholder "out"}"
"--build=${platform.build.triple}"
"--host=${platform.host.triple}"
"--target=${platform.host.triple}"
"--build=${config.platform.build.triple}"
"--host=${config.platform.host.triple}"
"--target=${config.platform.host.triple}"
"--enable-languages=c,c++"
"--disable-lto"
"--disable-bootstrap"
@ -127,7 +122,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
bzip2 = packages.foundation.bzip2.versions."1.0.8-bootstrap";
diffutils = packages.foundation.diffutils.versions."3.10-bootstrap";
@ -180,7 +175,7 @@ in
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";
LDFLAGS_FOR_TARGET = "-L$(pwd)/${config.platform.host.triple}/libgcc -L${config.deps.host.glibc.package}/lib";
CFLAGS = CFLAGS_FOR_TARGET;
LDFLAGS = LDFLAGS_FOR_TARGET;
LIBRARY_PATH = "${config.deps.host.glibc.package}/lib";
@ -240,7 +235,7 @@ in
install = ''
# Install
${lib.strings.when (platform.host.is64bit) ''
${lib.strings.when (config.platform.host.is64bit) ''
mkdir -p $out/lib
ln -s lib $out/lib64
''}

View file

@ -11,11 +11,6 @@ let
version = lib.strings.removeSuffix "-stage4" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
patches = [
../patches/libstdc++-target.patch
];
@ -31,8 +26,8 @@ let
configureFlags = [
"--prefix=${builtins.placeholder "out"}"
"--build=${platform.build.triple}"
"--host=${platform.host.triple}"
"--build=${config.platform.build.triple}"
"--host=${config.platform.host.triple}"
"--enable-languages=c,c++"
"--disable-lto"
"--disable-bootstrap"
@ -110,7 +105,7 @@ in
deps = {
build =
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
bzip2 = packages.foundation.bzip2.versions."1.0.8-bootstrap";
diffutils = packages.foundation.diffutils.versions."3.10-bootstrap";
@ -144,7 +139,7 @@ in
};
host =
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
glibc = packages.foundation.glibc.versions."2.38-bootstrap";
}
@ -213,7 +208,7 @@ in
install = ''
# Install
${lib.strings.when (platform.host.is64bit) ''
${lib.strings.when (config.platform.host.is64bit) ''
mkdir -p $out/lib
ln -s lib $out/lib64
''}

View file

@ -9,11 +9,6 @@ let
;
version = lib.strings.removeSuffix "-bootstrap" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
in
{
options = {
@ -76,8 +71,8 @@ in
bash ../configure \
--prefix=$out \
--build=${platform.build.triple} \
--host=${platform.host.triple} \
--build=${config.platform.build.triple} \
--host=${config.platform.host.triple} \
--with-headers=${config.deps.host.linux-headers.package}/include \
--with-binutils=${config.deps.build.binutils.package}/bin
'';

View file

@ -11,7 +11,9 @@ let
platform = {
build = lib.modules.overrides.force (
if (config.platform.build == config.platform.host) then
if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then
if
(config.platform.build.double == "x86_64-linux" || config.platform.build.double == "i686-linux")
then
"i686-linux"
else
"x86_64-linux"

View file

@ -9,11 +9,6 @@ let
;
version = lib.strings.removeSuffix "-stage1" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
in
{
options = {
@ -55,7 +50,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
bzip2 = packages.foundation.bzip2.versions."1.0.8-bootstrap";
diffutils = packages.foundation.diffutils.versions."3.10-bootstrap";
@ -114,11 +109,11 @@ in
dynamicLinker =
"${config.package.outPath}/lib/"
+ (
if platform.host.double == "x86_64-linux" then
if config.platform.host.double == "x86_64-linux" then
"ld-linux-x86-64.so.2"
else if platform.host.double == "aarch64-linux" then
else if config.platform.host.double == "aarch64-linux" then
"ld-linux-aarch64.so.1"
else if platform.host.double == "riscv64-linux" then
else if config.platform.host.double == "riscv64-linux" then
"ld-linux-riscv64-lp64d.so.1"
else
"ld-linux.so.2"
@ -135,12 +130,12 @@ in
flags = builtins.concatStringsSep " " (
[
"--prefix=$out"
"--build=${platform.build.triple}"
"--host=${platform.host.triple}"
"--build=${config.platform.build.triple}"
"--host=${config.platform.host.triple}"
"--with-headers=${config.deps.host.linux-headers.package}/include"
]
++ lib.lists.when (config.platform.build != config.platform.host) [
"--with-binutils=${config.deps.build.binutils-cross.package}/${platform.host.triple}/bin"
"--with-binutils=${config.deps.build.binutils-cross.package}/${config.platform.host.triple}/bin"
]
);
in
@ -171,7 +166,7 @@ in
''
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,' \
's,^$(rtld-prefix) $(common-objpfx)locale/localedef,localedef --prefix=''${TMPDIR} --${config.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.glibc.package}/lib/locale $out/lib

View file

@ -11,7 +11,9 @@ let
platform = {
build = lib.modules.overrides.force (
if (config.platform.build == config.platform.host) then
if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then
if
(config.platform.build.double == "x86_64-linux" || config.platform.build.double == "i686-linux")
then
"i686-linux"
else
"x86_64-linux"

View file

@ -9,11 +9,6 @@ let
;
version = lib.strings.removeSuffix "-stage1" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
in
{
config = {
@ -47,7 +42,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap";
gnupatch = packages.foundation.gnupatch.versions."2.7-bootstrap";
@ -99,8 +94,8 @@ in
# Configure
bash ./configure \
--prefix=$out \
--build=${platform.build.triple} \
--host=${platform.host.triple}
--build=${config.platform.build.triple} \
--host=${config.platform.host.triple}
'';
build = ''

View file

@ -11,7 +11,9 @@ let
platform = {
build = lib.modules.overrides.force (
if (config.platform.build == config.platform.host) then
if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then
if
(config.platform.build.double == "x86_64-linux" || config.platform.build.double == "i686-linux")
then
"i686-linux"
else
"x86_64-linux"

View file

@ -9,11 +9,6 @@ let
;
version = lib.strings.removeSuffix "-stage1" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
in
{
config = {
@ -47,7 +42,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap";
gnupatch = packages.foundation.gnupatch.versions."2.7-bootstrap";
@ -99,8 +94,8 @@ in
# Configure
bash ./configure \
--prefix=$out \
--build=${platform.build.triple} \
--host=${platform.host.triple}
--build=${config.platform.build.triple} \
--host=${config.platform.host.triple}
'';
build = ''

View file

@ -11,7 +11,9 @@ let
platform = {
build = lib.modules.overrides.force (
if (config.platform.build == config.platform.host) then
if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then
if
(config.platform.build.double == "x86_64-linux" || config.platform.build.double == "i686-linux")
then
"i686-linux"
else
"x86_64-linux"

View file

@ -10,11 +10,6 @@ let
version = lib.strings.removeSuffix "-stage1" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
patches = [
../patches/4.4.1-0001-No-impure-bin-sh.patch
../patches/4.4.1-0002-remove-impure-dirs.patch
@ -52,7 +47,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap";
@ -110,8 +105,8 @@ in
# Configure
bash ./configure \
--prefix=$out \
--build=${platform.build.triple} \
--host=${platform.host.triple}
--build=${config.platform.build.triple} \
--host=${config.platform.host.triple}
'';
build = ''

View file

@ -11,7 +11,9 @@ let
platform = {
build = lib.modules.overrides.force (
if (config.platform.build == config.platform.host) then
if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then
if
(config.platform.build.double == "x86_64-linux" || config.platform.build.double == "i686-linux")
then
"i686-linux"
else
"x86_64-linux"

View file

@ -9,11 +9,6 @@ let
;
version = lib.strings.removeSuffix "-stage1" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
in
{
config = {
@ -47,7 +42,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap";
gnupatch = packages.foundation.gnupatch.versions."2.7-bootstrap";
@ -99,8 +94,8 @@ in
# Configure
bash ./configure \
--prefix=$out \
--build=${platform.build.triple} \
--host=${platform.host.triple}
--build=${config.platform.build.triple} \
--host=${config.platform.host.triple}
'';
build = ''

View file

@ -11,7 +11,9 @@ let
platform = {
build = lib.modules.overrides.force (
if (config.platform.build == config.platform.host) then
if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then
if
(config.platform.build.double == "x86_64-linux" || config.platform.build.double == "i686-linux")
then
"i686-linux"
else
"x86_64-linux"

View file

@ -9,11 +9,6 @@ let
;
version = lib.strings.removeSuffix "-stage1" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
in
{
config = {
@ -47,7 +42,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap";
gnupatch = packages.foundation.gnupatch.versions."2.7-bootstrap";
@ -99,8 +94,8 @@ in
# Configure
bash ./configure \
--prefix=$out \
--build=${platform.build.triple} \
--host=${platform.host.triple}
--build=${config.platform.build.triple} \
--host=${config.platform.host.triple}
'';
build = ''

View file

@ -11,7 +11,9 @@ let
platform = {
build = lib.modules.overrides.force (
if (config.platform.build == config.platform.host) then
if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then
if
(config.platform.build.double == "x86_64-linux" || config.platform.build.double == "i686-linux")
then
"i686-linux"
else
"x86_64-linux"

View file

@ -9,11 +9,6 @@ let
;
version = lib.strings.removeSuffix "-stage1" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
in
{
config = {
@ -47,7 +42,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap";
gnupatch = packages.foundation.gnupatch.versions."2.7-bootstrap";
@ -99,8 +94,8 @@ in
# Configure
bash ./configure \
--prefix=$out \
--build=${platform.build.triple} \
--host=${platform.host.triple}
--build=${config.platform.build.triple} \
--host=${config.platform.host.triple}
'';
build = ''

View file

@ -11,7 +11,9 @@ let
platform = {
build = lib.modules.overrides.force (
if (config.platform.build == config.platform.host) then
if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then
if
(config.platform.build.double == "x86_64-linux" || config.platform.build.double == "i686-linux")
then
"i686-linux"
else
"x86_64-linux"

View file

@ -9,11 +9,6 @@ let
;
version = lib.strings.removeSuffix "-stage1" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
in
{
config = {
@ -47,7 +42,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap";
gnupatch = packages.foundation.gnupatch.versions."2.7-bootstrap";
@ -99,8 +94,8 @@ in
# Configure
bash ./configure \
--prefix=$out \
--build=${platform.build.triple} \
--host=${platform.host.triple}
--build=${config.platform.build.triple} \
--host=${config.platform.host.triple}
'';
build = ''

View file

@ -7,7 +7,9 @@ let
platform = {
build = lib.modules.overrides.force (
if (config.platform.build == config.platform.host) then
if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then
if
(config.platform.build.double == "x86_64-linux" || config.platform.build.double == "i686-linux")
then
"i686-linux"
else
"x86_64-linux"

View file

@ -4,11 +4,6 @@ let
inherit (global) lib packages builders;
version = lib.strings.removeSuffix "-stage1" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
in
{
config = {
@ -31,7 +26,7 @@ in
deps = {
build = (
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
diffutils = packages.foundation.diffutils.versions."3.10-bootstrap";
findutils = packages.foundation.findutils.versions."4.9.0-bootstrap";
@ -74,7 +69,7 @@ in
make -j $NIX_BUILD_CORES V=1 \
"CC=''${CC_FOR_TARGET:-''${CC}}" \
"HOSTCC=$CC" \
ARCH=${platform.host.linux.arch} \
ARCH=${config.platform.host.linux.arch} \
headers
'';

View file

@ -11,7 +11,9 @@ let
platform = {
build = lib.modules.overrides.force (
if (config.platform.build == config.platform.host) then
if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then
if
(config.platform.build.double == "x86_64-linux" || config.platform.build.double == "i686-linux")
then
"i686-linux"
else
"x86_64-linux"

View file

@ -5,11 +5,6 @@ let
version = lib.strings.removeSuffix "-stage1" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
in
{
config = {
@ -43,7 +38,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap";
gnused = packages.foundation.gnused.versions."4.9-bootstrap";
@ -109,8 +104,8 @@ in
# Configure
bash ./configure \
--prefix=$out \
--build=${platform.build.triple} \
--host=${platform.host.triple} \
--build=${config.platform.build.triple} \
--host=${config.platform.host.triple} \
--syslibdir=$out/lib \
--enable-wrapper
'';

View file

@ -9,11 +9,6 @@ let
version = lib.strings.removeSuffix "-stage1" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
patches = [
../patches/no-ldconfig.patch
];
@ -50,7 +45,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap";
gnupatch = packages.foundation.gnupatch.versions."2.7-bootstrap";
@ -116,8 +111,8 @@ in
flags = builtins.concatStringsSep " " (
[
"--prefix=$out"
"--build=${platform.build.triple}"
"--host=${platform.host.triple}"
"--build=${config.platform.build.triple}"
"--host=${config.platform.host.triple}"
]
++ lib.lists.when (config.platform.build != config.platform.host) [
"--with-build-python=\"${config.deps.build.python.package}/bin/python3\""

View file

@ -11,7 +11,9 @@ let
platform = {
build = lib.modules.overrides.force (
if (config.platform.build == config.platform.host) then
if (config.platform.build == "x86_64-linux" || config.platform.build == "i686-linux") then
if
(config.platform.build.double == "x86_64-linux" || config.platform.build.double == "i686-linux")
then
"i686-linux"
else
"x86_64-linux"

View file

@ -8,11 +8,6 @@ let
;
version = lib.strings.removeSuffix "-stage1" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
in
{
config = {
@ -49,7 +44,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap";
gnused = packages.foundation.gnused.versions."4.9-bootstrap";
@ -95,8 +90,8 @@ in
# Configure
bash ./configure \
--prefix=$out \
--build=${platform.build.triple} \
--host=${platform.host.triple}
--build=${config.platform.build.triple} \
--host=${config.platform.host.triple}
'';
build = ''

View file

@ -8,11 +8,6 @@ let
;
version = lib.strings.removeSuffix "-stage1" config.version;
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
};
in
{
config = {
@ -46,7 +41,7 @@ in
deps = {
build =
(
if (config.platform.build == "i686-linux") then
if (config.platform.build.double == "i686-linux") then
{
gnumake = packages.foundation.gnumake.versions."4.4.1-bootstrap";
gnused = packages.foundation.gnused.versions."4.9-bootstrap";
@ -94,7 +89,7 @@ in
configure = ''
# Configure
export CHOST=${platform.host.triple}
export CHOST=${config.platform.host.triple}
bash ./configure \
--prefix=$out
'';