push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,75 @@
{
lib,
stdenv,
fetchurl,
buildPackages,
linuxHeaders,
perl,
nixosTests,
}:
let
commonMakeFlags = [
"prefix=$(out)"
"SHLIBDIR=$(out)/lib"
];
in
stdenv.mkDerivation rec {
pname = "klibc";
version = "2.0.14";
src = fetchurl {
url = "mirror://kernel/linux/libs/klibc/2.0/klibc-${version}.tar.xz";
hash = "sha256-KBv7aD4ZaBhBKvcLiWi3cmR1qA/xxL1nEZ5r9QWfkHU=";
};
patches = [ ./no-reinstall-kernel-headers.patch ];
depsBuildBuild = [ buildPackages.stdenv.cc ];
nativeBuildInputs = [ perl ];
strictDeps = true;
hardeningDisable = [
"format"
"stackprotector"
];
makeFlags =
commonMakeFlags
++ [
"KLIBCARCH=${if stdenv.hostPlatform.isRiscV64 then "riscv64" else stdenv.hostPlatform.linuxArch}"
"KLIBCKERNELSRC=${linuxHeaders}"
]
# TODO(@Ericson2314): We now can get the ABI from
# `stdenv.hostPlatform.parsed.abi`, is this still a good idea?
++ lib.optional (stdenv.hostPlatform.linuxArch == "arm") "CONFIG_AEABI=y"
++ lib.optional (
stdenv.hostPlatform != stdenv.buildPlatform
) "CROSS_COMPILE=${stdenv.cc.targetPrefix}";
# Install static binaries as well.
postInstall = ''
dir=$out/lib/klibc/bin.static
mkdir $dir
cp $(find $(find . -name static) -type f ! -name "*.g" -a ! -name ".*") $dir/
for file in ${linuxHeaders}/include/*; do
ln -sv $file $out/lib/klibc/include
done
'';
passthru.tests = {
# uses klibc's ipconfig
inherit (nixosTests) initrd-network-ssh;
};
meta = {
description = "Minimalistic libc subset for initramfs usage";
mainProgram = "klcc";
homepage = "https://kernel.org/pub/linux/libs/klibc/";
maintainers = with lib.maintainers; [ fpletz ];
license = lib.licenses.bsd3;
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,12 @@
diff --git a/scripts/Kbuild.install b/scripts/Kbuild.install
index 0788637f..6708e19f 100644
--- a/scripts/Kbuild.install
+++ b/scripts/Kbuild.install
@@ -102,7 +102,6 @@ header:
$(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include
$(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)lib
$(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)bin
- $(Q)cp -rfL $(KLIBCKERNELSRC)/include/. $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/.
ifneq ($(srctree),$(objtree))
$(Q)cp -rf $(srctree)/usr/include/. $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/.
endif

View File

@@ -0,0 +1,26 @@
{ stdenv, klibc }:
stdenv.mkDerivation {
# !!! For now, the name has to be exactly as long as the original
# name due to the sed hackery below. Once patchelf 0.4 is in the
# tree, we can do this properly.
#name = "${klibc.name}-shrunk";
name = klibc.name;
buildCommand = ''
mkdir -p $out/lib
cp -prd ${klibc.out}/lib/klibc/bin $out/
cp -p ${klibc.out}/lib/*.so $out/lib/
chmod +w $out/*
old=$(echo ${klibc.out}/lib/klibc-*.so)
new=$(echo $out/lib/klibc-*.so)
for i in $out/bin/*; do
echo $i
sed "s^$old^$new^" -i $i
# !!! use patchelf
#patchelf --set-interpreter $new $i
done
''; # */
allowedReferences = [ "out" ];
inherit (klibc) meta;
}