- 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-vivid-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- # 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- sudo apt-get update sudo apt-get install -y --no-install-recommends clang python-pycurl zip 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 # retrieve FVP model DTBs from ARM trusted firmware repo wget -O - -q --no-check-certificate https://github.com/ARM-software/arm-trusted-firmware/archive/master.tar.gz | \ tar xz --strip-components=1 arm-trusted-firmware-master/fdts export DTBDIR=${PWD}/fdts # download and unpack the OpenSSL tarball cd ${WORKSPACE}/CryptoPkg/Library/OpensslLib # capture OpenSSL version number from the patch file against the most recent version VERSION=$(ls -rv EDKII_openssl-*.patch|head -1|sed 's/^.*-\([0-9.a-z]*\).patch/\1/') ( wget -O - -q "http://www.openssl.org/source/openssl-${VERSION}.tar.gz" || \ wget -O - -q "http://www.openssl.org/source/old/${VERSION%[a-z]*}/openssl-${VERSION}.tar.gz" ) \ | tar xzf - ( cd openssl-${VERSION}; patch -p0 -i ../EDKII_openssl-${VERSION}.patch ) ./Install.sh cd ${WORKSPACE} for type in DEBUG RELEASE do for tc in GCC48 GCC49 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}/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} mkdir -p ${OUTDIR}/FVP-AARCH64/${type}_${tc} build -a AARCH64 -t ${tc} -b ${type} -n $NUM_THREADS -p ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-FVP-AArch64.dsc -D DTB_DIR=${DTBDIR} -D SECURE_BOOT_ENABLE cp Build/ArmVExpress-FVP-AArch64/${type}_${tc}/FV/FVP_AARCH64_EFI.fd ${OUTDIR}/FVP-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 \ --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}/QEMU-AARCH64/RELEASE_GCC49/QEMU_EFI.img.gz 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'