author | TreeHugger Robot <treehugger-gerrit@google.com> | 2020-11-11 12:04:30 (GMT) |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-11-11 12:04:30 (GMT) |
commit | ee96b72a40d6e8f018938dee6d0246f117593199 (patch) | |
tree | 205b0702fcdda988058880d5b79a5e06d2a798f8 | |
parent | 1c250cdbeca49321c8dec8990f184d38306a4e5b (diff) | |
parent | f833f56b913792380ea36a166b33b2b2b168d0fe (diff) | |
download | common-ee96b72a40d6e8f018938dee6d0246f117593199.zip common-ee96b72a40d6e8f018938dee6d0246f117593199.tar.gz common-ee96b72a40d6e8f018938dee6d0246f117593199.tar.bz2 |
Merge "gki: move internal modules to external for v2.0 requirement [3/4]" into r-tv-dev am: f833f56b91
Original change: undetermined
Change-Id: I27c1cb1fe69f9ebaa85e0ef7f29b2243e58d33dd
-rwxr-xr-x | kernelbuild/build.sh | 343 |
1 files changed, 200 insertions, 143 deletions
diff --git a/kernelbuild/build.sh b/kernelbuild/build.sh index ae6703c..2021d11 100755 --- a/kernelbuild/build.sh +++ b/kernelbuild/build.sh @@ -164,25 +164,25 @@ set -e # rel_path <to> <from> # Generate relative directory path to reach directory <to> from <from> function rel_path() { - local to=$1 - local from=$2 - local path= - local stem= - local prevstem= - [ -n "$to" ] || return 1 - [ -n "$from" ] || return 1 - to=$(readlink -e "$to") - from=$(readlink -e "$from") - [ -n "$to" ] || return 1 - [ -n "$from" ] || return 1 - stem=${from}/ - while [ "${to#$stem}" == "${to}" -a "${stem}" != "${prevstem}" ]; do - prevstem=$stem - stem=$(readlink -e "${stem}/..") - [ "${stem%/}" == "${stem}" ] && stem=${stem}/ - path=${path}../ - done - echo ${path}${to#$stem} + local to=$1 + local from=$2 + local path= + local stem= + local prevstem= + [ -n "$to" ] || return 1 + [ -n "$from" ] || return 1 + to=$(readlink -e "$to") + from=$(readlink -e "$from") + [ -n "$to" ] || return 1 + [ -n "$from" ] || return 1 + stem=${from}/ + while [ "${to#$stem}" == "${to}" -a "${stem}" != "${prevstem}" ]; do + prevstem=$stem + stem=$(readlink -e "${stem}/..") + [ "${stem%/}" == "${stem}" ] && stem=${stem}/ + path=${path}../ + done + echo ${path}${to#$stem} } export ROOT_DIR=$(readlink -f $(dirname $0)/../../../..) @@ -262,12 +262,49 @@ if [ -n "${PRE_DEFCONFIG_CMDS}" ]; then set +x fi +if [ $KERNEL_A32_SUPPORT ]; then +GKI_EXT_MODULE_CFG=${KERNEL_DIR}/arch/arm/configs/meson32_gki_module_config +else +GKI_EXT_MODULE_CFG=${KERNEL_DIR}/arch/arm64/configs/meson64_gki_module_config +fi + +function read_ext_module_config() { + ALL_LINE="" + while read LINE + do + if [[ $LINE != \#* && $LINE != "" ]]; then + ALL_LINE="$ALL_LINE"" ""$LINE" + fi + done < $1 + echo $ALL_LINE +} + +GKI_EXT_MODULE_CONFIG=$(read_ext_module_config $GKI_EXT_MODULE_CFG) + +export GKI_EXT_MODULE_CONFIG + +function read_ext_module_predefine() { + PRE_DEFINE="" + while read LINE + do + if [[ $LINE != \#* && $LINE != "" ]]; then + TMP_CFG=${LINE%=*} + PRE_DEFINE="$PRE_DEFINE"" -D""$TMP_CFG" + fi + done < $1 + echo $PRE_DEFINE +} + +GKI_EXT_MODULE_PREDEFINE=$(read_ext_module_predefine $GKI_EXT_MODULE_CFG) + +export GKI_EXT_MODULE_PREDEFINE + if [ -z "${SKIP_DEFCONFIG}" ] ; then set -x if [ $KERNEL_A32_SUPPORT ]; then (cd ${KERNEL_DIR} && make "${TOOL_ARGS[@]}" O=${OUT_DIR} ${MAKE_ARGS} meson64_a32_defconfig) else -cat ${KERNEL_DIR}/arch/arm64/configs/meson64_gki_defconfig ${KERNEL_DIR}/arch/arm64/configs/meson64_gki.fragment > ${KERNEL_DIR}/arch/arm64/configs/meson64_a64_gki_defconfig +cat ${KERNEL_DIR}/arch/arm64/configs/gki_defconfig ${KERNEL_DIR}/arch/arm64/configs/meson64_gki.fragment > ${KERNEL_DIR}/arch/arm64/configs/meson64_a64_gki_defconfig (cd ${KERNEL_DIR} && make "${TOOL_ARGS[@]}" O=${OUT_DIR} ${MAKE_ARGS} meson64_a64_gki_defconfig) fi set +x @@ -369,6 +406,12 @@ if [ -n "${BUILD_INITRAMFS}" -o -n "${IN_KERNEL_MODULES}" ]; then INSTALL_MOD_PATH=${MODULES_STAGING_DIR} ${MAKE_ARGS} modules_install) fi +# basic common modules build as extern +EXT_MODULES+="common/drivers/amlogic +common/sound/soc/amlogic +common/sound/soc/codecs/amlogic +" + if [[ -z "${SKIP_EXT_MODULES}" ]] && [[ -n "${EXT_MODULES}" ]]; then echo "========================================================" echo " Building external modules and installing them into staging directory" @@ -555,101 +598,101 @@ echo "========================================================" echo " Files copied to ${DIST_DIR}" if [ ! -z "${BUILD_BOOT_IMG}" ] ; then - echo "************build boot img***********" - if [ -z "${BOOT_IMAGE_HEADER_VERSION}" ]; then - BOOT_IMAGE_HEADER_VERSION="3" - fi - MKBOOTIMG_BASE_ADDR= - MKBOOTIMG_PAGE_SIZE= - MKBOOTIMG_BOOT_CMDLINE= - if [ -n "${BASE_ADDRESS}" ]; then - MKBOOTIMG_BASE_ADDR="--base ${BASE_ADDRESS}" - fi - if [ -n "${PAGE_SIZE}" ]; then - MKBOOTIMG_PAGE_SIZE="--pagesize ${PAGE_SIZE}" - fi - if [ -n "${KERNEL_CMDLINE}" ]; then - MKBOOTIMG_BOOT_CMDLINE="--cmdline \"${KERNEL_CMDLINE}\"" - fi - - DTB_FILE_LIST=$(find ${DIST_DIR} -name "*.dtb") - if [ -z "${DTB_FILE_LIST}" ]; then - echo "No *.dtb files found in ${DIST_DIR}" - exit 1 - fi - cat $DTB_FILE_LIST > ${DIST_DIR}/dtb.img - - set -x - MKBOOTIMG_RAMDISKS=() - for ramdisk in ${VENDOR_RAMDISK_BINARY} \ - "${MODULES_STAGING_DIR}/initramfs.cpio"; do - if [ -f "${DIST_DIR}/${ramdisk}" ]; then - MKBOOTIMG_RAMDISKS+=("${DIST_DIR}/${ramdisk}") - else - if [ -f "${ramdisk}" ]; then - MKBOOTIMG_RAMDISKS+=("${ramdisk}") - fi - fi - done - set +e # disable exiting of error so gzip -t can be handled properly - for ((i=0; i<"${#MKBOOTIMG_RAMDISKS[@]}"; i++)); do - TEST_GZIP=$(gzip -t "${MKBOOTIMG_RAMDISKS[$i]}" 2>&1 > /dev/null) - if [ "$?" -eq 0 ]; then - CPIO_NAME=$(echo "${MKBOOTIMG_RAMDISKS[$i]}" | sed -e 's/\(.\+\)\.[a-z]\+$/\1.cpio/') - gzip -cd "${MKBOOTIMG_RAMDISKS[$i]}" > ${CPIO_NAME} - MKBOOTIMG_RAMDISKS[$i]=${CPIO_NAME} - fi - done - set -e # re-enable exiting on errors - if [ "${#MKBOOTIMG_RAMDISKS[@]}" -gt 0 ]; then - cat ${MKBOOTIMG_RAMDISKS[*]} | gzip - > ${DIST_DIR}/ramdisk.gz - else - echo "No ramdisk found. Please provide a GKI and/or a vendor ramdisk." - exit 1 - fi - set -x - - if [ -z "${MKBOOTIMG_PATH}" ]; then - MKBOOTIMG_PATH="tools/mkbootimg/mkbootimg.py" - fi - if [ ! -f "$MKBOOTIMG_PATH" ]; then - echo "mkbootimg.py script not found. MKBOOTIMG_PATH = $MKBOOTIMG_PATH" - exit 1 - fi - - if [ ! -f "${DIST_DIR}/$KERNEL_BINARY" ]; then - echo "kernel binary(KERNEL_BINARY = $KERNEL_BINARY) not present in ${DIST_DIR}" - exit 1 - fi - - VENDOR_BOOT_ARGS= - MKBOOTIMG_BOOT_RAMDISK="--ramdisk ${DIST_DIR}/ramdisk.gz" - if [ "${BOOT_IMAGE_HEADER_VERSION}" -eq "3" ]; then - MKBOOTIMG_VENDOR_CMDLINE= - if [ -n "${KERNEL_VENDOR_CMDLINE}" ]; then - MKBOOTIMG_VENDOR_CMDLINE="--vendor_cmdline \"${KERNEL_VENDOR_CMDLINE}\"" - fi - - MKBOOTIMG_BOOT_RAMDISK= - if [ -f "${GKI_RAMDISK_PREBUILT_BINARY}" ]; then - MKBOOTIMG_BOOT_RAMDISK="--ramdisk ${GKI_RAMDISK_PREBUILT_BINARY}" - fi - - VENDOR_BOOT_ARGS="--vendor_boot ${DIST_DIR}/vendor_boot.img \ - --vendor_ramdisk ${DIST_DIR}/ramdisk.gz ${MKBOOTIMG_VENDOR_CMDLINE}" - fi - - # (b/141990457) Investigate parenthesis issue with MKBOOTIMG_BOOT_CMDLINE when - # executed outside of this "bash -c". - (set -x; bash -c "python $MKBOOTIMG_PATH --kernel ${DIST_DIR}/$KERNEL_BINARY \ - ${MKBOOTIMG_BOOT_RAMDISK} \ - --dtb ${DIST_DIR}/dtb.img --header_version $BOOT_IMAGE_HEADER_VERSION \ - ${MKBOOTIMG_BASE_ADDR} ${MKBOOTIMG_PAGE_SIZE} ${MKBOOTIMG_BOOT_CMDLINE} \ - -o ${DIST_DIR}/boot.img ${VENDOR_BOOT_ARGS}" - ) - - set +x - echo "boot image created at ${DIST_DIR}/boot.img" + echo "************build boot img***********" + if [ -z "${BOOT_IMAGE_HEADER_VERSION}" ]; then + BOOT_IMAGE_HEADER_VERSION="3" + fi + MKBOOTIMG_BASE_ADDR= + MKBOOTIMG_PAGE_SIZE= + MKBOOTIMG_BOOT_CMDLINE= + if [ -n "${BASE_ADDRESS}" ]; then + MKBOOTIMG_BASE_ADDR="--base ${BASE_ADDRESS}" + fi + if [ -n "${PAGE_SIZE}" ]; then + MKBOOTIMG_PAGE_SIZE="--pagesize ${PAGE_SIZE}" + fi + if [ -n "${KERNEL_CMDLINE}" ]; then + MKBOOTIMG_BOOT_CMDLINE="--cmdline \"${KERNEL_CMDLINE}\"" + fi + + DTB_FILE_LIST=$(find ${DIST_DIR} -name "*.dtb") + if [ -z "${DTB_FILE_LIST}" ]; then + echo "No *.dtb files found in ${DIST_DIR}" + exit 1 + fi + cat $DTB_FILE_LIST > ${DIST_DIR}/dtb.img + + set -x + MKBOOTIMG_RAMDISKS=() + for ramdisk in ${VENDOR_RAMDISK_BINARY} \ + "${MODULES_STAGING_DIR}/initramfs.cpio"; do + if [ -f "${DIST_DIR}/${ramdisk}" ]; then + MKBOOTIMG_RAMDISKS+=("${DIST_DIR}/${ramdisk}") + else + if [ -f "${ramdisk}" ]; then + MKBOOTIMG_RAMDISKS+=("${ramdisk}") + fi + fi + done + set +e # disable exiting of error so gzip -t can be handled properly + for ((i=0; i<"${#MKBOOTIMG_RAMDISKS[@]}"; i++)); do + TEST_GZIP=$(gzip -t "${MKBOOTIMG_RAMDISKS[$i]}" 2>&1 > /dev/null) + if [ "$?" -eq 0 ]; then + CPIO_NAME=$(echo "${MKBOOTIMG_RAMDISKS[$i]}" | sed -e 's/\(.\+\)\.[a-z]\+$/\1.cpio/') + gzip -cd "${MKBOOTIMG_RAMDISKS[$i]}" > ${CPIO_NAME} + MKBOOTIMG_RAMDISKS[$i]=${CPIO_NAME} + fi + done + set -e # re-enable exiting on errors + if [ "${#MKBOOTIMG_RAMDISKS[@]}" -gt 0 ]; then + cat ${MKBOOTIMG_RAMDISKS[*]} | gzip - > ${DIST_DIR}/ramdisk.gz + else + echo "No ramdisk found. Please provide a GKI and/or a vendor ramdisk." + exit 1 + fi + set -x + + if [ -z "${MKBOOTIMG_PATH}" ]; then + MKBOOTIMG_PATH="tools/mkbootimg/mkbootimg.py" + fi + if [ ! -f "$MKBOOTIMG_PATH" ]; then + echo "mkbootimg.py script not found. MKBOOTIMG_PATH = $MKBOOTIMG_PATH" + exit 1 + fi + + if [ ! -f "${DIST_DIR}/$KERNEL_BINARY" ]; then + echo "kernel binary(KERNEL_BINARY = $KERNEL_BINARY) not present in ${DIST_DIR}" + exit 1 + fi + + VENDOR_BOOT_ARGS= + MKBOOTIMG_BOOT_RAMDISK="--ramdisk ${DIST_DIR}/ramdisk.gz" + if [ "${BOOT_IMAGE_HEADER_VERSION}" -eq "3" ]; then + MKBOOTIMG_VENDOR_CMDLINE= + if [ -n "${KERNEL_VENDOR_CMDLINE}" ]; then + MKBOOTIMG_VENDOR_CMDLINE="--vendor_cmdline \"${KERNEL_VENDOR_CMDLINE}\"" + fi + + MKBOOTIMG_BOOT_RAMDISK= + if [ -f "${GKI_RAMDISK_PREBUILT_BINARY}" ]; then + MKBOOTIMG_BOOT_RAMDISK="--ramdisk ${GKI_RAMDISK_PREBUILT_BINARY}" + fi + + VENDOR_BOOT_ARGS="--vendor_boot ${DIST_DIR}/vendor_boot.img \ + --vendor_ramdisk ${DIST_DIR}/ramdisk.gz ${MKBOOTIMG_VENDOR_CMDLINE}" + fi + + # (b/141990457) Investigate parenthesis issue with MKBOOTIMG_BOOT_CMDLINE when + # executed outside of this "bash -c". + (set -x; bash -c "python $MKBOOTIMG_PATH --kernel ${DIST_DIR}/$KERNEL_BINARY \ + ${MKBOOTIMG_BOOT_RAMDISK} \ + --dtb ${DIST_DIR}/dtb.img --header_version $BOOT_IMAGE_HEADER_VERSION \ + ${MKBOOTIMG_BASE_ADDR} ${MKBOOTIMG_PAGE_SIZE} ${MKBOOTIMG_BOOT_CMDLINE} \ + -o ${DIST_DIR}/boot.img ${VENDOR_BOOT_ARGS}" + ) + + set +x + echo "boot image created at ${DIST_DIR}/boot.img" fi echo "========================================================" @@ -665,9 +708,9 @@ cp ${OUT_DIR}/../vendor_lib/firmware/video/* ${ROOT_DIR}/${PRODUCT_DIRNAME}-kern cp ${OUT_DIR}/../vendor_lib/optee* ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/lib/ cp ${OUT_DIR}/../vendor_lib/modules/* ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/lib/modules/ if [ $KERNEL_A32_SUPPORT ]; then - cp ${OUT_DIR}/arch/arm/boot/uImage ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/ + cp ${OUT_DIR}/arch/arm/boot/uImage ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/ else - cp ${OUT_DIR}/arch/arm64/boot/Image.gz ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/ + cp ${OUT_DIR}/arch/arm64/boot/Image.gz ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/ fi echo "====copy dtb====== ${KERNEL_DEVICETREE}" @@ -675,39 +718,39 @@ devicenum=$(echo "x${KERNEL_DEVICETREE}x" | awk '{print NF}') echo "=========devicenum: ${devicenum}" if [ ${devicenum} == 1 ]; then - echo "===single dts===" - if [ $KERNEL_A32_SUPPORT ]; then - cp -f ${OUT_DIR}/arch/arm/boot/dts/amlogic/${KERNEL_DEVICETREE}.dtb ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/${BOARD_DEVICENAME}.dtb - else - cp -f ${OUT_DIR}/arch/arm64/boot/dts/amlogic/${KERNEL_DEVICETREE}.dtb ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/${BOARD_DEVICENAME}.dtb - fi + echo "===single dts===" + if [ $KERNEL_A32_SUPPORT ]; then + cp -f ${OUT_DIR}/arch/arm/boot/dts/amlogic/${KERNEL_DEVICETREE}.dtb ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/${BOARD_DEVICENAME}.dtb + else + cp -f ${OUT_DIR}/arch/arm64/boot/dts/amlogic/${KERNEL_DEVICETREE}.dtb ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/${BOARD_DEVICENAME}.dtb + fi else - echo "===multi dts===" - mkdir -p ${OUT_DIR}/../multi_dts - for aDts in ${KERNEL_DEVICETREE}; do - if [ $KERNEL_A32_SUPPORT ]; then - cp ${OUT_DIR}/arch/arm/boot/dts/amlogic/$aDts.dtb ${OUT_DIR}/../multi_dts/ - else - cp ${OUT_DIR}/arch/arm64/boot/dts/amlogic/$aDts.dtb ${OUT_DIR}/../multi_dts/ - fi - done - ${DTBTOOL} -o ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/${BOARD_DEVICENAME}.dtb -p ${OUT_DIR}/scripts/dtc/ ${OUT_DIR}/../multi_dts/ - if [ $? -ne 0 ]; then - echo "build multi dts error" - exit 1 - fi + echo "===multi dts===" + mkdir -p ${OUT_DIR}/../multi_dts + for aDts in ${KERNEL_DEVICETREE}; do + if [ $KERNEL_A32_SUPPORT ]; then + cp ${OUT_DIR}/arch/arm/boot/dts/amlogic/$aDts.dtb ${OUT_DIR}/../multi_dts/ + else + cp ${OUT_DIR}/arch/arm64/boot/dts/amlogic/$aDts.dtb ${OUT_DIR}/../multi_dts/ + fi + done + ${DTBTOOL} -o ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/${BOARD_DEVICENAME}.dtb -p ${OUT_DIR}/scripts/dtc/ ${OUT_DIR}/../multi_dts/ + if [ $? -ne 0 ]; then + echo "build multi dts error" + exit 1 + fi fi echo "===build dtbo===" if [ $KERNEL_A32_SUPPORT ]; then - ${DTCTOOL} -@ -O dtb -o ${OUT_DIR}/${DTBO_DEVICETREE}.dtbo common/arch/arm/boot/dts/amlogic/${DTBO_DEVICETREE}.dts + ${DTCTOOL} -@ -O dtb -o ${OUT_DIR}/${DTBO_DEVICETREE}.dtbo common/arch/arm/boot/dts/amlogic/${DTBO_DEVICETREE}.dts else - ${DTCTOOL} -@ -O dtb -o ${OUT_DIR}/${DTBO_DEVICETREE}.dtbo common/arch/arm64/boot/dts/amlogic/${DTBO_DEVICETREE}.dts + ${DTCTOOL} -@ -O dtb -o ${OUT_DIR}/${DTBO_DEVICETREE}.dtbo common/arch/arm64/boot/dts/amlogic/${DTBO_DEVICETREE}.dts fi ${DTIMGTOOL} create ${ROOT_DIR}/${PRODUCT_DIRNAME}-kernel/5.4/dtbo.img ${OUT_DIR}/${DTBO_DEVICETREE}.dtbo if [ $? -ne 0 ]; then - echo "build dtbo error" - exit 1 + echo "build dtbo error" + exit 1 fi # No trace_printk use on build server build @@ -733,8 +776,22 @@ mkdir -p ${RAMDISK_TARGET}/lib/modules/symbols/ for loop in `find ${MODULES_STAGING_DIR}/lib/modules/*/kernel/ -type f | grep "\.ko$"` do - cp $loop ${RAMDISK_TARGET}/lib/modules/ - cp $loop ${RAMDISK_TARGET}/lib/modules/symbols/ + cp $loop ${RAMDISK_TARGET}/lib/modules/ + cp $loop ${RAMDISK_TARGET}/lib/modules/symbols/ +done + +# copy extra ko to ramdisk +for loop in `find ${COMMON_OUT_DIR}/common/drivers/amlogic/ -type f | grep "\.ko$"` +do + cp $loop ${RAMDISK_TARGET}/lib/modules/ + cp $loop ${RAMDISK_TARGET}/lib/modules/symbols/ +done + +# copy extra ko to ramdisk +for loop in `find ${COMMON_OUT_DIR}/common/sound/soc/ -type f | grep "\.ko$"` +do + cp $loop ${RAMDISK_TARGET}/lib/modules/ + cp $loop ${RAMDISK_TARGET}/lib/modules/symbols/ done ${CROSS_COMPILE}strip -d ${RAMDISK_TARGET}/lib/modules/*.ko |