#/bin/bash ## # If you want to quickly build pac, you can use this shell script. # # Note : # In this process, uboot kernel and rootfs will not be compiled. # This process is just a packaging process. ## if [ "$(whoami)" = "root" ]; then echo "ERROR: do not use the BSP as root. Exiting..." exit 1 fi DISTRONAMESUFFIX=`echo $1 | awk -F+ '{print $2}'` IMAGENAMESUFFIX=`echo $1 | awk -F+ '{print $3}'` DISTRONAME=unisoc-`echo $1 | awk -F+ '{print $2}'` IMAGENAME=unisoc-`echo $1 | awk -F+ '{print $3}'`-image PROJECT_FLAG="OTHER" TMP1=`echo $1 | awk -F+ '{print $1}'` MACHINENAME=`echo $TMP1 | sed 's/_/-/g'` echo $MACHINENAME if [ "$XENIMAGENAME" == "" ]; then XENIMAGENAME=xen-dom0-image fi if [ "$IMAGENAME" == "" ]; then IMAGENAME=unisoc-console-image fi TMP4=`echo $1 | awk -F+ '{print $4}'` if [[ $2 == "" ]] || [[ $2 == "userdebug" ]]; then USERDEBUG="userdebug" elif [ $2 == "user" ]; then USERDEBUG="user" elif [ $2 == "eng" ]; then USERDEBUG="eng" else echo "USERDEBUG error $LINENO" exit 1 fi if [[ $TMP4 == "" ]] || [[ $TMP4 == "sec" ]]; then SECBOOT_ENABLE="sec" elif [ $TMP4 == "nosec" ]; then SECBOOT_ENABLE="nosec" fi echo "PAC: MACHINENAME=${MACHINENAME}, DISTRO=${DISTRONAME}, USERDEBUG=${USERDEBUG}, SECBOOT_ENABLE=${SECBOOT_ENABLE}" cd ../../ SOURCEROOT=$(pwd) MACHINECONF="${SOURCEROOT}/layers/meta-unisoc/conf/machine/${MACHINENAME}.conf" if [ -f ${MACHINECONF} ];then echo "${MACHINECONF} is read normally" else echo "Error: ${MACHINECONF} is not exsit" exit 1 fi if [ $SECBOOT_ENABLE == "sec" ];then SECURE_BOOT="SPRD" else SECURE_BOOT="NONE" fi echo "SECURE_BOOT = ${SECURE_BOOT}" PSS_FLAG=`awk -F= '/^PSS_FLAG/{print $2}' ${MACHINECONF}` echo "PSS_FLAG = ${PSS_FLAG}" if [ -z "$PSS_FLAG" ];then PSS_FLAG="false" elif [ $PSS_FLAG == \"PKCS1_PSS\" ];then PSS_FLAG="true" else PSS_FLAG="false" fi if [ ${MACHINENAME} == "udx710-module" ] || [ ${MACHINENAME} == "udx710-module-op" ]; then PROJECT_FLAG="ORCA_SECBOOT" echo "PROJECT_FLAG is ORCA" if [ $SECBOOT_ENABLE == "sec" ];then PSS_FLAG="true" echo "ORCA use pss" fi fi echo "PSS_FLAG = ${PSS_FLAG}" DATE="$(date +%Y%m%d:%H%M%S)" echo $DATE cd ${SOURCEROOT} export MACHINE=${MACHINENAME} && export DISTRO=${DISTRONAME} && source setup-environment build-${DISTRONAME} TMPPATHNAME=$(ls ${SOURCEROOT}/build-${DISTRONAME} | grep tmp) TMPPATH="$SOURCEROOT/build-$DISTRONAME/$TMPPATHNAME" SDKPATH="$TMPPATH/deploy/sdk" echo $TMPPATH IMAGEPATH="$TMPPATH/deploy/images/$MACHINENAME" DEPLOYPATH="$TMPPATH/deploy" RPMPACKAGEPATH="$TMPPATH/deploy/rpm" OUTPUT_PATH="$SOURCEROOT/out/target/product/$MACHINENAME" VENDOR_OS_PATH="$SOURCEROOT/prebuilts/os/ubuntu18.04_roc1_ai/" cd ${SOURCEROOT} cd ../ PACOUT_PATH=$(pwd) XENOUT_PATH="$PACOUT_PATH/xen_out/" echo $DEPLOYPATH echo $RPMPACKAGEPATH cd ${SOURCEROOT} # clean old folder for pac.sh rm -rf $OUTPUT_PATH mkdir -p ${OUTPUT_PATH}/archive_symbols/symbols.vmlinux cd $IMAGEPATH if [ -e boot.img ]; then echo "compresson boot.img" cp boot.img ${OUTPUT_PATH} else echo "There is no boot.img $LINENO" exit 1 fi if [ -e u-boot-${MACHINENAME}.bin ] || [ -e u-boot-${MACHINENAME}-sign.bin ]; then if [ -e u-boot-${MACHINENAME}.bin ]; then cp u-boot-${MACHINENAME}.bin ${OUTPUT_PATH}/u-boot.bin cp u-boot-${MACHINENAME}.bin ${OUTPUT_PATH}/fdl2.bin fi if [ -e u-boot-{MACHINENAME}-sign.bin ]; then cp u-boot-${MACHINENAME}-sign.bin ${OUTPUT_PATH}/u-boot-sign.bin cp u-boot-${MACHINENAME}-sign.bin ${OUTPUT_PATH}/fdl2-sign.bin fi else echo "There is no u-boot binary $LINENO" exit 1 fi if [ "${MACHINENAME}" == "hypUd710-car-xen" ] && [ -e ${XENIMAGENAME}-${MACHINENAME}.ext4.gz ]; then cp ${XENIMAGENAME}-${MACHINENAME}.ext4.gz ${OUTPUT_PATH}/rootfs.ext4.gz elif [ -e ${IMAGENAME}-${MACHINENAME}.ext4.gz ] || [ -e ${IMAGENAME}-${MACHINENAME}.ubifs ]; then if [ -e ${IMAGENAME}-${MACHINENAME}.ubifs ]; then cp ${IMAGENAME}-${MACHINENAME}.ubifs ${OUTPUT_PATH}/rootfs.ubifs fi if [ -e ${IMAGENAME}-${MACHINENAME}.ext4.gz ]; then cp ${IMAGENAME}-${MACHINENAME}.ext4.gz ${OUTPUT_PATH}/rootfs.ext4.gz fi else echo "There is no rootfs image $LINENO" exit 1 fi if [ -e ${IMAGENAME}-${MACHINENAME}.testdata.json ]; then cp ${IMAGENAME}-${MACHINENAME}.testdata.json ${OUTPUT_PATH}/${MACHINENAME}.json else echo "There is no json file $LINENO" exit 1 fi [ ! -f fdl1.bin ] || cp fdl1.bin ${OUTPUT_PATH}/fdl1.bin [ ! -f fdl1-sign.bin ] || cp fdl1-sign.bin ${OUTPUT_PATH}/fdl1-sign.bin [ ! -f u-boot-spl-16k.bin ] || cp u-boot-spl-16k.bin ${OUTPUT_PATH}/u-boot-spl-16k.bin [ ! -f u-boot-spl-16k-sign.bin ] || cp u-boot-spl-16k-sign.bin ${OUTPUT_PATH}/u-boot-spl-16k-sign.bin [ ! -f sml.bin ] || cp sml.bin ${OUTPUT_PATH}/sml.bin [ ! -f tos.bin ] || cp tos.bin ${OUTPUT_PATH}/tos.bin [ ! -f recovery.img ] || cp recovery.img ${OUTPUT_PATH}/recovery.img [ ! -f dt.img ] || cp dt.img ${OUTPUT_PATH}/dtb.img [ ! -f dtbo.img ] || cp dtbo.img ${OUTPUT_PATH}/dtbo.img [ ! -f xen-${MACHINENAME} ] || cp xen-${MACHINENAME} ${OUTPUT_PATH}/xen.bin cp ${IMAGENAME}-${MACHINENAME}.tar.gz ${OUTPUT_PATH}/${IMAGENAME}-${MACHINENAME}-rootfs.tgz cd $DEPLOYPATH PACKAGES_NAME="${MACHINENAME}_${DISTRONAME}-$USERDEBUG-packages.tgz" echo "PACKAGES_NAME is $PACKAGES_NAME" tar -h -cvzf $PACKAGES_NAME ipk/* mv $PACKAGES_NAME $OUTPUT_PATH BUILDPATHMACHINE=`echo ${MACHINENAME} | awk -F- '{print $1}'` WORKIMAGEPATHNAME="$(ls ${TMPPATH}/work | grep ^${BUILDPATHMACHINE})" WORKIMAGEPATH="${TMPPATH}/work/${WORKIMAGEPATHNAME}" KERNEL="$(ls ${WORKIMAGEPATH} | grep 'linux-unisoc' | grep -v 'recovery')" KERNELVERSIONPATH="${WORKIMAGEPATH}/${KERNEL}/$(ls ${WORKIMAGEPATH}/${KERNEL} | grep -v 'recovery')" VMLINUX_PATH=${KERNELVERSIONPATH}/image/boot KERNEL_RECOVERY="$(ls ${WORKIMAGEPATH} | grep 'linux-unisoc' | grep 'recovery')" KERNELVERSION_RECOVERYPATH="${WORKIMAGEPATH}/${KERNEL_RECOVERY}/$(ls ${WORKIMAGEPATH}/${KERNEL_RECOVERY})" VMLINUX_RECOVERYPATH=${KERNELVERSION_RECOVERYPATH}/image/boot cp ${VMLINUX_PATH}/vmlinux* ${OUTPUT_PATH}/archive_symbols/symbols.vmlinux cp ${VMLINUX_PATH}/config* ${OUTPUT_PATH}/archive_symbols/symbols.vmlinux/vmlinux.cfg cp ${VMLINUX_PATH}/System.map* ${OUTPUT_PATH}/archive_symbols/symbols.vmlinux/vmlinux.System.map cp ${VMLINUX_PATH}/Module.symvers* ${OUTPUT_PATH}/archive_symbols/symbols.vmlinux/vmlinux.Module.symvers mkdir -p ${OUTPUT_PATH}/archive_symbols/symbols.recovery cp ${VMLINUX_RECOVERYPATH}/vmlinux* ${OUTPUT_PATH}/archive_symbols/symbols.recovery/vmlinux cp ${VMLINUX_RECOVERYPATH}/config* ${OUTPUT_PATH}/archive_symbols/symbols.recovery/vmlinux.cfg cp ${VMLINUX_RECOVERYPATH}/System.map* ${OUTPUT_PATH}/archive_symbols/symbols.recovery/vmlinux.System.map cp ${VMLINUX_RECOVERYPATH}/Module.symvers* ${OUTPUT_PATH}/archive_symbols/symbols.recovery/vmlinux.Module.symvers UBOOTPATH="${WORKIMAGEPATH}/$(ls ${WORKIMAGEPATH} | grep ^'u-boot')" UBOOTVERSIONPATH="${UBOOTPATH}/$(ls ${UBOOTPATH})" UBOOTPATH="${UBOOTVERSIONPATH}/$(ls ${UBOOTVERSIONPATH} | grep ^'u-boot')" UBOOTSYMBOL="${UBOOTPATH}/u-boot" mkdir -p ${OUTPUT_PATH}/archive_symbols/symbols.system cp ${UBOOTSYMBOL} ${OUTPUT_PATH}/archive_symbols/symbols.system cp ${UBOOTPATH}/u-boot.* ${OUTPUT_PATH}/archive_symbols/symbols.system cp ${UBOOTPATH}/u-boot.map ${OUTPUT_PATH}/archive_symbols/symbols.system SMLSYMBOL="$(find ${TMPPATH}/work -name bl3[12].elf)" if [ -n "$SMLSYMBOL" ]; then cp ${SMLSYMBOL} ${OUTPUT_PATH}/archive_symbols/symbols.system fi TRUSTYSYMBOL="$(find ${TMPPATH}/work -name lk.elf)" if [ -n "$TRUSTYSYMBOL" ]; then cp ${TRUSTYSYMBOL} ${OUTPUT_PATH}/archive_symbols/symbols.system fi cp -arf ${SOURCEROOT}/prebuilts/pac-binary/${BUILDPATHMACHINE}/* ${OUTPUT_PATH}/ if [ -e $IMAGEPATH/userdata-${MACHINENAME}.ext4.gz ] || [ -e $IMAGEPATH/userdata-${MACHINENAME}.ubifs ]; then if [ -e $IMAGEPATH/userdata-${MACHINENAME}.ubifs ]; then cp $IMAGEPATH/userdata-${MACHINENAME}.ubifs ${OUTPUT_PATH}/userdata_b128k_p2k.img cp $IMAGEPATH/userdata-${MACHINENAME}.ubifs ${OUTPUT_PATH}/userdata_b256k_p4k.img fi if [ -e $IMAGEPATH/userdata-${MACHINENAME}.ext4.gz ]; then cp $IMAGEPATH/userdata-${MACHINENAME}.ext4.gz ${OUTPUT_PATH}/userdata.ext4.gz cd ${OUTPUT_PATH} && gunzip userdata.ext4.gz && mv userdata.ext4 userdata.img fi fi if [ -e $IMAGEPATH/prodnv-${MACHINENAME}.ext4.gz ] || [ -e $IMAGEPATH/prodnv-${MACHINENAME}.ubifs ]; then if [ -e $IMAGEPATH/prodnv-${MACHINENAME}.ubifs ]; then cp $IMAGEPATH/prodnv-${MACHINENAME}.ubifs ${OUTPUT_PATH}/prodnv_b128k_p2k.img cp $IMAGEPATH/prodnv-${MACHINENAME}.ubifs ${OUTPUT_PATH}/prodnv_b256k_p4k.img fi if [ -e $IMAGEPATH/prodnv-${MACHINENAME}.ext4.gz ]; then cp $IMAGEPATH/prodnv-${MACHINENAME}.ext4.gz ${OUTPUT_PATH}/prodnv.ext4.gz cd ${OUTPUT_PATH} && gunzip prodnv.ext4.gz && mv prodnv.ext4 prodnv.img fi fi cd ${SDKPATH} cp *.sh ${OUTPUT_PATH}/ cd ${OUTPUT_PATH}/ cp ${SOURCEROOT}/.repo/manifest.xml ${OUTPUT_PATH} ${SOURCEROOT}/prebuilts/scripts/packimage_scripts/packimage.sh ${OUTPUT_PATH} ${SOURCEROOT} ${SECURE_BOOT} ${PSS_FLAG} ${PROJECT_FLAG} if [ ! -d "$XENOUT_PATH" ]; then mkdir ${XENOUT_PATH} fi cp -rf ${OUTPUT_PATH}/* ${XENOUT_PATH} cd ${XENOUT_PATH} tar -h -zcvf ${MACHINENAME}_${DISTRONAME}-${USERDEBUG}.tar.gz *.bin *.img *.gz *.ubifs make_pac() { cd $XENOUT_PATH || return if [ -e rootfs.ext4.gz ]; then [ -e rootfs.ext4 ] && rm -rf rootfs.ext4 echo "Decompression rootfs.ext4.gz ..." gunzip -v rootfs.ext4.gz if [ $? != 0 ]; then echo "Decompression rootfs.ext4.gz is failure $LINENO" return else echo "Decompression rootfs.ext4.gz is successfull $LINENO" fi fi SCRIPTPATH=$SOURCEROOT/prebuilts/scripts/pac_script PACNAME=${MACHINENAME}_${DISTRONAME}-${USERDEBUG}.pac perl $SCRIPTPATH/mkpac.pl $PACNAME $SCRIPTPATH/${MACHINENAME}.cfg FlashParam gzip $PACNAME cd - } make_pac