mirror of
https://github.com/motioneye-project/motioneyeos.git
synced 2025-04-19 12:57:16 +00:00
157 lines
4.6 KiB
Bash
Executable File
157 lines
4.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
if [ -z "$1" ]; then
|
|
echo "Usage: $0 <{board}|all|boards> [mkimage|mkrelease|clean-target|initramfs|make-targets...]"
|
|
echo " mkimage - creates the OS image (.img)"
|
|
echo " mkrelease - creates the compressed OS image (.img.gz, .img.xz)"
|
|
echo " clean-target - removes the target dir, preserving the package build dirs"
|
|
echo " initramfs - builds the initramfs image; extra arguments will be passed internally to BuildRoot"
|
|
echo ""
|
|
echo " for other make targets, see the BuildRoot manual"
|
|
exit 1
|
|
fi
|
|
|
|
set -e # exit at first error
|
|
|
|
board=$1
|
|
target=${*:2}
|
|
cd $(dirname $0)
|
|
basedir=$(pwd)
|
|
gzip=$(which pigz 2> /dev/null || which gzip 2> /dev/null)
|
|
|
|
# extra environment from local file
|
|
test -f $basedir/.build-env && source $basedir/.build-env
|
|
|
|
# OS name
|
|
if [ -n "$THINGOS_SHORT_NAME" ]; then
|
|
osname=$THINGOS_SHORT_NAME
|
|
else
|
|
osname=$(source $basedir/board/common/overlay/etc/version && echo $OS_SHORT_NAME)
|
|
fi
|
|
|
|
# OS version
|
|
if [ -n "$THINGOS_VERSION" ]; then
|
|
osversion=$THINGOS_VERSION
|
|
else
|
|
osversion=$(source $basedir/board/common/overlay/etc/version && echo $OS_VERSION)
|
|
fi
|
|
|
|
# when the special "boards" keyword is used for board, simply list all known boards
|
|
if [ "$board" == "boards" ]; then
|
|
boards=$(ls $basedir/configs/*_defconfig | grep -v initramfs | grep -oE '\w+_defconfig$' | cut -d '_' -f 1)
|
|
for b in $boards; do
|
|
echo $b
|
|
done
|
|
|
|
exit 0
|
|
fi
|
|
|
|
# when the special "all" keyword is used for board, all boards are processed, in turn
|
|
if [ "$board" == "all" ]; then
|
|
boards=$(ls $basedir/configs/*_defconfig | grep -v initramfs | grep -oE '\w+_defconfig$' | cut -d '_' -f 1)
|
|
for b in $boards; do
|
|
if ! $0 $b $target; then
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
exit 0
|
|
fi
|
|
|
|
outputdir=$basedir/output/$board
|
|
boarddir=$basedir/board/$board
|
|
|
|
if ! [ -f $basedir/configs/${board}_defconfig ]; then
|
|
echo "unknown board: $board"
|
|
exit 1
|
|
fi
|
|
|
|
function prepare_target_dir() {
|
|
if [ -L $outputdir/target/var/lib ]; then
|
|
rm $outputdir/target/var/lib
|
|
mkdir $outputdir/target/var/lib
|
|
fi
|
|
}
|
|
|
|
mkdir -p $outputdir
|
|
|
|
if ! [ -f $outputdir/.config ]; then
|
|
make O=$outputdir ${board}_defconfig
|
|
fi
|
|
|
|
if [ "$target" == "mkimage" ]; then
|
|
$boarddir/mkimage.sh
|
|
|
|
elif [ "$target" == "mkrelease" ]; then
|
|
test -f $outputdir/images/$osname-$board.img || $boarddir/mkimage.sh
|
|
cp $outputdir/images/$osname-$board.img $outputdir/images/$osname-$board-$osversion.img
|
|
|
|
echo "preparing compressed xz image"
|
|
rm -f $outputdir/images/$osname-$board-$osversion.img.xz
|
|
xz -6ek -T 0 $outputdir/images/$osname-$board-$osversion.img
|
|
echo "your xz image is ready at $outputdir/images/$osname-$board-$osversion.img.xz"
|
|
|
|
echo "preparing compressed gz image"
|
|
rm -f $outputdir/images/$osname-$board-$osversion.img.gz
|
|
$gzip $outputdir/images/$osname-$board-$osversion.img
|
|
echo "your gz image is ready at $outputdir/images/$osname-$board-$osversion.img.gz"
|
|
|
|
rm -f $outputdir/images/$osname-$board-$osversion.img
|
|
|
|
elif [ "$target" == "clean-target" ]; then
|
|
if [ -d $outputdir/target ]; then
|
|
echo "removing target directory"
|
|
rm -rf $outputdir/target/*
|
|
|
|
echo "removing staging directory"
|
|
rm -rf $outputdir/staging/*
|
|
|
|
echo "removing images directory"
|
|
rm -rf $outputdir/images/*
|
|
fi
|
|
|
|
if [ -d $outputdir/build ]; then
|
|
echo "removing .stamp_target_installed files"
|
|
find $outputdir/build -name .stamp_target_installed | xargs -r rm
|
|
|
|
echo "removing .stamp_staging_installed files"
|
|
find $outputdir/build -name .stamp_staging_installed | xargs -r rm
|
|
|
|
echo "removing .stamp_host_installed files"
|
|
find $outputdir/build -name .stamp_host_installed | xargs -r rm
|
|
|
|
echo "removing .stamp_images_installed files"
|
|
find $outputdir/build -name .stamp_images_installed | xargs -r rm
|
|
|
|
echo "removing linux kernel build dir"
|
|
make O=$outputdir linux-dirclean
|
|
fi
|
|
|
|
if [ -f $outputdir/.config ]; then
|
|
echo "removing .config file"
|
|
rm -f $outputdir/.config
|
|
fi
|
|
|
|
echo "target is clean"
|
|
|
|
elif [[ "$target" == initramfs* ]]; then
|
|
extra_args=${target:10}
|
|
$0 ${board}_initramfs $extra_args
|
|
if [ -z "$extra_args" ] && [ -x $boarddir/cpinitramfs.sh ]; then
|
|
IMG_DIR=$basedir/output/${board}_initramfs/images/ BOARD_DIR=$boarddir $boarddir/cpinitramfs.sh
|
|
fi
|
|
|
|
elif [ "$target" == "all" ]; then
|
|
prepare_target_dir
|
|
make O=$outputdir all
|
|
|
|
elif [ -n "$target" ]; then
|
|
prepare_target_dir
|
|
make O=$outputdir $target
|
|
|
|
else # if [ -z "$target ]
|
|
$0 $board all
|
|
echo "build successful"
|
|
fi
|
|
|