This way it can be used on any coreboot directory. The script is expected to run inside coreboot's top directory.
It was also cleaned up while doing it: * Converted to use less commands * Clarified comments and prints The respective documentation was also updated. Signed-off-by: Denis 'GNUtoo' Carikli <[email protected]> --- Changes since V2: The download script now handle the new usage of deblob. --- .gitignore | 1 - docs/src/maintain/index.texi | 10 ++++--- resources/scripts/helpers/download/coreboot | 2 +- resources/utilities/coreboot-libre/deblob | 4 --- resources/utilities/coreboot-libre/findblobs | 41 +++++++++++----------------- 5 files changed, 23 insertions(+), 35 deletions(-) diff --git a/.gitignore b/.gitignore index 42c9c46..9dfb21a 100644 --- a/.gitignore +++ b/.gitignore @@ -21,7 +21,6 @@ /resources/utilities/ich9deblob/obj/*/*.o /resources/utilities/ich9deblob/mkdescriptor*.[ch] /resources/utilities/ich9deblob/mkgbe*.[ch] -/resources/utilities/coreboot-libre/tocheck /resources/utilities/grub-assemble/grub_*.elf /mkgbe.[ch] /*.bin diff --git a/docs/src/maintain/index.texi b/docs/src/maintain/index.texi index a6a9f5a..55b495c 100644 --- a/docs/src/maintain/index.texi +++ b/docs/src/maintain/index.texi @@ -124,11 +124,11 @@ Check all coreboot file names/paths in @emph{deblob}; if any of them no longer e Check all coreboot file names/paths in @emph{nonblobs}; if any of them no longer exist at that name/path in the coreboot tree that you downloaded, delete the reference in @emph{nonblobs}. -Now, back in the main root directory of libreboot (git repository), run the deblob script. This is to prevent the @emph{findblobs} scripts from finding the blobs that are already deleted when running the @emph{deblob} script. Like so:@* $ @strong{./resources/utilities/coreboot-libre/deblob} +Then run the deblob script. This is to prevent the @emph{findblobs} scripts from finding the blobs that are already deleted when running the @emph{deblob} script. Like so:@* $ @strong{../resources/utilities/coreboot-libre/deblob} -Now search for new blobs:@* $ @strong{cd resources/utilities/coreboot-libre/}@* $ @strong{./findblobs}@* WARNING: this will take a @strong{*long*} time. Be patient! What this will do is look through the coreboot source directory, looking for blobs. It will not find the blobs that you deleted before (because they no longer exist), and it will ignore any files listed in @emph{nonblobs}. +Now search for new blobs:$ @strong{../resources/utilities/coreboot-libre/findblobs}@* WARNING: this will take a @strong{*very long*} time. Be patient! What this will do is look through the coreboot source directory, looking for blobs. It will not find the blobs that you deleted before (because they no longer exist), and it will ignore any files listed in @emph{nonblobs}. -Once the @emph{findblobs} script has finished, check the file @emph{tocheck} (from the root, this will be @emph{resources/utilities/coreboot-libre/tocheck}). These are the files detected as blobs; some might be blobs, some not. The @emph{findblobs} script doesn't know how to determine between blobs and non-blobs, it only finds suspicious patterns. Distinguishing between blobs and non-blobs must be performed by you, the human being. +Once the @emph{findblobs} script has finished, check the file @emph{tocheck} in the current directory. These are the files detected as blobs; some might be blobs, some not. The @emph{findblobs} script doesn't know how to determine between blobs and non-blobs, it only finds suspicious patterns. Distinguishing between blobs and non-blobs must be performed by you, the human being. @itemize @item @@ -137,7 +137,9 @@ Files in @emph{tocheck} that you identify as blobs, should be added appropriatel Files in @emph{tocheck} that you identify as non-blobs, should be added appropriately to @emph{resources/utilities/coreboot-libre/nonblobs} - also, if you feel it necessary, add an explanation of it in @emph{resources/utilities/coreboot-libre/nonblobs_notes} @end itemize -Now come back to the main libreboot root directory (root of the git clone). If you are still in resources/utilities/coreboot-libre/ for instance, you would do something like:@* $ @strong{cd ../../../} +Now come back to the main libreboot root directory (root of the git clone). If you are still in coreboot/ for instance, you would do something like:@* $ @strong{cd ../} + +Before deleting coreboot directory, double check that you merged all the @emph{tocheck} content in @emph{resources/utilities/coreboot-libre/deblob} and @emph{resources/utilities/coreboot-libre/nonblobs}, in doubt save the @emph{tocheck} file somewhere safe, outside libreboot directory. Now delete the coreboot directory:@* $ @strong{rm -Rf coreboot/} diff --git a/resources/scripts/helpers/download/coreboot b/resources/scripts/helpers/download/coreboot index f223400..4eb1995 100755 --- a/resources/scripts/helpers/download/coreboot +++ b/resources/scripts/helpers/download/coreboot @@ -157,7 +157,7 @@ rm -Rf 3rdparty/*/.git* cd "../" printf "Deblobbing coreboot\n" -./resources/utilities/coreboot-libre/deblob +cd coreboot && ../resources/utilities/coreboot-libre/deblob && cd ../ if [ -f "version" ]; then # _src release archive is being used diff --git a/resources/utilities/coreboot-libre/deblob b/resources/utilities/coreboot-libre/deblob index 882bab0..d526a05 100755 --- a/resources/utilities/coreboot-libre/deblob +++ b/resources/utilities/coreboot-libre/deblob @@ -26,8 +26,6 @@ set -u -e printf "Deleting blobs in coreboot\n" -cd "coreboot/" - # --------------------- # AMD: CPU microcode updates # --------------------- @@ -148,5 +146,3 @@ rm -f \ "3rdparty/vboot/tests/futility/data/zinger.unsigned" printf "\n\n" - -cd "../" diff --git a/resources/utilities/coreboot-libre/findblobs b/resources/utilities/coreboot-libre/findblobs index 4fcda2a..b43535d 100755 --- a/resources/utilities/coreboot-libre/findblobs +++ b/resources/utilities/coreboot-libre/findblobs @@ -1,8 +1,9 @@ -#!/bin/bash +#!/bin/sh # find blobs in coreboot # -# Copyright (C) 2014, 2015 Francis Rowe <[email protected]> +# Copyright (C) 2014, 2015 Francis Rowe <[email protected]> +# Copyright (C) 2015 Denis 'GNUtoo' Carikli <[email protected]> # # 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 @@ -21,38 +22,28 @@ [ "x${DEBUG+set}" = 'xset' ] && set -v set -e -u -# This is used when updating the version of -# coreboot that libreboot uses, to know what -# new blobs have landed in coreboot +# This script is used to semi-automatically find blobs in coreboot. +# It is typically when updating libreboot to use new versions of coreboot: +# The goal is to detect new blobs added in coreboot to remove them in libreboot. -# full deblob scripts based on linux-libre -# will replace this script later on. For now, -# this will have to do. +# The full deblob scripts are based on linux-libre's. +# Later on it might be replaced by more scripts targetting coreboot more +# specifically. printf "Searching for blobs in coreboot\n" -cp "deblob-check" "../../../coreboot" -cd "../../../coreboot/" +install "$(dirname $0)/deblob-check" "$(pwd)" +install "$(dirname $0)/nonblobs" "$(pwd)" +echo -n "" > tocheck -chmod +x "deblob-check" -find -type f | xargs ./deblob-check > "blobs" -rm -f "deblob-check" - -rm -f "tocheck" -touch "tocheck" +find -type f -not -path '\.git/*' | xargs ./deblob-check > "blobs" for file in $(cat blobs) do - if ! grep -Fxq "${file}" "../resources/utilities/coreboot-libre/nonblobs" + if ! grep -Fxq "${file}" "nonblobs" then printf "%s\n" "${file}" >> tocheck fi done -rm -f "blobs" - -rm -f "../resources/utilities/coreboot-libre/tocheck" -mv "tocheck" "../resources/utilities/coreboot-libre/" - -cd "../resources/utilities/coreboot-libre/" -printf "Done! open resources/utilities/coreboot-libre/tocheck in an editor\n" -printf "This will contain the names of the files that you must decide whether they are blobs or not\n\n" +printf "Done! Now open %s/tocheck in an editor:\n" "$(pwd)" +printf "You will then need to manually check each file content to verify if each one contains a blob.\n\n" -- 2.6.2
