mirror of
https://github.com/2dust/v2rayN.git
synced 2026-08-02 21:32:03 +03:00
Remove patch for riscv (#9310)
* Delete .github/workflows/update-riscv-depand.yml * Update package-rhel-riscv.sh * Update package-debian-riscv.sh * Create package-debian-loong.sh * Update build-linux.yml * Update build-linux.yml * Update package-debian-loong.sh * Update build-linux.yml * Update Directory.Packages.props
This commit is contained in:
175
.github/workflows/build-linux.yml
vendored
175
.github/workflows/build-linux.yml
vendored
@@ -325,3 +325,178 @@ jobs:
|
||||
--data-binary @"$f" \
|
||||
"${upload_url}?name=${f##*/}"
|
||||
done
|
||||
|
||||
deb-loong64:
|
||||
name: build and release deb loong64
|
||||
if: |
|
||||
(github.event_name == 'workflow_dispatch' && inputs.release_tag != '') ||
|
||||
(github.event_name == 'push' && startsWith(github.ref, 'refs/tags/'))
|
||||
runs-on: ubuntu-24.04
|
||||
|
||||
env:
|
||||
RELEASE_TAG: ${{ case(inputs.release_tag != '', inputs.release_tag, github.ref_name) }}
|
||||
QCOW2_URL: https://github.com/xujiegb/debian-loong64-qcow2/releases/download/13.4/debian13-loong64.qcow2
|
||||
EFI_CODE_URL: https://github.com/xujiegb/debian-loong64-qcow2/releases/download/13.4/edk2-loongarch64-code.fd
|
||||
EFI_VARS_URL: https://github.com/xujiegb/debian-loong64-qcow2/releases/download/13.4/edk2-loongarch64-vars.fd
|
||||
QCOW2_IMAGE: debian13-loong64.qcow2
|
||||
EFI_CODE: edk2-loongarch64-code.fd
|
||||
EFI_VARS: edk2-loongarch64-vars.fd
|
||||
QEMU_VERSION: 10.2.2
|
||||
|
||||
steps:
|
||||
- name: Prepare host tools
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y rsync qemu-utils expect wget curl ca-certificates libfdt1 libglib2.0-0 libpixman-1-0 libslirp0
|
||||
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
submodules: recursive
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download QEMU prebuild
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
wget -O qemu-linux-x64.tar.gz \
|
||||
"https://github.com/xujiegb/qemu-linux-prebuild/releases/download/${QEMU_VERSION}/qemu-linux-x64.tar.gz"
|
||||
|
||||
tar -xzf qemu-linux-x64.tar.gz
|
||||
|
||||
mkdir -p "$HOME/qemu-install"
|
||||
|
||||
rsync -a qemu-linux-x64/ "$HOME/qemu-install/"
|
||||
|
||||
"$HOME/qemu-install/bin/qemu-system-loongarch64" --version
|
||||
|
||||
- name: Download loong64 qcow2 and EFI firmware
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
wget -O "$QCOW2_IMAGE" "$QCOW2_URL"
|
||||
wget -O "$EFI_CODE" "$EFI_CODE_URL"
|
||||
wget -O "$EFI_VARS" "$EFI_VARS_URL"
|
||||
|
||||
qemu-img info "$QCOW2_IMAGE"
|
||||
|
||||
- name: Build loong64 DEB in VM through serial console
|
||||
shell: bash
|
||||
timeout-minutes: 180
|
||||
env:
|
||||
RELEASE_TAG: ${{ env.RELEASE_TAG }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
mkdir -p "$GITHUB_WORKSPACE/dist/deb-loong64"
|
||||
|
||||
expect <<'EOF'
|
||||
log_user 1
|
||||
set timeout -1
|
||||
|
||||
set release_tag $env(RELEASE_TAG)
|
||||
set qemu_bin "$env(HOME)/qemu-install/bin/qemu-system-loongarch64"
|
||||
set qemu_rom_dir "$env(HOME)/qemu-install/share/qemu"
|
||||
|
||||
set workspace $env(GITHUB_WORKSPACE)
|
||||
set repo $env(GITHUB_REPOSITORY)
|
||||
set sha $env(GITHUB_SHA)
|
||||
|
||||
set qcow2 $env(QCOW2_IMAGE)
|
||||
set efi_code $env(EFI_CODE)
|
||||
set efi_vars $env(EFI_VARS)
|
||||
|
||||
proc wait_prompt {} {
|
||||
expect {
|
||||
-re "__CI_PROMPT__# " {}
|
||||
timeout { exit 1 }
|
||||
eof { exit 1 }
|
||||
}
|
||||
}
|
||||
|
||||
proc run_cmd {cmd} {
|
||||
send -- "$cmd\r"
|
||||
wait_prompt
|
||||
}
|
||||
|
||||
spawn $qemu_bin \
|
||||
-L $qemu_rom_dir \
|
||||
-machine virt \
|
||||
-accel tcg,thread=multi,tb-size=2048 \
|
||||
-cpu la464 \
|
||||
-m 9216 \
|
||||
-smp 4 \
|
||||
-drive if=pflash,format=raw,unit=0,file=$efi_code,readonly=on \
|
||||
-drive if=pflash,format=raw,unit=1,file=$efi_vars \
|
||||
-device virtio-blk-pci,drive=hd0,bootindex=1 \
|
||||
-drive if=none,media=disk,id=hd0,file=$qcow2,format=qcow2 \
|
||||
-netdev user,id=net0 \
|
||||
-device virtio-net-pci,netdev=net0 \
|
||||
-virtfs local,path=$workspace,mount_tag=workspace,security_model=none,id=workspace \
|
||||
-display none \
|
||||
-serial stdio \
|
||||
-monitor none
|
||||
|
||||
expect -re "login:|debian login:"
|
||||
send -- "root\r"
|
||||
|
||||
expect -re "Password:|密码:|密码:"
|
||||
send -- "password\r"
|
||||
|
||||
expect {
|
||||
-re "# " {}
|
||||
timeout { exit 1 }
|
||||
eof { exit 1 }
|
||||
}
|
||||
|
||||
send -- "export TERM=dumb; export PS1='__CI_PROMPT__# '\r"
|
||||
wait_prompt
|
||||
|
||||
run_cmd "mkdir -p /workspace"
|
||||
run_cmd "mount -t 9p -o trans=virtio,version=9p2000.L workspace /workspace || mount -t 9p -o trans=virtio workspace /workspace"
|
||||
run_cmd "IFACE=\$(ip -o link show | awk -F': ' '\$2 != \"lo\" {print \$2; exit}') ; ip link set \$IFACE up || true"
|
||||
run_cmd "dhclient \$IFACE || true"
|
||||
run_cmd "printf 'nameserver 10.0.2.3\nnameserver 1.1.1.1\n' >/etc/resolv.conf"
|
||||
run_cmd "apt-get update || apt-get update || apt-get update"
|
||||
run_cmd "DEBIAN_FRONTEND=noninteractive apt-get install -y sudo git rsync findutils tar gzip unzip which curl jq wget file ca-certificates desktop-file-utils xdg-utils fakeroot dpkg-dev gcc make libc6-dev libgcc-s1 libstdc++6 zlib1g libatomic1"
|
||||
run_cmd "rm -rf /root/v2rayN-src"
|
||||
run_cmd "git clone --recursive https://github.com/$repo.git /root/v2rayN-src"
|
||||
run_cmd "cd /root/v2rayN-src && git fetch --depth=1 origin $sha && git checkout FETCH_HEAD && git submodule update --init --recursive"
|
||||
run_cmd "cd /root/v2rayN-src && chmod 755 package-debian-loong.sh"
|
||||
|
||||
send -- "cd /root/v2rayN-src; cat >/tmp/run-loong-build.sh <<'SCRIPT'\nset +e\nset -o pipefail\nbash -x ./package-debian-loong.sh \"\$RELEASE_TAG\" 2>&1 | tee /tmp/build.log\nrc=\$?\nmkdir -p /workspace/dist/deb-loong64\ncp -av /root/debbuild/*.deb /workspace/dist/deb-loong64/ 2>/dev/null || true\necho __BUILD_DONE__\$rc\nSCRIPT\nRELEASE_TAG=\"$release_tag\" bash /tmp/run-loong-build.sh\r"
|
||||
|
||||
expect {
|
||||
-re "__BUILD_DONE__0" {
|
||||
send -- "poweroff\r"
|
||||
}
|
||||
default {
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
- name: Collect DEBs
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
mkdir -p "$GITHUB_WORKSPACE/dist/deb-loong64"
|
||||
|
||||
find "$GITHUB_WORKSPACE/dist/deb-loong64" -name "*.deb" \
|
||||
-exec mv {} "$GITHUB_WORKSPACE/dist/deb-loong64/v2rayN-linux-loong64.deb" \; || true
|
||||
|
||||
echo "==== Dist tree ===="
|
||||
ls -R "$GITHUB_WORKSPACE/dist/deb-loong64"
|
||||
|
||||
- name: Upload DEBs to release
|
||||
uses: svenstaro/upload-release-action@v2
|
||||
with:
|
||||
file: dist/deb-loong64/**/*.deb
|
||||
tag: ${{ env.RELEASE_TAG }}
|
||||
file_glob: true
|
||||
prerelease: true
|
||||
|
||||
256
.github/workflows/update-riscv-depand.yml
vendored
256
.github/workflows/update-riscv-depand.yml
vendored
@@ -1,256 +0,0 @@
|
||||
name: update riscv dependent versions
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
concurrency:
|
||||
group: update-riscv-dependent
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
update:
|
||||
runs-on: ubuntu-24.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- uses: actions/setup-dotnet@v5
|
||||
with:
|
||||
dotnet-version: 10.0.1xx
|
||||
|
||||
- run: sudo apt-get update && sudo apt-get install -y jq
|
||||
|
||||
- name: resolve
|
||||
id: resolve
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
TARGET_FILES=(
|
||||
package-rhel-riscv.sh
|
||||
package-debian-riscv.sh
|
||||
)
|
||||
|
||||
echo "==> restore projects"
|
||||
find . -name '*.csproj' | while read -r p; do
|
||||
if grep -q '<TargetFramework>.*-windows' "$p"; then
|
||||
echo "[skip] $p"
|
||||
else
|
||||
echo "[restore] $p"
|
||||
dotnet restore "$p" -p:EnableWindowsTargeting=true || true
|
||||
fi
|
||||
done
|
||||
|
||||
echo "==> collect assets"
|
||||
mapfile -t ASSETS < <(find . -path '*/obj/project.assets.json')
|
||||
printf ' %s\n' "${ASSETS[@]}"
|
||||
|
||||
ALL_LIBS=()
|
||||
for f in "${ASSETS[@]}"; do
|
||||
mapfile -t libs < <(jq -r '.libraries | keys[]' "$f")
|
||||
ALL_LIBS+=("${libs[@]}")
|
||||
done
|
||||
mapfile -t LIBS < <(printf '%s\n' "${ALL_LIBS[@]}" | sort -u)
|
||||
|
||||
extract() {
|
||||
local name="$1"
|
||||
for i in "${LIBS[@]}"; do
|
||||
[[ "$i" == "$name/"* ]] && echo "${i#*/}"
|
||||
done | sort -u
|
||||
}
|
||||
|
||||
norm_version() { echo "${1#v}"; }
|
||||
is_preview() { [[ "$(norm_version "$1")" == *-* ]]; }
|
||||
base_version() { local v; v="$(norm_version "$1")"; echo "${v%%-*}"; }
|
||||
|
||||
key() {
|
||||
local v core pre a b c p1 p2 p3
|
||||
v="$(norm_version "$1")"
|
||||
core="${v%%-*}"
|
||||
[[ "$v" == *-* ]] && pre="${v#*-}" || pre=""
|
||||
|
||||
IFS='.' read -r a b c <<< "$core"
|
||||
a=${a//[^0-9]/}; a=${a:-0}
|
||||
b=${b//[^0-9]/}; b=${b:-0}
|
||||
c=${c//[^0-9]/}; c=${c:-0}
|
||||
|
||||
if [[ -z "$pre" ]]; then
|
||||
printf "%05d.%05d.%05d.1\n" "$a" "$b" "$c"
|
||||
else
|
||||
pre="${pre#preview.}"
|
||||
IFS='.' read -ra p <<< "$pre"
|
||||
p1=${p[0]:-0}; p1=${p1//[^0-9]/}; p1=${p1:-0}
|
||||
p2=${p[1]:-0}; p2=${p2//[^0-9]/}; p2=${p2:-0}
|
||||
p3=${p[2]:-0}; p3=${p3//[^0-9]/}; p3=${p3:-0}
|
||||
printf "%05d.%05d.%05d.0.%05d.%05d.%05d\n" \
|
||||
"$a" "$b" "$c" "$p1" "$p2" "$p3"
|
||||
fi
|
||||
}
|
||||
|
||||
latest() {
|
||||
local best="" best_key="" cur cur_key
|
||||
for cur in "$@"; do
|
||||
[[ -n "$cur" ]] || continue
|
||||
cur_key="$(key "$cur")"
|
||||
echo " candidate: $cur -> $cur_key" >&2
|
||||
if [[ -z "$best_key" || "$cur_key" > "$best_key" ]]; then
|
||||
best="$cur"
|
||||
best_key="$cur_key"
|
||||
fi
|
||||
done
|
||||
echo "$best"
|
||||
}
|
||||
|
||||
log_mixed_versions() {
|
||||
local name="$1"; shift
|
||||
local versions=("$@") bases=() v b
|
||||
mapfile -t bases < <(
|
||||
for v in "${versions[@]}"; do
|
||||
[[ -n "$v" ]] && base_version "$v"
|
||||
done | sort -u
|
||||
)
|
||||
|
||||
for b in "${bases[@]}"; do
|
||||
local has_stable=0 has_preview=0 matched=()
|
||||
for v in "${versions[@]}"; do
|
||||
[[ -n "$v" ]] || continue
|
||||
[[ "$(base_version "$v")" == "$b" ]] || continue
|
||||
matched+=("$v")
|
||||
if is_preview "$v"; then
|
||||
has_preview=1
|
||||
else
|
||||
has_stable=1
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ "$has_stable" -eq 1 && "$has_preview" -eq 1 ]]; then
|
||||
echo "[warn] $name: stable and preview both exist for base $b, prefer stable for this base" >&2
|
||||
printf ' %s\n' "${matched[@]}" >&2
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
filter_mixed_versions() {
|
||||
local versions=("$@") stable_bases=() v b
|
||||
mapfile -t stable_bases < <(
|
||||
for v in "${versions[@]}"; do
|
||||
if [[ -n "$v" ]] && ! is_preview "$v"; then
|
||||
base_version "$v"
|
||||
fi
|
||||
done | sort -u
|
||||
)
|
||||
|
||||
for v in "${versions[@]}"; do
|
||||
[[ -n "$v" ]] || continue
|
||||
b="$(base_version "$v")"
|
||||
if is_preview "$v" && printf '%s\n' "${stable_bases[@]}" | grep -qxF "$b"; then
|
||||
continue
|
||||
fi
|
||||
echo "$v"
|
||||
done
|
||||
}
|
||||
|
||||
read_var() {
|
||||
sed -nE "s/^$2=\"\\\$\\{$2:-([^\"]+)\\}\".*/\\1/p" "$1" | head -n1
|
||||
}
|
||||
|
||||
choose_final_version() {
|
||||
local old="$1" new="$2"
|
||||
[[ -n "$new" ]] || { echo "$old"; return; }
|
||||
[[ -n "$old" ]] || { echo "$new"; return; }
|
||||
if [[ "$(key "$old")" > "$(key "$new")" ]]; then
|
||||
echo "$old"
|
||||
else
|
||||
echo "$new"
|
||||
fi
|
||||
}
|
||||
|
||||
update_file() {
|
||||
local file="$1"
|
||||
local old_skia old_harf final_skia final_harf changed=0
|
||||
|
||||
old_skia="$(read_var "$file" SKIA_VER)"
|
||||
old_harf="$(read_var "$file" HARFBUZZ_VER)"
|
||||
final_skia="$(choose_final_version "$old_skia" "$NEW_SKIA")"
|
||||
final_harf="$(choose_final_version "$old_harf" "$NEW_HARF")"
|
||||
|
||||
echo "==> check $file"
|
||||
echo " SKIA_VER: ${old_skia} -> ${NEW_SKIA} (apply: ${final_skia})"
|
||||
echo " HARFBUZZ_VER: ${old_harf} -> ${NEW_HARF} (apply: ${final_harf})"
|
||||
|
||||
if [[ "$old_skia" != "$final_skia" ]]; then
|
||||
sed -i -E "s|^SKIA_VER=.*|SKIA_VER=\"\\\${SKIA_VER:-$final_skia}\"|" "$file"
|
||||
changed=1
|
||||
fi
|
||||
if [[ "$old_harf" != "$final_harf" ]]; then
|
||||
sed -i -E "s|^HARFBUZZ_VER=.*|HARFBUZZ_VER=\"\\\${HARFBUZZ_VER:-$final_harf}\"|" "$file"
|
||||
changed=1
|
||||
fi
|
||||
|
||||
grep -qF "SKIA_VER=\"\${SKIA_VER:-$final_skia}\"" "$file"
|
||||
grep -qF "HARFBUZZ_VER=\"\${HARFBUZZ_VER:-$final_harf}\"" "$file"
|
||||
bash -n "$file"
|
||||
|
||||
[[ "$changed" -eq 1 ]]
|
||||
}
|
||||
|
||||
mapfile -t SKIA < <(extract SkiaSharp)
|
||||
mapfile -t HARF < <(extract HarfBuzzSharp)
|
||||
|
||||
echo "==> SkiaSharp"
|
||||
printf ' %s\n' "${SKIA[@]}"
|
||||
echo "==> HarfBuzzSharp"
|
||||
printf ' %s\n' "${HARF[@]}"
|
||||
|
||||
log_mixed_versions "SkiaSharp" "${SKIA[@]}"
|
||||
log_mixed_versions "HarfBuzzSharp" "${HARF[@]}"
|
||||
|
||||
mapfile -t SKIA < <(filter_mixed_versions "${SKIA[@]}")
|
||||
mapfile -t HARF < <(filter_mixed_versions "${HARF[@]}")
|
||||
|
||||
NEW_SKIA="$(latest "${SKIA[@]}")"
|
||||
NEW_HARF="$(latest "${HARF[@]}")"
|
||||
|
||||
echo "==> selected"
|
||||
echo " SKIA_VER=$NEW_SKIA"
|
||||
echo " HARFBUZZ_VER=$NEW_HARF"
|
||||
|
||||
any_changed=0
|
||||
changed_files=()
|
||||
|
||||
for file in "${TARGET_FILES[@]}"; do
|
||||
if update_file "$file"; then
|
||||
any_changed=1
|
||||
changed_files+=("$file")
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ "$any_changed" -eq 0 ]]; then
|
||||
echo "changed=0" >> "$GITHUB_OUTPUT"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
{
|
||||
echo "changed=1"
|
||||
echo "changed_files<<EOF"
|
||||
printf '%s\n' "${changed_files[@]}"
|
||||
echo "EOF"
|
||||
} >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: commit
|
||||
if: steps.resolve.outputs.changed == '1'
|
||||
run: |
|
||||
git config user.name github-actions
|
||||
git config user.email github-actions@github.com
|
||||
git add package-rhel-riscv.sh package-debian-riscv.sh
|
||||
if git diff --cached --quiet; then
|
||||
exit 0
|
||||
fi
|
||||
git commit -m "chore: update riscv native dependency versions"
|
||||
git push
|
||||
Reference in New Issue
Block a user