summaryrefslogtreecommitdiff
path: root/resources/scripts
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2023-08-16 21:34:21 +0100
committerLeah Rowe <leah@libreboot.org>2023-08-16 22:40:34 +0100
commit59dba6cfcdc6c154e4d46c14c42e7b6f0b84c7b5 (patch)
tree59147fae1f05a32c954772cd22ffab1405aaad0b /resources/scripts
parent2453c303e64b3b3c2480564106ea77d89af624d8 (diff)
merge coreboot/u-boot download logic to one script
they are fundamentally the same, in an lbmk context. they are downloaded in the same way, and compiled in the same way! (Kconfig infrastructure, board-specific code, the way submodules are used in git, etc) ~200 sloc reduction in resources/scripts the audit begins Signed-off-by: Leah Rowe <leah@libreboot.org>
Diffstat (limited to 'resources/scripts')
-rwxr-xr-xresources/scripts/build/boot/roms_helper28
-rwxr-xr-xresources/scripts/build/clean/cbutils12
-rwxr-xr-xresources/scripts/build/module/cbutils28
-rwxr-xr-xresources/scripts/build/payload/u-boot22
-rwxr-xr-xresources/scripts/build/release/roms12
-rwxr-xr-xresources/scripts/build/release/src19
-rwxr-xr-xresources/scripts/modify/coreboot/configs14
-rwxr-xr-xresources/scripts/modify/u-boot/configs14
-rwxr-xr-xresources/scripts/update/blobs/download8
-rwxr-xr-xresources/scripts/update/blobs/extract10
-rwxr-xr-xresources/scripts/update/blobs/inject4
-rwxr-xr-xresources/scripts/update/coreboot/configs14
-rwxr-xr-xresources/scripts/update/module/coreboot183
-rwxr-xr-xresources/scripts/update/module/mrc2
-rwxr-xr-xresources/scripts/update/module/u-boot262
-rwxr-xr-xresources/scripts/update/u-boot/configs26
16 files changed, 109 insertions, 549 deletions
diff --git a/resources/scripts/build/boot/roms_helper b/resources/scripts/build/boot/roms_helper
index 32a6e537..287d6dac 100755
--- a/resources/scripts/build/boot/roms_helper
+++ b/resources/scripts/build/boot/roms_helper
@@ -63,19 +63,19 @@ if [ ! -d "resources/coreboot/${board}" ]; then
exit 1
fi
-if [ ! -f "resources/coreboot/${board}/board.cfg" ]; then
- printf "build/roms: Missing board.cfg for target: %s\n" ${board}
+if [ ! -f "resources/coreboot/${board}/target.cfg" ]; then
+ printf "build/roms: Missing target.cfg for target: %s\n" ${board}
exit 1
fi
grub_scan_disk="undefined"
-cbtree="undefined"
-romtype="normal" # optional parameter in board.cfg. "normal" is default
+tree="undefined"
+romtype="normal" # optional parameter in target.cfg. "normal" is default
arch="undefined"
# Disable all payloads by default.
-# board.cfg files have to specifically enable [a] payload(s)
+# target.cfg files have to specifically enable [a] payload(s)
payload_grub="n"
payload_grub_withseabios="n" # seabios chainloaded from grub
payload_seabios="n"
@@ -86,8 +86,8 @@ payload_uboot="n"
uboot_config="undefined"
# ditto option whether to compile ada in crossgcc:
crossgcc_ada="y" # yes by default
-# Override the above defaults using board.cfg
-. "resources/coreboot/${board}/board.cfg"
+# Override the above defaults using target.cfg
+. "resources/coreboot/${board}/target.cfg"
if [ "${grub_scan_disk}" = "undefined" ]; then
printf "build/roms: Target '%s' does not define grub_scan_disk. " \
@@ -106,7 +106,7 @@ if [ "${grub_scan_disk}" != "both" ] && \
# erroring out would be silly. just use the default
fi
-if [ "${cbtree}" = "undefined" ]; then
+if [ "${tree}" = "undefined" ]; then
printf "build/roms: Target '%s' does not define a coreboot tree. " \
${board}
printf "Skipping build.\n"
@@ -196,17 +196,17 @@ fi
romdir="bin/${board}"
cbdir="coreboot/${board}"
-if [ "${board}" != "${cbtree}" ]; then
- cbdir="coreboot/${cbtree}"
+if [ "${board}" != "${tree}" ]; then
+ cbdir="coreboot/${tree}"
fi
-cbfstool="cbutils/${cbtree}/cbfstool"
+cbfstool="cbutils/${tree}/cbfstool"
corebootrom="${cbdir}/build/coreboot.rom"
seavgabiosrom="payload/seabios/seavgabios.bin"
-./build module cbutils ${cbtree} || exit 1
+./build module cbutils ${tree} || exit 1
if [ ! -d "${cbdir}" ]; then
- ./download coreboot ${cbtree}
+ ./fetch_trees coreboot ${tree}
fi
cat version > "${cbdir}/.coreboot-version"
@@ -554,7 +554,7 @@ mkGrubRom() {
backgroundfile="background1280x800.png"
if [ "${board}" = "x60" ] || [ "${board}" = "t60_intelgpu" ]; then
- # TODO: don't hardcode this. do it in board.cfg per board
+ # TODO: don't hardcode this. do it in target.cfg per board
backgroundfile="background1024x768.png"
fi
backgroundfile="resources/grub/background/${backgroundfile}"
diff --git a/resources/scripts/build/clean/cbutils b/resources/scripts/build/clean/cbutils
index 54659564..de9a588f 100755
--- a/resources/scripts/build/clean/cbutils
+++ b/resources/scripts/build/clean/cbutils
@@ -32,21 +32,21 @@ rm -Rf cbutils
[ ! -d "coreboot/" ] && exit 0
-for cbtree in coreboot/*; do
- if [ "${cbtree##*/}" = "coreboot" ]; then
+for tree in coreboot/*; do
+ if [ "${tree##*/}" = "coreboot" ]; then
continue
fi
- if [ ! -d "${cbtree}" ]; then
+ if [ ! -d "${tree}" ]; then
continue
fi
# Clean coreboot, of course
- make -C "${cbtree}/" distclean
+ make -C "${tree}/" distclean
# Clean its utilities as well
for util in cbfstool ifdtool nvramtool cbmem; do
- make distclean -C "${cbtree}/util/${util}/"
+ make distclean -C "${tree}/util/${util}/"
done
- make distclean -C "${cbtree}/payloads/libpayload/"
+ make distclean -C "${tree}/payloads/libpayload/"
done
printf "\n\n"
diff --git a/resources/scripts/build/module/cbutils b/resources/scripts/build/module/cbutils
index 8d4e2f2f..45739e95 100755
--- a/resources/scripts/build/module/cbutils
+++ b/resources/scripts/build/module/cbutils
@@ -41,34 +41,34 @@ build_for_mainboard() {
board="${1}"
[ ! -d "resources/coreboot/${board}" ] && \
continue
- [ ! -f "resources/coreboot/${board}/board.cfg" ] && \
+ [ ! -f "resources/coreboot/${board}/target.cfg" ] && \
continue
- cbtree="undefined"
- . "resources/coreboot/${board}/board.cfg" # source
- if [ "${cbtree}" = "undefined" ]; then
- printf "build/cbutils: improper cbtree definition for '%s'" \
+ tree="undefined"
+ . "resources/coreboot/${board}/target.cfg" # source
+ if [ "${tree}" = "undefined" ]; then
+ printf "build/cbutils: improper tree definition for '%s'" \
"${board}"
return 1
fi
- buildutils "${cbtree}" || return 1
+ buildutils "${tree}" || return 1
}
buildutils() {
- cbtree="${1}"
- if [ ! -d "coreboot/${cbtree}/" ]; then
- ./download coreboot $cbtree || return 1
+ tree="${1}"
+ if [ ! -d "coreboot/${tree}/" ]; then
+ ./fetch_trees coreboot $tree || return 1
fi
for util in cbfstool ifdtool; do
- [ -f "cbutils/${cbtree}/${util}" ] \
+ [ -f "cbutils/${tree}/${util}" ] \
&& continue
- if [ ! -d "cbutils/${cbtree}" ]; then
- mkdir -p "cbutils/${cbtree}" || return 1
+ if [ ! -d "cbutils/${tree}" ]; then
+ mkdir -p "cbutils/${tree}" || return 1
fi
- utildir="coreboot/${cbtree}/util/${util}"
+ utildir="coreboot/${tree}/util/${util}"
make distclean -C "${utildir}" || return 1
make -j$(nproc) -C "${utildir}" || return 1
- mv "${utildir}/${util}" "cbutils/${cbtree}" || return 1
+ mv "${utildir}/${util}" "cbutils/${tree}" || return 1
make distclean -C "${utildir}" || return 1
done
}
diff --git a/resources/scripts/build/payload/u-boot b/resources/scripts/build/payload/u-boot
index bff41400..a98d133d 100755
--- a/resources/scripts/build/payload/u-boot
+++ b/resources/scripts/build/payload/u-boot
@@ -26,7 +26,7 @@ RET=0
pdir="payload/u-boot"
ubdir=""
arch=""
-ubtree=""
+tree=""
config_name=""
board_dir=""
@@ -86,21 +86,21 @@ handle_dependencies()
rm -rf "${pdir}/${board}"
mkdir -p "${pdir}/${board}"
- ubtree="undefined"
+ tree="undefined"
arch="undefined"
- if [ ! -f "${board_dir}/board.cfg" ]; then
- printf "build/u-boot %s: Missing board.cfg.\n" \
+ if [ ! -f "${board_dir}/target.cfg" ]; then
+ printf "build/u-boot %s: Missing target.cfg.\n" \
"${board}"
RET=1
return 1
fi
- # Override the above defaults using board.cfg
- . "${board_dir}/board.cfg" # source
+ # Override the above defaults using target.cfg
+ . "${board_dir}/target.cfg" # source
- if [ "${ubtree}" = "undefined" ]; then
- printf "build/u-boot %s: ubtree undefined\n" \
+ if [ "${tree}" = "undefined" ]; then
+ printf "build/u-boot %s: tree undefined\n" \
"${board}"
RET=1
return 1
@@ -113,12 +113,12 @@ handle_dependencies()
fi
ubdir="u-boot/${board}"
- if [ "${board}" != "${ubtree}" ]; then
- ubdir="u-boot/${ubtree}"
+ if [ "${board}" != "${tree}" ]; then
+ ubdir="u-boot/${tree}"
fi
if [ ! -d "${ubdir}" ]; then
- ./download u-boot "$board"
+ ./fetch_trees u-boot "$board"
fi
if [ ! -d "${ubdir}" ]; then
diff --git a/resources/scripts/build/release/roms b/resources/scripts/build/release/roms
index c60070ec..faf07af0 100755
--- a/resources/scripts/build/release/roms
+++ b/resources/scripts/build/release/roms
@@ -24,14 +24,14 @@ set -u -e
projectname="$(cat projectname)"
version="version-unknown"
versiondate="version-date-unknown"
-cbtree="default"
+tree="default"
target=""
CONFIG_HAVE_MRC=""
CONFIG_HAVE_ME_BIN=""
CONFIG_KBC1126_FIRMWARE=""
CONFIG_INCLUDE_SMSC_SCH5545_EC_FW=""
-ifdtool="cbutils/${cbtree}/ifdtool"
-cbfstool="cbutils/${cbtree}/cbfstool"
+ifdtool="cbutils/${tree}/ifdtool"
+cbfstool="cbutils/${tree}/cbfstool"
main()
{
@@ -118,10 +118,10 @@ strip_archive()
{
romdir=${1}
- if [ ! -d coreboot/${cbtree} ]; then
- ./download coreboot ${cbtree} || exit 1
+ if [ ! -d coreboot/${tree} ]; then
+ ./fetch_trees coreboot ${tree} || exit 1
fi
- ./build module cbutils ${cbtree} || exit 1
+ ./build module cbutils ${tree} || exit 1
rm -Rf "${romdir}_tmp" # dirty hack, to reduce disk io later
# rather than using /tmp, which might not be tmpfs
diff --git a/resources/scripts/build/release/src b/resources/scripts/build/release/src
index 0e3237ab..95c0036f 100755
--- a/resources/scripts/build/release/src
+++ b/resources/scripts/build/release/src
@@ -23,13 +23,15 @@ set -u -e
projectname="$(cat projectname)"
-modlist="coreboot flashrom grub memtest86plus seabios me_cleaner u-boot"
-modlist="${modlist} bios_extract biosutilities uefitool"
+trees_gitclone_list="coreboot u-boot"
+simple_gitclone_list="flashrom grub memtest86plus seabios me_cleaner uefitool"
+simple_gitclone_list="${simple_gitclone_list} bios_extract biosutilities"
dirlist="resources util" # do not add blobs directory here. it's handled below
filelist="lbmk blobutil modify download build README.md COPYING Makefile update"
filelist="${filelist} version versiondate projectname .gitcheck gitclone"
+filelist="${filelist} fetch_trees"
version="version-unknown"
versiondate="version-date-unknown"
@@ -75,16 +77,19 @@ create_release_directory()
download_modules()
{
- for modname in ${modlist}; do
- if [ ! -d "${modname}/" ]; then
- ./download ${modname}
- fi
+ for modname in ${trees_gitclone_list}; do
+ [ ! -d "${modname}" ] && \
+ ./fetch_trees ${modname}
+ done
+ for modname in ${simple_gitclone_list}; do
+ [ ! -d "${modname}/" ] && \
+ ./download ${modname}
done
}
copy_files()
{
- for dir in ${modlist} ${dirlist}; do
+ for dir in ${simple_gitclone_list} ${dirlist}; do
cp -R "${dir}/" "${srcdir}/"
done
diff --git a/resources/scripts/modify/coreboot/configs b/resources/scripts/modify/coreboot/configs
index 665ee091..f6daa2f4 100755
--- a/resources/scripts/modify/coreboot/configs
+++ b/resources/scripts/modify/coreboot/configs
@@ -44,20 +44,20 @@ main()
modifyconf() {
board="$1"
- if [ ! -f "resources/coreboot/${board}/board.cfg" ]; then
- printf "\nmodify/config/coreboot: no board.cfg for: %s\n" \
+ if [ ! -f "resources/coreboot/${board}/target.cfg" ]; then
+ printf "\nmodify/config/coreboot: no target.cfg for: %s\n" \
"${board}"
fi
- cbtree=""
- . "resources/coreboot/${board}/board.cfg" # source
+ tree=""
+ . "resources/coreboot/${board}/target.cfg" # source
- if [ -z ${cbtree} ]; then
+ if [ -z ${tree} ]; then
return 0
fi
- cbdir="coreboot/${cbtree}"
+ cbdir="coreboot/${tree}"
if [ ! -d "${cbdir}" ]; then
- ./download coreboot ${cbtree}
+ ./fetch_trees coreboot ${tree}
fi
for cbcfg in resources/coreboot/${board}/config/*; do
diff --git a/resources/scripts/modify/u-boot/configs b/resources/scripts/modify/u-boot/configs
index 9572a5b8..4e16f353 100755
--- a/resources/scripts/modify/u-boot/configs
+++ b/resources/scripts/modify/u-boot/configs
@@ -44,22 +44,22 @@ main()
modifyconf()
{
board="$1"
- if [ ! -f "resources/u-boot/${board}/board.cfg" ]; then
- printf "\nmodify/config/u-boot: no board.cfg for: %s\n" \
+ if [ ! -f "resources/u-boot/${board}/target.cfg" ]; then
+ printf "\nmodify/config/u-boot: no target.cfg for: %s\n" \
"${board}"
return 0
fi
- ubtree="undefined"
- . "resources/u-boot/${board}/board.cfg" # source
+ tree="undefined"
+ . "resources/u-boot/${board}/target.cfg" # source
- if [ "${ubtree}" = "undefined" ]; then
+ if [ "${tree}" = "undefined" ]; then
return 0
fi
- ubdir="u-boot/${ubtree}"
+ ubdir="u-boot/${tree}"
if [ ! -d "${ubdir}" ]; then
- ./download u-boot ${ubtree}
+ ./fetch_trees u-boot ${tree}
fi
for ubcfg in resources/u-boot/${board}/config/*; do
diff --git a/resources/scripts/update/blobs/download b/resources/scripts/update/blobs/download
index 04d5bd31..343e2a81 100755
--- a/resources/scripts/update/blobs/download
+++ b/resources/scripts/update/blobs/download
@@ -63,8 +63,8 @@ main()
if [ ! -d "${boarddir}" ]; then
fail "Target not defined"
- elif [ ! -f "${boarddir}/board.cfg" ]; then
- fail "Target missing board.cfg"
+ elif [ ! -f "${boarddir}/target.cfg" ]; then
+ fail "Target missing target.cfg"
fi
detect_firmware || exit 0
@@ -78,7 +78,7 @@ detect_firmware()
{
set -- "${boarddir}/config/"*
. ${1} 2>/dev/null
- . "${boarddir}/board.cfg"
+ . "${boarddir}/target.cfg"
if [ "${CONFIG_HAVE_MRC}" = "y" ]; then
needs="${needs} MRC"
@@ -189,7 +189,7 @@ build_dependencies()
fi
if [ ! -d ${cbdir} ]; then
printf "downloading coreboot\n"
- ./download coreboot default \
+ ./fetch_trees coreboot default \
|| fail "could not download coreboot"
fi
if [ ! -d bios_extract ]; then
diff --git a/resources/scripts/update/blobs/extract b/resources/scripts/update/blobs/extract
index b32ec0ea..63d09c02 100755
--- a/resources/scripts/update/blobs/extract
+++ b/resources/scripts/update/blobs/extract
@@ -49,8 +49,8 @@ check_board()
fail "file does not exist: ${vendor_rom}"
elif [ ! -d "${boarddir}" ]; then
fail "build/roms ${board}: target not defined"
- elif [ ! -f "${boarddir}/board.cfg" ]; then
- fail "build/roms ${board}: missing board.cfg"
+ elif [ ! -f "${boarddir}/target.cfg" ]; then
+ fail "build/roms ${board}: missing target.cfg"
fi
}
@@ -66,11 +66,11 @@ build_dependencies()
if [ ! -d ${cbdir} ]; then
printf "downloading coreboot\n"
- ./download coreboot default \
+ ./fetch_trees coreboot default \
|| fail "could not download coreboot"
else
printf "coreboot already downloaded. Skipping.\n"
- printf "run ./download coreboot to manually overwrite\n"
+ printf "run ./fetch_trees coreboot to manually overwrite\n"
fi
if ! [ -f ${ifdtool} ]; then
@@ -86,7 +86,7 @@ extract_blobs()
set -- "${boarddir}/config/"*
. ${1} 2>/dev/null
- . "${boarddir}/board.cfg"
+ . "${boarddir}/target.cfg"
if [ "$CONFIG_HAVE_MRC" = "y" ]; then
printf 'haswell board detected, downloading mrc\n'
diff --git a/resources/scripts/update/blobs/inject b/resources/scripts/update/blobs/inject
index 97cb35a6..46d83309 100755
--- a/resources/scripts/update/blobs/inject
+++ b/resources/scripts/update/blobs/inject
@@ -142,7 +142,7 @@ build_dependencies()
{
if [ ! -d ${cbdir} ]; then
printf "downloading coreboot\n"
- ./download coreboot default
+ ./fetch_trees coreboot default
fi
./build module cbutils default || fail "could not build cbutils"
@@ -200,7 +200,7 @@ patch_rom()
set -- "${boarddir}/config/"*
. ${1} 2>/dev/null
- . "${boarddir}/board.cfg"
+ . "${boarddir}/target.cfg"
if [ "$CONFIG_HAVE_MRC" = "y" ]; then
inject_blob_intel_mrc "${rom}"
diff --git a/resources/scripts/update/coreboot/configs b/resources/scripts/update/coreboot/configs
index cd5299b3..c17a21bb 100755
--- a/resources/scripts/update/coreboot/configs
+++ b/resources/scripts/update/coreboot/configs
@@ -53,15 +53,15 @@ updateconf()
boarddir="${cbcfgsdir}/${board}"
- if [ -f "${boarddir}/board.cfg" ]; then
- cbtree="undefined"
- . "${boarddir}/board.cfg" # source
- if [ "${cbtree}" = "undefined" ]; then
+ if [ -f "${boarddir}/target.cfg" ]; then
+ tree="undefined"
+ . "${boarddir}/target.cfg" # source
+ if [ "${tree}" = "undefined" ]; then
return 0
fi
- cbdir="coreboot/${cbtree}"
+ cbdir="coreboot/${tree}"
if [ ! -d "${cbdir}" ]; then
- ./download coreboot ${cbtree}
+ ./fetch_trees coreboot ${tree}
fi
for cbcfg in "${boarddir}/config/"*; do
if [ ! -f "${cbcfg}" ]; then
@@ -74,7 +74,7 @@ updateconf()
make distclean -BC "${cbdir}"
done
else
- printf "\nupdate/config/coreboot: no board.cfg for: %s\n" \
+ printf "\nupdate/config/coreboot: no target.cfg for: %s\n" \
${board}
fi
}
diff --git a/resources/scripts/update/module/coreboot b/resources/scripts/update/module/coreboot
deleted file mode 100755
index 2e78636b..00000000
--- a/resources/scripts/update/module/coreboot
+++ /dev/null
@@ -1,183 +0,0 @@
-#!/usr/bin/env sh
-
-# helper script: download coreboot
-#
-# Copyright (C) 2014-2016,2020,2021,2023 Leah Rowe <info@minifree.org>
-# Copyright (C) 2022 Alper Nebi Yasak <alpernebiyasak@gmail.com>
-# Copyright (C) 2022 Ferass El Hafidi <vitali64pmemail@protonmail.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
-
-_board=""
-cbtree=""
-cbrevision=""
-
-cbcfgsdir="resources/coreboot"
-
-main()
-{
- rm -f ${cbcfgsdir}/*/seen
-
- printf "Downloading coreboot and (if available) applying patches\n"
-
- boards=""
- if [ $# -gt 0 ]; then
- boards=$@
- else
- for board in "${cbcfgsdir}/"*; do
- [ ! -d "${board}" ] && continue
- boards="${boards} ${board##*/}"
- done
- fi
- for board in ${boards}; do
- rm -f "${cbcfgsdir}"/*/seen
- download_coreboot_for_board "${board}"
- done
-
- rm -f ${cbcfgsdir}/*/seen
-}
-
-download_coreboot_for_board()
-{
- _board="${1}"
- cbtree="undefined"
- cbrevision="undefined"
-
- fetch_coreboot_config "${_board}" || exit 1
-
- rm -f "${cbcfgsdir}"/*/seen
-
- if [ -d "coreboot/${cbtree}" ]; then
- printf "REMARK: download/coreboot %s: exists. Skipping.\n" \
- ${cbtree}
- [ "${cbtree}" != "${1}" ] && \
- printf "(for board: '%s}')\n" ${1}
- return 0
- fi
-
- gitclone_coreboot_from_upstream || exit 1
-
- prepare_new_coreboot_tree "${1}" "${cbtree}" "${cbrevision}" \
- || exit 1
-}
-
-fetch_coreboot_config()
-{
- _board=${1}
-
- while true; do
- cbrevision="undefined"
- cbtree="undefined"
-
- check_config_for_board "${_board}" || return 1
-
- # This is to override $cbrevision and $cbtree
- . "${cbcfgsdir}/${_board}/board.cfg" || exit 1
-
- if [ "${_board}" != "${cbtree}" ]; then
- _board="${cbtree}"
- continue
- elif [ "${cbtree}" = "undefined" ]; then
- printf "ERROR: download/coreboot:"
- printf " tree name undefined for '%s\n'" \
- ${_board}
- return 1
- elif [ "${cbrevision}" = "undefined" ]; then
- printf "ERROR: download/coreboot:"
- printf " commit ID undefined for '%s'\n" \
- ${_board}
- return 1
- else
- break
- fi
- done
-}
-
-check_config_for_board()
-{
- _board=${1}
-
- if [ ! -f "${cbcfgsdir}/${_board}/board.cfg" ]; then
- printf "ERROR: download/coreboot: board.cfg does not"
- printf " exist for '%s'\n" ${_board}
- return 1
- elif [ -f "${cbcfgsdir}/${_board}/seen" ]; then
- printf "ERROR: download/coreboot: logical loop:"
- printf " '%s' board.cfg refers to another tree," ${_board}
- printf " which ultimately refers back to '%s'." ${_board}
- return 1
- fi
- touch "${cbcfgsdir}/${_board}/seen"
-}
-
-gitclone_coreboot_from_upstream()
-{
- [ ! -d coreboot ] && \
- mkdir -p coreboot
- [ ! -d coreboot ] && \
- return 1
- [ -d coreboot/coreboot ] && \
- return 0
- ./gitclone coreboot || \
- return 1
-}
-
-prepare_new_coreboot_tree()
-{
- target=${1}
- cbtree=${2}
- cbrevision=${3}
-
- printf "Preparing coreboot tree: %s\n" ${cbtree}
- [ "${cbtree}" != "${target}" ] && \
- printf "(for board: %s)\n" "${target}"
-
- cp -R coreboot/coreboot "coreboot/${cbtree}" || exit 1
- (
- cd "coreboot/${cbtree}" \
- || err "cannot cd to coreboot/${cbtree}"
- git reset --hard ${cbrevision} \
- || err "cannot reset coreboot revision for tree, ${cbtree}"
- git submodule update --init --checkout \
- || err "cannot update coreboot submodules for tree, ${cbtree}"
-
- for patch in ../../"${cbcfgsdir}"/"${cbtree}"/patches/*.patch; do
- [ ! -f "${patch}" ] && \
- continue
- if ! git am "${patch}"; then
- git am --abort
- err "cannot patch ${cbtree}"
- fi
- done
-
- # extra.sh can be used for anything
- # but should *only* be a last resort
- if [ -f "../../${cbcfgsdir}/${cbtree}/extra.sh" ]; then
- "../../${cbcfgsdir}/${cbtree}/extra.sh" || \
- err "${cbtree} extra.sh"
- fi
- )
-}
-
-err()
-{
- printf "ERROR: %s: %s\n" $0 $1 1>&2
- exit 1
-}
-
-main $@
diff --git a/resources/scripts/update/module/mrc b/resources/scripts/update/module/mrc
index d6a1c3a6..84e79f62 100755
--- a/resources/scripts/update/module/mrc
+++ b/resources/scripts/update/module/mrc
@@ -74,7 +74,7 @@ check_existing()
build_dependencies()
{
if [ ! -d "${cbdir}/" ]; then
- ./download coreboot default || return 1
+ ./fetch_trees coreboot default || return 1
fi
./build module cbutils default || return 1
return 0
diff --git a/resources/scripts/update/module/u-boot b/resources/scripts/update/module/u-boot
deleted file mode 100755
index 161608c9..00000000
--- a/resources/scripts/update/module/u-boot
+++ /dev/null
@@ -1,262 +0,0 @@
-#!/usr/bin/env sh
-
-# helper script: download u-boot
-#
-# Copyright (C) 2021 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
-# Copyright (C) 2022 Alper Nebi Yasak <alpernebiyasak@gmail.com>
-# Copyright (C) 2022 Ferass El Hafidi <vitali64pmemail@protonmail.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
-
-[ -f build_error ] && rm -f build_error
-
-list_supported_boards() {
- for board in resources/u-boot/*; do
- if [ -d ${board} ]; then
- echo "${board#resources/u-boot/}"
- fi
- done
-}
-
-downloadfor() {
- board="${1}"
-
- # The loop will always exit, but this while loop is crafted
- # such that a tree referencing a tree that references another tree is possible
- # (and so on)
- while true; do
- ubrevision="undefined"
- ubtree="undefined"
-
- if [ ! -f "resources/u-boot/${board}/board.cfg" ]; then
- printf "ERROR: %s: board.cfg does not exist for '%s'\n" \
- "download/u-boot" "${board}"
- return 1
- fi
-
- if [ -f "resources/u-boot/${board}/seen" ]; then
- printf "ERROR: %s: logical loop; '%s' board.cfg refers to another tree, which ultimately refers back to '%s'.\n" \
- "download/u-boot" "${board}" "${board}"
- return 1
- fi
-
- # This is to override $ubrevision and $ubtree
- . "resources/u-boot/${board}/board.cfg" || touch build_error
- if [ -f build_error ]; then
- printf "ERROR: %s: problem sourcing %s/board.cfg\n" \
- "download/u-boot" "${board}"
- return 1
- fi
- touch "resources/u-boot/${board}/seen"
-
- if [ "${board}" != "${ubtree}" ]; then
- board="${ubtree}"
- else
- if [ "${ubtree}" = "undefined" ]; then
- printf "ERROR: %s: tree name undefined for '%s\n'" \
- "download/u-boot" "${board}"
- return 1
- fi
-
- if [ "${ubrevision}" = "undefined" ]; then
- printf "ERROR: %s: commit ID undefined for '%s'\n" \
- "download/u-boot" "${board}"
- return 1
- fi
- break
- fi
- done
-
- rm -f resources/u-boot/*/seen
-
- ubtree="u-boot/${ubtree}"
- if [ -d "${ubtree}" ]; then
- printf \
- "REMARK: '%s' directory already exists. Skipping setup.\n" \
- "${ubtree}"
- if [ "${ubtree}" != "u-boot/${board}" ]; then
- printf "(for board: '${board}')\n"
- fi
- return 0
- fi
-
- if [ ! -d "u-boot" ]; then
- mkdir -p "u-boot"
- fi
-
- if [ ! -d "u-boot" ]; then
- printf \
- "ERROR: '%s' directory not created. Check file system permissions\n" \
- "u-boot"
- return 1
- fi
-
- uboot_dir="u-boot/u-boot"
- if [ ! -d "${uboot_dir}/.git" ] && [ -d "${uboot_dir}" ]; then
- rm -Rf "${uboot_dir}"
- fi
-
- if [ ! -d "${uboot_dir}" ]; then
- printf "Download u-boot from upstream:\n"
- git clone https://source.denx.de/u-boot/u-boot.git \
- "${uboot_dir}" || \
- rm -Rf "${uboot_dir}"
- if [ ! -d "${uboot_dir}" ]; then
- printf "WARNING: Upstream failed. Trying backup github repository:\n"
- git clone https://github.com/u-boot/u-boot.git \
- "${uboot_dir}" || \
- rm -Rf coreboot
- fi
- if [ ! -d "${uboot_dir}" ]; then
- printf \
- "ERROR: %s: Problem with git-clone. Network issue?\n" \
- "download/u-boot"
- return 1
- fi
- fi
-
- git -C "${uboot_dir}" fetch origin "${ubrevision}" || touch build_error
- if [ -f build_error ]; then
- printf \
- "ERROR: %s: Problem with git-fetch. Network issue?\n" \
- "download/u-boot"
- return 1
- fi
-
- cp -R "${uboot_dir}" "${ubtree}" || touch build_error
- if [ -f build_error ]; then
- printf "ERROR: %s: Unable to copy directory. Check file system permissions or free space.\n" \
- "download/u-boot"
- rm -Rf "${ubtree}/"
- return 1
- fi
-
- git -C "${ubtree}" reset --hard ${ubrevision} || \
- touch build_error
- if [ -f build_error ]; then
- printf \
- "ERROR: %s: Unable to reset to commit ID/tag '%s' for board '%s' on tree '%s'\n" \
- "download/u-boot" "${ubrevision}" "${board}" "${ubtree}"
- return 1
- fi
-
- git -C "${ubtree}" submodule update --init || touch build_error
- if [ -f build_error ]; then
- printf "ERROR: %s: Unable to update submodules for tree '%s'\n" \
- "${ubtree}"
- return 1
- fi
-
- for patch in resources/u-boot/${board}/patches/*.patch; do
- if [ ! -f "${patch}" ]; then
- continue
- fi
-
- git -C "${ubtree}" am "$(pwd)/${patch}" || touch build_error
- if [ -f build_error ]; then
- printf "ERROR: %s: Unable to apply patch '%s' for board '%s' on tree '%s'" \
- "download/u-boot" "${patch}" "${board}" "${ubtree}"
- git -C "${ubtree}" am --abort
- return 1
- fi
- done
-
- # extra.sh could be used to patch submodules, if you wanted to
- # It's impossible to predict what submodules will be available, and
- # it's rare that you'd want to patch them, so this is handled by
- # extra.sh on a per-board basis
- # In fact, extra.sh can be used for anything you want.
- if [ -f "resources/u-boot/${board}/extra.sh" ]; then
- ( cd "${ubtree}" && "../../resources/u-boot/${board}/extra.sh"; ) || touch build_error
- if [ -f build_error ]; then
- return 1
- fi
- return 0
- else
- return 0
- fi
-}
-
-strip_comments()
-{
- file="$1"
- # Remove comments
- sed 's/#.*//' "${file}" | \
- # Remove lines composed of whitespaces only
- sed '/^\W\+$/d' | \
- # Remove empty lines
- sed '/^$/d'
-}
-
-usage()
-{
- progname="./download u-boot"
-
- printf "Usage:\n"
- printf "\t%s # %s\n" \
- "${progname}" \
- "Download u-boot for all boards"
- printf "\t%s [board] # %s\n" \
- "${progname}" \
- "Download u-boot for the given board"
- printf "\t%s --list-boards # %s\n" \
- "${progname}" \
- "List supported boards"
- printf "\t%s --help # %s\n" \
- "${progname}" \
- "Prints this help"
-}
-
-download_uboot_board()
-{
- board="${1}"
- ubtree="u-boot/${board}"
-
- printf "Downloading u-boot "
- printf "and (if exist in build system) applying patches\n"
- downloadfor "${board}"
-
- rm -f "build_error"
- printf "\n\n"
-}
-
-if [ $# -eq 0 ] ; then
- for board in $(list_supported_boards); do
- download_uboot_board "${board}"
- done
- exit 0
-elif [ $# -eq 1 ] && [ "$1" = "--help" ] ; then
- usage
- exit 0
-elif [ $# -eq 1 ] && [ "$1" = "--list-boards" ] ; then
- list_supported_boards
- exit 0
-elif [ $# -eq 1 ] ; then
- for board in $(list_supported_boards) ; do
- if [ "$board" = "$1" ] ; then
- download_uboot_board "$1"
- exit 0
- fi
- done
-
- printf "Error: Board '${1}' is not supported\n"
-
- exit 1
-fi
-
-exit 0
diff --git a/resources/scripts/update/u-boot/configs b/resources/scripts/update/u-boot/configs
index b01ef0db..4dbb05bc 100755
--- a/resources/scripts/update/u-boot/configs
+++ b/resources/scripts/update/u-boot/configs
@@ -31,38 +31,38 @@ printf "Updating U-Boot configs\n"
# Build ROM images for supported boards
updateconf() {
board="$1"
- if [ -f "resources/u-boot/${board}/board.cfg" ]; then
- ubtree="undefined"
- . "resources/u-boot/${board}/board.cfg" # source
- if [ "${ubtree}" = "undefined" ]; then
+ if [ -f "resources/u-boot/${board}/target.cfg" ]; then
+ tree="undefined"
+ . "resources/u-boot/${board}/target.cfg" # source
+ if [ "${tree}" = "undefined" ]; then
return 0
fi
- if [ ! -d "u-boot/${ubtree}" ]; then
- ./download u-boot ${ubtree}
+ if [ ! -d "u-boot/${tree}" ]; then
+ ./fetch_trees u-boot ${tree}
fi
for ubcfg in resources/u-boot/${board}/config/*; do
if [ ! -f ${ubcfg} ]; then
continue
fi
(
- cd u-boot/${ubtree}/
+ cd u-boot/${tree}/
rm -f .config*
make distclean
)
- mv $ubcfg u-boot/${ubtree}/.config
+ mv $ubcfg u-boot/${tree}/.config
(
- cd u-boot/${ubtree}/
+ cd u-boot/${tree}/
make oldconfig
)
- mv u-boot/${ubtree}/.config $ubcfg
- rm -f u-boot/${ubtree}/.config*
+ mv u-boot/${tree}/.config $ubcfg
+ rm -f u-boot/${tree}/.config*
(
- cd u-boot/${ubtree}/
+ cd u-boot/${tree}/
make distclean
)
done
else
- printf "\nupdate/config/u-boot: no board.cfg for: %s\n" "${board}"
+ printf "\nupdate/config/u-boot: no target.cfg for: %s\n" "${board}"
fi
}