2 # build-all.sh - script to build all packages with a build order specified by buildorder.py
6 # Read settings from .termuxrc if existing
7 test -f
$HOME/.termuxrc
&& .
$HOME/.termuxrc
8 : ${TERMUX_TOPDIR:="$HOME/.termux-build"}
9 : ${TERMUX_ARCH:="aarch64"}
13 echo "Usage: ./build-all.sh [-a ARCH] [-d]"
14 echo "Build all packages."
15 echo " -a The architecture to build for: aarch64(default), arm, i686, x86_64 or all."
16 echo " -d Build with debug symbols."
20 while getopts :a
:hdDs option
; do
22 a
) TERMUX_ARCH
="$OPTARG";;
23 d
) TERMUX_DEBUG
='-d';;
28 if [ "$#" -ne
0 ]; then _show_usage
; fi
30 if [[ ! "$TERMUX_ARCH" =~ ^
(aarch64|arm|i686|x86_64
)$
]]; then
31 echo "ERROR: Invalid arch '$TERMUX_ARCH'" 1>&2
35 BUILDSCRIPT
=`dirname $0`/build-package.sh
36 BUILDALL_DIR
=$TERMUX_TOPDIR/_buildall-
$TERMUX_ARCH
37 BUILDORDER_FILE
=$BUILDALL_DIR/buildorder.txt
38 BUILDSTATUS_FILE
=$BUILDALL_DIR/buildstatus.txt
40 if [ -e
$BUILDORDER_FILE ]; then
41 echo "Using existing buildorder file: $BUILDORDER_FILE"
43 mkdir
-p
$BUILDALL_DIR
44 .
/scripts
/buildorder.py
> $BUILDORDER_FILE
46 if [ -e
$BUILDSTATUS_FILE ]; then
47 echo "Continuing build-all from: $BUILDSTATUS_FILE"
50 exec > >(tee -a
$BUILDALL_DIR/ALL.out
)
51 exec 2> >(tee -a
$BUILDALL_DIR/ALL.err
>&2)
52 trap "echo ERROR: See $BUILDALL_DIR/\${package}.err" ERR
54 for package_path
in `cat $BUILDORDER_FILE`; do
55 package
=`basename $package_path`
56 # Check build status (grepping is a bit crude, but it works)
57 if [ -e
$BUILDSTATUS_FILE ] && grep "^$package\$" $BUILDSTATUS_FILE >/dev
/null
; then
58 echo "Skipping $package"
62 echo -n
"Building $package... "
63 BUILD_START
=`date "+%s"`
64 bash
-x
$BUILDSCRIPT -a
$TERMUX_ARCH -s
$TERMUX_DEBUG $package \
65 > $BUILDALL_DIR/${package}.out
2> $BUILDALL_DIR/${package}.err
66 BUILD_END
=`date "+%s"`
67 BUILD_SECONDS
=$
(( $BUILD_END - $BUILD_START ))
68 echo "done in $BUILD_SECONDS"
71 echo "$package" >> $BUILDSTATUS_FILE
75 rm -f
$BUILDSTATUS_FILE