Compare commits

..

3 Commits

Author SHA1 Message Date
6f6d92b659 Try to verify output file for stock builds 2024-10-24 15:41:21 -04:00
961a87fb6c Update README 2024-10-24 15:29:41 -04:00
63cd99cd4d Separate dependency lock files 2024-10-24 15:20:05 -04:00
2 changed files with 175 additions and 166 deletions

View File

@@ -1,6 +1,6 @@
# openwrtbuilder
Sanely build and deploy OpenWRT images using the Image Builder or from source code
Sanely build and deploy OpenWRT images using the Image Builder or from source code.
## Usage
@@ -11,20 +11,21 @@ Sanely build and deploy OpenWRT images using the Image Builder or from source co
```(text)
--profile,-p PROFILE
--release,-r,--version,-v RELEASE ("snapshot", "22.03.3")
--buildroot,-b PATH
Default: location of openwrtbuilder script
--buildroot,-b PATH (Default: script directory)
--source
Build image from source, not from Image Builder
Allows make config options to be passed
Build image from source, not from Image Builder
Allows make config options to be passed in profile
--ssh-upgrade HOST
Example: root@192.168.1.1
Example: root@192.168.1.1
--ssh-backup SSH_PATH
Enabled by default for --ssh-upgrade
Enabled by default for --ssh-upgrade
--flash,-f DEVICE
Example: /dev/sdX
Example: /dev/sdX
--reset
Cleanup all source and output files
Can be combined with -p to reset a specific profile
Cleanup all source and output files
Can be combined with -p to reset a specific profile
--yes,-y
Assume yes for all questions (automatic mode)
--debug,-d
--help,-h
```
@@ -36,8 +37,8 @@ See `./profiles` for example device profile definitions.
## Examples
* `./openwrtbuilder -p r4s -r snapshot --debug`
* `./openwrtbuilder -p ax6000 -r 22.03.3 --source --debug`
* `./openwrtbuilder -p rpi4 -r 22.03.3 --flash /dev/sdX`
* `./openwrtbuilder -p ax6000 -r 23.05.5 --source --debug`
* `./openwrtbuilder -p rpi4 -r 23.05.5 --flash /dev/sdX`
* `./openwrtbuilder -p linksys -r snapshot --ssh-upgrade root@192.168.1.1`
## Additional Info

View File

@@ -153,161 +153,164 @@ parse_input() {
install_dependencies() {
debug "${FUNCNAME[0]}"
local lock_file="$BUILDROOT/.dependencies"
local -a pkg_list
# TODO please contribute your platform here
local lock_file
if ((FROM_SOURCE)); then
# For building from source with make
# https://openwrt.org/docs/guide-developer/toolchain/install-buildsystem
case "$ID" in
fedora|centos)
pkg_list+=(
"bash-completion"
"bzip2"
"gcc"
"gcc-c++"
"git"
"make"
"ncurses-devel"
"patch"
"rsync"
"tar"
"unzip"
"wget"
"which"
"diffutils"
"python2"
"python3"
"python3-setuptools"
"python3-pyelftools"
"perl-base"
"perl-Data-Dumper"
"perl-File-Compare"
"perl-File-Copy"
"perl-FindBin"
"perl-IPC-Cmd"
"perl-Thread-Queue"
"perl-Time-Piece"
"perl-JSON-PP"
"swig"
"clang" # for qosify
"llvm15-libs"
"patch")
;;
debian|ubuntu)
pkg_list+=(
"build-essential"
"clang"
"flex"
"g++"
"gawk"
"gcc-multilib"
"gettext"
"git"
"libncurses5-dev"
"libssl-dev"
"python3-distutils"
"rsync"
"unzip"
"zlib1g-dev"
"file"
"wget"
"patch")
;;
arch)
pkg_list+=(
"base-devel"
"autoconf"
"automake"
"bash"
"binutils"
"bison"
"bzip2"
"clang"
"fakeroot"
"file"
"findutils"
"flex"
"gawk"
"gcc"
"gettext"
"git"
"grep"
"groff"
"gzip"
"libelf"
"libtool"
"libxslt"
"m4"
"make"
"ncurses"
"openssl"
"patch"
"pkgconf"
"python"
"rsync"
"sed"
"texinfo"
"time"
"unzip"
"util-linux"
"wget"
"which"
"zlib"
"patch")
;;
*)
debug "Skipping dependency install, your OS is unsupported"
return 1
;;
esac
lock_file="$BUILDROOT/.dependencies_sc"
else
# For Imagebuilder
case "$ID" in
fedora|centos)
pkg_list+=(
"@c-development"
"@development-tools"
"@development-libs"
"perl-FindBin"
"zlib-static"
"elfutils-libelf-devel"
"gawk"
"unzip"
"file"
"wget"
"python3"
"python2"
"axel"
"perl-IPC-Cmd")
;;
debian|ubuntu)
pkg_list+=(
"build-essential"
"libncurses5-dev"
"libncursesw5-dev"
"zlib1g-dev"
"gawk"
"git"
"gettext"
"libssl-dev"
"xsltproc"
"wget"
"unzip"
"python"
"axel")
;;
*)
debug "Skipping dependency install, your OS is unsupported"
return 1
;;
esac
lock_file="$BUILDROOT/.dependencies_ib"
fi
if [[ ! -f $lock_file ]]; then
if ((FROM_SOURCE)); then
# For building from source code
# https://openwrt.org/docs/guide-developer/toolchain/install-buildsystem
case "$ID" in
fedora|centos)
pkg_list+=(
"bash-completion"
"bzip2"
"gcc"
"gcc-c++"
"git"
"make"
"ncurses-devel"
"patch"
"rsync"
"tar"
"unzip"
"wget"
"which"
"diffutils"
"python2"
"python3"
"python3-setuptools"
"python3-pyelftools"
"perl-base"
"perl-Data-Dumper"
"perl-File-Compare"
"perl-File-Copy"
"perl-FindBin"
"perl-IPC-Cmd"
"perl-Thread-Queue"
"perl-Time-Piece"
"perl-JSON-PP"
"swig"
"clang" # for qosify
"llvm15-libs"
"patch")
;;
debian|ubuntu)
pkg_list+=(
"build-essential"
"clang"
"flex"
"g++"
"gawk"
"gcc-multilib"
"gettext"
"git"
"libncurses5-dev"
"libssl-dev"
"python3-distutils"
"rsync"
"unzip"
"zlib1g-dev"
"file"
"wget"
"patch")
;;
arch)
pkg_list+=(
"base-devel"
"autoconf"
"automake"
"bash"
"binutils"
"bison"
"bzip2"
"clang"
"fakeroot"
"file"
"findutils"
"flex"
"gawk"
"gcc"
"gettext"
"git"
"grep"
"groff"
"gzip"
"libelf"
"libtool"
"libxslt"
"m4"
"make"
"ncurses"
"openssl"
"patch"
"pkgconf"
"python"
"rsync"
"sed"
"texinfo"
"time"
"unzip"
"util-linux"
"wget"
"which"
"zlib"
"patch")
;;
*)
debug "Skipping dependency install, your OS is unsupported"
return 1
;;
esac
else
# For Imagebuilder
case "$ID" in
fedora|centos)
pkg_list+=(
"@c-development"
"@development-tools"
"@development-libs"
"perl-FindBin"
"zlib-static"
"elfutils-libelf-devel"
"gawk"
"unzip"
"file"
"wget"
"python3"
"python2"
"axel"
"perl-IPC-Cmd")
;;
debian|ubuntu)
pkg_list+=(
"build-essential"
"libncurses5-dev"
"libncursesw5-dev"
"zlib1g-dev"
"gawk"
"git"
"gettext"
"libssl-dev"
"xsltproc"
"wget"
"unzip"
"python"
"axel")
;;
*)
debug "Skipping dependency install, your OS is unsupported"
return 1
;;
esac
fi
fi
# Skip dependency installation if lock file is present
[[ -f $lock_file ]] && return
pkg_install "${pkg_list[@]}" && echo "${pkg_list[@]}" > "$lock_file"
}
@@ -769,10 +772,15 @@ main() {
extract "$ib_file" "$BUILDDIR" || return $?
add_repos
make_images
# Verify output iamges
for outfile in "$BINDIR"/*.img.gz; do
verify "$outfile" "$ib_sha256_file" || return 1
done
# Verify output image for stock builds (in testing)
if [[ ! -v P_ARR[packages] || -z ${P_ARR[packages]} ]]; then
shopt -s nullglob
local -a outfiles=("$BINDIR"/*.img.gz "$BINDIR"/*.img)
shopt -u nullglob
for outfile in "${outfiles[@]}"; do
verify "$outfile" "$ib_sha256_file" || return 1
done
fi
#copyFiles
fi