quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

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