Compare commits

..

43 Commits

Author SHA1 Message Date
5b9f1f2f39 Re-add specific device config 2025-10-23 16:46:16 -04:00
c5bfc7907b Remove specific device config 2025-10-23 16:43:34 -04:00
533b0b5ffc Re-add specific device config 2025-10-23 16:34:37 -04:00
eba54804d3 Blank the seed file 2025-10-23 16:31:34 -04:00
09b62923a8 Re-add specific device config 2025-10-23 16:19:58 -04:00
960755e6a2 Use faster feeds mirror 2025-10-22 21:16:41 -04:00
0fa9b0d85a Streamling config options 2025-10-22 21:02:36 -04:00
4de18e6696 Add optional build clean arg to --source 2025-10-22 20:55:20 -04:00
3772d373bb Tune resource limits 2025-10-22 20:27:21 -04:00
b75597946d Improve worktree detection 2025-10-22 19:35:38 -04:00
018a91e216 Introduce reusable worktrees 2025-10-22 19:31:58 -04:00
0c61a27b06 Reorganize from_source() 2025-10-22 19:25:59 -04:00
675ed5eb39 Abandon upstream seed, untenable 2025-10-22 19:11:51 -04:00
94f60e30b1 Pass BIN_DIR to make and not .config 2025-10-22 15:46:06 -04:00
e8ccb76cc6 Remove more default buildbot configs 2025-10-21 23:58:35 -04:00
4274f876a7 Remove more default buildbot configs 2025-10-21 20:40:19 -04:00
4760c84bff Remove more default buildbot configs 2025-10-21 20:35:38 -04:00
20b3f7f4ec Strip CONFIG_ALL_KMODS 2025-10-21 10:45:18 -04:00
f178e39a28 Use CONFIG_ALL_KMODS=n in global profile 2025-10-20 16:31:48 -04:00
c7b954252d Fetch worktree branch instead of pull 2025-10-19 15:21:53 -04:00
18929109a2 Omit oldconfig step 2025-10-18 21:17:35 -04:00
8d24cb96a9 Switch to canonical make order 2025-10-18 12:27:40 -04:00
9be43af11a Make olddefconfig non-interactive 2025-10-18 11:33:04 -04:00
ce2e85d197 Attempt one step olddefconfig 2025-10-18 11:30:42 -04:00
aeead798c3 Test explicit branch 2025-09-23 16:12:57 -04:00
72355bb65a Use fetch --all to grab wt breanches 2025-09-23 15:37:13 -04:00
3053b24063 Update default release 2025-09-23 15:13:35 -04:00
186fe21d73 Update profiles 2025-09-10 19:29:56 -04:00
d63a909d54 Simplify script dir ID 2025-09-09 16:57:22 -04:00
9128c453f3 Move pfring exclusions to r4s 2025-08-19 16:54:27 -04:00
ffbd193b79 Clarify skipping lock files for --debug 2025-08-19 16:38:03 -04:00
5259c72de4 Exclude pfring kmods 2025-08-18 07:43:09 -04:00
045f43b51f Exclude more pfring packages 2025-08-15 16:53:59 -04:00
89cc3cddeb Exclude problematic packages 2025-08-13 17:34:37 -04:00
cd7449dd7c Re-disable multicore make 2025-08-11 17:44:04 -04:00
2b35e1e017 Re-enable multicore make 2025-08-11 17:10:20 -04:00
983f9ecb04 Exclude libpfring to fix compilation 2025-08-11 15:50:20 -04:00
b5f567ce2b Attempt to mix yes and execute() 2025-08-09 00:01:34 -04:00
a16e713895 Use canonincal method for now 2025-08-08 23:56:28 -04:00
70d24d7fae Replace defconfig with oldconfig 2025-08-08 22:33:30 -04:00
d5069d4c40 Add golang dependency 2025-08-08 22:24:39 -04:00
718b29cfe8 Try to omit oldconfig 2025-08-08 22:22:35 -04:00
e3ce0b6e57 Make oldconfig to prevent upstream clobbers 2025-08-08 20:50:07 -04:00
3 changed files with 99 additions and 84 deletions

View File

@@ -13,9 +13,9 @@ Build and deploy OpenWRT images using shell-style device profiles, via source co
--release,-r,--version,-v RELEASE ("snapshot", "22.03.3") --release,-r,--version,-v RELEASE ("snapshot", "22.03.3")
--buildroot,-b PATH (Default: script directory) --buildroot,-b PATH (Default: script directory)
--source --source
Build image from source code, not from Image Builder Build image from source code, not from Image Builder.
Allows make config options to be passed in profile Allows make config options to be passed in profile.
Uses git worktree for multi-profile deduplication Uses git worktree for multi-profile deduplication.
--ssh-upgrade HOST --ssh-upgrade HOST
Example: root@192.168.1.1 Example: root@192.168.1.1
--ssh-backup SSH_PATH --ssh-backup SSH_PATH

View File

@@ -2,10 +2,10 @@
# Build and deploy OpenWRT images using shell-style device profiles, via source code or the official Image Builder. # Build and deploy OpenWRT images using shell-style device profiles, via source code or the official Image Builder.
# Copyright 2022-25 Bryan C. Roessler # Copyright 2022-25 Bryan C. Roessler
# Apache 2.0 License # Apache 2.0 License
# See README and profiles for device configuration # See README and ./profiles for device configuration
# Set default release # Set default release
: "${RELEASE:="24.10.2"}" : "${RELEASE:="24.10.4"}"
# @internal # @internal
print_help() { print_help() {
@@ -22,18 +22,16 @@ print_help() {
--release,-r,--version,-v RELEASE ("snapshot", "22.03.5") --release,-r,--version,-v RELEASE ("snapshot", "22.03.5")
--buildroot,-b PATH --buildroot,-b PATH
Default: location of openwrtbuilder script Default: location of openwrtbuilder script
--source --source[=CLEAN]
Build image from source, not from Image Builder Build image from source, not from Image Builder
Allows make config options to be passed in profile Optional CLEAN runs the given clean mode before building
Uses git worktree for multi-profile deduplication (clean|targetclean|dirclean|distclean)
--ssh-upgrade HOST --ssh-upgrade HOST
Examples: root@192.168.1.1, root@router.lan Examples: root@192.168.1.1, root@router.lan
--ssh-backup SSH_PATH --ssh-backup SSH_PATH
Enabled by default for --ssh-upgrade Enabled by default for --ssh-upgrade
--flash,-f DEVICE --flash,-f DEVICE
Example: /dev/sdX Example: /dev/sdX
--reset
Cleanup all source and output files
--depends --depends
Force dependency installation Force dependency installation
--yes,-y --yes,-y
@@ -58,7 +56,7 @@ init() {
# Save the script directory # Save the script directory
# https://stackoverflow.com/a/4774063 # https://stackoverflow.com/a/4774063
SCRIPT_DIR="$(cd -- "$(dirname "$0")" >/dev/null 2>&1 || exit $? ; pwd -P)" SCRIPT_DIR=$(readlink -f "$(dirname "${BASH_SOURCE[0]}")")
if [[ -e "/etc/os-release" ]]; then if [[ -e "/etc/os-release" ]]; then
source "/etc/os-release" source "/etc/os-release"
@@ -127,8 +125,8 @@ parse_input() {
debug "${FUNCNAME[0]}" "$*" debug "${FUNCNAME[0]}" "$*"
declare -ga PROFILES declare -ga PROFILES
declare -gi RESET=0 FROM_SOURCE=0 YES=0 DEBUG=0 FORCE_DEPENDS=0 declare -gi RESET=0 FROM_SOURCE=0 YES=0 DEBUG=0 FORCE_DEPENDS=0
declare -g USER_RELEASE SSH_UPGRADE_PATH SSH_BACKUP_PATH FLASH_DEV declare -g USER_RELEASE SSH_UPGRADE_PATH SSH_BACKUP_PATH FLASH_DEV SOURCE_CLEAN
local long_opts='release:,version:,profile:,buildroot:,source,' local long_opts='release:,version:,profile:,buildroot:,source::,'
long_opts+='ssh-upgrade:,ssh-backup:,flash:,reset,depends,yes,debug,help' long_opts+='ssh-upgrade:,ssh-backup:,flash:,reset,depends,yes,debug,help'
if _input=$(getopt -o +r:v:p:b:sf:ydh -l $long_opts -- "$@"); then if _input=$(getopt -o +r:v:p:b:sf:ydh -l $long_opts -- "$@"); then
@@ -138,7 +136,12 @@ parse_input() {
--release|-r|--version|-v) shift; USER_RELEASE="$1" ;; --release|-r|--version|-v) shift; USER_RELEASE="$1" ;;
--profile|-p) shift; PROFILES+=("$1") ;; --profile|-p) shift; PROFILES+=("$1") ;;
--buildroot|-b) shift; BUILD_ROOT="$1" ;; --buildroot|-b) shift; BUILD_ROOT="$1" ;;
--source|-s) FROM_SOURCE=1 ;; --source|-s) FROM_SOURCE=1
case "$1" in
-*|"") ;; # if empty
*) SOURCE_CLEAN="$1"; shift ;;
esac
;;
--ssh-upgrade) shift; SSH_UPGRADE_PATH="$1" ;; --ssh-upgrade) shift; SSH_UPGRADE_PATH="$1" ;;
--ssh-backup) shift; SSH_BACKUP_PATH="$1" ;; --ssh-backup) shift; SSH_BACKUP_PATH="$1" ;;
--flash|-f) shift; FLASH_DEV="$1" ;; --flash|-f) shift; FLASH_DEV="$1" ;;
@@ -172,7 +175,7 @@ install_dependencies() {
lock_file="$BUILD_ROOT/.dependencies_ib.lock" lock_file="$BUILD_ROOT/.dependencies_ib.lock"
fi fi
[[ -f $lock_file ]] && debug "$lock_file lock file exists" && return 0 [[ -f $lock_file ]] && debug "$lock_file lock file exists but skipping for --debug" && return 0
if [[ "$mode" == "source" ]]; then if [[ "$mode" == "source" ]]; then
# For building from source code see: # For building from source code see:
@@ -186,6 +189,7 @@ install_dependencies() {
gcc gcc
gcc-c++ gcc-c++
git git
golang
llvm15-libs # for qosify llvm15-libs # for qosify
make make
ncurses-devel ncurses-devel
@@ -204,6 +208,7 @@ install_dependencies() {
python3-devel python3-devel
python3-pyelftools python3-pyelftools
python3-setuptools python3-setuptools
quilt
rsync rsync
swig swig
tar tar
@@ -222,10 +227,12 @@ install_dependencies() {
gcc-multilib gcc-multilib
gettext gettext
git git
golang
liblzma-dev liblzma-dev
libncurses5-dev libncurses5-dev
libssl-dev libssl-dev
python3-distutils python3-distutils
quilt
rsync rsync
patch patch
unzip unzip
@@ -250,6 +257,7 @@ install_dependencies() {
gcc gcc
gettext gettext
git git
golang
grep grep
groff groff
gzip gzip
@@ -264,6 +272,7 @@ install_dependencies() {
patch patch
pkgconf pkgconf
python python
quilt
rsync rsync
sed sed
texinfo texinfo
@@ -508,11 +517,29 @@ from_source() {
local seed_file="$BUILD_DIR/.config" local seed_file="$BUILD_DIR/.config"
local worktree_meta="$SRC_DIR/.git/worktrees/source-$ref" local worktree_meta="$SRC_DIR/.git/worktrees/source-$ref"
local pkg config commit seed_file description local pkg config commit seed_file description
local -a make_opts config_opts local -a make_opts
local -a config_opts=(
"CONFIG_TARGET_${TARGET%%/*}=y"
"CONFIG_TARGET_${TARGET//\//_}=y"
"CONFIG_TARGET_PROFILE=DEVICE_$DEVICE"
"CONFIG_TARGET_${TARGET//\//_}_DEVICE_$DEVICE=y"
"CONFIG_TARGET_ROOTFS_${FILESYSTEM^^}=y"
"CONFIG_TARGET_MULTI_PROFILE=n"
"CONFIG_BUILDBOT=n"
"CONFIG_ALL_KMODS=n"
"CONFIG_ALL_NONSHARED=n"
"CONFIG_DEVEL=n"
"CONFIG_COLLECT_KERNEL_DEBUG=n"
"CONFIG_SDK=n"
"CONFIG_SDK_LLVM_BPF=n"
"CONFIG_IB=n"
"CONFIG_MAKE_TOOLCHAIN=n"
"CONFIG_TARGET_PER_DEVICE_ROOTFS=n"
)
echo "Building from source is under development" echo "Building from source is under development"
# Remove all build directories and worktrees # Remove all build directories and worktrees if --reset
if ((RESET)); then if ((RESET)); then
if [[ -d "$BUILD_DIR" || -d "$worktree_meta" ]]; then if [[ -d "$BUILD_DIR" || -d "$worktree_meta" ]]; then
execute git -C "$SRC_DIR" worktree remove --force --force "$BUILD_DIR" execute git -C "$SRC_DIR" worktree remove --force --force "$BUILD_DIR"
@@ -522,38 +549,43 @@ from_source() {
[[ -d "$BUILD_DIR" ]] && execute rm -rf "$BUILD_DIR" [[ -d "$BUILD_DIR" ]] && execute rm -rf "$BUILD_DIR"
fi fi
# Pull or clone source repo # Fetch or clone source repo (no local merges)
if [[ -d "$SRC_DIR" ]]; then if [[ -d "$SRC_DIR" ]]; then
execute git -C "$SRC_DIR" pull execute git -C "$SRC_DIR" fetch origin --tags --prune
else else
execute mkdir -p "$SRC_DIR" execute mkdir -p "$SRC_DIR"
execute git clone "$src_url" "$SRC_DIR" execute git clone "$src_url" "$SRC_DIR"
fi fi
# Remove existing build dir and add new worktree # Reuse worktree if present; otherwise create it (support branches and tags)
if [[ -d "$BUILD_DIR" ]]; then if git -C "$BUILD_DIR" rev-parse --is-inside-work-tree >/dev/null 2>&1; then
execute rm -rf "$BUILD_DIR" execute git -C "$BUILD_DIR" fetch origin --tags --prune
execute git -C "$BUILD_DIR" reset --hard "origin/$ref" || \
execute git -C "$BUILD_DIR" reset --hard "$ref" || \
execute git -C "$BUILD_DIR" checkout --detach "$ref"
else
execute git -C "$SRC_DIR" worktree prune --verbose
# Prefer local tag/branch if present, otherwise use remote-tracking branch
if ! execute git -C "$SRC_DIR" worktree add --detach "$BUILD_DIR" "$ref"; then
execute git -C "$SRC_DIR" worktree add --detach "$BUILD_DIR" "origin/$ref"
fi
fi fi
execute git -C "$SRC_DIR" worktree prune --verbose
execute git -C "$SRC_DIR" worktree add --detach "$BUILD_DIR" "$ref"
# Add cherrypick commits if specified in profile # Add cherrypick commits if specified in profile (skip if already included)
for entry in ${P_ARR[cherrypicks]}; do for entry in ${P_ARR[cherrypicks]}; do
remote="${entry%%:*}" remote="${entry%%:*}"
commit="${entry##*:}" commit="${entry##*:}"
# Add remote if not present
if ! git -C "$BUILD_DIR" remote | grep -q "^$remote$"; then if ! git -C "$BUILD_DIR" remote | grep -q "^$remote$"; then
execute git -C "$BUILD_DIR" remote add "$remote" "https://github.com/$remote/openwrt.git" execute git -C "$BUILD_DIR" remote add "$remote" "https://github.com/$remote/openwrt.git"
fi fi
# Fetch remote
execute git -C "$BUILD_DIR" fetch "$remote" execute git -C "$BUILD_DIR" fetch "$remote"
# Cherry-pick commit execute git -C "$BUILD_DIR" merge-base --is-ancestor "$commit" HEAD ||
execute git -C "$BUILD_DIR" cherry-pick "$commit" execute git -C "$BUILD_DIR" cherry-pick "$commit"
done done
# Print commit info # Print commit info
commit=$(git -C "$BUILD_DIR" rev-parse HEAD) commit=$(git -C "$BUILD_DIR" rev-parse HEAD)
description=$(git -C "$BUILD_DIR" describe) description=$(git -C "$BUILD_DIR" describe --always --dirty)
echo "Current commit hash: $commit" echo "Current commit hash: $commit"
echo "Git worktree description: $description" echo "Git worktree description: $description"
@@ -565,29 +597,24 @@ from_source() {
# Begin OpenWRT build process # Begin OpenWRT build process
((DEBUG)) && make_opts+=("V=sc") ((DEBUG)) && make_opts+=("V=sc")
# Cleanup build environment # Cleanup build environment: heavy clean only when --reset was used earlier
execute make "${make_opts[@]}" "-j1" distclean
# make clean # compiled output # make clean # compiled output
# make targetclean # compiled output, toolchain # make targetclean # compiled output, toolchain
# make dirclean # compiled output, toolchain, build tools # make dirclean # compiled output, toolchain, build tools
# make distclean # compiled output, toolchain, build tools, .config, feeds, .ccache # make distclean # compiled output, toolchain, build tools, .config, feeds, .ccache
if [[ -n $SOURCE_CLEAN ]]; then
execute make "${make_opts[@]}" "-j1" "$SOURCE_CLEAN"
else
debug "Skipping cleanup step"
fi
# Use a custom (faster) mirror # Use a custom (faster) mirror
# execute sed -i -E 's;git.openwrt.org/(feed|project);github.com/openwrt;' feeds.conf.default execute sed -i -E 's;git.openwrt.org/(feed|project);github.com/openwrt;' feeds.conf.default
# Update package feed # Update package feed
./scripts/feeds update -a -f && ./scripts/feeds update -a -f &&
./scripts/feeds install -a -f ./scripts/feeds install -a -f
# Grab the release seed config
if ! execute "$DL_TOOL" "-o" "$seed_file" "$seed_url"; then
echo "Could not obtain $seed_file from $seed_url"
return 1
fi
# Set compilation output dir
config_opts+=("CONFIG_BINARY_FOLDER=\"$BIN_DIR\"")
# Add custom packages # Add custom packages
for pkg in $PACKAGES; do for pkg in $PACKAGES; do
if [[ $pkg == -* ]]; then if [[ $pkg == -* ]]; then
@@ -597,54 +624,37 @@ from_source() {
fi fi
done done
# Add config options from profile # Add profile config options
for config in ${P_ARR[config]}; do for config in ${P_ARR[config]}; do
config_opts+=("$config") config_opts+=("$config")
done done
# Only compile selected fs # Reset and write options to config seed file
execute sed -i '/CONFIG_TARGET_ROOTFS_/d' "$seed_file" [[ -f $seed_file ]] && execute rm -f "$seed_file"
config_opts+=("CONFIG_TARGET_PER_DEVICE_ROOTFS=n")
if [[ $FILESYSTEM == "squashfs" ]]; then
config_opts+=("CONFIG_TARGET_ROOTFS_EXT4FS=n")
config_opts+=("CONFIG_TARGET_ROOTFS_SQUASHFS=y")
elif [[ $FILESYSTEM == "ext4" ]]; then
config_opts+=("CONFIG_TARGET_ROOTFS_SQUASHFS=n")
config_opts+=("CONFIG_TARGET_ROOTFS_EXT4FS=y")
fi
# Only compile selected target image
execute sed -i '/CONFIG_TARGET_DEVICE_/d' "$seed_file"
config_opts+=("CONFIG_TARGET_MULTI_PROFILE=n")
config_opts+=("CONFIG_TARGET_PROFILE=DEVICE_$DEVICE")
config_opts+=("CONFIG_TARGET_${TARGET//\//_}_DEVICE_$DEVICE=y")
config_opts+=("CONFIG_SDK=n")
config_opts+=("CONFIG_SDK_LLVM_BPF=n")
config_opts+=("CONFIG_IB=n")
config_opts+=("CONFIG_MAKE_TOOLCHAIN=n")
# Write options to config seed file
for config in "${config_opts[@]}"; do for config in "${config_opts[@]}"; do
debug "Writing $config to $seed_file" debug "Writing $config to $seed_file"
echo "$config" >> "$seed_file" echo "$config" >> "$seed_file"
done done
# Serial make prep is more reliable # Expand seed into full config
execute make "${make_opts[@]}" "-j1" defconfig execute make "${make_opts[@]}" "-j1" defconfig
# Run serial make download for better reliability
execute make "${make_opts[@]}" "-j1" download execute make "${make_opts[@]}" "-j1" download
# make_opts+=("-j$(($(nproc)-1))") # (Optional) Disable multicore make world
((DEBUG)) && make_opts+=("-j1") || make_opts+=("-j$(($(nproc)-1))") # ((DEBUG)) && make_opts+=("-j1") || make_opts+=("-j$(($(nproc)-2))")
make_opts+=("-j$(($(nproc)-2))")
# Make image # Make image
if ! execute ionice -c 3 chrt --idle 0 nice -n19 make "${make_opts[@]}" world; then if ! execute ionice -c2 -n7 nice -n19 make "${make_opts[@]}" BIN_DIR="$BIN_DIR" world; then
echo "Error: make failed" echo "Error: make failed"
return 1 return 1
fi fi
execute popd || return 1 execute popd || return 1
# Symlink output images to root of BIN_DIR (match Image Builder) # Symlink output images to root of BIN_DIR (match Image Builder behavior)
shopt -s nullglob shopt -s nullglob
for image in "$BIN_DIR/targets/${TARGET}/"*.{img,img.gz,ubi}; do for image in "$BIN_DIR/targets/${TARGET}/"*.{img,img.gz,ubi}; do
execute ln -fs "$image" "$BIN_DIR/${image##*/}" execute ln -fs "$image" "$BIN_DIR/${image##*/}"
@@ -768,7 +778,7 @@ main() {
# Store profile in P_ARR nameref # Store profile in P_ARR nameref
local -n P_ARR="$profile" local -n P_ARR="$profile"
local mode="${P_ARR[mode]:="imagebuilder"}" local mode="${P_ARR[mode]:-"imagebuilder"}"
((FROM_SOURCE)) && mode="source" # allow cli override ((FROM_SOURCE)) && mode="source" # allow cli override
install_dependencies "$mode" install_dependencies "$mode"
local repo="${P_ARR[repo]:-}" local repo="${P_ARR[repo]:-}"
@@ -784,8 +794,8 @@ main() {
read -r release ref < <(normalize_and_ref "$raw_release" "$mode") read -r release ref < <(normalize_and_ref "$raw_release" "$mode")
declare -g SRC_DIR="$BUILD_ROOT/src/.openwrt" declare -g SRC_DIR="$BUILD_ROOT/src/.openwrt"
declare -g BUILD_DIR="$BUILD_ROOT/src/$profile/$mode-$ref" declare -g BUILD_DIR="$BUILD_ROOT/src/$profile/$ref-$mode"
declare -g BIN_DIR="$BUILD_ROOT/bin/$profile/$mode-$ref" declare -g BIN_DIR="$BUILD_ROOT/bin/$profile/$ref-$mode"
if [[ "$release" == "snapshot" ]]; then if [[ "$release" == "snapshot" ]]; then
local url_prefix="https://downloads.openwrt.org/snapshots/targets/$TARGET" local url_prefix="https://downloads.openwrt.org/snapshots/targets/$TARGET"
@@ -809,7 +819,7 @@ main() {
declare -g SYSUPGRADEIMGGZ="$BUILD_DIR/$img_fname-sysupgrade.img.gz" declare -g SYSUPGRADEIMGGZ="$BUILD_DIR/$img_fname-sysupgrade.img.gz"
fi fi
backup "$SYSUPGRADEIMGGZ" "$BACKUP_DIR/$profile/$mode-$ref" backup "$SYSUPGRADEIMGGZ" "$BACKUP_DIR/$profile/$ref-$mode"
if [[ "$mode" == "source" ]]; then if [[ "$mode" == "source" ]]; then
from_source "$seed_url" "$profile" "$ref" || return $? from_source "$seed_url" "$profile" "$ref" || return $?

View File

@@ -2,13 +2,15 @@
# Device profiles for openwrtbuilder # Device profiles for openwrtbuilder
# shellcheck disable=SC2034 # shellcheck disable=SC2034
# Default (but optional) packages # Default (but optional) packages (precede with "-" to exclude)
default_packages=(nano htop diffutils tar iperf3 zsh rsync default_packages=(nano htop diffutils tar iperf3 zsh rsync curl tcpdump
openssh-sftp-server luci luci-ssl luci-proto-wireguard luci-app-statistics openssh-sftp-server luci luci-ssl luci-proto-wireguard luci-app-statistics
collectd-mod-sensors collectd-mod-thermal collectd-mod-conntrack collectd-mod-cpu) collectd-mod-sensors collectd-mod-thermal collectd-mod-conntrack collectd-mod-cpu
)
# Default (but optional) kernel configs # Default (but optional) kernel configs
default_configs=("CONFIG_ALL_KMODS=n" "CONFIG_BUILDBOT=n") default_configs=(
)
# Current devices # Current devices
declare -Ag r4s=( declare -Ag r4s=(
@@ -17,15 +19,16 @@ declare -Ag r4s=(
[target]="rockchip/armv8" [target]="rockchip/armv8"
[filesystem]="ext4" [filesystem]="ext4"
[packages]="${default_packages[*]} \ [packages]="${default_packages[*]} \
luci-app-ddns luci-app-sqm irqbalance \ luci-app-ddns luci-app-sqm \
adblock luci-app-adblock \
collectd-mod-df usbutils kmod-usb-storage kmod-usb-storage-uas \ collectd-mod-df usbutils kmod-usb-storage kmod-usb-storage-uas \
kmod-fs-btrfs btrfs-progs block-mount smcroute avahi-daemon \ kmod-fs-btrfs btrfs-progs block-mount smcroute avahi-daemon \
curl ethtool ca-bundle tailscale" ethtool ca-bundle tailscale"
[config]="${default_configs[*]} \ [config]="${default_configs[*]} \
CONFIG_KERNEL_BTRFS_FS_POSIX_ACL=y CONFIG_BTRFS_PROGS_ZSTD=y \ CONFIG_KERNEL_BTRFS_FS_POSIX_ACL=y CONFIG_BTRFS_PROGS_ZSTD=y \
CONFIG_TARGET_ROOTFS_PARTSIZE=512 CONFIG_TARGET_KERNEL_PARTSIZE=32" CONFIG_TARGET_ROOTFS_PARTSIZE=512 CONFIG_TARGET_KERNEL_PARTSIZE=32"
[files]="/mnt/backup" [files]="/mnt/backup"
# for 24.10 branch (Linux 6.6) # For 24.10 branch (Linux 6.6)
# [cherrypicks]="wurzerj:59d6e31 wurzerj:bb251b8" # fix inconsistent reboot # [cherrypicks]="wurzerj:59d6e31 wurzerj:bb251b8" # fix inconsistent reboot
) )
@@ -35,7 +38,8 @@ declare -Ag ax6000=(
[target]="mediatek/filogic" [target]="mediatek/filogic"
[release]="snapshot" [release]="snapshot"
[filesystem]="squashfs" [filesystem]="squashfs"
[packages]="${default_packages[*]} -dnsmasq -odhcpd-ipv6only -nftables -firewall4 tailscale" [packages]="${default_packages[*]} \
-dnsmasq -odhcpd-ipv6only -nftables -firewall4 tailscale"
) )
declare -Ag ax6000_uboot=( declare -Ag ax6000_uboot=(
@@ -44,7 +48,8 @@ declare -Ag ax6000_uboot=(
[target]="mediatek/filogic" [target]="mediatek/filogic"
[release]="snapshot" [release]="snapshot"
[filesystem]="squashfs" [filesystem]="squashfs"
[packages]="${default_packages[*]} -dnsmasq -odhcpd-ipv6only -nftables -firewall4" [packages]="${default_packages[*]} \
-dnsmasq -odhcpd-ipv6only -nftables -firewall4"
) )
declare -Ag n5100=( declare -Ag n5100=(