Sfoglia il codice sorgente

Build Solana smart contract

Leo 5 anni fa
parent
commit
894e058091

+ 10 - 2
Tiltfile

@@ -33,9 +33,9 @@ def build_bridge_yaml():
 
 k8s_yaml(build_bridge_yaml())
 
-k8s_resource("guardian", resource_deps=["proto-gen"])
+k8s_resource("guardian", resource_deps = ["proto-gen"])
 
-# solana smart contract components
+# solana agent and cli (runs alongside bridge)
 
 docker_build(
     ref = "solana-agent",
@@ -47,6 +47,14 @@ docker_build(
     ignore = ["./solana/target", "./solana/agent/target", "./solana/cli/target"],
 )
 
+# solana smart contract
+
+docker_build(
+    ref = "solana-contract",
+    context = "solana",
+    dockerfile = "solana/Dockerfile",
+)
+
 # solana local devnet
 
 docker_build(

+ 2 - 0
solana/.dockerignore

@@ -1,2 +1,4 @@
 target
 bin
+cli/target
+agent/target

+ 23 - 0
solana/Dockerfile

@@ -0,0 +1,23 @@
+# syntax=docker/dockerfile:experimental
+FROM rust:1.45
+
+RUN apt-get update && apt-get install -y libssl-dev libudev-dev pkg-config zlib1g-dev llvm clang
+RUN rustup component add rustfmt
+
+WORKDIR /usr/src/solana
+
+COPY bpf-sdk-install.sh .
+COPY do.sh .
+
+RUN ./do.sh update
+
+COPY bridge bridge
+
+RUN ./do.sh build bridge
+
+RUN --mount=type=cache,target=/usr/local/cargo,from=rust,source=/usr/local/cargo \
+    --mount=type=cache,target=/root/.cache \
+    --mount=type=cache,target=bridge/target \
+    ./do.sh build bridge && \
+    mkdir -p /opt/solana/deps && \
+    cp bridge/target/bpfel-unknown-unknown/release/spl_bridge.so /opt/solana/deps

+ 0 - 1
solana/do.sh

@@ -1,4 +1,3 @@
-
 #!/usr/bin/env bash
 
 cd "$(dirname "$0")"

+ 1 - 1
third_party/solana/Add_crypto_syscalls.patch

@@ -729,7 +729,7 @@ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  fetch_program memo  1.0.0 Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo BPFLoader1111111111111111111111111111111111
 
 +# Add bridge
-+genesis_args+=(--bpf-program Bridge1p5gheXUvJ6jGWGeCsgPKgnE3YgdGKRVCMY9o BPFLoader2111111111111111111111111111111111 spl_bridge.so)
++genesis_args+=(--bpf-program Bridge1p5gheXUvJ6jGWGeCsgPKgnE3YgdGKRVCMY9o BPFLoader2111111111111111111111111111111111 /opt/solana/deps/spl_bridge.so)
 +
  echo "${genesis_args[@]}" > spl-genesis-args.sh
 

+ 4 - 4
third_party/solana/Dockerfile

@@ -1,13 +1,12 @@
 # syntax=docker/dockerfile:experimental
-FROM rust:1.45
 
-RUN apt-get update && apt-get install -y libssl-dev libudev-dev pkg-config zlib1g-dev llvm clang
-RUN rustup component add rustfmt
+# Depend on our smart contract build - it's going to be linked directly into Solana as part the patch we carry.
+FROM solana-contract
 
 WORKDIR /usr/src/solana
 
 RUN git clone https://github.com/solana-labs/solana --depth=1 --branch master && \
-  cd solana && git checkout e2d66cf7
+  cd solana
 
 ADD *.patch .
 
@@ -23,4 +22,5 @@ RUN --mount=type=cache,target=/usr/local/cargo,from=rust,source=/usr/local/cargo
 
 ENV PATH="/opt/solana:${PATH}"
 ENV RUST_LOG="solana_runtime::system_instruction_processor=trace,solana_runtime::message_processor=trace,solana_bpf_loader=debug,solana_rbpf=debug"
+
 CMD ["/usr/src/solana/solana/run.sh"]