@@ -17,11 +17,16 @@ jobs:
17
17
include :
18
18
- toolchain : stable
19
19
build-net-tokio : true
20
+ build-bindings : true
20
21
- toolchain : beta
21
22
build-net-tokio : true
23
+ build-bindings : true
22
24
- toolchain : 1.39.0
23
25
build-net-tokio : true
26
+ build-bindings : true
24
27
coverage : true
28
+ - toolchain : 1.34.2
29
+ build-bindings : true
25
30
runs-on : ubuntu-latest
26
31
steps :
27
32
- name : Checkout source code
38
43
- name : Build on Rust ${{ matrix.toolchain }}
39
44
if : " ! matrix.build-net-tokio"
40
45
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
41
49
- name : Test on Rust ${{ matrix.toolchain }} with net-tokio
42
50
if : matrix.build-net-tokio
43
51
run : RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always
@@ -98,3 +106,43 @@ jobs:
98
106
run : cd fuzz && cargo test --verbose --color always
99
107
- name : Run fuzzers
100
108
run : cd fuzz && ./ci-fuzz.sh
109
+
110
+ check_bindings :
111
+ runs-on : ubuntu-latest
112
+ # Ubuntu's version of rustc uses its own LLVM instead of being a real native package.
113
+ # This leaves us with an incompatible LLVM version when linking. Instead, use a real OS.
114
+ container : debian:testing
115
+ env :
116
+ TOOLCHAIN : stable
117
+ steps :
118
+ - name : Install native Rust toolchain, Valgrind, and build utilitis
119
+ run : |
120
+ apt-get update
121
+ apt-get -y dist-upgrade
122
+ apt-get -y install cargo valgrind lld git g++ clang
123
+ - name : Checkout source code
124
+ uses : actions/checkout@v2
125
+ - name : Install cbindgen
126
+ run : cargo install --force cbindgen
127
+ - name : Rebuild bindings, and check the sample app builds + links
128
+ run : ./genbindings.sh
129
+ - name : Check that the latest bindings are in git
130
+ run : |
131
+ if [ "$(git diff)" != "" ]; then
132
+ # cbindgen's bindings output order can be FS-dependant, so check that the lines are all the same:
133
+ mv lightning-c-bindings/include/lightning.h lightning-c-bindings/include/lightning.h.new
134
+ git checkout lightning-c-bindings/include/lightning.h
135
+ cat lightning-c-bindings/include/lightning.h | sort > lightning-c-bindings/include/lightning.h.sorted
136
+ cat lightning-c-bindings/include/lightning.h.new | sort > lightning-c-bindings/include/lightning.h.new.sorted
137
+ diff lightning-c-bindings/include/lightning.h.sorted lightning-c-bindings/include/lightning.h.new.sorted
138
+ #
139
+ mv lightning-c-bindings/include/lightningpp.hpp lightning-c-bindings/include/lightningpp.hpp.new
140
+ git checkout lightning-c-bindings/include/lightningpp.hpp
141
+ cat lightning-c-bindings/include/lightningpp.hpp | sort > lightning-c-bindings/include/lightningpp.hpp.sorted
142
+ cat lightning-c-bindings/include/lightningpp.hpp.new | sort > lightning-c-bindings/include/lightningpp.hpp.new.sorted
143
+ diff lightning-c-bindings/include/lightningpp.hpp.sorted lightning-c-bindings/include/lightningpp.hpp.new.sorted
144
+ #
145
+ [ "$(diff lightning-c-bindings/include/lightning.h.sorted lightning-c-bindings/include/lightning.h.new.sorted)" != "" ] && exit 2
146
+ [ "$(diff lightning-c-bindings/include/lightningpp.hpp.sorted lightning-c-bindings/include/lightningpp.hpp.new.sorted)" != "" ] && exit 3
147
+ git diff --exit-code
148
+ fi
0 commit comments