From 211d57bdb4b4c14906a2e6b5702987ce5e05be72 Mon Sep 17 00:00:00 2001 From: guowenxue <guowenxue@gmail.com> Date: Mon, 05 Sep 2022 09:16:31 +0800 Subject: [PATCH] Add yocto build shell script --- yocto/build.sh | 192 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 192 insertions(+), 0 deletions(-) diff --git a/yocto/build.sh b/yocto/build.sh new file mode 100755 index 0000000..033ca00 --- /dev/null +++ b/yocto/build.sh @@ -0,0 +1,192 @@ +#!/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; + -- Gitblit v1.9.1