Skip to content

Commit 01439eb

Browse files
committed
adapt changes on zstd.yml to sodium.yml
1 parent 4128531 commit 01439eb

File tree

1 file changed

+75
-8
lines changed

1 file changed

+75
-8
lines changed

.github/workflows/sodium.yml

Lines changed: 75 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,12 @@ jobs:
2828
submodules: recursive
2929

3030
- name: Checkout latest Tag
31-
shell: bash
32-
run: git fetch --tags && git checkout "$(git describe --tags "$(git rev-list --tags --max-count=1)")"
33-
34-
- name: Print Version
35-
id: print-version
3631
shell: bash
3732
run: |
38-
git fetch --tags
39-
echo "version=$(git describe --tags $(git rev-list --tags --max-count=1))" >> $GITHUB_OUTPUT
33+
git fetch --tags
34+
LATEST_TAG=$(git tag | grep -E ^[0-9]+.[0-9]+.[0-9]+$ | tail -1)
35+
git checkout "$LATEST_TAG"
36+
echo "version=$LATEST_TAG" >> $GITHUB_OUTPUT
4037
4138
- name: Install Visual Studio 2022 Build Tools
4239
if: matrix.os == 'windows-latest'
@@ -97,8 +94,74 @@ jobs:
9794
path: output
9895
compression-level: 9 # Prefer smaller downloads over a shorter workflow runtime
9996

97+
build-musl:
98+
name: Build sodium (alpine-musl)
99+
runs-on: ubuntu-latest
100+
101+
# We sadly cant use a matrix to run x64 and ARM64, because it would give use 2 artifacts
102+
steps:
103+
- name: Clone sodium repo
104+
uses: actions/checkout@v4.2.2
105+
with:
106+
repository: jedisct1/libsodium
107+
submodules: recursive
108+
109+
- name: Checkout latest Tag
110+
shell: bash
111+
run: |
112+
git fetch --tags
113+
LATEST_TAG=$(git tag | grep -E ^[0-9]+.[0-9]+.[0-9]+$ | tail -1)
114+
git checkout "$LATEST_TAG"
115+
116+
- name: Setup Alpine Linux for x64
117+
uses: jirutka/setup-alpine@v1
118+
with:
119+
packages: >
120+
build-base
121+
cmake
122+
git
123+
make
124+
gcc
125+
g++
126+
127+
- name: Build sodium for x64 (musl)
128+
shell: alpine.sh {0}
129+
run: |
130+
mkdir -p output/x64
131+
./configure --enable-static=off
132+
make -j4
133+
cp src/libsodium/.libs/libsodium.so output/x64/libsodium.musl.so
134+
make clean # Clean between builds
135+
136+
- name: Setup Alpine Linux for ARM64
137+
uses: jirutka/setup-alpine@v1
138+
with:
139+
arch: aarch64
140+
packages: >
141+
build-base
142+
cmake
143+
git
144+
make
145+
gcc
146+
g++
147+
148+
- name: Build sodium for ARM64 (musl)
149+
shell: alpine.sh {0}
150+
run: |
151+
mkdir -p output/ARM64
152+
./configure --enable-static=off
153+
make -j4
154+
cp src/libsodium/.libs/libsodium.so output/ARM64/libsodium.musl.so
155+
156+
- name: Publish Artifacts
157+
uses: actions/upload-artifact@v4.4.3
158+
with:
159+
name: sodium-alpine-latest
160+
path: output
161+
compression-level: 9 # Prefer smaller downloads over a shorter workflow runtime
162+
100163
publish-nuget:
101-
needs: build
164+
needs: [build, build-musl]
102165
runs-on: ubuntu-latest
103166
steps:
104167
- name: Checkout CSPROJ files
@@ -124,12 +187,16 @@ jobs:
124187
mkdir -p lib/sodium/win-arm64/native
125188
mkdir -p lib/sodium/linux-arm64/native
126189
mkdir -p lib/sodium/osx-arm64/native
190+
mkdir -p lib/sodium/linux-musl-x64/native
191+
mkdir -p lib/sodium/linux-musl-arm64/native
127192
cp temp/x64/libsodium.dll lib/sodium/win-x64/native/libsodium.dll
128193
cp temp/x64/libsodium.so lib/sodium/linux-x64/native/libsodium.so
129194
cp temp/x64/libsodium.dylib lib/sodium/osx-x64/native/libsodium.dylib
130195
cp temp/ARM64/libsodium.dll lib/sodium/win-arm64/native/libsodium.dll
131196
cp temp/ARM64/libsodium.so lib/sodium/linux-arm64/native/libsodium.so
132197
cp temp/ARM64/libsodium.dylib lib/sodium/osx-arm64/native/libsodium.dylib
198+
cp temp/x64/libsodium.musl.so lib/zstd/linux-musl-x64/native/libsodium.so
199+
cp temp/ARM64/libsodium.musl.so lib/zstd/linux-musl-arm64/native/libsodium.so
133200
134201
- name: Pack DSharpPlus.Natives.Sodium
135202
shell: bash

0 commit comments

Comments
 (0)