Commit graph

62 commits

Author SHA1 Message Date
Ludovic Stordeur 8268a39690 Improved the Linux kernel building framework
Moved the hardcoded postBuild hook from the builder to generic.nix:

Some old kernel (such as 2.6.15) did not yet support the unifdef target.
As a result, compiling them with the current Linux builder leads to a
failure.
Fixed by moving this hook as argument of the top-level function of
generic.nix. This allows some kernel nix codes to overrides its default
value.

svn path=/nixpkgs/trunk/; revision=27708
2011-07-11 13:59:37 +00:00
Lluís Batlle i Rossell 1357904982 Committing the aufs2.1 patch by Shea Levy. His comments:
* My motivation for this patch is that kernels < 2.6.36 contain an
     e1000e that does not support the ethernet card that is part of the
     chipset for the second-generation Core-i Intel CPUs, so in order
     to have a more useful livecd I needed to get aufs working with a
     newer kernel, and 2.6.37 is the latest kernel with an official
     aufs release.
   * All sources are downloaded with fetchgit. This is because the aufs
     upstream doesn't provide release tarballs, they just add a tag to
     their git tree for an official release.
   * The make target for the aufs2.1 headers uses a Makefile in the
     kernel build directory that requires that unifdef be in the
     scripts/ subdirectory of the build directory. The way I've dealt
     with this here is by adding "make $makeFlags -C scripts unifdef"
     to the postBuild in the kernel builder. Since the builder is used
     by all kernel versions, this will require rebuilding every kernel
     and kernel-dependent package if the patch is accepted, so one
     alternative I thought of would be to create a fake kernel build
     directory where everything is symlinked to the real build
     directory except scripts/, which is first copied and then make
     unifdef is run before building aufs2.1. If that more complicated
     solution is preferred, or if anyone has ideas for another one, I
     can do that and submit a new patch.
   * The patch was tested by building a livecd ISO that uses it, then
     running the ISO from within virtualbox and installing aufs2.1-util
     from within the livecd environment.
   * The livecd was built using installation-cd-minimal.nix, with two
     changes to the Nixos tree:
        1. boot.kernelPackages = pkgs.linuxPackages_2_6_37 was added to
           profiles/minimal.nix
        2. config.boot.kernelPackages.aufs2 was changed to
           config.boot.kernelPackages.aufs2_1 in iso-image.nix
     I would have preferred to keep all changes within
     profiles/minimal.nix, but I couldn't figure out how to override
     iso-image.nix's definition of boot.extraModulePackages. Livecds
     that use an older kernel can't be built with this iso-image.nix,
     since we don't have aufs2.1 for them (just aufs2). If someone can
     point me to how I can override things set in iso-image.nix, I'd
     appreciate it.

make -C scripts unifdef compiles the unifdef application in the
scripts/ directory, and when Nix copies over the build tree to
$out/lib/modules/$version/build for kernel modules to reference, it
copies over all of scripts/ except the .o files. I can't speak for
other kernel versions, but at the least for 2.6.37.1 unifdef is not
built by default. If you look at the Makefile in scripts, unifdef is
listed  under a comment saying that the following programs are only
built on-demand.

svn path=/nixpkgs/trunk/; revision=26548
2011-03-27 15:18:39 +00:00
Lluís Batlle i Rossell f7d0fcdaac Making the kernel builder accept the 'vmlinux' kerneltarget.
svn path=/nixpkgs/branches/stdenv-updates/; revision=23274
2010-08-20 13:30:59 +00:00
Lluís Batlle i Rossell eddc9d6ab5 Fixing the nanonote kernel expressions so they work.
In fact only 2.6.34 boots fine, while 2.6.35 needs a fetchsvn new revision,
waiting for an upstream patch.

svn path=/nixpkgs/branches/stdenv-updates/; revision=23039
2010-08-08 18:46:57 +00:00
Ludovic Courtès 3bda68d779 Linux: Attempt to copy more debugging info to $out.
svn path=/nixpkgs/trunk/; revision=21624
2010-05-06 11:52:49 +00:00
Ludovic Courtès 074f450ab3 Linux: Patch incorrect absolute paths in makefiles.
svn path=/nixpkgs/trunk/; revision=21623
2010-05-06 11:52:43 +00:00
Ludovic Courtès 96f2d289bc Don't strip Linux modules in the SystemTap variant.
svn path=/nixpkgs/trunk/; revision=21619
2010-05-05 19:48:52 +00:00
Lluís Batlle i Rossell 9bcb6277f3 Changing linux kernel references from vmlinuz to bzImage.
This way we get a simpler kernel build script.

svn path=/nixpkgs/trunk/; revision=20094
2010-02-18 11:34:48 +00:00
Lluís Batlle i Rossell 5fc64e5f9c Again, trying to fix the kernel build.
It seems that there is no make target named 'vmlinuz' that makes the file 'vmlinuz'.
So we need different variables for the make target and the kernel file. Unless we
some day stop using the file 'vmlinuz' in pc, and use bzImage.

svn path=/nixpkgs/trunk/; revision=20092
2010-02-18 10:25:33 +00:00
Lluís Batlle i Rossell ee72c53378 Trying to fix the non-cross kernel build.
svn path=/nixpkgs/trunk/; revision=20090
2010-02-18 08:02:16 +00:00
Lluís Batlle i Rossell 4e51d7d296 Fixing the linux kernel cross builder (lacking an ARCH again in a make call)
svn path=/nixpkgs/trunk/; revision=20081
2010-02-17 22:36:59 +00:00
Lluís Batlle i Rossell 70cb7050f5 Trying to make the linux kernels also cross-build.
svn path=/nixpkgs/trunk/; revision=20080
2010-02-17 22:20:56 +00:00
Lluís Batlle i Rossell c86da889cc Made the kernel generate-config "build as modules as you can" an option.
Sepcifically, a nixpkgs "platform" option. So, for PC all remained the same
as it was.

svn path=/nixpkgs/trunk/; revision=20059
2010-02-16 19:27:51 +00:00
Eelco Dolstra e04beb262e * Strangely, running "make defconfig" before the generator causes
"make config" to print an additional question that the script
  doesn't know how to answer ("Audio Excel DSP 16 [N/y] (NEW) ###").
  Just ignore it.

svn path=/nixpkgs/branches/stdenv-updates/; revision=19713
2010-01-27 15:43:27 +00:00
Lluís Batlle i Rossell 9ef11e4c4d Made the linux kernel expressions support 'platform' again (thinking on reusing
most of the kernel expressions for the sheevaplug).
I still have not added anything in the kernels about cross compilation.
I moved the platform definitions out of all-packages.
I have not written good platform definitions for the sheevaplug - only for the
PC.
Only the linux-2.6.32 expression uses the platforms kernelConfig.
The linux-2.6.31 was broken, and I left it broken.


svn path=/nixpkgs/branches/stdenv-updates/; revision=19046
2009-12-19 12:12:24 +00:00
Lluís Batlle i Rossell 5bae851b1e Merging from trunk. I had to give away some structure to build the native
sheevaplug kernel, so the kernel does not build in the sheevaplug right now.
I will try to fix that in next commits.


svn path=/nixpkgs/branches/stdenv-updates/; revision=19045
2009-12-19 11:14:16 +00:00
Eelco Dolstra c3e80cbc9f * Get User-Mode Linux to build with a newer kernel. Yes, SHELL really
has to be "/bin/sh" - other values such as "sh" or "bash" or "$(type
  -tP sh)" cause a build error:

  LD      .tmp_vmlinux1
  /nix/store/1yv8i1m76cvwk5w5i5wrk4gj5zyfj6vh-binutils-2.19.1/bin/ld:arch/um/kernel/vmlinux.lds:1: ignoring invalid character `#' in expression
  /nix/store/1yv8i1m76cvwk5w5i5wrk4gj5zyfj6vh-binutils-2.19.1/bin/ld:arch/um/kernel/vmlinux.lds:1: syntax error
  collect2: ld returned 1 exit status

  This is caused by Bash 4.0
  (http://bugzilla.kernel.org/show_bug.cgi?id=13343).

svn path=/nixpkgs/branches/kernel-config/; revision=18941
2009-12-14 17:22:38 +00:00
Eelco Dolstra 03b4efe9c8 * Use the kernel config generator for Linux 2.6.27.
* Move kernel patches out of all-packages.nix to
  os-specific/linux/kernel/patches.nix.
* Make the kernel config available under $out/config (it's also in
  $out/lib/modules/$version/build/.config, but that's kind of hard to
  find).

svn path=/nixpkgs/branches/kernel-config/; revision=18937
2009-12-14 15:28:55 +00:00
Eelco Dolstra 15c6ede144 * Allow options to be ignored if they don't exist by marking them with
a "?".

svn path=/nixpkgs/branches/kernel-config/; revision=18931
2009-12-14 09:27:15 +00:00
Eelco Dolstra 71ed6194e1 * Get fbcondecor to work.
* Barf on ignored options.

svn path=/nixpkgs/branches/kernel-config/; revision=18914
2009-12-12 18:55:17 +00:00
Eelco Dolstra 03e45e0cb4 * Added a script to generate the kernel configuration.
`generate-config.pl' runs `make config' to generate a Linux kernel
  configuration file.  For each question (i.e. kernel configuration
  option), unless an override is provided, it answers "m" if possible,
  and otherwise uses the default answer (as determined by the default
  config for the architecture).  This is safer than allmodconfig,
  which answers "y" everywhere it can't answer "m" and thus ends up
  enabling a lot of experimental or debug options.  (For this reason,
  a configuration generated by allmodconfig must be carefully checked
  with every new release to ensure that nothing dangerous is enabled.
  The default config should be safer wrt new kernel releases.)

  Overrides are specified in the `config' argument to generic.nix,
  which is a string that contains lines such as `EXT2_FS_POSIX_ACL y'.
  The script warns about ignored options, and aborts if `make config'
  selects an answer inconsistent with the one in `config'.  This
  allows us to be sure that `make config' doesn't silently override
  our configuration values (e.g., depending on other options, it will
  set FB_TILEBLITTING to "y" even if we want it to be "n").

svn path=/nixpkgs/branches/kernel-config/; revision=18910
2009-12-12 13:51:07 +00:00
Lluís Batlle i Rossell 7769ad11bd Updating the logic to put the resulting kernel image into its store path.
svn path=/nixpkgs/branches/stdenv-updates/; revision=18289
2009-11-08 17:19:46 +00:00
Lluís Batlle i Rossell 4b27d28701 Porting changes from stdenv-updates into this branch.
This comes from:
svn diff  ^/nixpkgs/trunk/@18255 ^/nixpkgs/branches/stdenv-updates/ > diff
patch -p0 < diff
and then adding into svn all files new from the patch.

trunk@18255 comes from the last time I updated stdenv-updates from trunk.


svn path=/nixpkgs/stdenv-updates2/; revision=18272
2009-11-08 00:32:12 +00:00
Eelco Dolstra e559192847 * Fix module installation.
svn path=/nixpkgs/trunk/; revision=15887
2009-06-07 21:49:14 +00:00
Michael Raskin 65a87fefd5 Fix kernel builder - fails, depending on FS behavior
svn path=/nixpkgs/trunk/; revision=15437
2009-05-04 10:51:51 +00:00
Michael Raskin 10b1740dab Copy all the headers already - problems with module building seem to be worse than hdd usage
svn path=/nixpkgs/trunk/; revision=15423
2009-05-02 14:18:22 +00:00
Eelco Dolstra 7689a348c4 * Got rid of a lot of "postInstall=postInstall" and similar lines in
builders.  These are redundant now.
* Inlined some trivial builders.
* Removed a few explicit setup-hook creations.  This is done
  automatically now if setupHook is set.
* Deleted the initscripts package.  NixOS doesn't use it anymore.

svn path=/nixpkgs/branches/stdenv-updates/; revision=15276
2009-04-23 13:31:10 +00:00
Michael Raskin 9379c34b11 Renable preConfigure for kernel builder. Actually needed by custom kernel
Linux kernel 2.6.29 (release) has a slightly changed Makefile. They now add the prefix for depmod. So in NixOS "make modules_install" fails on depmod. To fix it, our old '/-b \$(INSTALL_MOD_PATH) -r/d' should be replaced with '/-b \$(INSTALL_MOD_PATH)/d'.

svn path=/nixpkgs/trunk/; revision=14811
2009-03-31 20:10:05 +00:00
Michael Raskin 958a01ffa6 These changes to kernel builder are obviously needed. kQemu is built, but causes kernel oops
svn path=/nixpkgs/trunk/; revision=14213
2009-02-24 05:10:36 +00:00
Lluís Batlle i Rossell f9b79d752a Fixing in general the module construction (there were wrong paths in modules/build). Now kqemu works well for me, for instance. I will take the commit back, if it annoys anyone.
svn path=/nixpkgs/trunk/; revision=14192
2009-02-22 20:49:35 +00:00
Eelco Dolstra 4eedf7dae8 * Install the arch-specific headers for Linux <= 2.6.27 properly
again.

svn path=/nixpkgs/trunk/; revision=13783
2009-01-16 10:28:18 +00:00
Eelco Dolstra 7df6cdf6da * Doh.
svn path=/nixpkgs/trunk/; revision=13780
2009-01-15 15:59:59 +00:00
Eelco Dolstra 739ef5e82a * Various hacks needed to get the NVIDIA driver to build on
Linux 2.6.28.  In particular the arch-specific headers
  are in a different place now.  (I'd like to do "make
  headers_install", but it doesn't install all the headers
  that are needed to build external kernel modules.  What
  a mess.)
* Add Linux 2.6.28 to the channel.

svn path=/nixpkgs/trunk/; revision=13775
2009-01-15 15:00:30 +00:00
Eelco Dolstra e466241a8d * On Linux 2.6.25, the arch files for i386 and x86_64 are unified in
arch/x86, so copy them from the right location.

svn path=/nixpkgs/trunk/; revision=11928
2008-05-29 13:21:47 +00:00
Eelco Dolstra 8d1d839579 * Fix for building Linux 2.6.25.
svn path=/nixpkgs/trunk/; revision=11712
2008-04-25 10:22:09 +00:00
Eelco Dolstra dbc1928af6 * Kernel configuration for Linux 2.6.23.
* More compact way to override kernel configuration options, e.g.
  extraFlags = ["CONFIG_NO_HZ=y" "# CONFIG_IRQBALANCE is not set"];

svn path=/nixpkgs/trunk/; revision=9562
2007-10-31 14:39:43 +00:00
Michael Raskin dd5daab9d1 Options for kernel and checker for configuration.nix
svn path=/nixpkgs/trunk/; revision=9371
2007-09-25 19:03:07 +00:00
Eelco Dolstra 311dc72bf1 * Suppress localversion from kernel patches, allow the user to set
one.
* Allow the entire kernel configuration to be overridden through a
  function argument.

svn path=/nixpkgs/trunk/; revision=8699
2007-05-15 12:53:03 +00:00
Eelco Dolstra a984882e0c * Updated User-Mode Linux. It's now unified with the regular (NixOS)
kernel build - just call the function with userModeLinux = true to
  get a UML binary.

svn path=/nixpkgs/trunk/; revision=8423
2007-03-27 11:11:58 +00:00
Eelco Dolstra 2df33633a6 * Linux 2.6.20.2.
svn path=/nixpkgs/trunk/; revision=8286
2007-03-13 17:34:19 +00:00
Eelco Dolstra c8ceb3b284 * Grmbl.
svn path=/nixpkgs/trunk/; revision=7883
2007-02-08 15:32:14 +00:00
Eelco Dolstra 537b3ec57e * Don't use make install.
svn path=/nixpkgs/trunk/; revision=7880
2007-02-08 14:28:49 +00:00
Eelco Dolstra e8de94e114 * Kernel patches should declare their .config options so that we don't
have to keep them in config-blahblah.

svn path=/nixpkgs/trunk/; revision=7747
2007-01-22 15:18:30 +00:00
Eelco Dolstra 4c5f454f54 * Another attempt.
svn path=/nixpkgs/trunk/; revision=7526
2007-01-01 14:25:21 +00:00
Eelco Dolstra b19d591a7e * Another attempt at fixing NIXPKGS-37.
svn path=/nixpkgs/trunk/; revision=7525
2007-01-01 14:17:06 +00:00
Eelco Dolstra 8feb1d109b * Better fix for NIXPKGS-37: don't let check-lxdialog.sh look in
/usr.

svn path=/nixpkgs/trunk/; revision=7524
2007-01-01 13:42:23 +00:00
Eelco Dolstra e9c1e32a0f * Work around an ncurses impurity.
svn path=/nixpkgs/trunk/; revision=7523
2007-01-01 11:45:48 +00:00
Eelco Dolstra 039b141471 * Generate a modules.dep containing correct paths.
svn path=/nixpkgs/trunk/; revision=6935
2006-11-03 08:32:23 +00:00
Eelco Dolstra b99122d759 * Set MODULE_DIR.
svn path=/nixpkgs/trunk/; revision=6933
2006-11-03 00:34:48 +00:00
Eelco Dolstra 6225e46baf * Use a pure depmod.
svn path=/nixpkgs/trunk/; revision=6916
2006-10-31 16:03:19 +00:00