#!/bin/bash
|
# This shell script used to build yocto for igkbaord
|
|
BOARD=igkboard
|
VERSION=honister
|
|
PACKDIR=`pwd`/yocto_packets
|
|
WORKDIR=`pwd`/workspace-${VERSION}
|
YOCTO_SRC=imx-yocto-bsp
|
PRJ_PATH=${WORKDIR}/${YOCTO_SRC}
|
|
SRV_URL=http://weike-iot.com:2211/yocto/
|
YOCTO_TAR=${YOCTO_SRC}-${VERSION}.tar.xz
|
|
set -e
|
|
# display in red
|
function pr_error() {
|
echo -e "\033[40;31m --E-- $1 \033[0m"
|
}
|
|
# display in yellow
|
function pr_warn() {
|
echo -e "\033[40;33m --W-- $1 \033[0m"
|
}
|
|
# display in green
|
function pr_info() {
|
echo -e "\033[40;32m --I-- $1 \033[0m"
|
}
|
|
# decompress a packet to destination path
|
function do_unpack() {
|
tarball=$1
|
dstpath=`pwd`
|
|
if [[ $# == 2 ]] ; then
|
dstpath=$2
|
fi
|
|
pr_info "decompress $tarball"
|
|
case $tarball in
|
*.tar.gz)
|
tar -xzf $tarball -C $dstpath
|
;;
|
|
*.tar.bz2)
|
tar -xjf $tarball -C $dstpath
|
;;
|
|
*.tar.xz)
|
tar -xJf $tarball -C $dstpath
|
;;
|
|
*.tar)
|
tar -xf $tarball -C $dstpath
|
;;
|
|
*.zip)
|
unzip -qo $tarball -d $dstpath
|
;;
|
|
*)
|
pr_error "decompress Unsupport packet: $tarball"
|
return 1;
|
;;
|
esac
|
}
|
|
function do_fetch()
|
{
|
if [ -d $YOCTO_SRC ] ; then
|
pr_warn "$YOCTO_SRC fetched already."
|
return 0;
|
fi
|
|
if [ ! -f tarballs/$YOCTO_TAR ] ; then
|
mkdir -p tarballs/ && cd tarballs
|
wget $SRV_URL/$YOCTO_TAR
|
fi
|
|
cd $WORKDIR
|
do_unpack tarballs/$YOCTO_TAR
|
|
cd ${PRJ_PATH}
|
}
|
|
function do_patch()
|
{
|
if [ -d ${PRJ_PATH}/sources/meta-${BOARD} ] ; then
|
pr_warn "$YOCTO_SRC patch already."
|
return 0;
|
fi
|
|
cd ${PRJ_PATH}/sources
|
cp -af ${WORKDIR}/../${VERSION}/meta-${BOARD} .
|
|
sed -i "s|^DL_DIR.*|DL_DIR ?= \"${PACKDIR}\"|g" meta-${BOARD}/conf/local.conf
|
|
cd ${PRJ_PATH}
|
}
|
|
function do_build()
|
{
|
TARGET=linuxsys-image
|
|
pr_warn "Build ${YOCTO_SRC} for ${TARGET}."
|
|
cd ${PRJ_PATH}
|
|
if [ -f ${BOARD}/conf/local.conf ] ; then
|
pr_info "$YOCTO_SRC source poky."
|
source sources/poky/oe-init-build-env ${BOARD}
|
else
|
pr_info "$YOCTO_SRC source meta."
|
MACHINE=${BOARD} source sources/meta-${BOARD}/tools/${BOARD}-setup.sh -b ${BOARD}
|
fi
|
|
bitbake linuxsys-image
|
|
cd ${PRJ_PATH}
|
}
|
|
|
function do_install()
|
{
|
pr_warn "List yocto build output images."
|
|
cd $WORKDIR
|
|
set -x
|
ls $WORKDIR/imx-yocto-bsp/${BOARD}/tmp/deploy/images/igkboard/
|
set +x
|
}
|
|
function do_clean()
|
{
|
pr_warn "Clean ${YOCTO_SRC} source code"
|
|
rm -rf $WORKDIR
|
}
|
|
function do_usage()
|
{
|
echo ""
|
echo "Usage:"
|
echo " $0 [-b] [-c] [-h]"
|
echo " -b: download and build $PRJ_NAME"
|
echo " -c: clean the source code"
|
echo " -h: show this help message"
|
echo ""
|
exit;
|
}
|
|
while getopts "bch" OPTNAME
|
do
|
case "${OPTNAME}" in
|
"b")
|
break;
|
;;
|
|
"c")
|
do_clean
|
exit;
|
;;
|
|
"h")
|
do_usage
|
exit;
|
;;
|
|
"*")
|
do_usage
|
exit;
|
;;
|
esac
|
done
|
|
#defualt do build action
|
|
mkdir -p $WORKDIR
|
cd $WORKDIR
|
|
do_fetch
|
do_patch
|
do_build
|
do_install
|
|
exit;
|