@@ -17,11 +17,16 @@ jobs:
1717 include :
1818 - toolchain : stable
1919 build-net-tokio : true
20+ build-bindings : true
2021 - toolchain : beta
2122 build-net-tokio : true
23+ build-bindings : true
2224 - toolchain : 1.39.0
2325 build-net-tokio : true
26+ build-bindings : true
2427 coverage : true
28+ - toolchain : 1.34.2
29+ build-bindings : true
2530 runs-on : ubuntu-latest
2631 steps :
2732 - name : Checkout source code
3843 - name : Build on Rust ${{ matrix.toolchain }}
3944 if : " ! matrix.build-net-tokio"
4045 run : RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always -p lightning
46+ - name : Build bindings on Rust ${{ matrix.toolchain }}
47+ if : matrix.build-bindings
48+ run : RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always -p lightning-c-bindings
4149 - name : Test on Rust ${{ matrix.toolchain }} with net-tokio
4250 if : matrix.build-net-tokio
4351 run : RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always
@@ -94,3 +102,33 @@ jobs:
94102 run : cd fuzz && cargo test --verbose --color always
95103 - name : Run fuzzers
96104 run : cd fuzz && ./ci-fuzz.sh
105+
106+ check_bindings :
107+ runs-on : ubuntu-latest
108+ env :
109+ TOOLCHAIN : stable
110+ steps :
111+ - name : Checkout source code
112+ uses : actions/checkout@v2
113+ - name : Install Rust ${{ env.TOOLCHAIN }} toolchain
114+ uses : actions-rs/toolchain@v1
115+ with :
116+ toolchain : ${{ env.TOOLCHAIN }}
117+ override : true
118+ profile : minimal
119+ - name : Install cbindgen
120+ run : cargo install --force cbindgen
121+ - name : Rebuild bindings, and check the sample app builds + links
122+ run : ./genbindings.sh
123+ - name : Check that the latest bindings are in git
124+ run : |
125+ if [ "$(git diff)" != "" ]; then
126+ git diff
127+ # cbindgen's bindings output order can be FS-dependant, so check that the lines are all the same:
128+ mv lightning-c-bindings/include/lightning.h lightning-c-bindings/include/lightning.h.new
129+ git checkout lightning-c-bindings/include/lightning.h
130+ cat lightning-c-bindings/include/lightning.h | sort > lightning-c-bindings/include/lightning.h.sorted
131+ cat lightning-c-bindings/include/lightning.h.new | sort > lightning-c-bindings/include/lightning.h.new.sorted
132+ [ "$(diff lightning-c-bindings/include/lightning.h.sorted lightning-c-bindings/include/lightning.h.new.sorted)" != "" ] && exit 2
133+ [ "$(git diff)" != "" ] && exit 1
134+ fi
0 commit comments