* klibc: install statically linked binaries as well.

* klibc: build against the regular kernel headers instead of depending
  on a kernel build.  This way we don't have to rebuild klibc every
  time the kernel changes.
* splashutils 1.3: compile properly with a klibc that uses unpatched
  kernel headers.

svn path=/nixpkgs/trunk/; revision=13900
This commit is contained in:
Eelco Dolstra 2009-01-29 15:44:37 +00:00
parent 858cf3cdcb
commit b48cc44ebf
4 changed files with 103 additions and 52 deletions

View file

@ -1,30 +1,34 @@
{stdenv, fetchurl, perl, bison, mktemp, kernel
, version ? "1.5"
, sha256 ? "1izhf8kscjymsvsvhcqw9awnmp94vwv70zdj09srg9bkpjj0n017"
, subdir ? ""
, addPreBuild ? ""
}:
{stdenv, fetchurl, perl, bison, mktemp, kernelHeaders}:
assert stdenv.isLinux;
let version = "1.5"; in
stdenv.mkDerivation {
name = "klibc-${version}";
#builder = ./builder.sh;
src = fetchurl {
url = "mirror://kernel/linux/libs/klibc/klibc-${version}.tar.bz2";
sha256 = "1izhf8kscjymsvsvhcqw9awnmp94vwv70zdj09srg9bkpjj0n017";
};
makeFlags = ["V=1" "prefix=$out" "SHLIBDIR=$out/lib"];
preBuild = ''
makeFlags=$(eval "echo $makeFlags")
mkdir -p linux/include
cp -prd $kernel/lib/modules/*/build/include/* linux/include/
mkdir linux
cp -prsd ${kernelHeaders}/include linux/
chmod -R u+w linux/include/
'' + addPreBuild;
src = fetchurl {
url = "mirror://kernel/linux/libs/klibc/${subdir}klibc-${version}.tar.bz2";
inherit sha256;
# url = mirror://kernel/linux/libs/klibc/Testing/klibc-1.5.14.tar.bz2;
# sha256 = "1cmrqpgamnv2ns7dlxjm61zc88dxm4ff0aya413ij1lmhp2h2sfc";
};
inherit kernel;
''; # */
# Install static binaries as well.
postInstall = ''
dir=$out/lib/klibc/bin.static
mkdir $dir
cp $(find $(find . -name static) -type f ! -name "*.g" -a ! -name ".*") $dir/
cp usr/dash/sh $dir/
'';
buildInputs = [perl bison mktemp];
#patches = [./install.patch];
}

View file

@ -2,10 +2,12 @@
stdenv.mkDerivation {
name = "splashutils-1.3";
src = fetchurl {
url = http://dev.gentoo.org/~spock/projects/splashutils/archive/splashutils-1.3.tar.bz2;
md5 = "c7c92b98e34b860511aa57bd29d62f76";
};
patches = [
./purity.patch
./no-fbsplash.patch

View file

@ -1,21 +1,67 @@
diff --git a/splash.h b/splash.h
index 5dccfe0..eae2939 100644
--- a/splash.h
+++ b/splash.h
@@ -30,10 +30,14 @@ #endif
*/
#ifdef TARGET_KERNEL
#include <linux/fb.h>
- #include <linux/console_splash.h>
+ #ifdef CONFIG_FBSPLASH
+ #include <linux/console_splash.h>
+ #endif
#else
#include <fb.h>
- #include <console_splash.h>
+ #ifdef CONFIG_FBSPLASH
+ #include <console_splash.h>
+ #endif
#endif
/*
diff -rc splashutils-1.3-orig/splash.h splashutils-1.3/splash.h
*** splashutils-1.3-orig/splash.h 2006-07-15 00:02:23.000000000 +0200
--- splashutils-1.3/splash.h 2009-01-29 16:41:00.000000000 +0100
***************
*** 21,40 ****
*/
#ifdef TARGET_KERNEL
#include <linux/fb.h>
- #include <linux/console_splash.h>
#else
#include <fb.h>
- #include <console_splash.h>
#endif
/*
* Necessary to avoid compilation errors when fbsplash support is
* disabled.
*/
- #if !defined(CONFIG_FBSPLASH)
#define FB_SPLASH_IO_ORIG_USER 0
#define FB_SPLASH_IO_ORIG_KERNEL 1
! #endif
/*
* Adjustable settings
--- 21,60 ----
*/
#ifdef TARGET_KERNEL
#include <linux/fb.h>
#else
#include <fb.h>
#endif
/*
* Necessary to avoid compilation errors when fbsplash support is
* disabled.
*/
#define FB_SPLASH_IO_ORIG_USER 0
#define FB_SPLASH_IO_ORIG_KERNEL 1
!
! #define FBIOSPLASH_SETCFG _IOWR('F', 0x19, struct fb_splash_iowrapper)
! #define FBIOSPLASH_GETCFG _IOR('F', 0x1A, struct fb_splash_iowrapper)
! #define FBIOSPLASH_SETSTATE _IOWR('F', 0x1B, struct fb_splash_iowrapper)
! #define FBIOSPLASH_GETSTATE _IOR('F', 0x1C, struct fb_splash_iowrapper)
! #define FBIOSPLASH_SETPIC _IOWR('F', 0x1D, struct fb_splash_iowrapper)
!
! #define FB_SPLASH_THEME_LEN 128 /* Maximum lenght of a theme name */
!
! struct fb_splash_iowrapper
! {
! unsigned short vc; /* Virtual console */
! unsigned char origin; /* Point of origin of the request */
! void *data;
! };
!
! /* A structure used by the framebuffer splash code (drivers/video/fbsplash.c) */
! struct vc_splash {
! __u8 bg_color; /* The color that is to be treated as transparent */
! __u8 state; /* Current splash state: 0 = off, 1 = on */
! __u16 tx, ty; /* Top left corner coordinates of the text field */
! __u16 twidth, theight; /* Width and height of the text field */
! char* theme;
! };
/*
* Adjustable settings
Only in splashutils-1.3/: splash.h~

View file

@ -6213,7 +6213,7 @@ let
"# CONFIG_PROC_MM_DUMPABLE is not set\n";
}
{ name = "fbsplash-0.9.2-r5-2.6.21";
patch = fetchurl {
patch = fetchurl { # !!! missing!
url = http://dev.gentoo.org/~dsd/genpatches/trunk/2.6.21/4200_fbsplash-0.9.2-r5.patch;
sha256 = "00s8074fzsly2zpir885zqkvq267qyzg6vhsn7n1z2v1z78avxd8";
};
@ -6227,7 +6227,7 @@ let
kernelPatches = [
{ name = "fbsplash-0.9.2-r5-2.6.21";
patch = fetchurl {
url = http://dev.gentoo.org/~dsd/genpatches/trunk/2.6.22/4200_fbsplash-0.9.2-r5.patch;
url = http://nixos.org/tarballs/4200_fbsplash-0.9.2-r5.patch;
sha256 = "0822wwlf2dqsap5qslnnp0yl1nbvvvb76l73w2dd8zsyn0bqg3px";
};
extraConfig = "CONFIG_FB_SPLASH=y";
@ -6261,7 +6261,7 @@ let
*/
{ name = "fbsplash-0.9.2-r5-2.6.21";
patch = fetchurl {
url = http://dev.gentoo.org/~dsd/genpatches/trunk/2.6.22/4200_fbsplash-0.9.2-r5.patch;
url = http://nixos.org/tarballs/4200_fbsplash-0.9.2-r5.patch;
sha256 = "0822wwlf2dqsap5qslnnp0yl1nbvvvb76l73w2dd8zsyn0bqg3px";
};
extraConfig = "CONFIG_FB_SPLASH=y";
@ -6415,16 +6415,6 @@ let
inherit kernel;
};
# Actually, klibc builds fine with the static kernelHeaders, but
# splashutils expects a klibc with patched headers...
klibc = composedArgsAndFun (import ../os-specific/linux/klibc) {
inherit fetchurl stdenv perl bison mktemp kernel;
};
klibcShrunk = composedArgsAndFun (import ../os-specific/linux/klibc/shrunk.nix) {
inherit stdenv klibc;
};
splashutils =
if kernel.features ? fbSplash then splashutils_13 else
if kernel.features ? fbConDecor && system != "x86_64-linux" then splashutils_15 else
@ -6530,6 +6520,15 @@ let
inherit fetchurl stdenv bison flex perl;
};
klibc = composedArgsAndFun (import ../os-specific/linux/klibc) {
inherit fetchurl stdenv perl bison mktemp;
kernelHeaders = glibc.kernelHeaders;
};
klibcShrunk = composedArgsAndFun (import ../os-specific/linux/klibc/shrunk.nix) {
inherit stdenv klibc;
};
kvm = kvm76;
kvm57 = import ../os-specific/linux/kvm/57.nix {