summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrancis Rowe <info@gluglug.org.uk>2016-03-03 15:00:28 (EST)
committer Francis Rowe <info@gluglug.org.uk>2016-03-03 15:00:28 (EST)
commitd105b4a8b74645d5936cf8a51b1517f3ba89fd26 (patch)
tree6e4bcfbf1952ed9dc7c111f42b870109c358e744
parent2f3d87aec85f5759180380cbc156472378164d11 (diff)
downloadlibreboot-d105b4a8b74645d5936cf8a51b1517f3ba89fd26.zip
libreboot-d105b4a8b74645d5936cf8a51b1517f3ba89fd26.tar.gz
libreboot-d105b4a8b74645d5936cf8a51b1517f3ba89fd26.tar.bz2
Revert "Revert "iunfinished patch: copy coreboot per revision, not board""
This reverts commit 2f3d87aec85f5759180380cbc156472378164d11.
-rwxr-xr-xresources/scripts/helpers/build/clean/coreboot10
-rwxr-xr-xresources/scripts/helpers/build/module/coreboot140
-rwxr-xr-xresources/scripts/helpers/download/coreboot118
3 files changed, 161 insertions, 107 deletions
diff --git a/resources/scripts/helpers/build/clean/coreboot b/resources/scripts/helpers/build/clean/coreboot
index baaabbd..880447d 100755
--- a/resources/scripts/helpers/build/clean/coreboot
+++ b/resources/scripts/helpers/build/clean/coreboot
@@ -32,6 +32,15 @@ printf "Cleaning the previous build of coreboot and its utilities\n"
for payload in coreboot/*; do
for board in "${payload}/"*; do
+ (
+ # Reset to master branch, where there are no board-specific patches applied
+ # also remove the .git history and so on
+ cd "${board}/"
+ git checkout master
+ rm -Rf ".git/"*
+ rm -Rf "3rdparty/"*/*.git
+ )
+
# Clean coreboot, of course
make -C "${board}/" distclean
@@ -46,6 +55,7 @@ for payload in coreboot/*; do
done
# Also do the same for the crossgcc version of coreboot
+# Note how we do not want to delete crossgcc. We only clean it
make -C "crossgcc/" crossgcc-clean
for util in {cbfs,ifd,nvram}tool cbmem; do
make -C "crossgcc/util/${util}/" clean
diff --git a/resources/scripts/helpers/build/module/coreboot b/resources/scripts/helpers/build/module/coreboot
index d3e86cd..cfe21e6 100755
--- a/resources/scripts/helpers/build/module/coreboot
+++ b/resources/scripts/helpers/build/module/coreboot
@@ -30,6 +30,146 @@ set -u -e
printf "Building the utilities in coreboot\n"
+for payloads in resources/libreboot/config/*; do
+
+ if [ ! -d "${payloads}/" ]; then
+ continue
+ fi
+
+ payload="${payloads##*/}"
+
+ for boardconfig in resources/libreboot/config/${payload}/*; do
+
+ if [ ! -d "${boardconfig}/" ]; then
+ continue
+ fi
+
+ boardname="${boardconfig##*/}"
+ cbrevision=$(cat "${boardconfig}/cbrevision")
+ vbootrevision=$(cat "${boardconfig}/vbootrevision")
+
+ reused_coreboot_patches="resources/libreboot/patch/coreboot/${cbrevision}/${payload}/${boardname}/reused.list"
+ reused_vboot_patches="resources/libreboot/patch/vboot/${vbootrevision}/${payload}/${boardname}/reused.list"
+ for reused_patches in "${reused_coreboot_patches}" "${reused_vboot_patches}"; do
+ if [ -f "${reused_patches}" ]; then
+ for patch in $(cat "${reused_patches}"); do
+ if [ ! -f "./${patch}" ]; then
+ printf "%s listed in %s does not exist\n" "${patch}" "${reused_patches}"
+ exit 1
+ fi
+ done
+ fi
+ done
+
+ done
+done
+
+# sanity check (check for invalid paths in the reused.list patch lists before proceeding)
+# in ascending filename order, apply patches from a directory
+apply_patches_from_directory() {
+ patch_directory="${1}" # directory containing the patch files
+
+ if [ -d "${patch_directory}" ]; then
+ for patch in ${patch_directory}/*.patch; do
+
+ if [ "${patch##*/}" = "*.patch" ]; then # oh so ugly
+ continue # ugly ugly ugly ugly ugly
+ fi # most hideous thing you've ever seen
+
+ git am "${patch}" || return 1
+ done
+ fi
+}
+# files listed in the file (if found) are absolute paths, relative to the root of the libreboot src directory
+# the file lists patches patches that should be applied
+apply_patches_from_file() {
+ patch_list="${1}" # file listing the paths to all the patches
+ libreboot_src_root="${2}" # path to the root of the libreboot_src directory
+
+ if [ -f "${patch_list}" ]; then
+ for patchname in $(cat "${patch_list}"); do
+ git am "${libreboot_src_root}/${patchname}" || return 1
+ done
+ fi
+}
+make_coreboot_src_directory() {
+ payload="${1}"
+ cbrevision="${2}"
+ firmwarepath="${3}" # libreboot_src/coreboot/
+(
+ cd "${firmwarepath}/"
+ # copy coreboot directory there
+ rm -Rf "${payload:?}/${cbrevision:?}/"
+ if [ ! -d "${payload}/" ]; then
+ mkdir -p "${payload}/"
+ fi
+ cp -R "coreboot/" "${payload}/${cbrevision}/"
+)
+}
+reset_at_revision() {
+ revision="${1}"
+ git reset --hard ${revision}
+}
+
+for payloads in ../../resources/libreboot/config/*; do
+
+ if [ ! -d "${payloads}/" ]; then
+ continue
+ fi
+
+ payload="${payloads##*/}"
+
+ for boardconfig in ../../resources/libreboot/config/${payload}/*; do
+
+ if [ ! -d "${boardconfig}/" ]; then
+ continue
+ fi
+
+ boardname="${boardconfig##*/}"
+ cbrevision=$(cat "${boardconfig}/cbrevision")
+ vbootrevision=$(cat "${boardconfig}/vbootrevision")
+
+ # the same vboot revision is always used for coreboot revision,
+ # so we don't need to wworry about checking for that here
+
+ if [ -d "../${cbrevision}" ]; then
+ continue
+ # the directory already exists, no need to recreate it
+ fi
+
+ make_coreboot_src_directory ${payload} ${boardname} ..
+
+ # patch that version
+ (
+
+ cd "../${payload}/${cbrevision}/"
+ reset_at_revision ${cbrevision}
+
+ # apply patches (coreboot, common to all systems using this revision)
+ apply_patches_from_directory "../../../resources/libreboot/patch/common/coreboot/${cbrevision}"
+ # apply patches re-used from other boards, before applying main patches (common patches for similar boards)
+ apply_patches_from_file "../../../resources/libreboot/patch/coreboot/${cbrevision}/${payload}/${boardname}/reused.list" ../../..
+ # apply patches (coreboot, machine-specific for this revision)
+ apply_patches_from_directory "../../../resources/libreboot/patch/coreboot/${cbrevision}/${payload}/${boardname}"
+
+ cd "3rdparty/vboot/"
+ # reset to known revision (vboot)
+ reset_at_revision ${vbootrevision}
+
+ # apply patches (vboot, common to all systems using this revision)
+ apply_patches_from_directory "../../../../../resources/libreboot/patch/common/vboot/${vbootrevision}"
+ # apply patches re-used from other boards, before applying main patches (common patches for similar boards)
+ apply_patches_from_file "../../../../../resources/libreboot/patch/vboot/${vbootrevision}/${payload}/${boardname}/reused.list" ../../../../..
+ # apply patches (vboot, machine-specific for this revision)
+ apply_patches_from_directory "../../../../../resources/libreboot/patch/vboot/${vbootrevision}/${payload}/${boardname}"
+
+ )
+ done
+done
+
+
+
+
# clean coreboot and crossgcc (source archives preserved)
for payload in coreboot/*; do
for board in "${payload}/"*; do
diff --git a/resources/scripts/helpers/download/coreboot b/resources/scripts/helpers/download/coreboot
index 16bd1a8..125d11a 100755
--- a/resources/scripts/helpers/download/coreboot
+++ b/resources/scripts/helpers/download/coreboot
@@ -36,87 +36,6 @@ fi
# coreboot revisios used for crossgcc
crossgccrevision="4351ace145c4069f9c93ca7541d6dfaf8300b53b"
-# sanity check (check for invalid paths in the reused.list patch lists before proceeding)
-for payloads in resources/libreboot/config/*; do
-
- if [ ! -d "${payloads}/" ]; then
- continue
- fi
-
- payload="${payloads##*/}"
-
- for boardconfig in resources/libreboot/config/${payload}/*; do
-
- if [ ! -d "${boardconfig}/" ]; then
- continue
- fi
-
- boardname="${boardconfig##*/}"
- cbrevision=$(cat "${boardconfig}/cbrevision")
- vbootrevision=$(cat "${boardconfig}/vbootrevision")
-
- reused_coreboot_patches="resources/libreboot/patch/coreboot/${cbrevision}/${payload}/${boardname}/reused.list"
- reused_vboot_patches="resources/libreboot/patch/vboot/${vbootrevision}/${payload}/${boardname}/reused.list"
- for reused_patches in "${reused_coreboot_patches}" "${reused_vboot_patches}"; do
- if [ -f "${reused_patches}" ]; then
- for patch in $(cat "${reused_patches}"); do
- if [ ! -f "./${patch}" ]; then
- printf "%s listed in %s does not exist\n" "${patch}" "${reused_patches}"
- exit 1
- fi
- done
- fi
- done
-
- done
-done
-
-# in ascending filename order, apply patches from a directory
-apply_patches_from_directory() {
- patch_directory="${1}" # directory containing the patch files
-
- if [ -d "${patch_directory}" ]; then
- for patch in ${patch_directory}/*.patch; do
-
- if [ "${patch##*/}" = "*.patch" ]; then # oh so ugly
- continue # ugly ugly ugly ugly ugly
- fi # most hideous thing you've ever seen
-
- git am "${patch}" || return 1
- done
- fi
-}
-# files listed in the file (if found) are absolute paths, relative to the root of the libreboot src directory
-# the file lists patches patches that should be applied
-apply_patches_from_file() {
- patch_list="${1}" # file listing the paths to all the patches
- libreboot_src_root="${2}" # path to the root of the libreboot_src directory
-
- if [ -f "${patch_list}" ]; then
- for patchname in $(cat "${patch_list}"); do
- git am "${libreboot_src_root}/${patchname}" || return 1
- done
- fi
-}
-make_coreboot_src_directory() {
- payload="${1}"
- boardname="${2}"
- firmwarepath="${3}" # libreboot_src/coreboot/
-(
- cd "${firmwarepath}/"
- # copy coreboot directory there
- rm -Rf "${payload:?}/${boardname:?}/"
- if [ ! -d "${payload}/" ]; then
- mkdir -p "${payload}/"
- fi
- cp -R "coreboot/" "${payload}/${boardname}/"
-)
-}
-reset_at_revision() {
- revision="${1}"
- git reset --hard ${revision}
-}
-
printf "Downloading coreboot, patching coreboot and deblobbing coreboot\n"
# This grabs current base used, and applies patches
@@ -168,40 +87,23 @@ for payloads in ../../resources/libreboot/config/*; do
continue
fi
- boardname="${boardconfig##*/}"
cbrevision=$(cat "${boardconfig}/cbrevision")
vbootrevision=$(cat "${boardconfig}/vbootrevision")
- make_coreboot_src_directory ${payload} ${boardname} ..
-
- # patch that version
- (
-
- cd "../${payload}/${boardname}/"
- reset_at_revision ${cbrevision}
-
- # apply patches (coreboot, common to all systems using this revision)
- apply_patches_from_directory "../../../resources/libreboot/patch/common/coreboot/${cbrevision}"
- # apply patches re-used from other boards, before applying main patches (common patches for similar boards)
- apply_patches_from_file "../../../resources/libreboot/patch/coreboot/${cbrevision}/${payload}/${boardname}/reused.list" ../../..
- # apply patches (coreboot, machine-specific for this revision)
- apply_patches_from_directory "../../../resources/libreboot/patch/coreboot/${cbrevision}/${payload}/${boardname}"
+ # the same vboot revision is always used for coreboot revision,
+ # so we don't need to wworry about checking for that here
- cd "3rdparty/vboot/"
- # reset to known revision (vboot)
- reset_at_revision ${vbootrevision}
+ if [ -d "../${cbrevision}/${cbrevision}" ]; then
+ continue
+ # the directory already exists, no need to recreate it
+ fi
- # apply patches (vboot, common to all systems using this revision)
- apply_patches_from_directory "../../../../../resources/libreboot/patch/common/vboot/${vbootrevision}"
- # apply patches re-used from other boards, before applying main patches (common patches for similar boards)
- apply_patches_from_file "../../../../../resources/libreboot/patch/vboot/${vbootrevision}/${payload}/${boardname}/reused.list" ../../../../..
- # apply patches (vboot, machine-specific for this revision)
- apply_patches_from_directory "../../../../../resources/libreboot/patch/vboot/${vbootrevision}/${payload}/${boardname}"
-
- )
+ make_coreboot_src_directory ${cbrevision} ${cbrevision} ..
done
done
+
+
# prepare directory for crossgcc
rm -Rf "../../crossgcc/"
make_coreboot_src_directory crossgcc ${crossgccrevision} ..
@@ -215,6 +117,8 @@ make_coreboot_src_directory crossgcc ${crossgccrevision} ..
cd ../
mv "${crossgccrevision}/" "crossgcc/"
mv "crossgcc/" ../../
+ cd ../
+ rm -Rf "crossgcc/"
)
# go back to _src/coreboot/ (containing all coreboot directories)