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
|