darwin.stdenv: reduce number of times Python is built

This commit is contained in:
Randy Eckenrode 2024-06-24 23:56:25 -04:00
parent 9377594eea
commit bb96a168d7
No known key found for this signature in database
GPG Key ID: 64C1CD4EC2A600D9

View File

@ -440,10 +440,12 @@ in
ninja = super.ninja.override { buildDocs = false; };
# Use this stages CF to build Python. Its required but cant be included in the stdenv.
# Use this stages CF to build Python. Its required, but it cant be included in the stdenv.
python3 = self.python3Minimal;
python3Minimal = super.python3Minimal.overrideAttrs (old: {
buildInputs = old.buildInputs ++ [ self.darwin.CF ];
python3Minimal = (super.python3Minimal.override {
self = self.python3Minimal;
}).overrideAttrs (old: {
buildInputs = old.buildInputs or [ ] ++ [ self.darwin.CF ];
});
darwin = super.darwin.overrideScope (selfDarwin: superDarwin: {
@ -510,9 +512,7 @@ in
'';
})
# Build cctools, Python, and sysctl for use by LLVMs check phase. They must be built in
# their stage to prevent infinite recursions and to make sure the stdenv used to build
# LLVM has the newly built cctools instead of the one from the bootstrap tools.
# Build sysctl for use by LLVMs check phase. It must be built separately to avoid an infinite recursion.
(prevStage:
# previous stage1 stdenv:
assert lib.all isFromBootstrapFiles (with prevStage; [ coreutils gnugrep ]);
@ -551,28 +551,18 @@ in
python3Minimal scons sed serf sharutils sqlite subversion texinfo unzip which xz
zlib zstd;
# Support for the SystemConfiguration framework is required to run the LLVM tests, but trying
# to override python3Minimal does not appear to work.
python3 = (super.python3.override {
inherit (self) libffi;
inherit (self.darwin) configd;
openssl = null;
readline = null;
ncurses = null;
gdbm = null;
sqlite = null;
tzdata = null;
stripConfig = true;
stripIdlelib = true;
stripTests = true;
stripTkinter = true;
rebuildBytecode = false;
stripBytecode = true;
includeSiteCustomize = false;
enableOptimizations = false;
# Avoid pulling in openldap just to run Mesons tests.
meson = super.meson.overrideAttrs {
doInstallCheck = false;
};
# The bootstrap Python needs its own `pythonAttr` to make sure the override works properly.
python3 = self.python3-bootstrap;
python3-bootstrap = super.python3.override {
self = self.python3-bootstrap;
pythonAttr = "python3-bootstrap";
enableLTO = false;
mimetypesSupport = false;
}).overrideAttrs (_: { pname = "python3-minimal-scproxy"; });
};
darwin = super.darwin.overrideScope (_: superDarwin: {
inherit (prevStage.darwin)
@ -623,7 +613,7 @@ in
assert lib.all isBuiltByBootstrapFilesCompiler (with prevStage; [
atf autoconf automake bash binutils-unwrapped bison brotli cmake cpio cyrus_sasl db
ed expat flex gettext gmp groff icu kyua libedit libffi libiconv libidn2 libkrb5 libssh2
libtool libunistring libxml2 m4 ncurses nghttp2 ninja openldap openssh openssl
libtool libunistring libxml2 m4 meson ncurses nghttp2 ninja openldap openssh openssl
patchutils pbzx perl pkg-config.pkg-config python3 python3Minimal scons serf sqlite
subversion sysctl.provider texinfo unzip which xz zlib zstd
]);
@ -650,7 +640,7 @@ in
inherit (prevStage) ccWrapperStdenv
atf autoconf automake bash binutils binutils-unwrapped bison brotli cmake cmakeMinimal
cpio cyrus_sasl db ed expat flex gettext gmp groff icu kyua libedit libffi libiconv
libidn2 libkrb5 libssh2 libtool libunistring libxml2 m4 ncurses nghttp2 ninja
libidn2 libkrb5 libssh2 libtool libunistring libxml2 m4 meson ncurses nghttp2 ninja
openldap openssh openssl patchutils pbzx perl pkg-config python3 python3Minimal
scons sed serf sharutils sqlite subversion sysctl texinfo unzip which xz zlib zstd;
@ -746,7 +736,7 @@ in
inherit (prevStage) ccWrapperStdenv
atf autoconf automake binutils-unwrapped bison brotli cmake cmakeMinimal coreutils
cpio cyrus_sasl db ed expat flex gettext gmp gnugrep groff icu kyua libedit libffi
libiconv libidn2 libkrb5 libssh2 libtool libunistring libxml2 m4 ncurses nghttp2
libiconv libidn2 libkrb5 libssh2 libtool libunistring libxml2 m4 meson ncurses nghttp2
ninja openbsm openldap openpam openssh openssl patchutils pbzx perl pkg-config
python3 python3Minimal scons serf sqlite subversion sysctl texinfo unzip which xz
zlib zstd;
@ -813,7 +803,7 @@ in
assert lib.all isBuiltByBootstrapFilesCompiler (with prevStage; [
atf autoconf automake binutils-unwrapped bison brotli cmake cmakeMinimal coreutils
cpio cyrus_sasl db ed expat flex gettext gmp gnugrep groff icu kyua libedit libidn2
libkrb5 libssh2 libtool libunistring m4 nghttp2 ninja openbsm openldap openpam openssh
libkrb5 libssh2 libtool libunistring m4 meson nghttp2 ninja openbsm openldap openpam openssh
openssl patchutils pbzx perl pkg-config.pkg-config python3 python3Minimal scons serf
sqlite subversion sysctl.provider texinfo unzip which xz zstd
]);
@ -850,7 +840,7 @@ in
inherit (prevStage) ccWrapperStdenv
atf autoconf automake bash bison brotli cmake cmakeMinimal coreutils cpio
cyrus_sasl db ed expat flex gettext gmp gnugrep groff kyua libedit libidn2 libkrb5
libssh2 libtool libunistring m4 ncurses nghttp2 ninja openbsm openldap openpam
libssh2 libtool libunistring m4 meson ncurses nghttp2 ninja openbsm openldap openpam
openssh openssl patchutils pbzx perl pkg-config python3 python3Minimal scons serf
sqlite subversion sysctl texinfo unzip which xz zstd;
@ -935,7 +925,7 @@ in
assert lib.all isBuiltByBootstrapFilesCompiler (with prevStage; [
autoconf automake bison brotli cmake cmakeMinimal coreutils cpio cyrus_sasl
db ed expat flex gettext gmp gnugrep groff libedit libidn2 libkrb5 libssh2 libtool
libunistring m4 ncurses nghttp2 ninja openbsm openldap openpam openssh openssl
libunistring m4 meson ncurses nghttp2 ninja openbsm openldap openpam openssh openssl
patchutils pbzx perl pkg-config.pkg-config python3 python3Minimal scons serf sqlite
subversion sysctl.provider texinfo unzip which xz zstd
]);
@ -971,7 +961,7 @@ in
inherit (prevStage) ccWrapperStdenv
autoconf automake bash binutils binutils-unwrapped bison brotli cmake cmakeMinimal
coreutils cpio cyrus_sasl db ed expat flex gettext gmp gnugrep groff libedit
libidn2 libkrb5 libssh2 libtool libunistring m4 nghttp2 ninja openbsm openldap
libidn2 libkrb5 libssh2 libtool libunistring m4 meson nghttp2 ninja openbsm openldap
openpam openssh openssl patchutils pbzx perl pkg-config python3 python3Minimal scons
sed serf sharutils sqlite subversion sysctl texinfo unzip which xz zstd
@ -1019,7 +1009,7 @@ in
assert lib.all isBuiltByBootstrapFilesCompiler (with prevStage; [
autoconf automake bison brotli cmake cmakeMinimal coreutils cpio cyrus_sasl
db ed expat flex gettext gmp gnugrep groff libedit libidn2 libkrb5 libssh2 libtool
libunistring m4 nghttp2 ninja openbsm openldap openpam openssh openssl patchutils pbzx
libunistring m4 meson nghttp2 ninja openbsm openldap openpam openssh openssl patchutils pbzx
perl pkg-config.pkg-config python3 python3Minimal scons serf sqlite subversion
sysctl.provider texinfo unzip which xz zstd
]);
@ -1054,7 +1044,7 @@ in
overrides = self: super: {
inherit (prevStage) ccWrapperStdenv
autoconf automake bash bison cmake cmakeMinimal cyrus_sasl db expat flex groff
libedit libtool m4 ninja openldap openssh patchutils perl pkg-config python3 scons
libedit libtool m4 meson ninja openldap openssh patchutils perl pkg-config python3 scons
serf sqlite subversion sysctl texinfo unzip which
# CF dependencies - dont rebuild them.
@ -1202,7 +1192,7 @@ in
assert lib.all isBuiltByBootstrapFilesCompiler (with prevStage; [
autoconf automake bison cmake cmakeMinimal cyrus_sasl db expat flex groff libedit
libtool m4 ninja openldap openssh patchutils perl pkg-config.pkg-config python3 scons
libtool m4 meson ninja openldap openssh patchutils perl pkg-config.pkg-config python3 scons
serf sqlite subversion sysctl.provider texinfo unzip which
]);