From c3e80cbc9f3fb072ac917124d99372305a9e70c7 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 14 Dec 2009 17:22:38 +0000 Subject: [PATCH] * 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 --- pkgs/os-specific/linux/kernel/builder.sh | 2 +- pkgs/os-specific/linux/kernel/generate-config.pl | 4 +++- pkgs/os-specific/linux/kernel/generic.nix | 3 +++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/builder.sh b/pkgs/os-specific/linux/kernel/builder.sh index 07eb4edded4..f683498417d 100644 --- a/pkgs/os-specific/linux/kernel/builder.sh +++ b/pkgs/os-specific/linux/kernel/builder.sh @@ -1,7 +1,7 @@ source $stdenv/setup -makeFlags="ARCH=$arch" +makeFlags="ARCH=$arch SHELL=/bin/sh" configurePhase() { diff --git a/pkgs/os-specific/linux/kernel/generate-config.pl b/pkgs/os-specific/linux/kernel/generate-config.pl index 56320ce882f..e8349db8ec8 100644 --- a/pkgs/os-specific/linux/kernel/generate-config.pl +++ b/pkgs/os-specific/linux/kernel/generate-config.pl @@ -128,7 +128,9 @@ while () { close CONFIG; foreach my $name (sort (keys %answers)) { - my $f = $requiredAnswers{$name} ? sub { die @_; } : sub { warn @_; }; + my $f = $requiredAnswers{$name} && $ENV{'ignoreConfigErrors'} ne "1" + ? sub { die @_; } : sub { warn @_; }; + my $f = sub { warn @_; }; &$f("unused option: $name\n") unless defined $config{$name}; &$f("option not set correctly: $name\n") if $config{$name} && $config{$name} ne $answers{$name}; diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix index 85fd91ca1bb..b4fca451142 100644 --- a/pkgs/os-specific/linux/kernel/generic.nix +++ b/pkgs/os-specific/linux/kernel/generic.nix @@ -66,6 +66,9 @@ stdenv.mkDerivation { map ({extraConfig ? "", ...}: extraConfig) kernelPatches; in lib.concatStringsSep "\n" ([config] ++ configFromPatches); + # For UML, just ignore all options that don't apply (I'm lazy). + ignoreConfigErrors = userModeLinux; + buildInputs = [ perl mktemp ]; arch =