fixing release pipeline again

This commit is contained in:
2026-07-15 19:36:45 +00:00
parent 208b49b512
commit 04ef40be4f
3 changed files with 48 additions and 1 deletions
+13 -1
View File
@@ -72,10 +72,22 @@ jobs:
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Install SDK build dependencies - name: Install SDK build dependencies
shell: bash
run: | run: |
sudo apt-get update sudo apt-get update
sudo apt-get install --yes build-essential clang flex bison g++ gawk gettext git libncurses-dev libssl-dev python3 rsync unzip zlib1g-dev file wget patch time curl jq zstd packages=(build-essential clang flex bison g++ gawk gettext git libncurses-dev libssl-dev python3 rsync unzip zlib1g-dev file wget patch time curl jq zstd)
case "$(uname -m)" in
aarch64|arm64|armv7l|armv8l)
packages+=(qemu-user-static)
;;
esac
sudo apt-get install --yes "${packages[@]}"
- name: Build and upload configured packages - name: Build and upload configured packages
env:
ARCHITECTURE: ${{ matrix.architecture }}
VERSION: ${{ needs.metadata.outputs.version }}
run: scripts/ci/build-release.sh .gitea/release-targets.json "$ARCHITECTURE" "$VERSION" dist
- name: Upload package to draft release
env: env:
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
RELEASE_ID: ${{ needs.create-release.outputs.release-id }} RELEASE_ID: ${{ needs.create-release.outputs.release-id }}
+6
View File
@@ -61,6 +61,12 @@ Add an object with a unique `architecture` label and a valid OpenWrt
required. The generic ARM entries select ARMv7 and ARMv8 ABIs; use a required. The generic ARM entries select ARMv7 and ARMv8 ABIs; use a
device-specific OpenWrt target when necessary. device-specific OpenWrt target when necessary.
OpenWrt publishes its release SDKs with x86-64 host tools, even when the target
is ARM or PowerPC. On an ARM build agent, the workflow installs
`qemu-user-static` and the build script runs the SDK host tools explicitly
through `qemu-x86_64-static`; privileged `binfmt_misc` registration is not
required. Native x86-64 agents skip emulation and remain faster.
Releases use the next available `MAJOR.MINOR.PATCH` tag. `MAJOR` and `MINOR` Releases use the next available `MAJOR.MINOR.PATCH` tag. `MAJOR` and `MINOR`
live in the release config; the workflow finds the highest existing live in the release config; the workflow finds the highest existing
`vMAJOR.MINOR.PATCH` tag and increments its patch, starting at `0` when a new `vMAJOR.MINOR.PATCH` tag and increments its patch, starting at `0` when a new
+29
View File
@@ -38,6 +38,35 @@ sdk_dir=$(find "$work_dir" -mindepth 1 -maxdepth 1 -type d -name 'openwrt-sdk-*'
[[ -n $sdk_dir ]] || { echo "SDK directory was not extracted" >&2; exit 1; } [[ -n $sdk_dir ]] || { echo "SDK directory was not extracted" >&2; exit 1; }
cd "$sdk_dir" cd "$sdk_dir"
# OpenWrt publishes relocatable SDKs whose host tools are x86-64 binaries.
# On ARM runners, invoke the SDK's bundled x86-64 loader explicitly through
# QEMU. This works without privileged binfmt_misc registration on the host.
case $(uname -m) in
x86_64|amd64)
;;
aarch64|arm64|armv7l|armv8l)
qemu_x86_64=$(command -v qemu-x86_64-static || command -v qemu-x86_64 || true)
[[ -n $qemu_x86_64 ]] || {
echo "ARM build host requires qemu-x86_64-static (install qemu-user-static)" >&2
exit 1
}
mapfile -d '' sdk_wrappers < <(
find staging_dir -type f -exec grep -IlZ 'ld-linux-x86-64\.so\.2' {} +
)
[[ ${#sdk_wrappers[@]} -gt 0 ]] || {
echo "no relocatable x86-64 SDK wrappers found" >&2
exit 1
}
sed -i -E "s|^exec (\"\\\$dir/.*ld-linux-x86-64\\.so\\.2\")|exec ${qemu_x86_64} \\1|" "${sdk_wrappers[@]}"
staging_dir/host/bin/sed --version >/dev/null
;;
*)
echo "unsupported build host architecture: $(uname -m)" >&2
exit 1
;;
esac
./scripts/feeds update base packages ./scripts/feeds update base packages
./scripts/feeds install mbedtls uci usteer ./scripts/feeds install mbedtls uci usteer
mkdir -p package/openuf mkdir -p package/openuf