From f787044642236917c9c4dbcaa48a6b0648097db0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ferass=20=27Vitali64=27=20EL=C2=A0HAFIDI?= Date: Fri, 16 Dec 2022 19:45:54 +0100 Subject: Do not rely on bashisms and behaviour undefined by the POSIX specification. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit By making lbmk fully POSIX-compliant, it will be easier to port lbmk to other systems implementing POSIX such as Alpine Linux and FreeBSD. Signed-off-by: Ferass 'Vitali64' EL HAFIDI --- resources/scripts/build/boot/roms | 14 ++++++++------ resources/scripts/build/boot/roms_helper | 22 +++++++++++----------- resources/scripts/build/clean/cbutils | 6 +++--- resources/scripts/build/clean/crossgcc | 4 ++-- resources/scripts/build/clean/flashrom | 4 ++-- resources/scripts/build/clean/grub | 2 +- resources/scripts/build/clean/ich9utils | 2 +- resources/scripts/build/clean/memtest86plus | 2 +- resources/scripts/build/clean/payloads | 2 +- resources/scripts/build/clean/rom_images | 2 +- resources/scripts/build/clean/seabios | 2 +- resources/scripts/build/clean/u-boot | 2 +- resources/scripts/build/dependencies/arch | 5 +++-- resources/scripts/build/dependencies/debian | 5 +++-- resources/scripts/build/dependencies/fedora35 | 5 +++-- resources/scripts/build/dependencies/ubuntu2004 | 5 +++-- resources/scripts/build/dependencies/void | 5 +++-- resources/scripts/build/descriptors/ich9m | 2 +- resources/scripts/build/module/cbutils | 6 +++--- resources/scripts/build/module/flashrom | 2 +- resources/scripts/build/module/grub | 2 +- resources/scripts/build/module/ich9utils | 2 +- resources/scripts/build/module/memtest86plus | 2 +- resources/scripts/build/payload/grub | 4 ++-- resources/scripts/build/payload/seabios | 9 +++++---- resources/scripts/build/payload/u-boot | 9 +++++---- resources/scripts/build/release/roms | 2 +- resources/scripts/build/release/src | 2 +- 28 files changed, 70 insertions(+), 61 deletions(-) (limited to 'resources/scripts/build') diff --git a/resources/scripts/build/boot/roms b/resources/scripts/build/boot/roms index d4368689..7f4e8422 100755 --- a/resources/scripts/build/boot/roms +++ b/resources/scripts/build/boot/roms @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # # helper script: build coreboot images with various payloads @@ -6,6 +6,7 @@ # Copyright (C) 2014, 2015, 2016, 2020, 2021 Leah Rowe # Copyright (C) 2015 Klemens Nanni # Copyright (C) 2022 Caleb La Grange +# Copyright (C) 2022 Ferass El Hafidi # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -80,6 +81,7 @@ buildrom() { } if [ $# -gt 0 ]; then + boards= firstoption="${1}" if [ "${firstoption}" = "help" ]; then help @@ -90,19 +92,19 @@ if [ $# -gt 0 ]; then exit 0 fi - while [[ $# > 0 ]]; do + while [ $# -gt 0 ]; do case ${1} in -d) - opts+=" -d ${2}" + opts="${opts} -d ${2}" shift ;; -p) - opts+=" -p ${2}" + opts="${opts} -p ${2}" shift ;; -k) - opts+=" -k ${2}" + opts="${opts} -k ${2}" shift ;; *) - boards+="${1} " ;; + boards="${boards} ${1} " ;; esac shift done diff --git a/resources/scripts/build/boot/roms_helper b/resources/scripts/build/boot/roms_helper index 9f99b859..5e279c48 100755 --- a/resources/scripts/build/boot/roms_helper +++ b/resources/scripts/build/boot/roms_helper @@ -1,9 +1,9 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # helper script: create ROM images for a given mainboard # # Copyright (C) 2020,2021 Leah Rowe -# Copyright (C) 2021 Vitali64 +# Copyright (C) 2021,2022 Ferass El Hafidi # Copyright (C) 2022 Caleb La Grange # Copyright (C) 2022 Alper Nebi Yasak # @@ -33,16 +33,16 @@ projectname="$(cat projectname)" displaymodes="" payloads="" keyboard_layouts="" -while [[ $# > 0 ]]; do +while [ $# -gt 0 ]; do case ${1} in -d) - displaymodes+="${2}" + displaymodes="${displaymodes}${2}" shift ;; -p) - payloads+="${2}" + payloads="${payloads}${2}" shift ;; -k) - keyboard_layouts+="${2}" + keyboard_layouts="${keyboard_layouts}${2}" shift ;; *) board=${1} ;; @@ -79,7 +79,7 @@ payload_memtest="n" payload_uboot="n" uboot_config="undefined" # Override the above defaults using board.cfg -source "resources/coreboot/${board}/board.cfg" +. "resources/coreboot/${board}/board.cfg" if [ "${grub_scan_disk}" = "undefined" ]; then printf "build/roms: Target %s does not define grub_scan_disk. Defaulting to 'both'.\n" "${board}" @@ -295,7 +295,7 @@ moverom() { printf "\nCreating new ROM image: %s\n" "${newrompath}" if [ "${cuttype}" = "4MiB IFD BIOS region" ]; then - dd if=${rompath} of=${newrompath} bs=1 skip=$[$(stat -c %s ${rompath}) - 0x400000] count=4194304 + dd if=${rompath} of=${newrompath} bs=1 skip=$(($(stat -c %s ${rompath}) - 0x400000)) count=4194304 else cp ${rompath} ${newrompath} fi @@ -316,8 +316,8 @@ moverom() { done if [ "${cuttype}" = "i945 laptop" ]; then - dd if=${newrompath} of=top64k.bin bs=1 skip=$[$(stat -c %s ${newrompath}) - 0x10000] count=64k - dd if=top64k.bin of=${newrompath} bs=1 seek=$[$(stat -c %s ${newrompath}) - 0x20000] count=64k conv=notrunc + dd if=${newrompath} of=top64k.bin bs=1 skip=$(($(stat -c %s ${newrompath}) - 0x10000)) count=64k + dd if=top64k.bin of=${newrompath} bs=1 seek=$(($(stat -c %s ${newrompath}) - 0x20000)) count=64k conv=notrunc rm -f top64k.bin fi } @@ -479,7 +479,7 @@ mkRomsWithGrub() { keymaps="resources/grub/keymap/*" else for keymapname in ${keyboard_layouts}; do - keymaps+="resources/grub/keymap/${keymapname}.gkb" + keymaps="${keymaps} resources/grub/keymap/${keymapname}.gkb" done fi for keymapfile in ${keymaps}; do diff --git a/resources/scripts/build/clean/cbutils b/resources/scripts/build/clean/cbutils index 98095eaa..0c0df0d3 100755 --- a/resources/scripts/build/clean/cbutils +++ b/resources/scripts/build/clean/cbutils @@ -1,9 +1,9 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # helper script: clean the dependencies that were built in coreboot # # Copyright (C) 2014, 2015, 2016, 2020 Leah Rowe -# Copyright (C) 2015 Klemens Nanni +# Copyright (C) 2015 Klemens Nanni # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -38,7 +38,7 @@ for board in coreboot/*; do make -C "${board}/" distclean # Clean its utilities as well - for util in {cbfs,ifd,nvram}tool cbmem; do + for util in cbfstool ifdtool nvramtool cbmem; do make -C "${board}/util/${util}/" clean done make -C "${board}/payloads/libpayload/" distclean diff --git a/resources/scripts/build/clean/crossgcc b/resources/scripts/build/clean/crossgcc index bd2f214d..7b7897ab 100755 --- a/resources/scripts/build/clean/crossgcc +++ b/resources/scripts/build/clean/crossgcc @@ -1,9 +1,9 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # helper script: clean the crossgcc builds # # Copyright (C) 2014, 2015, 2016, 2020 Leah Rowe -# Copyright (C) 2015 Klemens Nanni +# Copyright (C) 2015 Klemens Nanni # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/resources/scripts/build/clean/flashrom b/resources/scripts/build/clean/flashrom index b6e45cd4..744052fc 100755 --- a/resources/scripts/build/clean/flashrom +++ b/resources/scripts/build/clean/flashrom @@ -1,9 +1,9 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # helper script: clean the dependencies that were built in flashrom # # Copyright (C) 2014, 2015 Leah Rowe -# Copyright (C) 2015 Klemens Nanni +# Copyright (C) 2015 Klemens Nanni # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/resources/scripts/build/clean/grub b/resources/scripts/build/clean/grub index 4330dfca..dea2c2dd 100755 --- a/resources/scripts/build/clean/grub +++ b/resources/scripts/build/clean/grub @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # helper script: clean the dependencies that were built in GRUB # diff --git a/resources/scripts/build/clean/ich9utils b/resources/scripts/build/clean/ich9utils index c2c0aede..72f5895d 100755 --- a/resources/scripts/build/clean/ich9utils +++ b/resources/scripts/build/clean/ich9utils @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # helper script: clean the previous build of ich9utils # diff --git a/resources/scripts/build/clean/memtest86plus b/resources/scripts/build/clean/memtest86plus index e4d7b200..807b20a7 100755 --- a/resources/scripts/build/clean/memtest86plus +++ b/resources/scripts/build/clean/memtest86plus @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # helper script: clean the dependencies that were built in memtest86+ # diff --git a/resources/scripts/build/clean/payloads b/resources/scripts/build/clean/payloads index f4dab88a..4d77b9ea 100755 --- a/resources/scripts/build/clean/payloads +++ b/resources/scripts/build/clean/payloads @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # helper script: nothing to see here, forks! # diff --git a/resources/scripts/build/clean/rom_images b/resources/scripts/build/clean/rom_images index cac69226..cd41d499 100755 --- a/resources/scripts/build/clean/rom_images +++ b/resources/scripts/build/clean/rom_images @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # helper script: delete the ROM images # diff --git a/resources/scripts/build/clean/seabios b/resources/scripts/build/clean/seabios index 6362a311..0757db9d 100755 --- a/resources/scripts/build/clean/seabios +++ b/resources/scripts/build/clean/seabios @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # helper script: clean the dependencies that were built in seabios # diff --git a/resources/scripts/build/clean/u-boot b/resources/scripts/build/clean/u-boot index d6ae7193..05744a93 100755 --- a/resources/scripts/build/clean/u-boot +++ b/resources/scripts/build/clean/u-boot @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # helper script: clean the u-boot builds # diff --git a/resources/scripts/build/dependencies/arch b/resources/scripts/build/dependencies/arch index 27be6f6f..99435394 100755 --- a/resources/scripts/build/dependencies/arch +++ b/resources/scripts/build/dependencies/arch @@ -1,9 +1,10 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # arch script: installs build dependencies for Arch Linux # # Copyright (C) 2021 Melissa Goad # Copyright (C) 2022 Caleb La Grange +# Copyright (C) 2022 Ferass El Hafidi # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -20,7 +21,7 @@ # -if [ $EUID -ne 0 ]; then +if [ "$(id -u)" -ne 0 ]; then printf "This script must be run as root\n" exit 1 fi diff --git a/resources/scripts/build/dependencies/debian b/resources/scripts/build/dependencies/debian index e69aa568..92757b7b 100755 --- a/resources/scripts/build/dependencies/debian +++ b/resources/scripts/build/dependencies/debian @@ -1,9 +1,10 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # ubuntu2004 script: installs build dependencies for Ubuntu 20.04 # # Copyright (C) 2014, 2015, 2021 Leah Rowe # Copyright (C) 2022 Caleb La Grange +# Copyright (C) 2022 Ferass El Hafidi # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -18,7 +19,7 @@ # along with this program. If not, see . # -if [ $EUID -ne 0 ]; then +if [ "$(id -u)" -ne 0 ]; then printf "This script must be run as root\n" exit 1 fi diff --git a/resources/scripts/build/dependencies/fedora35 b/resources/scripts/build/dependencies/fedora35 index 6e6d73aa..c88a4dc5 100755 --- a/resources/scripts/build/dependencies/fedora35 +++ b/resources/scripts/build/dependencies/fedora35 @@ -1,10 +1,11 @@ -#!/bin/bash +#!/usr/bin/env sh # Fedora script: installs build dependencies for Fedora # # Copyright (C) 2021 Melody Goad # Copyright (C) 2021 Wei Mingzhi # Copyright (C) 2022 Caleb La Grange +# Copyright (C) 2022 Ferass El Hafidi # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -20,7 +21,7 @@ # along with this program. If not, see . # -if [ $EUID -ne 0 ]; then +if [ "$(id -u)" -ne 0 ]; then printf "This script must be run as root\n" exit 1 fi diff --git a/resources/scripts/build/dependencies/ubuntu2004 b/resources/scripts/build/dependencies/ubuntu2004 index abbe23a3..170f6007 100755 --- a/resources/scripts/build/dependencies/ubuntu2004 +++ b/resources/scripts/build/dependencies/ubuntu2004 @@ -1,9 +1,10 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # ubuntu2004 script: installs build dependencies for Ubuntu 20.04 # # Copyright (C) 2014, 2015, 2021 Leah Rowe # Copyright (C) 2022 Caleb La Grange +# Copyright (C) 2022 Ferass El Hafidi # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -18,7 +19,7 @@ # along with this program. If not, see . # -if [ $EUID -ne 0 ]; then +if [ "$(id -u)" -ne 0 ]; then printf "This script must be run as root\n" exit 1 fi diff --git a/resources/scripts/build/dependencies/void b/resources/scripts/build/dependencies/void index b94345c1..b556351a 100755 --- a/resources/scripts/build/dependencies/void +++ b/resources/scripts/build/dependencies/void @@ -1,8 +1,9 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # void script: installs build dependencies for Void Linux # # Copyright (C) 2021 Caleb La Grange +# Copyright (C) 2022 Ferass El Hafidi # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -18,7 +19,7 @@ # along with this program. If not, see . # -if [ $EUID -ne 0 ]; then +if [ "$(id -u)" -ne 0 ]; then printf "This script must be run as root\n" exit 1 fi diff --git a/resources/scripts/build/descriptors/ich9m b/resources/scripts/build/descriptors/ich9m index 69359988..c22812b1 100755 --- a/resources/scripts/build/descriptors/ich9m +++ b/resources/scripts/build/descriptors/ich9m @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # Copyright (C) 2020 Leah Rowe # diff --git a/resources/scripts/build/module/cbutils b/resources/scripts/build/module/cbutils index 15d9721b..e0a8d014 100755 --- a/resources/scripts/build/module/cbutils +++ b/resources/scripts/build/module/cbutils @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # helper script: build various coreboot utilities # @@ -34,7 +34,7 @@ buildutils() { printf "build/cbutils: coreboot/%s not found. Exiting\n" "${cbtree}" return 1 fi - for util in {cbfs,ifd}tool; do + for util in cbfstool ifdtool; do ( cd "coreboot/${cbtree}/util/${util}/" make -j$(nproc) || return 1 @@ -52,7 +52,7 @@ buildfromboardconfig() { continue fi cbtree="undefined" - source "resources/coreboot/${board}/board.cfg" + . "resources/coreboot/${board}/board.cfg" # source if [ "${cbtree}" = "undefined" ]; then printf "build/cbutils: improper cbtree definition for '%s'" "${board}" return 1 diff --git a/resources/scripts/build/module/flashrom b/resources/scripts/build/module/flashrom index c1641d94..37f57ce0 100755 --- a/resources/scripts/build/module/flashrom +++ b/resources/scripts/build/module/flashrom @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # helper script: builds flashrom source code # diff --git a/resources/scripts/build/module/grub b/resources/scripts/build/module/grub index 62ce0e25..da4e0e0f 100755 --- a/resources/scripts/build/module/grub +++ b/resources/scripts/build/module/grub @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # helper script: builds GRUB2 source code # diff --git a/resources/scripts/build/module/ich9utils b/resources/scripts/build/module/ich9utils index 40e1c8e6..b00e0a7d 100755 --- a/resources/scripts/build/module/ich9utils +++ b/resources/scripts/build/module/ich9utils @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # helper script: build ich9utils # diff --git a/resources/scripts/build/module/memtest86plus b/resources/scripts/build/module/memtest86plus index 065eec88..ecefd16a 100755 --- a/resources/scripts/build/module/memtest86plus +++ b/resources/scripts/build/module/memtest86plus @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # helper script: builds memtest86+ source code # diff --git a/resources/scripts/build/payload/grub b/resources/scripts/build/payload/grub index 7e4f810a..e7cca4a8 100755 --- a/resources/scripts/build/payload/grub +++ b/resources/scripts/build/payload/grub @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # generate GRUB ELF files (coreboot payload) and configuration files # @@ -22,7 +22,7 @@ set -u -e # This is where GRUB is expected to be (outside of the grub-assemble, instead in main checkout) -source "resources/grub/modules.list" +. "resources/grub/modules.list" # source printf "Creating GRUB payloads and configuration files\n" diff --git a/resources/scripts/build/payload/seabios b/resources/scripts/build/payload/seabios index 9120bfff..af2840d8 100755 --- a/resources/scripts/build/payload/seabios +++ b/resources/scripts/build/payload/seabios @@ -1,8 +1,9 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # helper script: builds SeaBIOS source code # # Copyright (C) 2020, 2021 Leah Rowe +# Copyright (C) 2022 Ferass El Hafidi # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -38,7 +39,7 @@ fi cd seabios/ # for libgfxinit setup: -[[ -f Makefile ]] && make distclean +[ -f Makefile ] && make distclean cp ../resources/seabios/config/libgfxinit .config make silentoldconfig -j$(nproc) make -j$(nproc) @@ -47,7 +48,7 @@ mv out/vgabios.bin ../payload/seabios/seavgabios.bin rm .config # for vgarom setup: -[[ -f Makefile ]] && make distclean +[ -f Makefile ] && make distclean cp ../resources/seabios/config/vgarom .config make silentoldconfig -j$(nproc) make -j$(nproc) @@ -55,7 +56,7 @@ mv out/bios.bin.elf ../payload/seabios/seabios_vgarom.elf rm .config # clean it again. gotta keep it clean! -[[ -f Makefile ]] && make distclean +[ -f Makefile ] && make distclean printf "Done! SeaBIOS files are in payload/seabios/\n\n" diff --git a/resources/scripts/build/payload/u-boot b/resources/scripts/build/payload/u-boot index 3ead3a6c..e5417bab 100755 --- a/resources/scripts/build/payload/u-boot +++ b/resources/scripts/build/payload/u-boot @@ -1,9 +1,9 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # helper script: builds U-Boot source code # # Copyright (C) 2020, 2021 Leah Rowe -# Copyright (C) 2021 Vitali64 +# Copyright (C) 2021, 2022 Ferass El Hafidi # Copyright (C) 2022 Alper Nebi Yasak # # This program is free software: you can redistribute it and/or modify @@ -63,7 +63,7 @@ for board in "$@"; do fi # Override the above defaults using board.cfg - source "${board_dir}/board.cfg" + . "${board_dir}/board.cfg" # source if [ "${ubtree}" = "undefined" ]; then printf "%s: Target %s does not define a U-Boot tree. Skipping build.\n" \ @@ -119,7 +119,8 @@ for board in "$@"; do make -C "${ubdir}" olddefconfig make -C "${ubdir}" -j"$(nproc)" all - for f in "${ubdir}"/u-boot{,.bin,.dtb,.img,.itb,.elf}; do + for f in "${ubdir}"/u-boot "${ubdir}"/u-boot.bin "${ubdir}"/u-boot.dtb \ + "${ubdir}"/u-boot.img "${ubdir}"/u-boot.itb "${ubdir}"/u-boot.elf; do if [ -f "$f" ]; then mv "$f" "${dest_dir}/" fi diff --git a/resources/scripts/build/release/roms b/resources/scripts/build/release/roms index 730efb4f..dce21f16 100755 --- a/resources/scripts/build/release/roms +++ b/resources/scripts/build/release/roms @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # # helper script: generate release archive (ROM images) diff --git a/resources/scripts/build/release/src b/resources/scripts/build/release/src index 072c8fef..46b1b98a 100755 --- a/resources/scripts/build/release/src +++ b/resources/scripts/build/release/src @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # # helper script: generate release archive (source code) -- cgit v1.2.1