diff options
Diffstat (limited to 'lkft/common/build-aosp.sh')
-rwxr-xr-x | lkft/common/build-aosp.sh | 128 |
1 files changed, 78 insertions, 50 deletions
diff --git a/lkft/common/build-aosp.sh b/lkft/common/build-aosp.sh index 70461c678b..61be333f46 100755 --- a/lkft/common/build-aosp.sh +++ b/lkft/common/build-aosp.sh @@ -3,62 +3,53 @@ export PATH=${HOME}/bin:${PATH} export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8 -#BUILD_CONFIG_FILENAME=aosp-master-x15 -#KERNEL_REPO_URL=/data/android/aosp-mirror/kernel/omap.git -#OPT_MIRROR="-m /data/android/aosp-mirror/platform/manifest.git" -#BUILD_ROOT="/data/android/aosp/pure-master/test-x15-lkft" -#CLEAN_UP=false -#IN_JENKINS=false - BUILD_ROOT="${BUILD_ROOT:-/home/buildslave/srv/aosp-public}" OPT_MIRROR="${OPT_MIRROR:-}" CLEAN_UP=${CLEAN_UP:-true} -ANDROID_ROOT="${BUILD_ROOT}/build/aosp" -DIR_PUB_SRC="${BUILD_ROOT}/dist" +ANDROID_ROOT="${BUILD_ROOT}/build/aosp-${BUILD_NUMBER}" +KERNEL_ROOT="${BUILD_ROOT}/build/kernel-${BUILD_NUMBER}" +DIR_PUB_SRC="${BUILD_ROOT}/dist-${BUILD_NUMBER}" AOSP_REPO_BACKUP="${BUILD_ROOT}/aosp-repo-backup" ANDROID_IMAGE_FILES="boot.img dtb.img dtbo.img super.img vendor.img product.img system.img system_ext.img vbmeta.img userdata.img ramdisk.img ramdisk-debug.img recovery.img cache.img" ANDROID_IMAGE_FILES="${ANDROID_IMAGE_FILES} vendor_boot-debug.img vendor_boot.img" -# functions for clean the environemnt before repo sync and build function prepare_environment(){ if [ ! -d "${BUILD_ROOT}" ]; then sudo mkdir -p "${BUILD_ROOT}" sudo chmod 777 "${BUILD_ROOT}" fi cd "${BUILD_ROOT}" +} - # clean manifest files under ${ANDROID_ROOT} - rm -rf "${ANDROID_ROOT}/.repo/manifests" "${ANDROID_ROOT}/.repo/manifests.git" "${ANDROID_ROOT}/.repo/manifests.xml" "${ANDROID_ROOT}/.repo/local_manifests" "${ANDROID_ROOT}/build-tools" "${ANDROID_ROOT}/jenkins-tools" - - # clean the build directory as it is used accross multiple builds - # by removing all files except the .repo directory - if ${CLEAN_UP}; then - rm -fr "${AOSP_REPO_BACKUP}" - if [ -d "${ANDROID_ROOT}/.repo" ]; then - mv -f "${ANDROID_ROOT}/.repo" "${AOSP_REPO_BACKUP}" - fi - rm -fr "${ANDROID_ROOT}" && mkdir -p "${ANDROID_ROOT}" - if [ -d "${AOSP_REPO_BACKUP}" ]; then - mv -f "${AOSP_REPO_BACKUP}" "${ANDROID_ROOT}/.repo" - fi +############################################################### +# Build the kernel images that would be used for the userspace +# All operations following should be done under ${KERNEL_ROOT} +############################################################### +function build_kernel(){ + if [ -z "${KERNEL_BUILD_CONFIG}" ]; then + return fi + sudo rm -fr "${KERNEL_ROOT}" && mkdir -p "${KERNEL_ROOT}" && cd "${KERNEL_ROOT}" + wget https://android-git.linaro.org/android-build-configs.git/plain/lkft/linaro-lkft.sh?h=lkft -O linaro-lkft.sh + chmod +x linaro-lkft.sh + BUILD_KERNEL_WITH_UPSTREAM_BUILD=true ./linaro-lkft.sh -c "${KERNEL_BUILD_CONFIG}" -obk + cp -vf out/"${KERNEL_BUILD_CONFIG}"/pinned-manifest/*-pinned.xml "${DIR_PUB_SRC}/kernel-pinned-manifest.xml" + cp -vf "android-build-configs/lkft/${KERNEL_BUILD_CONFIG}" "${DIR_PUB_SRC}/${KERNEL_BUILD_CONFIG}" } - ############################################################### # Build Android userspace images # All operations following should be done under ${ANDROID_ROOT} ############################################################### function build_android(){ - mkdir -p "${ANDROID_ROOT}" && cd "${ANDROID_ROOT}" - rm -fr "${DIR_PUB_SRC}" && mkdir -p "${DIR_PUB_SRC}" + sudo rm -fr "${ANDROID_ROOT}" && mkdir -p "${ANDROID_ROOT}" && cd "${ANDROID_ROOT}" rm -fr "${ANDROID_ROOT}/out/pinned-manifest" rm -fr android-build-configs linaro-build.sh wget -c https://android-git.linaro.org/android-build-configs.git/plain/linaro-build.sh -O linaro-build.sh chmod +x linaro-build.sh if [ -n "${ANDROID_BUILD_CONFIG}" ]; then - bash -x ./linaro-build.sh -c "${ANDROID_BUILD_CONFIG}" + bash -ex ./linaro-build.sh -c "${ANDROID_BUILD_CONFIG}" # ${ANDROID_BUILD_CONFIG} will be repo synced after build # shellcheck source=/dev/null source "android-build-configs/${ANDROID_BUILD_CONFIG}" @@ -70,11 +61,17 @@ function build_android(){ [ -n "${MANIFEST_URL}" ] && opt_maniefst_url="-m ${MANIFEST_URL}" [ -n "${MAKE_TARGETS}" ] && export MAKE_TARGETS # shellcheck disable=SC2086 - bash -x ./linaro-build.sh -tp "${TARGET_PRODUCT}" ${opt_maniefst_url} ${opt_manfest_branch} + bash -ex ./linaro-build.sh -tp "${TARGET_PRODUCT}" ${opt_maniefst_url} ${opt_manfest_branch} + fi + if echo "${TARGET_PRODUCT}" | grep "trunk_staging"; then + # with the main branch, there are release information, like aosp_arm64-trunk_staging + TARGET_PRODUCT=$(echo "${TARGET_PRODUCT}"|cut -d- -f1) fi if [ "X${TARGET_PRODUCT}X" = "Xaosp_arm64X" ]; then - # for cts and vts + # for cts, vts, gsi DIR_PUB_SRC_PRODUCT="${ANDROID_ROOT}/out/target/product/generic_arm64" + elif [ "X${TARGET_PRODUCT}X" = "Xbeagle_x15_autoX" ]; then + DIR_PUB_SRC_PRODUCT="${ANDROID_ROOT}/out/target/product/beagle_x15" else DIR_PUB_SRC_PRODUCT="${ANDROID_ROOT}/out/target/product/${TARGET_PRODUCT}" fi @@ -91,8 +88,16 @@ function build_android(){ for f in ${PUBLISH_FILES}; do if [ "X${f}X" = "Xandroid-cts.zipX" ]; then f_src_path="${ANDROID_ROOT}/out/host/linux-x86/cts/android-cts.zip" + if [ "X${SPLIT_CTS}X" = "XtrueX" ]; then + split -b 4GB -d --additional-suffix=.split "${f_src_path}" "${f_src_path}." + # shellcheck disable=SC2086 + mv -vf ${f_src_path}.*.split "${DIR_PUB_SRC}/" + continue + fi elif [ "X${f}X" = "Xandroid-vts.zipX" ]; then f_src_path="${ANDROID_ROOT}/out/host/linux-x86/vts/android-vts.zip" + elif [ "X${f}X" = "Xuserdebug_plat_sepolicy.cilX" ]; then + f_src_path="${DIR_PUB_SRC_PRODUCT}/debug_ramdisk/${f}" else f_src_path="${DIR_PUB_SRC_PRODUCT}/${f}" fi @@ -103,7 +108,10 @@ function build_android(){ mv -vf "${f_src_path}" "${DIR_PUB_SRC}/${f}" fi - if [ "Xramdisk.img" = "X${f}" ] || [ "Xramdisk-debug.img" = "X${f}" ] || [ "Xandroid-cts.zip" = "X${f}" ] || [ "Xandroid-vts.zip" = "X${f}" ]; then + if [ "Xramdisk.img" = "X${f}" ] || [ "Xramdisk-debug.img" = "X${f}" ] \ + || [ "Xuserdebug_plat_sepolicy.cil" = "X${f}" ] \ + || [ "Xandroid-cts.zip" = "X${f}" ] \ + || [ "Xandroid-vts.zip" = "X${f}" ]; then # files no need to compress continue else @@ -131,42 +139,62 @@ function build_android(){ # clean workspace to save space function clean_workspace(){ - cd "${ANDROID_ROOT}" # Delete sources after build to save space - rm -rf art/ dalvik/ kernel/ bionic/ developers/ libcore/ sdk/ bootable/ development/ - rm -fr libnativehelper/ system/ build/ device/ test/ build-info/ docs/ packages/ - rm -fr toolchain/ .ccache/ external/ pdk/ tools/ compatibility/ frameworks/ - rm -fr platform_testing/ vendor/ cts/ hardware/ prebuilts/ + sudo rm -fr "${ANDROID_ROOT}" + sudo rm -fr "${KERNEL_ROOT}" } # export parameters for publish/job submission steps function export_parameters(){ - if [ "X${f}X" = "Xandroid-cts.zipX" ]; then - PUB_DEST_TARGET="android-cts" - elif [ "X${f}X" = "Xandroid-vts.zipX" ]; then - PUB_DEST_TARGET="android-vts" - elif [ "X${TARGET_PRODUCT}" = "Xbeagle_x15" ]; then - # beagle_x15 could not used as part of the url for snapshot site - PUB_DEST_TARGET=x15 - else - PUB_DEST_TARGET=${TARGET_PRODUCT} - fi - # Publish parameters # The pinned-manifest was copied into the publist directory as pinned-manifest.xml already cp -a "${DIR_PUB_SRC}/pinned-manifest.xml" "${WORKSPACE}/" - echo "PUB_DEST=android/lkft/${PUB_DEST_TARGET}/${BUILD_NUMBER}" > "${WORKSPACE}/publish_parameters" + + if [ -n "${PUB_DEST_PATH}" ]; then + PUB_DEST="${PUB_DEST_PATH}/${BUILD_NUMBER}" + else + if [ -n "${ANDROID_BUILD_CONFIG}" ]; then + PUB_DEST_TARGET="${ANDROID_BUILD_CONFIG}" + elif [ "X${f}X" = "Xandroid-cts.zipX" ]; then + PUB_DEST_TARGET="android-cts" + elif [ "X${f}X" = "Xandroid-vts.zipX" ]; then + PUB_DEST_TARGET="android-vts" + elif [ "X${TARGET_PRODUCT}" = "Xbeagle_x15" ]; then + # beagle_x15 could not used as part of the url for snapshot site + PUB_DEST_TARGET=x15 + else + PUB_DEST_TARGET=${TARGET_PRODUCT} + fi + PUB_DEST="android/lkft/${PUB_DEST_TARGET}/${BUILD_NUMBER}" + fi + + echo "PUB_DEST=${PUB_DEST}" > "${WORKSPACE}/publish_parameters" echo "PUB_SRC=${DIR_PUB_SRC}" >> "${WORKSPACE}/publish_parameters" - echo "PUB_EXTRA_INC=^[^/]+\.(txt|img|xz|dtb|dtbo|zip)$|MLO|vmlinux|System.map" >> "${WORKSPACE}/publish_parameters" + echo "PUB_EXTRA_INC=^[^/]+\.(txt|img|xz|dtb|dtbo|zip|split|cil)$|MLO|vmlinux|System.map" >> "${WORKSPACE}/publish_parameters" } function main(){ + # print for debug purpose + df -h + ls -l1d ${BUILD_ROOT}/build/* || true + ls -l1d ${BUILD_ROOT}/* || true + ################ prepare_environment + rm -fr "${DIR_PUB_SRC}" && mkdir -p "${DIR_PUB_SRC}" + if [ -n "${KERNEL_BUILD_CONFIG}" ]; then + build_kernel + export LOCAL_KERNEL_HOME=${KERNEL_ROOT}/out/${KERNEL_BUILD_CONFIG}/vendor-kernel/dist + kernel_ver=$(grep GKI_KERNEL_MAKEVERSION "${KERNEL_ROOT}/out/${KERNEL_BUILD_CONFIG}/misc_info.txt" | cut -d= -f2) + if [ -z "${kernel_ver}" ]; then + kernel_ver=$(grep VENDOR_KERNEL_MAKEVERSION "${KERNEL_ROOT}/out/${KERNEL_BUILD_CONFIG}/misc_info.txt" | cut -d= -f2 ) + fi + export TARGET_KERNEL_USE=${kernel_ver} + fi build_android if ${IN_JENKINS} && [ -n "${WORKSPACE}" ]; then - clean_workspace export_parameters + clean_workspace fi } |