From e26f01fc5d97a4f61a565d8ec3f81dad6af7d5dd Mon Sep 17 00:00:00 2001 From: JieXu Date: Tue, 19 Aug 2025 20:14:58 +0800 Subject: [PATCH 1/9] Update build-linux.yml --- .github/workflows/build-linux.yml | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index f793a1cb..09d97337 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -98,4 +98,29 @@ jobs: file: ${{ github.workspace }}/v2rayN*.zip tag: ${{ github.event.inputs.release_tag }} file_glob: true - prerelease: true \ No newline at end of file + prerelease: true + + # release RHEL package + - name: Package RPM (RHEL-family) + if: github.event.inputs.release_tag != '' + run: | + chmod 755 package-rhel.sh + # Build for both x86_64 and aarch64 in one go (explicit version passed; no --buildfrom) + ./package-rhel.sh "${{ github.event.inputs.release_tag }}" --arch all + + - name: Upload RPM artifacts + if: github.event.inputs.release_tag != '' + uses: actions/upload-artifact@v4.6.2 + with: + name: v2rayN-rpm + path: | + ${{ env.HOME }}/rpmbuild/RPMS/**/*.rpm + + - name: Upload RPMs to release + uses: svenstaro/upload-release-action@v2 + if: github.event.inputs.release_tag != '' + with: + file: ${{ env.HOME }}/rpmbuild/RPMS/**/*.rpm + tag: ${{ github.event.inputs.release_tag }} + file_glob: true + prerelease: true From 9dc5f31b68148dbda01dffe870729b92a4acf67a Mon Sep 17 00:00:00 2001 From: JieXu Date: Tue, 19 Aug 2025 20:36:43 +0800 Subject: [PATCH 2/9] Update build-linux.yml --- .github/workflows/build-linux.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index 09d97337..f43a0bb4 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -114,13 +114,16 @@ jobs: with: name: v2rayN-rpm path: | - ${{ env.HOME }}/rpmbuild/RPMS/**/*.rpm + /home/runner/rpmbuild/RPMS/x86_64/*.rpm + /home/runner/rpmbuild/RPMS/aarch64/*.rpm - name: Upload RPMs to release uses: svenstaro/upload-release-action@v2 if: github.event.inputs.release_tag != '' with: - file: ${{ env.HOME }}/rpmbuild/RPMS/**/*.rpm + file: | + /home/runner/rpmbuild/RPMS/x86_64/*.rpm + /home/runner/rpmbuild/RPMS/aarch64/*.rpm tag: ${{ github.event.inputs.release_tag }} file_glob: true prerelease: true From 395a3d1f7a00cbb7fab34743d21902f752a3e44a Mon Sep 17 00:00:00 2001 From: JieXu Date: Tue, 19 Aug 2025 20:56:27 +0800 Subject: [PATCH 3/9] Update build-linux.yml --- .github/workflows/build-linux.yml | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index f43a0bb4..90a706cc 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -100,7 +100,7 @@ jobs: file_glob: true prerelease: true - # release RHEL package + # release RHEL package - name: Package RPM (RHEL-family) if: github.event.inputs.release_tag != '' run: | @@ -108,22 +108,25 @@ jobs: # Build for both x86_64 and aarch64 in one go (explicit version passed; no --buildfrom) ./package-rhel.sh "${{ github.event.inputs.release_tag }}" --arch all + - name: Collect RPMs into workspace + if: github.event.inputs.release_tag != '' + run: | + mkdir -p "${{ github.workspace }}/dist/rpm" + rsync -av "$HOME/rpmbuild/RPMS/" "${{ github.workspace }}/dist/rpm/" + - name: Upload RPM artifacts if: github.event.inputs.release_tag != '' uses: actions/upload-artifact@v4.6.2 with: name: v2rayN-rpm path: | - /home/runner/rpmbuild/RPMS/x86_64/*.rpm - /home/runner/rpmbuild/RPMS/aarch64/*.rpm + ${{ github.workspace }}/dist/rpm/**/*.rpm - name: Upload RPMs to release uses: svenstaro/upload-release-action@v2 if: github.event.inputs.release_tag != '' with: - file: | - /home/runner/rpmbuild/RPMS/x86_64/*.rpm - /home/runner/rpmbuild/RPMS/aarch64/*.rpm + file: ${{ github.workspace }}/dist/rpm/**/*.rpm tag: ${{ github.event.inputs.release_tag }} file_glob: true prerelease: true From f8f5a9440e0a11f8473170aac8feb15932838556 Mon Sep 17 00:00:00 2001 From: JieXu Date: Tue, 19 Aug 2025 21:20:52 +0800 Subject: [PATCH 4/9] Update build-linux.yml --- .github/workflows/build-linux.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index 90a706cc..0fb8574f 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -100,7 +100,7 @@ jobs: file_glob: true prerelease: true - # release RHEL package + # release RHEL package - name: Package RPM (RHEL-family) if: github.event.inputs.release_tag != '' run: | @@ -113,6 +113,9 @@ jobs: run: | mkdir -p "${{ github.workspace }}/dist/rpm" rsync -av "$HOME/rpmbuild/RPMS/" "${{ github.workspace }}/dist/rpm/" + # Rename to requested filenames + find "${{ github.workspace }}/dist/rpm" -name "v2rayN-*-1.x86_64.rpm" -exec mv {} "${{ github.workspace }}/dist/rpm/v2rayN-linux-rhel-x64.rpm" \; || true + find "${{ github.workspace }}/dist/rpm" -name "v2rayN-*-1.aarch64.rpm" -exec mv {} "${{ github.workspace }}/dist/rpm/v2rayN-linux-rhel-arm64.rpm" \; || true - name: Upload RPM artifacts if: github.event.inputs.release_tag != '' From 24de5f8381abb60d2f4e686ef0ddc6f2e09e48a2 Mon Sep 17 00:00:00 2001 From: JieXu Date: Wed, 20 Aug 2025 07:48:18 +0800 Subject: [PATCH 5/9] Update package-rhel.sh --- package-rhel.sh | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/package-rhel.sh b/package-rhel.sh index e852d174..b3d987bc 100644 --- a/package-rhel.sh +++ b/package-rhel.sh @@ -332,6 +332,7 @@ download_xray() { # Download Xray core and install to outdir/xray local outdir="$1" ver="${XRAY_VER:-}" url tmp zipname="xray.zip" mkdir -p "$outdir" + if [[ -n "${XRAY_VER:-}" ]]; then ver="${XRAY_VER}"; fi if [[ -z "$ver" ]]; then ver="$(curl -fsSL https://api.github.com/repos/XTLS/Xray-core/releases/latest \ | grep -Eo '"tag_name":\s*"v[^"]+"' | sed -E 's/.*"v([^"]+)".*/\1/' | head -n1)" || true @@ -353,6 +354,7 @@ download_singbox() { # Download sing-box core and install to outdir/sing-box local outdir="$1" ver="${SING_VER:-}" url tmp tarname="singbox.tar.gz" bin mkdir -p "$outdir" + if [[ -n "${SING_VER:-}" ]]; then ver="${SING_VER}"; fi if [[ -z "$ver" ]]; then ver="$(curl -fsSL https://api.github.com/repos/SagerNet/sing-box/releases/latest \ | grep -Eo '"tag_name":\s*"v[^"]+"' | sed -E 's/.*"v([^"]+)".*/\1/' | head -n1)" || true @@ -372,6 +374,22 @@ download_singbox() { install -Dm755 "$bin" "$outdir/sing-box" } +# ---- NEW: download_mihomo (REQUIRED in --netcore mode) ---- +download_mihomo() { + # Download mihomo into outroot/bin/mihomo/mihomo + local outroot="$1" + local url="" + if [[ "$RID_DIR" == "linux-arm64" ]]; then + url="https://raw.githubusercontent.com/2dust/v2rayN-core-bin/refs/heads/master/v2rayN-linux-arm64/bin/mihomo/mihomo" + else + url="https://raw.githubusercontent.com/2dust/v2rayN-core-bin/refs/heads/master/v2rayN-linux-64/bin/mihomo/mihomo" + fi + echo "[+] Download mihomo: $url" + mkdir -p "$outroot/bin/mihomo" + curl -fL "$url" -o "$outroot/bin/mihomo/mihomo" + chmod +x "$outroot/bin/mihomo/mihomo" || true +} + # Move geo files to a unified path: outroot/bin/xray/ unify_geo_layout() { local outroot="$1" @@ -451,7 +469,8 @@ download_v2rayn_bundle() { fi rm -f "$outroot/v2rayn.zip" 2>/dev/null || true - find "$outroot" -type d -name "mihomo" -prune -exec rm -rf {} + 2>/dev/null || true + # keep mihomo + # find "$outroot" -type d -name "mihomo" -prune -exec rm -rf {} + 2>/dev/null || true local nested_dir nested_dir="$(find "$outroot" -maxdepth 1 -type d -name 'v2rayN-linux-*' | head -n1 || true)" @@ -561,6 +580,8 @@ build_for_arch() { download_singbox "$WORKDIR/$PKGROOT/bin/sing_box" || echo "[!] sing-box download failed (skipped)" fi download_geo_assets "$WORKDIR/$PKGROOT" || echo "[!] Geo rules download failed (skipped)" + # ---- REQUIRED: always fetch mihomo in netcore mode, per-arch ---- + download_mihomo "$WORKDIR/$PKGROOT" || echo "[!] mihomo download failed (skipped)" fi # Tarball From 2c0699570fc16f905697ee8871a03e98973aba19 Mon Sep 17 00:00:00 2001 From: JieXu Date: Thu, 21 Aug 2025 07:16:49 +0800 Subject: [PATCH 6/9] Update package-rhel.sh. Change describe information --- package-rhel.sh | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/package-rhel.sh b/package-rhel.sh index b3d987bc..9adfa6e8 100644 --- a/package-rhel.sh +++ b/package-rhel.sh @@ -612,10 +612,11 @@ Requires: libX11, libXrandr, libXcursor, libXi, libXext, libxcb, libXrende Requires: fontconfig, freetype, cairo, pango, mesa-libEGL, mesa-libGL %description -v2rayN GUI client built with Avalonia. -Installs self-contained publish under /opt/v2rayN and a launcher 'v2rayn'. -Cores (if bundled): /opt/v2rayN/bin/xray, /opt/v2rayN/bin/sing_box. -Geo files for Xray are placed at /opt/v2rayN/bin/xray; launcher will symlink them into user's XDG data dir on first run. +v2rayN Linux for Red Hat Enterprise Linux +Support vless / vmess / Trojan / http / socks / Anytls / Hysteria2 / Shadowsocks / tuic / WireGuard +Support Red Hat Enterprise Linux / Fedora Linux / Rocky Linux / AlmaLinux / CentOS +For more information, Please visit our website +https://github.com/2dust/v2rayN %prep %setup -q -n __PKGROOT__ @@ -666,7 +667,7 @@ cat > %{buildroot}%{_datadir}/applications/v2rayn.desktop << 'EOF' [Desktop Entry] Type=Application Name=v2rayN -Comment=GUI client for Xray / sing-box +Comment=v2rayN for Red Hat Enterprise Linux Exec=v2rayn Icon=v2rayn Terminal=false From d46bbcb2282de592b0e1d94d073ecc2d564c7465 Mon Sep 17 00:00:00 2001 From: JieXu Date: Thu, 21 Aug 2025 07:31:26 +0800 Subject: [PATCH 7/9] Update package-rhel.sh --- package-rhel.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/package-rhel.sh b/package-rhel.sh index 9adfa6e8..0eeee8c7 100644 --- a/package-rhel.sh +++ b/package-rhel.sh @@ -604,6 +604,7 @@ Release: 1%{?dist} Summary: v2rayN (Avalonia) GUI client for Linux (x86_64/aarch64) License: GPL-3.0-only URL: https://github.com/2dust/v2rayN +BugURL: https://github.com/2dust/v2rayN/issues ExclusiveArch: aarch64 x86_64 Source0: __PKGROOT__.tar.gz From c93b6cbce1a0e0879a63d0c8e940d6720059d005 Mon Sep 17 00:00:00 2001 From: JieXu Date: Thu, 21 Aug 2025 10:04:37 +0800 Subject: [PATCH 8/9] Update package-rhel.sh --- package-rhel.sh | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/package-rhel.sh b/package-rhel.sh index 0eeee8c7..a0345c00 100644 --- a/package-rhel.sh +++ b/package-rhel.sh @@ -681,6 +681,40 @@ if [ -f "%{_builddir}/__PKGROOT__/v2rayn.png" ]; then install -m0644 %{_builddir}/__PKGROOT__/v2rayn.png %{buildroot}%{_datadir}/icons/hicolor/256x256/apps/v2rayn.png fi +# -------- AppStream (GNOME Software) metadata -------- +install -dm0755 %{buildroot}%{_datadir}/metainfo +cat > %{buildroot}%{_datadir}/metainfo/v2rayn.metainfo.xml << 'EOF' + + + v2rayn.desktop + v2rayN + v2rayN (Avalonia) GUI client + +
    +
  • v2rayN Linux for Red Hat Enterprise Linux
  • +
  • Support vless / vmess / Trojan / http / socks / Anytls / Hysteria2 / Shadowsocks / tuic / WireGuard
  • +
  • Support Red Hat Enterprise Linux / Fedora Linux / Rocky Linux / AlmaLinux / CentOS
  • +
  • For more information, Please visit our website https://github.com/2dust/v2rayN
  • +
+
+ v2rayn.desktop + https://github.com/2dust/v2rayN + https://github.com/2dust/v2rayN/issues + CC0-1.0 + GPL-3.0-only + + v2rayn + + + + + + Network + +
+EOF +# ----------------------------------------------------- + %post /usr/bin/update-desktop-database %{_datadir}/applications >/dev/null 2>&1 || true /usr/bin/gtk-update-icon-cache -f %{_datadir}/icons/hicolor >/dev/null 2>&1 || true @@ -694,6 +728,7 @@ fi /opt/v2rayN %{_datadir}/applications/v2rayn.desktop %{_datadir}/icons/hicolor/256x256/apps/v2rayn.png +%{_datadir}/metainfo/v2rayn.metainfo.xml SPEC # Autostart injection (inside %install) and %files entry From d7865387d0fa52d4bf0007466d89211433538f73 Mon Sep 17 00:00:00 2001 From: JieXu Date: Thu, 21 Aug 2025 10:09:08 +0800 Subject: [PATCH 9/9] Update package-rhel.sh --- package-rhel.sh | 35 ----------------------------------- 1 file changed, 35 deletions(-) diff --git a/package-rhel.sh b/package-rhel.sh index a0345c00..0eeee8c7 100644 --- a/package-rhel.sh +++ b/package-rhel.sh @@ -681,40 +681,6 @@ if [ -f "%{_builddir}/__PKGROOT__/v2rayn.png" ]; then install -m0644 %{_builddir}/__PKGROOT__/v2rayn.png %{buildroot}%{_datadir}/icons/hicolor/256x256/apps/v2rayn.png fi -# -------- AppStream (GNOME Software) metadata -------- -install -dm0755 %{buildroot}%{_datadir}/metainfo -cat > %{buildroot}%{_datadir}/metainfo/v2rayn.metainfo.xml << 'EOF' - - - v2rayn.desktop - v2rayN - v2rayN (Avalonia) GUI client - -
    -
  • v2rayN Linux for Red Hat Enterprise Linux
  • -
  • Support vless / vmess / Trojan / http / socks / Anytls / Hysteria2 / Shadowsocks / tuic / WireGuard
  • -
  • Support Red Hat Enterprise Linux / Fedora Linux / Rocky Linux / AlmaLinux / CentOS
  • -
  • For more information, Please visit our website https://github.com/2dust/v2rayN
  • -
-
- v2rayn.desktop - https://github.com/2dust/v2rayN - https://github.com/2dust/v2rayN/issues - CC0-1.0 - GPL-3.0-only - - v2rayn - - - - - - Network - -
-EOF -# ----------------------------------------------------- - %post /usr/bin/update-desktop-database %{_datadir}/applications >/dev/null 2>&1 || true /usr/bin/gtk-update-icon-cache -f %{_datadir}/icons/hicolor >/dev/null 2>&1 || true @@ -728,7 +694,6 @@ EOF /opt/v2rayN %{_datadir}/applications/v2rayn.desktop %{_datadir}/icons/hicolor/256x256/apps/v2rayn.png -%{_datadir}/metainfo/v2rayn.metainfo.xml SPEC # Autostart injection (inside %install) and %files entry