1#!/bin/bash 2# SPDX-License-Identifier: MIT 3 4set -ex 5 6. .gitlab-ci/container/container_pre_build.sh 7 8# libssl-dev was uninstalled because it was considered an ephemeral package 9apt-get update 10apt-get install -y libssl-dev 11 12# for msm header validation 13apt-get install -y python3-lxml 14 15if [[ "$KERNEL_ARCH" = "arm64" ]]; then 16 GCC_ARCH="aarch64-linux-gnu" 17 DEBIAN_ARCH="arm64" 18 DEVICE_TREES="arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb" 19 DEVICE_TREES+=" arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dtb" 20 DEVICE_TREES+=" arch/arm64/boot/dts/amlogic/meson-gxl-s805x-libretech-ac.dtb" 21 DEVICE_TREES+=" arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dtb" 22 DEVICE_TREES+=" arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dtb" 23 DEVICE_TREES+=" arch/arm64/boot/dts/qcom/apq8016-sbc-usb-host.dtb" 24 DEVICE_TREES+=" arch/arm64/boot/dts/qcom/apq8096-db820c.dtb" 25 DEVICE_TREES+=" arch/arm64/boot/dts/amlogic/meson-g12b-a311d-khadas-vim3.dtb" 26 DEVICE_TREES+=" arch/arm64/boot/dts/mediatek/mt8173-elm-hana.dtb" 27 DEVICE_TREES+=" arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-juniper-sku16.dtb" 28 DEVICE_TREES+=" arch/arm64/boot/dts/mediatek/mt8192-asurada-spherion-r0.dtb" 29 DEVICE_TREES+=" arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-limozeen-nots-r5.dtb" 30 DEVICE_TREES+=" arch/arm64/boot/dts/qcom/sc7180-trogdor-kingoftown.dtb" 31 DEVICE_TREES+=" arch/arm64/boot/dts/qcom/sm8350-hdk.dtb" 32elif [[ "$KERNEL_ARCH" = "arm" ]]; then 33 GCC_ARCH="arm-linux-gnueabihf" 34 DEBIAN_ARCH="armhf" 35 DEVICE_TREES="arch/arm/boot/dts/rockchip/rk3288-veyron-jaq.dtb" 36 DEVICE_TREES+=" arch/arm/boot/dts/allwinner/sun8i-h3-libretech-all-h3-cc.dtb" 37 DEVICE_TREES+=" arch/arm/boot/dts/nxp/imx/imx6q-cubox-i.dtb" 38 apt-get install -y libssl-dev:armhf 39else 40 GCC_ARCH="x86_64-linux-gnu" 41 DEBIAN_ARCH="amd64" 42 DEVICE_TREES="" 43fi 44 45export ARCH=${KERNEL_ARCH} 46export CROSS_COMPILE="${GCC_ARCH}-" 47 48# The kernel doesn't like the gold linker (or the old lld in our debians). 49# Sneak in some override symlinks during kernel build until we can update 50# debian. 51mkdir -p ld-links 52for i in /usr/bin/*-ld /usr/bin/ld; do 53 i=$(basename $i) 54 ln -sf /usr/bin/$i.bfd ld-links/$i 55done 56 57NEWPATH=$(pwd)/ld-links 58export PATH=$NEWPATH:$PATH 59 60git config --global user.email "fdo@example.com" 61git config --global user.name "freedesktop.org CI" 62 63# cleanup git state on the worker 64rm -rf .git/rebase-merge .git/rebase-apply 65 66# Try to merge fixes from target repo 67if [ "$(git ls-remote --exit-code --heads ${UPSTREAM_REPO} ${TARGET_BRANCH}-external-fixes)" ]; then 68 git pull --no-rebase ${UPSTREAM_REPO} ${TARGET_BRANCH}-external-fixes 69fi 70 71# Try to merge fixes from local repo if this isn't a merge request 72# otherwise try merging the fixes from the merge target 73if [ -z "$CI_MERGE_REQUEST_PROJECT_PATH" ]; then 74 if [ "$(git ls-remote --exit-code --heads origin ${TARGET_BRANCH}-external-fixes)" ]; then 75 git pull --no-rebase origin ${TARGET_BRANCH}-external-fixes 76 fi 77else 78 if [ "$(git ls-remote --exit-code --heads ${CI_MERGE_REQUEST_PROJECT_URL} ${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}-external-fixes)" ]; then 79 git pull --no-rebase ${CI_MERGE_REQUEST_PROJECT_URL} ${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}-external-fixes 80 fi 81fi 82 83if [[ -n "${MERGE_FRAGMENT}" ]]; then 84 ./scripts/kconfig/merge_config.sh ${DEFCONFIG} drivers/gpu/drm/ci/${MERGE_FRAGMENT} 85else 86 make `basename ${DEFCONFIG}` 87fi 88 89for opt in $ENABLE_KCONFIGS; do 90 ./scripts/config --enable CONFIG_$opt 91done 92for opt in $DISABLE_KCONFIGS; do 93 ./scripts/config --disable CONFIG_$opt 94done 95 96make ${KERNEL_IMAGE_NAME} 97 98mkdir -p /kernel/ 99for image in ${KERNEL_IMAGE_NAME}; do 100 cp arch/${KERNEL_ARCH}/boot/${image} /kernel/. 101done 102 103if [[ -n ${DEVICE_TREES} ]]; then 104 make dtbs 105 cp ${DEVICE_TREES} /kernel/. 106fi 107 108make modules 109mkdir -p install/modules/ 110INSTALL_MOD_PATH=install/modules/ make modules_install 111 112if [[ ${DEBIAN_ARCH} = "arm64" ]]; then 113 # Make a gzipped copy of the Image for db410c. 114 gzip -k /kernel/Image 115 KERNEL_IMAGE_NAME+=" Image.gz" 116fi 117 118# Pass needed files to the test stage 119mkdir -p install 120cp -rfv .gitlab-ci/* install/. 121cp -rfv bin/ci/* install/. 122cp -rfv install/common install/ci-common 123cp -rfv drivers/gpu/drm/ci/* install/. 124 125. .gitlab-ci/container/container_post_build.sh 126 127if [[ "$UPLOAD_TO_MINIO" = "1" ]]; then 128 xz -7 -c -T${FDO_CI_CONCURRENT:-4} vmlinux > /kernel/vmlinux.xz 129 FILES_TO_UPLOAD="$KERNEL_IMAGE_NAME vmlinux.xz" 130 131 if [[ -n $DEVICE_TREES ]]; then 132 FILES_TO_UPLOAD="$FILES_TO_UPLOAD $(basename -a $DEVICE_TREES)" 133 fi 134 135 ls -l "${S3_JWT_FILE}" 136 for f in $FILES_TO_UPLOAD; do 137 ci-fairy s3cp --token-file "${S3_JWT_FILE}" /kernel/$f \ 138 https://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/$f 139 done 140 141 S3_ARTIFACT_NAME="kernel-files.tar.zst" 142 tar --zstd -cf $S3_ARTIFACT_NAME install 143 ci-fairy s3cp --token-file "${S3_JWT_FILE}" ${S3_ARTIFACT_NAME} https://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/${S3_ARTIFACT_NAME} 144 145 echo "Download vmlinux.xz from https://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/vmlinux.xz" 146fi 147 148mkdir -p artifacts/install/lib 149mv install/* artifacts/install/. 150ln -s common artifacts/install/ci-common 151cp .config artifacts/${CI_JOB_NAME}_config 152 153for image in ${KERNEL_IMAGE_NAME}; do 154 cp /kernel/$image artifacts/install/. 155done 156 157tar -C artifacts -cf artifacts/install.tar install 158rm -rf artifacts/install 159