diff --git a/ci/buildkite-pipeline.sh b/ci/buildkite-pipeline.sh index 7a6c8d0b0cb14e..34825bc6245633 100755 --- a/ci/buildkite-pipeline.sh +++ b/ci/buildkite-pipeline.sh @@ -227,6 +227,31 @@ EOF "downstream-projects skipped as no relevant files were modified" fi + # Downstream Anchor projects backwards compatibility + if affects \ + .rs$ \ + Cargo.lock$ \ + Cargo.toml$ \ + ^ci/rust-version.sh \ + ^ci/test-stable-perf.sh \ + ^ci/test-stable.sh \ + ^ci/test-local-cluster.sh \ + ^core/build.rs \ + ^fetch-perf-libs.sh \ + ^programs/ \ + ^sdk/ \ + ^scripts/build-downstream-anchor-projects.sh \ + ; then + cat >> "$output_file" <<"EOF" + - command: "scripts/build-downstream-anchor-projects.sh" + name: "downstream-anchor-projects" + timeout_in_minutes: 10 +EOF + else + annotate --style info \ + "downstream-anchor-projects skipped as no relevant files were modified" + fi + # Wasm support if affects \ ^ci/test-wasm.sh \ diff --git a/scripts/build-downstream-anchor-projects.sh b/scripts/build-downstream-anchor-projects.sh new file mode 100755 index 00000000000000..8ee5d4be54613b --- /dev/null +++ b/scripts/build-downstream-anchor-projects.sh @@ -0,0 +1,101 @@ +#!/usr/bin/env bash +# +# Builds known downstream projects against local solana source +# + +set -e +cd "$(dirname "$0")"/.. +source ci/_ +source scripts/patch-crates.sh +source scripts/read-cargo-variable.sh + +solana_ver=$(readCargoVariable version sdk/Cargo.toml) +solana_dir=$PWD +cargo="$solana_dir"/cargo +cargo_build_bpf="$solana_dir"/cargo-build-bpf +cargo_test_bpf="$solana_dir"/cargo-test-bpf + +mkdir -p target/downstream-projects-anchor +cd target/downstream-projects-anchor + +update_anchor_dependencies() { + declare project_root="$1" + declare anchor_ver="$2" + declare tomls=() + while IFS='' read -r line; do tomls+=("$line"); done < <(find "$project_root" -name Cargo.toml) + + sed -i -e "s#\(anchor-lang = \"\)[^\"]*\(\"\)#\1=$anchor_ver\2#g" "${tomls[@]}" || return $? + sed -i -e "s#\(anchor-spl = \"\)[^\"]*\(\"\)#\1=$anchor_ver\2#g" "${tomls[@]}" || return $? + sed -i -e "s#\(anchor-lang = { version = \"\)[^\"]*\(\"\)#\1=$anchor_ver\2#g" "${tomls[@]}" || return $? + sed -i -e "s#\(anchor-spl = { version = \"\)[^\"]*\(\"\)#\1=$anchor_ver\2#g" "${tomls[@]}" || return $? +} + +patch_crates_io_anchor() { + declare Cargo_toml="$1" + declare anchor_dir="$2" + cat >> "$Cargo_toml" <> "$1" <> src/program-rust/Cargo.toml $cargo_build_bpf \ @@ -80,9 +59,9 @@ serum_dex() { git clone https://github.com/project-serum/serum-dex.git cd serum-dex - update_solana_dependencies . - patch_crates_io Cargo.toml - patch_crates_io dex/Cargo.toml + update_solana_dependencies . "$solana_ver" + patch_crates_io_solana Cargo.toml "$solana_dir" + patch_crates_io_solana dex/Cargo.toml "$solana_dir" cat >> dex/Cargo.toml <> "$Cargo_toml" <