diff options
author | Orivej Desh <orivej@gmx.fr> | 2017-10-03 18:29:47 +0000 |
---|---|---|
committer | Orivej Desh <orivej@gmx.fr> | 2017-10-04 07:37:35 +0000 |
commit | 766ede06da2ceaee22e955ffcc1ef138ae0d4484 (patch) | |
tree | 5a730e4d36be2d983d0b0a521ec103b6fde51efa /pkgs/development/compilers/crystal/default.nix | |
parent | bc2ac2ae5e90d2ff208bc9275090b6463af99384 (diff) | |
download | nixpkgs-766ede06da2ceaee22e955ffcc1ef138ae0d4484.tar nixpkgs-766ede06da2ceaee22e955ffcc1ef138ae0d4484.tar.gz nixpkgs-766ede06da2ceaee22e955ffcc1ef138ae0d4484.tar.bz2 nixpkgs-766ede06da2ceaee22e955ffcc1ef138ae0d4484.tar.lz nixpkgs-766ede06da2ceaee22e955ffcc1ef138ae0d4484.tar.xz nixpkgs-766ede06da2ceaee22e955ffcc1ef138ae0d4484.tar.zst nixpkgs-766ede06da2ceaee22e955ffcc1ef138ae0d4484.zip |
crystal: fix build by using the previous bootstrap
Diffstat (limited to 'pkgs/development/compilers/crystal/default.nix')
-rw-r--r-- | pkgs/development/compilers/crystal/default.nix | 98 |
1 files changed, 37 insertions, 61 deletions
diff --git a/pkgs/development/compilers/crystal/default.nix b/pkgs/development/compilers/crystal/default.nix index 6b91fafd08d..6b817d06553 100644 --- a/pkgs/development/compilers/crystal/default.nix +++ b/pkgs/development/compilers/crystal/default.nix @@ -1,92 +1,66 @@ -{ stdenv, fetchurl, boehmgc, libatomic_ops, pcre, libevent, libiconv, llvm_4, makeWrapper }: +{ stdenv, fetchurl, boehmgc, libatomic_ops, pcre, libevent, libiconv, llvm, makeWrapper }: stdenv.mkDerivation rec { + name = "crystal-${version}"; version = "0.23.1"; - patch = "3"; - name = "crystal-${version}-${patch}"; - arch = - { - "x86_64-linux" = "linux-x86_64"; - "i686-linux" = "linux-i686"; - "x86_64-darwin" = "darwin-x86_64"; - }."${stdenv.system}" or (throw "system ${stdenv.system} not supported"); - - prebuiltBinary = fetchurl { - url = "https://github.com/crystal-lang/crystal/releases/download/${version}/crystal-${version}-${patch}-${arch}.tar.gz"; - sha256 = - { - "x86_64-linux" = "6a84cc866838ffa5250e28c3ce1a918a93f89c06393fe8cfd4068fcbbc66f3ab"; - "i686-linux" = "268a39b8d37385ff60d113d4d9fc966472160faa1e3bbf7ae58860ab6678aceb"; - "x86_64-darwin" = "d3f964ebfc5cd48fad73ab2484ea2a00268812276293dd0f7e9c7d184c8aad8a"; - }."${stdenv.system}" or (throw "system ${stdenv.system} not supported"); - }; src = fetchurl { url = "https://github.com/crystal-lang/crystal/archive/${version}.tar.gz"; sha256 = "8cf1b9a4eab29fca2f779ea186ae18f7ce444ce189c621925fa1a0c61dd5ff55"; }; + prebuiltName = "crystal-0.23.0-1"; + prebuiltSrc = let arch = { + "x86_64-linux" = "linux-x86_64"; + "i686-linux" = "linux-i686"; + "x86_64-darwin" = "darwin-x86_64"; + }."${stdenv.system}" or (throw "system ${stdenv.system} not supported"); + in fetchurl { + url = "https://github.com/crystal-lang/crystal/releases/download/0.23.0/${prebuiltName}-${arch}.tar.gz"; + sha256 = { + "x86_64-linux" = "0nhs7swbll8hrk15kmmywngkhij80x62axiskb1gjmiwvzhlh0qx"; + "i686-linux" = "03xp8d3lqflzzm26lpdn4yavj87qzgd6xyrqxp2pn9ybwrq8fx8a"; + "x86_64-darwin" = "1prz6c1gs8z7dgpdy2id2mjn1c8f5p2bf9b39985bav448njbyjz"; + }."${stdenv.system}"; + }; + + srcs = [ src prebuiltSrc ]; + # crystal on Darwin needs libiconv to build - buildInputs = [ - boehmgc libatomic_ops pcre libevent llvm_4 makeWrapper + libs = [ + boehmgc libatomic_ops pcre libevent ] ++ stdenv.lib.optionals stdenv.isDarwin [ libiconv ]; - libPath = stdenv.lib.makeLibraryPath ([ - boehmgc libatomic_ops pcre libevent - ] ++ stdenv.lib.optionals stdenv.isDarwin [ - libiconv - ]); + nativeBuildInputs = [ makeWrapper ]; - unpackPhase = '' - tar zxf ${src} - tar zxf ${prebuiltBinary} - ''; + buildInputs = libs ++ [ llvm ]; - sourceRoot = "."; + libPath = stdenv.lib.makeLibraryPath libs; + + sourceRoot = "${name}"; fixPrebuiltBinary = if stdenv.isDarwin then '' - wrapProgram $(pwd)/crystal-${version}-${patch}/embedded/bin/crystal \ + wrapProgram ../${prebuiltName}/embedded/bin/crystal \ --suffix DYLD_LIBRARY_PATH : $libPath '' else '' patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ - crystal-${version}-${patch}/embedded/bin/crystal + ../${prebuiltName}/embedded/bin/crystal patchelf --set-rpath ${ stdenv.lib.makeLibraryPath [ stdenv.cc.cc ] } \ - crystal-${version}-${patch}/embedded/bin/crystal + ../${prebuiltName}/embedded/bin/crystal ''; - newline = "\n"; - - buildPhase = '' - # patch the script which launches the prebuilt compiler - patchShebangs $(pwd)/crystal-${version}-${patch}/bin/crystal - patchShebangs $(pwd)/crystal-${version}/bin/crystal - # Due to https://github.com/crystal-lang/crystal/issues/4719, - # when building Crystal with LLVM 4 with debug infos from prebuilt binary (w/ LLVM 3.8) will always be failed. - # So we are going to build a LLVM 4 version without debug info, - # and use it to build Crystal with debug info on LLVM 4. - substituteInPlace $(pwd)/crystal-${version}/Makefile --replace \ - "release ?=" "no_debug ?= ##${newline}force_rebuild ?= ##${newline}release ?=" - substituteInPlace $(pwd)/crystal-${version}/Makefile --replace \ - "FLAGS := " "FLAGS := \$(if \$(no_debug),--no-debug )" - substituteInPlace $(pwd)/crystal-${version}/Makefile --replace \ - "$(O)/crystal:" "\$(O)/crystal: \$(if \$(force_rebuild),../rebuild.tmp)" + preBuild = '' + patchShebangs bin/crystal + patchShebangs ../${prebuiltName}/bin/crystal ${fixPrebuiltBinary} - - cd crystal-${version} - # Build without debug infos on LLVM 4 - make release=1 no_debug=1 PATH="../crystal-${version}-${patch}/bin:$PATH" - - # Rebuild Crystal with debug infos from the binary we just built - touch $(pwd)/../rebuild.tmp - wrapProgram .build/crystal \ - --suffix LIBRARY_PATH : $libPath - make release=1 force_rebuild=1 - make doc + export PATH="$(pwd)/../${prebuiltName}/bin:$PATH" ''; + makeFlags = [ "CRYSTAL_CONFIG_VERSION=${version}" "release=1" "all" "doc" ]; + installPhase = '' install -Dm755 .build/crystal $out/bin/crystal wrapProgram $out/bin/crystal \ @@ -109,6 +83,8 @@ stdenv.mkDerivation rec { dontStrip = true; + enableParallelBuilding = true; + meta = { description = "A compiled language with Ruby like syntax and type inference"; homepage = https://crystal-lang.org/; |