zoukankan      html  css  js  c++  java
  • nuvoton980 使用脚本自动化编译打包固件版本包(十一)

    #!/bin/sh
    echo "Generate Release Package for IOT-SC spi-nand boot......"
    
    cur_dir=$(pwd)
    uboot_dir=$cur_dir/u-boot-2016.11
    kernel_dir=$cur_dir/linux-4.4.y
    rootfs_dir=$cur_dir/rootfs
    rootfs_package_dir=$cur_dir/package
    doc_dir=$cur_dir/design
    yaffs2utils_dir=$cur_dir/yaffs2utils
    
    
    rootfs_bin=$cur_dir/rootfs.yaffs2
    
    
    uboot_svn_url="xxx/trunk/u-boot-2016.11"
    kernel_svn_url="xxx/trunk/linux-4.4.y"
    rootfs_package_svn_url="xxx/package"
    doc_svn_url="xxx/doc/design"
    yaffs2utils_svn_url="xxx/trunk/yaffs2utils"
    
    # need to export CROSS_COMPILER:
    command -v arm-nuvoton-linux-uclibcgnueabi-gcc  >/dev/null 2>&1 || { echo >&2 "I require arm-nuvoton-linux-uclibcgnueabi-gcc but it's not installed.  Aborting."; exit 1; }
    #export PATH=/home/vmuer/tmp/nuc980bsp/buildroot/output/host/usr/bin:$PATH
    
    # clean tmp dir
    [ -d $uboot_dir ]               &&  echo "rm $uboot_dir"           &&  rm  $uboot_dir          -rf
    [ -d $kernel_dir ]              &&  echo "rm $kernel_dir"          &&  rm $kernel_dir          -rf
    [ -d $rootfs_dir ]              &&  echo "rm $rootfs_dir"          &&  rm $rootfs_dir          -rf
    [ -d $doc_dir ]                 &&  echo "rm $doc_dir"             &&  rm $doc_dir             -rf
    [ -d $yaffs2utils_dir ]         &&  echo "rm $yaffs2utils_dir"     &&  rm $yaffs2utils_dir     -rf
    [ -d $rootfs_package_dir ]      &&  echo "rm $rootfs_package_dir"  &&  rm $rootfs_package_dir  -rf
    
    [ -f $rootfs_bin ]              &&  echo "rm $rootfs_bin"          &&  rm $rootfs_bin
    
    # check out relate code
    [ ! -d $cur_dir/image ] && mkdir $cur_dir/image -p
    
    echo "checkout $uboot_svn_url  source code"
    svn co -q $uboot_svn_url  $uboot_dir
    
    echo "checkout $kernel_svn_url  source code"
    svn co -q $kernel_svn_url $kernel_dir
    
    echo  "checkout $rootfs_package_svn_url code"
    svn co -q $rootfs_package_svn_url  $rootfs_package_dir
    
    echo  "checkout $doc_svn_url code"
    svn co -q $doc_svn_url  $doc_dir
    
    echo  "checkout $yaffs2utils_svn_url code"
    svn co -q $yaffs2utils_svn_url  $yaffs2utils_dir
    
    
    # compile uboot and kernel
    echo "compile uboot"
    cd $uboot_dir
    make nuc980_eth2uart_defconfig
    make
    cp spl/u-boot-spl.bin  ../image/
    cp u-boot.bin          ../image/
    cd -
    
    echo "compile kernel"
    cd $kernel_dir
    make nuc980_eth2uart_defconfig
    make uImage
    cd -
    
    #exit 1
    # generate rootfs
    echo  "generate rootfs"
    #mkdir  $rootfs_dir -p
    tar zxf  $rootfs_package_dir/rootfs.tar.gz -C  ./
    
    #exit 1
    # generate uboot kernel rootfs svn info
    uboot_svn_version=$(svn info $uboot_dir | grep "Last Changed Rev" | cut -d' ' -f 4)
    echo "uboot version: $uboot_svn_version"
    
    kernel_svn_version=$(svn info $kernel_dir | grep "Last Changed Rev" | cut -d' ' -f 4)
    echo "kernel version: $kernel_svn_version"
    
    rootfs_svn_version=$(svn info $rootfs_package_dir | grep "Last Changed Rev" | cut -d' ' -f 4)
    echo "rootfs version: $rootfs_svn_version"
    #exit 1
    
    # geterate armbian_uXXX_kXXX_rXXX-X.X.X.zip for release
    IOTX_VERSION_MAJOR="1"
    IOTX_VERSION_MINOR="1"
    dot="."
    
    release_dir=iot-sc_u${uboot_svn_version}_k${kernel_svn_version}_r${rootfs_svn_version}-${IOTX_VERSION_MAJOR}${dot}${IOTX_VERSION_MINOR}${dot}${rootfs_svn_version}-spi-nand
    mkdir $release_dir
    mkdir $release_dir/Release -p
    
    echo "generate iotx_version to  /etc/iotx_version"
    echo "${IOTX_VERSION_MAJOR}${dot}${IOTX_VERSION_MINOR}${dot}${rootfs_svn_version}"
    echo "${IOTX_VERSION_MAJOR}${dot}${IOTX_VERSION_MINOR}${dot}${rootfs_svn_version}"   >   ${rootfs_dir}/etc/iotx_version
    
    echo "generate build info to /etc/iotx_bindbuild_info"
    echo "uboot  version : $uboot_svn_version"     
    echo "kernel version : $kernel_svn_version"    
    echo "rootfs version : $rootfs_svn_version"  
    echo "uboot    version : $uboot_svn_version"     >   ${rootfs_dir}/etc/iotx_bindbuild_info
    echo "kernel   version : $kernel_svn_version"    >>  ${rootfs_dir}/etc/iotx_bindbuild_info
    echo "rootfs   version : $rootfs_svn_version"    >>  ${rootfs_dir}/etc/iotx_bindbuild_info
    
    cp  $cur_dir/image                           $release_dir/   -a
    cp  $doc_dir/IOT-SC-Release-Notes.pdf $release_dir/Release/
    
    
    echo  "generate rootfs.yaffs2"
    #generate rootfs
    ./yaffs2utils/mkyaffs2 --inband-tags -p 2048 -s 64 rootfs rootfs.yaffs2 && cp rootfs.yaffs2 $release_dir/image/
    cd ${cur_dir}
    
    
    echo  "generate ${release_dir}.zip"
    zip -r ${release_dir}.zip ${release_dir}

    最终生成的目录内容:如下所示:

    文件名称为:

    其名称包含了uboot kernel rootfs 对应的svn版本信息,有利于版本追述。

  • 相关阅读:
    LeetCode 88. Merge Sorted Array
    LeetCode 75. Sort Colors
    LeetCode 581. Shortest Unsorted Continuous Subarray
    LeetCode 20. Valid Parentheses
    LeetCode 53. Maximum Subarray
    LeetCode 461. Hamming Distance
    LeetCode 448. Find All Numbers Disappeared in an Array
    LeetCode 976. Largest Perimeter Triangle
    LeetCode 1295. Find Numbers with Even Number of Digits
    如何自学并且系统学习计算机网络?(知乎问答)
  • 原文地址:https://www.cnblogs.com/lianghong881018/p/12666328.html
Copyright © 2011-2022 走看看