From c6ad726c839d1b8486daa392fde9347b14f89f8b Mon Sep 17 00:00:00 2001 From: guowenxue <guowenxue@gmail.com> Date: Fri, 12 Nov 2021 22:53:08 +0800 Subject: [PATCH] add buildroot build shell script in tools/lintools/buildroot --- tools/lintools/buildroot/buildroot.sh | 129 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 129 insertions(+), 0 deletions(-) diff --git a/tools/lintools/buildroot/buildroot.sh b/tools/lintools/buildroot/buildroot.sh new file mode 100755 index 0000000..79bd705 --- /dev/null +++ b/tools/lintools/buildroot/buildroot.sh @@ -0,0 +1,129 @@ +#!/bin/bash + +LYFTP_PUB=http://weike-iot.com:2211/imx6ull/tools/lintools + +PRJ_PATH=`pwd` +WORK_SPACE=${HOME}/buildroot/ +INST_PATH=/opt/buildroot/cortexA7 + +BR_VER=buildroot-2021.02.7 +BR_PAK=${BR_VER}-packets +BR_TAR=${BR_PAK}.tar.bz2 + +BR_CONF=${BR_VER}-cortexA7.config + +JOBS=`cat /proc/cpuinfo | grep processor | wc -l` + +set -u +set -e + +if [ `id -u` == 0 ] ; then + echo "ERROR: This shell script shouldn't be excuted by root!" + exit ; +fi + +STAGE=0 +function msg_banner() +{ + STAGE=`expr $STAGE + 1` + + echo "" + echo "+---------------------------------------------+" + printf " Stage $STAGE: $1\n" + echo "+---------------------------------------------+" + echo "" +} + +function do_fetch() +{ + msg_banner "Fetch ${BR_VER} packets" + + if [ -d $BR_VER ] ; then + printf "\n\n -- ${BR_VER} fetched already -- \n\n" + return ; + fi + + if [ ! -s $BR_TAR ] ; then + printf "\n\n -- fetch ${BR_VER} packet -- \n\n" + wget ${LYFTP_PUB}/$BR_TAR + fi + + if [ ! -d $BR_PAK ] ; then + printf "\n\n -- decompress ${BR_TAR} packet -- \n\n" + tar -xjf ${BR_TAR} + fi + + printf "\n\n -- decompress ${BR_VER} -- \n\n" + tar -xjf ${BR_PAK}/buildroot/${BR_VER}.tar.bz2 + + mv ${BR_PAK} ${BR_VER}/dl +} + +function do_patch() +{ + msg_banner "Patch for ${BR_VER} " + + cd $BR_VER + + cp dl/buildroot/$BR_CONF .config + sed -i "s|^BR2_HOST_DIR=.*|BR2_HOST_DIR=\"${INST_PATH}\"|g" .config + + cd - +} + +function do_build() +{ + msg_banner "Build ${BR_VER} " + cd $BR_VER + + make -j ${JOBS} + + cd - +} + +function do_install() +{ + msg_banner "Install ${BR_VER} " + + # Packet and install crosstool + cd `dirname $INST_PATH` + tar -cjf ${PRJ_PATH}/${BR_VER}-`basename $INST_PATH`.tar.bz2 `basename $INST_PATH` + + # Install rootfs tarball + cp $WORK_SPACE/$BR_VER/output/images/rootfs.tar.bz2 ${PRJ_PATH}/rootfs_buildroot.tar.bz2 + + echo "" + echo " -- 1. Crosstool already installed to \"$INST_PATH\"."; + echo " -- 2. Crosstool and rootfs packet installed to \"$PRJ_PATH\""; + echo " -- 3. Build workspace path is \"$WORK_SPACE\", you can remove it now."; + echo "" +} + +function do_prepare() +{ + INST_DIR=`dirname $INST_PATH` + CUR_USER=`whoami` + + if [ ! -w $INST_DIR ] ; then + echo "" + echo "ERROR: Crosstool install path \"$INST_DIR\" not writable, please solve it by follow command: " + echo " sudo sh -c 'mkdir -p $INST_DIR && chown $CUR_USER.$CUR_USER $INST_DIR' " + echo "" + exit ; + fi + + echo " Switch work space to \"$WORK_SPACE\" " + mkdir -p $WORK_SPACE + cd $WORK_SPACE +} + +do_prepare + +do_fetch + +do_patch + +do_build + +do_install + -- Gitblit v1.9.1