mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-19 04:03:56 +00:00
2aba922d30
My idea is to provide special stdenv expressions that will contain in the path additional cross compilers. As most expressions for programs accept a stdenv parameter, we could substitute this parameter with the special stdenv, which will have a generic builder that attempts the usual "--target=..." and can additionally have an env variable like "cross" with the target architecture set. So, finally we could have additional expressions like this: bashRealArm = makeOverridable (import ../shells/bash) { inherit fetchurl bison; stdenv = stdenvCross "armv5tel-unknown-linux-gnueabi"; }; Meanwhile it does not work - I still cannot get the cross-gcc to build. I think it does not fill the previous expressions with a lot of noise, so I think it may be a good path to follow. I only touched some files of the current stdenv: gcc-4.3, kernel headers 2.6.28, glibc 2.9, ... I tried to use the gcc-cross-wrapper, that may be very outdated. Maybe I will update it, or update the gcc-wrapper expression to make it fit the cross tools, but meanwhile I even cannot build gcc, so I have not tested the wrapper. This new idea on cross compiling is not similar to that of the nixpkgs/branches/cross-compilation, which mostly added bare new expressions for anything to be cross compiled, if I understood it correctly. I cared not to break anything of the usual stdenv in all this work. svn path=/nixpkgs/branches/stdenv-updates/; revision=18343
39 lines
1.0 KiB
Bash
39 lines
1.0 KiB
Bash
# Glibc cannot have itself in its RPATH.
|
|
export NIX_NO_SELF_RPATH=1
|
|
|
|
source $stdenv/setup
|
|
|
|
# Explicitly tell glibc to use our pwd, not /bin/pwd.
|
|
export PWD_P=$(type -tP pwd)
|
|
|
|
# Needed to install share/zoneinfo/zone.tab. Set to impure /bin/sh to
|
|
# prevent a retained dependency on the bootstrap tools in the
|
|
# stdenv-linux bootstrap.
|
|
export BASH_SHELL=/bin/sh
|
|
|
|
|
|
preConfigure() {
|
|
|
|
for i in configure io/ftwtest-sh; do
|
|
# Can't use substituteInPlace here because replace hasn't been
|
|
# built yet in the bootstrap.
|
|
sed -i "$i" -e "s^/bin/pwd^$PWD_P^g"
|
|
done
|
|
|
|
# In the glibc 2.6/2.7 tarballs C-translit.h is a little bit older
|
|
# than C-translit.h.in, forcing Make to rebuild it unnecessarily.
|
|
# This wouldn't be problem except that it requires Perl, which we
|
|
# don't want as a dependency in the Nixpkgs bootstrap. So force
|
|
# the output file to be newer.
|
|
touch locale/C-translit.h
|
|
|
|
tar xvjf "$srcPorts"
|
|
|
|
mkdir build
|
|
cd build
|
|
|
|
configureScript=../configure
|
|
}
|
|
|
|
genericBuild
|