diff options
author | Alyssa Ross <hi@alyssa.is> | 2021-09-27 16:00:58 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2021-09-27 16:00:58 +0000 |
commit | c504e5d19d940926b3ddcf62c983d66f49f3cbb2 (patch) | |
tree | ec955e58bcac2cb93b9f8c10786b23f61d40cd7e /nixpkgs/pkgs/development/compilers/ghcjs/8.10 | |
parent | 72789cefce7b17419815f600fbd18238d89afcc9 (diff) | |
parent | 1737f98af6667560e3e4f930312f9b5002649d04 (diff) | |
download | nixlib-c504e5d19d940926b3ddcf62c983d66f49f3cbb2.tar nixlib-c504e5d19d940926b3ddcf62c983d66f49f3cbb2.tar.gz nixlib-c504e5d19d940926b3ddcf62c983d66f49f3cbb2.tar.bz2 nixlib-c504e5d19d940926b3ddcf62c983d66f49f3cbb2.tar.lz nixlib-c504e5d19d940926b3ddcf62c983d66f49f3cbb2.tar.xz nixlib-c504e5d19d940926b3ddcf62c983d66f49f3cbb2.tar.zst nixlib-c504e5d19d940926b3ddcf62c983d66f49f3cbb2.zip |
Merge commit '1737f98af6667560e3e4f930312f9b5002649d04'
Conflicts: nixpkgs/nixos/modules/services/networking/ssh/sshd.nix nixpkgs/pkgs/applications/networking/irc/weechat/scripts/default.nix nixpkgs/pkgs/development/node-packages/default.nix nixpkgs/pkgs/development/python-modules/priority/deadline.patch
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/ghcjs/8.10')
6 files changed, 326 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/compilers/ghcjs/8.10/common-overrides.nix b/nixpkgs/pkgs/development/compilers/ghcjs/8.10/common-overrides.nix new file mode 100644 index 000000000000..a83795635b90 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/ghcjs/8.10/common-overrides.nix @@ -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; + })); +} diff --git a/nixpkgs/pkgs/development/compilers/ghcjs/8.10/configured-ghcjs-src.nix b/nixpkgs/pkgs/development/compilers/ghcjs/8.10/configured-ghcjs-src.nix new file mode 100644 index 000000000000..9fa6fae1a593 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/ghcjs/8.10/configured-ghcjs-src.nix @@ -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 +'' diff --git a/nixpkgs/pkgs/development/compilers/ghcjs/8.10/default.nix b/nixpkgs/pkgs/development/compilers/ghcjs/8.10/default.nix new file mode 100644 index 000000000000..f8e7c31353f7 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/ghcjs/8.10/default.nix @@ -0,0 +1,121 @@ +{ 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; + + meta = { + platforms = with lib.platforms; linux ++ darwin; + + # Hydra limits jobs to only outputting 1 gigabyte worth of files. + # GHCJS outputs over 3 gigabytes. + # https://github.com/NixOS/nixpkgs/pull/137066#issuecomment-922335563 + hydraPlatforms = lib.platforms.none; + + maintainers = with lib.maintainers; [ obsidian-systems-maintenance ]; + }; + } diff --git a/nixpkgs/pkgs/development/compilers/ghcjs/8.10/generate_host_version.hs b/nixpkgs/pkgs/development/compilers/ghcjs/8.10/generate_host_version.hs new file mode 100644 index 000000000000..8bf2583d238c --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/ghcjs/8.10/generate_host_version.hs @@ -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" + , " }" + ] diff --git a/nixpkgs/pkgs/development/compilers/ghcjs/8.10/git.json b/nixpkgs/pkgs/development/compilers/ghcjs/8.10/git.json new file mode 100644 index 000000000000..18804d84acb1 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/ghcjs/8.10/git.json @@ -0,0 +1,6 @@ +{ + "url": "https://github.com/obsidiansystems/ghcjs", + "rev": "9fc935f2c3ba6c33ec62eb83afc9f52a893eb68c", + "sha256": "sha256:063dmir39c4i1z8ypnmq86g1x2vhqndmdpzc4hyzsy5jjqcbx6i3", + "fetchSubmodules": true +} diff --git a/nixpkgs/pkgs/development/compilers/ghcjs/8.10/stage0.nix b/nixpkgs/pkgs/development/compilers/ghcjs/8.10/stage0.nix new file mode 100644 index 000000000000..1cb476ab0cb6 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/ghcjs/8.10/stage0.nix @@ -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; + }) {}; +} |