diff --git a/pkgs/build-support/vm/default.nix b/pkgs/build-support/vm/default.nix index f96cd6dc0077..7946a16006bc 100644 --- a/pkgs/build-support/vm/default.nix +++ b/pkgs/build-support/vm/default.nix @@ -7,6 +7,8 @@ rec { inherit (kernelPackages_2_6_26) kernel; + klibcShrunk = pkgs.klibcShrunk.override { klibc = klibc_15; }; + modulesClosure = makeModulesClosure { inherit kernel; diff --git a/pkgs/os-specific/linux/klibc/1.5.nix b/pkgs/os-specific/linux/klibc/1.5.nix new file mode 100644 index 000000000000..3a92c2f4d297 --- /dev/null +++ b/pkgs/os-specific/linux/klibc/1.5.nix @@ -0,0 +1,34 @@ +{stdenv, fetchurl, perl, bison, mktemp, kernelHeaders}: + +assert stdenv.isLinux; + +let version = "1.5"; in + +stdenv.mkDerivation { + name = "klibc-${version}"; + + src = fetchurl { + url = "mirror://kernel/linux/libs/klibc/klibc-${version}.tar.bz2"; + sha256 = "1izhf8kscjymsvsvhcqw9awnmp94vwv70zdj09srg9bkpjj0n017"; + }; + + makeFlags = ["V=1" "prefix=$out" "SHLIBDIR=$out/lib"]; + + preBuild = '' + makeFlags=$(eval "echo $makeFlags") + + mkdir linux + cp -prsd ${kernelHeaders}/include linux/ + chmod -R u+w linux/include/ + ''; # */ + + # 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/ + cp usr/dash/sh $dir/ + ''; + + buildInputs = [perl bison mktemp]; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5eed302be699..50047ac72095 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5257,6 +5257,13 @@ let kernelHeaders = glibc.kernelHeaders; }; + # Old version; needed in vmtools for insmod. Should use + # module_init_tools instead. + klibc_15 = makeOverridable (import ../os-specific/linux/klibc/1.5.nix) { + inherit fetchurl stdenv perl bison mktemp; + kernelHeaders = glibc.kernelHeaders; + }; + klibcShrunk = makeOverridable (import ../os-specific/linux/klibc/shrunk.nix) { inherit stdenv klibc; };