1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
|
#!/bin/bash
set -ex
sudo apt-get update
sudo apt-get install -y zip gdisk
# install jflog client tool, v1, used for publishing artifacts
(mkdir -p $HOME/bin && cd $HOME/bin && curl -fL https://getcli.jfrog.io | sh)
# download the firmware packages
wget -q ${QCOM_LINUX_FIRMWARE}
echo "${QCOM_LINUX_FIRMWARE_MD5} $(basename ${QCOM_LINUX_FIRMWARE})" > MD5
md5sum -c MD5
unzip -j -d bootloaders-linux $(basename ${QCOM_LINUX_FIRMWARE}) "*/bootloaders-linux/*" "*/cdt-linux/*" "*/loaders/*" "*/efs-seed/*"
# Get the Android compiler
git clone ${LK_GCC_GIT} --depth 1 -b ${LK_GCC_REL} android-gcc
# get the signing tools
git clone --depth 1 ${QCOM_SIGNLK_GIT}
# Build all needed flavors of LK
git clone --depth 1 ${LK_GIT_LINARO} -b ${LK_GIT_REL_SD_RESCUE} lk_sdrescue
git clone --depth 1 ${LK_GIT_LINARO} -b ${LK_GIT_REL_SD_BOOT} lk_sd_boot
git clone --depth 1 ${LK_GIT_LINARO} -b ${LK_GIT_REL_EMMC_BOOT} lk_emmc_boot
for lk in lk_sdrescue lk_sd_boot lk_emmc_boot; do
echo "Building LK in : $lk"
cd $lk
git log -1
make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=${WORKSPACE}/android-gcc/bin/arm-eabi-
mv build-msm8916/emmc_appsboot.mbn build-msm8916/emmc_appsboot_unsigned.mbn
../signlk/signlk.sh -i=./build-msm8916/emmc_appsboot_unsigned.mbn -o=./build-msm8916/emmc_appsboot.mbn -d
cd -
done
SDCARD_RESCUE=dragonboard-410c-sdcard-rescue-${BUILD_NUMBER}
BOOTLOADER_SD_LINUX=dragonboard-410c-bootloader-sd-linux-${BUILD_NUMBER}
BOOTLOADER_EMMC_LINUX=dragonboard-410c-bootloader-emmc-linux-${BUILD_NUMBER}
BOOTLOADER_EMMC_AOSP=dragonboard-410c-bootloader-emmc-aosp-${BUILD_NUMBER}
mkdir -p out/${SDCARD_RESCUE} \
out/${BOOTLOADER_SD_LINUX} \
out/${BOOTLOADER_EMMC_LINUX} \
out/${BOOTLOADER_EMMC_AOSP}
# get LICENSE file (for Linux BSP)
unzip -j $(basename ${QCOM_LINUX_FIRMWARE}) "*/LICENSE"
echo "${QCOM_LINUX_FIRMWARE_LICENSE_MD5} LICENSE" > MD5
md5sum -c MD5
# Create ptable and rawprogram/patch command files
git clone --depth 1 ${QCOM_PTOOL_GIT} ptool
(cd ptool && git log -1)
(mkdir ptool/linux && cd ptool/linux && python2 ${WORKSPACE}/ptool/ptool.py -x ${WORKSPACE}/dragonboard410c/linux/partition.xml)
(mkdir ptool/aosp && cd ptool/aosp && python2 ${WORKSPACE}/ptool/ptool.py -x ${WORKSPACE}/dragonboard410c/aosp/partition.xml)
# Empty/zero boot image file to clear boot partition
dd if=/dev/zero of=boot-erase.img bs=1024 count=1024
# bootloader_emmc_linux
cp -a LICENSE \
dragonboard410c/linux/flashall \
lk_emmc_boot/build-msm8916/emmc_appsboot.mbn \
bootloaders-linux/prog_emmc_firehose_8916.mbn \
bootloaders-linux/{NON-HLOS.bin,rpm.mbn,sbl1.mbn,tz.mbn,hyp.mbn,sbc_1.0_8016.bin} \
bootloaders-linux/fs_image_linux.tar.gz.mbn.img \
ptool/linux/{rawprogram,patch}?.xml \
ptool/linux/gpt_{main,backup,both}?.bin \
ptool/linux/zeros_*.bin \
boot-erase.img \
out/${BOOTLOADER_EMMC_LINUX}
# bootloader_emmc_aosp
cp -a LICENSE \
dragonboard410c/aosp/flashall \
lk_emmc_boot/build-msm8916/emmc_appsboot.mbn \
bootloaders-linux/{NON-HLOS.bin,rpm.mbn,sbl1.mbn,tz.mbn,hyp.mbn,sbc_1.0_8016.bin} \
bootloaders-linux/fs_image_linux.tar.gz.mbn.img \
ptool/aosp/{rawprogram,patch}?.xml \
ptool/aosp/gpt_{main,backup,both}?.bin \
ptool/aosp/zeros_*.bin \
boot-erase.img \
out/${BOOTLOADER_EMMC_AOSP}
# bootloader_sd_linux
cp -a LICENSE \
lk_sd_boot/build-msm8916/emmc_appsboot.mbn \
bootloaders-linux/{NON-HLOS.bin,rpm.mbn,sbl1.mbn,tz.mbn,hyp.mbn,sbc_1.0_8016.bin} \
bootloaders-linux/fs_image_linux.tar.gz.mbn.img \
out/${BOOTLOADER_SD_LINUX}
# sdcard_rescue
cp -a LICENSE out/${SDCARD_RESCUE}
sudo ./mksdcard -x -p dragonboard410c/linux/sdrescue.txt \
-o out/${SDCARD_RESCUE}/${SDCARD_RESCUE}.img \
-i lk_sdrescue/build-msm8916/ \
-i out/${BOOTLOADER_SD_LINUX}
# Final preparation of archives for publishing
mkdir ${WORKSPACE}/out2
for i in ${SDCARD_RESCUE} \
${BOOTLOADER_SD_LINUX} \
${BOOTLOADER_EMMC_LINUX} \
${BOOTLOADER_EMMC_AOSP} ; do
(cd out/$i && md5sum * > MD5SUMS.txt)
(cd out && zip -r ${WORKSPACE}/out2/$i.zip $i)
done
# Create MD5SUMS file
(cd ${WORKSPACE}/out2 && md5sum * > MD5SUMS.txt)
# Build information
cat > ${WORKSPACE}/out2/HEADER.textile << EOF
h4. Bootloaders for Dragonboard 410c
This page provides the bootloaders packages for the Dragonboard 410c. There are several packages:
* *sdcard_rescue* : an SD card image that can be used to boot from SD card, and rescue a board when the onboard eMMC is empty or corrupted
* *bootloader-emmc-linux* : includes the bootloaders and partition table (GPT) used when booting Linux images from onboard eMMC
* *bootloader-emmc-aosp* : includes the bootloaders and partition table (GPT) used when booting AOSP based images from onboard eMMC
* *bootloader-sd-linux* : includes the bootloaders and partition table (GPT) used when booting Linux images from SD card
Build description:
* Build URL: "$BUILD_URL":$BUILD_URL
* Proprietary bootloaders can be found on "Qualcomm Developer Network":https://developer.qualcomm.com/hardware/dragonboard-410c/tools
* Linux proprietary bootloaders package: $(basename ${QCOM_LINUX_FIRMWARE})
* Little Kernel (LK) source code:
** "SD rescue boot":$LK_GIT_LINARO/log/?h=$(echo $LK_GIT_REL_SD_RESCUE | sed -e 's/+/\%2b/g')
** "SD Linux boot":$LK_GIT_LINARO/log/?h=$(echo $LK_GIT_REL_SD_BOOT | sed -e 's/+/\%2b/g')
** "eMMC Linux boot":$LK_GIT_LINARO/log/?h=$(echo $LK_GIT_REL_EMMC_BOOT | sed -e 's/+/\%2b/g')
* Tools version: "$GIT_COMMIT":$GIT_URL/commit/?id=$GIT_COMMIT
* Partition table:
** "Linux":$GIT_URL/tree/dragonboard410c/linux/partition.xml?id=$GIT_COMMIT
** "AOSP":$GIT_URL/tree/dragonboard410c/aosp/partition.xml?id=$GIT_COMMIT
EOF
# Publish
test -d ${HOME}/bin || mkdir ${HOME}/bin
wget -q https://git.linaro.org/ci/publishing-api.git/blob_plain/HEAD:/linaro-cp.py -O ${HOME}/bin/linaro-cp.py
# TODO CLO: Remove condition once linaro-cp.py is able to push to CLO
if [[ -z ${CLO_MIGRATION} ]]; then
time python3 ${HOME}/bin/linaro-cp.py \
--server ${PUBLISH_SERVER} \
--link-latest \
${WORKSPACE}/out2 ${PUB_DEST}
else
time ${HOME}/bin/jfrog rt u \
--apikey ${LT_QCOM_CLO_API_KEY} \
--url ${PUBLISH_SERVER} \
${WORKSPACE}/out2/ ${PUBLISH_REPOSITORY}/${PUB_DEST}/
fi
|