dotnet-core.yml (13690B)
1 name: .NET Package 2 3 on: 4 push: 5 branches: 6 - stable 7 - next 8 9 permissions: 10 id-token: write 11 attestations: write 12 contents: read 13 14 jobs: 15 build-windows-msvc: 16 runs-on: windows-latest 17 steps: 18 - uses: actions/checkout@v4 19 - name: buildbase.bat 20 run: buildbase.bat ..\vs2022\libsodium.sln 17 21 working-directory: builds/msvc/build/ 22 shell: cmd 23 - uses: actions/upload-artifact@v4 24 with: 25 name: build-win-x64 26 path: bin/x64/Release/v143/dynamic/libsodium.dll 27 - uses: actions/upload-artifact@v4 28 with: 29 name: build-win-x86 30 path: bin/Win32/Release/v143/dynamic/libsodium.dll 31 - uses: actions/upload-artifact@v4 32 with: 33 name: build-win-arm64 34 path: bin/ARM64/Release/v143/dynamic/libsodium.dll 35 36 build-others: 37 runs-on: ubuntu-latest 38 steps: 39 - name: Install Zig 40 uses: mlugg/setup-zig@v2 41 with: 42 version: master 43 - uses: actions/checkout@v4 44 45 - name: Build Android AAR 46 run: sh ./dist-build/android-aar.sh 47 48 - name: Extract android AAR file 49 run: | 50 mkdir -p extracted-aar 51 unzip libsodium-*.aar -d extracted-aar 52 53 - name: Upload Android arm64 54 uses: actions/upload-artifact@v4 55 with: 56 name: build-android-arm64 57 path: extracted-aar/prefab/modules/sodium/libs/android.arm64-v8a/libsodium.so 58 59 - name: Upload Android arm 60 uses: actions/upload-artifact@v4 61 with: 62 name: build-android-arm 63 path: extracted-aar/prefab/modules/sodium/libs/android.armeabi-v7a/libsodium.so 64 65 - name: Upload Android x64 66 uses: actions/upload-artifact@v4 67 with: 68 name: build-android-x64 69 path: extracted-aar/prefab/modules/sodium/libs/android.x86_64/libsodium.so 70 71 - name: Upload Android x86 72 uses: actions/upload-artifact@v4 73 with: 74 name: build-android-x86 75 path: extracted-aar/prefab/modules/sodium/libs/android.x86/libsodium.so 76 77 - name: build-linux-x64 78 run: | 79 rm -fr zig-out .zig-cache; zig build -Doptimize=ReleaseFast -Dtarget=x86_64-linux-gnu.2.17 80 - name: tests 81 run: cd zig-out/bin && ./run.sh 82 - uses: actions/upload-artifact@v4 83 with: 84 name: build-linux-x64 85 path: zig-out/lib/libsodium.so 86 87 - name: Set up arm and aarch64 emulation environment 88 run: | 89 export DEBIAN_FRONTEND=noninteractive 90 sudo apt-get update 91 sudo apt-get install -y build-essential qemu-system binfmt-support qemu-user-static qemu-system-arm gcc-arm-linux-gnueabihf libc6-armhf-cross gcc-aarch64-linux-gnu libc6-arm64-cross 92 sudo dpkg --add-architecture armhf 93 sudo update-binfmts --enable qemu-arm 94 sudo update-binfmts --display 95 sudo ln -s /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.* /lib 96 sudo dpkg --add-architecture arm64 97 sudo update-binfmts --enable qemu-aarch64 98 sudo update-binfmts --display 99 sudo ln -s /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.* /lib 100 101 - name: build-linux-arm 102 run: | 103 rm -fr zig-out .zig-cache; zig build -Doptimize=ReleaseFast -Dtarget=arm-linux-gnueabihf.2.23 104 - name: tests 105 run: | 106 cd zig-out/bin && env LD_LIBRARY_PATH=/usr/arm-linux-gnueabihf/lib ./run.sh 107 - uses: actions/upload-artifact@v4 108 with: 109 name: build-linux-arm 110 path: zig-out/lib/libsodium.so 111 112 - name: build-linux-arm64 113 run: | 114 rm -fr zig-out .zig-cache; zig build -Doptimize=ReleaseFast -Dtarget=aarch64-linux-gnu.2.23 115 - name: tests 116 run: | 117 cd zig-out/bin && env LD_LIBRARY_PATH=/usr/aarch64-linux-gnu/lib ./run.sh 118 - uses: actions/upload-artifact@v4 119 with: 120 name: build-linux-arm64 121 path: zig-out/lib/libsodium.so 122 123 - name: build-linux-musl-x64 124 run: | 125 rm -fr zig-out .zig-cache; zig build -Doptimize=ReleaseFast -Dtarget=x86_64-linux-musl 126 - uses: actions/upload-artifact@v4 127 with: 128 name: build-linux-musl-x64 129 path: zig-out/lib/libsodium.so 130 131 - name: build-linux-musl-arm 132 run: | 133 rm -fr zig-out .zig-cache; zig build -Doptimize=ReleaseFast -Dtarget=arm-linux-musleabihf 134 - uses: actions/upload-artifact@v4 135 with: 136 name: build-linux-musl-arm 137 path: zig-out/lib/libsodium.so 138 139 - name: build-linux-musl-arm64 140 run: | 141 rm -fr zig-out .zig-cache; zig build -Doptimize=ReleaseFast -Dtarget=aarch64-linux-musl 142 - uses: actions/upload-artifact@v4 143 with: 144 name: build-linux-musl-arm64 145 path: zig-out/lib/libsodium.so 146 147 build-apple: 148 runs-on: macos-latest 149 steps: 150 - uses: actions/checkout@v4 151 - name: configure 152 run: ./configure 153 - name: build-xcframework 154 run: env LIBSODIUM_FULL_BUILD=1 LIBSODIUM_SKIP_SIMULATORS=1 dist-build/apple-xcframework.sh 155 - uses: actions/upload-artifact@v4 156 with: 157 name: build-macos 158 path: libsodium-apple/macos/lib/libsodium.dylib 159 - uses: actions/upload-artifact@v4 160 with: 161 name: build-ios 162 path: libsodium-apple/ios/lib/libsodium.a 163 - uses: actions/upload-artifact@v4 164 with: 165 name: build-tvos 166 path: libsodium-apple/tvos/lib/libsodium.a 167 - uses: actions/upload-artifact@v4 168 with: 169 name: build-maccatalyst 170 path: libsodium-apple/catalyst/lib/libsodium.a 171 pack: 172 runs-on: ubuntu-latest 173 needs: 174 - build-windows-msvc 175 - build-apple 176 - build-others 177 container: 178 image: mcr.microsoft.com/dotnet/sdk:6.0 179 env: 180 DOTNET_CLI_TELEMETRY_OPTOUT: 1 181 DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 182 DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: 1 183 steps: 184 - uses: actions/checkout@v4 185 - uses: actions/download-artifact@v4 186 with: 187 name: build-win-x64 188 path: .libsodium-pack/runtimes/win-x64/native/ 189 - uses: actions/download-artifact@v4 190 with: 191 name: build-win-x86 192 path: .libsodium-pack/runtimes/win-x86/native/ 193 - uses: actions/download-artifact@v4 194 with: 195 name: build-win-arm64 196 path: .libsodium-pack/runtimes/win-arm64/native/ 197 198 - uses: actions/download-artifact@v4 199 with: 200 name: build-linux-x64 201 path: .libsodium-pack/runtimes/linux-x64/native/ 202 - uses: actions/download-artifact@v4 203 with: 204 name: build-linux-arm64 205 path: .libsodium-pack/runtimes/linux-arm64/native/ 206 - uses: actions/download-artifact@v4 207 with: 208 name: build-linux-arm 209 path: .libsodium-pack/runtimes/linux-arm/native/ 210 - uses: actions/download-artifact@v4 211 with: 212 name: build-linux-musl-x64 213 path: .libsodium-pack/runtimes/linux-musl-x64/native/ 214 - uses: actions/download-artifact@v4 215 with: 216 name: build-linux-musl-arm 217 path: .libsodium-pack/runtimes/linux-musl-arm/native/ 218 - uses: actions/download-artifact@v4 219 with: 220 name: build-linux-musl-arm64 221 path: .libsodium-pack/runtimes/linux-musl-arm64/native/ 222 223 - uses: actions/download-artifact@v4 224 with: 225 name: build-macos 226 path: .libsodium-pack/runtimes/osx-x64/native/ 227 - uses: actions/download-artifact@v4 228 with: 229 name: build-macos 230 path: .libsodium-pack/runtimes/osx-arm64/native/ 231 - uses: actions/download-artifact@v4 232 with: 233 name: build-ios 234 path: .libsodium-pack/runtimes/ios-arm64/native/ 235 - uses: actions/download-artifact@v4 236 with: 237 name: build-tvos 238 path: .libsodium-pack/runtimes/tvos-arm64/native/ 239 - uses: actions/download-artifact@v4 240 with: 241 name: build-maccatalyst 242 path: .libsodium-pack/runtimes/maccatalyst-x64/native/ 243 - uses: actions/download-artifact@v4 244 with: 245 name: build-maccatalyst 246 path: .libsodium-pack/runtimes/maccatalyst-arm64/native/ 247 - uses: actions/download-artifact@v4 248 with: 249 name: build-android-arm64 250 path: .libsodium-pack/runtimes/android-arm64/native/ 251 - uses: actions/download-artifact@v4 252 with: 253 name: build-android-arm 254 path: .libsodium-pack/runtimes/android-arm/native/ 255 - uses: actions/download-artifact@v4 256 with: 257 name: build-android-x64 258 path: .libsodium-pack/runtimes/android-x64/native/ 259 - uses: actions/download-artifact@v4 260 with: 261 name: build-android-x86 262 path: .libsodium-pack/runtimes/android-x86/native/ 263 264 - name: Copy files 265 run: cp AUTHORS ChangeLog LICENSE packaging/dotnet-core/libsodium.pkgproj .libsodium-pack/ 266 267 - name: Create NuGet package 268 run: dotnet pack -c Release .libsodium-pack/libsodium.pkgproj 269 - uses: actions/upload-artifact@v4 270 with: 271 name: nuget-package 272 path: .libsodium-pack/bin/Release/*.nupkg 273 274 - name: Attest Build Provenance 275 uses: actions/attest-build-provenance@897ed5eab6ed058a474202017ada7f40bfa52940 276 with: 277 subject-path: .libsodium-pack/bin/Release/*.nupkg 278 279 build-test-binaries: 280 runs-on: ubuntu-latest 281 needs: 282 - pack 283 container: 284 image: mcr.microsoft.com/dotnet/sdk:6.0 285 env: 286 DOTNET_CLI_TELEMETRY_OPTOUT: 1 287 DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 288 DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: 1 289 steps: 290 - uses: actions/checkout@v4 291 - uses: actions/download-artifact@v4 292 with: 293 name: nuget-package 294 path: .libsodium-pack/ 295 - name: dotnet new 296 run: dotnet new console -n Tests -o .libsodium-test/ 297 298 - name: dotnet add package libsodium 299 run: dotnet add .libsodium-test/Tests.csproj package libsodium -s $PWD/.libsodium-pack 300 - name: Copy files 301 run: cp -f packaging/dotnet-core/test.cs .libsodium-test/Program.cs 302 - name: dotnet publish linux-x64 303 run: dotnet publish -c Release -r linux-x64 --self-contained true -p:PublishTrimmed=true 304 working-directory: .libsodium-test/ 305 - name: dotnet publish linux-arm 306 run: dotnet publish -c Release -r linux-arm --self-contained true -p:PublishTrimmed=true 307 working-directory: .libsodium-test/ 308 - name: dotnet publish linux-arm64 309 run: dotnet publish -c Release -r linux-arm64 --self-contained true -p:PublishTrimmed=true 310 working-directory: .libsodium-test/ 311 - name: Move Build Output 312 run: | 313 mkdir .libsodium-builds 314 mv .libsodium-test/bin/Release/net6.0/linux-arm/publish .libsodium-builds/linux-arm 315 mv .libsodium-test/bin/Release/net6.0/linux-arm64/publish .libsodium-builds/linux-arm64 316 mv .libsodium-test/bin/Release/net6.0/linux-x64/publish .libsodium-builds/linux-x64 317 - uses: actions/upload-artifact@v4 318 with: 319 name: test-builds 320 path: .libsodium-builds/* 321 include-hidden-files: true 322 323 run-test-binaries-os-versions: 324 runs-on: ubuntu-latest 325 needs: 326 - build-test-binaries 327 strategy: 328 matrix: 329 arch: [ 'centos:8', 'debian:10' ] 330 container: 331 image: ${{ matrix.arch }} 332 env: 333 DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: 1 334 steps: 335 - uses: actions/download-artifact@v4 336 with: 337 name: test-builds 338 path: .libsodium-builds/ 339 - name: Run x64 tests 340 run: | 341 chmod +x .libsodium-builds/linux-x64/Tests 342 .libsodium-builds/linux-x64/Tests 343 344 run-test-binaries-cross-plat: 345 runs-on: ubuntu-22.04 346 needs: 347 - build-test-binaries 348 env: 349 DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: 1 350 strategy: 351 matrix: 352 include: 353 - arch: x64 354 libs: /usr/lib 355 - arch: arm 356 libs: /usr/arm-linux-gnueabihf/lib 357 - arch: arm64 358 libs: /usr/aarch64-linux-gnu/lib 359 arch: [x64, arm, arm64] 360 steps: 361 - name: Set up build environment 362 run: | 363 export DEBIAN_FRONTEND=noninteractive 364 365 # On virtualization systems such as the one used by WSL2, the ARM crypto extensions 366 # don't work as expected. As a result, installing on Ubuntu fails during integrity 367 # checks. As a workaround, the following command disables hardware acceleration for 368 # gcrypt, which the apt-get command relies on. 369 sudo mkdir -p /etc/gcrypt && echo all | sudo tee /etc/gcrypt/hwf.deny 370 371 sudo apt-get update && sudo apt-get install -y qemu-system binfmt-support qemu-user-static qemu-system-arm gcc-arm-linux-gnueabihf gcc-aarch64-linux-gnu libc6-armhf-cross libc6-arm64-cross 372 sudo dpkg --add-architecture armhf 373 sudo dpkg --add-architecture arm64 374 sudo update-binfmts --enable qemu-aarch64 375 sudo update-binfmts --enable qemu-arm 376 sudo update-binfmts --display 377 sudo ln -s /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.* /lib 378 sudo ln -s /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.* /lib 379 380 - uses: actions/download-artifact@v4 381 with: 382 name: test-builds 383 path: .libsodium-builds/ 384 385 - name: Run ${{ matrix.arch }} 386 run: | 387 chmod +x .libsodium-builds/linux-${{ matrix.arch }}/Tests 388 env LD_LIBRARY_PATH=${{ matrix.libs }} .libsodium-builds/linux-${{ matrix.arch }}/Tests