projects/linux·blob master · refs

158 lines · 5.3 KiB

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 "[email protected]"
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