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