#!/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 
 |