-
Notifications
You must be signed in to change notification settings - Fork 14
162 lines (158 loc) · 7.3 KB
/
build.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
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 utilitis
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 utilitis
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: 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.124-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 utilitis
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.124-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.124-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