diff --git a/package-debian-riscv.sh b/package-debian-riscv.sh index bcdde11f..e9fcb628 100644 --- a/package-debian-riscv.sh +++ b/package-debian-riscv.sh @@ -12,13 +12,10 @@ MIN_KERNEL="5.10" PKGROOT="v2rayN-publish" PROJECT_HINT="v2rayN.Desktop/v2rayN.Desktop.csproj" OUTPUT_DIR="${HOME}/debbuild" -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_DEBS=() @@ -261,70 +257,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" @@ -554,10 +486,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_launcher_file() { @@ -567,7 +499,6 @@ write_launcher_file() { #!/usr/bin/env bash set -euo pipefail DIR="/opt/v2rayN" -export LD_LIBRARY_PATH="$DIR:${LD_LIBRARY_PATH:-}" cd "$DIR" if [[ -x "$DIR/v2rayN" ]]; then @@ -643,7 +574,7 @@ package_binary() { local sys_usrlibdir="" local deb_out="" - 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)" @@ -655,8 +586,6 @@ package_binary() { mkdir -p "$stage/opt/v2rayN" "$stage/usr/bin" "$stage/usr/share/applications" "$stage/usr/share/icons/hicolor/256x256/apps" "$debian_dir" cp -a "$pubdir/." "$stage/opt/v2rayN/" - copy_skiasharp_native_riscv64 "$stage/opt/v2rayN" || echo "[!] SkiaSharp native copy failed (skipped)" - project_dir="$(cd "$(dirname "$PROJECT")" && pwd)" icon_candidate="$project_dir/v2rayN.png" [[ -f "$icon_candidate" ]] && cp "$icon_candidate" "$stage/usr/share/icons/hicolor/256x256/apps/v2rayn.png" || true @@ -732,9 +661,7 @@ EOF find "$stage/opt/v2rayN" -type d -exec chmod 0755 {} + find "$stage/opt/v2rayN" -type f -exec chmod 0644 {} + [[ -f "$stage/opt/v2rayN/v2rayN" ]] && chmod 0755 "$stage/opt/v2rayN/v2rayN" || true - [[ -f "$stage/opt/v2rayN/libSkiaSharp.so" ]] && chmod 0755 "$stage/opt/v2rayN/libSkiaSharp.so" || true - [[ -f "$stage/opt/v2rayN/libHarfBuzzSharp.so" ]] && chmod 0755 "$stage/opt/v2rayN/libHarfBuzzSharp.so" || true - + deb_out="$OUTPUT_DIR/v2rayn_${VERSION}_${deb_arch}.deb" dpkg-deb --root-owner-group --build "$stage" "$deb_out" @@ -787,7 +714,6 @@ main() { install_dependencies prepare_workspace resolve_version - apply_riscv_patch mapfile -t targets < <(select_targets)