build/mk.sh

104 lines
2.5 KiB
Bash
Raw Normal View History

#!/bin/bash
set -e
if [ ! $# -eq 1 ]; then
echo "usage: $0 <product>"
exit 1
fi
PRODUCT="$1"
################################ basic setup ################################
BUILDROOT=$(pwd)
SCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
NUMJOBS=$(grep -e "^processor" /proc/cpuinfo | wc -l)
LAYERCONF="$SCRIPTDIR/product/${PRODUCT}.layers"
if [ ! -f "$LAYERCONF" ]; then
echo "Cannot find layer configuration for $PRODUCT"
exit 1
fi
PKGSRCDIR="$BUILDROOT/src"
PKGDOWNLOADDIR="$BUILDROOT/download"
PKGBUILDDIR="$BUILDROOT/$PRODUCT/build"
PKGDEPLOYDIR="$BUILDROOT/$PRODUCT/deploy"
PKGLOGDIR="$BUILDROOT/$PRODUCT/log"
PACKAGELIST="$BUILDROOT/$PRODUCT/pkglist"
REPODIR="$BUILDROOT/$PRODUCT/repo"
mkdir -p "$PKGDOWNLOADDIR" "$PKGSRCDIR" "$PKGLOGDIR" "$PKGDEPLOYDIR"
mkdir -p "$REPODIR"
pushd "$SCRIPTDIR" > /dev/null
OS_NAME="Pygos"
OS_RELEASE=$(git describe --always --tags --dirty)
popd > /dev/null
############################# include utilities ##############################
source "$SCRIPTDIR/util/depends.sh"
source "$SCRIPTDIR/util/download.sh"
source "$SCRIPTDIR/util/pkgcmd.sh"
source "$SCRIPTDIR/util/toolchain.sh"
source "$SCRIPTDIR/util/misc.sh"
source "$SCRIPTDIR/util/override.sh"
source "$SCRIPTDIR/util/autotools.sh"
############################## toolchain config ##############################
include_merge "TOOLCHAIN"
HOSTTUPLE=$($SCRIPTDIR/util/config.guess)
TCDIR="$BUILDROOT/$PRODUCT/toolchain"
export PATH="$TCDIR/bin:$PATH"
mkdir -p "$TCDIR/$TARGET" "$TCDIR/bin"
CMAKETCFILE="$TCDIR/toolchain.cmake"
############################### build packages ###############################
echo "--- resolving package dependencies ---"
include_pkg "$RELEASEPKG"
dependencies | tsort | tac > "$PACKAGELIST"
cat "$PACKAGELIST"
echo "--- downloading package files ---"
while read pkg; do
include_pkg "$pkg"
fetch_package
done < "$PACKAGELIST"
echo "--- building packages ---"
while read pkg; do
if [ ! -e "$PKGLOGDIR/.$pkg" ]; then
include_pkg "$pkg"
install_build_deps
run_pkg_command "build"
run_pkg_command "deploy"
deploy_dev_cleanup "$PKGDEPLOYDIR/$PKGNAME"
strip_files ${PKGDEPLOYDIR}/${PKGNAME}/{bin,lib}
restore_toolchain
if [ -d "$PKGDEPLOYDIR/$PKGNAME" ]; then
for f in $PKGDEPLOYDIR/$PKGNAME/*.desc; do
if [ ! -f "$f" ]; then
continue
fi
pkg pack -r "$REPODIR" -d "$f" -l $PKGDEPLOYDIR/$PKGNAME/$(basename "$f" .desc).files
done
fi
rm -rf "$PKGBUILDDIR"
touch "$PKGLOGDIR/.$pkg"
fi
done < "$PACKAGELIST"
echo "--- done ---"