libsodium/.github/workflows/dotnet-core.yml
Frank Denis 57863e390d .NET: use macOS 10.15 as a target instead of 10.13
macOS 10.15 has reached EOL, and doesn't even get security
fixes from Apple any more. So, hopefully .NET will soon remove
support for it as well.
2022-11-28 00:39:22 +01:00

371 lines
13 KiB
YAML

name: .NET Package
on:
push:
branches:
- stable
- next
jobs:
build-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: buildbase.bat
run: buildbase.bat ..\vs2022\libsodium.sln 17
working-directory: builds/msvc/build/
shell: cmd
- uses: actions/upload-artifact@v3
with:
name: build-win-x64
path: bin/x64/Release/v143/dynamic/libsodium.dll
- uses: actions/upload-artifact@v3
with:
name: build-win-x86
path: bin/Win32/Release/v143/dynamic/libsodium.dll
build-linux-glibc:
runs-on: ubuntu-latest
steps:
- name: Install Zig
uses: goto-bus-stop/setup-zig@869a4299cf8ac7db4ebffaec36ad82a682f88acb
with:
version: master
- uses: actions/checkout@v3
- name: build
run: |
zig build -Drelease-fast -Dtarget=x86_64-linux-gnu.2.17
- name: tests
run: cd zig-out/bin && ./run.sh
- uses: actions/upload-artifact@v3
with:
name: build-linux-x64
path: zig-out/lib/libsodium.so
build-linux-glibc-arm:
runs-on: ubuntu-latest
steps:
- name: Install Zig
uses: goto-bus-stop/setup-zig@869a4299cf8ac7db4ebffaec36ad82a682f88acb
with:
version: master
- name: Fix ARM support
run: |
curl -L https://raw.githubusercontent.com/ziglang/zig/master/lib/libc/glibc/sysdeps/arm/arm-features.h | sudo tee /opt/hostedtoolcache/zig/zig-linux-x86_64-*/x64/lib/libc/glibc/sysdeps/arm/sysdep.h >/dev/null
- name: Set up emulation environment
run: |
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
sudo apt-get install -y build-essential qemu binfmt-support qemu-user-static qemu-system-arm gcc-arm-linux-gnueabihf libc6-armhf-cross
sudo dpkg --add-architecture armhf
sudo update-binfmts --enable qemu-arm
sudo update-binfmts --display
sudo ln -s /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.* /lib
- uses: actions/checkout@v3
- name: build
run: |
zig build -Drelease-fast -Dtarget=arm-linux-gnueabihf.2.23
- name: tests
run: |
cd zig-out/bin && env LD_LIBRARY_PATH=/usr/arm-linux-gnueabihf/lib ./run.sh
- uses: actions/upload-artifact@v3
with:
name: build-linux-arm
path: zig-out/lib/libsodium.so
build-linux-glibc-arm64:
runs-on: ubuntu-latest
steps:
- name: Install Zig
uses: goto-bus-stop/setup-zig@869a4299cf8ac7db4ebffaec36ad82a682f88acb
with:
version: master
- name: Set up emulation environment
run: |
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
sudo apt-get install -y qemu binfmt-support qemu-user-static qemu-system-arm gcc-aarch64-linux-gnu libc6-arm64-cross
sudo dpkg --add-architecture arm64
sudo update-binfmts --enable qemu-aarch64
sudo update-binfmts --display
sudo ln -s /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.* /lib
- uses: actions/checkout@v3
- name: build
run: |
zig build -Drelease-fast -Dtarget=aarch64-linux-gnu.2.23
- name: tests
run: |
cd zig-out/bin && env LD_LIBRARY_PATH=/usr/aarch64-linux-gnu/lib ./run.sh
- uses: actions/upload-artifact@v3
with:
name: build-linux-arm64
path: zig-out/lib/libsodium.so
build-linux-musl:
runs-on: ubuntu-latest
container:
image: alpine:3.13
steps:
- name: Set up build environment
run: |
apk update
apk add alpine-sdk ca-certificates xz
- name: Install Zig
uses: goto-bus-stop/setup-zig@869a4299cf8ac7db4ebffaec36ad82a682f88acb
with:
version: master
- uses: actions/checkout@v3
- name: build
run: |
zig build -Drelease-fast -Dtarget=x86_64-linux-musl
- name: tests
run: |
cd zig-out/bin && ./run.sh
- uses: actions/upload-artifact@v3
with:
name: build-linux-musl-x64
path: zig-out/lib/libsodium.so
build-linux-musl-arm:
runs-on: ubuntu-latest
steps:
- name: Install Zig
uses: goto-bus-stop/setup-zig@869a4299cf8ac7db4ebffaec36ad82a682f88acb
with:
version: master
- uses: actions/checkout@v3
- name: build
run: |
zig build -Drelease-fast -Dtarget=arm-linux-musleabihf
- uses: actions/upload-artifact@v3
with:
name: build-linux-musl-arm
path: zig-out/lib/libsodium.so
build-linux-musl-arm64:
runs-on: ubuntu-latest
steps:
- name: Install Zig
uses: goto-bus-stop/setup-zig@869a4299cf8ac7db4ebffaec36ad82a682f88acb
with:
version: master
- uses: actions/checkout@v3
- name: build
run: |
zig build -Drelease-fast -Dtarget=aarch64-linux-musl
- uses: actions/upload-artifact@v3
with:
name: build-linux-musl-arm64
path: zig-out/lib/libsodium.so
build-macos-x64:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- name: configure
run: env CFLAGS="-Ofast -arch x86_64 -mmacosx-version-min=10.15" LDFLAGS="-arch x86_64 -mmacosx-version-min=10.15" ./configure --host=arm-apple-darwin20 --prefix=$PWD/.libsodium-build
- name: make
run: make
- name: make check
run: make check
- name: make install
run: make install
- uses: actions/upload-artifact@v3
with:
name: build-osx-x64
path: .libsodium-build/lib/libsodium.dylib
build-macos-arm64:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- name: configure
run: env CFLAGS="-Ofast -arch arm64 -mmacosx-version-min=10.15" LDFLAGS="-arch arm64 -mmacosx-version-min=10.15" ./configure --host=arm-apple-darwin20 --prefix=$PWD/.libsodium-build
- name: make
run: make
- name: make install
run: make install
- uses: actions/upload-artifact@v3
with:
name: build-osx-arm64
path: .libsodium-build/lib/libsodium.dylib
pack:
runs-on: ubuntu-latest
needs:
- build-windows
- build-linux-glibc
- build-linux-glibc-arm
- build-linux-glibc-arm64
- build-linux-musl
- build-linux-musl-arm
- build-linux-musl-arm64
- build-macos-x64
- build-macos-arm64
container:
image: mcr.microsoft.com/dotnet/sdk:6.0
env:
DOTNET_CLI_TELEMETRY_OPTOUT: 1
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: 1
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
name: build-win-x64
path: .libsodium-pack/runtimes/win-x64/native/
- uses: actions/download-artifact@v3
with:
name: build-win-x86
path: .libsodium-pack/runtimes/win-x86/native/
- uses: actions/download-artifact@v3
with:
name: build-linux-x64
path: .libsodium-pack/runtimes/linux-x64/native/
- uses: actions/download-artifact@v3
with:
name: build-linux-arm64
path: .libsodium-pack/runtimes/linux-arm64/native/
- uses: actions/download-artifact@v3
with:
name: build-linux-arm
path: .libsodium-pack/runtimes/linux-arm/native/
- uses: actions/download-artifact@v3
with:
name: build-linux-musl-x64
path: .libsodium-pack/runtimes/linux-musl-x64/native/
- uses: actions/download-artifact@v3
with:
name: build-linux-musl-arm
path: .libsodium-pack/runtimes/linux-musl-arm/native/
- uses: actions/download-artifact@v3
with:
name: build-linux-musl-arm64
path: .libsodium-pack/runtimes/linux-musl-arm64/native/
- uses: actions/download-artifact@v3
with:
name: build-osx-x64
path: .libsodium-pack/runtimes/osx-x64/native/
- uses: actions/download-artifact@v3
with:
name: build-osx-arm64
path: .libsodium-pack/runtimes/osx-arm64/native/
- name: Copy files
run: cp AUTHORS ChangeLog LICENSE packaging/dotnet-core/libsodium.pkgproj .libsodium-pack/
- name: Create NuGet package
run: dotnet pack -c Release .libsodium-pack/libsodium.pkgproj
- uses: actions/upload-artifact@v3
with:
name: nuget-package
path: .libsodium-pack/bin/Release/*.nupkg
build-test-binaries:
runs-on: ubuntu-latest
needs:
- pack
container:
image: mcr.microsoft.com/dotnet/sdk:6.0
env:
DOTNET_CLI_TELEMETRY_OPTOUT: 1
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: 1
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
name: nuget-package
path: .libsodium-pack/
- name: dotnet new
run: dotnet new console -n Tests -o .libsodium-test/
- name: dotnet add package libsodium
run: dotnet add .libsodium-test/Tests.csproj package libsodium -s $PWD/.libsodium-pack
- name: Copy files
run: cp -f packaging/dotnet-core/test.cs .libsodium-test/Program.cs
- name: dotnet publish linux-x64
run: dotnet publish -c Release -r linux-x64 --self-contained true -p:PublishTrimmed=true
working-directory: .libsodium-test/
- name: dotnet publish linux-arm
run: dotnet publish -c Release -r linux-arm --self-contained true -p:PublishTrimmed=true
working-directory: .libsodium-test/
- name: dotnet publish linux-arm64
run: dotnet publish -c Release -r linux-arm64 --self-contained true -p:PublishTrimmed=true
working-directory: .libsodium-test/
- name: Move Build Output
run: |
mkdir .libsodium-builds
mv .libsodium-test/bin/Release/net6.0/linux-arm/publish .libsodium-builds/linux-arm
mv .libsodium-test/bin/Release/net6.0/linux-arm64/publish .libsodium-builds/linux-arm64
mv .libsodium-test/bin/Release/net6.0/linux-x64/publish .libsodium-builds/linux-x64
- uses: actions/upload-artifact@v3
with:
name: test-builds
path: .libsodium-builds/*
run-test-binaries-os-versions:
runs-on: ubuntu-latest
needs:
- build-test-binaries
strategy:
matrix:
# CentOS 7 and Debian 10 use an older GCC version; make sure we can run on those platforms.
arch: [ 'centos:7', 'debian:10' ]
container:
image: ${{ matrix.arch }}
env:
DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: 1
steps:
- uses: actions/download-artifact@v3
with:
name: test-builds
path: .libsodium-builds/
- name: Run x64 tests
run: |
chmod +x .libsodium-builds/linux-x64/Tests
.libsodium-builds/linux-x64/Tests
run-test-binaries-cross-plat:
runs-on: ubuntu-22.04
needs:
- build-test-binaries
env:
DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: 1
strategy:
matrix:
include:
- arch: x64
libs: /usr/lib
- arch: arm
libs: /usr/arm-linux-gnueabihf/lib
- arch: arm64
libs: /usr/aarch64-linux-gnu/lib
arch: [x64, arm, arm64]
steps:
- name: Set up build environment
run: |
export DEBIAN_FRONTEND=noninteractive
# On virtualization systems such as the one used by WSL2, the ARM crypto extensions
# don't work as expected. As a result, installing on Ubuntu fails during integrity
# checks. As a workaround, the following command disables hardware acceleration for
# gcrypt, which the apt-get command relies on.
sudo mkdir -p /etc/gcrypt && echo all | sudo tee /etc/gcrypt/hwf.deny
sudo apt-get update && sudo apt-get install -y qemu binfmt-support qemu-user-static qemu-system-arm gcc-arm-linux-gnueabihf gcc-aarch64-linux-gnu libc6-armhf-cross libc6-arm64-cross
sudo dpkg --add-architecture armhf
sudo dpkg --add-architecture arm64
sudo update-binfmts --enable qemu-aarch64
sudo update-binfmts --enable qemu-arm
sudo update-binfmts --display
sudo ln -s /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.* /lib
sudo ln -s /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.* /lib
- uses: actions/download-artifact@v3
with:
name: test-builds
path: .libsodium-builds/
- name: Run ${{ matrix.arch }}
run: |
chmod +x .libsodium-builds/linux-${{ matrix.arch }}/Tests
env LD_LIBRARY_PATH=${{ matrix.libs }} .libsodium-builds/linux-${{ matrix.arch }}/Tests