* Linux 2.6.26.2. Totally untested of course.

svn path=/nixpkgs/trunk/; revision=12534
This commit is contained in:
Eelco Dolstra 2008-08-07 14:57:10 +00:00
parent 6e8d8a1614
commit 9d0b7c4aa9
5 changed files with 8128 additions and 0 deletions

View File

@ -17,3 +17,10 @@ For each platform (i686, x86-64, uml):
won't work). If it is, investigate why (there's probably another won't work). If it is, investigate why (there's probably another
option that forces it to be on) and fix it. option that forces it to be on) and fix it.
- Copy .config over the new config file (e.g. config-2.6.21-i686-smp). - Copy .config over the new config file (e.g. config-2.6.21-i686-smp).
- To do `make menuconfig':
$ nix-env -i ncurses
$ export NIX_CFLAGS_LINK=-lncurses
$ make menuconfig ARCH=<arch>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,95 @@
{ stdenv, fetchurl, perl, mktemp, module_init_tools
# A list of patches to apply to the kernel. Each element of this list
# should be an attribute set {name, patch} where `name' is a
# symbolic name and `patch' is the actual patch. The patch may
# optionally be compressed with gzip or bzip2.
, kernelPatches ? []
, # Whether to build a User-Mode Linux kernel.
userModeLinux ? false
, # Allows you to set your own kernel version suffix (e.g.,
# "-my-kernel").
localVersion ? ""
, # Your own kernel configuration file, if you don't want to use the
# default.
kernelConfig ? null
, # A list of additional statements to be appended to the
# configuration file.
extraConfig ? []
}:
assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux";
let
lib = stdenv.lib;
version = "2.6.26.2";
baseFeatures = {
iwlwifi = true;
};
in
stdenv.mkDerivation {
name = if userModeLinux then "user-mode-linux-${version}" else "linux-${version}";
passthru = {
inherit version;
# Combine the `features' attribute sets of all the kernel patches.
features = lib.fold (x: y: (if x ? features then x.features else {}) // y) baseFeatures kernelPatches;
};
builder = ./builder.sh;
src = fetchurl {
url = "mirror://kernel/linux/kernel/v2.6/linux-${version}.tar.bz2";
sha256 = "0xrkv6wk5l4qhza35a76cd00a7g9xv3ymw7znwskig2kmqswnp1m";
};
patches = map (p: p.patch) kernelPatches;
extraConfig =
let addNewlines = map (s: "\n" + s + "\n");
configFromPatches =
map (p: if p ? extraConfig then p.extraConfig else "") kernelPatches;
in lib.concatStrings (addNewlines (configFromPatches ++ extraConfig));
config =
if kernelConfig != null then kernelConfig else
if userModeLinux then ./config-2.6.25-uml else
if stdenv.system == "i686-linux" then ./config-2.6.25-i686-smp else
if stdenv.system == "x86_64-linux" then ./config-2.6.25-x86_64-smp else
abort "No kernel configuration for your platform!";
buildInputs = [perl mktemp];
arch =
if userModeLinux then "um" else
if stdenv.system == "i686-linux" then "i386" else
if stdenv.system == "x86_64-linux" then "x86_64" else
abort "Platform ${stdenv.system} is not supported.";
makeFlags = if userModeLinux then "ARCH=um SHELL=bash" else "";
inherit module_init_tools;
allowLocalVersion = false; # don't allow patches to set a suffix
inherit localVersion; # but do allow the user to set one.
meta = {
description =
(if userModeLinux then
"User-Mode Linux"
else
"The Linux kernel") +
(if kernelPatches == [] then "" else
" (with patches: "
+ lib.concatStrings (lib.intersperse ", " (map (x: x.name) kernelPatches))
+ ")");
};
}

View File

@ -5134,6 +5134,27 @@ let pkgs = rec {
[(getConfig ["kernel" "addConfig"] "")]; [(getConfig ["kernel" "addConfig"] "")];
}; };
kernel_2_6_26 = import ../os-specific/linux/kernel/linux-2.6.26.nix {
inherit fetchurl stdenv perl mktemp module_init_tools;
kernelPatches = [
{ name = "fbcondecor-0.9.4-2.6.25-rc6";
patch = fetchurl {
url = http://dev.gentoo.org/~spock/projects/fbcondecor/archive/fbcondecor-0.9.4-2.6.25-rc6.patch;
sha256 = "1wm94n7f0qyb8xvafip15r158z5pzw7zb7q8hrgddb092c6ibmq8";
};
extraConfig = "CONFIG_FB_CON_DECOR=y";
features = { fbConDecor = true; };
}
{ name = "sec_perm-2.6.24";
patch = ../os-specific/linux/kernel/sec_perm-2.6.24.patch;
features = { secPermPatch = true; };
}
];
extraConfig =
lib.optional (getConfig ["kernel" "no_irqbalance"] false) "# CONFIG_IRQBALANCE is not set" ++
[(getConfig ["kernel" "addConfig"] "")];
};
/* Kernel modules are inherently tied to a specific kernel. So /* Kernel modules are inherently tied to a specific kernel. So
rather than provide specific instances of those packages for a rather than provide specific instances of those packages for a
specific kernel, we have a function that builds those packages specific kernel, we have a function that builds those packages