* Stdenv for Linux, i.e., with a Nix-built glibc.
svn path=/nixpkgs/trunk/; revision=461
This commit is contained in:
parent
3545617046
commit
549a0a807f
26
pkgs-ng/devel/libs/glibc/builder.sh
Executable file
26
pkgs-ng/devel/libs/glibc/builder.sh
Executable 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
|
20
pkgs-ng/devel/libs/glibc/default.fix
Normal file
20
pkgs-ng/devel/libs/glibc/default.fix
Normal 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
|
||||
}
|
68
pkgs-ng/devel/libs/glibc/glibc-2.3.2-sscanf-1.patch
Normal file
68
pkgs-ng/devel/libs/glibc/glibc-2.3.2-sscanf-1.patch
Normal 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;
|
12
pkgs-ng/os-specific/linux/kernel-headers/builder.sh
Executable file
12
pkgs-ng/os-specific/linux/kernel-headers/builder.sh
Executable 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
|
10
pkgs-ng/os-specific/linux/kernel-headers/default.fix
Normal file
10
pkgs-ng/os-specific/linux/kernel-headers/default.fix
Normal 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
|
||||
}
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
13
pkgs-ng/stdenv/nix-linux/boot.fix
Normal file
13
pkgs-ng/stdenv/nix-linux/boot.fix
Normal 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
|
||||
}
|
25
pkgs-ng/stdenv/nix-linux/default.fix
Normal file
25
pkgs-ng/stdenv/nix-linux/default.fix
Normal 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
|
||||
}
|
0
pkgs-ng/stdenv/nix-linux/posthook.sh
Normal file
0
pkgs-ng/stdenv/nix-linux/posthook.sh
Normal file
12
pkgs-ng/stdenv/nix-linux/prehook-boot.sh
Normal file
12
pkgs-ng/stdenv/nix-linux/prehook-boot.sh
Normal 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"
|
12
pkgs-ng/stdenv/nix-linux/prehook.sh
Normal file
12
pkgs-ng/stdenv/nix-linux/prehook.sh
Normal 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"
|
@ -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
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user