@@ -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'
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