mirror of
https://github.com/DrHo1y/orangepi-build.git
synced 2026-11-10 17:57:20 +07:00
Bump to next branch
Host: Ubuntu 21.04
This commit is contained in:
519
scripts/main.sh
519
scripts/main.sh
@@ -1,28 +1,48 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) 2015 Igor Pecovnik, igor.pecovnik@gma**.com
|
||||
# Copyright (c) 2013-2021 Igor Pecovnik, igor.pecovnik@gma**.com
|
||||
#
|
||||
# This file is licensed under the terms of the GNU General Public
|
||||
# License version 2. This program is licensed "as is" without any
|
||||
# warranty of any kind, whether express or implied.
|
||||
|
||||
|
||||
#
|
||||
# Main program
|
||||
#
|
||||
|
||||
|
||||
cleanup_list() {
|
||||
local varname="${1}"
|
||||
local list_to_clean="${!varname}"
|
||||
list_to_clean="${list_to_clean#"${list_to_clean%%[![:space:]]*}"}"
|
||||
list_to_clean="${list_to_clean%"${list_to_clean##*[![:space:]]}"}"
|
||||
echo ${list_to_clean}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if [[ $(basename "$0") == main.sh ]]; then
|
||||
|
||||
echo "Please use build.sh to start the build process"
|
||||
exit 255
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
# default umask for root is 022 so parent directories won't be group writeable without this
|
||||
# this is used instead of making the chmod in prepare_host() recursive
|
||||
umask 002
|
||||
|
||||
# destination
|
||||
DEST="${SRC}"/output
|
||||
REVISION="2.1.8"
|
||||
if [ -d "$CONFIG_PATH/output" ]; then
|
||||
DEST="${CONFIG_PATH}"/output
|
||||
else
|
||||
DEST="${SRC}"/output
|
||||
fi
|
||||
|
||||
REVISION="3.0.0"
|
||||
|
||||
[[ $DOWNLOAD_MIRROR == "china" ]] && NTP_SERVER="cn.pool.ntp.org"
|
||||
|
||||
@@ -38,15 +58,12 @@ fi
|
||||
backtitle="Orange Pi building script, http://www.orangepi.org"
|
||||
titlestr="Choose an option"
|
||||
|
||||
# if language not set, set to english
|
||||
[[ -z $LANGUAGE ]] && export LANGUAGE="en_US:en"
|
||||
# Warnings mitigation
|
||||
[[ -z $LANGUAGE ]] && export LANGUAGE="en_US:en" # set to english if not set
|
||||
[[ -z $CONSOLE_CHAR ]] && export CONSOLE_CHAR="UTF-8" # set console to UTF-8 if not set
|
||||
|
||||
# default console if not set
|
||||
[[ -z $CONSOLE_CHAR ]] && export CONSOLE_CHAR="UTF-8"
|
||||
# Libraries include
|
||||
|
||||
[[ -z $FORCE_CHECKOUT ]] && FORCE_CHECKOUT=yes
|
||||
|
||||
# Load libraries
|
||||
# shellcheck source=debootstrap.sh
|
||||
source "${SRC}"/scripts/debootstrap.sh # system specific install
|
||||
# shellcheck source=image-helpers.sh
|
||||
@@ -58,23 +75,28 @@ source "${SRC}"/scripts/desktop.sh # desktop specific install
|
||||
# shellcheck source=compilation.sh
|
||||
source "${SRC}"/scripts/compilation.sh # patching and compilation of kernel, uboot, ATF
|
||||
# shellcheck source=compilation-prepare.sh
|
||||
#source "${SRC}"/scripts/compilation-prepare.sh # kernel plugins - 3rd party drivers that are not upstreamed. Like WG, AUFS, various Wifi
|
||||
#source "${SRC}"/scripts/compilation-prepare.sh # drivers that are not upstreamed
|
||||
# shellcheck source=makeboarddeb.sh
|
||||
source "${SRC}"/scripts/makeboarddeb.sh # create board support package
|
||||
source "${SRC}"/scripts/makeboarddeb.sh # board support package
|
||||
# shellcheck source=general.sh
|
||||
source "${SRC}"/scripts/general.sh # general functions
|
||||
# shellcheck source=chroot-buildpackages.sh
|
||||
source "${SRC}"/scripts/chroot-buildpackages.sh # building packages in chroot
|
||||
source "${SRC}"/scripts/chroot-buildpackages.sh # chroot packages building
|
||||
# shellcheck source=pack.sh
|
||||
source "${SRC}"/scripts/pack-uboot.sh
|
||||
|
||||
|
||||
# set log path
|
||||
LOG_SUBPATH=${LOG_SUBPATH:=debug}
|
||||
|
||||
# compress and remove old logs
|
||||
mkdir -p "${DEST}"/debug
|
||||
(cd "${DEST}"/debug && tar -czf logs-"$(<timestamp)".tgz ./*.log) > /dev/null 2>&1
|
||||
rm -f "${DEST}"/debug/*.log > /dev/null 2>&1
|
||||
date +"%d_%m_%Y-%H_%M_%S" > "${DEST}"/debug/timestamp
|
||||
mkdir -p "${DEST}"/${LOG_SUBPATH}
|
||||
(cd "${DEST}"/${LOG_SUBPATH} && tar -czf logs-"$(<timestamp)".tgz ./*.log) > /dev/null 2>&1
|
||||
rm -f "${DEST}"/${LOG_SUBPATH}/*.log > /dev/null 2>&1
|
||||
date +"%d_%m_%Y-%H_%M_%S" > "${DEST}"/${LOG_SUBPATH}/timestamp
|
||||
|
||||
# delete compressed logs older than 7 days
|
||||
(cd "${DEST}"/debug && find . -name '*.tgz' -mtime +7 -delete) > /dev/null
|
||||
(cd "${DEST}"/${LOG_SUBPATH} && find . -name '*.tgz' -mtime +7 -delete) > /dev/null
|
||||
|
||||
if [[ $PROGRESS_DISPLAY == none ]]; then
|
||||
|
||||
@@ -88,15 +110,19 @@ fi
|
||||
|
||||
if [[ $PROGRESS_LOG_TO_FILE != yes ]]; then unset PROGRESS_LOG_TO_FILE; fi
|
||||
|
||||
|
||||
|
||||
SHOW_WARNING=yes
|
||||
|
||||
|
||||
|
||||
if [[ $USE_CCACHE != no ]]; then
|
||||
|
||||
CCACHE=ccache
|
||||
export PATH="/usr/lib/ccache:$PATH"
|
||||
# private ccache directory to avoid permission issues when using build script with "sudo"
|
||||
# see https://ccache.samba.org/manual.html#_sharing_a_cache for alternative solution
|
||||
[[ $PRIVATE_CCACHE == yes ]] && export CCACHE_DIR=$DEST/cache/ccache
|
||||
[[ $PRIVATE_CCACHE == yes ]] && export CCACHE_DIR=$EXTER/cache/ccache
|
||||
|
||||
else
|
||||
|
||||
@@ -104,19 +130,36 @@ else
|
||||
|
||||
fi
|
||||
|
||||
if [ "$OFFLINE_WORK" == "yes" ]; then
|
||||
echo -e "\n"
|
||||
display_alert "* " "You are working offline."
|
||||
display_alert "* " "Sources, time and host will not be checked"
|
||||
echo -e "\n"
|
||||
sleep 3s
|
||||
else
|
||||
# we need dialog to display the menu in case not installed. Other stuff gets installed later
|
||||
prepare_host_basic
|
||||
|
||||
|
||||
|
||||
if [[ -n $REPOSITORY_UPDATE ]]; then
|
||||
|
||||
# select stable/beta configuration
|
||||
if [[ $BETA == yes ]]; then
|
||||
DEB_STORAGE=$DEST/debs-beta
|
||||
REPO_STORAGE=$DEST/repository-beta
|
||||
REPO_CONFIG="aptly-beta.conf"
|
||||
else
|
||||
DEB_STORAGE=$DEST/debs
|
||||
REPO_STORAGE=$DEST/repository
|
||||
REPO_CONFIG="aptly.conf"
|
||||
fi
|
||||
|
||||
# For user override
|
||||
if [[ -f "${USERPATCHES_PATH}"/lib.config ]]; then
|
||||
display_alert "Using user configuration override" "userpatches/lib.config" "info"
|
||||
source "${USERPATCHES_PATH}"/lib.config
|
||||
fi
|
||||
|
||||
repo-manipulate "$REPOSITORY_UPDATE"
|
||||
exit
|
||||
|
||||
fi
|
||||
|
||||
# if BUILD_OPT, KERNEL_CONFIGURE, BOARD, BRANCH or RELEASE are not set, display selection menu
|
||||
|
||||
|
||||
# if BUILD_OPT, KERNEL_CONFIGURE, BOARD, BRANCH or RELEASE are not set, display selection menu
|
||||
if [[ -z $BUILD_OPT ]]; then
|
||||
|
||||
options+=("u-boot" "U-boot package")
|
||||
@@ -132,35 +175,62 @@ if [[ -z $BUILD_OPT ]]; then
|
||||
|
||||
unset options
|
||||
[[ -z $BUILD_OPT ]] && exit_with_error "No option selected"
|
||||
[[ $BUILD_OPT == rootfs ]] && ROOT_FS_CREATE_ONLY="yes"
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
if [[ ${BUILD_OPT} =~ kernel|image ]]; then
|
||||
|
||||
if [[ -z $KERNEL_CONFIGURE ]]; then
|
||||
|
||||
options+=("no" "Do not change the kernel configuration")
|
||||
options+=("yes" "Show a kernel configuration menu before compilation")
|
||||
|
||||
menustr="Select the kernel configuration."
|
||||
KERNEL_CONFIGURE=$(whiptail --title "${titlestr}" --backtitle "$backtitle" --notags \
|
||||
--menu "${menustr}" $TTY_Y $TTY_X $((TTY_Y - 8)) \
|
||||
--cancel-button Exit --ok-button Select "${options[@]}" \
|
||||
3>&1 1>&2 2>&3)
|
||||
|
||||
unset options
|
||||
[[ -z $KERNEL_CONFIGURE ]] && exit_with_error "No option selected"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
if [[ -z $BOARD ]]; then
|
||||
|
||||
options+=("orangepir1" "Allwinner H2+ quad core 256MB RAM WiFi SPI 2xETH")
|
||||
options+=("orangepizero" "Allwinner H2+ quad core 256MB/512MB RAM WiFi SPI")
|
||||
options+=("orangepipc" "Allwinner H3 quad core 1GB RAM")
|
||||
options+=("orangepipcplus" "Allwinner H3 quad core 1GB RAM WiFi eMMC")
|
||||
options+=("orangepione" "Allwinner H3 quad core 512MB/1GB RAM")
|
||||
options+=("orangepilite" "Allwinner H3 quad core 512MB/1GB RAM WiFi")
|
||||
options+=("orangepiplus" "Allwinner H3 quad core 1GB/2GB RAM WiFi GBE eMMC")
|
||||
options+=("orangepiplus2e" "Allwinner H3 quad core 2GB RAM WiFi GBE eMMC")
|
||||
options+=("orangepizeroplus2h3" "Allwinner H3 quad core 512MB RAM WiFi/BT eMMC")
|
||||
options+=("orangepipch5" "Allwinner H5 quad core 1GB RAM")
|
||||
options+=("orangepipc2" "Allwinner H5 quad core 1GB RAM GBE SPI")
|
||||
options+=("orangepioneh5" "Allwinner H5 quad core 512MB/1GB RAM")
|
||||
options+=("orangepiprime" "Allwinner H5 quad core 2GB RAM GBE WiFi/BT")
|
||||
options+=("orangepizeroplus" "Allwinner H5 quad core 512MB RAM GBE WiFi SPI")
|
||||
options+=("orangepizeroplus2h5" "Allwinner H5 quad core 512MB RAM WiFi/BT eMMC")
|
||||
options+=("orangepi3" "Allwinner H6 quad core 1GB/2GB RAM GBE WiFi/BT-AP6256 eMMC USB3")
|
||||
options+=("orangepi3-lts" "Allwinner H6 quad core 2GB RAM GBE WiFi/BT-AW859A eMMC USB3")
|
||||
options+=("orangepilite2" "Allwinner H6 quad core 1GB RAM WiFi/BT USB3")
|
||||
options+=("orangepioneplus" "Allwinner H6 quad core 1GB RAM GBE")
|
||||
options+=("orangepizero2" "Allwinner H616 quad core 512MB/1GB RAM WiFi/BT GBE SPI")
|
||||
#options+=("orangepizero2-b" "Allwinner H616 quad core 1GB RAM WiFi/BT GBE SPI")
|
||||
#options+=("orangepizero2-lts" "Allwinner H616 quad core 1.5GB RAM WiFi/BT GBE SPI")
|
||||
options+=("orangepi4" "Rockchip RK3399 hexa core 4GB RAM GBE eMMc USB3 USB-C WiFi/BT")
|
||||
options+=("orangepir1plus" "Rockchip RK3328 quad core 1GB RAM 2xGBE 8211E USB2 SPI")
|
||||
options+=("orangepir1plus-lts" "Rockchip RK3328 quad core 1GB RAM 2xGBE YT8531C USB2 SPI")
|
||||
#options+=("orangepir1" "Allwinner H2+ quad core 256MB RAM WiFi SPI 2xETH")
|
||||
#options+=("orangepizero" "Allwinner H2+ quad core 256MB/512MB RAM WiFi SPI")
|
||||
#options+=("orangepipc" "Allwinner H3 quad core 1GB RAM")
|
||||
#options+=("orangepipcplus" "Allwinner H3 quad core 1GB RAM WiFi eMMC")
|
||||
#options+=("orangepione" "Allwinner H3 quad core 512MB RAM")
|
||||
#options+=("orangepilite" "Allwinner H3 quad core 512MB RAM WiFi")
|
||||
#options+=("orangepiplus" "Allwinner H3 quad core 1GB/2GB RAM WiFi GBE eMMC")
|
||||
#options+=("orangepiplus2e" "Allwinner H3 quad core 2GB RAM WiFi GBE eMMC")
|
||||
#options+=("orangepizeroplus2h3" "Allwinner H3 quad core 512MB RAM WiFi/BT eMMC")
|
||||
#options+=("orangepipch5" "Allwinner H5 quad core 1GB RAM")
|
||||
#options+=("orangepipc2" "Allwinner H5 quad core 1GB RAM GBE SPI")
|
||||
#options+=("orangepioneh5" "Allwinner H5 quad core 512MB/1GB RAM")
|
||||
#options+=("orangepiprime" "Allwinner H5 quad core 2GB RAM GBE WiFi/BT")
|
||||
#options+=("orangepizeroplus" "Allwinner H5 quad core 512MB RAM GBE WiFi SPI")
|
||||
#options+=("orangepizeroplus2h5" "Allwinner H5 quad core 512MB RAM WiFi/BT eMMC")
|
||||
#options+=("orangepi3" "Allwinner H6 quad core 1GB/2GB RAM GBE WiFi/BT eMMC USB3")
|
||||
options+=("orangepi3-lts" "Allwinner H6 quad core 2GB RAM GBE WiFi/BT-AW859A eMMC USB3")
|
||||
#options+=("orangepilite2" "Allwinner H6 quad core 1GB RAM WiFi/BT USB3")
|
||||
#options+=("orangepioneplus" "Allwinner H6 quad core 1GB RAM GBE")
|
||||
#options+=("orangepizero2" "Allwinner H616 quad core 512MB/1GB RAM WiFi/BT GBE SPI")
|
||||
#options+=("orangepizero2-b" "Allwinner H616 quad core 512MB/1GB RAM WiFi/BT GBE SPI")
|
||||
#options+=("orangepizero2-lts" "Allwinner H616 quad core 1.5GB RAM WiFi/BT GBE SPI")
|
||||
#options+=("orangepi400" "Allwinner H616 quad core 4GB RAM WiFi/BT GBE eMMC VGA")
|
||||
#options+=("orangepi4" "Rockchip RK3399 hexa core 4GB RAM GBE eMMC USB3 USB-C WiFi/BT")
|
||||
#options+=("orangepi800" "Rockchip RK3399 hexa core 4GB RAM GBE eMMC USB3 USB-C WiFi/BT VGA")
|
||||
options+=("orangepi4-lts" "Rockchip RK3399 hexa core 4GB RAM GBE eMMC USB3 USB-C WiFi/BT")
|
||||
#options+=("orangepir1plus" "Rockchip RK3328 quad core 1GB RAM 2xGBE USB2 SPI")
|
||||
|
||||
menustr="Please choose a Board."
|
||||
BOARD=$(whiptail --title "${titlestr}" --backtitle "${backtitle}" \
|
||||
@@ -181,147 +251,115 @@ LINUXFAMILY="${BOARDFAMILY}"
|
||||
|
||||
if [[ -z $BRANCH ]]; then
|
||||
|
||||
options=()
|
||||
[[ $KERNEL_TARGET == *current* ]] && options+=("current" "Mainline")
|
||||
[[ $KERNEL_TARGET == *legacy* ]] && options+=("legacy" "Old stable")
|
||||
[[ $KERNEL_TARGET == *dev* && $EXPERT = yes ]] && options+=("dev" "\Z1Development version (@kernel.org)\Zn")
|
||||
options=()
|
||||
[[ $KERNEL_TARGET == *current* ]] && options+=("current" "Recommended. Come with best support")
|
||||
[[ $KERNEL_TARGET == *legacy* ]] && options+=("legacy" "Old stable / Legacy")
|
||||
[[ $KERNEL_TARGET == *edge* && $EXPERT = yes ]] && options+=("edge" "\Z1Bleeding edge from @kernel.org\Zn")
|
||||
|
||||
menustr="Select the target kernel branch\nExact kernel versions depend on selected board"
|
||||
# do not display selection dialog if only one kernel branch is available
|
||||
if [[ "${#options[@]}" == 2 ]]; then
|
||||
BRANCH="${options[0]}"
|
||||
else
|
||||
menustr="Select the target kernel branch\nExact kernel versions depend on selected board"
|
||||
# do not display selection dialog if only one kernel branch is available
|
||||
if [[ "${#options[@]}" == 2 ]]; then
|
||||
BRANCH="${options[0]}"
|
||||
else
|
||||
BRANCH=$(whiptail --title "${titlestr}" --backtitle "${backtitle}" \
|
||||
--menu "${menustr}" "${TTY_Y}" "${TTY_X}" $((TTY_Y - 8)) \
|
||||
--cancel-button Exit --ok-button Select "${options[@]}" \
|
||||
3>&1 1>&2 2>&3)
|
||||
fi
|
||||
|
||||
unset options
|
||||
[[ -z $BRANCH ]] && exit_with_error "No kernel branch selected"
|
||||
fi
|
||||
unset options
|
||||
[[ -z $BRANCH ]] && exit_with_error "No kernel branch selected"
|
||||
[[ $BRANCH == dev && $SHOW_WARNING == yes ]] && show_developer_warning
|
||||
|
||||
else
|
||||
|
||||
[[ $KERNEL_TARGET != *$BRANCH* ]] && exit_with_error "Kernel branch not defined for this board" "$BRANCH"
|
||||
[[ $BRANCH == next ]] && KERNEL_TARGET="next"
|
||||
# next = new legacy. Should stay for backward compatibility, but be removed from menu above
|
||||
# or we left definitions in board configs and only remove menu
|
||||
[[ $KERNEL_TARGET != *$BRANCH* ]] && exit_with_error "Kernel branch not defined for this board" "$BRANCH"
|
||||
|
||||
fi
|
||||
|
||||
if [[ ${BUILD_OPT} == image || ${BUILD_OPT} == kernel ]]; then
|
||||
|
||||
if [[ -z $KERNEL_CONFIGURE ]]; then
|
||||
|
||||
options+=("no" "Do not change the kernel configuration")
|
||||
options+=("yes" "Show a kernel configuration menu before compilation")
|
||||
if [[ $BUILD_OPT =~ rootfs|image && -z $RELEASE ]]; then
|
||||
|
||||
menustr="Select the kernel configuration."
|
||||
KERNEL_CONFIGURE=$(whiptail --title "${titlestr}" --backtitle "$backtitle" --notags \
|
||||
--menu "${menustr}" $TTY_Y $TTY_X $((TTY_Y - 8)) \
|
||||
--cancel-button Exit --ok-button Select "${options[@]}" \
|
||||
3>&1 1>&2 2>&3)
|
||||
options=()
|
||||
|
||||
unset options
|
||||
[[ -z $KERNEL_CONFIGURE ]] && exit_with_error "No option selected"
|
||||
fi
|
||||
distros_options
|
||||
|
||||
menustr="Select the target OS release package base"
|
||||
RELEASE=$(whiptail --title "Choose a release package base" --backtitle "${backtitle}" \
|
||||
--menu "${menustr}" "${TTY_Y}" "${TTY_X}" $((TTY_Y - 8)) \
|
||||
--cancel-button Exit --ok-button Select "${options[@]}" \
|
||||
3>&1 1>&2 2>&3)
|
||||
#echo "options : ${options}"
|
||||
[[ -z $RELEASE ]] && exit_with_error "No release selected"
|
||||
|
||||
unset options
|
||||
fi
|
||||
|
||||
# define distribution support status
|
||||
declare -A distro_name
|
||||
distro_name['stretch']="Debian 9 Stretch"
|
||||
distro_name['buster']="Debian 10 Buster"
|
||||
distro_name['bullseye']="Debian 11 Bullseye"
|
||||
distro_name['xenial']="Ubuntu Xenial 16.04 LTS"
|
||||
distro_name['bionic']="Ubuntu Bionic 18.04 LTS"
|
||||
distro_name['focal']="Ubuntu Focal 20.04 LTS"
|
||||
distro_name['eoan']="Ubuntu Eoan 19.10"
|
||||
# don't show desktop option if we choose minimal build
|
||||
[[ $BUILD_MINIMAL == yes ]] && BUILD_DESKTOP=no
|
||||
|
||||
if [[ ${BUILD_OPT} == image || ${BUILD_OPT} == rootfs ]]; then
|
||||
if [[ $BUILD_OPT =~ rootfs|image && -z $BUILD_DESKTOP ]]; then
|
||||
|
||||
RELEASE_TARGET="stretch buster bullseye xenial bionic eoan focal"
|
||||
# read distribution support status which is written to the orangepi-release file
|
||||
set_distribution_status
|
||||
|
||||
if [[ -z $RELEASE ]]; then
|
||||
options=()
|
||||
options+=("no" "Image with console interface (server)")
|
||||
options+=("yes" "Image with desktop environment")
|
||||
|
||||
if [[ $BRANCH == legacy ]]; then
|
||||
|
||||
if [[ $LINUXFAMILY == sun50iw9 || $LINUXFAMILY == sun50iw6 ]]; then
|
||||
|
||||
RELEASE_TARGET="buster bionic focal"
|
||||
elif [[ $LINUXFAMILY == rk3399 ]]; then
|
||||
|
||||
RELEASE_TARGET="xenial bionic buster"
|
||||
else
|
||||
RELEASE_TARGET="xenial"
|
||||
fi
|
||||
|
||||
elif [[ $BRANCH == current ]]; then
|
||||
|
||||
RELEASE_TARGET="buster bionic focal"
|
||||
[[ $LINUXFAMILY == sun50iw6 ]] && RELEASE_TARGET="buster focal"
|
||||
else
|
||||
|
||||
[[ -z $BRANCH ]] && exit_with_error "No kernel branch selected"
|
||||
fi
|
||||
|
||||
distro_menu "stretch"
|
||||
distro_menu "buster"
|
||||
distro_menu "bullseye"
|
||||
distro_menu "xenial"
|
||||
distro_menu "bionic"
|
||||
distro_menu "eoan"
|
||||
distro_menu "focal"
|
||||
|
||||
menustr="Select the target OS release package base"
|
||||
RELEASE=$(whiptail --title "${titlestr}" --backtitle "${backtitle}" \
|
||||
--menu "${menustr}" "${TTY_Y}" "${TTY_X}" $((TTY_Y - 8)) \
|
||||
--cancel-button Exit --ok-button Select "${options[@]}" \
|
||||
3>&1 1>&2 2>&3)
|
||||
|
||||
unset options
|
||||
[[ -z $RELEASE ]] && exit_with_error "No option selected"
|
||||
menustr="Select the target image type"
|
||||
BUILD_DESKTOP=$(whiptail --title "Choose image type" --backtitle "${backtitle}" \
|
||||
--menu "${menustr}" "${TTY_Y}" "${TTY_X}" $((TTY_Y - 8)) \
|
||||
--cancel-button Exit --ok-button Select "${options[@]}" \
|
||||
3>&1 1>&2 2>&3)
|
||||
unset options
|
||||
[[ -z $BUILD_DESKTOP ]] && exit_with_error "No option selected"
|
||||
if [[ ${BUILD_DESKTOP} == "yes" ]]; then
|
||||
BUILD_MINIMAL=no
|
||||
SELECTED_CONFIGURATION="desktop"
|
||||
fi
|
||||
|
||||
# don't show desktop option if we choose minimal build
|
||||
[[ $BUILD_MINIMAL == yes ]] && BUILD_DESKTOP="no"
|
||||
fi
|
||||
|
||||
if [[ -z $BUILD_DESKTOP ]]; then
|
||||
if [[ $BUILD_OPT =~ rootfs|image && $BUILD_DESKTOP == no && -z $BUILD_MINIMAL ]]; then
|
||||
|
||||
options+=("no" "Image with console interface (server)")
|
||||
options+=("yes" "Image with desktop environment")
|
||||
|
||||
menustr="Select the target image type."
|
||||
BUILD_DESKTOP=$(whiptail --title "${titlestr}" --backtitle "${backtitle}" --notags \
|
||||
--menu "${menustr}" "${TTY_Y}" "${TTY_X}" $((TTY_Y - 8)) \
|
||||
--cancel-button Exit --ok-button Select "${options[@]}" \
|
||||
3>&1 1>&2 2>&3)
|
||||
|
||||
unset options
|
||||
[[ -z $BUILD_DESKTOP ]] && exit_with_error "No option selected"
|
||||
[[ $BUILD_DESKTOP == yes ]] && BUILD_MINIMAL="no"
|
||||
options=()
|
||||
options+=("no" "Standard image with console interface")
|
||||
options+=("yes" "Minimal image with console interface")
|
||||
menustr="Select the target image type"
|
||||
BUILD_MINIMAL=$(whiptail --title "Choose image type" --backtitle "${backtitle}" \
|
||||
--menu "${menustr}" "${TTY_Y}" "${TTY_X}" $((TTY_Y - 8)) \
|
||||
--cancel-button Exit --ok-button Select "${options[@]}" \
|
||||
3>&1 1>&2 2>&3)
|
||||
unset options
|
||||
[[ -z $BUILD_MINIMAL ]] && exit_with_error "No option selected"
|
||||
if [[ $BUILD_MINIMAL == "yes" ]]; then
|
||||
SELECTED_CONFIGURATION="cli_minimal"
|
||||
else
|
||||
SELECTED_CONFIGURATION="cli_standard"
|
||||
fi
|
||||
|
||||
if [[ $BUILD_DESKTOP == "no" && -z $BUILD_MINIMAL ]]; then
|
||||
|
||||
options+=("no" "Standard image with console interface")
|
||||
options+=("yes" "Minimal image with console interface")
|
||||
|
||||
menustr="Select the target image type."
|
||||
BUILD_MINIMAL=$(whiptail --title "${titlestr}" --backtitle "${backtitle}" --notags \
|
||||
--menu "${menustr}" "${TTY_Y}" "${TTY_X}" $((TTY_Y - 8)) \
|
||||
--cancel-button Exit --ok-button Select "${options[@]}" \
|
||||
3>&1 1>&2 2>&3)
|
||||
|
||||
unset options
|
||||
[[ -z $BUILD_MINIMAL ]] && exit_with_error "No option selected"
|
||||
fi
|
||||
fi
|
||||
|
||||
#prevent conflicting setup
|
||||
[[ $BUILD_DESKTOP == yes ]] && BUILD_MINIMAL=no
|
||||
[[ $BUILD_DESKTOP == yes ]] && IMAGETYPE="desktop"
|
||||
[[ $BUILD_DESKTOP == no ]] && IMAGETYPE="server"
|
||||
[[ $BUILD_MINIMAL == yes ]] && EXTERNAL_NEW=no
|
||||
if [[ $BUILD_DESKTOP == "yes" ]]; then
|
||||
BUILD_MINIMAL=no
|
||||
SELECTED_CONFIGURATION="desktop"
|
||||
elif [[ $BUILD_MINIMAL != "yes" || -z "${BUILD_MINIMAL}" ]]; then
|
||||
BUILD_MINIMAL=no # Just in case BUILD_MINIMAL is not defined
|
||||
BUILD_DESKTOP=no
|
||||
SELECTED_CONFIGURATION="cli_standard"
|
||||
elif [[ $BUILD_MINIMAL == "yes" ]]; then
|
||||
BUILD_DESKTOP=no
|
||||
SELECTED_CONFIGURATION="cli_minimal"
|
||||
fi
|
||||
|
||||
#[[ ${KERNEL_CONFIGURE} == prebuilt ]] && [[ -z ${REPOSITORY_INSTALL} ]] && \
|
||||
#REPOSITORY_INSTALL="u-boot,kernel,bsp,orangepi-zsh,orangepi-config,orangepi-firmware${BUILD_DESKTOP:+,orangepi-desktop}"
|
||||
|
||||
CONTAINER_COMPAT="no"
|
||||
[[ -z $COMPRESS_OUTPUTIMAGE ]] && COMPRESS_OUTPUTIMAGE="yes"
|
||||
|
||||
#shellcheck source=configuration.sh
|
||||
source "${SRC}"/scripts/configuration.sh
|
||||
@@ -338,10 +376,17 @@ else
|
||||
|
||||
fi
|
||||
|
||||
if [[ $BUILD_ALL == yes && -n $GPG_PASS ]]; then
|
||||
IMAGE_TYPE=stable
|
||||
call_extension_method "post_determine_cthreads" "config_post_determine_cthreads" << 'POST_DETERMINE_CTHREADS'
|
||||
*give config a chance modify CTHREADS programatically. A build server may work better with hyperthreads-1 for example.*
|
||||
Called early, before any compilation work starts.
|
||||
POST_DETERMINE_CTHREADS
|
||||
|
||||
if [[ $BETA == yes ]]; then
|
||||
IMAGE_TYPE=nightly
|
||||
elif [[ $BETA != "yes" && $BUILD_ALL == yes && -n $GPG_PASS ]]; then
|
||||
IMAGE_TYPE=stable
|
||||
else
|
||||
IMAGE_TYPE=user-built
|
||||
IMAGE_TYPE=user-built
|
||||
fi
|
||||
|
||||
branch2dir() {
|
||||
@@ -352,18 +397,15 @@ BOOTSOURCEDIR="${BOOTDIR}/$(branch2dir "${BOOTBRANCH}")"
|
||||
LINUXSOURCEDIR="${KERNELDIR}/$(branch2dir "${KERNELBRANCH}")"
|
||||
[[ -n $ATFSOURCE ]] && ATFSOURCEDIR="${ATFDIR}/$(branch2dir "${ATFBRANCH}")"
|
||||
|
||||
# The version of the Linux kernel
|
||||
#VER=$(grab_version "$LINUXSOURCEDIR")
|
||||
#KERNEL_NAME="linux${VER}"
|
||||
BSP_CLI_PACKAGE_NAME="orangepi-bsp-cli-${BOARD}"
|
||||
BSP_CLI_PACKAGE_FULLNAME="${BSP_CLI_PACKAGE_NAME}_${REVISION}_${ARCH}"
|
||||
BSP_DESKTOP_PACKAGE_NAME="orangepi-bsp-desktop-${BOARD}"
|
||||
BSP_DESKTOP_PACKAGE_FULLNAME="${BSP_DESKTOP_PACKAGE_NAME}_${REVISION}_${ARCH}"
|
||||
|
||||
# define package names
|
||||
DEB_BRANCH=${BRANCH//default}
|
||||
# if not empty, append hyphen
|
||||
DEB_BRANCH=${DEB_BRANCH:+${DEB_BRANCH}-}
|
||||
CHOSEN_UBOOT=linux-u-boot-${DEB_BRANCH}${BOARD}
|
||||
CHOSEN_KERNEL=linux-image-${DEB_BRANCH}${LINUXFAMILY}
|
||||
CHOSEN_ROOTFS=linux-${RELEASE}-root-${DEB_BRANCH}${BOARD}
|
||||
CHOSEN_DESKTOP=orangepi-${RELEASE}-desktop
|
||||
CHOSEN_UBOOT=linux-u-boot-${BRANCH}-${BOARD}
|
||||
CHOSEN_KERNEL=linux-image-${BRANCH}-${LINUXFAMILY}
|
||||
CHOSEN_ROOTFS=${BSP_CLI_PACKAGE_NAME}
|
||||
CHOSEN_DESKTOP=orangepi-${RELEASE}-desktop-${DESKTOP_ENVIRONMENT}
|
||||
CHOSEN_KSRC=linux-source-${BRANCH}-${LINUXFAMILY}
|
||||
|
||||
do_default() {
|
||||
@@ -374,31 +416,50 @@ start=$(date +%s)
|
||||
# The OFFLINE_WORK variable inside the function
|
||||
prepare_host
|
||||
|
||||
[[ "${JUST_INIT}" == "yes" ]] && exit 0
|
||||
|
||||
[[ $CLEAN_LEVEL == *sources* ]] && cleaning "sources"
|
||||
|
||||
# fetch_from_repo <url> <dir> <ref> <subdir_flag>
|
||||
|
||||
# ignore updates help on building all images - for internal purposes
|
||||
if [[ $IGNORE_UPDATES != yes ]]; then
|
||||
display_alert "Downloading sources" "" "info"
|
||||
if [[ ${IGNORE_UPDATES} != yes ]]; then
|
||||
|
||||
fetch_from_repo "$BOOTSOURCE" "$BOOTDIR" "$BOOTBRANCH" "yes"
|
||||
fetch_from_repo "$KERNELSOURCE" "$KERNELDIR" "$KERNELBRANCH" "yes"
|
||||
if [[ -n $ATFSOURCE ]]; then
|
||||
fetch_from_repo "$ATFSOURCE" "${EXTER}/cache/sources/$ATFDIR" "$ATFBRANCH" "yes"
|
||||
fi
|
||||
|
||||
fetch_from_repo "https://github.com/linux-sunxi/sunxi-tools" "${EXTER}/cache/sources/sunxi-tools" "branch:master"
|
||||
fetch_from_repo "https://github.com/armbian/rkbin" "${EXTER}/cache/sources/rkbin-tools" "branch:master"
|
||||
display_alert "Downloading sources" "" "info"
|
||||
|
||||
[[ $BUILD_OPT =~ u-boot|image ]] && fetch_from_repo "$BOOTSOURCE" "$BOOTDIR" "$BOOTBRANCH" "yes"
|
||||
[[ $BUILD_OPT =~ kernel|image ]] && fetch_from_repo "$KERNELSOURCE" "$KERNELDIR" "$KERNELBRANCH" "yes"
|
||||
|
||||
if [[ -n ${ATFSOURCE} ]]; then
|
||||
|
||||
[[ ${BUILD_OPT} =~ u-boot|image ]] && fetch_from_repo "$ATFSOURCE" "${EXTER}/cache/sources/$ATFDIR" "$ATFBRANCH" "yes"
|
||||
|
||||
if [[ $BOARD == orangepi4 ]]; then
|
||||
fetch_from_repo "https://github.com/orangepi-xunlong/rk3399_gst_xserver_libs.git" "${EXTER}/cache/sources/rk3399_gst_xserver_libs" "branch:main"
|
||||
fi
|
||||
|
||||
if [[ ${BOARD} =~ orangepi4|orangepi4-lts|orangepi800 && $BRANCH == legacy ]]; then
|
||||
|
||||
[[ $BUILD_OPT =~ image ]] && fetch_from_repo "https://github.com/orangepi-xunlong/rk3399_gst_xserver_libs.git" "${EXTER}/cache/sources/rk3399_gst_xserver_libs" "branch:main"
|
||||
|
||||
fi
|
||||
|
||||
if [[ ${BOARD} =~ orangepi4|orangepi4-lts|orangepi800 && $RELEASE =~ focal|buster|bullseye|bookworm ]]; then
|
||||
|
||||
[[ ${BUILD_OPT} == image ]] && fetch_from_repo "https://github.com/orangepi-xunlong/rk-rootfs-build.git" "${EXTER}/cache/sources/rk-rootfs-build-${RELEASE}" "branch:rk-rootfs-build-${RELEASE}"
|
||||
|
||||
fi
|
||||
|
||||
call_extension_method "fetch_sources_tools" <<- 'FETCH_SOURCES_TOOLS'
|
||||
*fetch host-side sources needed for tools and build*
|
||||
Run early to fetch_from_repo or otherwise obtain sources for needed tools.
|
||||
FETCH_SOURCES_TOOLS
|
||||
|
||||
call_extension_method "build_host_tools" <<- 'BUILD_HOST_TOOLS'
|
||||
*build needed tools for the build, host-side*
|
||||
After sources are fetched, build host-side tools needed for the build.
|
||||
BUILD_HOST_TOOLS
|
||||
|
||||
fi
|
||||
|
||||
compile_sunxi_tools
|
||||
install_rkbin_tools
|
||||
|
||||
for option in $(tr ',' ' ' <<< "$CLEAN_LEVEL"); do
|
||||
[[ $option != sources ]] && cleaning "$option"
|
||||
done
|
||||
@@ -414,6 +475,7 @@ if [[ $BUILD_OPT == u-boot || $BUILD_OPT == image ]]; then
|
||||
fi
|
||||
|
||||
if [[ $BUILD_OPT == "u-boot" ]]; then
|
||||
unset BUILD_MINIMAL BUILD_DESKTOP COMPRESS_OUTPUTIMAGE
|
||||
display_alert "U-boot build done" "@host" "info"
|
||||
display_alert "Target directory" "${DEB_STORAGE}/u-boot" "info"
|
||||
display_alert "File name" "${CHOSEN_UBOOT}_${REVISION}_${ARCH}.deb" "info"
|
||||
@@ -425,10 +487,12 @@ if [[ $BUILD_OPT == kernel || $BUILD_OPT == image ]]; then
|
||||
|
||||
if [[ ! -f ${DEB_STORAGE}/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb ]]; then
|
||||
|
||||
KDEB_CHANGELOG_DIST=$RELEASE
|
||||
[[ "${REPOSITORY_INSTALL}" != *kernel* ]] && compile_kernel
|
||||
fi
|
||||
|
||||
if [[ $BUILD_OPT == "kernel" ]]; then
|
||||
unset BUILD_MINIMAL BUILD_DESKTOP COMPRESS_OUTPUTIMAGE
|
||||
display_alert "Kernel build done" "@host" "info"
|
||||
display_alert "Target directory" "${DEB_STORAGE}/" "info"
|
||||
display_alert "File name" "${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb" "info"
|
||||
@@ -442,25 +506,53 @@ if [[ $BUILD_OPT == rootfs || $BUILD_OPT == image ]]; then
|
||||
|
||||
[[ "${REPOSITORY_INSTALL}" != *orangepi-config* ]] && compile_orangepi-config
|
||||
fi
|
||||
|
||||
if [[ ! -f ${DEB_STORAGE}/orangepi-firmware_${REVISION}_all.deb ]]; then
|
||||
|
||||
[[ "${REPOSITORY_INSTALL}" != *orangepi-firmware* ]] && compile_firmware
|
||||
|
||||
# Compile orangepi-zsh if packed .deb does not exist or use the one from repository
|
||||
if [[ ! -f ${DEB_STORAGE}/orangepi-zsh_${REVISION}_all.deb ]]; then
|
||||
|
||||
[[ "${REPOSITORY_INSTALL}" != *orangepi-zsh* ]] && compile_orangepi-zsh
|
||||
fi
|
||||
|
||||
|
||||
# Compile orangepi-firmware if packed .deb does not exist or use the one from repository
|
||||
|
||||
|
||||
if [[ "${REPOSITORY_INSTALL}" != *orangepi-firmware* ]]; then
|
||||
|
||||
if ! ls "${DEB_STORAGE}/orangepi-firmware_${REVISION}_all.deb" 1> /dev/null 2>&1; then
|
||||
|
||||
FULL=""
|
||||
REPLACE="-full"
|
||||
compile_firmware
|
||||
|
||||
fi
|
||||
|
||||
#if ! ls "${DEB_STORAGE}/orangepi-firmware-full_${REVISION}_all.deb" 1> /dev/null 2>&1; then
|
||||
|
||||
#FULL="-full"
|
||||
#REPLACE=""
|
||||
#compile_firmware
|
||||
|
||||
#fi
|
||||
|
||||
fi
|
||||
|
||||
overlayfs_wrapper "cleanup"
|
||||
|
||||
|
||||
|
||||
|
||||
# create board support package
|
||||
if [[ ! -f ${DEB_STORAGE}/$RELEASE/${CHOSEN_ROOTFS}_${REVISION}_${ARCH}.deb ]]; then
|
||||
|
||||
[[ "${REPOSITORY_INSTALL}" != *bsp* ]] && create_board_package
|
||||
fi
|
||||
|
||||
[[ -n $RELEASE && ! -f ${DEB_STORAGE}/$RELEASE/${BSP_CLI_PACKAGE_FULLNAME}.deb ]] && create_board_package
|
||||
|
||||
|
||||
|
||||
# create desktop package
|
||||
if [[ ! -f ${DEB_STORAGE}/$RELEASE/${CHOSEN_DESKTOP}_${REVISION}_all.deb ]]; then
|
||||
|
||||
[[ "${REPOSITORY_INSTALL}" != *orangepi-desktop* ]] && create_desktop_package
|
||||
fi
|
||||
#[[ -n $RELEASE && $DESKTOP_ENVIRONMENT && ! -f ${DEB_STORAGE}/$RELEASE/${CHOSEN_DESKTOP}_${REVISION}_all.deb ]] && create_desktop_package
|
||||
#[[ -n $RELEASE && $DESKTOP_ENVIRONMENT && ! -f ${DEB_STORAGE}/${RELEASE}/${BSP_DESKTOP_PACKAGE_FULLNAME}.deb ]] && create_bsp_desktop_package
|
||||
[[ -n $RELEASE && $DESKTOP_ENVIRONMENT ]] && create_desktop_package
|
||||
[[ -n $RELEASE && $DESKTOP_ENVIRONMENT ]] && create_bsp_desktop_package
|
||||
|
||||
|
||||
|
||||
# build additional packages
|
||||
[[ $EXTERNAL_NEW == compile ]] && chroot_build_packages
|
||||
@@ -485,8 +577,13 @@ $([[ -n $BUILD_OPT ]] && echo "BUILD_OPT=${BUILD_OPT} ")\
|
||||
$([[ -n $RELEASE ]] && echo "RELEASE=${RELEASE} ")\
|
||||
$([[ -n $BUILD_MINIMAL ]] && echo "BUILD_MINIMAL=${BUILD_MINIMAL} ")\
|
||||
$([[ -n $BUILD_DESKTOP ]] && echo "BUILD_DESKTOP=${BUILD_DESKTOP} ")\
|
||||
$([[ -n $KERNEL_CONFIGURE ]] && echo "KERNEL_CONFIGURE=${KERNEL_CONFIGURE}")\
|
||||
" "info"
|
||||
$([[ -n $KERNEL_CONFIGURE ]] && echo "KERNEL_CONFIGURE=${KERNEL_CONFIGURE} ")\
|
||||
$([[ -n $DESKTOP_ENVIRONMENT ]] && echo "DESKTOP_ENVIRONMENT=${DESKTOP_ENVIRONMENT} ")\
|
||||
$([[ -n $DESKTOP_ENVIRONMENT_CONFIG_NAME ]] && echo "DESKTOP_ENVIRONMENT_CONFIG_NAME=${DESKTOP_ENVIRONMENT_CONFIG_NAME} ")\
|
||||
$([[ -n $DESKTOP_APPGROUPS_SELECTED ]] && echo "DESKTOP_APPGROUPS_SELECTED=\"${DESKTOP_APPGROUPS_SELECTED}\" ")\
|
||||
$([[ -n $DESKTOP_APT_FLAGS_SELECTED ]] && echo "DESKTOP_APT_FLAGS_SELECTED=\"${DESKTOP_APT_FLAGS_SELECTED}\" ")\
|
||||
$([[ -n $COMPRESS_OUTPUTIMAGE ]] && echo "COMPRESS_OUTPUTIMAGE=${COMPRESS_OUTPUTIMAGE} ")\
|
||||
" "ext"
|
||||
|
||||
} # end of do_default()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user