* Stdenv for Linux, i.e., with a Nix-built glibc.

svn path=/nixpkgs/trunk/; revision=461
This commit is contained in:
Eelco Dolstra 2003-11-02 22:25:26 +00:00
parent 3545617046
commit 549a0a807f
14 changed files with 237 additions and 14 deletions

View File

@ -0,0 +1,26 @@
#! /bin/sh
# glibc cannot have itself in its rpath.
export NIX_NO_SELF_RPATH=1
. $stdenv/setup || exit 1
tar xvfj $glibcSrc || exit 1
(cd glibc-* && tar xvfj $linuxthreadsSrc) || exit 1
(cd glibc-* && patch -p1 < $vaargsPatch) || exit 1
mkdir build || exit 1
cd build || exit 1
LDFLAGS=-Wl,-S ../glibc-*/configure --prefix=$out --enable-add-ons --disable-profile || exit 1
make || exit 1
make install || exit 1
make localedata/install-locales || exit 1
strip -S $out/lib/*.a $out/lib/*.so $out/lib/gconv/*.so
strip -s $out/bin/* $out/sbin/* $out/libexec/*
ln -sf /etc/ld.so.cache $out/etc/ld.so.cache || exit 1
(cd $out/include && ln -s $kernelHeaders/include/* .) || exit 1
exit 0

View File

@ -0,0 +1,20 @@
{stdenv, fetchurl, kernelHeaders}: derivation
{ name = "glibc-2.3.2"
, system = stdenv.system
, builder = ./builder.sh
, glibcSrc = fetchurl
{ url = ftp://ftp.nl.net/pub/gnu/glibc/glibc-2.3.2.tar.bz2
, md5 = "ede969aad568f48083e413384f20753c"
}
, linuxthreadsSrc = fetchurl
{ url = ftp://ftp.nl.net/pub/gnu/glibc/glibc-linuxthreads-2.3.2.tar.bz2
, md5 = "894b8969cfbdf787c73e139782167607"
}
# This is a patch to make glibc compile under GCC 3.3. Presumably
# later releases of glibc won't need this.
, vaargsPatch = ./glibc-2.3.2-sscanf-1.patch
, stdenv = stdenv
, kernelHeaders = kernelHeaders
}

View File

@ -0,0 +1,68 @@
Submitted By: David Shust (www.shustring.com)
Date: 2003-08-15
Initial Package Version: 2.3.2
Origin: glibc CVS changes performed by Roland McGrath
Description: patches stdio-common/sscanf.c, libio/{swprintf.c, swscanf.c}
diff -Naur glibc-2.3.2/libio/swprintf.c glibc-2.3.2-new/libio/swprintf.c
--- glibc-2.3.2/libio/swprintf.c 2001-07-07 19:21:03.000000000 +0000
+++ glibc-2.3.2-new/libio/swprintf.c 2003-08-15 19:36:42.000000000 +0000
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991,1995,1997,1998,1999,2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1995,1997,1998,1999,2000,2003
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -22,10 +23,7 @@
/* Write formatted output into S, according to the format string FORMAT. */
/* VARARGS3 */
int
-swprintf (s, n, format)
- wchar_t *s;
- size_t n;
- const wchar_t *format;
+swprintf (wchar_t *s, size_t n, const wchar_t *format, ...)
{
va_list arg;
int done;
diff -Naur glibc-2.3.2/libio/swscanf.c glibc-2.3.2-new/libio/swscanf.c
--- glibc-2.3.2/libio/swscanf.c 2001-07-07 19:21:03.000000000 +0000
+++ glibc-2.3.2-new/libio/swscanf.c 2003-08-15 19:36:42.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996, 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1995,1996,1998,1999,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -22,9 +22,7 @@
/* Read formatted input from S, according to the format string FORMAT. */
/* VARARGS2 */
int
-swscanf (s, format)
- const wchar_t *s;
- const wchar_t *format;
+swscanf (const wchar_t *s, const wchar_t *format, ...)
{
va_list arg;
int done;
diff -Naur glibc-2.3.2/stdio-common/sscanf.c glibc-2.3.2-new/stdio-common/sscanf.c
--- glibc-2.3.2/stdio-common/sscanf.c 2002-08-10 18:09:08.000000000 +0000
+++ glibc-2.3.2-new/stdio-common/sscanf.c 2003-08-15 19:36:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,95,96,98,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1995,1996,1998,2002,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -27,9 +27,7 @@
/* Read formatted input from S, according to the format string FORMAT. */
/* VARARGS2 */
int
-sscanf (s, format)
- const char *s;
- const char *format;
+sscanf (const char *s, const char *format, ...)
{
va_list arg;
int done;

View File

@ -0,0 +1,12 @@
#! /bin/sh
. $stdenv/setup || exit 1
tar xvfj $src || exit 1
cd linux-* || exit 1
make include/linux/version.h || exit 1
mkdir $out || exit 1
mkdir $out/include || exit 1
cp -prvd include/linux include/asm-i386 $out/include || exit 1
cd $out/include || exit 1
ln -s asm-i386 asm || exit 1

View File

@ -0,0 +1,10 @@
{stdenv, fetchurl}: derivation
{ name = "linux-headers-2.4.22-i386"
, system = stdenv.system
, builder = ./builder.sh
, src = fetchurl
{ url = ftp://ftp.nl.kernel.org/pub/linux/kernel/v2.4/linux-2.4.22.tar.bz2
, md5 = "75dc85149b06ac9432106b8941eb9f7b"
}
, stdenv = stdenv
}

View File

@ -24,10 +24,10 @@ extra=($NIX_CFLAGS_COMPILE)
if test "$justcompile" != "1"; then
extra=(${extra[@]} $NIX_CFLAGS_LINK)
for i in $NIX_LDFLAGS; do
extra=(${extra[@]} "-Wl,$i")
extra=(${extra[@]} "-Wl,$i")
done
if test "$NIX_STRIP_DEBUG" == "1"; then
extra=(${extra[@]} -g0 -Wl,-s)
extra=(${extra[@]} -g0 -Wl,-s)
fi
fi

View File

@ -52,7 +52,9 @@ for i in $oldbuildinputs; do
done
# Add the output as an rpath.
export NIX_LDFLAGS="-rpath $out/lib $NIX_LDFLAGS"
if test "$NIX_NO_SELF_RPATH" != "1"; then
export NIX_LDFLAGS="-rpath $out/lib $NIX_LDFLAGS"
fi
# Strip debug information by default.
export NIX_STRIP_DEBUG=1

View File

@ -0,0 +1,13 @@
{system, glibc}: (import ../generic)
{ name = "stdenv-linux-boot"
, system = system
, prehook = ./prehook-boot.sh
, posthook = ./posthook.sh
, initialPath = "/usr/local /usr /"
, param1 = ""
, param2 = ""
, param3 = ""
, param4 = glibc
, param5 = ""
, noSysDirs = true
}

View File

@ -0,0 +1,25 @@
{bootStdenv, pkgs, glibc}: (import ../generic)
{ name = "stdenv-nix-linux"
, system = bootStdenv.system
, prehook = ./prehook.sh
, posthook = ./posthook.sh
, initialPath =
[ pkgs.coreutils
, pkgs.findutils
, pkgs.diffutils
, pkgs.gnused
, pkgs.gnugrep
, pkgs.gawk
, pkgs.gnutar
, pkgs.gzip
, pkgs.binutils
, pkgs.gnumake
, pkgs.gcc
]
, param1 = pkgs.bash
, param2 = pkgs.gcc
, param3 = pkgs.binutils
, param4 = glibc
, param5 = ""
, noSysDirs = true
}

View File

View File

@ -0,0 +1,12 @@
export SHELL=/bin/sh
export NIX_CC=/usr/bin/gcc
export NIX_CXX=/usr/bin/g++
export NIX_LD=/usr/bin/ld
export NIX_CFLAGS_COMPILE="-isystem $param4/include $NIX_CFLAGS_COMPILE"
export NIX_CFLAGS_LINK="-L$param4/lib $NIX_CFLAGS_LINK"
export NIX_LDFLAGS="-dynamic-linker $param4/lib/ld-linux.so.2 -rpath $param4/lib $NIX_LDFLAGS"
export NIX_LIBC_INCLUDES="$param4/include"
export NIX_LIBC_LIBS="$param4/lib"

View File

@ -0,0 +1,12 @@
export SHELL=$param1
export NIX_CC=$param2/bin/gcc
export NIX_CXX=$param2/bin/g++
export NIX_LD=$param3/bin/ld
export NIX_CFLAGS_COMPILE="-isystem $param4/include $NIX_CFLAGS_COMPILE"
export NIX_CFLAGS_LINK="-L$param4/lib -L$param2/lib $NIX_CFLAGS_LINK"
export NIX_LDFLAGS="-dynamic-linker $param4/lib/ld-linux.so.2 -rpath $param4/lib -rpath $param2/lib $NIX_LDFLAGS"
export NIX_LIBC_INCLUDES="$param4/include"
export NIX_LIBC_LIBS="$param4/lib"

View File

@ -87,9 +87,23 @@
, stdenv = stdenv
}
# devel/libs/glibc
, glibc = (import ../devel/libs/glibc)
{ fetchurl = fetchurl
, stdenv = stdenv
, kernelHeaders = kernelHeaders
}
# devel/libs/aterm
, aterm = (import ../devel/libs/aterm)
{ fetchurl = fetchurl
, stdenv = stdenv
}
# os-specific/linux/kernel-headers
, kernelHeaders = (import ../os-specific/linux/kernel-headers)
{ fetchurl = fetchurl
, stdenv = stdenv
}
}

View File

@ -17,25 +17,34 @@
# be used with care, since many Nix packages will not build properly
# with it (e.g., because they require GNU Make).
, stdenvNative = (import ../stdenv/native) {system = system}
, stdenvNativePkgs = allPackages {system = system, stdenv = stdenvNative}
# The Nix build environment.
, stdenvNixPkgs = allPackages {system = system, stdenv = stdenvNative}
, stdenvNix = (import ../stdenv/nix)
{ bootStdenv = stdenvNative
, pkgs = stdenvNixPkgs
, pkgs = stdenvNativePkgs
}
, stdenvNixPkgs = allPackages {system = system, stdenv = stdenvNix}
# The Linux build environment consists of the Nix build environment
# built against the GNU C Library.
, stdenvLinux = (import ../stdenv/nix-linux) {baseStdenv = stdenvNix}
, stdenvLinuxGlibc = stdenvNativePkgs.glibc
, stdenvLinuxBoot = (import ../stdenv/nix-linux/boot.fix)
{ system = system
, glibc = stdenvLinuxGlibc
}
, stdenvLinuxBootPkgs = allPackages {system = system, stdenv = stdenvLinuxBoot}
# Select the right one.
, stdenv =
, stdenvLinux = (import ../stdenv/nix-linux)
{ bootStdenv = stdenvLinuxBoot
, pkgs = stdenvLinuxBootPkgs
, glibc = stdenvLinuxGlibc
}
, stdenvLinuxPkgs = allPackages {system = system, stdenv = stdenvLinux}
# Select the right instantiation.
, body =
if system == "i686-suse-linux"
then stdenvNix
else stdenvNix
# Instantiate.
, body = allPackages {system = system, stdenv = stdenv}
then stdenvLinuxPkgs
else stdenvNixPkgs
}