diff --git a/package-rhel-riscv.sh b/package-rhel-riscv.sh
index d1137f76..9c4fa03f 100644
--- a/package-rhel-riscv.sh
+++ b/package-rhel-riscv.sh
@@ -12,13 +12,10 @@ MIN_KERNEL="5.10"
PKGROOT="v2rayN-publish"
PROJECT_HINT="v2rayN.Desktop/v2rayN.Desktop.csproj"
RPM_TOPDIR="${HOME}/rpmbuild"
-DOTNET_TFM="net10.0"
DOTNET_RISCV_VERSION="10.0.108"
DOTNET_RISCV_BASE="https://github.com/xujiegb/dotnet-riscv/releases/download"
DOTNET_RISCV_FILE="dotnet-sdk-${DOTNET_RISCV_VERSION}-linux-riscv64.tar.gz"
DOTNET_SDK_URL="${DOTNET_RISCV_BASE}/${DOTNET_RISCV_VERSION}/${DOTNET_RISCV_FILE}"
-SKIA_VER="${SKIA_VER:-3.119.2}"
-HARFBUZZ_VER="${HARFBUZZ_VER:-8.3.1.3}"
OS_ID=""
OS_NAME=""
@@ -27,7 +24,6 @@ HOST_ARCH=""
SCRIPT_DIR=""
PROJECT=""
VERSION=""
-BUILT_ALL=0
declare -a BUILT_RPMS=()
@@ -258,70 +254,6 @@ resolve_version() {
echo "[*] GUI version resolved as: ${VERSION}"
}
-apply_riscv_patch() {
- local f=""
-
- find . -type f \( -name "*.csproj" -o -name "*.props" -o -name "*.targets" \) \
- -exec sed -Ei 's#[^<]+#'"$DOTNET_TFM"'#g' {} +
-
- while IFS= read -r -d '' f; do
- sed -i \
- -e "s###g" \
- -e "s###g" \
- -e "s###g" \
- -e "s###g" \
- "$f"
-
- grep -q 'PackageVersion Include="SkiaSharp"' "$f" || \
- sed -i "/<\/ItemGroup>/i\ " "$f"
-
- grep -q 'PackageVersion Include="SkiaSharp.NativeAssets.Linux"' "$f" || \
- sed -i "/<\/ItemGroup>/i\ " "$f"
-
- grep -q 'PackageVersion Include="HarfBuzzSharp"' "$f" || \
- sed -i "/<\/ItemGroup>/i\ " "$f"
-
- grep -q 'PackageVersion Include="HarfBuzzSharp.NativeAssets.Linux"' "$f" || \
- sed -i "/<\/ItemGroup>/i\ " "$f"
- done < <(find . -type f -name 'Directory.Packages.props' -print0)
-
- f="$(find "$DOTNET_ROOT/sdk/$(dotnet --version)" -type f -name 'Microsoft.NETCoreSdk.BundledVersions.props' | head -n1 || true)"
- if [[ -f "$f" ]] && ! grep -q 'linux-riscv64' "$f"; then
- sed -i \
- -e 's/linux-arm64/&;linux-riscv64/g' \
- -e 's/linux-musl-arm64/&;linux-musl-riscv64/g' \
- "$f"
- fi
-}
-
-copy_skiasharp_native_riscv64() {
- local outdir="$1"
- local skia_so=""
- local harfbuzz_so=""
-
- mkdir -p "$outdir"
-
- skia_so="$(find "$HOME/.nuget/packages" -path "*/skiasharp.nativeassets.linux/${SKIA_VER}/runtimes/linux-riscv64/native/libSkiaSharp.so" | head -n1 || true)"
- [[ -n "$skia_so" ]] || skia_so="$(find "$HOME/.nuget/packages" -path "*/runtimes/linux-riscv64/native/libSkiaSharp.so" | head -n1 || true)"
-
- harfbuzz_so="$(find "$HOME/.nuget/packages" -path "*/harfbuzzsharp.nativeassets.linux/${HARFBUZZ_VER}/runtimes/linux-riscv64/native/libHarfBuzzSharp.so" | head -n1 || true)"
- [[ -n "$harfbuzz_so" ]] || harfbuzz_so="$(find "$HOME/.nuget/packages" -path "*/runtimes/linux-riscv64/native/libHarfBuzzSharp.so" | head -n1 || true)"
-
- if [[ -n "$skia_so" && -f "$skia_so" ]]; then
- echo "[+] Copy libSkiaSharp.so from NuGet cache"
- install -m 755 "$skia_so" "$outdir/libSkiaSharp.so"
- else
- echo "[WARN] libSkiaSharp.so for linux-riscv64 not found in NuGet cache"
- fi
-
- if [[ -n "$harfbuzz_so" && -f "$harfbuzz_so" ]]; then
- echo "[+] Copy libHarfBuzzSharp.so from NuGet cache"
- install -m 755 "$harfbuzz_so" "$outdir/libHarfBuzzSharp.so"
- else
- echo "[WARN] libHarfBuzzSharp.so for linux-riscv64 not found in NuGet cache"
- fi
-}
-
xray_url_for_rid() {
local rid="$1"
local ver="$2"
@@ -551,10 +483,10 @@ describe_target() {
publish_binary() {
local rid="$1"
- dotnet clean "$PROJECT" -c Release -p:TargetFramework="$DOTNET_TFM"
- rm -rf "$(dirname "$PROJECT")/bin/Release/${DOTNET_TFM}" || true
- dotnet restore "$PROJECT" -r "$rid" -p:TargetFramework="$DOTNET_TFM"
- dotnet publish "$PROJECT" -c Release -r "$rid" -p:TargetFramework="$DOTNET_TFM" -p:PublishSingleFile=false -p:SelfContained=true
+ dotnet clean "$PROJECT" -c Release
+ rm -rf "$(dirname "$PROJECT")/bin/Release/net10.0" || true
+ dotnet restore "$PROJECT"
+ dotnet publish "$PROJECT" -c Release -r "$rid" -p:PublishSingleFile=false -p:SelfContained=true
}
write_spec_file() {
@@ -604,15 +536,12 @@ cp -a * %{buildroot}/opt/v2rayN/
find %{buildroot}/opt/v2rayN -type d -exec chmod 0755 {} +
find %{buildroot}/opt/v2rayN -type f -exec chmod 0644 {} +
[ -f %{buildroot}/opt/v2rayN/v2rayN ] && chmod 0755 %{buildroot}/opt/v2rayN/v2rayN || :
-[ -f %{buildroot}/opt/v2rayN/libSkiaSharp.so ] && chmod 0755 %{buildroot}/opt/v2rayN/libSkiaSharp.so || :
-[ -f %{buildroot}/opt/v2rayN/libHarfBuzzSharp.so ] && chmod 0755 %{buildroot}/opt/v2rayN/libHarfBuzzSharp.so || :
install -dm0755 %{buildroot}%{_bindir}
install -m0755 /dev/stdin %{buildroot}%{_bindir}/v2rayn << 'EOF'
#!/usr/bin/bash
set -euo pipefail
DIR="/opt/v2rayN"
-export LD_LIBRARY_PATH="$DIR:${LD_LIBRARY_PATH:-}"
if [[ -x "$DIR/v2rayN" ]]; then exec "$DIR/v2rayN" "$@"; fi
@@ -673,7 +602,7 @@ package_binary() {
local icon_candidate=""
local f=""
- pubdir="$(dirname "$PROJECT")/bin/Release/${DOTNET_TFM}/${rid}/publish"
+ pubdir="$(dirname "$PROJECT")/bin/Release/net10.0/${rid}/publish"
[[ -d "$pubdir" ]] || { echo "Publish directory not found: $pubdir"; return 1; }
workdir="$(mktemp -d)"
@@ -682,8 +611,6 @@ package_binary() {
mkdir -p "$workdir/$PKGROOT"
cp -a "$pubdir/." "$workdir/$PKGROOT/"
- copy_skiasharp_native_riscv64 "$workdir/$PKGROOT" || echo "[!] SkiaSharp native copy failed (skipped)"
-
project_dir="$(cd "$(dirname "$PROJECT")" && pwd)"
icon_candidate="$project_dir/v2rayN.png"
[[ -f "$icon_candidate" ]] || { echo "Required icon not found: $icon_candidate"; return 1; }
@@ -755,7 +682,6 @@ main() {
install_dependencies
prepare_workspace
resolve_version
- apply_riscv_patch
mapfile -t targets < <(select_targets)