mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-12-28 14:22:50 +03:00
Merge pull request #13131 from Ericson2314/haskell-cross-rebase
Generalize some GHCJS stuff for other cross compilers
This commit is contained in:
commit
9482be59e7
@ -1,8 +1,9 @@
|
|||||||
{ stdenv, fetchurl, fetchpatch, ghc, perl, gmp, ncurses, libiconv, binutils, coreutils
|
{ stdenv, fetchurl, fetchpatch, bootPkgs, perl, gmp, ncurses, libiconv, binutils, coreutils
|
||||||
, libxml2, libxslt, docbook_xsl, docbook_xml_dtd_45, docbook_xml_dtd_42, hscolour
|
, libxml2, libxslt, docbook_xsl, docbook_xml_dtd_45, docbook_xml_dtd_42, hscolour
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (bootPkgs) ghc;
|
||||||
|
|
||||||
buildMK = ''
|
buildMK = ''
|
||||||
libraries/integer-gmp_CONFIGURE_OPTS += --configure-option=--with-gmp-libraries="${gmp}/lib"
|
libraries/integer-gmp_CONFIGURE_OPTS += --configure-option=--with-gmp-libraries="${gmp}/lib"
|
||||||
@ -60,6 +61,10 @@ stdenv.mkDerivation rec {
|
|||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
inherit bootPkgs;
|
||||||
|
};
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "http://haskell.org/ghc";
|
homepage = "http://haskell.org/ghc";
|
||||||
description = "The Glasgow Haskell Compiler";
|
description = "The Glasgow Haskell Compiler";
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
{ stdenv, fetchurl, fetchpatch, ghc, perl, gmp, ncurses, libiconv, binutils, coreutils
|
{ stdenv, fetchurl, fetchpatch, bootPkgs, perl, gmp, ncurses, libiconv, binutils, coreutils
|
||||||
, libxml2, libxslt, docbook_xsl, docbook_xml_dtd_45, docbook_xml_dtd_42, hscolour
|
, libxml2, libxslt, docbook_xsl, docbook_xml_dtd_45, docbook_xml_dtd_42, hscolour
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (bootPkgs) ghc;
|
||||||
|
|
||||||
docFixes = fetchurl {
|
docFixes = fetchurl {
|
||||||
url = "https://downloads.haskell.org/~ghc/7.10.3/ghc-7.10.3a.patch";
|
url = "https://downloads.haskell.org/~ghc/7.10.3/ghc-7.10.3a.patch";
|
||||||
@ -61,6 +62,10 @@ stdenv.mkDerivation rec {
|
|||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
inherit bootPkgs;
|
||||||
|
};
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "http://haskell.org/ghc";
|
homepage = "http://haskell.org/ghc";
|
||||||
description = "The Glasgow Haskell Compiler";
|
description = "The Glasgow Haskell Compiler";
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
{ stdenv, fetchurl, fetchpatch, ghc, perl, gmp, ncurses, libiconv, binutils, coreutils
|
{ stdenv, fetchurl, fetchpatch, bootPkgs, perl, gmp, ncurses, libiconv, binutils, coreutils
|
||||||
, hscolour
|
, hscolour
|
||||||
}:
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (bootPkgs) ghc;
|
||||||
|
|
||||||
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "8.0.0.20160204";
|
version = "8.0.0.20160204";
|
||||||
name = "ghc-${version}";
|
name = "ghc-${version}";
|
||||||
@ -51,6 +55,10 @@ stdenv.mkDerivation rec {
|
|||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
inherit bootPkgs;
|
||||||
|
};
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "http://haskell.org/ghc";
|
homepage = "http://haskell.org/ghc";
|
||||||
description = "The Glasgow Haskell Compiler";
|
description = "The Glasgow Haskell Compiler";
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
{ stdenv, fetchgit, ghc, perl, gmp, ncurses, libiconv, binutils, coreutils
|
{ stdenv, fetchgit, bootPkgs, perl, gmp, ncurses, libiconv, binutils, coreutils
|
||||||
, autoconf, automake, happy, alex
|
, autoconf, automake, happy, alex
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
let
|
||||||
|
inherit (bootPkgs) ghc;
|
||||||
|
|
||||||
|
in stdenv.mkDerivation rec {
|
||||||
version = "7.11.20151216";
|
version = "7.11.20151216";
|
||||||
name = "ghc-${version}";
|
name = "ghc-${version}";
|
||||||
rev = "28638dfe79e915f33d75a1b22c5adce9e2b62b97";
|
rev = "28638dfe79e915f33d75a1b22c5adce9e2b62b97";
|
||||||
@ -62,6 +65,10 @@ stdenv.mkDerivation rec {
|
|||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
inherit bootPkgs;
|
||||||
|
};
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "http://haskell.org/ghc";
|
homepage = "http://haskell.org/ghc";
|
||||||
description = "The Glasgow Haskell Compiler";
|
description = "The Glasgow Haskell Compiler";
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{ stdenv, fetchgit, ghc, perl, gmp, ncurses, libiconv, autoconf, automake, happy, alex }:
|
{ stdenv, fetchgit, bootPkgs, perl, gmp, ncurses, libiconv, autoconf, automake, happy, alex }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (bootPkgs) ghc;
|
||||||
|
|
||||||
buildMK = ''
|
buildMK = ''
|
||||||
libraries/integer-gmp_CONFIGURE_OPTS += --configure-option=--with-gmp-libraries="${gmp}/lib"
|
libraries/integer-gmp_CONFIGURE_OPTS += --configure-option=--with-gmp-libraries="${gmp}/lib"
|
||||||
@ -66,6 +67,10 @@ stdenv.mkDerivation rec {
|
|||||||
# that in turn causes GHCi to abort
|
# that in turn causes GHCi to abort
|
||||||
stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!stdenv.isDarwin) "--keep-file-symbols";
|
stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!stdenv.isDarwin) "--keep-file-symbols";
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
inherit bootPkgs;
|
||||||
|
};
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = "http://haskell.org/ghc";
|
homepage = "http://haskell.org/ghc";
|
||||||
description = "The dependently-typed 'nokinds' branch of the Glasgow Haskell Compiler by Richard Eisenberg";
|
description = "The dependently-typed 'nokinds' branch of the Glasgow Haskell Compiler by Richard Eisenberg";
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
, ghcjs-prim
|
, ghcjs-prim
|
||||||
, regex-posix
|
, regex-posix
|
||||||
|
|
||||||
, ghc, gmp
|
, bootPkgs, gmp
|
||||||
, jailbreak-cabal
|
, jailbreak-cabal
|
||||||
|
|
||||||
, runCommand
|
, runCommand
|
||||||
@ -41,8 +41,11 @@
|
|||||||
, ghcjsBoot ? import ./ghcjs-boot.nix { inherit fetchgit runCommand; }
|
, ghcjsBoot ? import ./ghcjs-boot.nix { inherit fetchgit runCommand; }
|
||||||
, shims ? import ./shims.nix { inherit fetchFromGitHub; }
|
, shims ? import ./shims.nix { inherit fetchFromGitHub; }
|
||||||
}:
|
}:
|
||||||
let version = "0.2.0"; in
|
let
|
||||||
mkDerivation (rec {
|
inherit (bootPkgs) ghc;
|
||||||
|
version = "0.2.0";
|
||||||
|
|
||||||
|
in mkDerivation (rec {
|
||||||
pname = "ghcjs";
|
pname = "ghcjs";
|
||||||
inherit version;
|
inherit version;
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
@ -114,8 +117,9 @@ mkDerivation (rec {
|
|||||||
--with-gmp-libraries ${gmp}/lib
|
--with-gmp-libraries ${gmp}/lib
|
||||||
'';
|
'';
|
||||||
passthru = {
|
passthru = {
|
||||||
|
inherit bootPkgs;
|
||||||
|
isCross = true;
|
||||||
isGhcjs = true;
|
isGhcjs = true;
|
||||||
nativeGhc = ghc;
|
|
||||||
inherit nodejs ghcjsBoot;
|
inherit nodejs ghcjsBoot;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,77 +0,0 @@
|
|||||||
{ stdenv, ghc, makeWrapper, coreutils, writeScript }:
|
|
||||||
let
|
|
||||||
ghcjs = ghc;
|
|
||||||
packageDBFlag = "-package-db";
|
|
||||||
|
|
||||||
GHCGetPackages = writeScript "ghc-get-packages.sh" ''
|
|
||||||
#! ${stdenv.shell}
|
|
||||||
# Usage:
|
|
||||||
# $1: version of GHC
|
|
||||||
# $2: invocation path of GHC
|
|
||||||
# $3: prefix
|
|
||||||
version="$1"
|
|
||||||
if test -z "$3"; then
|
|
||||||
prefix="${packageDBFlag} "
|
|
||||||
else
|
|
||||||
prefix="$3"
|
|
||||||
fi
|
|
||||||
PATH="$PATH:$2"
|
|
||||||
IFS=":"
|
|
||||||
for p in $PATH; do
|
|
||||||
for i in "$p/../share/ghcjs/$system-${ghcjs.version}-${ghcjs.ghc.version}"{,/lib,/ghcjs}"/package.conf.d" "$p/../lib/ghcjs-${ghc.version}_ghc-${ghc.ghc.version}/package.conf.d" ; do
|
|
||||||
# output takes place here
|
|
||||||
test -f $i/package.cache && echo -n " $prefix$i"
|
|
||||||
done
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
|
|
||||||
GHCPackages = writeScript "ghc-packages.sh" ''
|
|
||||||
#! ${stdenv.shell} -e
|
|
||||||
declare -A GHC_PACKAGES_HASH # using bash4 hashs to get uniq paths
|
|
||||||
|
|
||||||
for arg in $(${GHCGetPackages} ${ghcjs.version} "$(dirname $0)"); do # Why is ghc.version passed in from here instead of captured in the other script directly?
|
|
||||||
case "$arg" in
|
|
||||||
${packageDBFlag}) ;;
|
|
||||||
*)
|
|
||||||
CANONICALIZED="$(${coreutils}/bin/readlink -f -- "$arg")"
|
|
||||||
GHC_PACKAGES_HASH["$CANONICALIZED"]= ;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
for path in ''${!GHC_PACKAGES_HASH[@]}; do
|
|
||||||
echo -n "$path:"
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
stdenv.mkDerivation {
|
|
||||||
name = "ghcjs-ghc${ghcjs.ghc.version}-${ghcjs.version}-wrapper";
|
|
||||||
|
|
||||||
buildInputs = [makeWrapper];
|
|
||||||
propagatedBuildInputs = [ghcjs];
|
|
||||||
|
|
||||||
unpackPhase = "true";
|
|
||||||
installPhase = ''
|
|
||||||
runHook preInstall
|
|
||||||
|
|
||||||
mkdir -p $out/bin
|
|
||||||
for prg in ghcjs ; do
|
|
||||||
makeWrapper $ghc/bin/$prg $out/bin/$prg --add-flags "\$(${GHCGetPackages} ${ghcjs.version} \"\$(dirname \$0)\")"
|
|
||||||
done
|
|
||||||
for prg in ghcjs-pkg ; do
|
|
||||||
makeWrapper $ghc/bin/$prg $out/bin/$prg --add-flags "\$(${GHCGetPackages} ${ghcjs.version} \"\$(dirname \$0)\" -${packageDBFlag}=)"
|
|
||||||
done
|
|
||||||
|
|
||||||
mkdir -p $out/nix-support
|
|
||||||
ln -s $out/nix-support/propagated-build-inputs $out/nix-support/propagated-user-env-packages
|
|
||||||
|
|
||||||
mkdir -p $out/share/doc
|
|
||||||
ln -s $ghc/lib $out/lib
|
|
||||||
ln -s $ghc/share/doc/ghc $out/share/doc/ghc-${ghcjs.version}
|
|
||||||
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
|
||||||
|
|
||||||
ghc = ghcjs;
|
|
||||||
inherit GHCGetPackages GHCPackages;
|
|
||||||
inherit (ghcjs) meta version;
|
|
||||||
}
|
|
@ -56,8 +56,17 @@ let
|
|||||||
inherit (stdenv.lib) optional optionals optionalString versionOlder
|
inherit (stdenv.lib) optional optionals optionalString versionOlder
|
||||||
concatStringsSep enableFeature optionalAttrs toUpper;
|
concatStringsSep enableFeature optionalAttrs toUpper;
|
||||||
|
|
||||||
|
isCross = ghc.isCross or false;
|
||||||
isGhcjs = ghc.isGhcjs or false;
|
isGhcjs = ghc.isGhcjs or false;
|
||||||
nativeGhc = if isGhcjs then ghc.nativeGhc else ghc;
|
packageDbFlag = if isGhcjs || versionOlder "7.6" ghc.version
|
||||||
|
then "package-db"
|
||||||
|
else "package-conf";
|
||||||
|
|
||||||
|
nativeGhc = if isCross then ghc.bootPkgs.ghc else ghc;
|
||||||
|
nativeIsCross = nativeGhc.isCross or false;
|
||||||
|
nativePackageDbFlag = if versionOlder "7.6" nativeGhc.version
|
||||||
|
then "package-db"
|
||||||
|
else "package-conf";
|
||||||
|
|
||||||
newCabalFileUrl = "http://hackage.haskell.org/package/${pname}-${version}/revision/${revision}.cabal";
|
newCabalFileUrl = "http://hackage.haskell.org/package/${pname}-${version}/revision/${revision}.cabal";
|
||||||
newCabalFile = fetchurl {
|
newCabalFile = fetchurl {
|
||||||
@ -71,9 +80,6 @@ let
|
|||||||
main = defaultMain
|
main = defaultMain
|
||||||
'';
|
'';
|
||||||
|
|
||||||
ghc76xOrLater = isGhcjs || stdenv.lib.versionOlder "7.6" ghc.version;
|
|
||||||
packageDbFlag = if ghc76xOrLater then "package-db" else "package-conf";
|
|
||||||
|
|
||||||
hasActiveLibrary = isLibrary && (enableStaticLibraries || enableSharedLibraries || enableLibraryProfiling);
|
hasActiveLibrary = isLibrary && (enableStaticLibraries || enableSharedLibraries || enableLibraryProfiling);
|
||||||
|
|
||||||
# We cannot enable -j<n> parallelism for libraries because GHC is far more
|
# We cannot enable -j<n> parallelism for libraries because GHC is far more
|
||||||
@ -97,7 +103,7 @@ let
|
|||||||
(optionalString (isGhcjs || versionOlder "7.4" ghc.version) (enableFeature enableSharedExecutables "executable-dynamic"))
|
(optionalString (isGhcjs || versionOlder "7.4" ghc.version) (enableFeature enableSharedExecutables "executable-dynamic"))
|
||||||
(optionalString (isGhcjs || versionOlder "7" ghc.version) (enableFeature doCheck "tests"))
|
(optionalString (isGhcjs || versionOlder "7" ghc.version) (enableFeature doCheck "tests"))
|
||||||
] ++ optionals isGhcjs [
|
] ++ optionals isGhcjs [
|
||||||
"--with-hsc2hs=${ghc.nativeGhc}/bin/hsc2hs"
|
"--with-hsc2hs=${nativeGhc}/bin/hsc2hs"
|
||||||
"--ghcjs"
|
"--ghcjs"
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -125,7 +131,7 @@ let
|
|||||||
|
|
||||||
ghcEnv = ghc.withPackages (p: haskellBuildInputs);
|
ghcEnv = ghc.withPackages (p: haskellBuildInputs);
|
||||||
|
|
||||||
setupBuilder = if isGhcjs then "${nativeGhc}/bin/ghc" else ghcCommand;
|
setupBuilder = if isCross then "${nativeGhc}/bin/ghc" else ghcCommand;
|
||||||
setupCommand = "./Setup";
|
setupCommand = "./Setup";
|
||||||
ghcCommand = if isGhcjs then "ghcjs" else "ghc";
|
ghcCommand = if isGhcjs then "ghcjs" else "ghc";
|
||||||
ghcCommandCaps = toUpper ghcCommand;
|
ghcCommandCaps = toUpper ghcCommand;
|
||||||
|
@ -34,24 +34,29 @@ rec {
|
|||||||
ghc784 = callPackage ../development/compilers/ghc/7.8.4.nix {
|
ghc784 = callPackage ../development/compilers/ghc/7.8.4.nix {
|
||||||
ghc = compiler.ghc742Binary;
|
ghc = compiler.ghc742Binary;
|
||||||
};
|
};
|
||||||
ghc7102 = callPackage ../development/compilers/ghc/7.10.2.nix {
|
ghc7102 = callPackage ../development/compilers/ghc/7.10.2.nix rec {
|
||||||
ghc = compiler.ghc784; inherit (packages.ghc784) hscolour;
|
bootPkgs = packages.ghc784;
|
||||||
|
inherit (bootPkgs) hscolour;
|
||||||
};
|
};
|
||||||
ghc7103 = callPackage ../development/compilers/ghc/7.10.3.nix {
|
ghc7103 = callPackage ../development/compilers/ghc/7.10.3.nix rec {
|
||||||
ghc = compiler.ghc784; inherit (packages.ghc784) hscolour;
|
bootPkgs = packages.ghc784;
|
||||||
|
inherit (bootPkgs) hscolour;
|
||||||
};
|
};
|
||||||
ghc801 = callPackage ../development/compilers/ghc/8.0.1.nix {
|
ghc801 = callPackage ../development/compilers/ghc/8.0.1.nix rec {
|
||||||
ghc = compiler.ghc7103; inherit (packages.ghc7103) hscolour;
|
bootPkgs = packages.ghc7103;
|
||||||
|
inherit (bootPkgs) hscolour;
|
||||||
};
|
};
|
||||||
ghcHEAD = callPackage ../development/compilers/ghc/head.nix {
|
ghcHEAD = callPackage ../development/compilers/ghc/head.nix rec {
|
||||||
inherit (packages.ghc784) ghc alex happy;
|
bootPkgs = packages.ghc784;
|
||||||
|
inherit (bootPkgs) alex happy;
|
||||||
};
|
};
|
||||||
ghcNokinds = callPackage ../development/compilers/ghc/nokinds.nix {
|
ghcNokinds = callPackage ../development/compilers/ghc/nokinds.nix rec {
|
||||||
inherit (packages.ghc784) ghc alex happy;
|
bootPkgs = packages.ghc784;
|
||||||
|
inherit (bootPkgs) alex happy;
|
||||||
};
|
};
|
||||||
|
|
||||||
ghcjs = packages.ghc7103.callPackage ../development/compilers/ghcjs {
|
ghcjs = packages.ghc7103.callPackage ../development/compilers/ghcjs {
|
||||||
ghc = compiler.ghc7103;
|
bootPkgs = packages.ghc7103;
|
||||||
};
|
};
|
||||||
|
|
||||||
jhc = callPackage ../development/compilers/jhc {
|
jhc = callPackage ../development/compilers/jhc {
|
||||||
|
Loading…
Reference in New Issue
Block a user