2 # rustc calculates a unique metadata tag to mangle symbols which includes the
3 # actual path to the crate. This breaks our deterministic builds as we depend
4 # on a copy of rust-lightning via a path. We insert this shim between cargo and
5 # rustc and edit the metadata tag for rust-lightning.
6 # While we could just set RUSTFLAGS="-C metadata=42", this would break if we
7 # ever (indirectly) depend on multiple versions of the same crate.
10 SKIP_EMBED_BITCODE=false
11 for ((i=0; i<"${#args[@]}"; ++i)); do
14 if [ "${args[i+1]}" = "lightning" -o "${args[i+1]}" = "lightning_background_processor" -o "${args[i+1]}" = "lightning_invoice" -o "${args[i+1]}" = "lightning_persister" -o "${args[i+1]}" = "lightning_rapid_gossip_sync" -o "${args[i+1]}" = "lightning_transaction_sync" -o "${args[i+1]}" = "ldk" ]; then
19 if [ "${args[i+1]}" = "proc-macro" ]; then
20 # If we're building a proc-macro, rustc incorrectly passes our RUSTFLAGS containing
21 # embed-bitcode=yes, which we don't want.
22 SKIP_EMBED_BITCODE=true
27 for ((i=0; i<"${#args[@]}"; ++i)); do
30 if [ "$IS_LIGHTNING" = "true" ]; then
31 # Pick any random value for metadata, it doesn't matter
36 if [ "$SKIP_EMBED_BITCODE" = "true" ]; then
37 args[i]="embed-bitcode=no"
41 if [ "$SKIP_EMBED_BITCODE" = "true" ]; then
47 $LDK_RUSTC_PATH "${args[@]}"