From 7c6b35cf95128a58b91a1d58b31469438fe1f5cc Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 2 Sep 2023 23:42:34 +0100 Subject: unify build/clean scripts: use handle/make instead The -c option is added for distclean, and -x for crossgcc-clean, in handle/make/config about 100 sloc removed from lbmk Signed-off-by: Leah Rowe --- resources/u-boot/default/target.cfg | 1 + script/build/clean/cbutils | 59 ------------------------------------- script/build/clean/crossgcc | 45 ---------------------------- script/build/clean/seabios | 48 ------------------------------ script/build/clean/u-boot | 51 -------------------------------- script/build/release/src | 14 ++++----- script/handle/make/config | 25 +++++++++++++--- 7 files changed, 28 insertions(+), 215 deletions(-) delete mode 100755 script/build/clean/cbutils delete mode 100755 script/build/clean/crossgcc delete mode 100755 script/build/clean/seabios delete mode 100755 script/build/clean/u-boot diff --git a/resources/u-boot/default/target.cfg b/resources/u-boot/default/target.cfg index 62287217..bfcb86d7 100644 --- a/resources/u-boot/default/target.cfg +++ b/resources/u-boot/default/target.cfg @@ -1,2 +1,3 @@ tree="default" rev="62e2ad1ceafbfdf2c44d3dc1b6efc81e768a96b9" # v2023.01 +arch="AArch64" diff --git a/script/build/clean/cbutils b/script/build/clean/cbutils deleted file mode 100755 index bdacc45a..00000000 --- a/script/build/clean/cbutils +++ /dev/null @@ -1,59 +0,0 @@ -#!/usr/bin/env sh - -# helper script: clean the dependencies that were built in coreboot -# -# Copyright (C) 2014-2016, 2020, 2023 Leah Rowe -# 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -# This script assumes that the current working directory is the root - -[ "x${DEBUG+set}" = 'xset' ] && set -v -set -u -e - -. "include/err.sh" - -main() -{ - printf "Cleaning the previous build of coreboot and its utilities\n" - - rm -Rf cbutils || err "cannot remove cbutils/" - [ ! -d "coreboot/" ] && exit 0 - - clean_cbutils -} - -clean_cbutils() -{ - for tree in coreboot/*; do - [ "${tree##*/}" = "coreboot" ] && continue - [ -d "${tree}" ] || continue - - # Clean coreboot, of course - make -C "${tree}/" distclean || \ - err "clean_cbutils: ${tree}: cannot distclean" - - # Clean its utilities as well - for util in cbfstool ifdtool nvramtool cbmem; do - make distclean -C "${tree}/util/${util}/" || \ - err "clean_cbutils: ${cbtree} ${util}: can't clean" - done - make distclean -C "${tree}/payloads/libpayload/" || \ - err "clean_cbutils: ${tree}: can't distclean libpayload" - done -} - -main $@ diff --git a/script/build/clean/crossgcc b/script/build/clean/crossgcc deleted file mode 100755 index c76d1849..00000000 --- a/script/build/clean/crossgcc +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env sh - -# helper script: clean the crossgcc builds -# -# Copyright (C) 2014-2016, 2020, 2023 Leah Rowe -# 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -[ "x${DEBUG+set}" = 'xset' ] && set -v -set -u -e - -. "include/err.sh" - -main() -{ - printf "Cleaning crossgcc builds in all coreboot archives\n" - [ ! -d "coreboot/" ] && exit 0 - - clean_crossgcc -} - -clean_crossgcc() -{ - for board in coreboot/*; do - [ -d "${board}" ] || continue - [ "${board##*/}" = "coreboot" ] && continue - make -C "${board}/" crossgcc-clean || \ - err "clean_crossgcc: ${board}: !make crossgcc-clean" - done -} - -main $@ diff --git a/script/build/clean/seabios b/script/build/clean/seabios deleted file mode 100755 index 0178a729..00000000 --- a/script/build/clean/seabios +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env sh - -# helper script: clean the dependencies that were built in seabios -# -# Copyright (C) 2015,2020,2021,2023 Leah Rowe -# -# 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -[ "x${DEBUG+set}" = 'xset' ] && set -v -set -u -e - -. "include/err.sh" - -# clean bucts -# -------------------------------------------------------- - -main() -{ - [ ! -d "elf/seabios" ] || rm -Rf elf/seabios || \ - err "cannot remove elf/seabios" - [ ! -d "seabios/" ] && exit 0 - - clean_seabios -} - -clean_seabios() -{ - for x in seabios/*; do - [ ! -d "${x}" ] && continue - [ "${x}" = "seabios/seabios" ] && continue - make -C "${x}" distclean || \ - err "clean_seabios: cannot distclean tree, ${x}" - done -} - -main $@ diff --git a/script/build/clean/u-boot b/script/build/clean/u-boot deleted file mode 100755 index 5deff216..00000000 --- a/script/build/clean/u-boot +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env sh - -# helper script: clean the u-boot builds -# -# Copyright (C) 2014-2016, 2020, 2023 Leah Rowe -# Copyright (C) 2015 Klemens Nanni -# Copyright (C) 2022 Alper Nebi Yasak -# -# 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -[ "x${DEBUG+set}" = 'xset' ] && set -v -set -u -e - -. "include/err.sh" - -main() -{ - printf "Cleaning u-boot builds for all boards\n" - clean_uboot -} - -clean_uboot() -{ - for board in u-boot/*; do - if [ "${board##*/}" = "u-boot" ] || [ ! -d "${board}" ]; then - continue - fi - - make -C "${board}/" distclean || \ - err "clean_uboot: cannot distclean ${board}" - - if [ -e "${board}/.git" ]; then - git -C "${board}" clean -fdx || \ - err "clean_uboot: ${board}: cannot clean git files" - fi - done -} - -main $@ diff --git a/script/build/release/src b/script/build/release/src index 4d5c3efe..9e2192ec 100755 --- a/script/build/release/src +++ b/script/build/release/src @@ -152,16 +152,14 @@ purge_files() cd "${srcdir}/" || \ err "purge_files 3: !cd ${srcdir}/" - for p in coreboot/*; do - [ -d "${p}" ] || continue - ./handle make file -c "${p}" || \ - err "purge_files 1: ${p}: !make distclean" - done - ./handle make file -c coreboot/default/util/kbc1126 || \ err "purge_files 1: default/util/kbc1126: ! make clean" - ./build clean all || \ - err "purge_files 1: ! ./build clean all" + ./handle make config -x coreboot || \ + err "purge_files: coreboot: cannot clean crossgcc files" + for p in u-boot seabios coreboot; do + ./handle make config -c "${p}" || \ + err "purge_files: ${p}: cannot clean the source trees" + done for p in bios_extract flashrom grub ich9utils uefitool; do ./handle make file -c "${p}" || \ diff --git a/script/handle/make/config b/script/handle/make/config index 1b395600..c148ebca 100755 --- a/script/handle/make/config +++ b/script/handle/make/config @@ -49,7 +49,7 @@ cbfstool="" main() { - while getopts b:m:u: option + while getopts b:m:u:c:x: option do case "${1}" in -b) @@ -61,6 +61,12 @@ main() -m) mode="menuconfig" shift ;; + -c) + mode="distclean" + shift ;; + -x) + mode="crossgcc-clean" + shift ;; *) fail "Invalid option" ;; esac @@ -139,9 +145,16 @@ handle_dependencies() fail "handle_dependencies: ${target_dir}: undefined cpu type" codedir="${project}/${tree}" - [ -d "${codedir}" ] || \ + if [ ! -d "${codedir}" ]; then + if [ "${mode}" = "distclean" ] || \ + [ "${mode}" = "crossgcc-clean" ]; then + printf "Directory '%s' does not exist; skipping clean" \ + "${codedir}" 1>&2 + exit 0 + fi ./update project trees "${project}" "${target}" || \ fail "handle_dependencies: can't fetch ${project}/${target}" + fi # u-boot and coreboot are both compiled with coreboot's crossgcc if [ "${project}" = "coreboot" ] || [ "${project}" = "u-boot" ]; then @@ -239,8 +252,12 @@ run_make_command() || fail "run_make_command: ${codedir}: can't set version" fi make -C "${codedir}" -j$(nproc) ${mode} || \ - fail "run_make_command: make-all: ${codedir} (${project}/${target})" - if [ "${mode}" = "oldconfig" ] || [ "${mode}" = "menuconfig" ]; then + fail "run_make: !make-${mode}: ${codedir} (${project}/${target})" + if [ -e "${codedir}/.git" ] && [ "${project}" = "u-boot" ] && \ + [ "${mode}" = "distclean" ]; then + git -C "${codedir}" clean -fdx || \ + err "run_make_command: ${codedir}: cannot clean u-boot git" + elif [ "${mode}" = "oldconfig" ] || [ "${mode}" = "menuconfig" ]; then cp "${codedir}/.config" "${config}" || \ fail "run_make: can't edit config: ${project}/${target}" fi -- cgit v1.2.1