Initial work on MinGW/MSYS standard environment
svn path=/nixpkgs/trunk/; revision=6122
This commit is contained in:
parent
3fd8841922
commit
56315425c9
@ -73,12 +73,17 @@ rec {
|
|||||||
inherit genericStdenv gccWrapper;
|
inherit genericStdenv gccWrapper;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# MinGW/MSYS standard environment.
|
||||||
|
stdenvMinGW = (import ./mingw) {
|
||||||
|
inherit system;
|
||||||
|
};
|
||||||
|
|
||||||
# Select the appropriate stdenv for the platform `system'.
|
# Select the appropriate stdenv for the platform `system'.
|
||||||
stdenv =
|
stdenv =
|
||||||
if system == "i686-linux" then stdenvLinux
|
if system == "i686-linux" then stdenvLinux
|
||||||
else if system == "i686-freebsd" then stdenvFreeBSD
|
else if system == "i686-freebsd" then stdenvFreeBSD
|
||||||
else if system == "i686-cygwin" then stdenvCygwin
|
else if system == "i686-cygwin" then stdenvCygwin
|
||||||
|
else if system == "i686-msys" then stdenvMinGW
|
||||||
else if system == "powerpc-darwin" then stdenvDarwin
|
else if system == "powerpc-darwin" then stdenvDarwin
|
||||||
else if system == "i686-darwin" then stdenvNix
|
else if system == "i686-darwin" then stdenvNix
|
||||||
else stdenvNative;
|
else stdenvNative;
|
||||||
|
101
pkgs/stdenv/mingw/default.nix
Normal file
101
pkgs/stdenv/mingw/default.nix
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
/**
|
||||||
|
* Initial stdenv should have:
|
||||||
|
* - shell
|
||||||
|
* - mkdir
|
||||||
|
* - gnu tar
|
||||||
|
* - curl
|
||||||
|
*/
|
||||||
|
{system} :
|
||||||
|
|
||||||
|
let {
|
||||||
|
/**
|
||||||
|
* Initial standard environment based on native cygwin tools.
|
||||||
|
*/
|
||||||
|
stdenvInit1 =
|
||||||
|
import ./simple-stdenv {
|
||||||
|
inherit system;
|
||||||
|
name = "stdenv-initial-cygwin";
|
||||||
|
shell = "/bin/bash";
|
||||||
|
path = ["/usr/bin" "/bin"];
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initial standard environment based on MSYS tools.
|
||||||
|
* From this point, cygwin should no longer by involved.
|
||||||
|
*/
|
||||||
|
stdenvInit2 =
|
||||||
|
import ./simple-stdenv {
|
||||||
|
name = "stdenv-initial-msys";
|
||||||
|
inherit system;
|
||||||
|
shell = msys + /bin/sh + ".exe";
|
||||||
|
path = [msys];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instruct MSYS to change the uname
|
||||||
|
* The PATH manipulation in /etc/profile is not relevant for now:
|
||||||
|
* This will be overridden anyway.
|
||||||
|
*/
|
||||||
|
extraEnv = {
|
||||||
|
MSYSTEM = "MSYS";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetchurl, based on native curl in stdenvInit1
|
||||||
|
*/
|
||||||
|
fetchurl =
|
||||||
|
import ../../build-support/fetchurl {
|
||||||
|
stdenv = stdenvInit1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* use native curl in Cygwin. We could consider to use curl.exe,
|
||||||
|
* which is widely available (or we could bootstrap it ourselves)
|
||||||
|
*/
|
||||||
|
curl = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MSYS, installed using stdenvInit1
|
||||||
|
*/
|
||||||
|
msys =
|
||||||
|
stdenvInit1.mkDerivation {
|
||||||
|
name = "msys-1.0.11";
|
||||||
|
builder = ./msys-builder.sh;
|
||||||
|
src = fetchurl {
|
||||||
|
url = http://www.cs.uu.nl/people/martin/msys-1.0.11.tar.gz;
|
||||||
|
md5 = "7e76eec10a205ea63ada6a4e834cc468";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Complete standard environment
|
||||||
|
*/
|
||||||
|
body =
|
||||||
|
import ../generic {
|
||||||
|
name = "stdenv-mingw";
|
||||||
|
# preHook = ./prehook.sh;
|
||||||
|
initialPath = [msys];
|
||||||
|
stdenv = stdenvInit2;
|
||||||
|
shell = msys + /bin/sh + ".exe";
|
||||||
|
gcc = msys;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
mingw = {
|
||||||
|
langC = true;
|
||||||
|
langCC = true;
|
||||||
|
langF77 = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
gcc =
|
||||||
|
import ../../build-support/gcc-wrapper {
|
||||||
|
nativeTools = false;
|
||||||
|
nativeGlibc = false;
|
||||||
|
stdenv = stdenvInitial;
|
||||||
|
binutils = msys;
|
||||||
|
gcc = mingw;
|
||||||
|
shell = msys + /bin/sh;
|
||||||
|
}; */
|
5
pkgs/stdenv/mingw/msys-builder.sh
Normal file
5
pkgs/stdenv/mingw/msys-builder.sh
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
source $stdenv/setup
|
||||||
|
|
||||||
|
mkdir $out
|
||||||
|
cd $out
|
||||||
|
tar zxvf $src
|
26
pkgs/stdenv/mingw/simple-stdenv/builder.sh
Normal file
26
pkgs/stdenv/mingw/simple-stdenv/builder.sh
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
setupPath=
|
||||||
|
for i in $initialPath; do
|
||||||
|
setupPath=$setupPath${setupPath:+:}$i
|
||||||
|
done
|
||||||
|
|
||||||
|
PATH=$setupPath
|
||||||
|
echo $setupPath
|
||||||
|
|
||||||
|
mkdir $out
|
||||||
|
cat > $out/setup <<EOF
|
||||||
|
PATH=$setupPath
|
||||||
|
export PATH
|
||||||
|
|
||||||
|
SHELL=$shell
|
||||||
|
export SHELL
|
||||||
|
|
||||||
|
# make fetchurl usable
|
||||||
|
header() {
|
||||||
|
echo "\$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
stopNest() {
|
||||||
|
echo "Nothing to do"
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
chmod +x $out/setup
|
30
pkgs/stdenv/mingw/simple-stdenv/default.nix
Normal file
30
pkgs/stdenv/mingw/simple-stdenv/default.nix
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# Here we construct an absolutely trivial `initial' standard
|
||||||
|
# environment. It's not actually a functional stdenv, since there is
|
||||||
|
# not necessarily a working C compiler. We need this to build
|
||||||
|
# gcc-wrapper et al. for the native stdenv.
|
||||||
|
|
||||||
|
{system, name, shell, path, extraEnv ? {}}:
|
||||||
|
|
||||||
|
let {
|
||||||
|
body =
|
||||||
|
derivation {
|
||||||
|
inherit system name;
|
||||||
|
initialPath = path;
|
||||||
|
builder = shell;
|
||||||
|
args = ["-e" ./builder.sh];
|
||||||
|
}
|
||||||
|
|
||||||
|
// {
|
||||||
|
mkDerivation = attrs:
|
||||||
|
derivation ((removeAttrs attrs ["meta"]) // {
|
||||||
|
builder = shell;
|
||||||
|
args = ["-e" attrs.builder];
|
||||||
|
stdenv = body;
|
||||||
|
system = body.system;
|
||||||
|
}
|
||||||
|
|
||||||
|
// extraEnv);
|
||||||
|
|
||||||
|
inherit shell;
|
||||||
|
};
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user