Merge pull request #14 from joii2020/main #131
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Rust | |
on: | |
push: | |
branches: [ "main" ] | |
pull_request: | |
branches: [ "main" ] | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
ubuntu-build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install llvm 16 | |
run: wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && sudo ./llvm.sh 16 && rm llvm.sh | |
- name: Install riscv64 target | |
run: rustup target add riscv64imac-unknown-none-elf | |
- name: Install cargo generate | |
run: cargo install cargo-generate | |
- name: Generate workspace | |
run: cargo generate --path . workspace --name test-workspace | |
- name: Generate crates && contracts | |
run: cd test-workspace && | |
make generate CRATE=clib TEMPLATE=c-wrapper-crate DESTINATION=crates TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=rlib TEMPLATE=x64-simulator-crate DESTINATION=crates TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=c1 TEMPLATE=contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=c2 TEMPLATE=atomics-contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=c3 TEMPLATE=stack-reorder-contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. | |
- name: Submodules | |
run: cd test-workspace && | |
git submodule add https://github.com/nervosnetwork/ckb-c-stdlib deps/ckb-c-stdlib && | |
git submodule add https://github.com/xxuejie/lib-dummy-atomics deps/lib-dummy-atomics | |
- name: Run all checks | |
run: cd test-workspace && make build test check clippy | |
- name: Reproducible build runs | |
run: cd test-workspace && ./scripts/reproducible_build_docker --update && ./scripts/reproducible_build_docker --no-clean | |
- name: Generate standalone contract | |
run: cargo generate --path . standalone-contract --name test-contract | |
- name: Run all checks | |
run: cd test-contract && make build test check clippy | |
- name: Reproducible build runs | |
run: cd test-contract && ./scripts/reproducible_build_docker --update && ./scripts/reproducible_build_docker --no-clean | |
ubuntu-arm64-docker-build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup qemu binfmt | |
run: docker run --privileged --rm tonistiigi/binfmt --install all | |
- name: Install cargo generate | |
run: cargo install cargo-generate | |
- name: Generate workspace | |
run: cargo generate --path . workspace --name test-workspace | |
- name: Generate crates && contracts | |
run: cd test-workspace && | |
make generate CRATE=clib TEMPLATE=c-wrapper-crate DESTINATION=crates TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=rlib TEMPLATE=x64-simulator-crate DESTINATION=crates TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=c1 TEMPLATE=contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=c2 TEMPLATE=atomics-contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=c3 TEMPLATE=stack-reorder-contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. | |
- name: Submodules | |
run: cd test-workspace && | |
git submodule add https://github.com/nervosnetwork/ckb-c-stdlib deps/ckb-c-stdlib && | |
git submodule add https://github.com/xxuejie/lib-dummy-atomics deps/lib-dummy-atomics | |
- name: Reproducible build runs | |
run: cd test-workspace && export DOCKER_RUN_ARGS="--platform linux/arm64" && ./scripts/reproducible_build_docker --update && ./scripts/reproducible_build_docker --no-clean | |
- name: Generate standalone contract | |
run: cargo generate --path . standalone-contract --name test-contract | |
- name: Reproducible build runs | |
run: cd test-contract && export DOCKER_RUN_ARGS="--platform linux/arm64" && ./scripts/reproducible_build_docker --update && ./scripts/reproducible_build_docker --no-clean | |
debian-build: | |
runs-on: ubuntu-latest | |
container: | |
image: debian:latest | |
env: | |
USER: ${{ github.actor }} | |
steps: | |
- name: Install dependencies | |
run: apt-get update && apt-get -y install curl git build-essential pkg-config libssl-dev lsb-release wget software-properties-common gnupg | |
- name: Install llvm 16 | |
run: wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && ./llvm.sh 16 && rm llvm.sh | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 | |
with: | |
components: clippy | |
target: riscv64imac-unknown-none-elf | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Install cargo generate | |
run: cargo install cargo-generate | |
- name: Generate workspace | |
run: cargo generate --path . workspace --name test-workspace | |
- name: Generate crates && contracts | |
run: cd test-workspace && | |
make generate CRATE=clib TEMPLATE=c-wrapper-crate DESTINATION=crates TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=rlib TEMPLATE=x64-simulator-crate DESTINATION=crates TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=c1 TEMPLATE=contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=c2 TEMPLATE=atomics-contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=c3 TEMPLATE=stack-reorder-contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. | |
- name: Submodules | |
run: cd test-workspace && | |
git submodule add https://github.com/nervosnetwork/ckb-c-stdlib deps/ckb-c-stdlib && | |
git submodule add https://github.com/xxuejie/lib-dummy-atomics deps/lib-dummy-atomics | |
- name: Run all checks | |
run: cd test-workspace && make build test check clippy | |
- name: Generate standalone contract | |
run: cargo generate --path . standalone-contract --name test-contract | |
- name: Run all checks | |
run: cd test-contract && make build test check clippy | |
fedora-build: | |
runs-on: ubuntu-latest | |
container: | |
image: fedora:latest | |
env: | |
USER: ${{ github.actor }} | |
steps: | |
- name: Install dependencies | |
run: sudo dnf -y install clang llvm git make openssl-devel | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 | |
with: | |
components: clippy | |
target: riscv64imac-unknown-none-elf | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Install cargo generate | |
run: cargo install cargo-generate | |
- name: Generate workspace | |
run: cargo generate --path . workspace --name test-workspace | |
- name: Generate crates && contracts | |
run: cd test-workspace && | |
make generate CRATE=clib TEMPLATE=c-wrapper-crate DESTINATION=crates TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=rlib TEMPLATE=x64-simulator-crate DESTINATION=crates TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=c1 TEMPLATE=contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=c2 TEMPLATE=atomics-contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=c3 TEMPLATE=stack-reorder-contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. | |
- name: Submodules | |
run: cd test-workspace && | |
git submodule add https://github.com/nervosnetwork/ckb-c-stdlib deps/ckb-c-stdlib && | |
git submodule add https://github.com/xxuejie/lib-dummy-atomics deps/lib-dummy-atomics | |
- name: Run all checks | |
run: cd test-workspace && make build test check clippy | |
- name: Generate standalone contract | |
run: cargo generate --path . standalone-contract --name test-contract | |
- name: Run all checks | |
run: cd test-contract && make build test check clippy | |
arch-build: | |
runs-on: ubuntu-latest | |
container: | |
image: archlinux:latest | |
env: | |
USER: ${{ github.actor }} | |
steps: | |
- name: Install dependencies | |
run: pacman --noconfirm -Syu clang llvm git make openssl pkgconf | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 | |
with: | |
components: clippy | |
target: riscv64imac-unknown-none-elf | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Install cargo generate | |
run: cargo install cargo-generate | |
- name: Generate workspace | |
run: cargo generate --path . workspace --name test-workspace | |
- name: Generate crates && contracts | |
run: cd test-workspace && | |
make generate CRATE=clib TEMPLATE=c-wrapper-crate DESTINATION=crates TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=rlib TEMPLATE=x64-simulator-crate DESTINATION=crates TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=c1 TEMPLATE=contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=c2 TEMPLATE=atomics-contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=c3 TEMPLATE=stack-reorder-contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. | |
- name: Submodules | |
run: cd test-workspace && | |
git submodule add https://github.com/nervosnetwork/ckb-c-stdlib deps/ckb-c-stdlib && | |
git submodule add https://github.com/xxuejie/lib-dummy-atomics deps/lib-dummy-atomics | |
- name: Run all checks | |
run: cd test-workspace && make build test check clippy | |
- name: Generate standalone contract | |
run: cargo generate --path . standalone-contract --name test-contract | |
- name: Run all checks | |
run: cd test-contract && make build test check clippy | |
macos-build: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Install llvm 16 | |
run: brew install llvm@16 | |
- name: Install riscv64 target | |
run: rustup target add riscv64imac-unknown-none-elf | |
- name: Install cargo generate | |
run: cargo install cargo-generate | |
- name: Generate workspace | |
run: cargo generate --path . workspace --name test-workspace | |
- name: Generate crates && contracts | |
run: cd test-workspace && | |
make generate CRATE=clib TEMPLATE=c-wrapper-crate DESTINATION=crates TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=rlib TEMPLATE=x64-simulator-crate DESTINATION=crates TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=c1 TEMPLATE=contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=c2 TEMPLATE=atomics-contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=c3 TEMPLATE=stack-reorder-contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. | |
- name: Submodules | |
run: cd test-workspace && | |
git submodule add https://github.com/nervosnetwork/ckb-c-stdlib deps/ckb-c-stdlib && | |
git submodule add https://github.com/xxuejie/lib-dummy-atomics deps/lib-dummy-atomics | |
- name: Run all checks | |
run: cd test-workspace && make build test check clippy | |
- name: Generate standalone contract | |
run: cargo generate --path . standalone-contract --name test-contract | |
- name: Run all checks | |
run: cd test-contract && make build test check clippy | |
# For now, github action's latest arm64-based macos runner does not support docker. We will have to | |
# Use an order version for now to test reproducible build on macOS. Maybe when macOS 15 is out we can | |
# re-test later. | |
# | |
# References: | |
# * https://github.com/orgs/community/discussions/69211 | |
# * https://github.com/marketplace/actions/setup-docker-on-macos | |
# NOTE: this test is not stable right now, disabling it till we can find a better solution | |
# macos-x64-reproducible-build: | |
# | |
# runs-on: macos-13 | |
# | |
# steps: | |
# - uses: actions/checkout@v3 | |
# with: | |
# submodules: true | |
# - name: Setup Docker on macOS | |
# run: brew install docker colima && colima start | |
# - name: Install llvm 16 | |
# run: brew install llvm@16 | |
# - name: Install riscv64 target | |
# run: rustup target add riscv64imac-unknown-none-elf | |
# - name: Install cargo generate | |
# run: cargo install cargo-generate | |
# - name: Generate workspace | |
# run: cargo generate --path . workspace --name test-workspace | |
# - name: Generate crates && contracts | |
# run: cd test-workspace && | |
# make generate CRATE=clib TEMPLATE=c-wrapper-crate DESTINATION=crates TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
# make generate CRATE=rlib TEMPLATE=x64-simulator-crate DESTINATION=crates TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
# make generate CRATE=c1 TEMPLATE=contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
# make generate CRATE=c2 TEMPLATE=atomics-contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
# make generate CRATE=c3 TEMPLATE=stack-reorder-contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. | |
# - name: Submodules | |
# run: cd test-workspace && | |
# git submodule add https://github.com/nervosnetwork/ckb-c-stdlib deps/ckb-c-stdlib && | |
# git submodule add https://github.com/xxuejie/lib-dummy-atomics deps/lib-dummy-atomics | |
# - name: Reproducible build runs | |
# run: cd test-workspace && ./scripts/reproducible_build_docker --update && ./scripts/reproducible_build_docker --no-clean | |
# - name: Generate standalone contract | |
# run: cargo generate --path . standalone-contract --name test-contract | |
# - name: Reproducible build runs | |
# run: cd test-contract && ./scripts/reproducible_build_docker --update && ./scripts/reproducible_build_docker --no-clean | |
windows-build: | |
runs-on: windows-2019 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Install llvm | |
shell: pwsh | |
# https://github.com/ScoopInstaller/Install#for-admin | |
# | |
# Note that on Windows we cannot choose LLVM 16 here, we have to settle on latest stable LLVM | |
run: | | |
iex "& {$(irm get.scoop.sh)} -RunAsAdmin" | |
scoop install llvm yasm | |
echo "$env:USERPROFILE\scoop\shims" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
- name: Install riscv64 target | |
run: rustup target add riscv64imac-unknown-none-elf | |
- name: Install cargo generate | |
run: cargo install cargo-generate | |
- name: Generate workspace | |
run: cargo generate --path . workspace --name test-workspace | |
- name: Generate crates && contracts | |
run: cd test-workspace && | |
make generate CRATE=clib TEMPLATE=c-wrapper-crate DESTINATION=crates TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=rlib TEMPLATE=x64-simulator-crate DESTINATION=crates TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=c1 TEMPLATE=contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=c2 TEMPLATE=atomics-contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. && | |
make generate CRATE=c3 TEMPLATE=stack-reorder-contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. | |
- name: Submodules | |
run: cd test-workspace && | |
git submodule add https://github.com/nervosnetwork/ckb-c-stdlib deps/ckb-c-stdlib && | |
git submodule add https://github.com/xxuejie/lib-dummy-atomics deps/lib-dummy-atomics | |
- name: Run all checks | |
run: cd test-workspace && make build test check clippy | |
- name: Generate standalone contract | |
run: cargo generate --path . standalone-contract --name test-contract | |
- name: Run all checks | |
run: cd test-contract && make build test check clippy | |
freebsd-build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Build in FreeBSD VM | |
uses: vmactions/freebsd-vm@v1 | |
with: | |
usesh: true | |
prepare: | | |
set -ex | |
pkg install -y llvm16 git gmake bash | |
curl https://sh.rustup.rs -sSf | sh -s -- -y | |
. $HOME/.cargo/env | |
rustup target add riscv64imac-unknown-none-elf | |
cargo install cargo-generate | |
run: | | |
set -ex | |
. $HOME/.cargo/env | |
cargo generate --path . standalone-contract --name test-contract | |
cd test-contract | |
gmake build test check clippy | |
cd .. | |
cargo generate --path . workspace --name test-workspace | |
cd test-workspace | |
gmake generate CRATE=clib TEMPLATE=c-wrapper-crate DESTINATION=crates TEMPLATE_TYPE=--path TEMPLATE_REPO=.. | |
gmake generate CRATE=rlib TEMPLATE=x64-simulator-crate DESTINATION=crates TEMPLATE_TYPE=--path TEMPLATE_REPO=.. | |
gmake generate CRATE=c1 TEMPLATE=contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. | |
gmake generate CRATE=c2 TEMPLATE=atomics-contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. | |
gmake generate CRATE=c3 TEMPLATE=stack-reorder-contract TEMPLATE_TYPE=--path TEMPLATE_REPO=.. | |
git submodule add https://github.com/nervosnetwork/ckb-c-stdlib deps/ckb-c-stdlib | |
git submodule add https://github.com/xxuejie/lib-dummy-atomics deps/lib-dummy-atomics | |
gmake build test check clippy |