- 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-buster-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 H/8 * * *' 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 Buster's default cross toolchains for GCC5 and CLANG3x (binutils) export GCC5_AARCH64_PREFIX=aarch64-linux-gnu- export GCC5_ARM_PREFIX=arm-linux-gnueabihf- export CLANG35_AARCH64_PREFIX=aarch64-linux-gnu- export CLANG35_ARM_PREFIX=arm-linux-gnueabi- export CLANG35_BIN=/usr/lib/llvm-6.0/bin/ export CLANG38_AARCH64_PREFIX=aarch64-linux-gnu- export CLANG38_ARM_PREFIX=arm-linux-gnueabi- sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install -y --no-install-recommends python-requests zip libstdc++6:i386 zlib1g:i386 \ gcc-aarch64-linux-gnu gcc-arm-linux-gnueabihf nasm llvm binutils-arm-linux-gnueabi \ clang llvm-dev clang-6.0 llvm-6.0-dev python3-distutils export OUTDIR=${WORKSPACE}/out ( unset WORKSPACE NUM_THREADS=$((`getconf _NPROCESSORS_ONLN` + 1)) cd edk2 git submodule update --init # Initialise the build environment git clean -dxf BaseTools/ make -C BaseTools -j $NUM_THREADS source edksetup.sh --reconfig cd ${WORKSPACE} for type in DEBUG RELEASE NOOPT do for arch in AARCH64 ARM do for tc in GCC5 CLANG38 CLANG35 do for pkg in Arm ArmPlatform Embedded do build -s -a ${arch} -t ${tc} -b ${type} -n $NUM_THREADS -p ${pkg}Pkg/${pkg}Pkg.dsc done mkdir -p ${OUTDIR}/QEMU-${arch}/${type}_${tc} build -s -a ${arch} -t ${tc} -b ${type} -n $NUM_THREADS -p ArmVirtPkg/ArmVirtQemu.dsc -D SECURE_BOOT_ENABLE -D NETWORK_IP6_ENABLE -D HTTP_BOOT_ENABLE cp Build/ArmVirtQemu-${arch}/${type}_${tc}/FV/QEMU_EFI.fd ${OUTDIR}/QEMU-${arch}/${type}_${tc} mkdir -p ${OUTDIR}/QEMU-KERNEL-${arch}/${type}_${tc} build -s -a ${arch} -t ${tc} -b ${type} -n $NUM_THREADS -p ArmVirtPkg/ArmVirtQemuKernel.dsc -D SECURE_BOOT_ENABLE -D NETWORK_IP6_ENABLE -D HTTP_BOOT_ENABLE cp Build/ArmVirtQemuKernel-${arch}/${type}_${tc}/FV/QEMU_EFI.fd ${OUTDIR}/QEMU-KERNEL-${arch}/${type}_${tc} mkdir -p ${OUTDIR}/XEN-${arch}/${type}_${tc} build -s -a ${arch} -t ${tc} -b ${type} -n $NUM_THREADS -p ArmVirtPkg/ArmVirtXen.dsc cp Build/ArmVirtXen-${arch}/${type}_${tc}/FV/XEN_EFI.fd ${OUTDIR}/XEN-${arch}/${type}_${tc} done done build -s -t GCC5 -b ${type} -n $NUM_THREADS -a IA32 -p OvmfPkg/OvmfPkgIa32.dsc -D SMM_REQUIRE -D SECURE_BOOT_ENABLE -D TLS_ENABLE -D HTTP_BOOT_ENABLE -D NETWORK_IP6_ENABLE build -s -t GCC5 -b ${type} -n $NUM_THREADS -a IA32 -a X64 -p OvmfPkg/OvmfPkgIa32X64.dsc -D SMM_REQUIRE -D SECURE_BOOT_ENABLE -D TLS_ENABLE -D HTTP_BOOT_ENABLE -D NETWORK_IP6_ENABLE build -s -t GCC5 -b ${type} -n $NUM_THREADS -a X64 -p OvmfPkg/OvmfPkgX64.dsc -D SECURE_BOOT_ENABLE -D TLS_ENABLE -D HTTP_BOOT_ENABLE -D NETWORK_IP6_ENABLE 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 python3 ${HOME}/bin/linaro-cp.py \ --api_version 3 \ --link-latest \ out components/kernel/${JOB_NAME}/${BUILD_NUMBER} # Disable v1 job submissions. LAVA 2017.10 release **disables ALL V1 test job submissions** # https://lists.linaro.org/pipermail/lava-announce/2017-October/000039.html # - 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: 'ardb@kernel.org leif@nuviainc.com eugene@nuviainc.com'