- job: name: lkft-linux-clang project-type: matrix defaults: global properties: - authorization: anonymous: - job-read - job-extended-read linaro: - job-build - job-cancel - build-discarder: days-to-keep: 60 num-to-keep: 300 artifact-num-to-keep: 1 parameters: - string: name: KERNEL_GITREF default: 'torvalds/master' - matrix-combinations: name: MATRIX_COMBINATIONS disabled: false node: master display-name: 'LKFT Linux Kernel built with Clang' concurrent: true axes: - axis: type: user-defined name: ARCH values: - 'arm64' - 'x86_64' - axis: type: user-defined name: CLANG_TOOLCHAIN values: - 'clang-r328903' - 'clang-master' - axis: type: slave name: label values: - docker-stretch-amd64 execution-strategy: sequential: false wrappers: - timestamps - timeout: timeout: 180 builders: - shell: | #!/bin/bash -ex sudo apt-get update sudo DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y libssl-dev # Keep an updated mirror of Linux in permanent storage cd $HOME/srv if [ ! -d linux.git ]; then mkdir linux.git cd linux.git git init --bare git remote add torvalds https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git remote add linux-stable https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git cd .. fi cd linux.git git remote update # Download Clang and GCC toolchains to cross-compile cd ${WORKSPACE} mkdir ${CLANG_TOOLCHAIN} if [ "${CLANG_TOOLCHAIN}" = "clang-master" ]; then wget -q http://snapshots.linaro.org/android/android-clang-toolchain/latest/clang-master.tar.xz tar Jxf clang-master.tar.xz else wget -q "https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86/+archive/master/${CLANG_TOOLCHAIN}.tar.gz" tar zxf "${CLANG_TOOLCHAIN}.tar.gz" -C "${CLANG_TOOLCHAIN}/" fi git clone --depth=1 https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9 export PATH=${PWD}/${CLANG_TOOLCHAIN}/bin:${PWD}/aarch64-linux-android-4.9/bin:${PATH} # Set up Linux Git repositories # "torvalds" is Linus' kernel, mainline # "linux-stable" is GKH repository for stable kernels cd ${WORKSPACE} git clone \ -o torvalds \ --reference ${HOME}/srv/linux.git \ https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git \ linux cd linux git remote add linux-stable https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git git fetch linux-stable # If triggered with a GIT_COMMIT, check it out; # else, check out the Git reference. if [ -n "${GIT_COMMIT}" ]; then GIT_REFERENCE=${GIT_COMMIT} else GIT_REFERENCE=${KERNEL_GITREF} fi git checkout ${GIT_REFERENCE} case "${ARCH}" in arm64) CLANG_TRIPLE=aarch64-linux-gnu- CROSS_COMPILE=aarch64-linux-android- ;; x86_64) CLANG_TRIPLE= CROSS_COMPILE= ;; *) echo "Unsupported ARCH: ${ARCH}" exit 1 ;; esac export ARCH export CLANG_TRIPLE export CROSS_COMPILE make CC=clang HOSTCC=clang defconfig make CC=clang HOSTCC=clang -j$(nproc) publishers: - email-ext: recipients: 'daniel.diaz@linaro.org, dan.rue@linaro.org' matrix-trigger: only-configurations subject: '[CI] Linux/Clang failed: ${KERNEL_GITREF}: ${KERNEL_DESCRIBE}' body: | Build URL: ${PROJECT_URL}${BUILD_NUMBER}/ Build log: ${PROJECT_URL}${BUILD_NUMBER}/console Git repo/branch: ${KERNEL_GITREF} Git commit: ${GIT_COMMIT} Clang toolchain: ${CLANG_TOOLCHAIN} Kernel version (from make): ${MAKE_KERNELVERSION} Kernel version (from Git): ${KERNEL_DESCRIBE} Errors: ${BUILD_LOG_REGEX, regex=".*: error: .*", linesBefore=0, linesAfter=2, showTruncatedLines=false}