We can't import keys without PGP suite installed. Adding. Add another check to install Docker automated only on Debian based distributions.
170 lines
5.7 KiB
Bash
Executable File
170 lines
5.7 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Copyright (c) 2015 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.
|
|
#
|
|
# This file is a part of the Armbian build script
|
|
# https://github.com/armbian/build/
|
|
|
|
# DO NOT EDIT THIS FILE
|
|
# use configuration files like config-default.conf to set the build configuration
|
|
# check Armbian documentation for more info
|
|
|
|
SRC="$(dirname "$(realpath "${BASH_SOURCE[0]}")")"
|
|
|
|
# check for whitespace in $SRC and exit for safety reasons
|
|
grep -q "[[:space:]]" <<<"${SRC}" && { echo "\"${SRC}\" contains whitespace. Not supported. Aborting." >&2 ; exit 1 ; }
|
|
|
|
cd "${SRC}" || exit
|
|
|
|
if [[ -f "${SRC}"/lib/general.sh ]]; then
|
|
# shellcheck source=lib/general.sh
|
|
source "${SRC}"/lib/general.sh
|
|
else
|
|
echo "Error: missing build directory structure"
|
|
echo "Please clone the full repository https://github.com/armbian/build/"
|
|
exit 255
|
|
fi
|
|
|
|
if [[ $EUID != 0 && "$1" != vagrant ]]; then
|
|
display_alert "This script requires root privileges, trying to use sudo" "" "wrn"
|
|
sudo "$SRC/compile.sh" "$@"
|
|
exit $?
|
|
fi
|
|
|
|
# Check for Vagrant
|
|
if [[ "$1" == vagrant && -z "$(which vagrant)" ]]; then
|
|
display_alert "Vagrant not installed." "Installing"
|
|
sudo apt-get update
|
|
sudo apt-get install -y vagrant virtualbox
|
|
fi
|
|
|
|
# Install Docker if not there but wanted. We cover only Debian based distro install. Else, manual Docker install is needed
|
|
if [[ "$1" == docker && -f /etc/debian_version && -z "$(which docker)" ]]; then
|
|
display_alert "Docker not installed." "Installing" "Info"
|
|
echo "deb https://download.docker.com/linux/$(lsb_release -is | awk '{print tolower($0)}') $(lsb_release -cs) edge" > /etc/apt/sources.list.d/docker.list
|
|
[[ ! $(which curl) ]] && apt-get update;apt-get install -y -qq --no-install-recommends curl gnupg
|
|
curl -fsSL "https://download.docker.com/linux/$(lsb_release -is | awk '{print tolower($0)}')/gpg" | apt-key add -qq - > /dev/null 2>&1
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
apt-get update
|
|
apt-get install -y -qq --no-install-recommends docker-ce
|
|
sudo "$SRC/compile.sh" "$@"
|
|
exit $?
|
|
fi
|
|
|
|
# Create userpatches directory if not exists
|
|
mkdir -p $SRC/userpatches
|
|
|
|
# Create example configs if none found in userpatches
|
|
if ! ls ${SRC}/userpatches/{config-example.conf,config-docker.conf,config-vagrant.conf} 1> /dev/null 2>&1; then
|
|
|
|
# Migrate old configs
|
|
if ls ${SRC}/*.conf 1> /dev/null 2>&1; then
|
|
display_alert "Migrate config files to userpatches directory" "all *.conf" "info"
|
|
cp "${SRC}"/*.conf "${SRC}"/userpatches || exit 1
|
|
rm "${SRC}"/*.conf
|
|
[[ ! -L "${SRC}"/userpatches/config-example.conf ]] && ln -fs config-example.conf "${SRC}"/userpatches/config-default.conf || exit 1
|
|
fi
|
|
|
|
display_alert "Create example config file using template" "config-default.conf" "info"
|
|
|
|
# Create example config
|
|
if [[ ! -f "${SRC}"/userpatches/config-example.conf ]]; then
|
|
cp "${SRC}"/config/templates/config-example.conf "${SRC}"/userpatches/config-example.conf || exit 1
|
|
ln -fs config-example.conf "${SRC}"/userpatches/config-default.conf || exit 1
|
|
fi
|
|
|
|
# Create Docker config
|
|
if [[ ! -f "${SRC}"/userpatches/config-docker.conf ]]; then
|
|
cp "${SRC}"/config/templates/config-docker.conf "${SRC}"/userpatches/config-docker.conf || exit 1
|
|
fi
|
|
|
|
# Create Docker file
|
|
if [[ ! -f "${SRC}"/userpatches/Dockerfile ]]; then
|
|
cp "${SRC}"/config/templates/Dockerfile "${SRC}"/userpatches/Dockerfile || exit 1
|
|
fi
|
|
|
|
# Create Vagrant config
|
|
if [[ ! -f "${SRC}"/userpatches/config-vagrant.conf ]]; then
|
|
cp "${SRC}"/config/templates/config-vagrant.conf "${SRC}"/userpatches/config-vagrant.conf || exit 1
|
|
fi
|
|
|
|
# Create Vagrant file
|
|
if [[ ! -f "${SRC}"/userpatches/Vagrantfile ]]; then
|
|
cp "${SRC}"/config/templates/Vagrantfile "${SRC}"/userpatches/Vagrantfile || exit 1
|
|
fi
|
|
|
|
fi
|
|
|
|
if [[ -z "$CONFIG" && -n "$1" && -f "${SRC}/userpatches/config-$1.conf" ]]; then
|
|
CONFIG="userpatches/config-$1.conf"
|
|
fi
|
|
|
|
# usind default if custom not found
|
|
if [[ -z "$CONFIG" && -f "${SRC}/userpatches/config-default.conf" ]]; then
|
|
CONFIG="userpatches/config-default.conf"
|
|
fi
|
|
|
|
# source build configuration file
|
|
CONFIG_FILE="$(realpath "$CONFIG")"
|
|
|
|
if [[ ! -f $CONFIG_FILE ]]; then
|
|
display_alert "Config file does not exist" "$CONFIG" "error"
|
|
exit 254
|
|
fi
|
|
|
|
CONFIG_PATH=$(dirname "$CONFIG_FILE")
|
|
|
|
display_alert "Using config file" "$CONFIG_FILE" "info"
|
|
pushd $CONFIG_PATH > /dev/null
|
|
# shellcheck source=/dev/null
|
|
source "$CONFIG_FILE"
|
|
popd > /dev/null
|
|
|
|
[[ -z "${USERPATCHES_PATH}" ]] && USERPATCHES_PATH="$CONFIG_PATH"
|
|
|
|
# Script parameters handling
|
|
for i in "$@"; do
|
|
if [[ $i == *=* ]]; then
|
|
parameter=${i%%=*}
|
|
value=${i##*=}
|
|
display_alert "Command line: setting $parameter to" "${value:-(empty)}" "info"
|
|
eval "$parameter=\"$value\""
|
|
fi
|
|
done
|
|
|
|
if [[ ! -f $SRC/.ignore_changes ]]; then
|
|
echo -e "[\e[0;32m o.k. \x1B[0m] This script will try to update"
|
|
git pull
|
|
CHANGED_FILES=$(git diff --name-only)
|
|
if [[ -n $CHANGED_FILES ]]; then
|
|
echo -e "[\e[0;35m warn \x1B[0m] Can't update since you made changes to: \e[0;32m\n${CHANGED_FILES}\x1B[0m"
|
|
while true; do
|
|
echo -e "Press \e[0;33m<Ctrl-C>\x1B[0m or \e[0;33mexit\x1B[0m to abort compilation, \e[0;33m<Enter>\x1B[0m to ignore and continue, \e[0;33mdiff\x1B[0m to display changes"
|
|
read -r
|
|
if [[ "$REPLY" == "diff" ]]; then
|
|
git diff
|
|
elif [[ "$REPLY" == "exit" ]]; then
|
|
exit 1
|
|
elif [[ "$REPLY" == "" ]]; then
|
|
break
|
|
else
|
|
echo "Unknown command!"
|
|
fi
|
|
done
|
|
else
|
|
git checkout "${LIB_TAG:-master}"
|
|
fi
|
|
fi
|
|
|
|
if [[ $BUILD_ALL == yes || $BUILD_ALL == demo ]]; then
|
|
# shellcheck source=lib/build-all-ng.sh
|
|
source "${SRC}"/lib/build-all-ng.sh
|
|
else
|
|
# shellcheck source=lib/main.sh
|
|
source "${SRC}"/lib/main.sh
|
|
fi
|