prepare-openwrt-env.sh
- Dispatch on the package manager instead of guessing from the distro
version: apt, dnf/yum, pacman, zypper and apk are all supported.
- Probe every package against the running release and skip the ones that
no longer exist. Previously a single dropped package (on Ubuntu 26.04
arm64, gcc-multilib-s390x-linux-gnu) failed the whole apt command and
set -e aborted the script, so nothing was installed at all.
- Align the package lists with the official build system guide, adding
libelf-dev, python3-dev, bc, xsltproc, zstd, u-boot-tools and others.
- Make Go opt-in via --with-go rather than forced on arm64.
- Add -y/--yes, -n/--dry-run and -h/--help; allow running as root.
prepare-openwrt.sh
- Split read-only discovery from mutation. Versions are resolved over
git ls-remote before anything is moved, so aborting at the prompt
leaves the helper checkout untouched.
- Resume an interrupted first run instead of failing forever: a root
with .git but no source tree was previously unrecoverable without a
manual rm -rf. Also restore the worktree when HEAD already points at
the target ref, where checkout is a no-op.
- Detect the relocated layout by content rather than directory name, so
renaming the root no longer triggers a second, nested relocation.
- Replace the staged in-place relocation with a resumable content move,
removing the window that could strand the checkout in a hidden dir.
- Filter release candidates before sorting; sort -V orders v25.12.0-rc1
after v25.12.0, so the newest stable tag could be an rc.
- Follow upstream: snapshots use main (master as fallback) and the dead
-SNAPSHOT tag lookup is gone.
- Use a partial clone (--filter=blob:none) by default.
- Guard version switches on a dirty tree and back up .config first.
- Add /helper/ to .git/info/exclude and warn that git clean -xdff still
deletes it, since -x bypasses ignore rules by design.
- Leave a symlink at the old checkout path so shells and editors whose
working directory still points there keep working.
- Add --stable/--branch/--snapshot plus -y, -n, --force, --full-clone,
--allow-rc, --root, --skip-feeds, --skip-defconfig, --repo-url and
--no-compat-link.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>