-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathbuild-image.sh
More file actions
executable file
·231 lines (216 loc) · 11.7 KB
/
build-image.sh
File metadata and controls
executable file
·231 lines (216 loc) · 11.7 KB
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
#!/bin/bash
#this script builds the builroot based image
BR_FOLDER=./buildroot
IMAGE_VERSION=XX.YY
BR_BOARD_SYSTEM_CONFIG=baytrail
BR_BOARD_CONFIG=qemu_x86_64_defconfig
BR_BOARD_LINUX_CONFIG=linux.config
#RAW_DISK_IMAGE=./raw-images/disk.grub1.img.xz
GRUB1_PREPARE_SCRIPT=grub1-prepare.sh
GRUB1_COPY_SCRIPT=grub1-copy.sh
GRUB1_SUDO_EXE_SCRIPT=sudo-executor-grub1-prepare.sh
#output images
BOOTABLE_USB_IMG=bootable-usb-disk.img
BRBOX_ROOT_IMG=uBrBoxRoot.uimg
IMAGE_ONLY=0
PREPARE_ONLY=0
#root-fs types for differenet h/w (taken from brbox-mkimage/image.h)
ROOTFS_TYPE_BTR="BrBoxRtBtr"
ROOTFS_TYPE_RP1="BrBoxRtRp1"
ROOTFS_TYPE_RP2="BrBoxRtRp2"
ROOTFS_TYPE_RP3="BrBoxRtRp3"
ROOTFS_TYPE_BBB="BrBoxRtBbb"
ROOTFS_TYPE_WDB="BrBoxRtWdb"
BOARD_TYPE_BTR="baytrail" #base-build
BOARD_TYPE_BTR_MEDIA="baytrail-media" #multimedia-application-build
BOARD_TYPE_RP0="raspi0" #base-build
BOARD_TYPE_RP0_MEDIA="raspi0-media" #raspi0-media-player(video-looper)
BOARD_TYPE_RP1="raspi1" #base-build
BOARD_TYPE_RP1_SMSW="raspi1-smartsw" #relayswitch-application-build
BOARD_TYPE_RP1_RBOX="raspi1-rbox" #remote-box-application-build
BOARD_TYPE_RP1_RBOX_NEW="raspi1-rbox-new" #remote-box-application-build
BOARD_TYPE_RP1_DSPT="raspi1-disptst" #display-test-application-build
BOARD_TYPE_RP2="raspi2" #base-build
BOARD_TYPE_RP3="raspi3" #base-build
BOARD_TYPE_BBB="bbb" #base-build
BOARD_TYPE_BBBMMC="bbbmmc" #base-build
BOARD_TYPE_BBBMMC_RBOX="bbbmmc-rbox" #remote-box-application-build
BOARD_TYPE_WDB="wandboard" #base-build
BOARD_TYPE_RP3_64="raspi3-64" #base-build
BOARD_TYPE_RP3_64_ASTERISK="raspi3-64-asterisk" #base-build
BOARD_TYPE_RP3_QT5WE="raspi3-qt5we"
BOARD_TYPE_PC_X86_EFI="pc-x86-64-efi"
###############################################################################
while getopts b:o:v:c:s:ip f
do
case $f in
b) BR_BOARD_SYSTEM_CONFIG=$OPTARG;; #board/system type for different application
o) BR_OUTPUT_FOLDER=$OPTARG;; #buildroot output folder
v) IMAGE_VERSION=$OPTARG ;; #image version
s) SUDOPW=$OPTARG ;; #sud password
i) IMAGE_ONLY=1 ;; #-i can be used only for binary image creation(build will be skipped)
p) PREPARE_ONLY=1 ;; #just prepare buildroot, dont build
esac
done
# t) BOARD_TYPE=$OPTARG ;; #board-type= baytrail/raspi2
#TODO: switch case for br-board-system-config
if [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP0" ]; then
BR_BOARD_CONFIG=raspberrypi0_defconfig
BR_BOARD_LINUX_CONFIG_PATH=board/raspberrypi/
BOOT_IMG_SCRIPT=$(pwd)/scripts/raspi-bootdisk.sh
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP0_MEDIA" ]; then
BR_BOARD_CONFIG=raspberrypi0_defconfig
BR_BOARD_LINUX_CONFIG_PATH=board/raspberrypi/
BOOT_IMG_SCRIPT=$(pwd)/scripts/raspi0-media-bootdisk.sh
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP1" ]; then
BR_BOARD_CONFIG=raspberrypi_defconfig
BR_BOARD_LINUX_CONFIG_PATH=board/raspberrypi/
BOOT_IMG_SCRIPT=$(pwd)/scripts/raspi-bootdisk.sh
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP1_SMSW" ]; then
BR_BOARD_CONFIG=raspberrypi_defconfig
BR_BOARD_LINUX_CONFIG_PATH=board/raspberrypi/
BOOT_IMG_SCRIPT=$(pwd)/scripts/raspi-bootdisk.sh
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP1_RBOX" ]; then
BR_BOARD_CONFIG=raspberrypi_defconfig
BR_BOARD_LINUX_CONFIG_PATH=board/raspberrypi/
BOOT_IMG_SCRIPT=$(pwd)/scripts/raspi-bootdisk.sh
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP1_RBOX_NEW" ]; then
BR_BOARD_CONFIG=raspberrypi_defconfig
BR_BOARD_LINUX_CONFIG_PATH=board/raspberrypi/
BOOT_IMG_SCRIPT=$(pwd)/scripts/raspi-bootdisk.sh
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP1_DSPT" ]; then
BR_BOARD_CONFIG=raspberrypi_defconfig
BR_BOARD_LINUX_CONFIG_PATH=board/raspberrypi/
BOOT_IMG_SCRIPT=$(pwd)/scripts/raspi-bootdisk.sh
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP2" ]; then
BR_BOARD_CONFIG=raspberrypi2_defconfig
BR_BOARD_LINUX_CONFIG_PATH=board/raspberrypi2/
BOOT_IMG_SCRIPT=$(pwd)/scripts/raspi-bootdisk.sh
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP3" ]; then
BR_BOARD_CONFIG=raspberrypi3_defconfig
BR_BOARD_LINUX_CONFIG_PATH=board/raspberrypi3/
BOOT_IMG_SCRIPT=$(pwd)/scripts/raspi-bootdisk.sh
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP3_64" ]; then
BR_BOARD_CONFIG=raspberrypi3_64_defconfig
BR_BOARD_LINUX_CONFIG_PATH=board/raspberrypi3-64/
BOOT_IMG_SCRIPT=$(pwd)/scripts/raspi3-bootdisk.sh
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP3_64_ASTERISK" ]; then
BR_BOARD_CONFIG=raspberrypi3_64_defconfig
BR_BOARD_LINUX_CONFIG_PATH=board/raspberrypi3-64/
BOOT_IMG_SCRIPT=$(pwd)/scripts/raspi3-bootdisk.sh
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP3_QT5WE" ]; then
BR_BOARD_CONFIG=raspberrypi3_qt5we_defconfig
BR_BOARD_LINUX_CONFIG_PATH=board/raspberrypi3/
BOOT_IMG_SCRIPT=$(pwd)/scripts/raspi3-bootdisk.sh
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_BBB" ]; then
BR_BOARD_CONFIG=beaglebone_defconfig
BR_BOARD_LINUX_CONFIG_PATH=board/beaglebone/
BOOT_IMG_SCRIPT=$(pwd)/scripts/beagle-bootdisk.sh
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_BBBMMC" ]; then
BR_BOARD_CONFIG=beaglebone_defconfig
BR_BOARD_LINUX_CONFIG_PATH=board/beaglebone/
BOOT_IMG_SCRIPT=$(pwd)/scripts/beaglemmc-bootdisk.sh
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_BBBMMC_RBOX" ]; then
BR_BOARD_CONFIG=beaglebone_defconfig
BR_BOARD_LINUX_CONFIG_PATH=board/beaglebone/
BOOT_IMG_SCRIPT=$(pwd)/scripts/beaglemmc-bootdisk.sh
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_BTR_MEDIA" ]; then
BR_BOARD_CONFIG=qemu_x86_64_defconfig
BR_BOARD_LINUX_CONFIG_PATH=board/qemu/x86_64/
BOOT_IMG_SCRIPT=$(pwd)/scripts/grub2-bootdisk.sh
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_PC_X86_EFI" ]; then
BR_BOARD_CONFIG=pc_x86_64_efi_defconfig
BR_BOARD_LINUX_CONFIG_PATH=board/pc/
BOOT_IMG_SCRIPT=$(pwd)/scripts/grub2-bootdisk.sh
else #default is baytrail(x86_64)
BR_BOARD_CONFIG=qemu_x86_64_defconfig
BR_BOARD_LINUX_CONFIG_PATH=board/qemu/x86_64/
BOOT_IMG_SCRIPT=$(pwd)/scripts/grub2-bootdisk.sh
fi
svn up > /dev/null
BUILDNUMBER=$(LANG=en_US; svn info 2>&1 | grep "Last Changed Rev:" | sed -e 's/.* //')
TMP_BUILDNUM=$(printf "%05d" $BUILDNUMBER)
BUILDNUMBER=$(printf "$IMAGE_VERSION.%05d" $BUILDNUMBER)
[ ! -d "$BR_OUTPUT_FOLDER" ] && { echo "Error: output folder $BR_OUTPUT_FOLDER not found!" ; exit -1; }
BR_OUTPUT_FOLDER=$BR_OUTPUT_FOLDER/$IMAGE_VERSION
if [ $IMAGE_ONLY = 0 ]; then
mkdir -p $BR_OUTPUT_FOLDER
echo $BR_BOARD_SYSTEM_CONFIG > $BR_OUTPUT_FOLDER/BoardConfig.txt #remember which build-config was triggered
cp configs/$BR_BOARD_SYSTEM_CONFIG/$BR_BOARD_CONFIG $BR_FOLDER/configs/
cp configs/$BR_BOARD_SYSTEM_CONFIG/$BR_BOARD_LINUX_CONFIG $BR_FOLDER/$BR_BOARD_LINUX_CONFIG_PATH/
cp configs/$BR_BOARD_SYSTEM_CONFIG/busybox.config $BR_FOLDER/package/busybox/
#TODO: configs/$BR_BOARD_SYSTEM_CONFIG/uclibc.config $BR_FOLDER/package/uclibc/
#!!!!!!!temp solution for bbbmmc-rbox linux patch!!!!!!!!!!!!!!!!!!!!!!!
#cp sources/patches/bbb-linux-patches/* $BR_FOLDER/board/beaglebone/patches/linux/
pushd .
cd $BR_FOLDER
make O=$BR_OUTPUT_FOLDER $BR_BOARD_CONFIG BRBOX_RELVERSION=$IMAGE_VERSION BRBOX_BUILDNUM=$TMP_BUILDNUM BRBOX_SYSCONFIG=$BR_BOARD_SYSTEM_CONFIG
if [ $PREPARE_ONLY = 1 ]; then
popd
exit 0
fi
make O=$BR_OUTPUT_FOLDER BRBOX_RELVERSION=$IMAGE_VERSION BRBOX_BUILDNUM=$TMP_BUILDNUM BRBOX_SYSCONFIG=$BR_BOARD_SYSTEM_CONFIG
BUILD_RESULT=$?
popd
else
BUILD_RESULT=0 #for image-only, just set build-result as success
fi
[ "$BUILD_RESULT" != "0" ] && echo "Error!!! build failed!!!!" && exit 1
if [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP0" ]; then
./scripts/sudo-grub2-bootdisk.sh $BOOT_IMG_SCRIPT $BR_OUTPUT_FOLDER $BUILDNUMBER $BR_OUTPUT_FOLDER/images/$BOOTABLE_USB_IMG $SUDOPW
ROOTFS_TYPE=$ROOTFS_TYPE_RP1
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP0_MEDIA" ]; then
./scripts/sudo-grub2-bootdisk.sh $BOOT_IMG_SCRIPT $BR_OUTPUT_FOLDER $BUILDNUMBER $BR_OUTPUT_FOLDER/images/"$BR_BOARD_SYSTEM_CONFIG.img" $SUDOPW
ROOTFS_TYPE=$ROOTFS_TYPE_RP1
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP1" ]; then
./scripts/sudo-grub2-bootdisk.sh $BOOT_IMG_SCRIPT $BR_OUTPUT_FOLDER $BUILDNUMBER $BR_OUTPUT_FOLDER/images/$BOOTABLE_USB_IMG $SUDOPW
ROOTFS_TYPE=$ROOTFS_TYPE_RP1
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP1_SMSW" ]; then
./scripts/sudo-grub2-bootdisk.sh $BOOT_IMG_SCRIPT $BR_OUTPUT_FOLDER $BUILDNUMBER $BR_OUTPUT_FOLDER/images/$BOOTABLE_USB_IMG $SUDOPW
ROOTFS_TYPE=$ROOTFS_TYPE_RP1
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP1_RBOX" ]; then
./scripts/sudo-grub2-bootdisk.sh $BOOT_IMG_SCRIPT $BR_OUTPUT_FOLDER $BUILDNUMBER $BR_OUTPUT_FOLDER/images/$BOOTABLE_USB_IMG $SUDOPW
ROOTFS_TYPE=$ROOTFS_TYPE_RP1
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP1_RBOX_NEW" ]; then
./scripts/sudo-grub2-bootdisk.sh $BOOT_IMG_SCRIPT $BR_OUTPUT_FOLDER $BUILDNUMBER $BR_OUTPUT_FOLDER/images/$BOOTABLE_USB_IMG $SUDOPW
ROOTFS_TYPE=$ROOTFS_TYPE_RP1
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP1_DSPT" ]; then
./scripts/sudo-grub2-bootdisk.sh $BOOT_IMG_SCRIPT $BR_OUTPUT_FOLDER $BUILDNUMBER $BR_OUTPUT_FOLDER/images/$BOOTABLE_USB_IMG $SUDOPW
ROOTFS_TYPE=$ROOTFS_TYPE_RP1
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP2" ]; then
./scripts/sudo-grub2-bootdisk.sh $BOOT_IMG_SCRIPT $BR_OUTPUT_FOLDER $BUILDNUMBER $BR_OUTPUT_FOLDER/images/$BOOTABLE_USB_IMG $SUDOPW
ROOTFS_TYPE=$ROOTFS_TYPE_RP2
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP3" ]; then
./scripts/sudo-grub2-bootdisk.sh $BOOT_IMG_SCRIPT $BR_OUTPUT_FOLDER $BUILDNUMBER $BR_OUTPUT_FOLDER/images/$BOOTABLE_USB_IMG $SUDOPW
ROOTFS_TYPE=$ROOTFS_TYPE_RP3
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP3_64" ]; then
./scripts/sudo-grub2-bootdisk.sh $BOOT_IMG_SCRIPT $BR_OUTPUT_FOLDER $BUILDNUMBER $BR_OUTPUT_FOLDER/images/$BOOTABLE_USB_IMG $SUDOPW
ROOTFS_TYPE=$ROOTFS_TYPE_RP3
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP3_64_ASTERISK" ]; then
./scripts/sudo-grub2-bootdisk.sh $BOOT_IMG_SCRIPT $BR_OUTPUT_FOLDER $BUILDNUMBER $BR_OUTPUT_FOLDER/images/$BOOTABLE_USB_IMG $SUDOPW
ROOTFS_TYPE=$ROOTFS_TYPE_RP3
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_RP3_QT5WE" ]; then
#./scripts/sudo-grub2-bootdisk.sh $BOOT_IMG_SCRIPT $BR_OUTPUT_FOLDER $BUILDNUMBER $BR_OUTPUT_FOLDER/images/$BOOTABLE_USB_IMG $SUDOPW
ROOTFS_TYPE=$ROOTFS_TYPE_RP3
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_BBB" ]; then
./scripts/sudo-grub2-bootdisk.sh $BOOT_IMG_SCRIPT $BR_OUTPUT_FOLDER $BUILDNUMBER $BR_OUTPUT_FOLDER/images/$BOOTABLE_USB_IMG $SUDOPW
ROOTFS_TYPE=$ROOTFS_TYPE_BBB
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_BBBMMC" ]; then
./scripts/sudo-grub2-bootdisk.sh $BOOT_IMG_SCRIPT $BR_OUTPUT_FOLDER $BUILDNUMBER $BR_OUTPUT_FOLDER/images/$BOOTABLE_USB_IMG $SUDOPW
ROOTFS_TYPE=$ROOTFS_TYPE_BBB
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_BBBMMC_RBOX" ]; then
./scripts/sudo-grub2-bootdisk.sh $BOOT_IMG_SCRIPT $BR_OUTPUT_FOLDER $BUILDNUMBER $BR_OUTPUT_FOLDER/images/$BOOTABLE_USB_IMG $SUDOPW
ROOTFS_TYPE=$ROOTFS_TYPE_BBB
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_BTR_MEDIA" ]; then
./scripts/sudo-grub2-bootdisk.sh $BOOT_IMG_SCRIPT $BR_OUTPUT_FOLDER $BUILDNUMBER $BR_OUTPUT_FOLDER/images/$BOOTABLE_USB_IMG $SUDOPW
ROOTFS_TYPE=$ROOTFS_TYPE_BTR
elif [ $BR_BOARD_SYSTEM_CONFIG = "$BOARD_TYPE_PC_X86_EFI" ]; then
./scripts/sudo-grub2-bootdisk.sh $BOOT_IMG_SCRIPT $BR_OUTPUT_FOLDER $BUILDNUMBER $BR_OUTPUT_FOLDER/images/$BOOTABLE_USB_IMG $SUDOPW
ROOTFS_TYPE=$ROOTFS_TYPE_BTR
else
#baytrail
./scripts/sudo-grub2-bootdisk.sh $BOOT_IMG_SCRIPT $BR_OUTPUT_FOLDER $BUILDNUMBER $BR_OUTPUT_FOLDER/images/$BOOTABLE_USB_IMG $SUDOPW
#create Rootfs upgrade package
ROOTFS_TYPE=$ROOTFS_TYPE_BTR
fi
./scripts/brbox-mkuimg.sh -r $BR_OUTPUT_FOLDER/images/rootfs.tar.xz -v $BUILDNUMBER -o $BR_OUTPUT_FOLDER/images/"$BR_BOARD_SYSTEM_CONFIG.uimg" -m $BR_OUTPUT_FOLDER/host/usr/sbin/brbox-mkimage -t $ROOTFS_TYPE