Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion nix/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ let
src = gitignoreSource ./..;
in
{
inherit pkgs src;
inherit pkgs src sbt;

clang = pkgs.clang_10;

Expand Down
16 changes: 11 additions & 5 deletions scala-native.nix
Original file line number Diff line number Diff line change
@@ -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";

Expand All @@ -16,18 +20,18 @@ project.pkgs.stdenv.mkDerivation rec {
let
name = "${pname}-${version}";
in
project.pkgs.stdenv.mkDerivation {
stdenv.mkDerivation {
inherit src;

name = "${name}-scala-native";

patches = [ ./toClass.diff ];
patches = [ ./toClass.diff ./stableNirOutput.diff ];

nativeBuildInputs = [ project.pkgs.sbt ];
nativeBuildInputs = [ project.sbt ];

dontStrip = true;
outputHashAlgo = "sha256";
outputHash = "1s1ki5jmh6r5d50ma8d032xgmvhmy2gv9aw4142ybc3ggfwbi3mk";
outputHash = "0m9jchavxxpsl1jg6gjsxbmybrq8lp44lyab6fki8w282386hqhy";
outputHashMode = "recursive";

preHook = ''
Expand All @@ -52,6 +56,8 @@ project.pkgs.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 \
Expand Down
6 changes: 4 additions & 2 deletions shell.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
25 changes: 25 additions & 0 deletions stableNirOutput.diff
Original file line number Diff line number Diff line change
@@ -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) =>