From 7cd03a985c6ccdbecfda8747127dc9be614f4ecc Mon Sep 17 00:00:00 2001 From: Claudio Bley Date: Tue, 1 Jun 2021 22:19:40 +0200 Subject: [PATCH 1/5] Use no CC stdenv for nix shell --- shell.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/shell.nix b/shell.nix index 94b1460f..3c4c517b 100644 --- a/shell.nix +++ b/shell.nix @@ -2,12 +2,14 @@ }: let scala-native = import ./scala-native.nix { inherit project; }; + mkShell = project.pkgs.mkShell.override { stdenv = project.pkgs.stdenvNoCC; }; in -project.pkgs.mkShell { +mkShell { CLANG_PATH = project.clang + "/bin/clang"; CLANGPP_PATH = project.clang + "/bin/clang++"; - buildInputs = builtins.attrValues project.devTools; + nativeBuildInputs = builtins.attrValues project.devTools; + shellHook = '' ${project.ci.pre-commit-check.shellHook} mkdir --parents "$HOME/.ivy2/local" From 40230f691f96702aa495e8bb106fcd2970a24b51 Mon Sep 17 00:00:00 2001 From: Claudio Bley Date: Wed, 2 Jun 2021 08:48:01 +0200 Subject: [PATCH 2/5] Make nir output stable between compilation runs --- scala-native.nix | 4 ++-- stableNirOutput.diff | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 stableNirOutput.diff diff --git a/scala-native.nix b/scala-native.nix index ab4a89e6..8e70373b 100644 --- a/scala-native.nix +++ b/scala-native.nix @@ -21,13 +21,13 @@ project.pkgs.stdenv.mkDerivation rec { name = "${name}-scala-native"; - patches = [ ./toClass.diff ]; + patches = [ ./toClass.diff ./stableNirOutput.diff ]; nativeBuildInputs = [ project.pkgs.sbt ]; dontStrip = true; outputHashAlgo = "sha256"; - outputHash = "1s1ki5jmh6r5d50ma8d032xgmvhmy2gv9aw4142ybc3ggfwbi3mk"; + outputHash = "1k1wszyjvn20wp6873hzlri5i8pjqcj795asd0iy38sykc992lh5"; outputHashMode = "recursive"; preHook = '' diff --git a/stableNirOutput.diff b/stableNirOutput.diff new file mode 100644 index 00000000..3a7456c8 --- /dev/null +++ b/stableNirOutput.diff @@ -0,0 +1,25 @@ +diff --git a/nir/src/main/scala/scala/scalanative/nir/serialization/BinarySerializer.scala b/nir/src/main/scala/scala/scalanative/nir/serialization/BinarySerializer.scala +index eb788a30..f9877297 100644 +--- a/nir/src/main/scala/scala/scalanative/nir/serialization/BinarySerializer.scala ++++ b/nir/src/main/scala/scala/scalanative/nir/serialization/BinarySerializer.scala +@@ -30,8 +30,9 @@ final class BinarySerializer { + import bufferUnderyling.currentPosition + + def serialize(defns: Seq[Defn], outputStream: OutputStream): Unit = { +- val names = defns.map(_.name) +- val filenames = initFiles(defns) ++ val sortedDefns = defns.sortBy(_.name) ++ val names = sortedDefns.map(_.name) ++ val filenames = initFiles(sortedDefns) + val positions = mutable.UnrolledBuffer.empty[Int] + + Prelude.writeTo(buffer, +@@ -48,7 +49,7 @@ final class BinarySerializer { + putInt(0) + } + +- defns ++ sortedDefns + .zip(positions) + .foreach { + case (defn, marker) => From e1c06a23f46e6d199f844833740b82cacba3a235 Mon Sep 17 00:00:00 2001 From: Claudio Bley Date: Wed, 2 Jun 2021 08:48:51 +0200 Subject: [PATCH 3/5] Use no CC stdenv for scala-native derivation --- scala-native.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/scala-native.nix b/scala-native.nix index 8e70373b..84b6999c 100644 --- a/scala-native.nix +++ b/scala-native.nix @@ -1,7 +1,11 @@ { project ? import ./nix { } }: -project.pkgs.stdenv.mkDerivation rec { +let + stdenv = project.pkgs.stdenvNoCC; +in + +stdenv.mkDerivation rec { pname = "scala-native"; version = "0.4.1-SNAPSHOT"; @@ -16,7 +20,7 @@ project.pkgs.stdenv.mkDerivation rec { let name = "${pname}-${version}"; in - project.pkgs.stdenv.mkDerivation { + stdenv.mkDerivation { inherit src; name = "${name}-scala-native"; From 06bf54ffae04a6a251fce92bcff5947dbc70b47d Mon Sep 17 00:00:00 2001 From: Claudio Bley Date: Thu, 3 Jun 2021 07:49:39 +0200 Subject: [PATCH 4/5] Enable release mode --- scala-native.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scala-native.nix b/scala-native.nix index 84b6999c..6df18fb9 100644 --- a/scala-native.nix +++ b/scala-native.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { dontStrip = true; outputHashAlgo = "sha256"; - outputHash = "1k1wszyjvn20wp6873hzlri5i8pjqcj795asd0iy38sykc992lh5"; + outputHash = "0rdif16h3d6xbxdgk003sj6swhmw8icc37ws37ghj6rxd9w8snpj"; outputHashMode = "recursive"; preHook = '' @@ -56,6 +56,8 @@ stdenv.mkDerivation rec { buildPhase = '' runHook preBuild + export SCALANATIVE_MODE=release-fast + sbt --sbt-dir "$HOME/sbt" --ivy "$HOME/.ivy2" --batch publishLocal '++2.13.6' \ auxlib/publishLocal \ clib/publishLocal \ From b27d72cf94da408d981c942fa41dc2681bbf1752 Mon Sep 17 00:00:00 2001 From: Claudio Bley Date: Thu, 3 Jun 2021 10:03:43 +0200 Subject: [PATCH 5/5] Use project sbt for scala-native --- nix/default.nix | 2 +- scala-native.nix | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/nix/default.nix b/nix/default.nix index b16cebaf..660d7cc3 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -16,7 +16,7 @@ let src = gitignoreSource ./..; in { - inherit pkgs src; + inherit pkgs src sbt; clang = pkgs.clang_10; diff --git a/scala-native.nix b/scala-native.nix index 6df18fb9..f7e9eac2 100644 --- a/scala-native.nix +++ b/scala-native.nix @@ -27,11 +27,11 @@ stdenv.mkDerivation rec { patches = [ ./toClass.diff ./stableNirOutput.diff ]; - nativeBuildInputs = [ project.pkgs.sbt ]; + nativeBuildInputs = [ project.sbt ]; dontStrip = true; outputHashAlgo = "sha256"; - outputHash = "0rdif16h3d6xbxdgk003sj6swhmw8icc37ws37ghj6rxd9w8snpj"; + outputHash = "0m9jchavxxpsl1jg6gjsxbmybrq8lp44lyab6fki8w282386hqhy"; outputHashMode = "recursive"; preHook = ''