forked from NixOS/nixpkgs
-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
The src points to the obsidiansystems repo as it has the ghcjs ported from 8.10.5 to 8.10.7, and a bunch of other fixes (NixOS#812, NixOS#811, NixOS#809) (cherry picked from commit ba25b27) Modified the stm_2_5_0_1 -> stm_2_5_0_0
- Loading branch information
Showing
10 changed files
with
459 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
{ haskellLib }: | ||
|
||
let inherit (haskellLib) addBuildTools appendConfigureFlag dontHaddock doJailbreak; | ||
in self: super: { | ||
ghcjs = doJailbreak (super.ghcjs.overrideScope (self: super: { | ||
optparse-applicative = self.optparse-applicative_0_15_1_0; | ||
})); | ||
} |
60 changes: 60 additions & 0 deletions
60
pkgs/development/compilers/ghcjs/8.10/configured-ghcjs-src.nix
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
{ perl | ||
, autoconf | ||
, automake | ||
, python3 | ||
, gcc | ||
, cabal-install | ||
, runCommand | ||
, lib | ||
, stdenv | ||
|
||
, ghc | ||
, happy | ||
, alex | ||
|
||
, ghcjsSrc | ||
, version | ||
}: | ||
|
||
runCommand "configured-ghcjs-src" { | ||
nativeBuildInputs = [ | ||
perl | ||
autoconf | ||
automake | ||
python3 | ||
ghc | ||
happy | ||
alex | ||
cabal-install | ||
] ++ lib.optionals stdenv.isDarwin [ | ||
gcc # https://github.com/ghcjs/ghcjs/issues/663 | ||
]; | ||
inherit ghcjsSrc; | ||
} '' | ||
export HOME=$(pwd) | ||
mkdir $HOME/.cabal | ||
touch $HOME/.cabal/config | ||
cp -r "$ghcjsSrc" "$out" | ||
chmod -R +w "$out" | ||
cd "$out" | ||
# TODO: Find a better way to avoid impure version numbers | ||
sed -i 's/RELEASE=NO/RELEASE=YES/' ghc/configure.ac | ||
# These files are needed by ghc-boot package, and these are generated by the | ||
# make/hadrian build system when compiling ghc. Since we dont have access to | ||
# the generated code of the ghc while it got built, here is a little hack to | ||
# generate these again. | ||
runhaskell ${./generate_host_version.hs} | ||
mkdir -p utils/pkg-cache/ghc/libraries/ghc-boot/dist-install/build/GHC/Platform | ||
mv Host.hs utils/pkg-cache/ghc/libraries/ghc-boot/dist-install/build/GHC/Platform/Host.hs | ||
mv Version.hs utils/pkg-cache/ghc/libraries/ghc-boot/dist-install/build/GHC/Version.hs | ||
# The ghcjs has the following hardcoded paths of lib dir in its code. Patching | ||
# these to match the path expected by the nixpkgs's generic-builder, etc. | ||
sed -i 's/libSubDir = "lib"/libSubDir = "lib\/ghcjs-${version}"/' src-bin/Boot.hs | ||
sed -i 's@let libDir = takeDirectory haddockPath </> ".." </> "lib"@let libDir = takeDirectory haddockPath </> ".." </> "lib/ghcjs-${version}"@' src-bin/HaddockDriver.hs | ||
patchShebangs . | ||
./utils/makePackages.sh copy | ||
'' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
{ stdenv | ||
, pkgsHostHost | ||
, callPackage | ||
, fetchgit | ||
, ghcjsSrcJson ? null | ||
, ghcjsSrc ? fetchgit (builtins.fromJSON (builtins.readFile ghcjsSrcJson)) | ||
, bootPkgs | ||
, stage0 | ||
, haskellLib | ||
, cabal-install | ||
, nodejs | ||
, makeWrapper | ||
, xorg | ||
, gmp | ||
, pkg-config | ||
, gcc | ||
, lib | ||
, ghcjsDepOverrides ? (_:_:{}) | ||
, haskell | ||
, linkFarm | ||
, buildPackages | ||
}: | ||
|
||
let | ||
passthru = { | ||
configuredSrc = callPackage ./configured-ghcjs-src.nix { | ||
inherit ghcjsSrc; | ||
inherit (bootPkgs) ghc alex; | ||
inherit (bootGhcjs) version; | ||
happy = bootPkgs.happy_1_19_12; | ||
}; | ||
bootPkgs = bootPkgs.extend (lib.foldr lib.composeExtensions (_:_:{}) [ | ||
(self: _: import stage0 { | ||
inherit (passthru) configuredSrc; | ||
inherit (self) callPackage; | ||
}) | ||
|
||
(callPackage ./common-overrides.nix { | ||
inherit haskellLib; | ||
}) | ||
ghcjsDepOverrides | ||
]); | ||
|
||
targetPrefix = ""; | ||
inherit bootGhcjs; | ||
inherit (bootGhcjs) version; | ||
isGhcjs = true; | ||
|
||
enableShared = true; | ||
|
||
socket-io = pkgsHostHost.nodePackages."socket.io"; | ||
|
||
haskellCompilerName = "ghcjs-${bootGhcjs.version}"; | ||
}; | ||
|
||
bootGhcjs = haskellLib.justStaticExecutables passthru.bootPkgs.ghcjs; | ||
|
||
# This provides the stuff we need from the emsdk | ||
emsdk = linkFarm "emsdk" [ | ||
{ name = "upstream/bin"; path = buildPackages.clang + "/bin";} | ||
{ name = "upstream/emscripten"; path = buildPackages.emscripten + "/bin"; } | ||
]; | ||
|
||
in stdenv.mkDerivation { | ||
name = bootGhcjs.name; | ||
src = passthru.configuredSrc; | ||
nativeBuildInputs = [ | ||
bootGhcjs | ||
passthru.bootPkgs.ghc | ||
cabal-install | ||
nodejs | ||
makeWrapper | ||
xorg.lndir | ||
gmp | ||
pkg-config | ||
] ++ lib.optionals stdenv.isDarwin [ | ||
gcc # https://github.com/ghcjs/ghcjs/issues/663 | ||
]; | ||
dontConfigure = true; | ||
dontInstall = true; | ||
buildPhase = '' | ||
export HOME=$TMP | ||
mkdir $HOME/.cabal | ||
touch $HOME/.cabal/config | ||
cd lib/boot | ||
mkdir -p $out/bin | ||
mkdir -p $out/lib/${bootGhcjs.name} | ||
lndir ${bootGhcjs}/bin $out/bin | ||
chmod -R +w $out/bin | ||
rm $out/bin/ghcjs-boot | ||
cp ${bootGhcjs}/bin/ghcjs-boot $out/bin | ||
rm $out/bin/haddock | ||
cp ${bootGhcjs}/bin/haddock $out/bin | ||
cp ${bootGhcjs}/bin/private-ghcjs-hsc2hs $out/bin/ghcjs-hsc2hs | ||
wrapProgram $out/bin/ghcjs-boot --set ghcjs_libexecdir $out/bin | ||
wrapProgram $out/bin/ghcjs --add-flags "-B$out/lib/${bootGhcjs.name}" | ||
wrapProgram $out/bin/haddock --add-flags "-B$out/lib/${bootGhcjs.name}" | ||
wrapProgram $out/bin/ghcjs-pkg --add-flags "--global-package-db=$out/lib/${bootGhcjs.name}/package.conf.d" | ||
wrapProgram $out/bin/ghcjs-hsc2hs --add-flags "-I$out/lib/${bootGhcjs.name}/include --template=$out/lib/${bootGhcjs.name}/include/template-hsc.h" | ||
env PATH=$out/bin:$PATH $out/bin/ghcjs-boot --with-emsdk=${emsdk} --no-haddock | ||
''; | ||
|
||
enableParallelBuilding = true; | ||
|
||
inherit passthru; | ||
|
||
# The emscripten is broken on darwin | ||
meta.platforms = lib.platforms.linux; | ||
meta.maintainers = with lib.maintainers; [ obsidian-systems-maintenance ]; | ||
} |
54 changes: 54 additions & 0 deletions
54
pkgs/development/compilers/ghcjs/8.10/generate_host_version.hs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
-- Generate the Host.hs and Version.hs as done by hadrian/src/Rules/Generate.hs | ||
|
||
import GHC.Platform.Host | ||
import GHC.Version | ||
|
||
main = do | ||
writeFile "Version.hs" versionHs | ||
writeFile "Host.hs" platformHostHs | ||
|
||
-- | Generate @Version.hs@ files. | ||
versionHs :: String | ||
versionHs = unlines | ||
[ "module GHC.Version where" | ||
, "" | ||
, "import Prelude -- See Note [Why do we import Prelude here?]" | ||
, "" | ||
, "cProjectGitCommitId :: String" | ||
, "cProjectGitCommitId = " ++ show cProjectGitCommitId | ||
, "" | ||
, "cProjectVersion :: String" | ||
, "cProjectVersion = " ++ show cProjectVersion | ||
, "" | ||
, "cProjectVersionInt :: String" | ||
, "cProjectVersionInt = " ++ show cProjectVersionInt | ||
, "" | ||
, "cProjectPatchLevel :: String" | ||
, "cProjectPatchLevel = " ++ show cProjectPatchLevel | ||
, "" | ||
, "cProjectPatchLevel1 :: String" | ||
, "cProjectPatchLevel1 = " ++ show cProjectPatchLevel1 | ||
, "" | ||
, "cProjectPatchLevel2 :: String" | ||
, "cProjectPatchLevel2 = " ++ show cProjectPatchLevel2 | ||
] | ||
|
||
-- | Generate @Platform/Host.hs@ files. | ||
platformHostHs :: String | ||
platformHostHs = unlines | ||
[ "module GHC.Platform.Host where" | ||
, "" | ||
, "import GHC.Platform" | ||
, "" | ||
, "cHostPlatformArch :: Arch" | ||
, "cHostPlatformArch = " ++ show cHostPlatformArch | ||
, "" | ||
, "cHostPlatformOS :: OS" | ||
, "cHostPlatformOS = " ++ show cHostPlatformOS | ||
, "" | ||
, "cHostPlatformMini :: PlatformMini" | ||
, "cHostPlatformMini = PlatformMini" | ||
, " { platformMini_arch = cHostPlatformArch" | ||
, " , platformMini_os = cHostPlatformOS" | ||
, " }" | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
{ | ||
"url": "https://github.com/obsidiansystems/ghcjs", | ||
"rev": "9fc935f2c3ba6c33ec62eb83afc9f52a893eb68c", | ||
"sha256": "sha256:063dmir39c4i1z8ypnmq86g1x2vhqndmdpzc4hyzsy5jjqcbx6i3", | ||
"fetchSubmodules": true | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
{ callPackage, configuredSrc }: | ||
|
||
{ | ||
|
||
ghcjs = callPackage | ||
({ mkDerivation, aeson, alex, array, attoparsec, base, base16-bytestring | ||
, base64-bytestring, binary, bytestring, Cabal, containers | ||
, cryptohash, data-default, deepseq, directory, executable-path | ||
, filepath, ghc-boot, ghc-boot-th, ghc-compact, ghc-heap, ghc-paths | ||
, ghci, happy, hashable, hpc, http-types, HUnit, lens, lib | ||
, lifted-base, mtl, network, optparse-applicative, parallel, parsec | ||
, process, random, safe, shelly, split, stringsearch, syb, tar | ||
, template-haskell, terminfo, test-framework, test-framework-hunit | ||
, text, time, transformers, unix, unix-compat, unordered-containers | ||
, vector, wai, wai-app-static, wai-extra, wai-websockets, warp | ||
, webdriver, websockets, wl-pprint-text, xhtml, yaml | ||
}: | ||
mkDerivation { | ||
pname = "ghcjs"; | ||
version = "8.10.7"; | ||
src = configuredSrc + /.; | ||
isLibrary = true; | ||
isExecutable = true; | ||
libraryHaskellDepends = [ | ||
aeson array attoparsec base base16-bytestring base64-bytestring | ||
binary bytestring Cabal containers cryptohash data-default deepseq | ||
directory filepath ghc-boot ghc-boot-th ghc-compact ghc-heap | ||
ghc-paths ghci hashable hpc lens mtl optparse-applicative parallel | ||
parsec process safe split stringsearch syb template-haskell | ||
terminfo text time transformers unix unordered-containers vector | ||
wl-pprint-text yaml | ||
]; | ||
libraryToolDepends = [ alex happy ]; | ||
executableHaskellDepends = [ | ||
aeson array base binary bytestring Cabal containers deepseq | ||
directory executable-path filepath ghc-boot lens mtl | ||
optparse-applicative parsec process tar terminfo text time | ||
transformers unix unix-compat unordered-containers vector xhtml | ||
yaml | ||
]; | ||
testHaskellDepends = [ | ||
aeson base bytestring data-default deepseq directory filepath | ||
http-types HUnit lens lifted-base network optparse-applicative | ||
process random shelly test-framework test-framework-hunit text time | ||
transformers unordered-containers wai wai-app-static wai-extra | ||
wai-websockets warp webdriver websockets yaml | ||
]; | ||
description = "Haskell to JavaScript compiler"; | ||
license = lib.licenses.mit; | ||
}) {}; | ||
|
||
ghcjs-th = callPackage | ||
({ mkDerivation, base, binary, bytestring, containers, ghc-prim | ||
, ghci, lib, template-haskell | ||
}: | ||
mkDerivation { | ||
pname = "ghcjs-th"; | ||
version = "0.1.0.0"; | ||
src = configuredSrc + /lib/ghcjs-th; | ||
libraryHaskellDepends = [ | ||
base binary bytestring containers ghc-prim ghci template-haskell | ||
]; | ||
homepage = "http://github.com/ghcjs"; | ||
license = lib.licenses.mit; | ||
}) {}; | ||
|
||
ghcjs-prim = callPackage | ||
({ mkDerivation, base, ghc-prim, lib }: | ||
mkDerivation { | ||
pname = "ghcjs-prim"; | ||
version = "0.1.1.0"; | ||
src = ./.; | ||
libraryHaskellDepends = [ base ghc-prim ]; | ||
homepage = "http://github.com/ghcjs"; | ||
license = lib.licenses.mit; | ||
}) {}; | ||
} |
File renamed without changes.
14 changes: 14 additions & 0 deletions
14
pkgs/development/compilers/ghcjs/patches/vector-ghcjs-storable-set.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
diff --git a/Data/Vector/Storable/Mutable.hs b/Data/Vector/Storable/Mutable.hs | ||
index 8b538bc..2b74fce 100644 | ||
--- a/Data/Vector/Storable/Mutable.hs | ||
+++ b/Data/Vector/Storable/Mutable.hs | ||
@@ -197,7 +197,9 @@ storableSet (MVector n fp) x | ||
1 -> storableSetAsPrim n fp x (undefined :: Word8) | ||
2 -> storableSetAsPrim n fp x (undefined :: Word16) | ||
4 -> storableSetAsPrim n fp x (undefined :: Word32) | ||
+#if !defined(ghcjs_HOST_OS) | ||
8 -> storableSetAsPrim n fp x (undefined :: Word64) | ||
+#endif | ||
_ -> unsafeWithForeignPtr fp $ \p -> do | ||
poke p x | ||
|
Oops, something went wrong.