@@ -119,9 +119,9 @@ jobs:
119
119
- name : Create the FFI modules dir
120
120
run : mkdir ffi-modules\${{ matrix.target }}
121
121
- name : Build FFI
122
- run : cargo build -p rodbus-ffi --release --target ${{ matrix.target }} --message-format json | Out-File -encoding "UTF8" .\ffi-modules\${{ matrix.target }}\build.ffi.log
122
+ run : cargo build -p rodbus-ffi --release --target ${{ matrix.target }}
123
123
- name : Build JNI
124
- run : cargo build -p rodbus-ffi-java --release --target ${{ matrix.target }} --message-format json | Out-File -encoding "UTF8" .\ffi-modules\${{ matrix.target }}\build.jni.log
124
+ run : cargo build -p rodbus-ffi-java --release --target ${{ matrix.target }}
125
125
- name : Copy the FFI and JNI libs
126
126
shell : pwsh
127
127
run : |
@@ -144,12 +144,15 @@ jobs:
144
144
run : cargo run --bin rodbus-bindings -- --java -r ${{ matrix.target }} -a ./target/${{ matrix.target }}/release
145
145
# Build bindings on MacOS [64-bit macOS (10.7+, Lion+) (x86_64-apple-darwin)]
146
146
bindings-macos :
147
- runs-on : macos-latest
148
147
strategy :
149
148
fail-fast : false
150
149
matrix :
151
- target :
152
- - x86_64-apple-darwin # 64-bit macOS (10.7+, Lion+)
150
+ include :
151
+ - runner : macos-14
152
+ target : aarch64-apple-darwin
153
+ - runner : macos-13
154
+ target : x86_64-apple-darwin
155
+ runs-on : ${{ matrix.runner }}
153
156
steps :
154
157
- name : Checkout
155
158
uses : actions/checkout@v3
@@ -158,9 +161,9 @@ jobs:
158
161
- name : Create FFI modules dir
159
162
run : mkdir -p ffi-modules/${{ matrix.target }}
160
163
- name : Build FFI
161
- run : cargo build -p rodbus-ffi --release --message-format json > ffi-modules/${{ matrix.target }}/build.ffi.log
164
+ run : cargo build -p rodbus-ffi --release
162
165
- name : Build JNI
163
- run : cargo build -p rodbus-ffi-java --release --message-format json > ffi-modules/${{ matrix.target }}/build.jni.log
166
+ run : cargo build -p rodbus-ffi-java --release
164
167
- name : Copy the FFI and JNI libs
165
168
run : |
166
169
cp ./target/release/librodbus_ffi.dylib ./ffi-modules/${{ matrix.target }}
@@ -204,9 +207,9 @@ jobs:
204
207
- name : Create ffi-modules dir
205
208
run : mkdir -p ffi-modules/${{ matrix.target }}
206
209
- name : Build FFI
207
- run : cross build -p rodbus-ffi --release --target ${{ matrix.target }} --message-format json > ffi-modules/${{ matrix.target }}/build.ffi.log
210
+ run : cross build -p rodbus-ffi --release --target ${{ matrix.target }}
208
211
- name : Build JNI
209
- run : cross build -p rodbus-ffi-java --release --target ${{ matrix.target }} --message-format json > ffi-modules/${{ matrix.target }}/build.jni.log
212
+ run : cross build -p rodbus-ffi-java --release --target ${{ matrix.target }}
210
213
- name : Copy the FFI and JNI libs
211
214
run : |
212
215
cp ./target/${{ matrix.target }}/release/librodbus_ffi.so ./ffi-modules/${{ matrix.target }}
@@ -242,26 +245,36 @@ jobs:
242
245
steps :
243
246
- name : Install Rust
244
247
uses : dtolnay/rust-toolchain@stable
245
- - name : Checkout BOM tools repo
246
- uses : actions/checkout@v3
247
- with :
248
- repository : stepfunc/bom-tools
249
- ref : 0.1.0
250
- path : bom-tools
251
- - name : Install BOM tools
252
- working-directory : bom-tools
253
- run : cargo install --path bom-tools
248
+ - name : Install Cargo CycloneDx
249
+ run : cargo install cargo-cyclonedx
250
+ - name : Install custom allow-list tool
251
+ run : cargo install --git https://github.com/stepfunc/bom-tools.git
254
252
- name : Checkout
255
- uses : actions/checkout@v3
253
+ uses : actions/checkout@v4
256
254
- name : Download compiled FFI
257
255
uses : actions/download-artifact@v3
258
256
with :
259
257
name : ffi-modules
260
258
path : ffi-modules
259
+ - name : Create SBOMs
260
+ run : |
261
+ for dir in ffi-modules/*; do
262
+ echo "processing path: $dir"
263
+ target=`basename "${dir}"`
264
+ cargo cyclonedx -f json --target $target
265
+ mv ./ffi/rodbus-ffi/rodbus-ffi.cdx.json ffi-modules/$target
266
+ mv ./ffi/rodbus-ffi-java/rodbus-ffi-java.cdx.json ffi-modules/$target
267
+ done
261
268
- name : Create FFI third-party-licenses.txt
262
- run : bom-tools gen-licenses-dir ./ffi-modules build.ffi.log ./dep_config.json > third-party-licenses.txt
263
- - name : Package all bindings
264
- run : cargo run --bin rodbus-bindings -- --package ./ffi-modules --options ./packaging.json -f third-party-licenses.txt
269
+ run : allow-list gen-licenses-dir -l ffi-modules -b rodbus-ffi.cdx.json -c allowed.json > third-party-licenses.txt
270
+ - name : Create FFI third-party-licenses-java.txt
271
+ run : allow-list gen-licenses-dir -l ffi-modules -b rodbus-ffi-java.cdx.json -c allowed.json > third-party-licenses-java.txt
272
+ - name : Package C/C++ bindings
273
+ run : cargo run --bin rodbus-bindings -- --c --package ./ffi-modules --options ./packaging.json -f third-party-licenses.txt
274
+ - name : Package .NET bindings
275
+ run : cargo run --bin rodbus-bindings -- --dotnet --package ./ffi-modules --options ./packaging.json -f third-party-licenses.txt
276
+ - name : Package Java bindings
277
+ run : cargo run --bin rodbus-bindings -- --java --package ./ffi-modules --options ./packaging.json -f third-party-licenses-java.txt
265
278
- name : Upload C/C++ bindings
266
279
uses : actions/upload-artifact@v3
267
280
with :
@@ -327,9 +340,9 @@ jobs:
327
340
working-directory : artifacts/java-bindings
328
341
run : >
329
342
shopt -s extglob &&
330
- mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2 -DrepositoryId=ossrh -DpomFile=pom.xml -Dfile=$(find rodbus-+([0-9]).+([0-9]).+([0-9])*(-rc+([0-9])). jar) &&
331
- mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2 -DrepositoryId=ossrh -DpomFile=pom.xml -Dfile=$(find rodbus-+([0-9]).+([0-9]).+([0-9])*(-rc+([0-9]))- sources.jar) -Dclassifier=sources &&
332
- mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2 -DrepositoryId=ossrh -DpomFile=pom.xml -Dfile=$(find rodbus-+([0-9]).+([0-9]).+([0-9])*(-rc+([0-9]))- javadoc.jar) -Dclassifier=javadoc
343
+ mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2 -DrepositoryId=ossrh -DpomFile=pom.xml -Dfile=rodbus-${{github.ref_name}}. jar &&
344
+ mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2 -DrepositoryId=ossrh -DpomFile=pom.xml -Dfile=rodbus-${{github.ref_name}}- sources.jar -Dclassifier=sources &&
345
+ mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2 -DrepositoryId=ossrh -DpomFile=pom.xml -Dfile=rodbus-${{github.ref_name}}- javadoc.jar -Dclassifier=javadoc
333
346
- name : Publish NuGet package
334
347
shell : bash
335
348
run : dotnet nuget push $(find artifacts/dotnet-bindings/rodbus*.nupkg) -s https://api.nuget.org/v3/index.json -k ${{ secrets.SFIO_NUGET_KEY }}
0 commit comments