From 6c6f620e5908d2f644873e286423d8adacfc3042 Mon Sep 17 00:00:00 2001 From: Karol Chmist Date: Tue, 12 Dec 2017 14:09:06 +0100 Subject: [PATCH] Wrap dotty to prevent installing all the files profile --- .../compilers/scala/dotty-bare.nix | 40 ++++++++++++++ pkgs/development/compilers/scala/dotty.nix | 52 +++++-------------- 2 files changed, 54 insertions(+), 38 deletions(-) create mode 100644 pkgs/development/compilers/scala/dotty-bare.nix diff --git a/pkgs/development/compilers/scala/dotty-bare.nix b/pkgs/development/compilers/scala/dotty-bare.nix new file mode 100644 index 000000000000..60cb3e9a2029 --- /dev/null +++ b/pkgs/development/compilers/scala/dotty-bare.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchurl, makeWrapper, jre }: + +stdenv.mkDerivation rec { + version = "0.4.0-RC1"; + name = "dotty-bare-${version}"; + + src = fetchurl { + url = "https://github.com/lampepfl/dotty/releases/download/${version}/dotty-${version}.tar.gz"; + sha256 = "1d1ab08b85bd6898ce6273fa50818de0d314fc6e5377fb6ee05494827043321b"; + }; + + propagatedBuildInputs = [ jre ] ; + buildInputs = [ makeWrapper ] ; + + installPhase = '' + mkdir -p $out + mv * $out + ''; + + fixupPhase = '' + bin_files=$(find $out/bin -type f ! -name common) + for f in $bin_files ; do + wrapProgram $f --set JAVA_HOME ${jre} + done + ''; + + meta = with stdenv.lib; { + description = "Research platform for new language concepts and compiler technologies for Scala."; + longDescription = '' + Dotty is a platform to try out new language concepts and compiler technologies for Scala. + The focus is mainly on simplification. We remove extraneous syntax (e.g. no XML literals), + and try to boil down Scala’s types into a smaller set of more fundamental constructs. + The theory behind these constructs is researched in DOT, a calculus for dependent object types. + ''; + homepage = http://dotty.epfl.ch/; + license = licenses.bsd3; + platforms = platforms.all; + maintainers = [maintainers.karolchmist]; + }; +} diff --git a/pkgs/development/compilers/scala/dotty.nix b/pkgs/development/compilers/scala/dotty.nix index cb0c43550022..a999bd422e63 100644 --- a/pkgs/development/compilers/scala/dotty.nix +++ b/pkgs/development/compilers/scala/dotty.nix @@ -1,46 +1,22 @@ -{ stdenv, fetchurl, makeWrapper, jre }: +{ stdenv, fetchurl, makeWrapper, jre, callPackage }: -stdenv.mkDerivation rec { - version = "0.4.0-RC1"; - name = "dotty-${version}"; - - src = fetchurl { - url = "https://github.com/lampepfl/dotty/releases/download/${version}/${name}.tar.gz"; - sha256 = "1d1ab08b85bd6898ce6273fa50818de0d314fc6e5377fb6ee05494827043321b"; +let + dotty-bare = callPackage ./dotty-bare.nix { + inherit stdenv fetchurl makeWrapper jre; }; +in - propagatedBuildInputs = [ jre ] ; - buildInputs = [ makeWrapper ] ; +stdenv.mkDerivation { + name = "dotty-${dotty-bare.version}"; + + unpackPhase = ":"; installPhase = '' - mkdir -p $out - mv * $out - - mkdir -p $out/shared - mv $out/bin/common $out/shared + mkdir -p $out/bin + ln -s ${dotty-bare}/bin/dotc $out/bin/dotc + ln -s ${dotty-bare}/bin/dotd $out/bin/dotd + ln -s ${dotty-bare}/bin/dotr $out/bin/dotr ''; - fixupPhase = '' - for file in $out/bin/* ; do - substituteInPlace $file \ - --replace '$PROG_HOME/bin/common' $out/shared/common - - wrapProgram $file \ - --set JAVA_HOME ${jre} - done - ''; - - meta = with stdenv.lib; { - description = "Research platform for new language concepts and compiler technologies for Scala."; - longDescription = '' - Dotty is a platform to try out new language concepts and compiler technologies for Scala. - The focus is mainly on simplification. We remove extraneous syntax (e.g. no XML literals), - and try to boil down Scala’s types into a smaller set of more fundamental constructs. - The theory behind these constructs is researched in DOT, a calculus for dependent object types. - ''; - homepage = http://dotty.epfl.ch/; - license = licenses.bsd3; - platforms = platforms.all; - maintainers = [maintainers.karolchmist]; - }; + inherit (dotty-bare) meta; }