3 BM
=$CI_PROJECT_DIR/.gitlab-ci
/bare-metal
5 if [ -z "$BM_SERIAL" ]; then
6 echo "Must set BM_SERIAL in your gitlab-runner config.toml [[runners]] environment"
7 echo "This is the serial device to talk to for waiting for fastboot to be ready and logging from the kernel."
11 if [ -z "$BM_POWERUP" ]; then
12 echo "Must set BM_POWERUP in your gitlab-runner config.toml [[runners]] environment"
13 echo "This is a shell script that should reset the device and begin its boot sequence"
14 echo "such that it pauses at fastboot."
18 if [ -z "$BM_POWERDOWN" ]; then
19 echo "Must set BM_POWERDOWN in your gitlab-runner config.toml [[runners]] environment"
20 echo "This is a shell script that should power off the device."
24 if [ -z "$BM_FASTBOOT_SERIAL" ]; then
25 echo "Must set BM_FASTBOOT_SERIAL in your gitlab-runner config.toml [[runners]] environment"
26 echo "This must be the a stable-across-resets fastboot serial number."
30 if [ -z "$BM_KERNEL" ]; then
31 echo "Must set BM_KERNEL to your board's kernel vmlinuz or Image.gz in the job's variables:"
35 if [ -z "$BM_DTB" ]; then
36 echo "Must set BM_DTB to your board's DTB file in the job's variables:"
40 if [ -z "$BM_ROOTFS" ]; then
41 echo "Must set BM_ROOTFS to your board's rootfs directory in the job's variables:"
47 # Copy the rootfs to a temporary for our setup, as I believe changes to the
48 # container can end up impacting future runs.
49 cp -Rp $BM_ROOTFS rootfs
51 # Set up the init script that brings up the system.
52 cp $BM/init.sh rootfs
/init
54 # Pass through relevant env vars from the gitlab job to the baremetal init script
55 touch rootfs
/set-job-env-vars.sh
56 chmod +x rootfs
/set-job-env-vars.sh
62 CI_MERGE_REQUEST_SOURCE_BRANCH_NAME \
63 CI_MERGE_REQUEST_TITLE \
67 CI_RUNNER_DESCRIPTION \
68 DEQP_CASELIST_FILTER \
69 DEQP_EXPECTED_RENDERER \
78 val
=`echo ${!var} | sed 's|"||g'`
79 echo "export $var=\"${val}\"" >> rootfs
/set-job-env-vars.sh
82 # Add the Mesa drivers we built, and make a consistent symlink to them.
83 mkdir
-p rootfs
/$CI_PROJECT_DIR
84 tar -C rootfs
/$CI_PROJECT_DIR/ -xf $CI_PROJECT_DIR/artifacts
/install.
tar
85 ln -sf $CI_PROJECT_DIR/install rootfs
/install
87 # Copy the deqp runner script and metadata.
88 cp .gitlab-ci
/deqp-runner.sh rootfs
/deqp
/.
89 cp .gitlab-ci
/$DEQP_SKIPS rootfs
/$CI_PROJECT_DIR/install
/deqp-skips.txt
90 if [ -n "$DEQP_EXPECTED_FAILS" ]; then
91 cp .gitlab-ci
/$DEQP_EXPECTED_FAILS rootfs
/$CI_PROJECT_DIR/install
/deqp-expected-fails.txt
94 # Finally, pack it up into a cpio rootfs.
96 find -H |
cpio -H newc
-o | xz
--check=crc32
-T4 - > $CI_PROJECT_DIR/rootfs.
cpio.gz
99 cat $BM_KERNEL $BM_DTB > Image.gz-dtb
102 --create artifacts
/fastboot.img \
105 -c cmdline
="$BM_CMDLINE"
108 # Start watching serial, and power up the device.
109 $BM/serial-buffer.py
$BM_SERIAL |
tee artifacts
/serial-output.txt
&
110 while [ ! -e artifacts
/serial-output.txt
]; do
113 PATH
=$BM:$PATH $BM_POWERUP
115 # Once fastboot is ready, boot our image.
116 $BM/expect-output.sh artifacts
/serial-output.txt
"fastboot: processing commands"
117 fastboot boot
-s $BM_FASTBOOT_SERIAL artifacts
/fastboot.img
119 # Wait for the device to complete the deqp run
120 $BM/expect-output.sh artifacts
/serial-output.txt
"DEQP RESULT"
122 # power down the device
123 PATH
=$BM:$PATH $BM_POWERDOWN
126 if grep -q "DEQP RESULT: pass" artifacts
/serial-output.txt
; then