From 79d015913feef9257bfd19f70d3733cefb0bb0cd Mon Sep 17 00:00:00 2001 From: Francis Rowe Date: Thu, 03 Mar 2016 15:10:29 -0500 Subject: Revert "Revert "Revert "iunfinished patch: copy coreboot per revision, not board""" When you have to revert a revert of a revert in the same 20 minute window then you my friend are an idiot. And that's exactly what I am. This reverts commit d105b4a8b74645d5936cf8a51b1517f3ba89fd26. --- (limited to 'resources/scripts/helpers') diff --git a/resources/scripts/helpers/build/clean/coreboot b/resources/scripts/helpers/build/clean/coreboot index 880447d..baaabbd 100755 --- a/resources/scripts/helpers/build/clean/coreboot +++ b/resources/scripts/helpers/build/clean/coreboot @@ -32,15 +32,6 @@ 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 @@ -55,7 +46,6 @@ 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 cfe21e6..d3e86cd 100755 --- a/resources/scripts/helpers/build/module/coreboot +++ b/resources/scripts/helpers/build/module/coreboot @@ -30,146 +30,6 @@ 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 125d11a..16bd1a8 100755 --- a/resources/scripts/helpers/download/coreboot +++ b/resources/scripts/helpers/download/coreboot @@ -36,6 +36,87 @@ 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 @@ -87,22 +168,39 @@ for payloads in ../../resources/libreboot/config/*; do 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 + make_coreboot_src_directory ${payload} ${boardname} .. - if [ -d "../${cbrevision}/${cbrevision}" ]; then - continue - # the directory already exists, no need to recreate it - fi + # patch that version + ( - make_coreboot_src_directory ${cbrevision} ${cbrevision} .. - done -done + 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}" + 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 # prepare directory for crossgcc rm -Rf "../../crossgcc/" @@ -117,8 +215,6 @@ 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) -- cgit v0.9.1