Merge pull request #21846 from peterhoeg/f/nim

nim: include all supporting tools
This commit is contained in:
Michael Raskin 2017-01-13 17:49:25 +00:00 committed by GitHub
commit 94b0ad124e
3 changed files with 46 additions and 59 deletions

@ -1,4 +1,4 @@
{ stdenv, lib, fetchurl, makeWrapper, gcc }:
{ stdenv, lib, fetchurl, makeWrapper, nodejs, openssl, pcre, readline, sqlite }:
stdenv.mkDerivation rec {
name = "nim-${version}";
@ -9,24 +9,52 @@ stdenv.mkDerivation rec {
sha256 = "0rsibhkc5n548bn9yyb9ycrdgaph5kq84sfxc9gabjs7pqirh6cy";
};
buildInputs = [ makeWrapper ];
doCheck = true;
buildPhase = "sh build.sh";
enableParallelBuilding = true;
installPhase =
''
install -Dt "$out/bin" bin/nim
substituteInPlace install.sh --replace '$1/nim' "$out"
sh install.sh $out
wrapProgram $out/bin/nim \
--suffix PATH : ${lib.makeBinPath [ gcc ]}
'';
NIX_LDFLAGS = [
"-lcrypto"
"-lpcre"
"-lreadline"
"-lsqlite3"
];
meta = with stdenv.lib;
{ description = "Statically typed, imperative programming language";
homepage = http://nim-lang.org/;
license = licenses.mit;
maintainers = with maintainers; [ ehmry peterhoeg ];
platforms = platforms.linux ++ platforms.darwin; # arbitrary
};
# 1. nodejs is only needed for tests
# 2. we could create a separate derivation for the "written in c" version of nim
# used for bootstrapping, but koch insists on moving the nim compiler around
# as part of building it, so it cannot be read-only
buildInputs = [
makeWrapper nodejs
openssl pcre readline sqlite
];
buildPhase = ''
sh build.sh
./bin/nim c koch
./koch boot -d:release \
-d:useGnuReadline \
${lib.optionals (stdenv.isDarwin || stdenv.isLinux) "-d:nativeStacktrace"}
./koch tools -d:release
'';
installPhase = ''
install -Dt $out/bin bin/* koch
./koch install $out
mv $out/nim/bin/* $out/bin/ && rmdir $out/nim/bin
mv $out/nim/* $out/ && rmdir $out/nim
wrapProgram $out/bin/nim \
--suffix PATH : ${lib.makeBinPath [ stdenv.cc ]}
'';
checkPhase = "./koch tests";
meta = with stdenv.lib; {
description = "Statically typed, imperative programming language";
homepage = http://nim-lang.org/;
license = licenses.mit;
maintainers = with maintainers; [ ehmry peterhoeg ];
platforms = with platforms; linux ++ darwin; # arbitrary
};
}

@ -1,40 +0,0 @@
{ stdenv, fetchFromGitHub, nim, openssl }:
stdenv.mkDerivation rec {
name = "nimble-${version}";
version = "0.7.10";
src = fetchFromGitHub {
owner = "nim-lang";
repo = "nimble";
rev = "v${version}";
sha256 = "1bcv8chir73nn6x7q8n3sw2scf3m0x2w9gkkzx162ryivza1nm1r";
};
buildInputs = [ nim openssl ];
patchPhase = ''
substituteInPlace src/nimble.nim.cfg --replace "./vendor/nim" "${nim}/share"
echo "--clib:crypto" >> src/nimble.nim.cfg
'';
buildPhase = ''
cd src && nim c -d:release nimble
'';
installPhase = ''
mkdir -p $out/bin
cp nimble $out/bin
'';
dontStrip = true;
meta = with stdenv.lib; {
description = "Package manager for the Nim programming language";
homepage = https://github.com/nim-lang/nimble;
license = licenses.bsd2;
maintainers = with maintainers; [ kamilchm ];
platforms = platforms.linux ++ platforms.darwin;
};
}

@ -5279,7 +5279,6 @@ in
mozart = mozart-binary;
nim = callPackage ../development/compilers/nim { };
nimble = callPackage ../development/tools/nimble { };
nrpl = callPackage ../development/tools/nrpl { };
neko = callPackage ../development/compilers/neko { };