Add shellcheck to CI and a progress bar for sed
'ing in genbindings.sh
#610
Workflow file for this run
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: Continuous Integration Checks | |
on: [push, pull_request] | |
jobs: | |
check_bindings: | |
strategy: | |
fail-fast: false | |
matrix: | |
# Ubuntu's version of rustc uses its own LLVM instead of being a real native package. | |
# This leaves us with an incompatible LLVM version when linking. Instead, use a real OS. | |
distro: [ "debian:bookworm", "fedora:39" ] | |
runs-on: ubuntu-latest | |
container: ${{ matrix.distro }} | |
env: | |
TOOLCHAIN: stable | |
steps: | |
- name: Install native Rust toolchain, Valgrind, and build utilities | |
if: "matrix.distro == 'debian:bookworm'" | |
run: | | |
apt-get update | |
apt-get -y dist-upgrade | |
apt-get -y install cargo libstd-rust-dev-wasm32 wasi-libc valgrind lld git g++ clang wget | |
- name: Install native Rust toolchain, Valgrind, and build utilities | |
if: "matrix.distro == 'fedora:39'" | |
run: | | |
dnf -y install cargo rust-std-static-wasm32-wasi valgrind lld git g++ clang wget which diffutils | |
- name: Checkout source code | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
- name: shellcheck the genbindings script | |
if: "matrix.distro == 'debian:bookworm'" | |
run: | | |
apt-get -y install shellcheck | |
shellcheck -e SC2005,SC2002,SC2001 genbindings.sh | |
- name: Sanity test bindings against Cargo.toml RL | |
working-directory: lightning-c-bindings | |
run: | | |
# Note that the version tags aren't checked into git | |
touch src/version.rs | |
RUSTFLAGS="--cfg=c_bindings" cargo check --features std | |
- name: Install cbindgen | |
run: | | |
git clone https://github.com/eqrion/cbindgen | |
cd cbindgen/ | |
git checkout v0.20.0 | |
cargo update -p indexmap --precise "1.6.2" --verbose | |
cargo install --locked --path . | |
- name: Checkout Rust-Lightning git | |
run: | | |
git clone https://github.com/rust-bitcoin/rust-lightning | |
cd rust-lightning | |
git checkout 0.0.123-bindings | |
- name: Fix Github Actions to not be broken | |
run: git config --global --add safe.directory /__w/ldk-c-bindings/ldk-c-bindings | |
- name: Pin proc-macro and quote to meet MSRV | |
run: | | |
cd c-bindings-gen | |
cargo update -p quote --precise "1.0.30" --verbose | |
cargo update -p proc-macro2 --precise "1.0.65" --verbose | |
- name: Rebuild bindings without std, and check the sample app builds + links | |
run: ./genbindings.sh ./rust-lightning false | |
- name: Rebuild bindings, and check the sample app builds + links | |
run: ./genbindings.sh ./rust-lightning true | |
- name: Check that the latest bindings are in git | |
run: | | |
git checkout lightning-c-bindings/Cargo.toml # genbindings edits this to update the path | |
if [ "$(git diff)" != "" ]; then | |
# cbindgen's bindings output order can be FS-dependant, so check that the lines are all the same: | |
mv lightning-c-bindings/include/lightning.h lightning-c-bindings/include/lightning.h.new | |
git checkout lightning-c-bindings/include/lightning.h | |
cat lightning-c-bindings/include/lightning.h | grep -v "Generated with cbindgen:[0-9\.]*" | sort > lightning-c-bindings/include/lightning.h.sorted | |
cat lightning-c-bindings/include/lightning.h.new | grep -v "Generated with cbindgen:[0-9\.]*" | sort > lightning-c-bindings/include/lightning.h.new.sorted | |
diff lightning-c-bindings/include/lightning.h.sorted lightning-c-bindings/include/lightning.h.new.sorted | |
[ "$(diff lightning-c-bindings/include/lightning.h.sorted lightning-c-bindings/include/lightning.h.new.sorted)" != "" ] && exit 2 | |
git diff --exit-code | |
fi | |
check_macos: | |
runs-on: ubuntu-latest | |
# Ubuntu's version of rustc uses its own LLVM instead of being a real native package. | |
# This leaves us with an incompatible LLVM version when linking. Instead, use a real OS. | |
container: debian:bookworm | |
env: | |
TOOLCHAIN: stable | |
steps: | |
- name: Install native Rust toolchain, Valgrind, and build utilities | |
run: | | |
apt-get update | |
apt-get -y dist-upgrade | |
apt-get -y install cargo libstd-rust-dev-wasm32 valgrind lld git g++ clang wget rust-src | |
- name: Checkout source code | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
- name: Sanity test bindings against Cargo.toml RL | |
working-directory: lightning-c-bindings | |
run: | | |
# Note that the version tags aren't checked into git | |
touch src/version.rs | |
RUSTFLAGS="--cfg=c_bindings" cargo check --features std | |
- name: Install cbindgen | |
run: | | |
git clone https://github.com/eqrion/cbindgen | |
cd cbindgen/ | |
git checkout v0.20.0 | |
cargo update -p indexmap --precise "1.6.2" --verbose | |
cargo install --locked --path . | |
- name: Checkout Rust-Lightning git | |
run: | | |
git clone https://github.com/rust-bitcoin/rust-lightning | |
cd rust-lightning | |
git checkout 0.0.123-bindings | |
- name: Fix Github Actions to not be broken | |
run: git config --global --add safe.directory /__w/ldk-c-bindings/ldk-c-bindings | |
- name: Fetch MacOS SDK | |
run: | | |
wget https://bitcoincore.org/depends-sources/sdks/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers.tar.gz | |
tar xvvf Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers.tar.gz | |
- name: Rebuild bindings, and check the sample app builds + links | |
run: | | |
# rust-src doesn't distribute the rustlib Cargo.lock, but an empty | |
# file seems to suffice to make `-Zbuild-std` happy. | |
touch /usr/lib/rustlib/src/rust/Cargo.lock | |
MACOS_SDK="$PWD/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers" ./genbindings.sh ./rust-lightning true | |
osx: | |
strategy: | |
matrix: | |
include: | |
- platform: macos-11 | |
- platform: macos-12 | |
- platform: macos-13 | |
runs-on: ${{ matrix.platform }} | |
env: | |
TOOLCHAIN: stable | |
steps: | |
- name: Install other Rust platforms | |
run: rustup target install aarch64-apple-darwin | |
- name: Fetch upstream LLVM/clang snapshot | |
run: | | |
wget -O clang+llvm-15.0.3-x86_64-apple-darwin.tar.xz https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.3/clang+llvm-15.0.3-x86_64-apple-darwin.tar.xz | |
if [ "$(shasum -a 256 clang+llvm-15.0.3-x86_64-apple-darwin.tar.xz | awk '{ print $1 }')" != "ac668586b2b3d068f1e43520a3ef0b1592e5dc3eff1a4a4b772e29803b428a69" ]; then | |
echo "Bad hash" | |
exit 1 | |
fi | |
- name: Unpack upstream LLVM+clang and use it by default | |
run: | | |
tar xvvf clang+llvm-15.0.3-x86_64-apple-darwin.tar.xz | |
- name: Checkout source code | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
- name: Install cbindgen | |
run: cargo install cbindgen | |
- name: Checkout Rust-Lightning git | |
run: | | |
git clone https://github.com/rust-bitcoin/rust-lightning | |
cd rust-lightning | |
git checkout 0.0.123-bindings | |
- name: Rebuild bindings using Apple clang, and check the sample app builds + links | |
run: ./genbindings.sh ./rust-lightning true | |
- name: Rebuild bindings using upstream clang, and check the sample app builds + links | |
run: | | |
export PATH=`pwd`/clang+llvm-15.0.3-x86_64-apple-darwin/bin:$PATH | |
CC=clang ./genbindings.sh ./rust-lightning true |