Add experimental support for prebuilt linux-riscv64 binaries

This commit is contained in:
Lovell Fuller 2025-10-19 10:25:50 +01:00
parent 206eb4a89a
commit 9e4e184132
6 changed files with 68 additions and 9 deletions

View File

@ -235,32 +235,40 @@ jobs:
matrix: matrix:
include: include:
- platform: linux-arm - platform: linux-arm
distro: bullseye base_image: "balenalib/rpi-raspbian:bullseye"
run_on_arch: armv6
nodejs_arch: armv6l nodejs_arch: armv6l
nodejs_hostname: unofficial-builds.nodejs.org nodejs_hostname: unofficial-builds.nodejs.org
nodejs_version: "18.17.0" nodejs_version: "18.17.0"
nodejs_version_major: 18 nodejs_version_major: 18
- platform: linux-s390x - platform: linux-s390x
distro: bookworm base_image: "--platform=linux/s390x s390x/debian:bookworm"
run_on_arch: s390x
nodejs_arch: s390x nodejs_arch: s390x
nodejs_hostname: nodejs.org nodejs_hostname: nodejs.org
nodejs_version: "18.17.0" nodejs_version: "18.17.0"
nodejs_version_major: 18 nodejs_version_major: 18
- platform: linux-ppc64 - platform: linux-ppc64
distro: bookworm base_image: "--platform=linux/ppc64le ppc64le/debian:bookworm"
run_on_arch: ppc64le
nodejs_arch: ppc64le nodejs_arch: ppc64le
nodejs_hostname: nodejs.org nodejs_hostname: nodejs.org
nodejs_version: "18.17.0" nodejs_version: "18.17.0"
nodejs_version_major: 18 nodejs_version_major: 18
- platform: linux-riscv64
base_image: "--platform=linux/riscv64 riscv64/debian:trixie"
compiler_flags: "-march=rv64gc"
nodejs_arch: riscv64
nodejs_hostname: unofficial-builds.nodejs.org
nodejs_version: "20.19.5"
nodejs_version_major: 20
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: uraimo/run-on-arch-action@v3 - uses: uraimo/run-on-arch-action@v3
with: with:
arch: ${{ matrix.run_on_arch }} arch: none
distro: ${{ matrix.distro }} distro: none
base_image: ${{ matrix.base_image }}
env: |
CFLAGS: "${{ matrix.compiler_flags }}"
CXXFLAGS: "${{ matrix.compiler_flags }}"
run: | run: |
apt-get update apt-get update
apt-get install -y curl g++ git libatomic1 make python3 xz-utils apt-get install -y curl g++ git libatomic1 make python3 xz-utils

View File

@ -3,6 +3,8 @@ title: v0.34.5 - TBD
slug: changelog/v0.34.5 slug: changelog/v0.34.5
--- ---
* Add experimental support for prebuilt Linux RISC-V 64-bit binaries.
* Support building from source with npm v12+, deprecate `--build-from-source` flag. * Support building from source with npm v12+, deprecate `--build-from-source` flag.
[#4458](https://github.com/lovell/sharp/issues/4458) [#4458](https://github.com/lovell/sharp/issues/4458)

View File

@ -49,6 +49,7 @@ Ready-compiled sharp and libvips binaries are provided for use on the most commo
* macOS ARM64 * macOS ARM64
* Linux ARM (glibc >= 2.31) * Linux ARM (glibc >= 2.31)
* Linux ARM64 (glibc >= 2.26, musl >= 1.2.2) * Linux ARM64 (glibc >= 2.26, musl >= 1.2.2)
* Linux RISC-V 64-bit (glibc >= 2.41)
* Linux ppc64 (glibc >= 2.36) * Linux ppc64 (glibc >= 2.36)
* Linux s390x (glibc >= 2.36) * Linux s390x (glibc >= 2.36)
* Linux x64 (glibc >= 2.26, musl >= 1.2.2, CPU with SSE4.2) * Linux x64 (glibc >= 2.26, musl >= 1.2.2, CPU with SSE4.2)

View File

@ -16,7 +16,7 @@ const minimumLibvipsVersion = semverCoerce(minimumLibvipsVersionLabelled).versio
const prebuiltPlatforms = [ const prebuiltPlatforms = [
'darwin-arm64', 'darwin-x64', 'darwin-arm64', 'darwin-x64',
'linux-arm', 'linux-arm64', 'linux-ppc64', 'linux-s390x', 'linux-x64', 'linux-arm', 'linux-arm64', 'linux-ppc64', 'linux-riscv64', 'linux-s390x', 'linux-x64',
'linuxmusl-arm64', 'linuxmusl-x64', 'linuxmusl-arm64', 'linuxmusl-x64',
'win32-arm64', 'win32-ia32', 'win32-x64' 'win32-arm64', 'win32-ia32', 'win32-x64'
]; ];

View File

@ -0,0 +1,46 @@
{
"name": "@img/sharp-linux-riscv64",
"version": "0.34.4",
"description": "Prebuilt sharp for use with Linux (glibc) RISC-V 64-bit",
"author": "Lovell Fuller <npm@lovell.info>",
"homepage": "https://sharp.pixelplumbing.com",
"repository": {
"type": "git",
"url": "git+https://github.com/lovell/sharp.git",
"directory": "npm/linux-riscv64"
},
"license": "Apache-2.0",
"funding": {
"url": "https://opencollective.com/libvips"
},
"preferUnplugged": true,
"optionalDependencies": {
"@img/sharp-libvips-linux-riscv64": "1.2.3"
},
"files": [
"lib"
],
"publishConfig": {
"access": "public"
},
"type": "commonjs",
"exports": {
"./sharp.node": "./lib/sharp-linux-riscv64.node",
"./package": "./package.json"
},
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"config": {
"glibc": ">=2.41"
},
"os": [
"linux"
],
"libc": [
"glibc"
],
"cpu": [
"riscv64"
]
}

View File

@ -151,6 +151,7 @@
"@img/sharp-libvips-linux-arm": "1.2.3", "@img/sharp-libvips-linux-arm": "1.2.3",
"@img/sharp-libvips-linux-arm64": "1.2.3", "@img/sharp-libvips-linux-arm64": "1.2.3",
"@img/sharp-libvips-linux-ppc64": "1.2.3", "@img/sharp-libvips-linux-ppc64": "1.2.3",
"@img/sharp-libvips-linux-riscv64": "1.2.3",
"@img/sharp-libvips-linux-s390x": "1.2.3", "@img/sharp-libvips-linux-s390x": "1.2.3",
"@img/sharp-libvips-linux-x64": "1.2.3", "@img/sharp-libvips-linux-x64": "1.2.3",
"@img/sharp-libvips-linuxmusl-arm64": "1.2.3", "@img/sharp-libvips-linuxmusl-arm64": "1.2.3",
@ -158,6 +159,7 @@
"@img/sharp-linux-arm": "0.34.4", "@img/sharp-linux-arm": "0.34.4",
"@img/sharp-linux-arm64": "0.34.4", "@img/sharp-linux-arm64": "0.34.4",
"@img/sharp-linux-ppc64": "0.34.4", "@img/sharp-linux-ppc64": "0.34.4",
"@img/sharp-linux-riscv64": "0.34.4",
"@img/sharp-linux-s390x": "0.34.4", "@img/sharp-linux-s390x": "0.34.4",
"@img/sharp-linux-x64": "0.34.4", "@img/sharp-linux-x64": "0.34.4",
"@img/sharp-linuxmusl-arm64": "0.34.4", "@img/sharp-linuxmusl-arm64": "0.34.4",