Skip to content

Commit 0ca5d25

Browse files
committed
Add support for linux musl targets
Add support for `i686-unknown-linux-musl`, `x86_64-unknown-linux-musl` and `aarch64-unknown-linux-musl` Pull-Request: #8 Signed-off-by: Yuki Kishimoto <yukikishimoto@protonmail.com>
1 parent b6ad35a commit 0ca5d25

File tree

8 files changed

+61
-22
lines changed

8 files changed

+61
-22
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333

3434
* Add support for event streaming (https://github.com/rust-nostr/nostr-sdk-ffi/pull/6)
3535
* Add `i686-unknown-linux-gnu`, `i686-pc-windows-msvc` and `aarch64-pc-windows-msvc` support for Python Wheels (https://github.com/rust-nostr/nostr-sdk-ffi/pull/7)
36+
* Add support for `i686-unknown-linux-musl`, `x86_64-unknown-linux-musl` and `aarch64-unknown-linux-musl` (https://github.com/rust-nostr/nostr-sdk-ffi/pull/8)
3637

3738
## v0.41.0 - 2025/04/15
3839

csharp/Nostr.Sdk/Nostr.Sdk.csproj

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<PackageTags>nostr protocol</PackageTags>
1919
<Copyright>2025 Yuki Kishimoto</Copyright>
2020
<Authors>Yuki Kishimoto</Authors>
21-
<RuntimeIdentifiers>linux-x86;linux-x64;linux-arm64;osx-x64;osx-arm64;win-x86;win-x64;win-arm64</RuntimeIdentifiers>
21+
<RuntimeIdentifiers>linux-x86;linux-x64;linux-arm64;linux-musl-x86;linux-musl-x64;linux-musl-arm64;osx-x64;osx-arm64;win-x86;win-x64;win-arm64</RuntimeIdentifiers>
2222
</PropertyGroup>
2323

2424
<ItemGroup>
@@ -27,11 +27,16 @@
2727
</ItemGroup>
2828

2929
<ItemGroup>
30-
<!-- Linux -->
30+
<!-- Linux GLIBC -->
3131
<Content Include="runtimes/linux-x86/native/libnostr_sdk_ffi.so" Link="runtimes/linux-x86/native/libnostr_sdk_ffi.so" Pack="true" PackagePath="runtimes/linux-x86/native/libnostr_sdk_ffi.so" />
3232
<Content Include="runtimes/linux-x64/native/libnostr_sdk_ffi.so" Link="runtimes/linux-x64/native/libnostr_sdk_ffi.so" Pack="true" PackagePath="runtimes/linux-x64/native/libnostr_sdk_ffi.so" />
3333
<Content Include="runtimes/linux-arm64/native/libnostr_sdk_ffi.so" Link="runtimes/linux-arm64/native/libnostr_sdk_ffi.so" Pack="true" PackagePath="runtimes/linux-arm64/native/libnostr_sdk_ffi.so" />
3434

35+
<!-- Linux MUSL -->
36+
<Content Include="runtimes/linux-musl-x86/native/libnostr_sdk_ffi.a" Link="runtimes/linux-musl-x86/native/libnostr_sdk_ffi.a" Pack="true" PackagePath="runtimes/linux-musl-x86/native/libnostr_sdk_ffi.a" />
37+
<Content Include="runtimes/linux-musl-x64/native/libnostr_sdk_ffi.a" Link="runtimes/linux-musl-x64/native/libnostr_sdk_ffi.a" Pack="true" PackagePath="runtimes/linux-musl-x64/native/libnostr_sdk_ffi.a" />
38+
<Content Include="runtimes/linux-musl-arm64/native/libnostr_sdk_ffi.a" Link="runtimes/linux-musl-arm64/native/libnostr_sdk_ffi.a" Pack="true" PackagePath="runtimes/linux-musl-arm64/native/libnostr_sdk_ffi.a" />
39+
3540
<!-- Apple -->
3641
<Content Include="runtimes/osx-x64/native/libnostr_sdk_ffi.dylib" Link="runtimes/osx-x64/native/libnostr_sdk_ffi.dylib" Pack="true" PackagePath="runtimes/osx-x64/native/libnostr_sdk_ffi.dylib" />
3742
<Content Include="runtimes/osx-arm64/native/libnostr_sdk_ffi.dylib" Link="runtimes/osx-arm64/native/libnostr_sdk_ffi.dylib" Pack="true" PackagePath="runtimes/osx-arm64/native/libnostr_sdk_ffi.dylib" />

csharp/assemble.sh

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ set -exuo pipefail
55
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
66
MAIN_DIR="${SCRIPT_DIR}/Nostr.Sdk"
77
RUNTIME_DIR="${MAIN_DIR}/runtimes"
8+
TARGET_DIR="${SCRIPT_DIR}/../target"
89
FFI_DIR="${SCRIPT_DIR}/../ffi"
910

1011
# Clean
@@ -19,14 +20,22 @@ mkdir -p "${RUNTIME_DIR}/osx-arm64/native/"
1920
cp "${FFI_DIR}/apple/macos/x86_64/libnostr_sdk_ffi.dylib" "${RUNTIME_DIR}/osx-x64/native/"
2021
cp "${FFI_DIR}/apple/macos/aarch64/libnostr_sdk_ffi.dylib" "${RUNTIME_DIR}/osx-arm64/native/"
2122

22-
# Copy linux binaries
23+
# Copy linux glibc binaries
2324
mkdir -p "${RUNTIME_DIR}/linux-x86/native/"
2425
mkdir -p "${RUNTIME_DIR}/linux-x64/native/"
2526
mkdir -p "${RUNTIME_DIR}/linux-arm64/native/"
2627
cp "${FFI_DIR}/linux/x86/libnostr_sdk_ffi.so" "${RUNTIME_DIR}/linux-x86/native/"
2728
cp "${FFI_DIR}/linux/x86_64/libnostr_sdk_ffi.so" "${RUNTIME_DIR}/linux-x64/native/"
2829
cp "${FFI_DIR}/linux/aarch64/libnostr_sdk_ffi.so" "${RUNTIME_DIR}/linux-arm64/native/"
2930

31+
# Copy linux musl binaries
32+
mkdir -p "${RUNTIME_DIR}/linux-musl-x86/native/"
33+
mkdir -p "${RUNTIME_DIR}/linux-musl-x64/native/"
34+
mkdir -p "${RUNTIME_DIR}/linux-musl-arm64/native/"
35+
cp "${TARGET_DIR}/i686-unknown-linux-musl/release/libnostr_sdk_ffi.a" "${RUNTIME_DIR}/linux-musl-x86/native/"
36+
cp "${TARGET_DIR}/x86_64-unknown-linux-musl/release/libnostr_sdk_ffi.a" "${RUNTIME_DIR}/linux-musl-x64/native/"
37+
cp "${TARGET_DIR}/aarch64-unknown-linux-musl/release/libnostr_sdk_ffi.a" "${RUNTIME_DIR}/linux-musl-arm64/native/"
38+
3039
# Copy windows binaries
3140
mkdir -p "${RUNTIME_DIR}/win-x86/native/"
3241
mkdir -p "${RUNTIME_DIR}/win-x64/native/"

jvm/assemble.sh

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
66
MAIN_DIR="${SCRIPT_DIR}/lib/src/main"
77
KOTLIN_DIR="${MAIN_DIR}/kotlin"
88
RESOURCE_DIR="${MAIN_DIR}/resources"
9+
TARGET_DIR="${SCRIPT_DIR}/../target"
910
FFI_DIR="${SCRIPT_DIR}/../ffi"
1011
FFI_OUTPUT_DIR="${FFI_DIR}/jar"
1112

@@ -18,14 +19,22 @@ mkdir -p "${RESOURCE_DIR}/darwin-aarch64/"
1819
cp "${FFI_DIR}/apple/macos/x86_64/libnostr_sdk_ffi.dylib" "${RESOURCE_DIR}/darwin-x86-64/"
1920
cp "${FFI_DIR}/apple/macos/aarch64/libnostr_sdk_ffi.dylib" "${RESOURCE_DIR}/darwin-aarch64/"
2021

21-
# Copy linux binaries
22+
# Copy linux glibc binaries
2223
mkdir -p "${RESOURCE_DIR}/linux-x86/"
2324
mkdir -p "${RESOURCE_DIR}/linux-x86-64/"
2425
mkdir -p "${RESOURCE_DIR}/linux-aarch64/"
2526
cp "${FFI_DIR}/linux/x86/libnostr_sdk_ffi.so" "${RESOURCE_DIR}/linux-x86/"
2627
cp "${FFI_DIR}/linux/x86_64/libnostr_sdk_ffi.so" "${RESOURCE_DIR}/linux-x86-64/"
2728
cp "${FFI_DIR}/linux/aarch64/libnostr_sdk_ffi.so" "${RESOURCE_DIR}/linux-aarch64/"
2829

30+
# Copy linux musl binaries
31+
mkdir -p "${RESOURCE_DIR}/linux-musl-x86/"
32+
mkdir -p "${RESOURCE_DIR}/linux-musl-x86-64/"
33+
mkdir -p "${RESOURCE_DIR}/linux-musl-aarch64/"
34+
cp "${TARGET_DIR}/i686-unknown-linux-musl/release/libnostr_sdk_ffi.a" "${RESOURCE_DIR}/linux-musl-x86/"
35+
cp "${TARGET_DIR}/x86_64-unknown-linux-musl/release/libnostr_sdk_ffi.a" "${RESOURCE_DIR}/linux-musl-x86-64/"
36+
cp "${TARGET_DIR}/aarch64-unknown-linux-musl/release/libnostr_sdk_ffi.a" "${RESOURCE_DIR}/linux-musl-aarch64/"
37+
2938
# Copy windows binaries
3039
mkdir -p "${RESOURCE_DIR}/win32-x86/"
3140
mkdir -p "${RESOURCE_DIR}/win32-x86-64/"

python/MANIFEST.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
include ./src/nostr-sdk/libnostr_sdk_ffi.dylib
22
include ./src/nostr-sdk/libnostr_sdk_ffi.so
3+
include ./src/nostr-sdk/libnostr_sdk_ffi.a
34
include ./src/nostr-sdk/nostr_sdk_ffi.dll

python/assemble.sh

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ set -exuo pipefail
55
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
66
DIST_DIR="${SCRIPT_DIR}/dist"
77
SRC_DIR="${SCRIPT_DIR}/src/nostr-sdk"
8+
TARGET_DIR="${SCRIPT_DIR}/../target"
89
FFI_DIR="${SCRIPT_DIR}/../ffi"
910

1011
# Clean
@@ -21,11 +22,16 @@ docker build -t wheel-builder "${SCRIPT_DIR}"
2122
# Generate bindings
2223
cargo run -p nostr-sdk-ffi --features uniffi-cli --bin uniffi-bindgen generate --library "${FFI_DIR}/apple/macos/x86_64/libnostr_sdk_ffi.dylib" --language python --no-format -o "${SRC_DIR}"
2324

24-
# Build linux wheels
25+
# Build linux glibc wheels
2526
docker run --rm -v "${FFI_DIR}/linux/x86/:/build/binaries" -v "${SRC_DIR}:/build/binding" -v "$(pwd)/dist:/build/dist" -e PLAT_NAME="manylinux_2_17_i686" wheel-builder
2627
docker run --rm -v "${FFI_DIR}/linux/x86_64/:/build/binaries" -v "${SRC_DIR}:/build/binding" -v "$(pwd)/dist:/build/dist" -e PLAT_NAME="manylinux_2_17_x86_64" wheel-builder
2728
docker run --rm -v "${FFI_DIR}/linux/aarch64/:/build/binaries" -v "${SRC_DIR}:/build/binding" -v "$(pwd)/dist:/build/dist" -e PLAT_NAME="manylinux_2_17_aarch64" wheel-builder
2829

30+
# Build linux musl wheels
31+
docker run --rm -v "${TARGET_DIR}/i686-unknown-linux-musl/release/libnostr_sdk_ffi.a:/build/binaries/libnostr_sdk_ffi.a" -v "${SRC_DIR}:/build/binding" -v "$(pwd)/dist:/build/dist" -e PLAT_NAME="musllinux_1_2_i686" wheel-builder
32+
docker run --rm -v "${TARGET_DIR}/x86_64-unknown-linux-musl/release/libnostr_sdk_ffi.a:/build/binaries/libnostr_sdk_ffi.a" -v "${SRC_DIR}:/build/binding" -v "$(pwd)/dist:/build/dist" -e PLAT_NAME="musllinux_1_2_x86_64" wheel-builder
33+
docker run --rm -v "${TARGET_DIR}/aarch64-unknown-linux-musl/release/libnostr_sdk_ffi.a:/build/binaries/libnostr_sdk_ffi.a" -v "${SRC_DIR}:/build/binding" -v "$(pwd)/dist:/build/dist" -e PLAT_NAME="musllinux_1_2_aarch64" wheel-builder
34+
2935
# Build macos wheels
3036
docker run --rm -v "${FFI_DIR}/apple/macos/x86_64/:/build/binaries" -v "${SRC_DIR}:/build/binding" -v "$(pwd)/dist:/build/dist" -e PLAT_NAME="macosx_11_0_x86_64" wheel-builder
3137
docker run --rm -v "${FFI_DIR}/apple/macos/aarch64/:/build/binaries" -v "${SRC_DIR}:/build/binding" -v "$(pwd)/dist:/build/dist" -e PLAT_NAME="macosx_11_0_arm64" wheel-builder

rust-toolchain.toml

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,30 @@ profile = "minimal"
44
components = ["clippy", "rustfmt"]
55
targets = [
66
# Android
7-
"aarch64-linux-android", # Most modern devices - ~60-75%
8-
"armv7-linux-androideabi", # Older devices - ~20-30%
9-
"x86_64-linux-android", # Rare, used mostly in emulators - ~1-2%
10-
"i686-linux-android", # Legacy and rare devices - <1%
7+
"aarch64-linux-android", # Android arm64 | Most modern devices - ~60-75%
8+
"armv7-linux-androideabi", # Android armv7-a | Older devices - ~20-30%
9+
"x86_64-linux-android", # Android x86_64 | Rare, used mostly in emulators - ~1-2%
10+
"i686-linux-android", # Android x86 | Legacy and rare devices - <1%
1111

1212
# Linux
13-
"i686-unknown-linux-gnu",
14-
"x86_64-unknown-linux-gnu",
15-
"aarch64-unknown-linux-gnu",
13+
"i686-unknown-linux-gnu", # Linux x86
14+
"x86_64-unknown-linux-gnu", # Linux x86_64
15+
"aarch64-unknown-linux-gnu", # Linux arm64
16+
"i686-unknown-linux-musl", # Linux x86 (MUSL)
17+
"x86_64-unknown-linux-musl", # Linux x86_64 (MUSL)
18+
"aarch64-unknown-linux-musl", # Linux arm64 (MUSL)
1619

1720
# Apple
18-
"aarch64-apple-ios", # iOS arm64
19-
"x86_64-apple-ios", # iOS x86_64
20-
"aarch64-apple-ios-sim", # simulator mac M1
21-
"aarch64-apple-darwin", # mac M1
22-
"x86_64-apple-darwin", # mac x86_64
23-
"aarch64-apple-ios-macabi", # mac catalyst arm64
24-
"x86_64-apple-ios-macabi", # mac catalyst x86_64
21+
"aarch64-apple-ios", # iOS arm64
22+
"x86_64-apple-ios", # iOS x86_64
23+
"aarch64-apple-ios-sim", # simulator mac M1
24+
"aarch64-apple-darwin", # mac M1
25+
"x86_64-apple-darwin", # mac x86_64
26+
"aarch64-apple-ios-macabi", # mac catalyst arm64
27+
"x86_64-apple-ios-macabi", # mac catalyst x86_64
2528

2629
# Windows
27-
"i686-pc-windows-msvc", # 32-bit Windows
28-
"x86_64-pc-windows-msvc", # 64-bit Windows
29-
"aarch64-pc-windows-msvc", # 64-bit Windows ARM
30+
"i686-pc-windows-msvc", # Windows x86
31+
"x86_64-pc-windows-msvc", # Windows x86_64
32+
"aarch64-pc-windows-msvc", # Windows arm64
3033
]

scripts/linux.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ cargo zigbuild -p nostr-sdk-ffi --target i686-unknown-linux-gnu.2.17 --release
2828
cargo zigbuild -p nostr-sdk-ffi --target x86_64-unknown-linux-gnu.2.17 --release
2929
cargo zigbuild -p nostr-sdk-ffi --target aarch64-unknown-linux-gnu.2.17 --release
3030

31+
# Build (MUSL)
32+
cargo zigbuild -p nostr-sdk-ffi --target i686-unknown-linux-musl --release
33+
cargo zigbuild -p nostr-sdk-ffi --target x86_64-unknown-linux-musl --release
34+
cargo zigbuild -p nostr-sdk-ffi --target aarch64-unknown-linux-musl --release
35+
3136
# Make directories
3237
mkdir -p "${FFI_LINUX_DIR}/x86"
3338
mkdir -p "${FFI_LINUX_DIR}/x86_64"

0 commit comments

Comments
 (0)