From c3ab6aed3f3c9fab6dea342d500d2191741c1f8b Mon Sep 17 00:00:00 2001 From: cryobry <38270216+cryobry@users.noreply.github.com> Date: Mon, 4 May 2020 10:27:31 -0400 Subject: [PATCH] Merge functions back into openwrtBuild and refactor input --- functions | 55 --------------------------- openwrtBuild | 104 ++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 74 insertions(+), 85 deletions(-) delete mode 100644 functions diff --git a/functions b/functions deleted file mode 100644 index 5d9b509..0000000 --- a/functions +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env bash - -##################### -##### DEFAULTS ###### -##################### - -declare -x _packages=( - "luci" "luci-theme-material" "luci-app-ddns" \ - "wireguard" "luci-app-wireguard" "luci-app-vpn-policy-routing" \ - "-dnsmasq" "dnsmasq-full" \ - "luci-app-upnp" \ - "nano" "htop") -declare -x _builddir -_builddir="$(pwd)" -declare -x _filesroot="$_builddir/files/" -declare -x _ssh_backup="root@192.168.2.1" -declare -x _backedup=( - '/etc/config/*' \ - '/etc/dropbear/*') -declare -x _debug="false" - -##################### -##### FUNCTIONS ##### -##################### - -runDebug () { [[ "$_debug" == "true" ]] && echo "Running: " "$@" ; } - - -sshBackup () { - - runDebug "${FUNCNAME[0]}" - - for fd in "${_backedup[@]}"; do - _dir="${fd%/*}/" - [[ ! -d "$_filesroot$_dir" ]] && mkdir -p "$_filesroot/$_dir" - if ! scp -rp "$_ssh_backup:$fd" "$_filesroot/$_dir"; then - echo "Did not successfully backup files from --ssh-backup" - echo "Exiting now to prevent data loss!" - exit 1 - fi - done -} - - -getOS () { - - runDebug "${FUNCNAME[0]}" - - if [[ -f /etc/os-release ]]; then - source /etc/os-release - else - echo "Cannot detect OS!" - exit 1 - fi -} diff --git a/openwrtBuild b/openwrtBuild index 84ad82d..2d48c8a 100755 --- a/openwrtBuild +++ b/openwrtBuild @@ -1,21 +1,36 @@ #!/usr/bin/env bash -source ./functions ##################### ##### DEFAULTS ###### ##################### -# TP-Link Archer C7 v2 -_version="19.07.2" -_target="ath79/generic" -_profile="tplink_archer-c7-v2" +setDefaults() { -# Raspberry Pi 4 -#_version="snapshot" -#_target="brcm2708/bcm2711" -#_profile="rpi-4" + runDebug "${FUNCNAME[0]}" -_debug="false" # Turn debugging on by default (useful for testing) + [[ -z $_debug ]] && _debug="true" # Set to true to enable debugging by default + [[ -z $_builddir ]] && _builddir="$PWD" + [[ -z $_filesroot ]] && _filesroot="$_builddir/files/" + + # Global default packages for all profiles + declare -a _packages=("luci" "nano" "htop" "tcpdump" "diffutils") + + # If no profile is specified, use the TP-Link Archer C7 v2 + [[ -z $_profile ]] && _profile="tplink_archer-c7-v2" + + # PROFILES + # TP-Link Archer C7 v2 + if [[ "$_profile" == "tplink_archer-c7-v2" ]]; then + [[ -z $_version ]] && _version="19.07.2" + [[ -z $_target ]] && _target="ath79/generic" + # Raspberry Pi 4 + elif [[ "$_profile" == "rpi-4" ]]; then + [[ -z $_version ]] && _version="snapshot" + [[ -z $_target ]] && _target="bcm27xx/bcm2711" + packages+=("kmod-usb-net-asix-ax88179" "luci-app-upnp" "luci-app-wireguard" \ + "luci-app-vpn-policy-routing" "-dnsmasq" "dnsmasq-full") + fi +} ##################### ##### FUNCTIONS ##### @@ -30,13 +45,9 @@ buildOpenWRT [[OPTION] [VALUE]]... OPTIONS --version, -v OPENWRT_VERSION - Default: 19.07.02 --target, -t TARGET - Default: ath79/generic --profile, -p PROFILE - Default: tplink_archer-c7-v2 --builddir, -b PATH - Default: Current working directory --ssh-backup SSH path Example: root@192.168.1.1 --debug, -d @@ -91,20 +102,26 @@ parseInput () { } -mkDirs () { - - runDebug "${FUNCNAME[0]}" - - [[ ! -d "$_builddir/output/sources" ]] && mkdir -p "$_builddir/output/sources" - [[ ! -d "$_filesroot" ]] && mkdir -p "$_filesroot" - [[ ! -d "$_builddir/bin" ]] && mkdir -p "$_builddir/bin" -} +runDebug () { [[ "$_debug" == "true" ]] && echo "Running: " "$@" ; } installPrerequisites () { runDebug "${FUNCNAME[0]}" + getOS () { + + runDebug "${FUNCNAME[0]}" + + if [[ -f /etc/os-release ]]; then + source /etc/os-release + else + echo "Cannot detect OS!" + exit 1 + fi + } + getOS + if [[ "$ID" == "fedora" ]]; then if ! sudo dnf -y install @c-development @development-tools @development-libs zlib-static elfutils-libelf-devel gawk unzip file wget python3 python2 > /dev/null 2>&1; then echo "Warning: Problem installing prerequisites" @@ -131,9 +148,12 @@ acquireImageBuilder () { _url="https://downloads.openwrt.org/releases/$_version/targets/$_target/$_filename" fi - if [[ ! -f "$_builddir/output/sources/$_filename" ]]; then - echo "Downloading $_url to $_builddir/output/sources" - if ! wget -q -P "$_builddir/output/sources" "$_url"; then + # Make sources directory if it does not exist + [[ ! -d "$_builddir/sources" ]] && mkdir -p "$_builddir/sources" + + if [[ ! -f "$_builddir/sources/$_filename" ]]; then + echo "Downloading $_url to $_builddir/sources" + if ! wget -q -P "$_builddir/sources" "$_url"; then echo "Could not download Image Builder" exit 1 fi @@ -147,8 +167,8 @@ extractImageBuilder () { runDebug "${FUNCNAME[0]}" - if [[ -f "$_builddir/output/sources/$_filename" ]]; then - if ! tar -xf "$_builddir/output/sources/$_filename" -C "$_builddir/output/sources/"; then + if [[ -f "$_builddir/sources/$_filename" ]]; then + if ! tar -xf "$_builddir/sources/$_filename" -C "$_builddir/sources/"; then echo "Extraction failed" exit 1 fi @@ -161,12 +181,16 @@ makeImage () { runDebug "${FUNCNAME[0]}" # move to extracted source directory - if ! pushd "$_builddir/output/sources/${_filename%.tar.xz}" > /dev/null 2>&1; then + if ! pushd "$_builddir/sources/${_filename%.tar.xz}" > /dev/null 2>&1; then exit 1 fi + # Make bin dir + [[ ! -d "$_builddir/bin" ]] && mkdir -p "$_builddir/bin" + # build image - if ! make -j4 image BIN_DIR="$_builddir/bin" PROFILE="$_profile" PACKAGES="${_packages[*]}" FILES="$_filesroot"; then + if ! make -j4 image BIN_DIR="$_builddir/bin/$_profile/" PROFILE="$_profile" \ + PACKAGES="${_packages[*]}" FILES="$_filesroot"; then echo "Make image failed!" exit 1 fi @@ -176,6 +200,26 @@ makeImage () { fi } + +#sshBackup () { +# +# runDebug "${FUNCNAME[0]}" +# +# # Make files directory if it does not exist +# [[ ! -d "$_filesroot" ]] && mkdir -p "$_filesroot" +# +# for fd in "${_backedup[@]}"; do +# _dir="${fd%/*}/" +# [[ ! -d "$_filesroot$_dir" ]] && mkdir -p "$_filesroot/$_dir" +# if ! scp -rp "$_ssh_backup:$fd" "$_filesroot/$_dir"; then +# echo "Did not successfully backup files from --ssh-backup" +# echo "Exiting now to prevent data loss!" +# exit 1 +# fi +# done +#} + + # TODO #flashImage () { # @@ -195,7 +239,7 @@ makeImage () { __main () { parseInput "$@" - mkDirs + setDefaults getOS installPrerequisites acquireImageBuilder