From 58246936e4f44c744e08e2386d4c446d18a44b24 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Tue, 31 Dec 2013 21:34:44 -0500 Subject: platforms.nix: Separate 32-bit and 64-bit PCs With this, stdenv.platform.kernelArch can be used by the kernel builder for PC platforms too. Signed-off-by: Shea Levy --- pkgs/top-level/all-packages.nix | 4 +++- pkgs/top-level/platforms.nix | 15 ++++++++++----- pkgs/top-level/release-cross.nix | 2 +- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5695e11e0faa..020d5b3c8e61 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -84,7 +84,9 @@ let if system == "armv6l-linux" then platforms.raspberrypi else if system == "armv5tel-linux" then platforms.sheevaplug else if system == "mips64el-linux" then platforms.fuloong2f_n32 - else platforms.pc; + else if system == "x86_64-linux" then platforms.pc64 + else if system == "i686-linux" then platforms.pc32 + else platforms.pcBase; platform = if platform_ != null then platform_ else config.platform or platformAuto; diff --git a/pkgs/top-level/platforms.nix b/pkgs/top-level/platforms.nix index d6408286581d..299941790e93 100644 --- a/pkgs/top-level/platforms.nix +++ b/pkgs/top-level/platforms.nix @@ -1,5 +1,5 @@ rec { - pc = { + pcBase = { name = "pc"; uboot = null; kernelHeadersBaseConfig = "defconfig"; @@ -7,12 +7,17 @@ rec { # Build whatever possible as a module, if not stated in the extra config. kernelAutoModules = true; kernelTarget = "bzImage"; - # Currently ignored - it should be set according to 'system' once it is - # not ignored. This is for stdenv-updates. - kernelArch = "i386"; }; - pc_simplekernel = pc // { + pc64 = pcBase // { kernelArch = "x86_64"; }; + + pc32 = pcBase // { kernelArch = "i386"; }; + + pc32_simplekernel = pc32 // { + kernelAutoModules = false; + }; + + pc64_simplekernel = pc64 // { kernelAutoModules = false; }; diff --git a/pkgs/top-level/release-cross.nix b/pkgs/top-level/release-cross.nix index 3895ee267797..6871567ca8d1 100644 --- a/pkgs/top-level/release-cross.nix +++ b/pkgs/top-level/release-cross.nix @@ -192,7 +192,7 @@ let arch = "i586"; float = "hard"; withTLS = true; - platform = pkgs.platforms.pc; + platform = pkgs.platforms.pc32; libc = "glibc"; openssl.system = "hurd-x86"; # Nix depends on OpenSSL. }; -- cgit 1.4.1 From 008992619f0ca5a61d6cd91394c818c5da345050 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Tue, 31 Dec 2013 22:38:06 -0500 Subject: linux/manual-config: Cross-compiling support With this, I was able to successfully compile a defconfig kernel for the sheevaplug, though I didn't actually try to run it (not having a sheevaplug myself). For native compiles, the most significant difference is that the platform's kernel target is built directly rather than hoping the default make target will pull it in. Also some stylistic improvements along the way. Signed-off-by: Shea Levy --- pkgs/os-specific/linux/kernel/manual-config.nix | 47 +++++++++++++++++-------- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 34 insertions(+), 15 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix index f097f2562d02..d96c8e5494cf 100644 --- a/pkgs/os-specific/linux/kernel/manual-config.nix +++ b/pkgs/os-specific/linux/kernel/manual-config.nix @@ -1,4 +1,4 @@ -{ stdenv, runCommand, nettools, bc, perl, kmod, writeTextFile }: +{ stdenv, runCommand, nettools, bc, perl, kmod, writeTextFile, ubootChooser }: let inherit (stdenv.lib) @@ -58,10 +58,10 @@ in }: let - installkernel = name: writeTextFile { name = "installkernel"; executable=true; text = '' - #!/bin/sh - mkdir $4 - cp -av $2 $4/${name} + installkernel = writeTextFile { name = "installkernel"; executable=true; text = '' + #!${stdenv.shell} -e + mkdir -p $4 + cp -av $2 $4 cp -av $3 $4 '';}; @@ -72,9 +72,10 @@ let commonMakeFlags = [ "O=$(buildRoot)" - "INSTALL_PATH=$(out)" - ] ++ (optional isModular "INSTALL_MOD_PATH=$(out)") - ++ optional installsFirmware "INSTALL_FW_PATH=$(out)/lib/firmware"; + ]; + + # Some image types need special install targets (e.g. uImage is installed with make uinstall) + installTarget = target: [ (if target == "uImage" then "uinstall" else "install") ]; sourceRoot = stdenv.mkDerivation { name = "linux-${version}-source"; @@ -126,16 +127,34 @@ stdenv.mkDerivation { runHook postConfigure ''; - nativeBuildInputs = [ perl bc nettools ]; + nativeBuildInputs = [ perl bc nettools ] ++ optional (stdenv.platform.uboot != null) + (ubootChooser stdenv.platform.uboot); makeFlags = commonMakeFlags ++ [ - "INSTALLKERNEL=${installkernel stdenv.platform.kernelTarget}" + "ARCH=${stdenv.platform.kernelArch}" ]; - crossAttrs = { + buildFlags = [ stdenv.platform.kernelTarget ] ++ optional isModular "modules"; + + installFlags = [ + "INSTALLKERNEL=${installkernel}" + "INSTALL_PATH=$(out)" + ] ++ (optional isModular "INSTALL_MOD_PATH=$(out)") + ++ optional installsFirmware "INSTALL_FW_PATH=$(out)/lib/firmware"; + + installTargets = installTarget stdenv.platform.kernelTarget; + + crossAttrs = let cp = stdenv.cross.platform; in { + buildFlags = [ cp.kernelTarget ] ++ optional isModular "modules"; + makeFlags = commonMakeFlags ++ [ - "INSTALLKERNEL=${installkernel stdenv.cross.platform.kernelTarget}" + "ARCH=${cp.kernelArch}" + "CROSS_COMPILE=$(crossConfig)-" ]; + + installTargets = installTarget cp.kernelTarget; + + buildInputs = optional (cp.uboot != null) (ubootChooser cp.uboot).crossDrv; }; postInstall = optionalString installsFirmware '' @@ -143,7 +162,7 @@ stdenv.mkDerivation { '' + (if isModular then '' make modules_install $makeFlags "''${makeFlagsArray[@]}" \ $installFlags "''${installFlagsArray[@]}" - rm -f $out/lib/modules/${modDirVersion}/build + unlink $out/lib/modules/${modDirVersion}/build mkdir -p $dev/lib/modules/${modDirVersion} mv $out/lib/modules/${modDirVersion}/source $dev/lib/modules/${modDirVersion}/source mv $buildRoot $dev/lib/modules/${modDirVersion}/build @@ -154,7 +173,7 @@ stdenv.mkDerivation { postFixup = if isModular then '' if [ -z "$dontStrip" ]; then - find $out -name "*.ko" -print0 | xargs -0 -r strip -S + find $out -name "*.ko" -print0 | xargs -0 -r ''${crossConfig+$crossConfig-}strip -S # Remove all references to the source directory to avoid unneeded # runtime dependencies find $out -name "*.ko" -print0 | xargs -0 -r sed -i \ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 020d5b3c8e61..f5c93f37f73e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6952,7 +6952,7 @@ let # A function to build a manually-configured kernel linuxManualConfig = import ../os-specific/linux/kernel/manual-config.nix { - inherit (pkgs) stdenv runCommand nettools bc perl kmod writeTextFile; + inherit (pkgs) stdenv runCommand nettools bc perl kmod writeTextFile ubootChooser; }; keyutils = callPackage ../os-specific/linux/keyutils { }; -- cgit 1.4.1 From fe185f0a180a0482c89e9fe8f573bb2ce158b1fd Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Tue, 31 Dec 2013 22:46:43 -0500 Subject: manual-config: Always add config query functions If the config attrset is manually specified, we still want isYes, isModule, etc. to work. But we let the passed in config attrset take precedence, if for some reason the caller wants to provide their own implementation of one or more of these functions. Signed-off-by: Shea Levy --- pkgs/os-specific/linux/kernel/manual-config.nix | 72 +++++++++++-------------- 1 file changed, 32 insertions(+), 40 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix index d96c8e5494cf..3036d8a04b0f 100644 --- a/pkgs/os-specific/linux/kernel/manual-config.nix +++ b/pkgs/os-specific/linux/kernel/manual-config.nix @@ -1,45 +1,16 @@ { stdenv, runCommand, nettools, bc, perl, kmod, writeTextFile, ubootChooser }: let - inherit (stdenv.lib) - hasAttr getAttr optionalAttrs optional optionalString maintainers platforms; - - # Function to parse the config file into a nix expression - readConfig = configFile: - let - configAttrs = import "${runCommand "config.nix" {} '' - echo "{" > "$out" - while IFS='=' read key val; do - [ "x''${key#CONFIG_}" != "x$key" ] || continue - no_firstquote="''${val#\"}"; - echo ' "'"$key"'" = "'"''${no_firstquote%\"}"'";' >> "$out" - done < "${configFile}" - echo "}" >> $out - ''}"; - - config = configAttrs // rec { - attrName = attr: "CONFIG_" + attr; - - isSet = attr: hasAttr (attrName attr) config; - - getValue = attr: if isSet attr then getAttr (attrName attr) config else null; - - isYes = attr: (isSet attr) && ((getValue attr) == "y"); - - isNo = attr: (isSet attr) && ((getValue attr) == "n"); - - isModule = attr: (isSet attr) && ((getValue attr) == "m"); - - isEnabled = attr: (isModule attr) || (isYes attr); - - isDisabled = attr: (!(isSet attr)) || (isNo attr); - }; - in - config; - -in - -{ + readConfig = configfile: import (runCommand "config.nix" {} '' + echo "{" > "$out" + while IFS='=' read key val; do + [ "x''${key#CONFIG_}" != "x$key" ] || continue + no_firstquote="''${val#\"}"; + echo ' "'"$key"'" = "'"''${no_firstquote%\"}"'";' >> "$out" + done < "${configfile}" + echo "}" >> $out + '').outPath; +in { # The kernel version version, # The version of the kernel module directory @@ -52,12 +23,33 @@ in configfile, # Manually specified nixexpr representing the config # If unspecified, this will be autodetected from the .config - config ? optionalAttrs allowImportFromDerivation (readConfig configfile), + config ? stdenv.lib.optionalAttrs allowImportFromDerivation (readConfig configfile), # Whether to utilize the controversial import-from-derivation feature to parse the config allowImportFromDerivation ? false }: +let config_ = config; in + let + inherit (stdenv.lib) + hasAttr getAttr optionalAttrs optional optionalString maintainers platforms; + + config = let attrName = attr: "CONFIG_" + attr; in { + isSet = attr: hasAttr (attrName attr) config; + + getValue = attr: if config.isSet attr then getAttr (attrName attr) config else null; + + isYes = attr: (config.getValue attr) == "y"; + + isNo = attr: (config.getValue attr) == "n"; + + isModule = attr: (config.getValue attr) == "m"; + + isEnabled = attr: (config.isModule attr) || (config.isYes attr); + + isDisabled = attr: (!(config.isSet attr)) || (config.isNo attr); + } // config_; + installkernel = writeTextFile { name = "installkernel"; executable=true; text = '' #!${stdenv.shell} -e mkdir -p $4 -- cgit 1.4.1 From 0c5776bc0fbc7336ca745135e251491409242a8d Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Tue, 31 Dec 2013 22:49:12 -0500 Subject: manual-config: Patch conf.c for generate-config.pl This only affects the `oldaskconfig' make target, so it shouldn't really affect current manual-config users, but it does make it more straightforward to implement the generic kernel build on top of manual-config. Signed-off-by: Shea Levy --- pkgs/os-specific/linux/kernel/manual-config.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix index 3036d8a04b0f..66e146799874 100644 --- a/pkgs/os-specific/linux/kernel/manual-config.nix +++ b/pkgs/os-specific/linux/kernel/manual-config.nix @@ -84,6 +84,10 @@ let sed -i "$mf" -e 's|/usr/bin/||g ; s|/bin/||g ; s|/sbin/||g' done sed -i Makefile -e 's|= depmod|= ${kmod}/sbin/depmod|' + # Patch kconfig to print "###" after every question so that + # generate-config.pl from the generic builder can answer them. + # This only affects oldaskconfig. + sed -e '/fflush(stdout);/i\printf("###");' -i scripts/kconfig/conf.c ''; installPhase = '' -- cgit 1.4.1 From 784c6d320c6d48989310e5c68f821d10486b4805 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Tue, 31 Dec 2013 22:50:41 -0500 Subject: manual-config: Put `source' before the version in the sourceRoot name nix's version parsing treats the previous name as a package named `linux' with version `${version}-source', when we really want a package named `linux-source' with version `${version}' Signed-off-by: Shea Levy --- pkgs/os-specific/linux/kernel/manual-config.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix index 66e146799874..3219ef0b002b 100644 --- a/pkgs/os-specific/linux/kernel/manual-config.nix +++ b/pkgs/os-specific/linux/kernel/manual-config.nix @@ -70,7 +70,7 @@ let installTarget = target: [ (if target == "uImage" then "uinstall" else "install") ]; sourceRoot = stdenv.mkDerivation { - name = "linux-${version}-source"; + name = "linux-source-${version}"; inherit src; -- cgit 1.4.1 From a87b1f36e0095956b9b170f2c7071263a36ae155 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Tue, 31 Dec 2013 23:09:42 -0500 Subject: manual-config: Fully general cross-compiling In the most general case, the cross and native kernel may differ in patches and configuration file as well as architecture, kernel target, etc. It's probably overkill to support that case, but since it was doable without much duplication and it will make integrating with the existing cross-compilation support in the generic kernel I decided to implement it anyway. Signed-off-by: Shea Levy --- pkgs/os-specific/linux/kernel/manual-config.nix | 252 ++++++++++++------------ 1 file changed, 131 insertions(+), 121 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix index 3219ef0b002b..9c82aea41aa6 100644 --- a/pkgs/os-specific/linux/kernel/manual-config.nix +++ b/pkgs/os-specific/linux/kernel/manual-config.nix @@ -19,110 +19,153 @@ in { src, # Any patches kernelPatches ? [], - # The kernel .config file + # Patches for native compiling only + nativeKernelPatches ? [], + # Patches for cross compiling only + crossKernelPatches ? [], + # The native kernel .config file configfile, + # The cross kernel .config file + crossConfigfile ? configfile, # Manually specified nixexpr representing the config # If unspecified, this will be autodetected from the .config config ? stdenv.lib.optionalAttrs allowImportFromDerivation (readConfig configfile), + # Cross-compiling config + crossConfig ? if allowImportFromDerivation then (readConfig crossConfigfile) else config, # Whether to utilize the controversial import-from-derivation feature to parse the config allowImportFromDerivation ? false }: -let config_ = config; in - let inherit (stdenv.lib) - hasAttr getAttr optionalAttrs optional optionalString maintainers platforms; - - config = let attrName = attr: "CONFIG_" + attr; in { - isSet = attr: hasAttr (attrName attr) config; - - getValue = attr: if config.isSet attr then getAttr (attrName attr) config else null; - - isYes = attr: (config.getValue attr) == "y"; - - isNo = attr: (config.getValue attr) == "n"; - - isModule = attr: (config.getValue attr) == "m"; - - isEnabled = attr: (config.isModule attr) || (config.isYes attr); - - isDisabled = attr: (!(config.isSet attr)) || (config.isNo attr); - } // config_; + hasAttr getAttr optional optionalString maintainers platforms; installkernel = writeTextFile { name = "installkernel"; executable=true; text = '' #!${stdenv.shell} -e mkdir -p $4 cp -av $2 $4 cp -av $3 $4 - '';}; - - isModular = config.isYes "MODULES"; - - installsFirmware = (config.isEnabled "FW_LOADER") && - (isModular || (config.isDisabled "FIRMWARE_IN_KERNEL")); + ''; }; commonMakeFlags = [ "O=$(buildRoot)" ]; - # Some image types need special install targets (e.g. uImage is installed with make uinstall) - installTarget = target: [ (if target == "uImage" then "uinstall" else "install") ]; - - sourceRoot = stdenv.mkDerivation { - name = "linux-source-${version}"; - - inherit src; - - patches = map (p: p.patch) kernelPatches; - - phases = [ "unpackPhase" "patchPhase" "installPhase" ]; - - prePatch = '' - for mf in $(find -name Makefile -o -name Makefile.include -o -name install.sh); do - echo "stripping FHS paths in \`$mf'..." - sed -i "$mf" -e 's|/usr/bin/||g ; s|/bin/||g ; s|/sbin/||g' - done - sed -i Makefile -e 's|= depmod|= ${kmod}/sbin/depmod|' - # Patch kconfig to print "###" after every question so that - # generate-config.pl from the generic builder can answer them. - # This only affects oldaskconfig. - sed -e '/fflush(stdout);/i\printf("###");' -i scripts/kconfig/conf.c - ''; + drvAttrs = config_: platform: kernelPatches: configfile: + let + config = let attrName = attr: "CONFIG_" + attr; in { + isSet = attr: hasAttr (attrName attr) config; - installPhase = '' - cd .. - mv $sourceRoot $out - ''; - }; + getValue = attr: if config.isSet attr then getAttr (attrName attr) config else null; + + isYes = attr: (config.getValue attr) == "y"; + + isNo = attr: (config.getValue attr) == "n"; + + isModule = attr: (config.getValue attr) == "m"; + + isEnabled = attr: (config.isModule attr) || (config.isYes attr); + + isDisabled = attr: (!(config.isSet attr)) || (config.isNo attr); + } // config_; + + isModular = config.isYes "MODULES"; + + installsFirmware = (config.isEnabled "FW_LOADER") && + (isModular || (config.isDisabled "FIRMWARE_IN_KERNEL")); + + sourceRoot = stdenv.mkDerivation { + name = "linux-source-${version}"; + + inherit src; + + patches = map (p: p.patch) kernelPatches; + + phases = [ "unpackPhase" "patchPhase" "installPhase" ]; + + prePatch = '' + for mf in $(find -name Makefile -o -name Makefile.include -o -name install.sh); do + echo "stripping FHS paths in \`$mf'..." + sed -i "$mf" -e 's|/usr/bin/||g ; s|/bin/||g ; s|/sbin/||g' + done + + sed -i Makefile -e 's|= depmod|= ${kmod}/sbin/depmod|' + + # Patch kconfig to print "###" after every question so that + # generate-config.pl from the generic builder can answer them. + # This only affects oldaskconfig. + sed -e '/fflush(stdout);/i\printf("###");' -i scripts/kconfig/conf.c + ''; + + installPhase = '' + cd .. + mv $sourceRoot $out + ''; + }; + in { + outputs = if isModular then [ "out" "dev" ] else null; + + passthru = { + inherit version modDirVersion config kernelPatches src; + }; + + inherit sourceRoot; + + unpackPhase = '' + mkdir build + export buildRoot="$(pwd)/build" + cd ${sourceRoot} + ''; + + configurePhase = '' + runHook preConfigure + ln -sv ${configfile} $buildRoot/.config + make $makeFlags "''${makeFlagsArray[@]}" oldconfig + runHook postConfigure + ''; + + buildFlags = [ stdenv.platform.kernelTarget ] ++ optional isModular "modules"; + + installFlags = [ + "INSTALLKERNEL=${installkernel}" + "INSTALL_PATH=$(out)" + ] ++ (optional isModular "INSTALL_MOD_PATH=$(out)") + ++ optional installsFirmware "INSTALL_FW_PATH=$(out)/lib/firmware"; + + # Some image types need special install targets (e.g. uImage is installed with make uinstall) + installTargets = [ (if platform.kernelTarget == "uImage" then "uinstall" else "install") ]; + + postInstall = optionalString installsFirmware '' + mkdir -p $out/lib/firmware + '' + (if isModular then '' + make modules_install $makeFlags "''${makeFlagsArray[@]}" \ + $installFlags "''${installFlagsArray[@]}" + unlink $out/lib/modules/${modDirVersion}/build + mkdir -p $dev/lib/modules/${modDirVersion} + mv $out/lib/modules/${modDirVersion}/source $dev/lib/modules/${modDirVersion}/source + mv $buildRoot $dev/lib/modules/${modDirVersion}/build + '' else optionalString installsFirmware '' + make firmware_install $makeFlags "''${makeFlagsArray[@]}" \ + $installFlags "''${installFlagsArray[@]}" + ''); + + postFixup = if isModular then '' + if [ -z "$dontStrip" ]; then + find $out -name "*.ko" -print0 | xargs -0 -r ''${crossConfig+$crossConfig-}strip -S + # Remove all references to the source directory to avoid unneeded + # runtime dependencies + find $out -name "*.ko" -print0 | xargs -0 -r sed -i \ + "s|${sourceRoot}|$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-${sourceRoot.name}|g" + fi + '' else null; + }; in -stdenv.mkDerivation { +stdenv.mkDerivation ((drvAttrs config stdenv.platform (kernelPatches ++ nativeKernelPatches) configfile) // { name = "linux-${version}"; enableParallelBuilding = true; - outputs = if isModular then [ "out" "dev" ] else null; - - passthru = { - inherit version modDirVersion config kernelPatches src; - }; - - inherit sourceRoot; - - unpackPhase = '' - mkdir build - export buildRoot="$(pwd)/build" - cd ${sourceRoot} - ''; - - configurePhase = '' - runHook preConfigure - ln -sv ${configfile} $buildRoot/.config - make $makeFlags "''${makeFlagsArray[@]}" oldconfig - runHook postConfigure - ''; - nativeBuildInputs = [ perl bc nettools ] ++ optional (stdenv.platform.uboot != null) (ubootChooser stdenv.platform.uboot); @@ -130,53 +173,20 @@ stdenv.mkDerivation { "ARCH=${stdenv.platform.kernelArch}" ]; - buildFlags = [ stdenv.platform.kernelTarget ] ++ optional isModular "modules"; - - installFlags = [ - "INSTALLKERNEL=${installkernel}" - "INSTALL_PATH=$(out)" - ] ++ (optional isModular "INSTALL_MOD_PATH=$(out)") - ++ optional installsFirmware "INSTALL_FW_PATH=$(out)/lib/firmware"; - - installTargets = installTarget stdenv.platform.kernelTarget; - crossAttrs = let cp = stdenv.cross.platform; in { - buildFlags = [ cp.kernelTarget ] ++ optional isModular "modules"; - - makeFlags = commonMakeFlags ++ [ - "ARCH=${cp.kernelArch}" - "CROSS_COMPILE=$(crossConfig)-" - ]; - - installTargets = installTarget cp.kernelTarget; - - buildInputs = optional (cp.uboot != null) (ubootChooser cp.uboot).crossDrv; + (drvAttrs crossConfig cp (kernelPatches ++ crossKernelPatches) crossConfigfile) // { + makeFlags = commonMakeFlags ++ [ + "ARCH=${cp.kernelArch}" + "CROSS_COMPILE=$(crossConfig)-" + ]; + + # !!! uboot has messed up cross-compiling, nativeDrv builds arm tools on x86, + # crossDrv builds x86 tools on x86 (but arm uboot). If this is fixed, uboot + # can just go into buildInputs (but not nativeBuildInputs since cp.uboot + # may be different from stdenv.platform.uboot) + buildInputs = optional (cp.uboot != null) (ubootChooser cp.uboot).crossDrv; }; - postInstall = optionalString installsFirmware '' - mkdir -p $out/lib/firmware - '' + (if isModular then '' - make modules_install $makeFlags "''${makeFlagsArray[@]}" \ - $installFlags "''${installFlagsArray[@]}" - unlink $out/lib/modules/${modDirVersion}/build - mkdir -p $dev/lib/modules/${modDirVersion} - mv $out/lib/modules/${modDirVersion}/source $dev/lib/modules/${modDirVersion}/source - mv $buildRoot $dev/lib/modules/${modDirVersion}/build - '' else optionalString installsFirmware '' - make firmware_install $makeFlags "''${makeFlagsArray[@]}" \ - $installFlags "''${installFlagsArray[@]}" - ''); - - postFixup = if isModular then '' - if [ -z "$dontStrip" ]; then - find $out -name "*.ko" -print0 | xargs -0 -r ''${crossConfig+$crossConfig-}strip -S - # Remove all references to the source directory to avoid unneeded - # runtime dependencies - find $out -name "*.ko" -print0 | xargs -0 -r sed -i \ - "s|${sourceRoot}|$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-${sourceRoot.name}|g" - fi - '' else null; - meta = { description = "The Linux kernel"; license = "GPLv2"; @@ -186,4 +196,4 @@ stdenv.mkDerivation { ]; platforms = platforms.linux; }; -} +}) -- cgit 1.4.1 From f95d214cfdf115b9444acc5ce8060a5b1b23ed77 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Wed, 1 Jan 2014 09:21:25 -0500 Subject: Implement generic kernel build via manual-config This has three major benefits: 1. We no longer have two kernel build processes to maintain 2. The build process is (IMO) cleaner and cleaves more closely to upstream. In partuclar, we use make install to install the kernel and development source/build trees, eliminating the guesswork about which files to copy. 3. The derivation has multiple outputs: the kernel and modules are in the default `out' output, while the build and source trees are in a `dev' output. This makes it possible for the full source and build tree to be kept (which is expected by out-of-tree modules) without bloating the closure of the system derivation. In addition, if a solution for how to handle queries in the presence of imports from derivations ever makes it into nix, a framework for querying the full configuration of the kernel in nix expressions is already in place. Signed-off-by: Shea Levy --- pkgs/os-specific/linux/kernel/builder.sh | 149 ---------------------- pkgs/os-specific/linux/kernel/generate-config.pl | 5 +- pkgs/os-specific/linux/kernel/generic.nix | 154 +++++++++-------------- pkgs/os-specific/linux/kernel/manual-config.nix | 31 +++-- pkgs/top-level/all-packages.nix | 12 +- 5 files changed, 90 insertions(+), 261 deletions(-) delete mode 100644 pkgs/os-specific/linux/kernel/builder.sh diff --git a/pkgs/os-specific/linux/kernel/builder.sh b/pkgs/os-specific/linux/kernel/builder.sh deleted file mode 100644 index 8fb5e9f91eb4..000000000000 --- a/pkgs/os-specific/linux/kernel/builder.sh +++ /dev/null @@ -1,149 +0,0 @@ -source $stdenv/setup - - -makeFlags="ARCH=$arch SHELL=/bin/sh KBUILD_BUILD_VERSION=1-NixOS $makeFlags" -if [ -n "$crossConfig" ]; then - makeFlags="$makeFlags CROSS_COMPILE=$crossConfig-" -fi - -postPatch() { - # Makefiles are full of /bin/pwd, /bin/false, /bin/bash, etc. - # Patch these away, assuming the tools are in $PATH. - for mf in $(find -name Makefile); do - echo "stripping FHS paths in \`$mf'..." - sed -i "$mf" -e 's|/usr/bin/||g ; s|/bin/||g' - done -} - -configurePhase() { - if test -n "$preConfigure"; then - eval "$preConfigure" - fi - - export INSTALL_PATH=$out - export INSTALL_MOD_PATH=$out - - # Set our own localversion, if specified. - rm -f localversion* - if test -n "$localVersion"; then - echo "$localVersion" > localversion-nix - fi - - # Patch kconfig to print "###" after every question so that - # generate-config.pl can answer them. - sed -e '/fflush(stdout);/i\printf("###");' -i scripts/kconfig/conf.c - - # Get a basic config file for later refinement with $generateConfig. - make $kernelBaseConfig ARCH=$arch - - # Create the config file. - echo "generating kernel configuration..." - echo "$kernelConfig" > kernel-config - DEBUG=1 ARCH=$arch KERNEL_CONFIG=kernel-config AUTO_MODULES=$autoModules \ - perl -w $generateConfig -} - - -installPhase() { - - mkdir -p $out - - # New kernel versions have a combined tree for i386 and x86_64. - archDir=$arch - if test -e arch/x86 -a \( "$arch" = i386 -o "$arch" = x86_64 \); then - archDir=x86 - fi - - - # Copy the bzImage and System.map. - cp System.map $out - if test "$arch" = um; then - mkdir -p $out/bin - cp linux $out/bin - elif test "$kernelTarget" != "vmlinux"; then - # In any case we copy the 'vmlinux' ELF in the next lines - cp arch/$archDir/boot/$kernelTarget $out - fi - - cp vmlinux $out - - if grep -q "CONFIG_MODULES=y" .config; then - # Install the modules in $out/lib/modules. - make modules_install \ - DEPMOD=$kmod/sbin/depmod \ - $makeFlags "${makeFlagsArray[@]}" \ - $installFlags "${installFlagsArray[@]}" - - if test -z "$dontStrip"; then - # Strip the kernel modules. - echo "Stripping kernel modules..." - if [ -z "$crossConfig" ]; then - find $out -name "*.ko" -print0 | xargs -0 strip -S - else - find $out -name "*.ko" -print0 | xargs -0 $crossConfig-strip -S - fi - fi - - # move this to install later on - # largely copied from early FC3 kernel spec files - version=$(cd $out/lib/modules && ls -d *) - - # remove symlinks and create directories - rm -f $out/lib/modules/$version/build - rm -f $out/lib/modules/$version/source - mkdir $out/lib/modules/$version/build - - # copy config - cp .config $out/lib/modules/$version/build/.config - ln -s $out/lib/modules/$version/build/.config $out/config - - if test "$arch" != um; then - # copy all Makefiles and Kconfig files - ln -s $out/lib/modules/$version/build $out/lib/modules/$version/source - cp --parents `find -type f -name Makefile -o -name "Kconfig*"` $out/lib/modules/$version/build - cp Module.symvers $out/lib/modules/$version/build - - if test "$dontStrip" = "1"; then - # copy any debugging info that can be found - cp --parents -rv `find -name \*.debug -o -name debug.a` \ - "$out/lib/modules/$version/build" - fi - - # weed out unneeded stuff - rm -rf $out/lib/modules/$version/build/Documentation - rm -rf $out/lib/modules/$version/build/scripts - rm -rf $out/lib/modules/$version/build/include - - # copy architecture dependent files - cp -a arch/$archDir/scripts $out/lib/modules/$version/build/ || true - cp -a arch/$archDir/*lds $out/lib/modules/$version/build/ || true - cp -a arch/$archDir/Makefile*.cpu $out/lib/modules/$version/build/arch/$archDir/ || true - cp -a --parents arch/$archDir/kernel/asm-offsets.s $out/lib/modules/$version/build/arch/$archDir/kernel/ || true - - # copy scripts - rm -f scripts/*.o - rm -f scripts/*/*.o - cp -a scripts $out/lib/modules/$version/build - - # copy include files - includeDir=$out/lib/modules/$version/build/include - mkdir -p $includeDir - (cd include && cp -a * $includeDir) - (cd arch/$archDir/include && cp -a * $includeDir || true) - (cd arch/$archDir/include && cp -a asm/* $includeDir/asm/ || true) - (cd arch/$archDir/include && cp -a generated/asm/* $includeDir/asm/ || true) - (cd arch/$archDir/include/asm/mach-generic && cp -a * $includeDir/ || true) - # include files for special arm architectures - if [ "$archDir" == "arm" ]; then - cp -a --parents arch/arm/mach-*/include $out/lib/modules/$version/build - fi - fi - fi - - if test -n "$postInstall"; then - eval "$postInstall"; - fi -} - - -genericBuild diff --git a/pkgs/os-specific/linux/kernel/generate-config.pl b/pkgs/os-specific/linux/kernel/generate-config.pl index 78663098fb31..20abe1015c3f 100644 --- a/pkgs/os-specific/linux/kernel/generate-config.pl +++ b/pkgs/os-specific/linux/kernel/generate-config.pl @@ -11,6 +11,9 @@ use strict; use IPC::Open2; +use Cwd; + +my $wd = getcwd; my $debug = $ENV{'DEBUG'}; my $autoModules = $ENV{'AUTO_MODULES'}; @@ -36,7 +39,7 @@ close ANSWERS; sub runConfig { # Run `make config'. - my $pid = open2(\*IN, \*OUT, "make config SHELL=bash ARCH=$ENV{ARCH}"); + my $pid = open2(\*IN, \*OUT, "make -C $ENV{SRC} O=$wd config SHELL=bash ARCH=$ENV{ARCH}"); # Parse the output, look for questions and then send an # appropriate answer. diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix index 3e1fc920a59b..888dcf1e9a51 100644 --- a/pkgs/os-specific/linux/kernel/generic.nix +++ b/pkgs/os-specific/linux/kernel/generic.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, perl, mktemp, kmod, bc +{ stdenv, perl, linuxManualConfig , # The kernel source tarball. src @@ -23,20 +23,7 @@ # symbolic name and `patch' is the actual patch. The patch may # optionally be compressed with gzip or bzip2. kernelPatches ? [] - -, # Allows you to set your own kernel version suffix (e.g., - # "-my-kernel"). - localVersion ? "" - -, preConfigure ? "" , extraMeta ? {} -, ubootChooser ? null -, postInstall ? "" - -, # After the builder did a 'make all' (kernel + modules) - # we force building the target asked: bzImage/zImage/uImage/... - postBuild ? "make $makeFlags $kernelTarget; make $makeFlags -C scripts unifdef" - , ... }: @@ -52,93 +39,76 @@ let map ({extraConfig ? "", ...}: extraConfig) kernelPatches; in lib.concatStringsSep "\n" ([baseConfig] ++ configFromPatches); + configfile = stdenv.mkDerivation { + name = "linux-config-${version}"; + + generateConfig = ./generate-config.pl; + + kernelConfig = kernelConfigFun config; + + ignoreConfigErrors = stdenv.platform.name != "pc"; + + nativeBuildInputs = [ perl ]; + + platformName = stdenv.platform.name; + kernelBaseConfig = stdenv.platform.kernelBaseConfig; + kernelTarget = stdenv.platform.kernelTarget; + autoModules = stdenv.platform.kernelAutoModules; + arch = stdenv.platform.kernelArch; + + crossAttrs = let + cp = stdenv.cross.platform; + in { + arch = cp.kernelArch; + platformName = cp.name; + kernelBaseConfig = cp.kernelBaseConfig; + kernelTarget = cp.kernelTarget; + autoModules = cp.kernelAutoModules; + + # Just ignore all options that don't apply (We are lazy). + ignoreConfigErrors = true; + + kernelConfig = kernelConfigFun configCross; + }; + buildCommand = '' + # Get a basic config file for later refinement with $generateConfig. + make -C ${kernel.sourceRoot} O=$PWD $kernelBaseConfig ARCH=$arch + + # Create the config file. + echo "generating kernel configuration..." + echo "$kernelConfig" > kernel-config + DEBUG=1 ARCH=$arch KERNEL_CONFIG=kernel-config AUTO_MODULES=$autoModules \ + SRC=${kernel.sourceRoot} perl -w $generateConfig + mv .config $out + ''; + }; + + kernel = linuxManualConfig { + inherit version modDirVersion src kernelPatches; + + configfile = configfile.nativeDrv or configfile; + + crossConfigfile = configfile.crossDrv or configfile; + + config = { CONFIG_MODULES = "y"; CONFIG_FW_LOADER = "m"; }; + + crossConfig = { CONFIG_MODULES = "y"; CONFIG_FW_LOADER = "m"; }; + }; + configWithPlatform = kernelPlatform: import ./common-config.nix { inherit stdenv version kernelPlatform extraConfig; }; config = configWithPlatform stdenv.platform; configCross = configWithPlatform stdenv.cross.platform; -in - -stdenv.mkDerivation { - name = "linux-${version}"; - - enableParallelBuilding = true; - passthru = { - inherit version modDirVersion kernelPatches; # Combine the `features' attribute sets of all the kernel patches. features = lib.fold (x: y: (x.features or {}) // y) features kernelPatches; + + meta = kernel.meta // extraMeta; }; - builder = ./builder.sh; - - generateConfig = ./generate-config.pl; - - inherit preConfigure src kmod localVersion postInstall postBuild; - - patches = map (p: p.patch) kernelPatches; - - kernelConfig = kernelConfigFun config; - - # For UML and non-PC, just ignore all options that don't apply (We are lazy). - ignoreConfigErrors = stdenv.platform.name != "pc"; - - nativeBuildInputs = [ perl mktemp bc ]; - - buildInputs = lib.optional (stdenv.platform.uboot != null) - (ubootChooser stdenv.platform.uboot); - - platformName = stdenv.platform.name; - kernelBaseConfig = stdenv.platform.kernelBaseConfig; - kernelTarget = stdenv.platform.kernelTarget; - autoModules = stdenv.platform.kernelAutoModules; - - # Should we trust platform.kernelArch? We can only do - # that once we differentiate i686/x86_64 in platforms. - arch = - if stdenv.system == "i686-linux" then "i386" else - if stdenv.system == "x86_64-linux" then "x86_64" else - if stdenv.isArm then "arm" else - if stdenv.system == "mips64el-linux" then "mips" else - abort "Platform ${stdenv.system} is not supported."; - - crossAttrs = let - cp = stdenv.cross.platform; - in - assert cp.name == "sheevaplug" -> cp.uboot != null; - { - arch = cp.kernelArch; - platformName = cp.name; - kernelBaseConfig = cp.kernelBaseConfig; - kernelTarget = cp.kernelTarget; - autoModules = cp.kernelAutoModules; - - # Just ignore all options that don't apply (We are lazy). - ignoreConfigErrors = true; - - kernelConfig = kernelConfigFun configCross; - - # The substitution of crossAttrs happens *after* the stdenv cross adapter sets - # the parameters for the usual stdenv. Thus, we need to specify - # the ".crossDrv" in the buildInputs here. - buildInputs = lib.optional (cp.uboot != null) (ubootChooser cp.uboot).crossDrv; - }; - - meta = { - description = - "The Linux kernel" + - (if kernelPatches == [] then "" else - " (with patches: " - + lib.concatStrings (lib.intersperse ", " (map (x: x.name) kernelPatches)) - + ")"); - license = "GPLv2"; - homepage = http://www.kernel.org/; - maintainers = [ - lib.maintainers.eelco - lib.maintainers.chaoflow - ]; - platforms = lib.platforms.linux; - } // extraMeta; -} + nativeDrv = lib.addPassthru kernel.nativeDrv passthru; + crossDrv = lib.addPassthru kernel.crossDrv passthru; +in if kernel ? crossDrv then nativeDrv // { inherit nativeDrv crossDrv; } else lib.addPassthru kernel passthru diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix index 9c82aea41aa6..408c79c781af 100644 --- a/pkgs/os-specific/linux/kernel/manual-config.nix +++ b/pkgs/os-specific/linux/kernel/manual-config.nix @@ -48,7 +48,7 @@ let ''; }; commonMakeFlags = [ - "O=$(buildRoot)" + "O=$(buildRoot)" "KBUILD_BUILD_VERSION=1-NixOS" ]; drvAttrs = config_: platform: kernelPatches: configfile: @@ -124,7 +124,7 @@ let runHook postConfigure ''; - buildFlags = [ stdenv.platform.kernelTarget ] ++ optional isModular "modules"; + buildFlags = [ platform.kernelTarget ] ++ optional isModular "modules"; installFlags = [ "INSTALLKERNEL=${installkernel}" @@ -158,6 +158,21 @@ let "s|${sourceRoot}|$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-${sourceRoot.name}|g" fi '' else null; + + meta = { + description = + "The Linux kernel" + + (if kernelPatches == [] then "" else + " (with patches: " + + stdenv.lib.concatStrings (stdenv.lib.intersperse ", " (map (x: x.name) kernelPatches)) + + ")"); + license = "GPLv2"; + homepage = http://www.kernel.org/; + maintainers = [ + maintainers.shlevy + ]; + platforms = platforms.linux; + }; }; in @@ -173,7 +188,7 @@ stdenv.mkDerivation ((drvAttrs config stdenv.platform (kernelPatches ++ nativeKe "ARCH=${stdenv.platform.kernelArch}" ]; - crossAttrs = let cp = stdenv.cross.platform; in { + crossAttrs = let cp = stdenv.cross.platform; in (drvAttrs crossConfig cp (kernelPatches ++ crossKernelPatches) crossConfigfile) // { makeFlags = commonMakeFlags ++ [ "ARCH=${cp.kernelArch}" @@ -186,14 +201,4 @@ stdenv.mkDerivation ((drvAttrs config stdenv.platform (kernelPatches ++ nativeKe # may be different from stdenv.platform.uboot) buildInputs = optional (cp.uboot != null) (ubootChooser cp.uboot).crossDrv; }; - - meta = { - description = "The Linux kernel"; - license = "GPLv2"; - homepage = http://www.kernel.org/; - maintainers = [ - maintainers.shlevy - ]; - platforms = platforms.linux; - }; }) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f5c93f37f73e..94cbd83f93a2 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6704,7 +6704,7 @@ let kernelPatches = callPackage ../os-specific/linux/kernel/patches.nix { }; linux_3_2 = makeOverridable (import ../os-specific/linux/kernel/linux-3.2.nix) { - inherit fetchurl stdenv perl mktemp bc kmod ubootChooser; + inherit fetchurl stdenv perl linuxManualConfig; kernelPatches = [ kernelPatches.sec_perm_2_6_24 # kernelPatches.aufs3_2 @@ -6754,7 +6754,7 @@ let }); linux_3_4 = makeOverridable (import ../os-specific/linux/kernel/linux-3.4.nix) { - inherit fetchurl stdenv perl mktemp bc kmod ubootChooser; + inherit fetchurl stdenv perl linuxManualConfig; kernelPatches = [ kernelPatches.sec_perm_2_6_24 # kernelPatches.aufs3_4 @@ -6773,11 +6773,11 @@ let }); linux_3_6_rpi = makeOverridable (import ../os-specific/linux/kernel/linux-rpi-3.6.nix) { - inherit fetchurl stdenv perl mktemp bc kmod ubootChooser; + inherit fetchurl stdenv perl linuxManualConfig; }; linux_3_10 = makeOverridable (import ../os-specific/linux/kernel/linux-3.10.nix) { - inherit fetchurl stdenv perl mktemp bc kmod ubootChooser; + inherit fetchurl stdenv perl linuxManualConfig; kernelPatches = [ kernelPatches.sec_perm_2_6_24 @@ -6798,7 +6798,7 @@ let }); linux_3_11 = makeOverridable (import ../os-specific/linux/kernel/linux-3.11.nix) { - inherit fetchurl stdenv perl mktemp bc kmod ubootChooser; + inherit fetchurl stdenv perl linuxManualConfig; kernelPatches = [ kernelPatches.sec_perm_2_6_24 @@ -6810,7 +6810,7 @@ let }; linux_3_12 = makeOverridable (import ../os-specific/linux/kernel/linux-3.12.nix) { - inherit fetchurl stdenv perl mktemp bc kmod ubootChooser; + inherit fetchurl stdenv perl linuxManualConfig; kernelPatches = [ kernelPatches.sec_perm_2_6_24 -- cgit 1.4.1 From 2c38df1c5bd2f79b9c6f28118ae0520fdd95974b Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Wed, 1 Jan 2014 23:56:24 -0500 Subject: kernel build: limit dev output footprint This makes the disk usage footprint of building the kernel smaller in 3 ways: 1) There is no separate kernel source derivation 2) Rather than using the entire build tree, only the output of make modules_prepare is kept in the $dev output (plus the module symbol versioning file generated during the build) 3) Only the subset of the source tree known to be needed for external builds is kept in $dev Note that while 2) is supported by official kernel documentation, I couldn't find any source describing what we need to keep for 3). I've started with the bare minimum (the main Makefile is called by the Makefile generated by make modules_prepare) and we can/should add more as needed for kernelPackages. Signed-off-by: Shea Levy --- pkgs/os-specific/linux/kernel/generic.nix | 16 +++-- pkgs/os-specific/linux/kernel/manual-config.nix | 83 +++++++++++++------------ 2 files changed, 55 insertions(+), 44 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix index 888dcf1e9a51..5cb6745da122 100644 --- a/pkgs/os-specific/linux/kernel/generic.nix +++ b/pkgs/os-specific/linux/kernel/generic.nix @@ -69,18 +69,26 @@ let ignoreConfigErrors = true; kernelConfig = kernelConfigFun configCross; + + inherit (kernel.crossDrv) src patches prePatch preUnpack; }; - buildCommand = '' + + inherit (kernel) src patches prePatch preUnpack; + + buildPhase = '' + cd $buildRoot + # Get a basic config file for later refinement with $generateConfig. - make -C ${kernel.sourceRoot} O=$PWD $kernelBaseConfig ARCH=$arch + make -C ../$sourceRoot O=$PWD $kernelBaseConfig ARCH=$arch # Create the config file. echo "generating kernel configuration..." echo "$kernelConfig" > kernel-config DEBUG=1 ARCH=$arch KERNEL_CONFIG=kernel-config AUTO_MODULES=$autoModules \ - SRC=${kernel.sourceRoot} perl -w $generateConfig - mv .config $out + SRC=../$sourceRoot perl -w $generateConfig ''; + + installPhase = "mv .config $out"; }; kernel = linuxManualConfig { diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix index 408c79c781af..c8910f8ed06e 100644 --- a/pkgs/os-specific/linux/kernel/manual-config.nix +++ b/pkgs/os-specific/linux/kernel/manual-config.nix @@ -48,7 +48,7 @@ let ''; }; commonMakeFlags = [ - "O=$(buildRoot)" "KBUILD_BUILD_VERSION=1-NixOS" + "O=$(buildRoot)" ]; drvAttrs = config_: platform: kernelPatches: configfile: @@ -73,48 +73,34 @@ let installsFirmware = (config.isEnabled "FW_LOADER") && (isModular || (config.isDisabled "FIRMWARE_IN_KERNEL")); - - sourceRoot = stdenv.mkDerivation { - name = "linux-source-${version}"; - - inherit src; - - patches = map (p: p.patch) kernelPatches; - - phases = [ "unpackPhase" "patchPhase" "installPhase" ]; - - prePatch = '' - for mf in $(find -name Makefile -o -name Makefile.include -o -name install.sh); do - echo "stripping FHS paths in \`$mf'..." - sed -i "$mf" -e 's|/usr/bin/||g ; s|/bin/||g ; s|/sbin/||g' - done - - sed -i Makefile -e 's|= depmod|= ${kmod}/sbin/depmod|' - - # Patch kconfig to print "###" after every question so that - # generate-config.pl from the generic builder can answer them. - # This only affects oldaskconfig. - sed -e '/fflush(stdout);/i\printf("###");' -i scripts/kconfig/conf.c - ''; - - installPhase = '' - cd .. - mv $sourceRoot $out - ''; - }; in { outputs = if isModular then [ "out" "dev" ] else null; passthru = { - inherit version modDirVersion config kernelPatches src; + inherit version modDirVersion config kernelPatches; }; - inherit sourceRoot; + inherit src; - unpackPhase = '' + preUnpack = '' mkdir build export buildRoot="$(pwd)/build" - cd ${sourceRoot} + ''; + + patches = map (p: p.patch) kernelPatches; + + prePatch = '' + for mf in $(find -name Makefile -o -name Makefile.include -o -name install.sh); do + echo "stripping FHS paths in \`$mf'..." + sed -i "$mf" -e 's|/usr/bin/||g ; s|/bin/||g ; s|/sbin/||g' + done + + sed -i Makefile -e 's|= depmod|= ${kmod}/sbin/depmod|' + + # Patch kconfig to print "###" after every question so that + # generate-config.pl from the generic builder can answer them. + # This only affects oldaskconfig. + sed -e '/fflush(stdout);/i\printf("###");' -i scripts/kconfig/conf.c ''; configurePhase = '' @@ -124,7 +110,7 @@ let runHook postConfigure ''; - buildFlags = [ platform.kernelTarget ] ++ optional isModular "modules"; + buildFlags = [ "KBUILD_BUILD_VERSION=1-NixOS" platform.kernelTarget ] ++ optional isModular "modules"; installFlags = [ "INSTALLKERNEL=${installkernel}" @@ -141,22 +127,39 @@ let make modules_install $makeFlags "''${makeFlagsArray[@]}" \ $installFlags "''${installFlagsArray[@]}" unlink $out/lib/modules/${modDirVersion}/build + unlink $out/lib/modules/${modDirVersion}/source + mkdir -p $dev/lib/modules/${modDirVersion} - mv $out/lib/modules/${modDirVersion}/source $dev/lib/modules/${modDirVersion}/source + cd .. + mv $sourceRoot $dev/lib/modules/${modDirVersion}/source + cd $dev/lib/modules/${modDirVersion}/source + + mv $buildRoot/.config $buildRoot/Module.symvers $TMPDIR + rm -fR $buildRoot + mkdir $buildRoot + mv $TMPDIR/.config $TMPDIR/Module.symvers $buildRoot + make modules_prepare $makeFlags "''${makeFlagsArray[@]}" mv $buildRoot $dev/lib/modules/${modDirVersion}/build + + # !!! No documentation on how much of the source tree must be kept + # If/when kernel builds fail due to missing files, you can undelete + # them here + ls -A | grep -v Makefile | xargs rm -fR '' else optionalString installsFirmware '' make firmware_install $makeFlags "''${makeFlagsArray[@]}" \ $installFlags "''${installFlagsArray[@]}" ''); + # !!! This leaves references to gcc and kmod in $dev + # that we might be able to avoid postFixup = if isModular then '' if [ -z "$dontStrip" ]; then find $out -name "*.ko" -print0 | xargs -0 -r ''${crossConfig+$crossConfig-}strip -S - # Remove all references to the source directory to avoid unneeded - # runtime dependencies - find $out -name "*.ko" -print0 | xargs -0 -r sed -i \ - "s|${sourceRoot}|$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-${sourceRoot.name}|g" fi + # !!! Should this be part of stdenv? Also patchELF should take an argument... + prefix=$dev + patchELF + prefix=$out '' else null; meta = { -- cgit 1.4.1 From 6b7ede300f0cc64f8e7e1ca279b56bd8a4524d10 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Thu, 2 Jan 2014 00:03:49 -0500 Subject: systemtap: Remove from linuxPackagesFor It doesn't seem to depend on the kernel in any way. Signed-off-by: Shea Levy --- pkgs/development/tools/profiling/systemtap/default.nix | 4 ++-- pkgs/top-level/all-packages.nix | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pkgs/development/tools/profiling/systemtap/default.nix b/pkgs/development/tools/profiling/systemtap/default.nix index bdd11b88da5b..884091c1636c 100644 --- a/pkgs/development/tools/profiling/systemtap/default.nix +++ b/pkgs/development/tools/profiling/systemtap/default.nix @@ -1,9 +1,9 @@ -{ fetchurl, stdenv, linux, elfutils, latex2html, xmlto, docbook_xml_dtd_412 +{ fetchurl, stdenv, elfutils, latex2html, xmlto, docbook_xml_dtd_412 , libxml2, docbook_xsl, libxslt, texLive, texLiveExtra, ghostscript, pkgconfig , gtkmm, libglademm, boost, perl, sqlite }: stdenv.mkDerivation rec { - name = "systemtap-1.2-${linux.version}"; + name = "systemtap-1.2"; src = fetchurl { url = "http://sources.redhat.com/systemtap/ftp/releases/${name}.tar.gz"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 94cbd83f93a2..c595cba8f064 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6910,11 +6910,6 @@ let inherit (gnome) libglade; }; - systemtap = callPackage ../development/tools/profiling/systemtap { - linux = self.kernelDev; - inherit (gnome) libglademm; - }; - tp_smapi = callPackage ../os-specific/linux/tp_smapi { }; v86d = callPackage ../os-specific/linux/v86d { }; @@ -7115,6 +7110,11 @@ let systemd = callPackage ../os-specific/linux/systemd { }; + systemtap = callPackage ../development/tools/profiling/systemtap { + inherit (gnome) libglademm; + }; + + # In nixos, you can set systemd.package = pkgs.systemd_with_lvm2 to get # LVM2 working in systemd. systemd_with_lvm2 = pkgs.lib.overrideDerivation pkgs.systemd (p: { -- cgit 1.4.1 From a589bfae17b66af41794dc3eca1245aa514d6cac Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Sat, 4 Jan 2014 20:57:21 -0500 Subject: Update and fix kernel packages to new kernel build In most cases, this just meant changing kernelDev (now removed from linuxPackagesFor) to kernel.dev. Some packages needed more work (though whether that was because of my changes or because they were already broken, I'm not sure). Specifics: * psmouse-alps builds on 3.4 but not 3.10, as noted in the comments that were already there * blcr builds on 3.4 but not 3.10, as noted in comments that were already there * open-iscsi, ati-drivers, wis-go7007, and openafsClient don't build on 3.4 or 3.10 on this branch or on master, so they're marked broken * A version-specific kernelHeaders package was added The following packages were removed: * atheros/madwifi is superceded by official ath*k modules * aufs is no longer used by any of our kernels * broadcom-sta v6 (which was already packaged) replaces broadcom-sta * exmap has not been updated since 2011 and doesn't build * iscis-target has not been updated since 2010 and doesn't build * iwlwifi is part of mainline now and doesn't build * nivida-x11-legacy-96 hasn't been updated since 2008 and doesn't build Everything not specifically mentioned above builds successfully on 3.10. I haven't yet tested on 3.4, but will before opening a pull request. Signed-off-by: Shea Levy --- nixos/modules/services/x11/xserver.nix | 7 -- .../virtualization/virtualbox/default.nix | 8 +- .../virtualbox/guest-additions/default.nix | 8 +- pkgs/os-specific/linux/acpi-call/default.nix | 10 +- pkgs/os-specific/linux/atheros/0.9.4.nix | 28 ----- pkgs/os-specific/linux/ati-drivers/default.nix | 11 +- pkgs/os-specific/linux/aufs-util/2.nix | 41 ------- pkgs/os-specific/linux/aufs-util/3.nix | 40 ------- pkgs/os-specific/linux/aufs/2.nix | 43 ------- pkgs/os-specific/linux/aufs/3.nix | 44 ------- pkgs/os-specific/linux/batman-adv/default.nix | 10 +- pkgs/os-specific/linux/bbswitch/default.nix | 12 +- pkgs/os-specific/linux/blcr/default.nix | 12 +- pkgs/os-specific/linux/broadcom-sta-v6/default.nix | 49 -------- .../linux/broadcom-sta-v6/license.patch | 13 --- .../linux/broadcom-sta-v6/linux-recent.patch | 126 --------------------- pkgs/os-specific/linux/broadcom-sta/default.nix | 55 +++++---- pkgs/os-specific/linux/broadcom-sta/license.patch | 9 +- .../linux/broadcom-sta/linux-2.6.39.patch | 11 -- .../os-specific/linux/broadcom-sta/linux-3.2.patch | 13 --- .../os-specific/linux/broadcom-sta/linux-3.4.patch | 12 -- .../linux/broadcom-sta/linux-recent.patch | 126 +++++++++++++++++++++ pkgs/os-specific/linux/broadcom-sta/makefile.patch | 16 --- pkgs/os-specific/linux/cryptodev/default.nix | 8 +- pkgs/os-specific/linux/e1000e/default.nix | 14 +-- pkgs/os-specific/linux/exmap/default.nix | 56 --------- pkgs/os-specific/linux/frandom/default.nix | 10 +- pkgs/os-specific/linux/iscsitarget/default.nix | 27 ----- pkgs/os-specific/linux/iwlwifi/default.nix | 40 ------- pkgs/os-specific/linux/kernel-headers/default.nix | 25 ++++ pkgs/os-specific/linux/kernel/manual-config.nix | 2 +- pkgs/os-specific/linux/kernel/patches.nix | 46 -------- pkgs/os-specific/linux/kernel/perf.nix | 7 +- pkgs/os-specific/linux/klibc/default.nix | 78 +++++-------- .../linux/klibc/no-reinstall-kernel-headers.patch | 11 ++ pkgs/os-specific/linux/lttng-modules/default.nix | 6 +- pkgs/os-specific/linux/ndiswrapper/default.nix | 18 +-- pkgs/os-specific/linux/ndiswrapper/no-sbin.patch | 12 ++ pkgs/os-specific/linux/ndiswrapper/prefix.patch | 66 ----------- pkgs/os-specific/linux/netatop/default.nix | 10 +- .../os-specific/linux/nvidia-x11/builder-legacy.sh | 7 +- .../linux/nvidia-x11/builder-legacy304.sh | 7 +- pkgs/os-specific/linux/nvidia-x11/builder.sh | 7 +- pkgs/os-specific/linux/nvidia-x11/default.nix | 6 +- pkgs/os-specific/linux/nvidia-x11/legacy173.nix | 12 +- pkgs/os-specific/linux/nvidia-x11/legacy304.nix | 6 +- pkgs/os-specific/linux/nvidia-x11/legacy96.nix | 44 ------- pkgs/os-specific/linux/open-iscsi/default.nix | 14 ++- pkgs/os-specific/linux/psmouse-alps/default.nix | 10 +- pkgs/os-specific/linux/spl/default.nix | 10 +- pkgs/os-specific/linux/tp_smapi/default.nix | 12 +- pkgs/os-specific/linux/v86d/default.nix | 7 +- pkgs/os-specific/linux/wis-go7007/default.nix | 17 +-- pkgs/os-specific/linux/zfs/default.nix | 10 +- pkgs/servers/openafs-client/default.nix | 6 +- pkgs/top-level/all-packages.nix | 44 ++----- pkgs/top-level/release-python.nix | 2 - 57 files changed, 372 insertions(+), 989 deletions(-) delete mode 100644 pkgs/os-specific/linux/atheros/0.9.4.nix delete mode 100644 pkgs/os-specific/linux/aufs-util/2.nix delete mode 100644 pkgs/os-specific/linux/aufs-util/3.nix delete mode 100644 pkgs/os-specific/linux/aufs/2.nix delete mode 100644 pkgs/os-specific/linux/aufs/3.nix delete mode 100644 pkgs/os-specific/linux/broadcom-sta-v6/default.nix delete mode 100644 pkgs/os-specific/linux/broadcom-sta-v6/license.patch delete mode 100644 pkgs/os-specific/linux/broadcom-sta-v6/linux-recent.patch delete mode 100644 pkgs/os-specific/linux/broadcom-sta/linux-2.6.39.patch delete mode 100644 pkgs/os-specific/linux/broadcom-sta/linux-3.2.patch delete mode 100644 pkgs/os-specific/linux/broadcom-sta/linux-3.4.patch create mode 100644 pkgs/os-specific/linux/broadcom-sta/linux-recent.patch delete mode 100644 pkgs/os-specific/linux/broadcom-sta/makefile.patch delete mode 100644 pkgs/os-specific/linux/exmap/default.nix delete mode 100644 pkgs/os-specific/linux/iscsitarget/default.nix delete mode 100644 pkgs/os-specific/linux/iwlwifi/default.nix create mode 100644 pkgs/os-specific/linux/kernel-headers/default.nix create mode 100644 pkgs/os-specific/linux/klibc/no-reinstall-kernel-headers.patch create mode 100644 pkgs/os-specific/linux/ndiswrapper/no-sbin.patch delete mode 100644 pkgs/os-specific/linux/ndiswrapper/prefix.patch delete mode 100644 pkgs/os-specific/linux/nvidia-x11/legacy96.nix diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix index 0253c70f2dd4..7fd0ee34a991 100644 --- a/nixos/modules/services/x11/xserver.nix +++ b/nixos/modules/services/x11/xserver.nix @@ -16,7 +16,6 @@ let ati_unfree = { modules = [ kernelPackages.ati_drivers_x11 ]; driverName = "fglrx"; }; nouveau = { modules = [ pkgs.xf86_video_nouveau ]; }; nvidia = { modules = [ kernelPackages.nvidia_x11 ]; }; - nvidiaLegacy96 = { modules = [ kernelPackages.nvidia_x11_legacy96 ]; driverName = "nvidia"; }; nvidiaLegacy173 = { modules = [ kernelPackages.nvidia_x11_legacy173 ]; driverName = "nvidia"; }; nvidiaLegacy304 = { modules = [ kernelPackages.nvidia_x11_legacy304 ]; driverName = "nvidia"; }; unichrome = { modules = [ pkgs.xorgVideoUnichrome ]; }; @@ -443,7 +442,6 @@ in boot.extraModulePackages = optional (elem "nvidia" driverNames) kernelPackages.nvidia_x11 ++ - optional (elem "nvidiaLegacy96" driverNames) kernelPackages.nvidia_x11_legacy96 ++ optional (elem "nvidiaLegacy173" driverNames) kernelPackages.nvidia_x11_legacy173 ++ optional (elem "nvidiaLegacy304" driverNames) kernelPackages.nvidia_x11_legacy304 ++ optional (elem "virtualbox" driverNames) kernelPackages.virtualboxGuestAdditions ++ @@ -497,7 +495,6 @@ in pkgs.xdg_utils ] ++ optional (elem "nvidia" driverNames) kernelPackages.nvidia_x11 - ++ optional (elem "nvidiaLegacy96" driverNames) kernelPackages.nvidia_x11_legacy96 ++ optional (elem "nvidiaLegacy173" driverNames) kernelPackages.nvidia_x11_legacy173 ++ optional (elem "nvidiaLegacy304" driverNames) kernelPackages.nvidia_x11_legacy304 ++ optional (elem "virtualbox" driverNames) xorg.xrefresh @@ -521,8 +518,6 @@ in XORG_DRI_DRIVER_PATH = "/run/opengl-driver/lib/dri"; # !!! Depends on the driver selected at runtime. } // optionalAttrs (elem "nvidia" driverNames) { LD_LIBRARY_PATH = "${xorg.libX11}/lib:${xorg.libXext}/lib:${kernelPackages.nvidia_x11}/lib"; - } // optionalAttrs (elem "nvidiaLegacy96" driverNames) { - LD_LIBRARY_PATH = "${xorg.libX11}/lib:${xorg.libXext}/lib:${kernelPackages.nvidia_x11_legacy96}/lib"; } // optionalAttrs (elem "nvidiaLegacy173" driverNames) { LD_LIBRARY_PATH = "${xorg.libX11}/lib:${xorg.libXext}/lib:${kernelPackages.nvidia_x11_legacy173}/lib"; } // optionalAttrs (elem "nvidiaLegacy304" driverNames) { @@ -544,8 +539,6 @@ in ${optionalString cfg.driSupport32Bit "ln -sf ${pkgs_i686.linuxPackages.nvidia_x11.override { libsOnly = true; kernelDev = null; } } /run/opengl-driver-32"} '' - else if elem "nvidiaLegacy96" driverNames then - "ln -sf ${kernelPackages.nvidia_x11_legacy96} /run/opengl-driver" else if elem "nvidiaLegacy173" driverNames then "ln -sf ${kernelPackages.nvidia_x11_legacy173} /run/opengl-driver" else if elem "nvidiaLegacy304" driverNames then diff --git a/pkgs/applications/virtualization/virtualbox/default.nix b/pkgs/applications/virtualization/virtualbox/default.nix index 652b2ed92c10..2ce134090fe5 100644 --- a/pkgs/applications/virtualization/virtualbox/default.nix +++ b/pkgs/applications/virtualization/virtualbox/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, lib, iasl, dev86, pam, libxslt, libxml2, libX11, xproto, libXext -, libXcursor, libXmu, qt4, libIDL, SDL, libcap, zlib, libpng, glib, kernelDev, lvm2 +, libXcursor, libXmu, qt4, libIDL, SDL, libcap, zlib, libpng, glib, kernel, lvm2 , which, alsaLib, curl, gawk , xorriso, makeself, perl, pkgconfig , javaBindings ? false, jdk ? null @@ -52,7 +52,7 @@ let }; in stdenv.mkDerivation { - name = "virtualbox-${version}-${kernelDev.version}"; + name = "virtualbox-${version}-${kernel.version}"; src = fetchurl { url = "http://download.virtualbox.org/virtualbox/${version}/VirtualBox-${version}.tar.bz2"; @@ -61,14 +61,14 @@ in stdenv.mkDerivation { buildInputs = [ iasl dev86 libxslt libxml2 xproto libX11 libXext libXcursor qt4 libIDL SDL - libcap glib kernelDev lvm2 python alsaLib curl pam xorriso makeself perl + libcap glib lvm2 python alsaLib curl pam xorriso makeself perl pkgconfig which libXmu ] ++ optional javaBindings jdk ++ optional pythonBindings python; prePatch = '' set -x - MODULES_BUILD_DIR=`echo ${kernelDev}/lib/modules/*/build` + MODULES_BUILD_DIR=`echo ${kernel.dev}/lib/modules/*/build` sed -e 's@/lib/modules/`uname -r`/build@'$MODULES_BUILD_DIR@ \ -e 's@MKISOFS --version@MKISOFS -version@' \ -e 's@PYTHONDIR=.*@PYTHONDIR=${if pythonBindings then python else ""}@' \ diff --git a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix index de38843c7f1b..805e0b867d97 100644 --- a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix +++ b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, lib, patchelf, cdrkit, kernelDev, which, makeWrapper +{ stdenv, fetchurl, lib, patchelf, cdrkit, kernel, which, makeWrapper , xorg, dbus, virtualbox }: let @@ -8,14 +8,14 @@ let in stdenv.mkDerivation { - name = "VirtualBox-GuestAdditions-${version}-${kernelDev.version}"; + name = "VirtualBox-GuestAdditions-${version}-${kernel.version}"; src = fetchurl { url = "http://download.virtualbox.org/virtualbox/${version}/VBoxGuestAdditions_${version}.iso"; sha256 = "f11a7f13dfe7bf9f246fb877144bb467fe6deadcd876568ec79b6ccd3b59d767"; }; - KERN_DIR = "${kernelDev}/lib/modules/*/build"; + KERN_DIR = "${kernel.dev}/lib/modules/*/build"; buildInputs = [ patchelf cdrkit makeWrapper dbus ]; @@ -115,7 +115,7 @@ stdenv.mkDerivation { for i in * do cd $i - kernelVersion=$(cd ${kernelDev}/lib/modules; ls) + kernelVersion=$(cd ${kernel.dev}/lib/modules; ls) export MODULE_DIR=$out/lib/modules/$kernelVersion/misc find . -type f | xargs sed -i -e "s|-o root||g" \ -e "s|-g root||g" diff --git a/pkgs/os-specific/linux/acpi-call/default.nix b/pkgs/os-specific/linux/acpi-call/default.nix index 9fd8168948d5..2882c804c504 100644 --- a/pkgs/os-specific/linux/acpi-call/default.nix +++ b/pkgs/os-specific/linux/acpi-call/default.nix @@ -1,7 +1,7 @@ -{ stdenv, fetchgit, kernelDev }: +{ stdenv, fetchgit, kernel }: stdenv.mkDerivation { - name = "acpi-call-${kernelDev.version}"; + name = "acpi-call-${kernel.version}"; src = fetchgit { url = "git://github.com/mkottman/acpi_call.git"; @@ -12,12 +12,12 @@ stdenv.mkDerivation { preBuild = '' sed -e 's/break/true/' -i examples/turn_off_gpu.sh sed -e 's@/bin/bash@.bin/sh@' -i examples/turn_off_gpu.sh - sed -e "s@/lib/modules/\$(.*)@${kernelDev}/lib/modules/${kernelDev.modDirVersion}@" -i Makefile + sed -e "s@/lib/modules/\$(.*)@${kernel.dev}/lib/modules/${kernel.modDirVersion}@" -i Makefile ''; installPhase = '' - mkdir -p $out/lib/modules/${kernelDev.modDirVersion}/misc - cp acpi_call.ko $out/lib/modules/${kernelDev.modDirVersion}/misc + mkdir -p $out/lib/modules/${kernel.modDirVersion}/misc + cp acpi_call.ko $out/lib/modules/${kernel.modDirVersion}/misc mkdir -p $out/bin cp examples/turn_off_gpu.sh $out/bin/test_discrete_video_off.sh chmod a+x $out/bin/test_discrete_video_off.sh diff --git a/pkgs/os-specific/linux/atheros/0.9.4.nix b/pkgs/os-specific/linux/atheros/0.9.4.nix deleted file mode 100644 index 341bdc3f1bbf..000000000000 --- a/pkgs/os-specific/linux/atheros/0.9.4.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ stdenv, fetchurl, builderDefs, kernelDev }: - let localDefs = builderDefs.passthru.function { - src = /* put a fetchurl here */ - fetchurl { - url = http://downloads.sourceforge.net/madwifi/madwifi-0.9.4.tar.gz; - sha256 = "06jd5b8rfw7rmiva6jgmrb7n26g5plcg9marbnnmg68gbcqbr3xh"; - }; - - buildInputs = []; - configureFlags = []; - makeFlags = [''KERNELPATH=${kernelDev}/lib/modules/*/build'' ''DESTDIR=$out'']; - }; - in with localDefs; -let -postInstall = fullDepEntry ('' - ln -s $out/usr/local/bin $out/bin -'') [minInit doMakeInstall]; -in -stdenv.mkDerivation rec { - name = "atheros-0.9.4-${kernelDev.version}"; - builder = writeScript (name + "-builder") - (textClosure localDefs [doMakeInstall - postInstall doForceShare doPropagate]); - meta = { - description = "Atheros WiFi driver"; - inherit src; - }; -} diff --git a/pkgs/os-specific/linux/ati-drivers/default.nix b/pkgs/os-specific/linux/ati-drivers/default.nix index 51430f6e4eb4..1aea10141d53 100644 --- a/pkgs/os-specific/linux/ati-drivers/default.nix +++ b/pkgs/os-specific/linux/ati-drivers/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, kernelDev, xlibs, which, imake +{ stdenv, fetchurl, kernel, xlibs, which, imake , mesa # for fgl_glxgears , libXxf86vm, xf86vidmodeproto # for fglrx_gamma , xorg, makeWrapper, glibc, patchelf @@ -22,9 +22,9 @@ assert stdenv.system == "x86_64-linux"; -stdenv.mkDerivation rec { - name = "ati-drivers-${version}-${kernel.version}"; - version = "13.4"; + +stdenv.mkDerivation { + name = "ati-drivers-13.4-${kernel.version}"; builder = ./builder.sh; @@ -45,7 +45,7 @@ stdenv.mkDerivation rec { mesa ]; - kernel = kernelDev; + kernel = kernel.dev; inherit glibc /* glibc only used for setting interpreter */; @@ -71,6 +71,7 @@ stdenv.mkDerivation rec { maintainers = [stdenv.lib.maintainers.marcweber]; platforms = [ "x86_64-linux" ]; hydraPlatforms = []; + broken = true; }; # moved assertions here because the name is evaluated when the NixOS manual is generated diff --git a/pkgs/os-specific/linux/aufs-util/2.nix b/pkgs/os-specific/linux/aufs-util/2.nix deleted file mode 100644 index e4968b920486..000000000000 --- a/pkgs/os-specific/linux/aufs-util/2.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ stdenv, fetchurl, kernelDev, aufs }: - -assert aufs != null; - -let version = "20100506"; in - -stdenv.mkDerivation { - name = "aufs2-util-${version}-${kernelDev.version}"; - - src = fetchurl { - url = "http://tarballs.nixos.org/aufs2-util-git-${version}.tar.bz2"; - sha256 = "0ly0c3p8fjxqbk8k5rmm1a91wg8wcrvhi1lv4aawalkkk8rqbnwk"; - }; - - buildInputs = [ aufs ]; - - makeFlags = - [ "KDIR=${kernelDev}/lib/modules/${kernelDev.version}/build" - "Install=install" - "DESTDIR=$(out)" - ]; - - postInstall = - '' - mv $out/usr/* $out - rmdir $out/usr - - cp aufs.shlib $out/lib/ - - substituteInPlace $out/bin/aubrsync \ - --replace /sbin/mount $out/sbin/mount \ - --replace /usr/lib/aufs.shlib $out/lib/aufs.shlib - ''; - - meta = { - description = "Utilities for AUFS2"; - homepage = http://aufs.sourceforge.net/; - maintainers = [ stdenv.lib.maintainers.eelco ]; - platforms = stdenv.lib.platforms.linux; - }; -} diff --git a/pkgs/os-specific/linux/aufs-util/3.nix b/pkgs/os-specific/linux/aufs-util/3.nix deleted file mode 100644 index 9997c2743a50..000000000000 --- a/pkgs/os-specific/linux/aufs-util/3.nix +++ /dev/null @@ -1,40 +0,0 @@ -{ stdenv, fetchgit, kernelDev, aufs }: - -assert aufs != null; - -stdenv.mkDerivation { - name = "aufs3-util-${aufs.patch.version}-${kernelDev.version}"; - - src = fetchgit { - url = git://aufs.git.sourceforge.net/gitroot/aufs/aufs-util.git; - rev = aufs.patch.utilRev; - sha256 = aufs.patch.utilHash; - }; - - buildInputs = [ aufs ]; - - makeFlags = - [ "KDIR=${kernelDev}/lib/modules/${kernelDev.modDirVersion}/build" - "Install=install" - "DESTDIR=$(out)" - ]; - - postInstall = - '' - mv $out/usr/* $out - rmdir $out/usr - - cp aufs.shlib $out/lib/ - - substituteInPlace $out/bin/aubrsync \ - --replace /sbin/mount $out/sbin/mount \ - --replace /usr/lib/aufs.shlib $out/lib/aufs.shlib - ''; - - meta = { - description = "Utilities for AUFS3"; - homepage = http://aufs.sourceforge.net/; - maintainers = [ stdenv.lib.maintainers.eelco ]; - platforms = stdenv.lib.platforms.linux; - }; -} diff --git a/pkgs/os-specific/linux/aufs/2.nix b/pkgs/os-specific/linux/aufs/2.nix deleted file mode 100644 index a4a40823f7a2..000000000000 --- a/pkgs/os-specific/linux/aufs/2.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ stdenv, fetchurl, kernelDev, perl, fetchgit }: - -assert kernelDev.features ? aufsBase; - -let version = "20100522"; in - -stdenv.mkDerivation { - name = "aufs2-${version}-${kernelDev.version}"; - - src = - if (builtins.lessThan (builtins.compareVersions kernelDev.version "2.6.35") 0) then - fetchurl { - url = "http://tarballs.nixos.org/aufs2-standalone-git-${version}.tar.bz2"; - sha256 = "1g4mw4qx2xzpygdwjiw36bkhfz1hi7wxx7w79n2h0lr5grzzdnd6"; - } - else - fetchgit { - url = "http://git.c3sl.ufpr.br/pub/scm/aufs/aufs2-standalone.git"; - rev = "d950eef373ff1e0448ad3945b734da6ab050571d"; - sha256 = "816145b0341bd7862df50c058144cf6ebc25c05d2976f781ff0fe10d4559b853"; - }; - - buildInputs = [ perl ]; - - makeFlags = "KDIR=${kernelDev}/lib/modules/${kernelDev.version}/build"; - - installPhase = - '' - mkdir -p $out/lib/modules/${kernelDev.version}/misc - cp aufs.ko $out/lib/modules/${kernelDev.version}/misc - - # Install the headers because aufs2-util requires them. - cp -prvd include $out/ - ''; - - meta = { - description = "Another Unionfs implementation for Linux (second generation)"; - homepage = http://aufs.sourceforge.net/; - maintainers = [ stdenv.lib.maintainers.eelco - stdenv.lib.maintainers.raskin ]; - platforms = stdenv.lib.platforms.linux; - }; -} diff --git a/pkgs/os-specific/linux/aufs/3.nix b/pkgs/os-specific/linux/aufs/3.nix deleted file mode 100644 index 2f566d3abff7..000000000000 --- a/pkgs/os-specific/linux/aufs/3.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ stdenv, kernelDev, perl }: - -let - - aufsPredicate = x: - if x ? features then - (if x.features ? aufs3 then x.features.aufs3 else false) - else false; - featureAbort = abort "This kernel does not have aufs 3 support"; - patch = stdenv.lib.findFirst aufsPredicate featureAbort kernelDev.kernelPatches; - -in - -stdenv.mkDerivation { - name = "aufs3-${patch.version}-${kernelDev.version}"; - - src = patch.patch.src; - - buildInputs = [ perl ]; - - makeFlags = "KDIR=${kernelDev}/lib/modules/${kernelDev.modDirVersion}/build"; - - NIX_CFLAGS_COMPILE="-I${kernelDev}/lib/modules/${kernelDev.modDirVersion}/build/include/generated"; - - installPhase = - '' - mkdir -p $out/lib/modules/${kernelDev.modDirVersion}/misc - cp -v aufs.ko $out/lib/modules/${kernelDev.modDirVersion}/misc - - # Install the headers because aufs3-util requires them. - mkdir -p $out/include/linux - cp -v usr/include/linux/aufs_type.h $out/include/linux - ''; - - passthru = { inherit patch; }; - - meta = { - description = "Another Unionfs implementation for Linux (third generation)"; - homepage = http://aufs.sourceforge.net/; - maintainers = [ stdenv.lib.maintainers.eelco - stdenv.lib.maintainers.raskin ]; - platforms = stdenv.lib.platforms.linux; - }; -} diff --git a/pkgs/os-specific/linux/batman-adv/default.nix b/pkgs/os-specific/linux/batman-adv/default.nix index e4b4d1104b0d..0b7b6a0cafb4 100644 --- a/pkgs/os-specific/linux/batman-adv/default.nix +++ b/pkgs/os-specific/linux/batman-adv/default.nix @@ -1,17 +1,17 @@ -{ stdenv, fetchurl, kernelDev }: +{ stdenv, fetchurl, kernel }: -let base = "batman-adv-2013.2.0"; in +let base = "batman-adv-2013.4.0"; in stdenv.mkDerivation rec { - name = "${base}-${kernelDev.version}"; + name = "${base}-${kernel.version}"; src = fetchurl { url = "http://downloads.open-mesh.org/batman/releases/${base}/${base}.tar.gz"; - sha1 = "7d2aff2ad118cbc5452de43f7e9da8374521ec0e"; + sha1 = "870a85df5410b3b5623be69e75297e642c91a7d4"; }; preBuild = '' - makeFlags="KERNELPATH=${kernelDev}/lib/modules/${kernelDev.modDirVersion}/build" + makeFlags="KERNELPATH=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" sed -i -e "s,INSTALL_MOD_DIR=,INSTALL_MOD_PATH=$out INSTALL_MOD_DIR=," \ -e /depmod/d Makefile ''; diff --git a/pkgs/os-specific/linux/bbswitch/default.nix b/pkgs/os-specific/linux/bbswitch/default.nix index 675fe7695af9..373f814f6e02 100644 --- a/pkgs/os-specific/linux/bbswitch/default.nix +++ b/pkgs/os-specific/linux/bbswitch/default.nix @@ -1,9 +1,9 @@ -{ stdenv, fetchurl, kernelDev }: +{ stdenv, fetchurl, kernel }: let baseName = "bbswitch"; version = "0.7"; - name = "${baseName}-${version}-${kernelDev.version}"; + name = "${baseName}-${version}-${kernel.version}"; in @@ -17,13 +17,13 @@ stdenv.mkDerivation { preBuild = '' substituteInPlace Makefile \ - --replace "\$(shell uname -r)" "${kernelDev.modDirVersion}" \ - --replace "/lib/modules" "${kernelDev}/lib/modules" + --replace "\$(shell uname -r)" "${kernel.modDirVersion}" \ + --replace "/lib/modules" "${kernel.dev}/lib/modules" ''; installPhase = '' - ensureDir $out/lib/modules/${kernelDev.modDirVersion}/misc - cp bbswitch.ko $out/lib/modules/${kernelDev.modDirVersion}/misc + ensureDir $out/lib/modules/${kernel.modDirVersion}/misc + cp bbswitch.ko $out/lib/modules/${kernel.modDirVersion}/misc ensureDir $out/bin tee $out/bin/discrete_vga_poweroff << EOF diff --git a/pkgs/os-specific/linux/blcr/default.nix b/pkgs/os-specific/linux/blcr/default.nix index d0d81abb244b..0cc4e3741c26 100644 --- a/pkgs/os-specific/linux/blcr/default.nix +++ b/pkgs/os-specific/linux/blcr/default.nix @@ -1,13 +1,13 @@ -{ stdenv, fetchurl, kernelDev, perl, makeWrapper }: +{ stdenv, fetchurl, kernel, perl, makeWrapper }: # BLCR 0.8.4 works for kernel version up to 2.6.38 (including 2.6.38.x) # BLCR 0.8.5 should works for kernel version up to 3.7.1 assert stdenv.isLinux; -assert builtins.compareVersions "3.7.2" kernelDev.version == 1; +assert builtins.compareVersions "3.7.2" kernel.version == 1; stdenv.mkDerivation { - name = "blcr_${kernelDev.version}-0.8.5"; + name = "blcr_${kernel.version}-0.8.5"; src = fetchurl { url = http://crd.lbl.gov/assets/Uploads/FTG/Projects/CheckpointRestart/downloads/blcr-0.8.5.tar.gz; @@ -18,9 +18,9 @@ stdenv.mkDerivation { preConfigure = '' configureFlagsArray=( - --with-linux=${kernelDev}/lib/modules/${kernelDev.modDirVersion}/build - --with-kmod-dir=$out/lib/modules/${kernelDev.modDirVersion} - --with-system-map=${kernelDev}/System.map + --with-linux=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build + --with-kmod-dir=$out/lib/modules/${kernel.modDirVersion} + --with-system-map=${kernel}/System.map ) ''; diff --git a/pkgs/os-specific/linux/broadcom-sta-v6/default.nix b/pkgs/os-specific/linux/broadcom-sta-v6/default.nix deleted file mode 100644 index db4337c0ff28..000000000000 --- a/pkgs/os-specific/linux/broadcom-sta-v6/default.nix +++ /dev/null @@ -1,49 +0,0 @@ -{ stdenv, fetchurl, kernelDev }: -let - version = "6_30_223_141"; -in -stdenv.mkDerivation { - name = "broadcom-sta-${version}-${kernelDev.version}"; - - src = if stdenv.system == "i686-linux" then ( - fetchurl { - url = "http://www.broadcom.com/docs/linux_sta/hybrid-v35-nodebug-pcoem-${version}.tar.gz"; - sha256 = "19wra62dpm0x0byksh871yxr128b4v13kzkzqv56igjfpzv36z6m"; - } ) else ( - fetchurl { - url = "http://www.broadcom.com/docs/linux_sta/hybrid-v35_64-nodebug-pcoem-${version}.tar.gz"; - sha256 = "0jlvch7d3khmmg5kp80x4ka33hidj8yykqjcqq6j56z2g6wb4dsz"; - } - ); - - buildInputs = [ kernelDev ]; - patches = [ - ./linux-recent.patch - ./license.patch - ]; - - makeFlags = "KBASE=${kernelDev}/lib/modules/${kernelDev.modDirVersion}"; - - unpackPhase = '' - sourceRoot=broadcom-sta - mkdir "$sourceRoot" - tar xvf "$src" -C "$sourceRoot" - ''; - - installPhase = - '' - binDir="$out/lib/modules/${kernelDev.modDirVersion}/kernel/net/wireless/" - docDir="$out/share/doc/broadcom-sta/" - mkdir -p "$binDir" "$docDir" - cp wl.ko "$binDir" - cp lib/LICENSE.txt "$docDir" - ''; - - meta = { - description = "Kernel module driver for some Broadcom's wireless cards"; - homepage = http://www.broadcom.com/support/802.11/linux_sta.php; - license = "unfree-redistributable"; - maintainers = with stdenv.lib.maintainers; [ phreedom vcunat ]; - platforms = stdenv.lib.platforms.linux; - }; -} diff --git a/pkgs/os-specific/linux/broadcom-sta-v6/license.patch b/pkgs/os-specific/linux/broadcom-sta-v6/license.patch deleted file mode 100644 index aebb46365195..000000000000 --- a/pkgs/os-specific/linux/broadcom-sta-v6/license.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -Naur hybrid-portsrc-x86_32-v5_10_91_9.orig/src/wl/sys/wl_linux.c hybrid-portsrc-x86_32-v5_10_91_9/src/wl/sys/wl_linux.c ---- hybrid-portsrc-x86_32-v5_10_91_9.orig/src/wl/sys/wl_linux.c 2009-04-23 02:48:59.000000000 +0900 -+++ hybrid-portsrc-x86_32-v5_10_91_9/src/wl/sys/wl_linux.c 2009-05-08 00:48:20.000000000 +0900 -@@ -171,6 +171,8 @@ - static void wl_free_if(wl_info_t *wl, wl_if_t *wlif); - static void wl_get_driver_info(struct net_device *dev, struct ethtool_drvinfo *info); - -+MODULE_LICENSE("MIXED/Proprietary"); -+ - #if defined(WL_CONFIG_RFKILL) - #include - static int wl_init_rfkill(wl_info_t *wl); - diff --git a/pkgs/os-specific/linux/broadcom-sta-v6/linux-recent.patch b/pkgs/os-specific/linux/broadcom-sta-v6/linux-recent.patch deleted file mode 100644 index 97a331a2bd73..000000000000 --- a/pkgs/os-specific/linux/broadcom-sta-v6/linux-recent.patch +++ /dev/null @@ -1,126 +0,0 @@ ---- a/src/wl/sys/wl_linux.c 2013-08-01 08:52:22.000000000 +0200 -+++ b/src/wl/sys/wl_linux.c 2013-09-13 14:25:36.463020788 +0200 -@@ -910,7 +910,11 @@ - pci_set_drvdata(pdev, NULL); - } - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 8, 0) - static struct pci_driver wl_pci_driver = { -+#else -+static struct pci_driver wl_pci_driver __refdata = { -+#endif - name: "wl", - probe: wl_pci_probe, - suspend: wl_suspend, -@@ -3235,7 +3239,7 @@ - void - wl_tkip_printstats(wl_info_t *wl, bool group_key) - { --#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 14) -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 14) && LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) - char debug_buf[512]; - int idx; - if (wl->tkipmodops) { -@@ -3408,6 +3412,7 @@ - return 0; - } - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) - static int - wl_proc_read(char *buffer, char **start, off_t offset, int length, int *eof, void *data) - { -@@ -3462,19 +3467,90 @@ - return length; - } - -+#else -+ -+static int -+wl_proc_read(struct seq_file *seq, void *offset) -+{ -+ wl_info_t * wl = (wl_info_t *)seq->private; -+ int bcmerror, to_user; -+ -+ WL_LOCK(wl); -+ bcmerror = wlc_ioctl(wl->wlc, WLC_GET_MONITOR, &to_user, sizeof(int), NULL); -+ WL_UNLOCK(wl); -+ -+ seq_printf(seq, "%d\n", to_user); -+ return bcmerror; -+} -+ -+static ssize_t wl_proc_write(struct file *file, const char __user *buff, -+ size_t length, loff_t *ppos) -+{ -+ struct seq_file *seq = file->private_data; -+ wl_info_t * wl = (wl_info_t *)seq->private; -+ int bcmerror, from_user = 0; -+ -+ if (length != 1) { -+ WL_ERROR(("%s: Invalid data length\n", __FUNCTION__)); -+ return -EIO; -+ } -+ -+ if (copy_from_user(&from_user, buff, 1)) { -+ WL_ERROR(("%s: copy from user failed\n", __FUNCTION__)); -+ return -EFAULT; -+ } -+ -+ if (from_user >= 0x30) -+ from_user -= 0x30; -+ -+ WL_LOCK(wl); -+ bcmerror = wlc_ioctl(wl->wlc, WLC_SET_MONITOR, &from_user, sizeof(int), NULL); -+ WL_UNLOCK(wl); -+ -+ if (bcmerror < 0) { -+ WL_ERROR(("%s: SET_MONITOR failed with %d\n", __FUNCTION__, bcmerror)); -+ return -EIO; -+ } -+ *ppos += length; -+ return length; -+} -+ -+static int wl_proc_open(struct inode *inode, struct file *file) -+{ -+ return single_open(file, wl_proc_read, PDE_DATA(inode)); -+} -+ -+static const struct file_operations wl_proc_fops = { -+ .owner = THIS_MODULE, -+ .open = wl_proc_open, -+ .read = seq_read, -+ .write = wl_proc_write, -+ .llseek = seq_lseek, -+ .release = single_release, -+}; -+#endif -+ - static int - wl_reg_proc_entry(wl_info_t *wl) - { - char tmp[32]; - sprintf(tmp, "%s%d", HYBRID_PROC, wl->pub->unit); -- if ((wl->proc_entry = create_proc_entry(tmp, 0644, NULL)) == NULL) { -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) -+ wl->proc_entry = create_proc_entry(tmp, 0644, NULL); -+ if (wl->proc_entry) { -+ wl->proc_entry->read_proc = wl_proc_read; -+ wl->proc_entry->write_proc = wl_proc_write; -+ wl->proc_entry->data = wl; -+ } -+#else -+ wl->proc_entry = proc_create_data(tmp, 0644, NULL, &wl_proc_fops, wl); -+#endif -+ if (!wl->proc_entry) { - WL_ERROR(("%s: create_proc_entry %s failed\n", __FUNCTION__, tmp)); - ASSERT(0); - return -1; - } -- wl->proc_entry->read_proc = wl_proc_read; -- wl->proc_entry->write_proc = wl_proc_write; -- wl->proc_entry->data = wl; - return 0; - } - #ifdef WLOFFLD diff --git a/pkgs/os-specific/linux/broadcom-sta/default.nix b/pkgs/os-specific/linux/broadcom-sta/default.nix index 816a099e243c..5955543f8e1e 100644 --- a/pkgs/os-specific/linux/broadcom-sta/default.nix +++ b/pkgs/os-specific/linux/broadcom-sta/default.nix @@ -1,38 +1,37 @@ -{ stdenv, fetchurl, kernelDev }: - -let version = "5_100_82_112"; - bits = if stdenv.system == "i686-linux" then "32" else - assert stdenv.system == "x86_64-linux"; "64"; +{ stdenv, fetchurl, kernel }: +let + version = "6_30_223_141"; in - stdenv.mkDerivation { - name = "broadcom-sta-${version}-${kernelDev.version}"; - - src = fetchurl { - url = "http://www.broadcom.com/docs/linux_sta/hybrid-portsrc_x86_${bits}-v${version}.tar.gz"; - sha256 = if bits == "32" - then "1rvhw9ngw0djxyyjx5m01c0js89zs3xiwmra03al6f9q7cbf7d45" - else "1qsarnry10f5m8a73wbr9cg2ifs00sqg6x0ay59l72vl9hb2zlww"; - }; - - buildInputs = [ kernelDev ]; - patches = - [ ./makefile.patch ./linux-2.6.39.patch ./linux-3.2.patch - ./linux-3.4.patch ./license.patch - ]; - - makeFlags = "KDIR=${kernelDev}/lib/modules/${kernelDev.modDirVersion}/build"; - - unpackPhase = - '' + name = "broadcom-sta-${version}-${kernel.version}"; + + src = if stdenv.system == "i686-linux" then ( + fetchurl { + url = "http://www.broadcom.com/docs/linux_sta/hybrid-v35-nodebug-pcoem-${version}.tar.gz"; + sha256 = "19wra62dpm0x0byksh871yxr128b4v13kzkzqv56igjfpzv36z6m"; + } ) else ( + fetchurl { + url = "http://www.broadcom.com/docs/linux_sta/hybrid-v35_64-nodebug-pcoem-${version}.tar.gz"; + sha256 = "0jlvch7d3khmmg5kp80x4ka33hidj8yykqjcqq6j56z2g6wb4dsz"; + } + ); + + patches = [ + ./linux-recent.patch + ./license.patch + ]; + + makeFlags = "KBASE=${kernel.dev}/lib/modules/${kernel.modDirVersion}"; + + unpackPhase = '' sourceRoot=broadcom-sta mkdir "$sourceRoot" tar xvf "$src" -C "$sourceRoot" - ''; + ''; installPhase = '' - binDir="$out/lib/modules/${kernelDev.modDirVersion}/kernel/net/wireless/" + binDir="$out/lib/modules/${kernel.modDirVersion}/kernel/net/wireless/" docDir="$out/share/doc/broadcom-sta/" mkdir -p "$binDir" "$docDir" cp wl.ko "$binDir" @@ -43,7 +42,7 @@ stdenv.mkDerivation { description = "Kernel module driver for some Broadcom's wireless cards"; homepage = http://www.broadcom.com/support/802.11/linux_sta.php; license = "unfree-redistributable"; - maintainers = [ stdenv.lib.maintainers.vcunat ]; + maintainers = with stdenv.lib.maintainers; [ phreedom vcunat ]; platforms = stdenv.lib.platforms.linux; }; } diff --git a/pkgs/os-specific/linux/broadcom-sta/license.patch b/pkgs/os-specific/linux/broadcom-sta/license.patch index b320d977e8b0..aebb46365195 100644 --- a/pkgs/os-specific/linux/broadcom-sta/license.patch +++ b/pkgs/os-specific/linux/broadcom-sta/license.patch @@ -1,12 +1,13 @@ diff -Naur hybrid-portsrc-x86_32-v5_10_91_9.orig/src/wl/sys/wl_linux.c hybrid-portsrc-x86_32-v5_10_91_9/src/wl/sys/wl_linux.c --- hybrid-portsrc-x86_32-v5_10_91_9.orig/src/wl/sys/wl_linux.c 2009-04-23 02:48:59.000000000 +0900 +++ hybrid-portsrc-x86_32-v5_10_91_9/src/wl/sys/wl_linux.c 2009-05-08 00:48:20.000000000 +0900 -@@ -163,6 +163,8 @@ +@@ -171,6 +171,8 @@ static void wl_free_if(wl_info_t *wl, wl_if_t *wlif); static void wl_get_driver_info(struct net_device *dev, struct ethtool_drvinfo *info); +MODULE_LICENSE("MIXED/Proprietary"); + - static struct pci_device_id wl_id_table[] = { - { PCI_VENDOR_ID_BROADCOM, 0x4311, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, - { PCI_VENDOR_ID_BROADCOM, 0x4312, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, + #if defined(WL_CONFIG_RFKILL) + #include + static int wl_init_rfkill(wl_info_t *wl); + diff --git a/pkgs/os-specific/linux/broadcom-sta/linux-2.6.39.patch b/pkgs/os-specific/linux/broadcom-sta/linux-2.6.39.patch deleted file mode 100644 index ca07c918c360..000000000000 --- a/pkgs/os-specific/linux/broadcom-sta/linux-2.6.39.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- old/src/wl/sys/wl_cfg80211.c -+++ new/src/wl/sys/wl_cfg80211.c -@@ -1811,7 +1811,7 @@ - notif_bss_info->frame_len = offsetof(struct ieee80211_mgmt, u.beacon.variable) + - wl_get_ielen(wl); - freq = ieee80211_channel_to_frequency(notif_bss_info->channel --#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39) -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39) - ,(notif_bss_info->channel <= CH_MAX_2G_CHANNEL) ? IEEE80211_BAND_2GHZ : IEEE80211_BAND_5GHZ - #endif - ); diff --git a/pkgs/os-specific/linux/broadcom-sta/linux-3.2.patch b/pkgs/os-specific/linux/broadcom-sta/linux-3.2.patch deleted file mode 100644 index b491537cb86f..000000000000 --- a/pkgs/os-specific/linux/broadcom-sta/linux-3.2.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -Naur broadcom-sta-5.100.82.112.orig/src/wl/sys/wl_linux.c broadcom-sta-5.100.82.112/src/wl/sys/wl_linux.c ---- broadcom-sta-5.100.82.112.orig/src/wl/sys/wl_linux.c 2011-10-23 01:56:55.000000000 +0900 -+++ broadcom-sta-5.100.82.112/src/wl/sys/wl_linux.c 2011-11-22 00:56:07.021520421 +0900 -@@ -385,7 +385,9 @@ - #endif - .ndo_get_stats = wl_get_stats, - .ndo_set_mac_address = wl_set_mac_address, -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 2, 0) - .ndo_set_multicast_list = wl_set_multicast_list, -+#endif - .ndo_do_ioctl = wl_ioctl - }; - diff --git a/pkgs/os-specific/linux/broadcom-sta/linux-3.4.patch b/pkgs/os-specific/linux/broadcom-sta/linux-3.4.patch deleted file mode 100644 index 854131c641b2..000000000000 --- a/pkgs/os-specific/linux/broadcom-sta/linux-3.4.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- broadcom-sta.orig/src/wl/sys/wl_linux.c -+++ broadcom-sta.new/src/wl/sys/wl_linux.c -@@ -40,7 +40,9 @@ - #include - #define WLC_MAXBSSCFG 1 - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 4, 0) - #include -+#endif - #include - #include - #include diff --git a/pkgs/os-specific/linux/broadcom-sta/linux-recent.patch b/pkgs/os-specific/linux/broadcom-sta/linux-recent.patch new file mode 100644 index 000000000000..97a331a2bd73 --- /dev/null +++ b/pkgs/os-specific/linux/broadcom-sta/linux-recent.patch @@ -0,0 +1,126 @@ +--- a/src/wl/sys/wl_linux.c 2013-08-01 08:52:22.000000000 +0200 ++++ b/src/wl/sys/wl_linux.c 2013-09-13 14:25:36.463020788 +0200 +@@ -910,7 +910,11 @@ + pci_set_drvdata(pdev, NULL); + } + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 8, 0) + static struct pci_driver wl_pci_driver = { ++#else ++static struct pci_driver wl_pci_driver __refdata = { ++#endif + name: "wl", + probe: wl_pci_probe, + suspend: wl_suspend, +@@ -3235,7 +3239,7 @@ + void + wl_tkip_printstats(wl_info_t *wl, bool group_key) + { +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 14) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 14) && LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) + char debug_buf[512]; + int idx; + if (wl->tkipmodops) { +@@ -3408,6 +3412,7 @@ + return 0; + } + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) + static int + wl_proc_read(char *buffer, char **start, off_t offset, int length, int *eof, void *data) + { +@@ -3462,19 +3467,90 @@ + return length; + } + ++#else ++ ++static int ++wl_proc_read(struct seq_file *seq, void *offset) ++{ ++ wl_info_t * wl = (wl_info_t *)seq->private; ++ int bcmerror, to_user; ++ ++ WL_LOCK(wl); ++ bcmerror = wlc_ioctl(wl->wlc, WLC_GET_MONITOR, &to_user, sizeof(int), NULL); ++ WL_UNLOCK(wl); ++ ++ seq_printf(seq, "%d\n", to_user); ++ return bcmerror; ++} ++ ++static ssize_t wl_proc_write(struct file *file, const char __user *buff, ++ size_t length, loff_t *ppos) ++{ ++ struct seq_file *seq = file->private_data; ++ wl_info_t * wl = (wl_info_t *)seq->private; ++ int bcmerror, from_user = 0; ++ ++ if (length != 1) { ++ WL_ERROR(("%s: Invalid data length\n", __FUNCTION__)); ++ return -EIO; ++ } ++ ++ if (copy_from_user(&from_user, buff, 1)) { ++ WL_ERROR(("%s: copy from user failed\n", __FUNCTION__)); ++ return -EFAULT; ++ } ++ ++ if (from_user >= 0x30) ++ from_user -= 0x30; ++ ++ WL_LOCK(wl); ++ bcmerror = wlc_ioctl(wl->wlc, WLC_SET_MONITOR, &from_user, sizeof(int), NULL); ++ WL_UNLOCK(wl); ++ ++ if (bcmerror < 0) { ++ WL_ERROR(("%s: SET_MONITOR failed with %d\n", __FUNCTION__, bcmerror)); ++ return -EIO; ++ } ++ *ppos += length; ++ return length; ++} ++ ++static int wl_proc_open(struct inode *inode, struct file *file) ++{ ++ return single_open(file, wl_proc_read, PDE_DATA(inode)); ++} ++ ++static const struct file_operations wl_proc_fops = { ++ .owner = THIS_MODULE, ++ .open = wl_proc_open, ++ .read = seq_read, ++ .write = wl_proc_write, ++ .llseek = seq_lseek, ++ .release = single_release, ++}; ++#endif ++ + static int + wl_reg_proc_entry(wl_info_t *wl) + { + char tmp[32]; + sprintf(tmp, "%s%d", HYBRID_PROC, wl->pub->unit); +- if ((wl->proc_entry = create_proc_entry(tmp, 0644, NULL)) == NULL) { ++ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) ++ wl->proc_entry = create_proc_entry(tmp, 0644, NULL); ++ if (wl->proc_entry) { ++ wl->proc_entry->read_proc = wl_proc_read; ++ wl->proc_entry->write_proc = wl_proc_write; ++ wl->proc_entry->data = wl; ++ } ++#else ++ wl->proc_entry = proc_create_data(tmp, 0644, NULL, &wl_proc_fops, wl); ++#endif ++ if (!wl->proc_entry) { + WL_ERROR(("%s: create_proc_entry %s failed\n", __FUNCTION__, tmp)); + ASSERT(0); + return -1; + } +- wl->proc_entry->read_proc = wl_proc_read; +- wl->proc_entry->write_proc = wl_proc_write; +- wl->proc_entry->data = wl; + return 0; + } + #ifdef WLOFFLD diff --git a/pkgs/os-specific/linux/broadcom-sta/makefile.patch b/pkgs/os-specific/linux/broadcom-sta/makefile.patch deleted file mode 100644 index 6ba8527e2673..000000000000 --- a/pkgs/os-specific/linux/broadcom-sta/makefile.patch +++ /dev/null @@ -1,16 +0,0 @@ ---- src/Makefile 2010-10-08 00:32:59.000000000 +0200 -+++ src/Makefile 2010-11-09 11:06:28.832999850 +0100 -@@ -27,10 +27,10 @@ - EXTRA_LDFLAGS := $(src)/lib/wlc_hybrid.o_shipped - - all: -- KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd` -+ KBUILD_NOPEDANTIC=1 make -C ${KDIR} M=`pwd` - - clean: -- KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd` clean -+ KBUILD_NOPEDANTIC=1 make -C ${KDIR} clean - - install: -- install -D -m 755 wl.ko /lib/modules/`uname -r`/kernel/drivers/net/wireless/wl.ko -+ install -D -m 755 wl.ko $out/lib/modules/${kernelVersion}/kernel/drivers/net/wireless/wl.ko diff --git a/pkgs/os-specific/linux/cryptodev/default.nix b/pkgs/os-specific/linux/cryptodev/default.nix index 7a818530ca2d..022ea648fea3 100644 --- a/pkgs/os-specific/linux/cryptodev/default.nix +++ b/pkgs/os-specific/linux/cryptodev/default.nix @@ -1,8 +1,8 @@ -{ fetchurl, stdenv, kernelDev, onlyHeaders ? false }: +{ fetchurl, stdenv, kernel, onlyHeaders ? false }: stdenv.mkDerivation rec { pname = "cryptodev-linux-1.6"; - name = "${pname}-${kernelDev.version}"; + name = "${pname}-${kernel.version}"; src = fetchurl { url = "http://download.gna.org/cryptodev-linux/${pname}.tar.gz"; @@ -10,12 +10,12 @@ stdenv.mkDerivation rec { }; buildPhase = if !onlyHeaders then '' - make -C ${kernelDev}/lib/modules/${kernelDev.modDirVersion}/build \ + make -C ${kernel.dev}/lib/modules/${kernel.modDirVersion}/build \ SUBDIRS=`pwd` INSTALL_PATH=$out '' else ":"; installPhase = stdenv.lib.optionalString (!onlyHeaders) '' - make -C ${kernelDev}/lib/modules/${kernelDev.modDirVersion}/build \ + make -C ${kernel.dev}/lib/modules/${kernel.modDirVersion}/build \ INSTALL_MOD_PATH=$out SUBDIRS=`pwd` modules_install '' + '' mkdir -p $out/include/crypto diff --git a/pkgs/os-specific/linux/e1000e/default.nix b/pkgs/os-specific/linux/e1000e/default.nix index e1abeea49b70..db5f88b935fd 100644 --- a/pkgs/os-specific/linux/e1000e/default.nix +++ b/pkgs/os-specific/linux/e1000e/default.nix @@ -1,19 +1,17 @@ -{ stdenv, fetchurl, kernelDev }: +{ stdenv, fetchurl, kernel }: stdenv.mkDerivation { - name = "e1000e-1.5.1-${kernelDev.version}"; + name = "e1000e-2.5.4-${kernel.version}"; src = fetchurl { - url = "mirror://sourceforge/e1000/e1000e-1.5.1.tar.gz"; - sha256 = "0nzjlarpqcpm5y112n3vzra4qv32hiygpfkk10y8g4nln4adhqsw"; + url = "mirror://sourceforge/e1000/e1000e-2.5.4.tar.gz"; + sha256 = "0bmihkc7y37jzwi996ryqblnyflyhhbimbnrnmlk419vxlzg1pzi"; }; - buildInputs = [ kernelDev ]; - configurePhase = '' cd src - kernel_version=$( cd ${kernelDev}/lib/modules && echo * ) - sed -i -e 's|/lib/modules|${kernelDev}/lib/modules|' Makefile + kernel_version=${kernel.modDirVersion} + sed -i -e 's|/lib/modules|${kernel.dev}/lib/modules|' Makefile export makeFlags="BUILD_KERNEL=$kernel_version" ''; diff --git a/pkgs/os-specific/linux/exmap/default.nix b/pkgs/os-specific/linux/exmap/default.nix deleted file mode 100644 index 1b372ca3dbfc..000000000000 --- a/pkgs/os-specific/linux/exmap/default.nix +++ /dev/null @@ -1,56 +0,0 @@ -{ fetchurl, stdenv, kernelDev, pkgconfig, gtkmm, boost, pcre }: - -stdenv.mkDerivation rec { - name = "exmap-0.10-${kernelDev.version}"; - - src = fetchurl { - url = "http://www.berthels.co.uk/exmap/download/${name}.tgz"; - sha256 = "0z00dhl6bdmaz7p9wlvnj0izf0zlrlkv34fz449kxyislpzzxmgn"; - }; - - patchPhase = '' - substituteInPlace "kernel/Makefile" \ - --replace '/lib/modules/$(shell uname -r)/build' \ - ${kernelDev}/lib/modules/*/build - - # The `proc_root' variable (the root of `/proc') is no longer exported - # since 2.6.26. Fortunately, one can pass `NULL' instead of `&proc_root'. - # See http://lkml.org/lkml/2008/3/30/57 . - substituteInPlace "kernel/exmap.c" \ - --replace "&proc_root" "NULL" - - substituteInPlace "src/Makefile" --replace "-Werror" "" - ''; - - buildInputs = [ kernelDev pkgconfig gtkmm boost pcre ]; - - buildPhase = "make build"; - - # XXX: The tests can only be run one the `exmap' module is loaded. - doCheck = false; - #checkPhase = "make test" - - installPhase = '' - mkdir -p "$out/share/${name}" - cp kernel/*.ko "$out/share/${name}" - - mkdir -p "$out/bin" - cp src/{gexmap,exmtool,elftool,showproc} "$out/bin" - ''; - - meta = { - description = "Exmap, a tool showing the physical memory usage of processes"; - - longDescription = '' - Exmap is a utility which takes a snapshot of how the physical - memory and swap space are currently used by all the processes on - your system. It examines which page of memory are shared between - which processes, so that it can share the cost of the pages - fairly when calculating usage totals. - ''; - - homepage = http://www.berthels.co.uk/exmap/; - - license = "GPLv2+"; - }; -} diff --git a/pkgs/os-specific/linux/frandom/default.nix b/pkgs/os-specific/linux/frandom/default.nix index a28ba527218e..419207882f83 100644 --- a/pkgs/os-specific/linux/frandom/default.nix +++ b/pkgs/os-specific/linux/frandom/default.nix @@ -1,10 +1,10 @@ -{ stdenv, fetchurl, kernelDev }: +{ stdenv, fetchurl, kernel }: let baseName = "frandom-1.1"; in stdenv.mkDerivation rec { - name = "${baseName}-${kernelDev.version}"; + name = "${baseName}-${kernel.version}"; src = fetchurl { url = "mirror://sourceforge/frandom/${baseName}.tar.gz"; @@ -12,14 +12,14 @@ stdenv.mkDerivation rec { }; preBuild = '' - kernelVersion=$(cd ${kernelDev}/lib/modules && ls) + kernelVersion=${kernel.modDirVersion} substituteInPlace Makefile \ --replace "\$(shell uname -r)" "$kernelVersion" \ - --replace "/lib/modules" "${kernelDev}/lib/modules" + --replace "/lib/modules" "${kernel.dev}/lib/modules" ''; installPhase = '' - kernelVersion=$(cd ${kernelDev}/lib/modules && ls) + kernelVersion=${kernel.modDirVersion} ensureDir $out/lib/modules/$kernelVersion/misc cp frandom.ko $out/lib/modules/$kernelVersion/misc diff --git a/pkgs/os-specific/linux/iscsitarget/default.nix b/pkgs/os-specific/linux/iscsitarget/default.nix deleted file mode 100644 index e07409aa08d3..000000000000 --- a/pkgs/os-specific/linux/iscsitarget/default.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ stdenv, fetchurl, kernelDev, module_init_tools}: - -stdenv.mkDerivation rec { - name = "iscsitarget-1.4.20.2-${kernelDev.version}"; - - src = fetchurl { - url = "mirror://sourceforge/iscsitarget/iscsitarget/1.4.20.2/${name}.tar.gz"; - sha256 = "126kp0yc7vmvdbaw2xfav89340b0h91dvvyib5qbvyrq40n8wg0g"; - }; - - KSRC = "${kernelDev}/lib/modules/*/build"; - - DESTDIR = "$(out)"; - - preConfigure = '' - export PATH=$PATH:${module_init_tools}/sbin - sed -i 's|/usr/|/|' Makefile - ''; - - buildInputs = [ module_init_tools ]; - - meta = { - description = "iSCSI Enterprise Target (IET), software for building an iSCSI storage system on Linux"; - license = "GPLv2+"; - homepage = http://iscsitarget.sourceforge.net; - }; -} diff --git a/pkgs/os-specific/linux/iwlwifi/default.nix b/pkgs/os-specific/linux/iwlwifi/default.nix deleted file mode 100644 index 1a28720f0042..000000000000 --- a/pkgs/os-specific/linux/iwlwifi/default.nix +++ /dev/null @@ -1,40 +0,0 @@ -{stdenv, fetchurl, kernelDev}: - -let version = "1.2.25"; in - -stdenv.mkDerivation rec { - name = "iwlwifi-${version}-${kernelDev.version}"; - - src = fetchurl { - url = "http://www.intellinuxwireless.org/iwlwifi/downloads/iwlwifi-${version}.tgz"; - sha256 = "09fjy0swcyd77fdp8x2825wj5cd73hwbzl8mz9sy2ha21p1qwq1d"; - }; - - preBuild = '' - substituteInPlace scripts/generate_compatible \ - --replace '/usr/bin/env /bin/bash' $shell - substituteInPlace Makefile \ - --replace /sbin/depmod true - - # Urgh, we need the complete kernel sources for some header - # files. So unpack the original kernel source tarball and copy - # the configured include directory etc. on top of it. - kernelVersion=$(cd ${kernelDev}/lib/modules && ls) - kernelBuild=$(echo ${kernelDev}/lib/modules/$kernelVersion/source) - tar xvfj ${kernelDev.src} - kernelSource=$(echo $(pwd)/linux-*) - cp -prd $kernelBuild/* $kernelSource - - makeFlags=KSRC=$kernelSource - make $makeFlags || true - make $makeFlags - - installFlags=KMISC=$out/lib/modules/$kernelVersion/misc - ''; # */ - - meta = { - description = "Intel Wireless WiFi Link drivers for Linux"; - homepage = http://www.intellinuxwireless.org/; - license = "GPLv2"; - }; -} diff --git a/pkgs/os-specific/linux/kernel-headers/default.nix b/pkgs/os-specific/linux/kernel-headers/default.nix new file mode 100644 index 000000000000..e4ce19457058 --- /dev/null +++ b/pkgs/os-specific/linux/kernel-headers/default.nix @@ -0,0 +1,25 @@ +{ stdenv, kernel, perl }: + +let + baseBuildFlags = [ "INSTALL_HDR_PATH=$(out)" "headers_install" ]; +in stdenv.mkDerivation { + name = "linux-headers-${kernel.version}"; + + inherit (kernel) src patches; + + nativeBuildInputs = [ perl ]; + + buildFlags = [ "ARCH=${stdenv.platform.kernelArch}" ] ++ baseBuildFlags; + + crossAttrs = { + inherit (kernel.crossDrv) src patches; + buildFlags = [ "ARCH=${stdenv.cross.platform.kernelArch}" ] ++ baseBuildFlags; + }; + + installPhase = '' + find $out \( -name ..install.cmd -o -name .install \) -print0 | xargs -0 rm + ''; + + # Headers shouldn't reference anything else + allowedReferences = []; +} diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix index c8910f8ed06e..67e8f0655393 100644 --- a/pkgs/os-specific/linux/kernel/manual-config.nix +++ b/pkgs/os-specific/linux/kernel/manual-config.nix @@ -144,7 +144,7 @@ let # !!! No documentation on how much of the source tree must be kept # If/when kernel builds fail due to missing files, you can undelete # them here - ls -A | grep -v Makefile | xargs rm -fR + find -empty -type d -delete '' else optionalString installsFirmware '' make firmware_install $makeFlags "''${makeFlagsArray[@]}" \ $installFlags "''${installFlagsArray[@]}" diff --git a/pkgs/os-specific/linux/kernel/patches.nix b/pkgs/os-specific/linux/kernel/patches.nix index b55312fe5609..efa23f67846b 100644 --- a/pkgs/os-specific/linux/kernel/patches.nix +++ b/pkgs/os-specific/linux/kernel/patches.nix @@ -18,24 +18,6 @@ let }; }; - makeAufs3StandalonePatch = {version, rev, sha256}: - - stdenv.mkDerivation { - name = "aufs3-standalone-${version}.patch"; - - src = fetchgit { - url = git://aufs.git.sourceforge.net/gitroot/aufs/aufs3-standalone.git; - inherit sha256 rev; - }; - - phases = [ "unpackPhase" "installPhase" ]; - - # Instructions from http://aufs.git.sourceforge.net/git/gitweb.cgi?p=aufs/aufs3-standalone.git;a=blob;f=Documentation/filesystems/aufs/README;h=b8cf077635b323d1b454266366f05f476bbd09cb;hb=1067b9d8d64d23c70d905c9cd3c90a669e39c4d4 - installPhase = '' - cat aufs3-base.patch aufs3-proc_map.patch aufs3-standalone.patch > $out - ''; - }; - makeAppArmorPatch = {apparmor, version}: stdenv.mkDerivation { name = "apparmor-${version}.patch"; @@ -68,34 +50,6 @@ rec { features.secPermPatch = true; }; - aufs3_2 = rec { - name = "aufs3.2"; - version = "3.2.20121210"; - utilRev = "91af15f977d12e02165759620005f6ce1a4d7602"; - utilHash = "dda4df89828dcf0e4012d88b4aa3eda8c30af69d6530ff5fedc2411de872c996"; - patch = makeAufs3StandalonePatch { - inherit version; - rev = "0bf50c3b82f98e2ddc4c9ba0657f28ebfa8d15cb"; - sha256 = "bc4b65cb77c62744db251da98488fdf4962f14a144c045cea6cbbbd42718ff89"; - }; - features.aufsBase = true; - features.aufs3 = true; - }; - - aufs3_4 = rec { - name = "aufs3.4"; - version = "3.4.20121210"; - utilRev = "91af15f977d12e02165759620005f6ce1a4d7602"; - utilHash = "dda4df89828dcf0e4012d88b4aa3eda8c30af69d6530ff5fedc2411de872c996"; - patch = makeAufs3StandalonePatch { - inherit version; - rev = "2faacd9baffb37df3b9062cc554353eebe68df1e"; - sha256 = "3ecf97468f5e85970d9fd2bfc61e38c7f5ae2c6dde0045d5a17de085c411d452"; - }; - features.aufsBase = true; - features.aufs3 = true; - }; - no_xsave = { name = "no-xsave"; patch = ./no-xsave.patch; diff --git a/pkgs/os-specific/linux/kernel/perf.nix b/pkgs/os-specific/linux/kernel/perf.nix index 04924f013a45..3fb18a234729 100644 --- a/pkgs/os-specific/linux/kernel/perf.nix +++ b/pkgs/os-specific/linux/kernel/perf.nix @@ -1,13 +1,13 @@ -{ stdenv, kernelDev, elfutils, python, perl, newt, slang, asciidoc, xmlto +{ stdenv, kernel, elfutils, python, perl, newt, slang, asciidoc, xmlto , docbook_xsl, docbook_xml_dtd_45, libxslt, flex, bison, pkgconfig , withGtk ? false, gtk ? null }: assert withGtk -> gtk != null; stdenv.mkDerivation { - name = "perf-linux-${kernelDev.version}"; + name = "perf-linux-${kernel.version}"; - inherit (kernelDev) src patches; + inherit (kernel) src patches; preConfigure = '' cd tools/perf @@ -31,6 +31,7 @@ stdenv.mkDerivation { propagatedBuildInputs = [ elfutils.crossDrv newt.crossDrv ]; makeFlags = "CROSS_COMPILE=${stdenv.cross.config}-"; elfutils = elfutils.crossDrv; + inherit (kernel.crossDrv) src patches; }; meta = { diff --git a/pkgs/os-specific/linux/klibc/default.nix b/pkgs/os-specific/linux/klibc/default.nix index 97bdd9ebacb2..df44cb68d8bd 100644 --- a/pkgs/os-specific/linux/klibc/default.nix +++ b/pkgs/os-specific/linux/klibc/default.nix @@ -1,74 +1,48 @@ -{ stdenv, fetchurl, perl, bison, mktemp, linuxHeaders, linuxHeadersCross, kernelDev ? null }: - -assert stdenv.isLinux; +{ stdenv, fetchurl, kernelHeaders, kernel, perl }: let - version = "1.5.24"; - baseMakeFlags = ["V=1" "prefix=$out" "SHLIBDIR=$out/lib"]; + version = "2.0.3"; + + commonMakeFlags = [ + "prefix=$(out)" + "SHLIBDIR=$(out)/lib" + ]; in stdenv.mkDerivation { - name = "klibc-${version}${stdenv.lib.optionalString (kernelDev != null) "-${kernelDev.version}"}"; + name = "klibc-${version}-${kernel.version}"; src = fetchurl { - url = "mirror://kernel/linux/libs/klibc/1.5/klibc-${version}.tar.bz2"; - sha256 = "18lm32dlj9k2ky9wwk274zmc3jndgrb41b6qm82g3lza6wlw3yki"; + url = "mirror://kernel/linux/libs/klibc/2.0/klibc-${version}.tar.xz"; + sha256 = "02035f2b230020de569d40605485121e0fe481ed33a93bdb8bf8c6ee2695fffa"; }; - # Trick to make this build on nix. It expects to have the kernel sources - # instead of only the linux kernel headers. - # So it cannot run the 'make headers_install' it wants to run. - # We don't install the headers, so klibc will not be useful as libc, but - # usually in nixpkgs we only use the userspace tools comming with klibc. - prePatch = stdenv.lib.optionalString (kernelDev == null) '' - sed -i -e /headers_install/d scripts/Kbuild.install - ''; - - makeFlags = baseMakeFlags; + patches = [ ./no-reinstall-kernel-headers.patch ]; - inherit linuxHeaders; + nativeBuildInputs = [ perl ]; - crossAttrs = { - makeFlags = baseMakeFlags ++ [ "CROSS_COMPILE=${stdenv.cross.config}-" - "KLIBCARCH=${stdenv.cross.arch}" ]; + makeFlags = commonMakeFlags ++ [ + "KLIBCARCH=${stdenv.platform.kernelArch}" + "KLIBCKERNELSRC=${kernelHeaders}" + ] ++ stdenv.lib.optional (stdenv.platform.kernelArch == "arm") "CONFIG_AEABI=y"; - patchPhase = '' - sed -i 's/-fno-pic -mno-abicalls/& -mabi=32/' usr/klibc/arch/mips/MCONFIG - sed -i /KLIBCKERNELSRC/d scripts/Kbuild.install - # Wrong check for __mips64 in klibc - sed -i s/__mips64__/__mips64/ usr/include/fcntl.h - ''; - - linuxHeaders = linuxHeadersCross; + crossAttrs = { + makeFlags = commonMakeFlags ++ [ + "KLIBCARCH=${stdenv.cross.platform.kernelArch}" + "KLIBCKERNELSRC=${kernelHeaders.crossDrv}" + "CROSS_COMPILE=${stdenv.cross.config}-" + ] ++ stdenv.lib.optional (stdenv.cross.platform.kernelArch == "arm") "CONFIG_AEABI=y"; }; - - # The AEABI option concerns only arm systems, and does not affect the build for - # other systems. - preBuild = '' - sed -i /CONFIG_AEABI/d defconfig - echo "CONFIG_AEABI=y" >> defconfig - makeFlags=$(eval "echo $makeFlags") - '' + (if kernelDev == null then '' - mkdir linux - cp -prsd $linuxHeaders/include linux/ - chmod -R u+w linux/include/ - '' else '' - tar xvf ${kernelDev.src} - mv linux* linux - cd linux - ln -sv ${kernelDev}/config .config - make prepare - cd .. - ''); - # 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/ + + for file in ${kernelHeaders}/include/*; do + ln -sv $file $out/lib/klibc/include + done ''; - - nativeBuildInputs = [ perl bison mktemp ]; } diff --git a/pkgs/os-specific/linux/klibc/no-reinstall-kernel-headers.patch b/pkgs/os-specific/linux/klibc/no-reinstall-kernel-headers.patch new file mode 100644 index 000000000000..d3e55fc8731d --- /dev/null +++ b/pkgs/os-specific/linux/klibc/no-reinstall-kernel-headers.patch @@ -0,0 +1,11 @@ +diff -Naur klibc-2.0.3-orig/scripts/Kbuild.install klibc-2.0.3/scripts/Kbuild.install +--- klibc-2.0.3-orig/scripts/Kbuild.install 2013-12-03 13:53:46.000000000 -0500 ++++ klibc-2.0.3/scripts/Kbuild.install 2014-01-04 18:17:09.342609021 -0500 +@@ -95,7 +95,6 @@ + $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include + $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)lib + $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)bin +- $(Q)$(MAKE) -C $(KLIBCKERNELSRC) ARCH=$(KLIBCARCH) INSTALL_HDR_PATH=$(INSTALLROOT)$(INSTALLDIR)/$(KCROSS) headers_install + $(Q)cp -rf usr/include/. $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/. + $(Q)chmod -R a+rX $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include + $(Q)$(install-data) $(srctree)/klcc/klcc.1 $(INSTALLROOT)$(mandir)/man1/$(KCROSS)klcc.1 diff --git a/pkgs/os-specific/linux/lttng-modules/default.nix b/pkgs/os-specific/linux/lttng-modules/default.nix index e58d61e426ba..b9cc34345dff 100644 --- a/pkgs/os-specific/linux/lttng-modules/default.nix +++ b/pkgs/os-specific/linux/lttng-modules/default.nix @@ -1,8 +1,8 @@ -{ stdenv, fetchurl, kernelDev }: +{ stdenv, fetchurl, kernel }: stdenv.mkDerivation rec { pname = "lttng-modules-2.3.0"; - name = "${pname}-${kernelDev.version}"; + name = "${pname}-${kernel.version}"; src = fetchurl { url = "https://lttng.org/files/lttng-modules/${pname}.tar.bz2"; @@ -12,7 +12,7 @@ stdenv.mkDerivation rec { patches = [ ./lttng-fix-build-error-on-linux-3.2.patch ]; preConfigure = '' - export KERNELDIR="${kernelDev}/lib/modules/${kernelDev.modDirVersion}/build" + export KERNELDIR="${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" export INSTALL_MOD_PATH="$out" ''; diff --git a/pkgs/os-specific/linux/ndiswrapper/default.nix b/pkgs/os-specific/linux/ndiswrapper/default.nix index e2db1a4106ba..f95de4335648 100644 --- a/pkgs/os-specific/linux/ndiswrapper/default.nix +++ b/pkgs/os-specific/linux/ndiswrapper/default.nix @@ -1,14 +1,17 @@ -{ stdenv, fetchurl, kernelDev, perl }: +{ stdenv, fetchurl, kernel, perl, kmod }: stdenv.mkDerivation { - name = "ndiswrapper-1.56-${kernelDev.version}"; + name = "ndiswrapper-1.59-${kernel.version}"; + + patches = [ ./no-sbin.patch ]; # need at least .config and include - kernel = kernelDev; + kernel = kernel.dev; buildPhase = " echo make KBUILD=$(echo \$kernel/lib/modules/*/build); echo -n $kernel/lib/modules/*/build > kbuild_path + export PATH=${kmod}/sbin:$PATH make KBUILD=$(echo \$kernel/lib/modules/*/build); "; @@ -23,14 +26,11 @@ stdenv.mkDerivation { # should we use unstable? src = fetchurl { - url = mirror://sourceforge/ndiswrapper/ndiswrapper-1.56.tar.gz; - sha256 = "10yqg1a08v6z1qm1qr1v4rbhl35c90gzrazapr09vp372hky8f57"; + url = mirror://sourceforge/ndiswrapper/ndiswrapper-1.59.tar.gz; + sha256 = "1g6lynccyg4m7gd7vhy44pypsn8ifmibq6rqgvc672pwngzx79b6"; }; - buildInputs = [ kernelDev perl ]; - - # this is a patch against svn head, not stable version - patches = [./prefix.patch]; + buildInputs = [ perl ]; meta = { description = "Ndis driver wrapper for the Linux kernel"; diff --git a/pkgs/os-specific/linux/ndiswrapper/no-sbin.patch b/pkgs/os-specific/linux/ndiswrapper/no-sbin.patch new file mode 100644 index 000000000000..cfc048d772bd --- /dev/null +++ b/pkgs/os-specific/linux/ndiswrapper/no-sbin.patch @@ -0,0 +1,12 @@ +diff -Naur ndiswrapper-1.59-orig/driver/Makefile ndiswrapper-1.59/driver/Makefile +--- ndiswrapper-1.59-orig/driver/Makefile 2013-11-28 14:42:35.000000000 -0500 ++++ ndiswrapper-1.59/driver/Makefile 2014-01-04 18:31:43.242377375 -0500 +@@ -191,7 +191,7 @@ + rm -rf .tmp_versions + + install: config_check $(MODULE) +- @/sbin/modinfo $(MODULE) | grep -q "^vermagic: *$(KVERS) " || \ ++ @modinfo $(MODULE) | grep -q "^vermagic: *$(KVERS) " || \ + { echo "$(MODULE)" is not for Linux $(KVERS); exit 1; } + mkdir -p -m 755 $(DESTDIR)$(INST_DIR) + install -m 0644 $(MODULE) $(DESTDIR)$(INST_DIR) diff --git a/pkgs/os-specific/linux/ndiswrapper/prefix.patch b/pkgs/os-specific/linux/ndiswrapper/prefix.patch deleted file mode 100644 index ec77f4cae791..000000000000 --- a/pkgs/os-specific/linux/ndiswrapper/prefix.patch +++ /dev/null @@ -1,66 +0,0 @@ -diff -r -u ndiswrapper-1.53/driver/loader.c ndiswrapper-1.53/driver/loader.c ---- ndiswrapper-1.53/driver/loader.c 2008-05-28 06:54:08.000000000 +0400 -+++ ndiswrapper-1.53/driver/loader.c 2008-06-15 17:05:07.000000000 +0400 -@@ -100,7 +100,7 @@ - EXIT1(return NULL); - } - INIT_COMPLETION(loader_complete); -- ret = call_usermodehelper("/sbin/loadndisdriver", argv, env, 1); -+ ret = call_usermodehelper(USERMOD_HELPER, argv, env, 1); - if (ret) { - up(&loader_mutex); - ERROR("couldn't load driver %s; check system log " -@@ -262,7 +262,7 @@ - EXIT1(return NULL); - } - INIT_COMPLETION(loader_complete); -- ret = call_usermodehelper("/sbin/loadndisdriver", argv, env, 1); -+ ret = call_usermodehelper(USERMOD_HELPER, argv, env, 1); - if (ret) { - up(&loader_mutex); - ERROR("couldn't load file %s/%s; check system log " -@@ -698,7 +698,7 @@ - EXIT1(return NULL); - } - INIT_COMPLETION(loader_complete); -- ret = call_usermodehelper("/sbin/loadndisdriver", argv, env, 1); -+ ret = call_usermodehelper(USERMOD_HELPER, argv, env, 1); - if (ret) { - up(&loader_mutex); - TRACE1("couldn't load device %04x:%04x; check system " -diff -r -u ndiswrapper-1.53/driver/Makefile ndiswrapper-1.53/driver/Makefile ---- ndiswrapper-1.53/driver/Makefile 2008-05-28 06:54:08.000000000 +0400 -+++ ndiswrapper-1.53/driver/Makefile 2008-06-15 17:03:31.000000000 +0400 -@@ -95,6 +95,10 @@ - EXTRA_CFLAGS += -DWRAP_PREEMPT - endif - -+ifdef DIST_DESTDIR -+EXTRA_CFLAGS += -DPREFIX=\"$(DIST_DESTDIR)\" -+endif -+ - OBJS = crt.o hal.o iw_ndis.o loader.o ndis.o ntoskernel.o ntoskernel_io.o \ - pe_linker.o pnp.o proc.o rtl.o wrapmem.o wrapndis.o wrapper.o - -diff -r -u ndiswrapper-1.53/driver/ndiswrapper.h ndiswrapper-1.53/driver/ndiswrapper.h ---- ndiswrapper-1.53/driver/ndiswrapper.h 2008-05-28 06:54:08.000000000 +0400 -+++ ndiswrapper-1.53/driver/ndiswrapper.h 2008-06-15 17:06:37.000000000 +0400 -@@ -19,8 +19,17 @@ - #define DRIVER_VERSION "1.53" - #define UTILS_VERSION "1.9" - -+#ifndef PREFIX -+#define PREFIX -+#endif -+ - #define DRIVER_NAME "ndiswrapper" --#define DRIVER_CONFIG_DIR "/etc/ndiswrapper" -+ -+#ifndef DRIVER_CONFIG_DIR -+# define DRIVER_CONFIG_DIR PREFIX "/etc/ndiswrapper" -+#endif -+ -+#define USERMOD_HELPER PREFIX "/sbin/loadndisdriver" - - #define SSID_MAX_WPA_IE_LEN 40 - #define NDIS_ESSID_MAX_SIZE 32 diff --git a/pkgs/os-specific/linux/netatop/default.nix b/pkgs/os-specific/linux/netatop/default.nix index 9a34c503f6d3..a863ee8a4d04 100644 --- a/pkgs/os-specific/linux/netatop/default.nix +++ b/pkgs/os-specific/linux/netatop/default.nix @@ -1,7 +1,7 @@ -{ stdenv, fetchurl, kernelDev, zlib }: +{ stdenv, fetchurl, kernel, zlib }: stdenv.mkDerivation { - name = "netatop-${kernelDev.version}-0.3"; + name = "netatop-${kernel.version}-0.3"; src = fetchurl { url = http://www.atoptool.nl/download/netatop-0.3.tar.gz; @@ -12,9 +12,9 @@ stdenv.mkDerivation { preConfigure = '' patchShebangs mkversion - sed -i -e 's,^KERNDIR.*,KERNDIR=${kernelDev}/lib/modules/${kernelDev.modDirVersion}/build,' \ + sed -i -e 's,^KERNDIR.*,KERNDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build,' \ */Makefile - sed -i -e 's,/lib/modules.*extra,'$out'/lib/modules/${kernelDev.modDirVersion}/extra,' \ + sed -i -e 's,/lib/modules.*extra,'$out'/lib/modules/${kernel.modDirVersion}/extra,' \ -e s,/usr,$out, \ -e /init.d/d \ -e /depmod/d \ @@ -23,7 +23,7 @@ stdenv.mkDerivation { preInstall = '' ensureDir $out/bin $out/sbin $out/share/man/man{4,8} - ensureDir $out/lib/modules/${kernelDev.modDirVersion}/extra + ensureDir $out/lib/modules/${kernel.modDirVersion}/extra ''; meta = { diff --git a/pkgs/os-specific/linux/nvidia-x11/builder-legacy.sh b/pkgs/os-specific/linux/nvidia-x11/builder-legacy.sh index 6062566cbfb1..7d39dd311897 100755 --- a/pkgs/os-specific/linux/nvidia-x11/builder-legacy.sh +++ b/pkgs/os-specific/linux/nvidia-x11/builder-legacy.sh @@ -29,11 +29,10 @@ buildPhase() { # Create the module. kernelVersion=$(cd $kernel/lib/modules && ls) - sysSrc=$(echo $kernel/lib/modules/$kernelVersion/build/) + sysSource=$(echo $kernel/lib/modules/$kernelVersion/source) + sysOut=$(echo $kernel/lib/modules/$kernelVersion/build) unset src # used by the nv makefile - # Hack necessary to compile on 2.6.28. - export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$sysSrc/include/asm/mach-default" - make SYSSRC=$sysSrc module + make SYSSRC=$sysSource SYSOUT=$sysOut module cd ../../.. fi } diff --git a/pkgs/os-specific/linux/nvidia-x11/builder-legacy304.sh b/pkgs/os-specific/linux/nvidia-x11/builder-legacy304.sh index bb8beab29c58..7771fb988f58 100755 --- a/pkgs/os-specific/linux/nvidia-x11/builder-legacy304.sh +++ b/pkgs/os-specific/linux/nvidia-x11/builder-legacy304.sh @@ -14,11 +14,10 @@ buildPhase() { echo "Building linux driver against kernel: $kernel"; cd kernel kernelVersion=$(cd $kernel/lib/modules && ls) - sysSrc=$(echo $kernel/lib/modules/$kernelVersion/build/) + sysSrc=$(echo $kernel/lib/modules/$kernelVersion/source) + sysOut=$(echo $kernel/lib/modules/$kernelVersion/build) unset src # used by the nv makefile - # Hack necessary to compile on 2.6.28. - export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$sysSrc/include/asm/mach-default -I$sysSrc/include/generated" - make SYSSRC=$sysSrc module + make SYSSRC=$sysSrc SYSOUT=$sysOut module cd .. fi } diff --git a/pkgs/os-specific/linux/nvidia-x11/builder.sh b/pkgs/os-specific/linux/nvidia-x11/builder.sh index 28e2bd5642c0..51144bc10519 100755 --- a/pkgs/os-specific/linux/nvidia-x11/builder.sh +++ b/pkgs/os-specific/linux/nvidia-x11/builder.sh @@ -16,11 +16,10 @@ buildPhase() { echo "Building linux driver against kernel: $kernel"; cd kernel kernelVersion=$(cd $kernel/lib/modules && ls) - sysSrc=$(echo $kernel/lib/modules/$kernelVersion/build/) + sysSrc=$(echo $kernel/lib/modules/$kernelVersion/source) + sysOut=$(echo $kernel/lib/modules/$kernelVersion/build) unset src # used by the nv makefile - # Hack necessary to compile on 2.6.28. - export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$sysSrc/include/asm/mach-default -I$sysSrc/include/generated" - make SYSSRC=$sysSrc module + make SYSSRC=$sysSrc SYSOUT=$sysOut module cd .. fi } diff --git a/pkgs/os-specific/linux/nvidia-x11/default.nix b/pkgs/os-specific/linux/nvidia-x11/default.nix index 02eb65123d80..c89e5550f3ec 100644 --- a/pkgs/os-specific/linux/nvidia-x11/default.nix +++ b/pkgs/os-specific/linux/nvidia-x11/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, kernelDev ? null, xlibs, zlib, perl +{ stdenv, fetchurl, kernel ? null, xlibs, zlib, perl , gtk, atk, pango, glib, gdk_pixbuf , # Whether to build the libraries only (i.e. not the kernel module or # nvidia-settings). Used to support 32-bit binaries on 64-bit @@ -15,7 +15,7 @@ let in stdenv.mkDerivation { - name = "nvidia-x11-${versionNumber}${optionalString (!libsOnly) "-${kernelDev.version}"}"; + name = "nvidia-x11-${versionNumber}${optionalString (!libsOnly) "-${kernel.version}"}"; builder = ./builder.sh; @@ -34,7 +34,7 @@ stdenv.mkDerivation { inherit versionNumber libsOnly; - kernel = if libsOnly then null else kernelDev; + kernel = if libsOnly then null else kernel.dev; dontStrip = true; diff --git a/pkgs/os-specific/linux/nvidia-x11/legacy173.nix b/pkgs/os-specific/linux/nvidia-x11/legacy173.nix index a03e3d4ca7e4..d85c0c1a389f 100644 --- a/pkgs/os-specific/linux/nvidia-x11/legacy173.nix +++ b/pkgs/os-specific/linux/nvidia-x11/legacy173.nix @@ -1,13 +1,13 @@ -{stdenv, fetchurl, kernelDev, xlibs, zlib, gtk, atk, pango, glib, gdk_pixbuf}: +{stdenv, fetchurl, kernel, xlibs, zlib, gtk, atk, pango, glib, gdk_pixbuf}: let - versionNumber = "173.14.36"; + versionNumber = "173.14.39"; in stdenv.mkDerivation { - name = "nvidia-x11-${versionNumber}-${kernelDev.version}"; + name = "nvidia-x11-${versionNumber}-${kernel.version}"; builder = ./builder-legacy.sh; @@ -15,16 +15,16 @@ stdenv.mkDerivation { if stdenv.system == "i686-linux" then fetchurl { url = "http://us.download.nvidia.com/XFree86/Linux-x86/${versionNumber}/NVIDIA-Linux-x86-${versionNumber}-pkg0.run"; - sha256 = "19wnikms9wradf1kmaywnp7hykrdm4xqz2ka7az66s3ma096y95c"; + sha256 = "08xb7s7cxmj4zv4i3645kjhlhhwxiq6km9ixmsw3vv91f7rkb6d0"; } else if stdenv.system == "x86_64-linux" then fetchurl { url = "http://us.download.nvidia.com/XFree86/Linux-x86_64/${versionNumber}/NVIDIA-Linux-x86_64-${versionNumber}-pkg0.run"; - sha256 = "1xf1w6qvqw0a3vd807hp3cgqmzm1wkpz2by52p0qgpjqld421k2s"; + sha256 = "1p2ls0xj81l8v4n6dbjj3p5wlw1iyhgzyvqcv4h5fdxhhs2cb3md"; } else throw "nvidia-x11 does not support platform ${stdenv.system}"; - kernel = kernelDev; + kernel = kernel.dev; inherit versionNumber; diff --git a/pkgs/os-specific/linux/nvidia-x11/legacy304.nix b/pkgs/os-specific/linux/nvidia-x11/legacy304.nix index bd88e847b6ee..0665ff83ea78 100644 --- a/pkgs/os-specific/linux/nvidia-x11/legacy304.nix +++ b/pkgs/os-specific/linux/nvidia-x11/legacy304.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, kernelDev ? null, xlibs, zlib, perl +{ stdenv, fetchurl, kernel ? null, xlibs, zlib, perl , gtk, atk, pango, glib, gdk_pixbuf , # Whether to build the libraries only (i.e. not the kernel module or # nvidia-settings). Used to support 32-bit binaries on 64-bit @@ -11,7 +11,7 @@ with stdenv.lib; let versionNumber = "304.117"; in stdenv.mkDerivation { - name = "nvidia-x11-${versionNumber}${optionalString (!libsOnly) "-${kernelDev.version}"}"; + name = "nvidia-x11-${versionNumber}${optionalString (!libsOnly) "-${kernel.version}"}"; builder = ./builder-legacy304.sh; @@ -30,7 +30,7 @@ stdenv.mkDerivation { inherit versionNumber libsOnly; - kernel = if libsOnly then null else kernelDev; + kernel = if libsOnly then null else kernel.dev; dontStrip = true; diff --git a/pkgs/os-specific/linux/nvidia-x11/legacy96.nix b/pkgs/os-specific/linux/nvidia-x11/legacy96.nix deleted file mode 100644 index 32fc3632b05a..000000000000 --- a/pkgs/os-specific/linux/nvidia-x11/legacy96.nix +++ /dev/null @@ -1,44 +0,0 @@ -{stdenv, fetchurl, kernelDev, xlibs, zlib, gtk, atk, pango, glib}: - -let - - versionNumber = "96.43.23"; - -in - -stdenv.mkDerivation { - name = "nvidia-x11-${versionNumber}-${kernelDev.version}"; - - builder = ./builder-legacy.sh; - - src = - if stdenv.system == "i686-linux" then - fetchurl { - url = "http://us.download.nvidia.com/XFree86/Linux-x86/${versionNumber}/NVIDIA-Linux-x86-${versionNumber}-pkg0.run"; - sha256 = "0hi10h26l51mknr57zsdg0zaxcqdz1lp3hsz0hi1c1vkpbsavrji"; - } - else if stdenv.system == "x86_64-linux" then - fetchurl { - url = "http://us.download.nvidia.com/XFree86/Linux-x86_64/${versionNumber}/NVIDIA-Linux-x86_64-${versionNumber}-pkg0.run"; - sha256 = "09vynha40rsxpklj1m0qjfg853ckdpi9g87h06irikh405x57kzp"; - } - else throw "nvidia-x11 does not support platform ${stdenv.system}"; - - kernel = kernelDev; - - inherit versionNumber; - - dontStrip = true; - - glPath = stdenv.lib.makeLibraryPath [xlibs.libXext xlibs.libX11 xlibs.libXrandr]; - - cudaPath = stdenv.lib.makeLibraryPath [zlib stdenv.gcc.gcc]; - - programPath = stdenv.lib.makeLibraryPath [ gtk atk pango glib xlibs.libXv ]; - - meta = { - homepage = http://www.nvidia.com/object/unix.html; - description = "X.org driver and kernel module for Legacy NVIDIA graphics cards"; - license = "unfree"; - }; -} diff --git a/pkgs/os-specific/linux/open-iscsi/default.nix b/pkgs/os-specific/linux/open-iscsi/default.nix index 60e0e4d189c0..e28593d02522 100644 --- a/pkgs/os-specific/linux/open-iscsi/default.nix +++ b/pkgs/os-specific/linux/open-iscsi/default.nix @@ -1,14 +1,15 @@ -{ stdenv, fetchurl, kernelDev}: - -stdenv.mkDerivation rec { - name = "open-iscsi-2.0-871-${kernelDev.version}"; +{ stdenv, fetchurl, kernel}: +let + pname = "open-iscsi-2.0-871"; +in stdenv.mkDerivation { + name = "${pname}-${kernel.version}"; src = fetchurl { - url = "http://www.open-iscsi.org/bits/${name}.tar.gz"; + url = "http://www.open-iscsi.org/bits/${pname}.tar.gz"; sha256 = "1jvx1agybaj4czhz41bz37as076spicsmlh5pjksvwl2mr38gsmw"; }; - KSRC = "${kernelDev}/lib/modules/*/build"; + KSRC = "${kernel.dev}/lib/modules/*/build"; DESTDIR = "$(out)"; preConfigure = '' @@ -21,5 +22,6 @@ stdenv.mkDerivation rec { description = "A high performance, transport independent, multi-platform implementation of RFC3720"; license = "GPLv2+"; homepage = http://www.open-iscsi.org; + broken = true; }; } diff --git a/pkgs/os-specific/linux/psmouse-alps/default.nix b/pkgs/os-specific/linux/psmouse-alps/default.nix index 834acd72ef20..65f1a5cf6c61 100644 --- a/pkgs/os-specific/linux/psmouse-alps/default.nix +++ b/pkgs/os-specific/linux/psmouse-alps/default.nix @@ -1,15 +1,17 @@ -{ stdenv, fetchurl, kernelDev, zlib }: +{ stdenv, fetchurl, kernel, zlib }: /* Only useful for kernels 3.2 to 3.5. Fails to build in 3.8. 3.9 upstream already includes a proper alps driver for this */ +assert builtins.compareVersions "3.8" kernel.version == 1; + let ver = "1.3"; bname = "psmouse-alps-${ver}"; in stdenv.mkDerivation { - name = "psmouse-alps-${kernelDev.version}-${ver}"; + name = "psmouse-alps-${kernel.version}-${ver}"; src = fetchurl { url = http://www.dahetral.com/public-download/alps-psmouse-dlkm-for-3-2-and-3-5/at_download/file; @@ -19,12 +21,12 @@ stdenv.mkDerivation { buildPhase = '' cd src/${bname}/src - make -C ${kernelDev}/lib/modules/${kernelDev.modDirVersion}/build \ + make -C ${kernel.dev}/lib/modules/${kernel.modDirVersion}/build \ SUBDIRS=`pwd` INSTALL_PATH=$out ''; installPhase = '' - make -C ${kernelDev}/lib/modules/${kernelDev.modDirVersion}/build \ + make -C ${kernel.dev}/lib/modules/${kernel.modDirVersion}/build \ INSTALL_MOD_PATH=$out SUBDIRS=`pwd` modules_install ''; diff --git a/pkgs/os-specific/linux/spl/default.nix b/pkgs/os-specific/linux/spl/default.nix index 6a9a4cc963fa..ee264f67127a 100644 --- a/pkgs/os-specific/linux/spl/default.nix +++ b/pkgs/os-specific/linux/spl/default.nix @@ -1,7 +1,7 @@ -{ stdenv, fetchurl, kernelDev, perl, autoconf, automake, libtool, coreutils, gawk }: +{ stdenv, fetchurl, kernel, perl, autoconf, automake, libtool, coreutils, gawk }: stdenv.mkDerivation { - name = "spl-0.6.2-${kernelDev.version}"; + name = "spl-0.6.2-${kernel.version}"; src = fetchurl { url = http://archive.zfsonlinux.org/downloads/zfsonlinux/spl/spl-0.6.2.tar.gz; sha256 = "196scl8q0bkkak6m0p1l1fz254cgsizqm73bf9wk3iynamq7qmrw"; @@ -9,7 +9,7 @@ stdenv.mkDerivation { patches = [ ./install_prefix.patch ]; - buildInputs = [ perl kernelDev autoconf automake libtool ]; + buildInputs = [ perl autoconf automake libtool ]; preConfigure = '' ./autogen.sh @@ -23,8 +23,8 @@ stdenv.mkDerivation { ''; configureFlags = '' - --with-linux=${kernelDev}/lib/modules/${kernelDev.modDirVersion}/build - --with-linux-obj=${kernelDev}/lib/modules/${kernelDev.modDirVersion}/build + --with-linux=${kernel.dev}/lib/modules/${kernel.modDirVersion}/source + --with-linux-obj=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build ''; enableParallelBuilding = true; diff --git a/pkgs/os-specific/linux/tp_smapi/default.nix b/pkgs/os-specific/linux/tp_smapi/default.nix index 140021605eaf..40d9e7c10682 100644 --- a/pkgs/os-specific/linux/tp_smapi/default.nix +++ b/pkgs/os-specific/linux/tp_smapi/default.nix @@ -1,23 +1,21 @@ -{stdenv, fetchurl, kernelDev}: +{stdenv, fetchurl, kernel}: stdenv.mkDerivation { - name = "tp_smapi-0.41-${kernelDev.version}"; + name = "tp_smapi-0.41-${kernel.version}"; src = fetchurl { url = "https://github.com/downloads/evgeni/tp_smapi/tp_smapi-0.41.tar.gz"; sha256 = "6aef02b92d10360ac9be0db29ae390636be55017990063a092a285c70b54e666"; }; - buildInputs = [ kernelDev ]; - makeFlags = [ - "KBASE=${kernelDev}/lib/modules/${kernelDev.modDirVersion}" + "KBASE=${kernel.dev}/lib/modules/${kernel.modDirVersion}" "SHELL=/bin/sh" ]; installPhase = '' - install -v -D -m 644 thinkpad_ec.ko "$out/lib/modules/${kernelDev.modDirVersion}/kernel/drivers/firmware/thinkpad_ec.ko" - install -v -D -m 644 tp_smapi.ko "$out/lib/modules/${kernelDev.modDirVersion}/kernel/drivers/firmware/tp_smapi.ko" + install -v -D -m 644 thinkpad_ec.ko "$out/lib/modules/${kernel.modDirVersion}/kernel/drivers/firmware/thinkpad_ec.ko" + install -v -D -m 644 tp_smapi.ko "$out/lib/modules/${kernel.modDirVersion}/kernel/drivers/firmware/tp_smapi.ko" ''; dontStrip = true; diff --git a/pkgs/os-specific/linux/v86d/default.nix b/pkgs/os-specific/linux/v86d/default.nix index 4c6045e1a6cb..2ad3087d6a17 100644 --- a/pkgs/os-specific/linux/v86d/default.nix +++ b/pkgs/os-specific/linux/v86d/default.nix @@ -1,7 +1,7 @@ -{stdenv, fetchurl, klibc, kernelDev, withKlibc ? true}: +{stdenv, fetchurl, klibc, kernel, withKlibc ? true}: stdenv.mkDerivation rec { - name = "v86d-${version}-${kernelDev.version}"; + name = "v86d-${version}-${kernel.version}"; version = "0.1.10"; src = fetchurl { @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { configureFlags = if withKlibc then [ "--with-klibc" ] else [ "--default" ]; makeFlags = [ - "KDIR=${kernelDev}/lib/modules/${kernelDev.modDirVersion}/source" + "KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/source" "DESTDIR=$(out)" ]; @@ -27,7 +27,6 @@ stdenv.mkDerivation rec { homepage = http://dev.gentoo.org/~spock/projects/uvesafb/; license = "BSD"; platforms = [ "i686-linux" "x86_64-linux" ]; - broken = true; }; } diff --git a/pkgs/os-specific/linux/wis-go7007/default.nix b/pkgs/os-specific/linux/wis-go7007/default.nix index 7f27196ba6bd..538686720257 100644 --- a/pkgs/os-specific/linux/wis-go7007/default.nix +++ b/pkgs/os-specific/linux/wis-go7007/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, kernelDev, ncurses, fxload}: +{stdenv, fetchurl, kernel, ncurses, fxload}: let @@ -12,7 +12,7 @@ let in stdenv.mkDerivation { - name = "wis-go7007-0.9.8-${kernelDev.version}"; + name = "wis-go7007-0.9.8-${kernel.version}"; src = fetchurl { url = http://gentoo.osuosl.org/distfiles/wis-go7007-linux-0.9.8.tar.bz2; @@ -47,16 +47,6 @@ stdenv.mkDerivation { ''; preBuild = '' - # Urgh, we need the complete kernel sources for some header - # files. So unpack the original kernel source tarball and copy - # the configured include directory etc. on top of it. - kernelVersion=$(cd ${kernelDev}/lib/modules && ls) - kernelBuild=$(echo ${kernelDev}/lib/modules/$kernelVersion/source) - tar xvfj ${kernelDev.src} - kernelSource=$(echo $(pwd)/linux-*) - cp -prd $kernelBuild/* $kernelSource - - #includeDir=$out/lib/modules/$kernelVersion/source/include/linux includeDir=$TMPDIR/scratch substituteInPlace Makefile \ --replace '$(DESTDIR)$(KSRC)/include/linux' $includeDir \ @@ -65,7 +55,7 @@ stdenv.mkDerivation { mkdir -p $out/etc/hotplug/usb mkdir -p $out/etc/udev/rules.d - makeFlagsArray=(KERNELSRC=$kernelSource \ + makeFlagsArray=(KERNELSRC=${kernel.dev}/lib/modules/${kernel.modDirVersion}/source \ FIRMWARE_DIR=$out/firmware FXLOAD=${fxload}/sbin/fxload \ DESTDIR=$out SKIP_DEPMOD=1 \ USE_UDEV=y) @@ -79,5 +69,6 @@ stdenv.mkDerivation { meta = { description = "Kernel module for the Micronas GO7007, used in a number of USB TV devices"; homepage = http://oss.wischip.com/; + broken = true; }; } diff --git a/pkgs/os-specific/linux/zfs/default.nix b/pkgs/os-specific/linux/zfs/default.nix index 06615d170a17..67ed1312826a 100644 --- a/pkgs/os-specific/linux/zfs/default.nix +++ b/pkgs/os-specific/linux/zfs/default.nix @@ -1,7 +1,7 @@ -{ stdenv, fetchurl, kernelDev, spl, perl, autoconf, automake, libtool, zlib, libuuid, coreutils, utillinux }: +{ stdenv, fetchurl, kernel, spl, perl, autoconf, automake, libtool, zlib, libuuid, coreutils, utillinux }: stdenv.mkDerivation { - name = "zfs-0.6.2-${kernelDev.version}"; + name = "zfs-0.6.2-${kernel.version}"; src = fetchurl { url = http://archive.zfsonlinux.org/downloads/zfsonlinux/zfs/zfs-0.6.2.tar.gz; @@ -10,7 +10,7 @@ stdenv.mkDerivation { patches = [ ./mount_zfs_prefix.patch ./nix-build.patch ]; - buildInputs = [ kernelDev spl perl autoconf automake libtool zlib libuuid coreutils ]; + buildInputs = [ spl perl autoconf automake libtool zlib libuuid coreutils ]; # for zdb to get the rpath to libgcc_s, needed for pthread_cancel to work NIX_CFLAGS_LINK = "-lgcc_s"; @@ -28,8 +28,8 @@ stdenv.mkDerivation { ''; configureFlags = '' - --with-linux=${kernelDev}/lib/modules/${kernelDev.modDirVersion}/build - --with-linux-obj=${kernelDev}/lib/modules/${kernelDev.modDirVersion}/build + --with-linux=${kernel.dev}/lib/modules/${kernel.modDirVersion}/source + --with-linux-obj=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build --with-spl=${spl}/libexec/spl ''; diff --git a/pkgs/servers/openafs-client/default.nix b/pkgs/servers/openafs-client/default.nix index 462ecadd346d..ba0b80fc61e8 100644 --- a/pkgs/servers/openafs-client/default.nix +++ b/pkgs/servers/openafs-client/default.nix @@ -1,10 +1,10 @@ { stdenv, fetchurl, which, autoconf, automake, flex, yacc, - kernelDev, glibc, ncurses, perl, krb5 }: + kernel, glibc, ncurses, perl, krb5 }: assert stdenv.isLinux; stdenv.mkDerivation { - name = "openafs-1.6.1-${kernelDev.version}"; + name = "openafs-1.6.1-${kernel.version}"; src = fetchurl { url = http://www.openafs.org/dl/openafs/1.6.1/openafs-1.6.1-src.tar.bz2; @@ -14,7 +14,7 @@ stdenv.mkDerivation { buildInputs = [ autoconf automake flex yacc ncurses perl which ]; preConfigure = '' - ln -s ${kernelDev}/lib/modules/*/build $TMP/linux + ln -s ${kernel.dev}/lib/modules/*/build $TMP/linux patchShebangs . for i in `grep -l -R '/usr/\(include\|src\)' .`; do diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c595cba8f064..56f812136dc6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6707,7 +6707,6 @@ let inherit fetchurl stdenv perl linuxManualConfig; kernelPatches = [ kernelPatches.sec_perm_2_6_24 - # kernelPatches.aufs3_2 ]; }; @@ -6757,7 +6756,6 @@ let inherit fetchurl stdenv perl linuxManualConfig; kernelPatches = [ kernelPatches.sec_perm_2_6_24 - # kernelPatches.aufs3_4 ] ++ lib.optionals (platform.kernelArch == "mips") [ kernelPatches.mips_fpureg_emu kernelPatches.mips_fpu_sigill @@ -6831,8 +6829,6 @@ let linuxPackagesFor = kernel: self: let callPackage = newScope self; in { inherit kernel; - kernelDev = kernel.dev or kernel; - acpi_call = callPackage ../os-specific/linux/acpi-call {}; batman_adv = callPackage ../os-specific/linux/batman-adv {}; @@ -6841,45 +6837,20 @@ let ati_drivers_x11 = callPackage ../os-specific/linux/ati-drivers { }; - aufs = - if self.kernel.features ? aufs2 then - callPackage ../os-specific/linux/aufs/2.nix { } - else if self.kernel.features ? aufs3 then - callPackage ../os-specific/linux/aufs/3.nix { } - else null; - - aufs_util = - if self.kernel.features ? aufs2 then - callPackage ../os-specific/linux/aufs-util/2.nix { } - else if self.kernel.features ? aufs3 then - callPackage ../os-specific/linux/aufs-util/3.nix { } - else null; - blcr = callPackage ../os-specific/linux/blcr { }; cryptodev = callPackage ../os-specific/linux/cryptodev { }; e1000e = callPackage ../os-specific/linux/e1000e {}; - exmap = callPackage ../os-specific/linux/exmap { }; - frandom = callPackage ../os-specific/linux/frandom { }; - iscsitarget = callPackage ../os-specific/linux/iscsitarget { }; - - iwlwifi = callPackage ../os-specific/linux/iwlwifi { }; - lttngModules = callPackage ../os-specific/linux/lttng-modules { }; - atheros = callPackage ../os-specific/linux/atheros/0.9.4.nix { }; - broadcom_sta = callPackage ../os-specific/linux/broadcom-sta/default.nix { }; - broadcom_sta6 = callPackage ../os-specific/linux/broadcom-sta-v6/default.nix { }; - nvidia_x11 = callPackage ../os-specific/linux/nvidia-x11 { }; - nvidia_x11_legacy96 = callPackage ../os-specific/linux/nvidia-x11/legacy96.nix { }; nvidia_x11_legacy173 = callPackage ../os-specific/linux/nvidia-x11/legacy173.nix { }; nvidia_x11_legacy304 = callPackage ../os-specific/linux/nvidia-x11/legacy304.nix { }; @@ -6889,9 +6860,9 @@ let wis_go7007 = callPackage ../os-specific/linux/wis-go7007 { }; - klibc = callPackage ../os-specific/linux/klibc { - linuxHeaders = glibc.kernelHeaders; - }; + kernelHeaders = callPackage ../os-specific/linux/kernel-headers { }; + + klibc = callPackage ../os-specific/linux/klibc { }; /* compiles but has to be integrated into the kernel somehow Let's have it uncommented and finish it.. @@ -6906,10 +6877,6 @@ let spl = callPackage ../os-specific/linux/spl/default.nix { }; - sysprof = callPackage ../development/tools/profiling/sysprof { - inherit (gnome) libglade; - }; - tp_smapi = callPackage ../os-specific/linux/tp_smapi { }; v86d = callPackage ../os-specific/linux/v86d { }; @@ -7098,6 +7065,10 @@ let sysfsutils = callPackage ../os-specific/linux/sysfsutils { }; + sysprof = callPackage ../development/tools/profiling/sysprof { + inherit (gnome) libglade; + }; + # Provided with sysfsutils. libsysfs = sysfsutils; systool = sysfsutils; @@ -7114,7 +7085,6 @@ let inherit (gnome) libglademm; }; - # In nixos, you can set systemd.package = pkgs.systemd_with_lvm2 to get # LVM2 working in systemd. systemd_with_lvm2 = pkgs.lib.overrideDerivation pkgs.systemd (p: { diff --git a/pkgs/top-level/release-python.nix b/pkgs/top-level/release-python.nix index ef7b1da92ab6..74778c57fe82 100644 --- a/pkgs/top-level/release-python.nix +++ b/pkgs/top-level/release-python.nix @@ -1082,8 +1082,6 @@ let acpi_call = { type = "job"; systems = ["x86_64-linux"]; schedulingPriority = 4; }; atheros = { type = "job"; systems = ["x86_64-linux"]; schedulingPriority = 4; }; ati_drivers_x11 = { type = "job"; systems = ["x86_64-linux"]; schedulingPriority = 4; }; - aufs = { type = "job"; systems = ["x86_64-linux"]; schedulingPriority = 4; }; - aufs_util = { type = "job"; systems = ["x86_64-linux"]; schedulingPriority = 4; }; bbswitch = { type = "job"; systems = ["x86_64-linux"]; schedulingPriority = 4; }; broadcom_sta = { type = "job"; systems = ["x86_64-linux"]; schedulingPriority = 4; }; cryptodev = { type = "job"; systems = ["x86_64-linux"]; schedulingPriority = 4; }; -- cgit 1.4.1 From ac2035287fbec30d92165fd3839d1bf71b8edd47 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Sun, 5 Jan 2014 06:55:47 -0500 Subject: Greatly reduce kernel closure size Based on access analysis with strace, I determined an essentially minimal required set of files from the kernel source that was needed to build all current kernel packages on 3.10, which ultimately resulted in keeping 30M of source. Generalizing from that minimal set, which required ad-hoc specifications of which headers outside of include/ and arch/*/include and which files in the scripts/ directory should be kept, to a policy of keeping all non-arch-specific headers that aren't part of the drivers/ directory and the entire scripts/ directory added an additional 17M, but there was nothing in the analysis that indicated that that ad-hoc specification was at all complete so I think the extra hit is worth the likely greater compatibility. For reference, we now keep: * All headers that are NOT in arch/${notTargetArch}/include or drivers/ * The scripts/ directory * Makefile * arch/${targetArch}/Makefile IMO the most likely cause of future problems are the headers in drivers/, but hopefully they won't actually be needed as they add 50M Ideally kernel packages would only use include and arch/${targetArch}/include, but alas this is observably not the case. master: * $out * size: 234M * references-closure: linux-headers, glibc, attr, acl, zlib, gcc, coreutils, perl, bash merge-kernel-builds: * $out * size: 152M * references-closure: none * $dev * size: 57M * references-closure: linux-headers, glibc, zlib, gcc So even with the non-minimal set we still beat out master. Keeping the drivers headers would make us only slightly bigger. Signed-off-by: Shea Levy --- pkgs/os-specific/linux/kernel/generic.nix | 10 ++++-- pkgs/os-specific/linux/kernel/manual-config.nix | 43 +++++++++++++++++++------ 2 files changed, 41 insertions(+), 12 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix index 5cb6745da122..42ec3de93691 100644 --- a/pkgs/os-specific/linux/kernel/generic.nix +++ b/pkgs/os-specific/linux/kernel/generic.nix @@ -70,10 +70,16 @@ let kernelConfig = kernelConfigFun configCross; - inherit (kernel.crossDrv) src patches prePatch preUnpack; + inherit (kernel.crossDrv) src patches preUnpack; }; - inherit (kernel) src patches prePatch preUnpack; + prePatch = kernel.prePatch + '' + # Patch kconfig to print "###" after every question so that + # generate-config.pl from the generic builder can answer them. + sed -e '/fflush(stdout);/i\printf("###");' -i scripts/kconfig/conf.c + ''; + + inherit (kernel) src patches preUnpack; buildPhase = '' cd $buildRoot diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix index 67e8f0655393..206f95661e8e 100644 --- a/pkgs/os-specific/linux/kernel/manual-config.nix +++ b/pkgs/os-specific/linux/kernel/manual-config.nix @@ -49,6 +49,7 @@ let commonMakeFlags = [ "O=$(buildRoot)" + "DEPMOD=${kmod}/bin/depmod" ]; drvAttrs = config_: platform: kernelPatches: configfile: @@ -94,13 +95,6 @@ let echo "stripping FHS paths in \`$mf'..." sed -i "$mf" -e 's|/usr/bin/||g ; s|/bin/||g ; s|/sbin/||g' done - - sed -i Makefile -e 's|= depmod|= ${kmod}/sbin/depmod|' - - # Patch kconfig to print "###" after every question so that - # generate-config.pl from the generic builder can answer them. - # This only affects oldaskconfig. - sed -e '/fflush(stdout);/i\printf("###");' -i scripts/kconfig/conf.c ''; configurePhase = '' @@ -142,15 +136,44 @@ let mv $buildRoot $dev/lib/modules/${modDirVersion}/build # !!! No documentation on how much of the source tree must be kept - # If/when kernel builds fail due to missing files, you can undelete - # them here + # If/when kernel builds fail due to missing files, you can add + # them here. Note that we may see packages requiring headers + # from drivers/ in the future; it adds 50M to keep all of its + # headers on 3.10 though. + + chmod +w -R ../source + arch=`cd $dev/lib/modules/${modDirVersion}/build/arch; ls` + + # Remove unusued arches + mv arch/$arch . + rm -fR arch + mkdir arch + mv $arch arch + + # Remove all driver-specific code (50M of which is headers) + rm -fR drivers + + # Keep all headers + find . -type f -name '*.h' -print0 | xargs -0 chmod -w + + # Keep root and arch-specific Makefiles + chmod -w Makefile + chmod -w arch/$arch/Makefile + + # Keep whole scripts dir + chmod -w -R scripts + + # Delete everything not kept + find . -type f -perm -u=w -print0 | xargs -0 rm + + # Delete empty directories find -empty -type d -delete '' else optionalString installsFirmware '' make firmware_install $makeFlags "''${makeFlagsArray[@]}" \ $installFlags "''${installFlagsArray[@]}" ''); - # !!! This leaves references to gcc and kmod in $dev + # !!! This leaves references to gcc in $dev # that we might be able to avoid postFixup = if isModular then '' if [ -z "$dontStrip" ]; then -- cgit 1.4.1