fuck 2021-03-check-determinism-test-1
authorMatt Corallo <git@bluematt.me>
Wed, 24 Mar 2021 03:22:55 +0000 (23:22 -0400)
committerMatt Corallo <git@bluematt.me>
Wed, 24 Mar 2021 03:22:55 +0000 (23:22 -0400)
ci/rustc [new file with mode: 0755]

diff --git a/ci/rustc b/ci/rustc
new file mode 100755 (executable)
index 0000000..10f08ad
--- /dev/null
+++ b/ci/rustc
@@ -0,0 +1,24 @@
+#!/bin/bash
+# rustc calculates a unique metadata tag to mangle symbols which includes the
+# actual path to the crate. This breaks our deterministic builds as we depend
+# on a copy of rust-lightning via a path. We insert this shim between cargo and
+# rustc and edit the metadata tag for rust-lightning.
+# While we could just set RUSTFLAGS="-C metadata=42", this would break if we
+# ever (indirectly) depend on multiple versions of the same crate.
+args=("$@")
+IS_LIGHTNING=false
+for ((i=0; i<"${#args[@]}"; ++i)); do
+    case ${args[i]} in
+        --crate-name)
+                       if [ "${args[i+1]}" = "lightning" ]; then
+                               IS_LIGHTNING=true
+                       fi
+                       ;;
+        metadata*)
+                       if [ "$IS_LIGHTNING" = "true" ]; then
+                               args[i]="metadata=42"
+                       fi
+                       ;;
+    esac
+done
+/usr/bin/rustc "${args[@]}"