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