- job: name: leg-virt-tianocore-edk2-upstream project-type: freestyle defaults: global logrotate: daysToKeep: 30 numToKeep: 30 properties: - authorization: anonymous: - job-read - job-extended-read - job-workspace linaro: - job-read - job-extended-read - job-build - job-cancel parameters: - string: name: BUNDLE_STREAM_NAME default: '/private/team/linaro/leg-edk2/' - string: name: LAVA_SERVER default: 'validation.linaro.org/RPC2/' disabled: false node: docker-xenial-amd64 display-name: 'Linaro EDK II - UEFI Continuous Integration (upstream)' scm: - git: url: https://github.com/tianocore/edk2.git refspec: +refs/heads/master:refs/remotes/origin/master name: origin branches: - refs/heads/master basedir: edk2 skip-tag: true shallow-clone: true clean: true wipe-workspace: false triggers: - pollscm: 'H/5 * * * *' wrappers: - timestamps - build-name: name: '#${BUILD_NUMBER}-${GIT_REVISION,length=8}' builders: - linaro-publish-token - shell: | #!/bin/bash set -ex trap cleanup_exit INT TERM EXIT cleanup_exit() { cd ${WORKSPACE} rm -rf out edk2/Build } # use the GCC 4.[89] toolchains that are already available on the build host export GCC48_AARCH64_PREFIX=${HOME}/srv/toolchain/arm64-tc-14.04/bin/aarch64-linux-gnu- export GCC48_ARM_PREFIX=${HOME}/srv/toolchain/arm-tc-14.04/bin/arm-linux-gnueabihf- export GCC49_AARCH64_PREFIX=${HOME}/srv/toolchain/arm64-tc-14.09/bin/aarch64-linux-gnu- export GCC49_ARM_PREFIX=${HOME}/srv/toolchain/arm-tc-14.09/bin/arm-linux-gnueabihf- # use Xenial's default cross toolchains as GCC5 export GCC5_AARCH64_PREFIX=aarch64-linux-gnu- export GCC5_ARM_PREFIX=arm-linux-gnueabihf- # reuse the binutils that ship with GCC 4.9 for the CLANG35 builds export CLANG35_AARCH64_PREFIX=${HOME}/srv/toolchain/arm64-tc-14.09/bin/aarch64-linux-gnu- export CLANG35_ARM_PREFIX=${HOME}/srv/toolchain/arm-tc-14.09/bin/arm-linux-gnueabihf- # now that we invoke Clang as the linker, it will look for $(TARGET)-ld on the path export PATH=$PATH:${HOME}/srv/toolchain/arm64-tc-14.09/bin:${HOME}/srv/toolchain/arm-tc-14.09/bin sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install -y --no-install-recommends clang python-requests zip libstdc++6:i386 zlib1g:i386 \ gcc-aarch64-linux-gnu gcc-arm-linux-gnueabihf export OUTDIR=${WORKSPACE}/out ( unset WORKSPACE NUM_THREADS=$((`getconf _NPROCESSORS_ONLN` + 1)) # Initialise the build environment cd edk2 git clean -dxf BaseTools/ make -C BaseTools source edksetup.sh # download and unpack the OpenSSL sources cd ${WORKSPACE}/CryptoPkg/Library/OpensslLib # capture the clone command (minus the trailing \r) from the HOWTO CLONE_CMD=$(grep 'git clone -b' OpenSSL-HOWTO.txt |sed 's/[ >]*\(.*\)\r/\1/') # clone the OpenSSL repo eval ${CLONE_CMD} --depth 1 cd ${WORKSPACE} for type in DEBUG RELEASE do for tc in GCC48 GCC49 GCC5 CLANG35 do mkdir -p ${OUTDIR}/QEMU-ARM/${type}_${tc} build -a ARM -t ${tc} -b ${type} -n $NUM_THREADS -p ArmVirtPkg/ArmVirtQemu.dsc -D SECURE_BOOT_ENABLE cp Build/ArmVirtQemu-ARM/${type}_${tc}/FV/QEMU_EFI.fd ${OUTDIR}/QEMU-ARM/${type}_${tc} mkdir -p ${OUTDIR}/QEMU-AARCH64/${type}_${tc} build -a AARCH64 -t ${tc} -b ${type} -n $NUM_THREADS -p ArmVirtPkg/ArmVirtQemu.dsc -D SECURE_BOOT_ENABLE cp Build/ArmVirtQemu-AARCH64/${type}_${tc}/FV/QEMU_EFI.fd ${OUTDIR}/QEMU-AARCH64/${type}_${tc} mkdir -p ${OUTDIR}/QEMU-KERNEL-AARCH64/${type}_${tc} build -a AARCH64 -t ${tc} -b ${type} -n $NUM_THREADS -p ArmVirtPkg/ArmVirtQemuKernel.dsc -D SECURE_BOOT_ENABLE cp Build/ArmVirtQemuKernel-AARCH64/${type}_${tc}/FV/QEMU_EFI.fd ${OUTDIR}/QEMU-KERNEL-AARCH64/${type}_${tc} mkdir -p ${OUTDIR}/XEN-ARM/${type}_${tc} build -a ARM -t ${tc} -b ${type} -n $NUM_THREADS -p ArmVirtPkg/ArmVirtXen.dsc cp Build/ArmVirtXen-ARM/${type}_${tc}/FV/XEN_EFI.fd ${OUTDIR}/XEN-ARM/${type}_${tc} mkdir -p ${OUTDIR}/XEN-AARCH64/${type}_${tc} build -a AARCH64 -t ${tc} -b ${type} -n $NUM_THREADS -p ArmVirtPkg/ArmVirtXen.dsc cp Build/ArmVirtXen-AARCH64/${type}_${tc}/FV/XEN_EFI.fd ${OUTDIR}/XEN-AARCH64/${type}_${tc} done done ) find out -name '*QEMU_EFI.fd' -exec bash -c 'in=${1}; out=${in%fd}img; cat $in /dev/zero | dd iflag=fullblock bs=1M count=64 of=$out; gzip -9 $out' _ {} \; # Publish test -d ${HOME}/bin || mkdir ${HOME}/bin wget -q https://git.linaro.org/ci/publishing-api.git/blob_plain/HEAD:/linaro-cp.py -O ${HOME}/bin/linaro-cp.py time python ${HOME}/bin/linaro-cp.py \ --api_version 3 \ --link-latest \ out components/kernel/${JOB_NAME}/${BUILD_NUMBER} - shell: | KERNEL_BUILD_NUM=$(wget -q --no-check-certificate -O - https://ci.linaro.org/job/linux-xen/hwpack=mustang,label=docker-vivid-amd64/lastSuccessfulBuild/buildNumber) DEVICE_TYPE=mustang XEN_EFI_URL=https://snapshots.linaro.org/components/kernel/${JOB_NAME}/${BUILD_NUMBER}/XEN-AARCH64/RELEASE_GCC49/XEN_EFI.fd TEMPLATE=https://git.linaro.org/ci/job/configs.git/blob_plain/HEAD:/leg-virt-tiancore-edk2-upstream/lava-job-definitions/${DEVICE_TYPE}/template.json wget -O - -q --no-check-certificate $TEMPLATE | \ sed -e "s|\${BUILD_URL}|${BUILD_URL}|" \ -e "s|\${BUNDLE_STREAM_NAME}|${BUNDLE_STREAM_NAME}|" \ -e "s|\${XEN_EFI_URL}|${XEN_EFI_URL}|" \ -e "s|\${LAVA_SERVER}|${LAVA_SERVER}|" \ -e "s|\${KERNEL_BUILD_NUM}|${KERNEL_BUILD_NUM}|" \ > custom_lava_job_definition_xen_aarch64_uefi.json cat << EOF > post_build_lava_parameters_xen_aarch64_uefi DEVICE_TYPE=${DEVICE_TYPE} BUNDLE_STREAM_NAME=${BUNDLE_STREAM_NAME} CUSTOM_JSON_URL=${JOB_URL}ws/custom_lava_job_definition_xen_aarch64_uefi.json LAVA_SERVER=${LAVA_SERVER} EOF - trigger-builds: - project: 'post-build-lava' property-file: post_build_lava_parameters_xen_aarch64_uefi block: true - shell: | KERNEL_BUILD_NUM=$(wget -q --no-check-certificate -O - https://ci.linaro.org/job/linux-mainline/ARCH=arm64,defconfig=defconfig,label=linaro-kernel-ci/lastSuccessfulBuild/buildNumber) DEVICE_TYPE=kvm-aarch64 QEMU_EFI_URL=https://snapshots.linaro.org/components/kernel/${JOB_NAME}/${BUILD_NUMBER} TEMPLATE=https://git.linaro.org/ci/job/configs.git/blob_plain/HEAD:/leg-virt-tiancore-edk2-upstream/lava-job-definitions/${DEVICE_TYPE}/template.json wget -O - -q --no-check-certificate $TEMPLATE | \ sed -e "s|\${BUILD_URL}|${BUILD_URL}|" \ -e "s|\${BUNDLE_STREAM_NAME}|${BUNDLE_STREAM_NAME}|" \ -e "s|\${QEMU_EFI_URL}|${QEMU_EFI_URL}|" \ -e "s|\${LAVA_SERVER}|${LAVA_SERVER}|" \ -e "s|\${KERNEL_BUILD_NUM}|${KERNEL_BUILD_NUM}|" \ > custom_lava_job_definition_qemu_aarch64_uefi.json cat << EOF > post_build_lava_parameters_qemu_aarch64_uefi DEVICE_TYPE=${DEVICE_TYPE} BUNDLE_STREAM_NAME=${BUNDLE_STREAM_NAME} CUSTOM_JSON_URL=${JOB_URL}ws/custom_lava_job_definition_qemu_aarch64_uefi.json LAVA_SERVER=${LAVA_SERVER} EOF - trigger-builds: - project: 'post-build-lava' property-file: post_build_lava_parameters_qemu_aarch64_uefi block: true publishers: - email: recipients: 'ard.biesheuvel@linaro.org eugene@hp.com'