summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2023-09-02 23:42:34 +0100
committerLeah Rowe <leah@libreboot.org>2023-09-03 01:53:35 +0100
commit7c6b35cf95128a58b91a1d58b31469438fe1f5cc (patch)
treeef6e5eb392129240e31ea457b99253c9f35055b1
parentcec37747b75ee8e7fa146ff061b6a5d4aea98309 (diff)
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 <leah@libreboot.org>
-rw-r--r--resources/u-boot/default/target.cfg1
-rwxr-xr-xscript/build/clean/cbutils59
-rwxr-xr-xscript/build/clean/crossgcc45
-rwxr-xr-xscript/build/clean/seabios48
-rwxr-xr-xscript/build/clean/u-boot51
-rwxr-xr-xscript/build/release/src14
-rwxr-xr-xscript/handle/make/config25
7 files changed, 28 insertions, 215 deletions
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 <info@minifree.org>
-# Copyright (C) 2015 Klemens Nanni <contact@autoboot.org>
-#
-# 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 <http://www.gnu.org/licenses/>.
-#
-
-# 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 <info@minifree.org>
-# Copyright (C) 2015 Klemens Nanni <contact@autoboot.org>
-#
-# 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 <http://www.gnu.org/licenses/>.
-#
-
-[ "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 <info@minifree.org>
-#
-# 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 <http://www.gnu.org/licenses/>.
-#
-
-[ "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 <info@minifree.org>
-# Copyright (C) 2015 Klemens Nanni <contact@autoboot.org>
-# Copyright (C) 2022 Alper Nebi Yasak <alpernebiyasak@gmail.com>
-#
-# 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 <http://www.gnu.org/licenses/>.
-#
-
-[ "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