Skip to content

Commit 9d924c9

Browse files
authored
pinebookpro: Fix shellcheck warnings for build script (elementary#461)
1 parent 4611302 commit 9d924c9

File tree

1 file changed

+84
-83
lines changed

1 file changed

+84
-83
lines changed

build-pinebookpro.sh

+84-83
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ kernsha256="f8d2a4fe938ff7faa565765a52e347e518a0712ca6ddd41b198bd9cc1626a724 li
1919
# Free space on rootfs in MiB
2020
free_space="500"
2121

22-
rootdir=`pwd`
23-
basedir=`pwd`/pinebook-pro
22+
rootdir=$(pwd)
23+
basedir=$(pwd)/pinebook-pro
2424

25-
mkdir -p ${basedir}
26-
cd ${basedir}
25+
mkdir -p "${basedir}"
26+
cd "${basedir}"
2727

2828
export DEBIAN_FRONTEND="noninteractive"
2929

@@ -56,7 +56,7 @@ cd ../u-boot-${ubootver}
5656
patch -Np1 -i "${rootdir}/pinebookpro/patches/uboot/0001-Add-regulator-needed-for-usage-of-USB.patch"
5757
patch -Np1 -i "${rootdir}/pinebookpro/patches/uboot/0002-Correct-boot-order-to-be-USB-SD-eMMC.patch"
5858
patch -Np1 -i "${rootdir}/pinebookpro/patches/uboot/0003-rk3399-light-pinebook-power-and-standby-leds-during-early-boot.patch"
59-
sed -i s/"CONFIG_BOOTDELAY=3"/"CONFIG_BOOTDELAY=0"/g configs/pinebook-pro-rk3399_defconfig
59+
sed -i 's/CONFIG_BOOTDELAY=3/CONFIG_BOOTDELAY=0/g' configs/pinebook-pro-rk3399_defconfig
6060

6161
unset CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
6262
CROSS_COMPILE=aarch64-linux-gnu- make pinebook-pro-rk3399_defconfig
@@ -75,29 +75,29 @@ work_dir="${basedir}/elementary-${architecture}"
7575
debootstrap --foreign --arch $architecture $codename elementary-$architecture http://ports.ubuntu.com/ubuntu-ports
7676

7777
# Add the QEMU emulator for running ARM executables
78-
cp /usr/bin/qemu-arm-static ${work_dir}/usr/bin/
78+
cp /usr/bin/qemu-arm-static "${work_dir}/usr/bin/"
7979

8080
# Run the second stage of the bootstrap in QEMU
81-
LANG=C chroot ${work_dir} /debootstrap/debootstrap --second-stage
81+
LANG=C chroot "${work_dir}" /debootstrap/debootstrap --second-stage
8282

8383
# Add the rest of the ubuntu repos
84-
cat << EOF > ${work_dir}/etc/apt/sources.list
84+
cat << EOF > "${work_dir}/etc/apt/sources.list"
8585
deb http://ports.ubuntu.com/ubuntu-ports $codename main restricted universe multiverse
8686
deb http://ports.ubuntu.com/ubuntu-ports $codename-updates main restricted universe multiverse
8787
EOF
8888

8989
# Copy in the elementary PPAs/keys/apt config
90-
for f in ${rootdir}/etc/config/archives/*.list; do cp -- "$f" "${work_dir}/etc/apt/sources.list.d/$(basename -- $f)"; done
91-
for f in ${rootdir}/etc/config/archives/*.key; do cp -- "$f" "${work_dir}/etc/apt/trusted.gpg.d/$(basename -- $f).asc"; done
92-
for f in ${rootdir}/etc/config/archives/*.pref; do cp -- "$f" "${work_dir}/etc/apt/preferences.d/$(basename -- $f)"; done
90+
for f in "${rootdir}"/etc/config/archives/*.list; do cp -- "$f" "${work_dir}/etc/apt/sources.list.d/$(basename -- "$f")"; done
91+
for f in "${rootdir}"/etc/config/archives/*.key; do cp -- "$f" "${work_dir}/etc/apt/trusted.gpg.d/$(basename -- "$f").asc"; done
92+
for f in "${rootdir}"/etc/config/archives/*.pref; do cp -- "$f" "${work_dir}/etc/apt/preferences.d/$(basename -- "$f")"; done
9393

9494
# Set codename/channel in added repos
95-
sed -i "s/@CHANNEL/$channel/" ${work_dir}/etc/apt/sources.list.d/*.list*
96-
sed -i "s/@BASECODENAME/$codename/" ${work_dir}/etc/apt/sources.list.d/*.list*
95+
sed -i "s/@CHANNEL/$channel/" "${work_dir}"/etc/apt/sources.list.d/*.list*
96+
sed -i "s/@BASECODENAME/$codename/" "${work_dir}"/etc/apt/sources.list.d/*.list*
9797

98-
echo "elementary" > ${work_dir}/etc/hostname
98+
echo "elementary" > "${work_dir}/etc/hostname"
9999

100-
cat << EOF > ${work_dir}/etc/hosts
100+
cat << EOF > "${work_dir}/etc/hosts"
101101
127.0.0.1 elementary localhost
102102
::1 localhost ip6-localhost ip6-loopback
103103
fe00::0 ip6-localnet
@@ -106,12 +106,12 @@ ff02::1 ip6-allnodes
106106
ff02::2 ip6-allrouters
107107
EOF
108108

109-
mount -t proc proc ${work_dir}/proc
110-
mount -o bind /dev/ ${work_dir}/dev/
111-
mount -o bind /dev/pts ${work_dir}/dev/pts
109+
mount -t proc proc "${work_dir}/proc"
110+
mount -o bind /dev/ "${work_dir}/dev/"
111+
mount -o bind /dev/pts "${work_dir}/dev/pts"
112112

113113
# Make a third stage that installs all of the metapackages
114-
cat << EOF > ${work_dir}/third-stage
114+
cat << EOF > "${work_dir}/third-stage"
115115
#!/bin/bash
116116
apt-get update
117117
apt-get --yes upgrade
@@ -123,8 +123,8 @@ apt-get --yes remove irqbalance
123123
rm -f /third-stage
124124
EOF
125125

126-
chmod +x ${work_dir}/third-stage
127-
LANG=C chroot ${work_dir} /third-stage
126+
chmod +x "${work_dir}/third-stage"
127+
LANG=C chroot "${work_dir}" /third-stage
128128

129129
# Pull in the wifi and bluetooth firmware from manjaro's git repository.
130130
git clone https://gitlab.manjaro.org/manjaro-arm/packages/community/ap6256-firmware.git
@@ -135,14 +135,14 @@ cp BCM4345C5.hcd brcm/BCM4345C5.hcd
135135
cp nvram_ap6256.txt brcm/brcmfmac43456-sdio.pine64,pinebook-pro.txt
136136
cp fw_bcm43456c5_ag.bin brcm/brcmfmac43456-sdio.bin
137137
cp brcmfmac43456-sdio.clm_blob brcm/brcmfmac43456-sdio.clm_blob
138-
mkdir -p ${work_dir}/lib/firmware/brcm/
139-
cp -a brcm/* ${work_dir}/lib/firmware/brcm/
138+
mkdir -p "${work_dir}/lib/firmware/brcm/"
139+
cp -a brcm/* "${work_dir}/lib/firmware/brcm/"
140140

141141
# Time to build the kernel
142-
cd ${work_dir}/usr/src
142+
cd "${work_dir}/usr/src"
143143

144144
wget "http://www.kernel.org/pub/linux/kernel/v5.x/linux-${linuxver}.tar.xz"
145-
echo $kernsha256 | sha256sum --check
145+
echo "$kernsha256" | sha256sum --check
146146

147147
tar xf "linux-${linuxver}.tar.xz"
148148
rm "linux-${linuxver}.tar.xz"
@@ -169,100 +169,101 @@ patch -Np1 -i "${rootdir}/pinebookpro/patches/kernel/0004-Bluetooth-hci_h5-Add-s
169169
patch -Np1 -i "${rootdir}/pinebookpro/patches/kernel/0005-Bluetooth-btrtl-add-support-for-the-RTL8723CS.patch"
170170
patch -Np1 -i "${rootdir}/pinebookpro/patches/kernel/0006-bluetooth-btrtl-Make-more-space-for-config-firmware-file-name.patch"
171171

172-
cp ${rootdir}/pinebookpro/config/kernel/pinebook-pro-5.8.config .config
172+
cp "${rootdir}/pinebookpro/config/kernel/pinebook-pro-5.8.config" .config
173173
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- oldconfig
174-
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc) Image modules
174+
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- "-j$(nproc)" Image modules
175175
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- DTC_FLAGS="-@" dtbs
176176

177-
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=${work_dir} modules_install
177+
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH="${work_dir}" modules_install
178178
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_DTBS_PATH="${work_dir}/boot/dtbs" dtbs_install
179179

180-
cp arch/arm64/boot/Image ${work_dir}/boot
180+
cp arch/arm64/boot/Image "${work_dir}/boot"
181181

182182
# clean up because otherwise we leave stuff around that causes external modules
183183
# to fail to build.
184184
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- mrproper
185-
cp ${rootdir}/pinebookpro/config/kernel/pinebook-pro-5.8.config .config
185+
cp "${rootdir}/pinebookpro/config/kernel/pinebook-pro-5.8.config" .config
186186

187187
# Fix up the symlink for building external modules
188188
# kernver is used to we don't need to keep track of what the current compiled
189189
# version is
190-
kernver=$(ls ${work_dir}/lib/modules)
191-
cd ${work_dir}/lib/modules/${kernver}/
190+
kernver=$(ls "${work_dir}/lib/modules")
191+
cd "${work_dir}/lib/modules/${kernver}/"
192192
rm build
193193
rm source
194194
ln -s /usr/src/linux build
195195
ln -s /usr/src/linux source
196-
cd ${basedir}
196+
cd "${basedir}"
197197

198198
# Build the initramfs for our kernel
199-
cat << EOF > ${work_dir}/build-initramfs
199+
cat << EOF > "${work_dir}/build-initramfs"
200200
#!/bin/bash
201201
update-initramfs -c -k ${kernver}
202202
rm -f /build-initramfs
203203
EOF
204204

205-
chmod +x ${work_dir}/build-initramfs
206-
LANG=C chroot ${work_dir} /build-initramfs
205+
chmod +x "${work_dir}/build-initramfs"
206+
LANG=C chroot "${work_dir}" /build-initramfs
207207

208-
mkdir ${work_dir}/hooks
209-
cp ${rootdir}/etc/config/hooks/live/*.chroot ${work_dir}/hooks
208+
mkdir "${work_dir}/hooks"
209+
cp "${rootdir}"/etc/config/hooks/live/*.chroot "${work_dir}/hooks"
210210

211-
for f in ${work_dir}/hooks/*
211+
hook_files="${work_dir}/hooks/*"
212+
for f in $hook_files
212213
do
213-
base=`basename ${f}`
214-
LANG=C chroot ${work_dir} "/hooks/${base}"
214+
base=$(basename "${f}")
215+
LANG=C chroot "${work_dir}" "/hooks/${base}"
215216
done
216217

217218
rm -r "${work_dir}/hooks"
218219

219220
# Calculate the space to create the image.
220-
root_size=$(du -s -B1K ${work_dir} | cut -f1)
221-
raw_size=$(($((${free_space}*1024))+${root_size}))
221+
root_size=$(du -s -B1K "${work_dir}" | cut -f1)
222+
raw_size=$(($((free_space*1024))+root_size))
222223

223224
# Create the disk and partition it
224225
echo "Creating image file"
225226

226227
# Sometimes fallocate fails if the filesystem or location doesn't support it, fallback to slower dd in this case
227-
if ! fallocate -l $(echo ${raw_size}Ki | numfmt --from=iec-i --to=si --format=%.1f) ${basedir}/${imagename}.img
228+
if ! fallocate -l "$(echo ${raw_size}Ki | numfmt --from=iec-i --to=si --format=%.1f)" "${basedir}/${imagename}.img"
228229
then
229-
dd if=/dev/zero of=${basedir}/${imagename}.img bs=1024 count=${raw_size}
230+
dd if=/dev/zero of="${basedir}/${imagename}.img" bs=1024 count=${raw_size}
230231
fi
231232

232-
parted ${imagename}.img --script -- mklabel msdos
233-
parted ${imagename}.img --script -- mkpart primary ext4 32M 100%
233+
parted "${imagename}.img" --script -- mklabel msdos
234+
parted "${imagename}.img" --script -- mkpart primary ext4 32M 100%
234235

235236
# Set the partition variables
236-
loopdevice=`losetup -f --show "${basedir}"/${imagename}.img`
237-
device=`kpartx -va ${loopdevice} | sed 's/.*\(loop[0-9]\+\)p.*/\1/g' | head -1`
237+
loopdevice=$(losetup -f --show "${basedir}/${imagename}.img")
238+
device=$(kpartx -va "${loopdevice}" | sed 's/.*\(loop[0-9]\+\)p.*/\1/g' | head -1)
238239
sleep 5
239240
device="/dev/mapper/${device}"
240-
rootp=${device}p1
241+
rootp="${device}p1"
241242

242243
# Create file systems
243-
mkfs.ext4 ${rootp}
244+
mkfs.ext4 "${rootp}"
244245

245246
# Create the dirs for the partitions and mount them
246-
mkdir -p "${basedir}"/root
247-
mount ${rootp} "${basedir}"/root
247+
mkdir -p "${basedir}/root"
248+
mount "${rootp}" "${basedir}/root"
248249

249250
# Create an fstab so that we don't mount / read-only.
250-
UUID=$(blkid -s UUID -o value ${rootp})
251-
echo "UUID=$UUID / ext4 errors=remount-ro 0 1" >> ${work_dir}/etc/fstab
251+
UUID=$(blkid -s UUID -o value "${rootp}")
252+
echo "UUID=$UUID / ext4 errors=remount-ro 0 1" >> "${work_dir}/etc/fstab"
252253

253-
mkdir ${work_dir}/boot/extlinux/
254+
mkdir "${work_dir}/boot/extlinux/"
254255

255256
# U-boot config
256-
cat << EOF > ${work_dir}/boot/extlinux/extlinux.conf
257+
cat << EOF > "${work_dir}/boot/extlinux/extlinux.conf"
257258
LABEL elementary ARM
258259
KERNEL /boot/Image
259260
FDT /boot/dtbs/rockchip/rk3399-pinebook-pro.dtb
260261
APPEND initrd=/boot/initrd.img-${kernver} console=ttyS2,1500000 console=tty1 root=UUID=${UUID} rw rootwait video=eDP-1:1920x1080@60 video=HDMI-A-1:1920x1080@60 quiet splash plymouth.ignore-serial-consoles
261262
EOF
262-
cd ${basedir}
263+
cd "${basedir}"
263264

264-
mkdir -p ${work_dir}/etc/udev/hwdb.d/
265-
cat << EOF > ${work_dir}/etc/udev/hwdb.d/10-usb-kbd.hwdb
265+
mkdir -p "${work_dir}/etc/udev/hwdb.d/"
266+
cat << EOF > "${work_dir}/etc/udev/hwdb.d/10-usb-kbd.hwdb"
266267
# Make the sleep and brightness Fn hotkeys work
267268
evdev:input:b0003v258Ap001E*
268269
KEYBOARD_KEY_700a5=brightnessdown
@@ -278,8 +279,8 @@ evdev:input:b0003v258Ap001Ee0110-e0,1,2,4,k110,111,112,r0,1,am4,lsfw
278279
EOF
279280

280281
# Mark the keyboard as internal, so that "disable when typing" works for the touchpad
281-
mkdir -p ${work_dir}/etc/libinput/
282-
cat << EOF > ${work_dir}/etc/libinput/local-overrides.quirks
282+
mkdir -p "${work_dir}/etc/libinput/"
283+
cat << EOF > "${work_dir}/etc/libinput/local-overrides.quirks"
283284
[Pinebook Pro Keyboard]
284285
MatchUdevType=keyboard
285286
MatchBus=usb
@@ -289,40 +290,40 @@ AttrKeyboardIntegration=internal
289290
EOF
290291

291292
# Make resume from suspend work
292-
sed -i s/"#SuspendState=mem standby freeze"/"SuspendState=freeze"/g ${work_dir}/etc/systemd/sleep.conf
293+
sed -i 's/#SuspendState=mem standby freeze/SuspendState=freeze/g' "${work_dir}/etc/systemd/sleep.conf"
293294

294295
# Disable ondemand scheduler so we can default to schedutil
295-
rm ${work_dir}/etc/systemd/system/multi-user.target.wants/ondemand.service
296+
rm "${work_dir}/etc/systemd/system/multi-user.target.wants/ondemand.service"
296297

297298
# Make sound work
298-
mkdir -p ${work_dir}/var/lib/alsa/
299-
cp ${rootdir}/pinebookpro/config/alsa/asound.state ${work_dir}/var/lib/alsa/
299+
mkdir -p "${work_dir}/var/lib/alsa/"
300+
cp "${rootdir}/pinebookpro/config/alsa/asound.state" "${work_dir}/var/lib/alsa/"
300301

301302
# Add a oneshot service to grow the rootfs on first boot
302-
install -m 755 -o root -g root ${rootdir}/pinebookpro/files/resizerootfs "${work_dir}/usr/sbin/resizerootfs"
303-
install -m 644 -o root -g root ${rootdir}/pinebookpro/files/resizerootfs.service "${work_dir}/etc/systemd/system"
303+
install -m 755 -o root -g root "${rootdir}/pinebookpro/files/resizerootfs" "${work_dir}/usr/sbin/resizerootfs"
304+
install -m 644 -o root -g root "${rootdir}/pinebookpro/files/resizerootfs.service" "${work_dir}/etc/systemd/system"
304305
mkdir -p "${work_dir}/etc/systemd/system/systemd-remount-fs.service.requires/"
305306
ln -s /etc/systemd/system/resizerootfs.service "${work_dir}/etc/systemd/system/systemd-remount-fs.service.requires/resizerootfs.service"
306307

307308
# Tweak the minimum frequencies of the GPU and CPU governors to get a bit more performance
308-
mkdir -p ${work_dir}/etc/tmpfiles.d/
309-
cat << EOF > ${work_dir}/etc/tmpfiles.d/cpufreq.conf
309+
mkdir -p "${work_dir}/etc/tmpfiles.d/"
310+
cat << EOF > "${work_dir}/etc/tmpfiles.d/cpufreq.conf"
310311
w- /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq - - - - 1200000
311312
w- /sys/devices/system/cpu/cpufreq/policy4/scaling_min_freq - - - - 1008000
312313
w- /sys/class/devfreq/ff9a0000.gpu/min_freq - - - - 600000000
313314
EOF
314315

315-
umount ${work_dir}/dev/pts
316-
umount ${work_dir}/dev/
317-
umount ${work_dir}/proc
316+
umount "${work_dir}/dev/pts"
317+
umount "${work_dir}/dev/"
318+
umount "${work_dir}/proc"
318319

319320
echo "Rsyncing rootfs into image file"
320-
rsync -HPavz -q ${work_dir}/ "${basedir}"/root/
321+
rsync -HPavz -q "${work_dir}/" "${basedir}/root/"
321322

322323
# Flash u-boot into the early sectors of the image
323-
cp "${basedir}"/u-boot-"${ubootver}"/idbloader.img "${basedir}"/u-boot-"${ubootver}"/u-boot.itb "${basedir}"/root/boot/
324-
dd if="${basedir}"/u-boot-"${ubootver}"/idbloader.img of=${loopdevice} seek=64 conv=notrunc
325-
dd if="${basedir}"/u-boot-"${ubootver}"/u-boot.itb of=${loopdevice} seek=16384 conv=notrunc
324+
cp "${basedir}/u-boot-${ubootver}/idbloader.img" "${basedir}/u-boot-${ubootver}/u-boot.itb" "${basedir}/root/boot/"
325+
dd if="${basedir}/u-boot-${ubootver}/idbloader.img" of="${loopdevice}" seek=64 conv=notrunc
326+
dd if="${basedir}/u-boot-${ubootver}/u-boot.itb" of="${loopdevice}" seek=16384 conv=notrunc
326327

327328
# u-boot and the root filesystem now reside in the .img file, clean up the sources of those so we have space to
328329
# compress the image
@@ -331,18 +332,18 @@ rm -rf "${work_dir}"
331332

332333
# Unmount partitions
333334
sync
334-
umount ${rootp}
335+
umount "${rootp}"
335336

336-
kpartx -dv ${loopdevice}
337-
losetup -d ${loopdevice}
337+
kpartx -dv "${loopdevice}"
338+
losetup -d "${loopdevice}"
338339

339340
echo "Compressing ${imagename}.img"
340-
xz -z "${basedir}"/${imagename}.img
341+
xz -z "${basedir}/${imagename}.img"
341342

342343
cd "${basedir}"
343344

344-
md5sum ${imagename}.img.xz > ${imagename}.md5.txt
345-
sha256sum ${imagename}.img.xz > ${imagename}.sha256.txt
345+
md5sum "${imagename}.img.xz" > "${imagename}.md5.txt"
346+
sha256sum "${imagename}.img.xz" > "${imagename}.sha256.txt"
346347

347348
cd "${rootdir}"
348349

0 commit comments

Comments
 (0)