2015-12-02 20:33:32 +01:00
|
|
|
#!/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 tool chain https://github.com/igorpecovnik/lib
|
|
|
|
#
|
|
|
|
#--------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
|
2016-07-27 13:37:23 +03:00
|
|
|
# Read build script documentation http://www.armbian.com/using-armbian-tools/
|
|
|
|
# for detailed explanation of these options and for additional options not listed here
|
2015-12-29 21:26:14 +03:00
|
|
|
|
2016-07-27 13:37:23 +03:00
|
|
|
KERNEL_ONLY="" # leave empty to select each time, set to "yes" or "no" to skip dialog prompt
|
|
|
|
KERNEL_CONFIGURE="no" # change provided kernel configuration
|
2017-01-21 16:02:22 +03:00
|
|
|
CLEAN_LEVEL="make,debs,oldcache" # comma-separated list of clean targets: "make" = make clean for selected kernel and u-boot,
|
2016-07-27 13:37:23 +03:00
|
|
|
# "debs" = delete packages in "./output/debs" for current branch and family,
|
2017-01-21 16:02:22 +03:00
|
|
|
# "alldebs" = delete all packages in "./output/debs", "images" = delete "./output/images",
|
2016-07-27 13:37:23 +03:00
|
|
|
# "cache" = delete "./output/cache", "sources" = delete "./sources"
|
2017-01-21 16:02:22 +03:00
|
|
|
# "oldcache" = remove old cached rootfs except for the newest 6 files
|
2016-07-27 13:37:23 +03:00
|
|
|
|
|
|
|
DEST_LANG="en_US.UTF-8" # sl_SI.UTF-8, en_US.UTF-8
|
2015-12-02 20:33:32 +01:00
|
|
|
|
|
|
|
# advanced
|
2016-07-27 13:37:23 +03:00
|
|
|
KERNEL_KEEP_CONFIG="no" # do not overwrite kernel config before compilation
|
|
|
|
EXTERNAL="yes" # build and install extra applications and drivers
|
2016-09-03 16:42:03 +03:00
|
|
|
EXTERNAL_NEW="prebuilt" # compile and install or install prebuilt additional packages
|
2017-01-04 16:53:18 +03:00
|
|
|
CREATE_PATCHES="no" # wait that you make changes to uboot and kernel source and creates patches
|
2016-07-27 13:37:23 +03:00
|
|
|
FORCE_CHECKOUT="yes" # ignore manual changes to source
|
|
|
|
BUILD_ALL="no" # cycle through available boards and make images or kernel/u-boot packages.
|
|
|
|
# set KERNEL_ONLY to "yes" or "no" to build all packages/all images
|
2016-01-09 16:26:45 +03:00
|
|
|
|
2017-01-04 16:53:18 +03:00
|
|
|
BETA="" # set yes to add subrevision with tomorrow's date. For internal use.
|
|
|
|
MULTITHREAD="" # build n images at once. For internal use.
|
|
|
|
|
2016-01-09 16:26:45 +03:00
|
|
|
# build script version to use
|
2016-07-27 13:37:23 +03:00
|
|
|
LIB_TAG="" # empty for latest version,
|
|
|
|
# one of listed here: https://github.com/igorpecovnik/lib/tags for stable versions,
|
|
|
|
# or commit hash
|
2015-12-02 20:33:32 +01:00
|
|
|
#--------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
|
2016-04-16 21:42:53 +03:00
|
|
|
# source is where compile.sh is located
|
2016-04-16 21:12:24 +02:00
|
|
|
SRC=$(pwd)
|
2015-12-02 20:33:32 +01:00
|
|
|
|
|
|
|
#--------------------------------------------------------------------------------------------------------------------------------
|
2016-07-27 16:27:29 +03:00
|
|
|
# To preserve proper libraries updating
|
2015-12-02 20:33:32 +01:00
|
|
|
#--------------------------------------------------------------------------------------------------------------------------------
|
2016-04-16 21:42:53 +03:00
|
|
|
if [[ -f $SRC/main.sh && -d $SRC/bin ]]; then
|
2016-03-17 20:16:26 +01:00
|
|
|
echo -e "[\e[0;31m error \x1B[0m] Copy this file one level up, alter and run again."
|
2016-07-27 13:37:23 +03:00
|
|
|
exit -1
|
2015-12-02 20:33:32 +01:00
|
|
|
fi
|
|
|
|
|
2015-12-29 21:26:14 +03:00
|
|
|
if [[ $EUID != 0 ]]; then
|
2015-12-07 16:55:53 +03:00
|
|
|
echo -e "[\e[0;35m warn \x1B[0m] This script requires root privileges"
|
|
|
|
sudo "$0" "$@"
|
2016-07-27 13:37:23 +03:00
|
|
|
exit $?
|
2015-12-07 16:55:53 +03:00
|
|
|
fi
|
2015-12-02 20:33:32 +01:00
|
|
|
|
|
|
|
#--------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
# Get updates of the main build libraries
|
|
|
|
#--------------------------------------------------------------------------------------------------------------------------------
|
2016-03-22 21:37:18 +03:00
|
|
|
[[ $(dpkg-query -W -f='${db:Status-Abbrev}\n' git 2>/dev/null) != *ii* ]] && \
|
|
|
|
apt-get -qq -y --no-install-recommends install git
|
|
|
|
|
2015-12-29 21:26:14 +03:00
|
|
|
if [[ ! -d $SRC/lib ]]; then
|
|
|
|
git clone https://github.com/igorpecovnik/lib
|
2015-12-02 20:33:32 +01:00
|
|
|
fi
|
2016-03-22 17:32:53 +03:00
|
|
|
cd $SRC/lib
|
|
|
|
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
|
2016-07-27 13:37:23 +03:00
|
|
|
echo -e "[\e[0;35m warn \x1B[0m] Can't update since you made changes to: \e[0;32m\n${CHANGED_FILES}\x1B[0m"
|
2016-03-22 17:32:53 +03:00
|
|
|
echo -e "Press \e[0;33m<Ctrl-C>\x1B[0m to abort compilation, \e[0;33m<Enter>\x1B[0m to ignore and continue"
|
|
|
|
read
|
|
|
|
else
|
|
|
|
git checkout ${LIB_TAG:- master}
|
|
|
|
fi
|
2016-03-19 08:54:56 +01:00
|
|
|
fi
|
2016-07-27 13:37:23 +03:00
|
|
|
|
|
|
|
# source additional configuration file
|
|
|
|
[[ -n $1 && -f $SRC/config-$1.conf ]] && source $SRC/config-$1.conf
|
|
|
|
|
2016-12-12 19:38:55 +01:00
|
|
|
# daily beta build contains date in subrevision
|
|
|
|
if [[ $BETA == yes ]]; then SUBREVISION="."$(date --date="tomorrow" +"%y%m%d"); fi
|
|
|
|
|
2016-04-16 21:42:53 +03:00
|
|
|
if [[ $BUILD_ALL == yes || $BUILD_ALL == demo ]]; then
|
2015-12-02 20:33:32 +01:00
|
|
|
source $SRC/lib/build-all.sh
|
|
|
|
else
|
|
|
|
source $SRC/lib/main.sh
|
|
|
|
fi
|
2015-12-08 23:27:23 +03:00
|
|
|
|
2016-07-27 13:42:54 +03:00
|
|
|
# hook for function to run after build, i.e. to change owner of $SRC
|
|
|
|
# NOTE: this will run only if there were no errors during build process
|
2016-07-27 21:10:33 +03:00
|
|
|
[[ $(type -t run_after_build) == function ]] && run_after_build || true
|
2016-07-27 13:42:54 +03:00
|
|
|
|
2015-12-09 00:07:52 +03:00
|
|
|
# If you are committing new version of this file, increment VERSION
|
2015-12-08 23:27:23 +03:00
|
|
|
# Only integers are supported
|
2016-12-12 19:38:55 +01:00
|
|
|
# VERSION=25
|