diff options
Diffstat (limited to 'pkgs/stdenv')
-rw-r--r-- | pkgs/stdenv/default.nix | 34 | ||||
-rwxr-xr-x | pkgs/stdenv/mingw/builder.sh | 18 | ||||
-rwxr-xr-x | pkgs/stdenv/mingw/cygpath/builder.sh | 5 | ||||
-rw-r--r-- | pkgs/stdenv/mingw/cygpath/default.nix | 9 | ||||
-rwxr-xr-x | pkgs/stdenv/mingw/default-builder.sh | 2 | ||||
-rw-r--r-- | pkgs/stdenv/mingw/default.nix | 233 | ||||
-rwxr-xr-x | pkgs/stdenv/mingw/fetchurl/builder.sh | 34 | ||||
-rw-r--r-- | pkgs/stdenv/mingw/fetchurl/default.nix | 28 | ||||
-rwxr-xr-x | pkgs/stdenv/mingw/fix-builder.sh | 23 | ||||
-rw-r--r-- | pkgs/stdenv/mingw/msys-builder.sh | 15 | ||||
-rw-r--r-- | pkgs/stdenv/mingw/pkgs/bin-builder.sh | 5 | ||||
-rwxr-xr-x | pkgs/stdenv/mingw/pkgs/curl.exe | bin | 240128 -> 0 bytes | |||
-rw-r--r-- | pkgs/stdenv/mingw/pkgs/default.nix | 157 | ||||
-rw-r--r-- | pkgs/stdenv/mingw/pkgs/pkgconfig-builder.sh | 8 | ||||
-rw-r--r-- | pkgs/stdenv/mingw/pkgs/single-exe-builder.sh | 12 | ||||
-rw-r--r-- | pkgs/stdenv/mingw/pkgs/src-builder.sh | 7 | ||||
-rwxr-xr-x | pkgs/stdenv/mingw/setup.sh | 759 | ||||
-rw-r--r-- | pkgs/stdenv/mingw/simple-stdenv/builder.sh | 80 | ||||
-rw-r--r-- | pkgs/stdenv/mingw/simple-stdenv/default.nix | 31 |
19 files changed, 10 insertions, 1450 deletions
diff --git a/pkgs/stdenv/default.nix b/pkgs/stdenv/default.nix index a2723f5575c0..47d1fb6d9f75 100644 --- a/pkgs/stdenv/default.nix +++ b/pkgs/stdenv/default.nix @@ -5,14 +5,7 @@ # Posix utilities, the GNU C compiler, and so on. On other systems, # we use the native C library. - -# stdenvType exists to support multiple kinds of stdenvs on the same -# system, e.g., cygwin and mingw builds on i686-cygwin. Most people -# can ignore it. - -{ system, stdenvType ? system, allPackages ? import ../.., platform, config }: - -assert system != "i686-cygwin" -> system == stdenvType; +{ system, allPackages ? import ../.., platform, config }: rec { @@ -45,23 +38,16 @@ rec { stdenvLinux = (import ./linux { inherit system allPackages platform config;}).stdenvLinux; - # MinGW/MSYS standard environment. - stdenvMinGW = import ./mingw { - inherit system; - }; - - # Select the appropriate stdenv for the platform `system'. stdenv = - if stdenvType == "i686-linux" then stdenvLinux else - if stdenvType == "x86_64-linux" then stdenvLinux else - if stdenvType == "armv5tel-linux" then stdenvLinux else - if stdenvType == "armv6l-linux" then stdenvLinux else - if stdenvType == "armv7l-linux" then stdenvLinux else - if stdenvType == "mips64el-linux" then stdenvLinux else - if stdenvType == "powerpc-linux" then /* stdenvLinux */ stdenvNative else - if stdenvType == "i686-mingw" then stdenvMinGW else - if stdenvType == "x86_64-darwin" then stdenvNix else - if stdenvType == "x86_64-solaris" then stdenvNix else + if system == "i686-linux" then stdenvLinux else + if system == "x86_64-linux" then stdenvLinux else + if system == "armv5tel-linux" then stdenvLinux else + if system == "armv6l-linux" then stdenvLinux else + if system == "armv7l-linux" then stdenvLinux else + if system == "mips64el-linux" then stdenvLinux else + if system == "powerpc-linux" then /* stdenvLinux */ stdenvNative else + if system == "x86_64-darwin" then stdenvNix else + if system == "x86_64-solaris" then stdenvNix else stdenvNative; } diff --git a/pkgs/stdenv/mingw/builder.sh b/pkgs/stdenv/mingw/builder.sh deleted file mode 100755 index 5a9f9749a4f8..000000000000 --- a/pkgs/stdenv/mingw/builder.sh +++ /dev/null @@ -1,18 +0,0 @@ -# the other stdenv could change the SHELL variable, -# so we have to remember its value. -origShell=$SHELL -origGcc=$GCC - -source $STDENV/setup - -mkdir $OUT - -SHELL=$origShell -GCC=$origGcc - -export NIX_BUILD_TOP=$(pwd) - -substitute "$SETUP" "$OUT/setup" \ - --subst-var INITIALPATH \ - --subst-var GCC \ - --subst-var SHELL diff --git a/pkgs/stdenv/mingw/cygpath/builder.sh b/pkgs/stdenv/mingw/cygpath/builder.sh deleted file mode 100755 index 3061900ee0c9..000000000000 --- a/pkgs/stdenv/mingw/cygpath/builder.sh +++ /dev/null @@ -1,5 +0,0 @@ -source $stdenv/setup - -mkdir $out -result="$(cygpath --mixed $path)" -echo "\"$result\"" > $out/default.nix diff --git a/pkgs/stdenv/mingw/cygpath/default.nix b/pkgs/stdenv/mingw/cygpath/default.nix deleted file mode 100644 index a0554c1d41de..000000000000 --- a/pkgs/stdenv/mingw/cygpath/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -{stdenv}: path : - -import ( - stdenv.mkDerivation { - name = "cygpath"; - builder = ./builder.sh; - inherit path; - } -) diff --git a/pkgs/stdenv/mingw/default-builder.sh b/pkgs/stdenv/mingw/default-builder.sh deleted file mode 100755 index 422699971ed6..000000000000 --- a/pkgs/stdenv/mingw/default-builder.sh +++ /dev/null @@ -1,2 +0,0 @@ -source $STDENV/setup -genericBuild diff --git a/pkgs/stdenv/mingw/default.nix b/pkgs/stdenv/mingw/default.nix deleted file mode 100644 index 947db5f10a89..000000000000 --- a/pkgs/stdenv/mingw/default.nix +++ /dev/null @@ -1,233 +0,0 @@ -{system} : - -let { - body = - stdenvFinal; - - /** - * Initial standard environment based on native Cygwin tools. - * GCC is not required. - * Required (approx): bash, mkdir, gnu tar, curl. - */ - stdenvInit1 = - import ./simple-stdenv { - inherit system; - name = "stdenv-init1-mingw"; - shell = "/bin/bash.exe"; - path = ["/usr/bin" "/bin" "/usr/local/bin"]; - }; - - /** - * Initial standard environment based on MSYS tools. - */ - stdenvInit2 = - import ./simple-stdenv { - inherit system; - name = "stdenv-init2-mingw"; - shell = msysShell; - path = [(msys + "/bin")]; - }; - - /** - * Initial standard environment with the most basic MinGW packages. - */ - stdenvInit3 = - (import ./simple-stdenv) { - inherit system; - name = "stdenv-init3-mingw"; - shell = msysShell; - path = [ - (make + "/bin") - (tar + "/bin") - (binutils + "/bin") - (gccFull + "/bin") - (mingwRuntimeBin + "/bin") - (w32apiBin + "/bin") - (msys + "/bin") - ]; - - extraEnv = { - C_INCLUDE_PATH = mingwRuntimeBin + "/include" + ":" + w32apiBin + "/include"; - LIBRARY_PATH = mingwRuntimeBin + "/lib" + ":" + w32apiBin + "/lib"; - }; - }; - - /** - * Final standard environment, based on generic stdenv. - * It would be better to make the generic stdenv usable on - * MINGW (i.e. make all environment variables CAPS). - */ - stdenvFinal = - let { - body = - stdenv // mkDerivationFun // { - inherit fetchurl; - overrides.pkgconfig = pkgconfigBin; - }; - - shell = - msys + "/bin/sh.exe"; - - stdenv = - stdenvInit2.mkDerivation { - name = "stdenv-mingw"; - builder = ./builder.sh; - setup = ./setup.sh; - - /** - * binutils is on the path because it contains dlltool, which - * is invoked on the PATH by some packages. - */ - initialPath = [make tar binutils gccFull mingwRuntimeSrc w32apiSrc msys]; - gcc = gccFull; - shell = msysShell; - inherit curl; - isDarwin = false; - isMinGW = true; - }; - - mkDerivationFun = { - mkDerivation = attrs: - (derivation ( - (removeAttrs attrs ["meta"]) - // - { - builder = - if attrs ? realBuilder then attrs.realBuilder else shell; - args = - if attrs ? args then - attrs.args - else - ["-e"] ++ ( - if attrs ? builder then - [./fix-builder.sh attrs.builder] - else - [./fix-builder.sh ./default-builder.sh] - ); - inherit stdenv system; - C_INCLUDE_PATH = mingwRuntimeSrc + "/include" + ":" + w32apiSrc + "/include"; - CPLUS_INCLUDE_PATH = mingwRuntimeSrc + "/include" + ":" + w32apiSrc + "/include"; - LIBRARY_PATH = mingwRuntimeSrc + "/lib" + ":" + w32apiSrc + "/lib"; - }) - ) - // { meta = if attrs ? meta then attrs.meta else {}; }; - }; - }; - - /** - * fetchurl - */ - fetchurlInit1 = - import ../../build-support/fetchurl { - stdenv = stdenvInit1; - curl = - (import ./pkgs).curl { - stdenv = stdenvInit1; - }; - }; - - cygpath = - import ./cygpath { - stdenv = stdenvInit1; - }; - - /** - * Hack: we need the cygpath of the Cygwin chmod. - */ - fetchurl = - import ./fetchurl { - stdenv = stdenvInit2; - curl = curl + "/bin/curl.exe"; - chmod = cygpath "/usr/bin/chmod"; - }; - - /** - * MSYS, installed using stdenvInit1 - * - * @todo Maybe remove the make of msys? - */ - msys = - stdenvInit1.mkDerivation { - name = "msys-1.0.11"; - builder = ./msys-builder.sh; - src = - fetchurlInit1 { - url = ftp://ftp.strategoxt.org/pub/mingw/msys-1.0.11.tar.gz; - sha256 = "08qp4jk279i66q6ngksg58fx3cfv1r6p5n394h2kfrs56qs9zvz4"; - }; - }; - - msysShell = - msys + "/bin/sh.exe"; - - /** - * Binary packages, based on stdenvInit2 - */ - curl = - (import ./pkgs).curl { - stdenv = stdenvInit2; - }; - - gccFull = - (import ./pkgs).gccFull { - stdenv = stdenvInit2; - inherit fetchurl; - }; - - make = - (import ./pkgs).make { - stdenv = stdenvInit2; - inherit fetchurl; - }; - - tar = - (import ./pkgs).tar { - stdenv = stdenvInit2; - inherit fetchurl; - }; - - binutils = - (import ./pkgs).binutils { - stdenv = stdenvInit2; - inherit fetchurl; - }; - - mingwRuntimeBin = - (import ./pkgs).mingwRuntimeBin { - stdenv = stdenvInit2; - inherit fetchurl; - }; - - w32apiBin = - (import ./pkgs).w32apiBin { - stdenv = stdenvInit2; - inherit fetchurl; - }; - - pkgconfigBin = - (import ./pkgs).pkgconfigBin { - stdenv = stdenvInit3; - inherit fetchurl; - }; - - /** - * Source packages, based on stdenvInit3 - */ - mingwRuntimeSrc = - (import ./pkgs).mingwRuntimeSrc { - stdenv = stdenvInit3; - inherit fetchurl; - }; - - w32apiSrc = - (import ./pkgs).w32apiSrc { - stdenv = stdenvInit3; - inherit fetchurl; - }; - - replace = - (import ./pkgs).replace { - stdenv = stdenvInit3; - inherit fetchurl; - }; -} diff --git a/pkgs/stdenv/mingw/fetchurl/builder.sh b/pkgs/stdenv/mingw/fetchurl/builder.sh deleted file mode 100755 index e9f2669a097f..000000000000 --- a/pkgs/stdenv/mingw/fetchurl/builder.sh +++ /dev/null @@ -1,34 +0,0 @@ -if test -z "$out"; then - stdenv="$STDENV" - url="$URL" - id="$ID" - outputHashAlgo="$OUTPUTHASHALGO" - outputHash="$OUTPUTHASH" - chmod=$CHMOD - curl=$CURL -fi - -source $stdenv/setup - -if test -z "$out"; then - out="$OUT" -fi - -header "downloading $out from $url" -$curl --fail --location --max-redirs 20 "$url" > "$out" - -if test "$NIX_OUTPUT_CHECKED" != "1"; then - if test "$outputHashAlgo" != "md5"; then - echo "hashes other than md5 are unsupported in Nix <= 0.7, upgrade to Nix 0.8" - exit 1 - fi - actual=$(md5sum -b "$out" | cut -c1-32) - if test "$actual" != "$id"; then - echo "hash is $actual, expected $id" - exit 1 - fi -fi - -$chmod a-x $out - -stopNest diff --git a/pkgs/stdenv/mingw/fetchurl/default.nix b/pkgs/stdenv/mingw/fetchurl/default.nix deleted file mode 100644 index b4d278b2686f..000000000000 --- a/pkgs/stdenv/mingw/fetchurl/default.nix +++ /dev/null @@ -1,28 +0,0 @@ -{stdenv, curl, chmod}: - -{url, outputHash ? "", outputHashAlgo ? "", md5 ? "", sha1 ? "", sha256 ? ""}: - -assert (outputHash != "" && outputHashAlgo != "") - || md5 != "" || sha1 != "" || sha256 != ""; - -stdenv.mkDerivation { - name = baseNameOf (toString url); - builder = ./builder.sh; - - # Compatibility with Nix <= 0.7. - id = md5; - - # New-style output content requirements. - outputHashAlgo = if outputHashAlgo != "" then outputHashAlgo else - if sha256 != "" then "sha256" else if sha1 != "" then "sha1" else "md5"; - outputHash = if outputHash != "" then outputHash else - if sha256 != "" then sha256 else if sha1 != "" then sha1 else md5; - - inherit url chmod curl; - - # We borrow these environment variables from the caller to allow - # easy proxy configuration. This is impure, but a fixed-output - # derivation like fetchurl is allowed to do so since its result is - # by definition pure. - impureEnvVars = ["http_proxy" "https_proxy" "ftp_proxy" "all_proxy" "no_proxy"]; -} diff --git a/pkgs/stdenv/mingw/fix-builder.sh b/pkgs/stdenv/mingw/fix-builder.sh deleted file mode 100755 index 09d933bd17b2..000000000000 --- a/pkgs/stdenv/mingw/fix-builder.sh +++ /dev/null @@ -1,23 +0,0 @@ -# Workaround MSYS shell problem - -if test -z "$out"; then - buildInputs=$BUILDINPUTS - buildUtilities=$BUILDUTILITIES - configureFlags=$CONFIGUREFLAGS - doCheck=$DOCHECK - doCoverageAnalysis=$DOCOVERAGEANALYSIS - dontInstall=$DONTINSTALL - dontLogThroughTee=$DONTLOGTHROUGHTEE - lcov=$LCOV - logPhases=$LOGPHASES - out=$OUT - patches=$PATCHES - propagatedBuildInputs=$PROPAGATEDBUILDINPUTS - stdenv=$STDENV - src=$SRC - srcs=$SRCS - succeedOnFailure=$SUCCEEDONFAILURE - system=$SYSTEM -fi - -source $@ diff --git a/pkgs/stdenv/mingw/msys-builder.sh b/pkgs/stdenv/mingw/msys-builder.sh deleted file mode 100644 index a801e7fbcab1..000000000000 --- a/pkgs/stdenv/mingw/msys-builder.sh +++ /dev/null @@ -1,15 +0,0 @@ -source $stdenv/setup - -mkdir $out -cd $out -tar zxvf $src - -# Make the Nix store available to MSYS. -# Hack: we are assuming that the stdenv is based on Cygwin. - -nixdir="$(cygpath --windows /nix)" -mkdir $out/nix -cat > $out/etc/fstab <<EOF -#Win32_Path Mount_Point -$nixdir /nix -EOF diff --git a/pkgs/stdenv/mingw/pkgs/bin-builder.sh b/pkgs/stdenv/mingw/pkgs/bin-builder.sh deleted file mode 100644 index f4f21d50a458..000000000000 --- a/pkgs/stdenv/mingw/pkgs/bin-builder.sh +++ /dev/null @@ -1,5 +0,0 @@ -source $STDENV/setup - -mkdir $OUT -cd $OUT -tar zxvf $SRC diff --git a/pkgs/stdenv/mingw/pkgs/curl.exe b/pkgs/stdenv/mingw/pkgs/curl.exe deleted file mode 100755 index 0a02fa0af5ca..000000000000 --- a/pkgs/stdenv/mingw/pkgs/curl.exe +++ /dev/null Binary files differdiff --git a/pkgs/stdenv/mingw/pkgs/default.nix b/pkgs/stdenv/mingw/pkgs/default.nix deleted file mode 100644 index 5add5b6546e8..000000000000 --- a/pkgs/stdenv/mingw/pkgs/default.nix +++ /dev/null @@ -1,157 +0,0 @@ -/** - * MinGW packages. - */ -rec { - - /** - * Curl, binary - */ - curl = {stdenv} : - stdenv.mkDerivation { - name = "curl-7.15.4"; - exename = "curl.exe"; - builder = ./single-exe-builder.sh; - src = ./curl.exe; - }; - - /** - * Make. Binary. - */ - make = {stdenv, fetchurl} : - stdenv.mkDerivation { - name = "mingw-make-3.81"; - builder = ./bin-builder.sh; - src = - fetchurl { - url = http://surfnet.dl.sourceforge.net/sourceforge/mingw/mingw32-make-3.81-1.tar.gz; - md5 = "74c2f44ecc699b318edeb07d838feae5"; - }; - }; - - /** - * Tar - */ - tar = {stdenv, fetchurl} : - stdenv.mkDerivation { - name = "mingw-tar"; - builder = ./bin-builder.sh; - src = - fetchurl { - url = ftp://ftp.strategoxt.org/pub/mingw/tar-1.22-1-msys-1.0.11-bin.tar.gz; - sha256 = "17rbv159g56q3bp8rh5vzv8hw8clxs7vk731cgqg0vy1fzls6yfq"; - }; - }; - - /** - * GCC. Binary - */ - gccFull = {stdenv, fetchurl} : - stdenv.mkDerivation { - name = "gcc-full-4.4.0-mingw32"; - builder = ./bin-builder.sh; - src = - fetchurl { - url = ftp://ftp.strategoxt.org/pub/mingw/gcc-full-4.4.0-mingw32-bin-2.tar.gz; - sha256= "6c5a125591837817c940f4c66140cd7393b3f5837dd738c7ed315157e6270a60"; - }; - }; - - /** - * binutils. Binary. - */ - binutils = {stdenv, fetchurl} : - stdenv.mkDerivation { - name = "binutils-2.19.1-mingw32"; - builder = ./bin-builder.sh; - src = - fetchurl { - url = http://surfnet.dl.sourceforge.net/sourceforge/mingw/files/GNU%20Binutils/Current%20Release_%20GNU%20binutils-2.19.1/binutils-2.19.1-mingw32-bin.tar.gz; - sha256 = "037vh2n9iv2vccvplk48vd3al91p7yhc73p5nkfsrb6sg977shj2"; - }; - }; - - mingwRuntimeBin = {stdenv, fetchurl} : - stdenv.mkDerivation { - name = "mingwrt-3.16"; - builder = ./bin-builder.sh; - src = - fetchurl { - url = http://surfnet.dl.sourceforge.net/sourceforge/mingw/files/MinGW%20Runtime/mingwrt-3.16/mingwrt-3.16-mingw32-dev.tar.gz; - sha256 = "1xqpp7lvsj88grs6jlk0fnlkvis2y4avcqrpwsaxxrpjlg5bwzci"; - }; - }; - - mingwRuntimeSrc = {stdenv, fetchurl} : - stdenv.mkDerivation { - name = "mingwrt-3.16-mingw32"; - builder = ./src-builder.sh; - src = - fetchurl { - url = http://surfnet.dl.sourceforge.net/sourceforge/mingw/files/MinGW%20Runtime/mingwrt-3.16/mingwrt-3.16-mingw32-src.tar.gz; - sha256 = "0rljw3v94z9wzfa63b7lvyprms5l5jgf11lws8vm8z7x7q7h1k38"; - }; - }; - - w32apiBin = {stdenv, fetchurl} : - stdenv.mkDerivation { - name = "w32api-3.13-mingw32"; - builder = ./bin-builder.sh; - src = - fetchurl { - url = http://surfnet.dl.sourceforge.net/sourceforge/mingw/files/MinGW%20API%20for%20MS-Windows/Current%20Release_%20w32api-3.13/w32api-3.13-mingw32-dev.tar.gz; - sha256 = "19jm2hdym5ixi9b874xmmilixlpxvfdpi5y3bx0bs88fdah03gvx"; - }; - }; - - w32apiSrc = {stdenv, fetchurl} : - stdenv.mkDerivation { - name = "w32api-3.13-mingw32"; - builder = ./src-builder.sh; - src = - fetchurl { - url = http://surfnet.dl.sourceforge.net/sourceforge/mingw/files/MinGW%20API%20for%20MS-Windows/Current%20Release_%20w32api-3.13/w32api-3.13-mingw32-src.tar.gz; - sha256 = "1i1gpwilfc21s3yr4sx39i0w4g7lbij427wwxa34gjfgz0awdkh2"; - }; - }; - - /** - * We need a binary pkg-config to bootstrap the compilation of - * glib and pkg-config: pkg-config needs glib, glib needs pkg-config. - * - * This tarball contains pkg-config and all its dependencies. Once we - * have bootstrapped pkg-config we really need to use a statically linked - * pkg-config (and provide this .exe at the web: it is really missing - * on the web). - */ - pkgconfigBin = {stdenv, fetchurl} : - stdenv.mkDerivation { - name = "pkgconfig-0.23"; - builder = ./pkgconfig-builder.sh; - setupHook = ../../../development/tools/misc/pkgconfig/setup-hook.sh; - src = - fetchurl { - url = ftp://ftp.strategoxt.org/pub/mingw/pkg-config-0.23.tar.gz; - sha256 = "1vab3rdnw16nhma1bln41bbrn6phbpcv9wiz79map8y5znaiv6mq"; - }; - }; - - replace = {stdenv, fetchurl} : - import ../../../tools/text/replace { - inherit fetchurl stdenv; - }; - - /* - pkgs.coreutils - pkgs.findutils - pkgs.diffutils - pkgs.gnused - pkgs.gnugrep - pkgs.gawk - pkgs.gnutar - pkgs.gzip - pkgs.bzip2 - pkgs.gnumake - pkgs.bash - pkgs.patch - */ -} diff --git a/pkgs/stdenv/mingw/pkgs/pkgconfig-builder.sh b/pkgs/stdenv/mingw/pkgs/pkgconfig-builder.sh deleted file mode 100644 index c7f456951e3f..000000000000 --- a/pkgs/stdenv/mingw/pkgs/pkgconfig-builder.sh +++ /dev/null @@ -1,8 +0,0 @@ -source $STDENV/setup - -mkdir $OUT -cd $OUT -tar zxvf $SRC - -test -x $OUT/nix-support || mkdir $OUT/nix-support -cp $SETUPHOOK $OUT/nix-support/setup-hook diff --git a/pkgs/stdenv/mingw/pkgs/single-exe-builder.sh b/pkgs/stdenv/mingw/pkgs/single-exe-builder.sh deleted file mode 100644 index 660f8175afc5..000000000000 --- a/pkgs/stdenv/mingw/pkgs/single-exe-builder.sh +++ /dev/null @@ -1,12 +0,0 @@ -if test -z "$out"; then - stdenv=$STDENV - out=$OUT - src=$SRC - exename=$EXENAME -fi - -source $stdenv/setup - -mkdir $out -mkdir $out/bin -cp $src $out/bin/$exename diff --git a/pkgs/stdenv/mingw/pkgs/src-builder.sh b/pkgs/stdenv/mingw/pkgs/src-builder.sh deleted file mode 100644 index 09dbb152772a..000000000000 --- a/pkgs/stdenv/mingw/pkgs/src-builder.sh +++ /dev/null @@ -1,7 +0,0 @@ -source $STDENV/setup - -tar zxvf $SRC -cd $NAME -./configure --prefix=$OUT -make -make install diff --git a/pkgs/stdenv/mingw/setup.sh b/pkgs/stdenv/mingw/setup.sh deleted file mode 100755 index c757eb7ae54c..000000000000 --- a/pkgs/stdenv/mingw/setup.sh +++ /dev/null @@ -1,759 +0,0 @@ -# Run the named hook, either by calling the function with that name or -# by evaluating the variable with that name. This allows convenient -# setting of hooks both from Nix expressions (as attributes / -# environment variables) and from shell scripts (as functions). -runHook() { - local hookName="$1" - if test "$(type -t $hookName)" = function; then - $hookName - else - eval "${!hookName}" - fi -} - - -exitHandler() { - exitCode=$? - set +e - - closeNest - - if test -n "$showBuildStats"; then - times > "$NIX_BUILD_TOP/.times" - local -a times=($(cat "$NIX_BUILD_TOP/.times")) - # Print the following statistics: - # - user time for the shell - # - system time for the shell - # - user time for all child processes - # - system time for all child processes - echo "build time elapsed: " ${times[*]} - fi - - if test $exitCode != 0; then - runHook failureHook - - # If the builder had a non-zero exit code and - # $succeedOnFailure is set, create the file - # `$out/nix-support/failed' to signal failure, and exit - # normally. Otherwise, return the original exit code. - if test -n "$succeedOnFailure"; then - echo "build failed with exit code $exitCode (ignored)" - mkdir -p "$out/nix-support" - echo -n $exitCode > "$out/nix-support/failed" - exit 0 - fi - - else - runHook exitHook - fi - - exit $exitCode -} - -trap "exitHandler" EXIT - - -###################################################################### -# Helper functions that might be useful in setup hooks. - - -addToSearchPathWithCustomDelimiter() { - local delimiter=$1 - local varName=$2 - local dir=$3 - if [ -d "$dir" ]; then - eval export ${varName}=${!varName}${!varName:+$delimiter}${dir} - fi -} - -PATH_DELIMITER=':' - -addToSearchPath() { - addToSearchPathWithCustomDelimiter "${PATH_DELIMITER}" "$@" -} - - -###################################################################### -# Initialisation. - -set -e - -test -z $NIX_GCC && NIX_GCC=@GCC@ - - -# Wildcard expansions that don't match should expand to an empty list. -# This ensures that, for instance, "for i in *; do ...; done" does the -# right thing. -shopt -s nullglob - - -# Set up the initial path. -PATH= -for i in $NIX_GCC @INITIALPATH@; do - if test "$i" = /; then i=; fi - addToSearchPath PATH $i/bin -done - -# Hack: the /tmp of Cygwin is different from the /tmp in MSYS -if test -d $NIX_BUILD_TOP; then - echo "Nix build top already exists. Strange." -else - mkdir $NIX_BUILD_TOP - cd $NIX_BUILD_TOP -fi - -if test "$NIX_DEBUG" = "1"; then - echo "initial path: $PATH" -fi - - -# Execute the pre-hook. -export SHELL=@SHELL@ -if test -z "$shell"; then - export shell=@SHELL@ -fi - -# Check that the pre-hook initialised SHELL. -if test -z "$SHELL"; then echo "SHELL not set"; exit 1; fi - - -# Hack: run gcc's setup hook. -envHooks=() -if test -f $NIX_GCC/nix-support/setup-hook; then - source $NIX_GCC/nix-support/setup-hook -fi - - -# Ensure that the given directories exists. -ensureDir() { - local dir - for dir in "$@"; do - if ! test -x "$dir"; then mkdir -p "$dir"; fi - done -} - -installBin() { - mkdir -p $out/bin - cp "$@" $out/bin -} - - -# Allow the caller to augment buildInputs (it's not always possible to -# do this before the call to setup.sh, since the PATH is empty at that -# point; here we have a basic Unix environment). -runHook addInputsHook - - -# Recursively find all build inputs. -findInputs() { - local pkg=$1 - - case $pkgs in - *\ $pkg\ *) - return 0 - ;; - esac - - pkgs="$pkgs $pkg " - - if test -f $pkg/nix-support/setup-hook; then - source $pkg/nix-support/setup-hook - fi - - if test -f $pkg/nix-support/propagated-build-inputs; then - for i in $(cat $pkg/nix-support/propagated-build-inputs); do - findInputs $i - done - fi -} - -pkgs="" -for i in $buildInputs $propagatedBuildInputs; do - findInputs $i -done - - -# Set the relevant environment variables to point to the build inputs -# found above. -addToEnv() { - local pkg=$1 - - if test -d $1/bin; then - addToSearchPath _PATH $1/bin - fi - - # Run the package-specific hooks set by the setup-hook scripts. - for i in "${envHooks[@]}"; do - $i $pkg - done -} - -for i in $pkgs; do - addToEnv $i -done - - -# Add the output as an rpath. -if test "$NIX_NO_SELF_RPATH" != "1"; then - export NIX_LDFLAGS="-rpath $out/lib $NIX_LDFLAGS" - if test -n "$NIX_LIB64_IN_SELF_RPATH"; then - export NIX_LDFLAGS="-rpath $out/lib64 $NIX_LDFLAGS" - fi -fi - - -# Set the TZ (timezone) environment variable, otherwise commands like -# `date' will complain (e.g., `Tue Mar 9 10:01:47 Local time zone must -# be set--see zic manual page 2004'). -export TZ=UTC - - -# Set the prefix. This is generally $out, but it can be overriden, -# for instance if we just want to perform a test build/install to a -# temporary location and write a build report to $out. -if test -z "$prefix"; then - prefix="$out"; -fi - -if test "$useTempPrefix" = "1"; then - prefix="$NIX_BUILD_TOP/tmp_prefix"; -fi - - -PATH=$_PATH${_PATH:+:}$PATH -if test "$NIX_DEBUG" = "1"; then - echo "final path: $PATH" -fi - - -# Make GNU Make produce nested output. -export NIX_INDENT_MAKE=1 - - -###################################################################### -# Misc. helper functions. - - -stripDirs() { - local dirs="$1" - local stripFlags="$2" - local dirsNew= - - for d in ${dirs}; do - if test -d "$prefix/$d"; then - dirsNew="${dirsNew} $prefix/$d " - fi - done - dirs=${dirsNew} - - if test -n "${dirs}"; then - header "stripping (with flags $stripFlags) in $dirs" - find $dirs -type f -print0 | xargs -0 ${xargsFlags:--r} strip $stripFlags || true - stopNest - fi -} - - -###################################################################### -# Textual substitution functions. - - -substitute() { - local input="$1" - local output="$2" - - local -a params=("$@") - local -a args=() - - local n p pattern replacement varName - - for ((n = 2; n < ${#params[*]}; n += 1)); do - p=${params[$n]} - - if test "$p" = "--replace"; then - pattern="${params[$((n + 1))]}" - replacement="${params[$((n + 2))]}" - n=$((n + 2)) - fi - - if test "$p" = "--subst-var"; then - varName="${params[$((n + 1))]}" - pattern="@$varName@" - replacement="${!varName}" - n=$((n + 1)) - fi - - if test "$p" = "--subst-var-by"; then - pattern="@${params[$((n + 1))]}@" - replacement="${params[$((n + 2))]}" - n=$((n + 2)) - fi - - if test ${#args[@]} != 0; then - args[${#args[@]}]="-a" - fi - args[${#args[@]}]="$pattern" - args[${#args[@]}]="$replacement" - done - - replace-literal -e -s -- "${args[@]}" < "$input" > "$output".tmp - if test -x "$output"; then - chmod +x "$output".tmp - fi - mv -f "$output".tmp "$output" -} - - -substituteInPlace() { - local fileName="$1" - shift - substitute "$fileName" "$fileName" "$@" -} - - -substituteAll() { - local input="$1" - local output="$2" - - # Select all environment variables that start with a lowercase character. - for envVar in $(env | sed "s/^[^a-z].*//" | sed "s/^\([^=]*\)=.*/\1/"); do - if test "$NIX_DEBUG" = "1"; then - echo "$envVar -> ${!envVar}" - fi - args="$args --subst-var $envVar" - done - - substitute "$input" "$output" $args -} - - -###################################################################### -# What follows is the generic builder. - - -nestingLevel=0 - -startNest() { - nestingLevel=$(($nestingLevel + 1)) - echo -en "\e[$1p" -} - -stopNest() { - nestingLevel=$(($nestingLevel - 1)) - echo -en "\e[q" -} - -header() { - startNest "$2" - echo "$1" -} - -# Make sure that even when we exit abnormally, the original nesting -# level is properly restored. -closeNest() { - while test $nestingLevel -gt 0; do - stopNest - done -} - - -# This function is useful for debugging broken Nix builds. It dumps -# all environment variables to a file `env-vars' in the build -# directory. If the build fails and the `-K' option is used, you can -# then go to the build directory and source in `env-vars' to reproduce -# the environment used for building. -dumpVars() { - echo "Dumping env-vars to $NIX_BUILD_TOP/env-vars" - if test "$noDumpEnvVars" != "1"; then - export > "$NIX_BUILD_TOP/env-vars" - fi -} - - -# Utility function: return the base name of the given path, with the -# prefix `HASH-' removed, if present. -stripHash() { - strippedName=$(basename $1); - if echo "$strippedName" | grep -q '^[a-z0-9]\{32\}-'; then - strippedName=$(echo "$strippedName" | cut -c34-) - fi -} - - -unpackFile() { - curSrc="$1" - local cmd - - header "unpacking source archive $curSrc" 3 - - case "$curSrc" in - *.tar) - tar xvf $curSrc - ;; - *.tar.gz | *.tgz | *.tar.Z) - gzip -d < $curSrc | tar xvf - - ;; - *.tar.bz2 | *.tbz2) - bzip2 -d < $curSrc | tar xvf - - ;; - *.zip) - unzip $curSrc - ;; - *) - if test -d "$curSrc"; then - stripHash $curSrc - cp -prvd $curSrc $strippedName - else - if test -z "$unpackCmd"; then - echo "source archive $curSrc has unknown type" - exit 1 - fi - runHook unpackCmd - fi - ;; - esac - - stopNest -} - - -unpackPhase() { - runHook preUnpack - - if test -z "$srcs"; then - if test -z "$src"; then - echo 'variable $src or $srcs should point to the source' - exit 1 - fi - srcs="$src" - fi - - # To determine the source directory created by unpacking the - # source archives, we record the contents of the current - # directory, then look below which directory got added. Yeah, - # it's rather hacky. - local dirsBefore="" - for i in *; do - if test -d "$i"; then - dirsBefore="$dirsBefore $i " - fi - done - - # Unpack all source archives. - for i in $srcs; do - unpackFile $i - done - - # Find the source directory. - if test -n "$setSourceRoot"; then - runHook setSourceRoot - elif test -z "$sourceRoot"; then - sourceRoot= - for i in *; do - if test -d "$i"; then - case $dirsBefore in - *\ $i\ *) - ;; - *) - if test -n "$sourceRoot"; then - echo "unpacker produced multiple directories" - exit 1 - fi - sourceRoot="$i" - ;; - esac - fi - done - fi - - if test -z "$sourceRoot"; then - echo "unpacker appears to have produced no directories" - exit 1 - fi - - echo "source root is $sourceRoot" - - # By default, add write permission to the sources. This is often - # necessary when sources have been copied from other store - # locations. - if test "$dontMakeSourcesWritable" != 1; then - chmod -R u+w "$sourceRoot" - fi - - runHook postUnpack -} - - -patchPhase() { - runHook prePatch - - for i in $patches; do - header "applying patch $i" 3 - local uncompress=cat - case $i in - *.gz) - uncompress="gzip -d" - ;; - *.bz2) - uncompress="bzip2 -d" - ;; - esac - $uncompress < $i | patch ${patchFlags:--p1} - stopNest - done - - runHook postPatch -} - - -configurePhase() { - runHook preConfigure - - if test -z "$configureScript"; then - configureScript=./configure - if ! test -x $configureScript; then - echo "no configure script, doing nothing" - return - fi - fi - - if test -z "$dontAddPrefix"; then - configureFlags="${prefixKey:---prefix=}$prefix $configureFlags" - fi - - # Add --disable-dependency-tracking to speed up some builds. - if test -z "$dontAddDisableDepTrack"; then - if grep -q dependency-tracking $configureScript; then - configureFlags="--disable-dependency-tracking $configureFlags" - fi - fi - - # By default, disable static builds. - if test -z "$dontDisableStatic"; then - if grep -q enable-static $configureScript; then - configureFlags="--disable-static $configureFlags" - fi - fi - - echo "configure flags: $configureFlags ${configureFlagsArray[@]}" - $configureScript $configureFlags "${configureFlagsArray[@]}" - - runHook postConfigure -} - - -buildPhase() { - runHook preBuild - - if test -z "$makeFlags" && ! test -n "$makefile" -o -e "Makefile" -o -e "makefile" -o -e "GNUmakefile"; then - echo "no Makefile, doing nothing" - return - fi - - echo "make flags: $makeFlags ${makeFlagsArray[@]} $buildFlags ${buildFlagsArray[@]}" - make ${makefile:+-f $makefile} \ - $makeFlags "${makeFlagsArray[@]}" \ - $buildFlags "${buildFlagsArray[@]}" - - runHook postBuild -} - - -checkPhase() { - runHook preCheck - - echo "check flags: $makeFlags ${makeFlagsArray[@]} $checkFlags ${checkFlagsArray[@]}" - make ${makefile:+-f $makefile} \ - $makeFlags "${makeFlagsArray[@]}" \ - $checkFlags "${checkFlagsArray[@]}" ${checkTarget:-check} - - runHook postCheck -} - - -patchELF() { - # Patch all ELF executables and shared libraries. - header "patching ELF executables and libraries" - if test -e "$prefix"; then - find "$prefix" \( \ - \( -type f -a -name "*.so*" \) -o \ - \( -type f -a -perm +0100 \) \ - \) -print -exec patchelf --shrink-rpath {} \; - fi - stopNest -} - - -patchShebangs() { - # Rewrite all script interpreter file names (`#! /path') under the - # specified directory tree to paths found in $PATH. E.g., - # /bin/sh will be rewritten to /nix/store/<hash>-some-bash/bin/sh. - # Interpreters that are already in the store are left untouched. - header "patching script interpreter paths" - local dir="$1" - local f - for f in $(find "$dir" -type f -perm +0100); do - local oldPath=$(sed -ne '1 s,^#![ ]*\([^ ]*\).*$,\1,p' "$f") - if test -n "$oldPath" -a "${oldPath:0:${#NIX_STORE}}" != "$NIX_STORE"; then - local newPath=$(type -P $(basename $oldPath) || true) - if test -n "$newPath" -a "$newPath" != "$oldPath"; then - echo "$f: interpreter changed from $oldPath to $newPath" - sed -i -e "1 s,$oldPath,$newPath," "$f" - fi - fi - done - stopNest -} - - -installPhase() { - runHook preInstall - - mkdir -p "$prefix" - - installTargets=${installTargets:-install} - echo "install flags: $installTargets $makeFlags ${makeFlagsArray[@]} $installFlags ${installFlagsArray[@]}" - make ${makefile:+-f $makefile} $installTargets \ - $makeFlags "${makeFlagsArray[@]}" \ - $installFlags "${installFlagsArray[@]}" - - runHook postInstall -} - - -# The fixup phase performs generic, package-independent, Nix-related -# stuff, like running patchelf and setting the -# propagated-build-inputs. It should rarely be overriden. -fixupPhase() { - runHook preFixup - - # Put man/doc/info under $out/share. - forceShare=${forceShare:=man doc info} - if test -n "$forceShare"; then - for d in $forceShare; do - if test -d "$prefix/$d"; then - if test -d "$prefix/share/$d"; then - echo "both $d/ and share/$d/ exists!" - else - echo "fixing location of $d/ subdirectory" - mkdir -p $prefix/share - if test -w $prefix/share; then - mv -v $prefix/$d $prefix/share - ln -sv $prefix/share/$d $prefix/$d - fi - fi - fi - done; - fi - - # TODO: strip _only_ ELF executables, and return || fail here... - if test -z "$dontStrip"; then - stripDebugList=${stripDebugList:-lib lib64 libexec bin sbin} - if test -n "$stripDebugList"; then - stripDirs "$stripDebugList" "${stripDebugFlags:--S}" - fi - - stripAllList=${stripAllList:-} - if test -n "$stripAllList"; then - stripDirs "$stripAllList" "${stripAllFlags:--s}" - fi - fi - - if test "$havePatchELF" = 1 -a -z "$dontPatchELF"; then - patchELF "$prefix" - fi - - if test -z "$dontPatchShebangs"; then - patchShebangs "$prefix" - fi - - if test -n "$propagatedBuildInputs"; then - mkdir -p "$out/nix-support" - echo "$propagatedBuildInputs" > "$out/nix-support/propagated-build-inputs" - fi - - if test -n "$setupHook"; then - mkdir -p "$out/nix-support" - substituteAll "$setupHook" "$out/nix-support/setup-hook" - fi - - runHook postFixup -} - - -distPhase() { - runHook preDist - - echo "dist flags: $distFlags ${distFlagsArray[@]}" - make ${makefile:+-f $makefile} $distFlags "${distFlagsArray[@]}" ${distTarget:-dist} - - if test "$dontCopyDist" != 1; then - mkdir -p "$out/tarballs" - - # Note: don't quote $tarballs, since we explicitly permit - # wildcards in there. - cp -pvd ${tarballs:-*.tar.gz} $out/tarballs - fi - - runHook postDist -} - - -showPhaseHeader() { - local phase="$1" - case $phase in - unpackPhase) header "unpacking sources";; - patchPhase) header "patching sources";; - configurePhase) header "configuring";; - buildPhase) header "building";; - checkPhase) header "running tests";; - installPhase) header "installing";; - fixupPhase) header "post-installation fixup";; - *) header "$phase";; - esac -} - - -genericBuild() { - header "building $out" - - if test -n "$buildCommand"; then - eval "$buildCommand" - return - fi - - if test -z "$phases"; then - phases="$prePhases unpackPhase patchPhase $preConfigurePhases \ - configurePhase $preBuildPhases buildPhase checkPhase \ - $preInstallPhases installPhase $preFixupPhases fixupPhase \ - $preDistPhases distPhase $postPhases"; - fi - - for curPhase in $phases; do - if test "$curPhase" = buildPhase -a -n "$dontBuild"; then continue; fi - if test "$curPhase" = checkPhase -a -z "$doCheck"; then continue; fi - if test "$curPhase" = installPhase -a -n "$dontInstall"; then continue; fi - if test "$curPhase" = fixupPhase -a -n "$dontFixup"; then continue; fi - if test "$curPhase" = distPhase -a -z "$doDist"; then continue; fi - - showPhaseHeader "$curPhase" - dumpVars - - # Evaluate the variable named $curPhase if it exists, otherwise the - # function named $curPhase. - eval "${!curPhase:-$curPhase}" - - if test "$curPhase" = unpackPhase; then - cd "${sourceRoot:-.}" - fi - - stopNest - done - - stopNest -} - - - - -dumpVars diff --git a/pkgs/stdenv/mingw/simple-stdenv/builder.sh b/pkgs/stdenv/mingw/simple-stdenv/builder.sh deleted file mode 100644 index 0cbc13e4fab3..000000000000 --- a/pkgs/stdenv/mingw/simple-stdenv/builder.sh +++ /dev/null @@ -1,80 +0,0 @@ -if test -z "$out"; then - out="$OUT" - initialPath="$INITIALPATH" - shell="$SHELL" -fi - -setupPath= -for i in $initialPath; do - setupPath=$setupPath${setupPath:+:}$i -done - -PATH=$setupPath -export PATH - -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" -} - -# !!! Awful copy&paste. -substitute() { - local input="\$1" - local output="\$2" - - local -a params=("\$@") - - local sedScript=\$NIX_BUILD_TOP/.sedargs - rm -f \$sedScript - touch \$sedScript - - local n p pattern replacement varName - - for ((n = 2; n < \${#params[*]}; n += 1)); do - p=\${params[\$n]} - - if test "\$p" = "--replace"; then - pattern=\${params[\$((n + 1))]} - replacement=\${params[\$((n + 2))]} - n=\$((n + 2)) - echo "s^\$pattern^\$replacement^g" >> \$sedScript - sedArgs=("\${sedArgs[@]}" "-e" ) - fi - - if test "\$p" = "--subst-var"; then - varName=\${params[\$((n + 1))]} - n=\$((n + 1)) - echo "s^@\${varName}@^\${!varName}^g" >> \$sedScript - fi - - if test "\$p" = "--subst-var-by"; then - varName=\${params[\$((n + 1))]} - replacement=\${params[\$((n + 2))]} - n=\$((n + 2)) - echo "s^@\${varName}@^\$replacement^g" >> \$sedScript - fi - - done - - sed -f \$sedScript < "\$input" > "\$output".tmp - if test -x "\$output"; then - chmod +x "\$output".tmp - fi - mv -f "\$output".tmp "\$output" -} -EOF - -chmod +x $out/setup diff --git a/pkgs/stdenv/mingw/simple-stdenv/default.nix b/pkgs/stdenv/mingw/simple-stdenv/default.nix deleted file mode 100644 index 379cda0a598b..000000000000 --- a/pkgs/stdenv/mingw/simple-stdenv/default.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ system -, name -, shell -, path -, extraEnv ? {} -, extraShellOptions ? [] -}: - -let { - body = - derivation ({ - inherit system name; - initialPath = path; - builder = shell; - args = extraShellOptions ++ ["-e" ./builder.sh]; - } // extraEnv) - - // { - mkDerivation = attrs: - derivation ((removeAttrs attrs ["meta"]) // { - builder = shell; - args = extraShellOptions ++ ["-e" ] ++ [attrs.builder]; # (if attrs ? builder then [attrs.builder] else [ ../fix-builder.sh ../default-builder.sh] ) ; - stdenv = body; - system = body.system; - } - - // extraEnv); - - inherit shell; - }; -} |