用shell命令写打印log信息脚本信息

用shell命令写打印log信息脚本

下面让RK的编译脚本在编译u-boot kernel android update.img时分别用文件uboot.log kernel.log android.log package.log记录编译时产生的log信息
在这里插入图片描述
修改后的脚本如下:

#!/bin/bash
# if want to build u-boot :./build.sh -U 
# if want to build kernel :./build.sh -K 
# if want to build android :./build.sh -A 
# if want to build update.img : ./build.sh -u
usage()
{
    echo "USAGE: [-o] [-u] [-v VERSION_NAME]"
    echo "No ARGS means use default build option"
    echo "WHERE: -o = generate ota package       "
    echo "       -u = generate update.img        "
    echo "       -v = set build version name for output image folder"
    echo "       -U = build u-boot"
    echo "       -K = build kernel"
    echo "       -A = build android "
    exit 1
}

BUILD_UBOOT=false
BUILD_KERNEL=false
BUILD_ANDROID=false
BUILD_UPDATE_IMG=false
BUILD_OTA=false
BUILD_VARIANT=userdebug
########################下面是LOG创建定义所用到的宏######################
CUR_PATH=`pwd`                     #当前路径即代码根目录路径
LOG_FLID=$CUR_PATH/LOG    #下面我会使用mkdir命令在代码根目录路径下创建一个LOG目录
UBOOT_LOG_FILE=$LOG_FLID/uboot.log  #下面我会使用touch命令在LOG目录下创建uboot.log
KERNEL_LOG_FILE=$LOG_FLID/kernel.log  #下面我会使用touch命令在LOG目录下创建kernel.log
ANDROID_LOG_FILE=$LOG_FLID/android.log #下面我会使用touch命令在LOG目录下创建android.log
PACKAGE_LOG_FILE=$LOG_FLID/package.log #下面我会使用touch命令在LOG目录下创建package.log
UBOOT_LOG=`echo "tee -a $UBOOT_LOG_FILE"`  # tee -a 将log信息重定向追加到uboot.log
KERNEL_LOG=`echo "tee -a $KERNEL_LOG_FILE"`  # tee -a 将log信息重定向追加到kernel.log
ANDROID_LOG=`echo "tee -a $ANDROID_LOG_FILE"`  # tee -a 将log信息重定向追加到android.log
PACKAGE_LOG=`echo "tee -a $PACKAGE_LOG_FILE"` # tee -a 将log信息重定向追加到package.log
################################## log文件创建函数#########################################
########################## add :create log function start ##################################### 
function log_flie_creare(){

    echo "------> current path: $CUR_PATH" 
    if [    -d "$LOG_FLID"]; then   #如果根目录存在LOG目录
        echo "-----> clean log"
        rm -rvf $LOG_FLID/*  #删除LOG目录下所有内容
    else  #如果根目录不存在LOG目录
        echo "-----> create log folder"
        mkdir $LOG_FLID #在根目录下创建LOG目录
    fi
        touch $UBOOT_LOG_FILE #在LOG目录下创建uboot.log
        touch $KERNEL_LOG_FILE #在LOG目录下创建kernel.log
        touch $ANDROID_LOG_FILE #在LOG目录下创建android.log
        touch $PACKAGE_LOG_FILE #在LOG目录下创建package.log
}
######################### add :create log function end ########################################
# check pass argument
while getopts "UKAouv:" arg
do
    case $arg in
        U)
            echo "will build u-boot"
            BUILD_UBOOT=true
            ;;
        K)
            echo "will build kernel"
            BUILD_KERNEL=true
            ;;
        A)
            echo "will build android"
            BUILD_ANDROID=true
            ;;
        o)
            echo "will build ota package"
            BUILD_OTA=true
            ;;
        u)
            echo "will build update.img"
            BUILD_UPDATE_IMG=true
            ;;
        v)
            BUILD_VARIANT=$OPTARG
            ;;
        ?)
            usage ;;
    esac

done    
log_flie_creare #编译前执行log文件创建函数
source build/envsetup.sh >/dev/null && setpaths
TARGET_PRODUCT=`get_build_var TARGET_PRODUCT`

#set jdk version
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
# source environment and chose target product
DEVICE=`get_build_var TARGET_PRODUCT`
UBOOT_DEFCONFIG=rk3288_secure_defconfig
KERNEL_DEFCONFIG=rockchip_defconfig
KERNEL_DTS=rk3288-evb-android-rk808-edp-lvds 


echo "KERNEL_DTS : $KERNEL_DTS"
PACK_TOOL_DIR=RKTools/linux/Linux_Pack_Firmware
IMAGE_PATH=rockdev/Image-$TARGET_PRODUCT
export PROJECT_TOP=`gettop`

lunch $DEVICE-$BUILD_VARIANT | $ANDROID_LOG

PLATFORM_VERSION=`get_build_var PLATFORM_VERSION`
DATE=$(date  +%Y%m%d.%H%M)
STUB_PATH=Image/"$KERNEL_DTS"_"$PLATFORM_VERSION"_"$DATE"_RELEASE_TEST_$BUILD_VARIANT
STUB_PATH="$(echo $STUB_PATH | tr '[:lower:]' '[:upper:]')"
export STUB_PATH=$PROJECT_TOP/$STUB_PATH
export STUB_PATCH_PATH=$STUB_PATH/PATCHES

# build uboot
if [ "$BUILD_UBOOT" = true ] ; then
############ UBOOT_LOG 将log信息重定向追加到uboot.log#########################################
echo "start build uboot" | $UBOOT_LOG  
cd u-boot && make clean | $UBOOT_LOG
make $UBOOT_DEFCONFIG | $UBOOT_LOG
./mkv7.sh | $UBOOT_LOG
cd -
if [ $? -eq 0 ]; then
    echo "Build uboot ok!" | $UBOOT_LOG
else
    echo "Build uboot failed!" | $UBOOT_LOG
    exit 1
fi
fi

# build kernel
if [ "$BUILD_KERNEL" = true ] ; then
################################ #KERNEL_LOG 将log信息重定向追加到kernel.log##################
echo "Start build kernel" | $KERNEL_LOG 
cd kernel && make clean | $KERNEL_LOG
make ARCH=arm $KERNEL_DEFCONFIG | $KERNEL_LOG
make ARCH=arm $KERNEL_DTS.img -j24 | $KERNEL_LOG
cd -
if [ $? -eq 0 ]; then
    echo "Build kernel ok!" | $KERNEL_LOG
else
    echo "Build kernel failed!" | $KERNEL_LOG
    exit 1
fi
fi

# build android
if [ "$BUILD_ANDROID" = true ] ; then
##################################### ANDROID_LOG 将log信息重定向追加到android.log#######################################
echo "start build android" | $ANDROID_LOG  

make installclean -j8 | $ANDROID_LOG
make -j24 | $ANDROID_LOG
if [ $? -eq 0 ]; then
    echo "Build android ok!" | $ANDROID_LOG
else
    echo "Build android failed!" | $ANDROID_LOG
    exit 1
fi
fi

if [ "$BUILD_VARIANT" = user ] ; then
    if [ -e $PROJECT_TOP/build_back/system/build.prop ] ; then
        echo "restore system/build.prop"
        cp $PROJECT_TOP/build_back/system/build.prop $OUT/system/
    else
        echo "backup system/build.prop"
        mkdir -p $PROJECT_TOP/build_back/system
        cp $OUT/system/build.prop $PROJECT_TOP/build_back/system/build.prop
    fi
    if [ -e $PROJECT_TOP/build_back/system/etc/prop.default ] ; then
        echo "restore system/etc/prop.default"
        cp $PROJECT_TOP/build_back/system/etc/prop.default $OUT/system/etc/
    else
        echo "backup system/etc/prop.default"
        mkdir -p $PROJECT_TOP/build_back/system/etc
        cp $OUT/system/etc/prop.default $PROJECT_TOP/build_back/system/etc/prop.default
    fi
    if [ -e $PROJECT_TOP/build_back/vendor/build.prop ] ; then
        echo "restore vendor/build.prop"
        cp $PROJECT_TOP/build_back/vendor/build.prop $OUT/vendor/
    else
        echo "backup vendor/build.prop"
        mkdir -p $PROJECT_TOP/build_back/vendor
        cp $OUT/vendor/build.prop $PROJECT_TOP/build_back/vendor/build.prop
    fi
    if [ -e $PROJECT_TOP/build_back/vendor/default.prop ] ; then
        echo "restore vendor/default.prop"
        cp $PROJECT_TOP/build_back/vendor/default.prop $OUT/vendor/
    else
        echo "backup vendor/default.prop"
        mkdir -p $PROJECT_TOP/build_back/vendor
        cp $OUT/vendor/default.prop $PROJECT_TOP/build_back/vendor/default.prop
    fi
fi

# mkimage.sh
echo "make and copy android images" | $PACKAGE_LOG
./mkimage.sh | $PACKAGE_LOG
if [ $? -eq 0 ]; then
    echo "Make image ok!" | $PACKAGE_LOG
else
    echo "Make image failed!" | $PACKAGE_LOG
    exit 1
fi

# build ota_package
if [ "$BUILD_OTA" = true ] ; then
    INTERNAL_OTA_PACKAGE_OBJ_TARGET=obj/PACKAGING/target_files_intermediates/$TARGET_PRODUCT-target_files-*.zip
    INTERNAL_OTA_PACKAGE_TARGET=$TARGET_PRODUCT-ota-*.zip
    echo "generate ota package"
    make otapackage -j4
    ./mkimage.sh ota
    cp $OUT/$INTERNAL_OTA_PACKAGE_TARGET $IMAGE_PATH/
    cp $OUT/$INTERNAL_OTA_PACKAGE_OBJ_TARGET $IMAGE_PATH/
fi

# build update_image
if [ "$BUILD_UPDATE_IMG" = true ] ; then 
#########################################PACKAGE_LOG 将log信息重定向追加到package.log##############
	mkdir -p $PACK_TOOL_DIR/rockdev/Image/  | $PACKAGE_LOG 
	cp -f $IMAGE_PATH/* $PACK_TOOL_DIR/rockdev/Image/  | $PACKAGE_LOG

	echo "Make update.img" | $PACKAGE_LOG
	cd $PACK_TOOL_DIR/rockdev && ./mkupdate.sh | $PACKAGE_LOG
	if [ $? -eq 0 ]; then
		echo "Make update image ok!" | $PACKAGE_LOG
	else
		echo "Make update image failed!" | $PACKAGE_LOG
		exit 1
	fi

	cd -
	mv $PACK_TOOL_DIR/rockdev/update.img $IMAGE_PATH/ | $PACKAGE_LOG
	rm $PACK_TOOL_DIR/rockdev/Image -rf  | $PACKAGE_LOG
fi 

mkdir -p $STUB_PATH | $PACKAGE_LOG

#Generate patches
mkdir -p $STUB_PATCH_PATH && .repo/repo/repo forall -c "git diff > local_diff.patch" && (find . -name local_diff.patch -type f -size 0c| xargs rm) && (find . -path ./IMAGE -prune -o -name local_diff.patch | cpio -pdv $STUB_PATCH_PATH/)
if [ -d $STUB_PATCH_PATH/IMAGE ]; then
    rm $STUB_PATCH_PATH/IMAGE -rf
fi

#Copy stubs
# cp commit_id.xml $STUB_PATH/manifest_${DATE}.xml

mkdir -p $STUB_PATH/kernel  | $PACKAGE_LOG
cp kernel/.config $STUB_PATH/kernel | $PACKAGE_LOG
cp kernel/vmlinux $STUB_PATH/kernel | $PACKAGE_LOG

mkdir -p $STUB_PATH/IMAGES/  | $PACKAGE_LOG
cp $IMAGE_PATH/* $STUB_PATH/IMAGES/ | $PACKAGE_LOG
cp build.sh $STUB_PATH/build.sh | $PACKAGE_LOG
#Save build command info
echo "UBOOT:  defconfig: $UBOOT_DEFCONFIG" >> $STUB_PATH/build_cmd_info | $PACKAGE_LOG
echo "KERNEL: defconfig: $KERNEL_DEFCONFIG, dts: $KERNEL_DTS" >> $STUB_PATH/build_cmd_info | $PACKAGE_LOG
echo "ANDROID:$DEVICE-$BUILD_VARIANT" >> $STUB_PATH/build_cmd_info | $PACKAGE_LOG

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值