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>
btrfsvols
Leah Rowe 2023-09-02 23:42:34 +01:00
parent cec37747b7
commit 7c6b35cf95
7 changed files with 28 additions and 215 deletions

View File

@ -1,2 +1,3 @@
tree="default"
rev="62e2ad1ceafbfdf2c44d3dc1b6efc81e768a96b9" # v2023.01
arch="AArch64"

View File

@ -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 $@

View File

@ -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 $@

View File

@ -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 $@

View File

@ -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 $@

View File

@ -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}" || \

View File

@ -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