payloads/external/GRUB2: fix constantly rebuilding due to git checkout

Multiple git checkouts cause GRUB2 to constantly rebuild even if there
were no changes to code or config. This is due to changing timestamps.

Fix this by not creating or switching branches but instead rely on
`git checkout -f` which does not touch existing unchanged files.

To be sure to not break anyones workflow checkout is skipped and a
warning gets printed if the tree/index is unclean.

Change-Id: I7cf66f63268de973a654146a0a47c3d5ca516d4d
Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/36343
Reviewed-by: Nico Huber <nico.h@gmx.de>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Michael Niewöhner 2019-10-26 00:06:42 +02:00 committed by Patrick Georgi
parent 653a66fa81
commit e979442cd6
1 changed files with 9 additions and 9 deletions

View File

@ -1,4 +1,4 @@
TAG-$(CONFIG_GRUB2_MASTER)= TAG-$(CONFIG_GRUB2_MASTER)=origin/HEAD
TAG-$(CONFIG_GRUB2_REVISION)=$(CONFIG_GRUB2_REVISION_ID) TAG-$(CONFIG_GRUB2_REVISION)=$(CONFIG_GRUB2_REVISION_ID)
TAG-$(CONFIG_GRUB2_STABLE)=grub-2.04 TAG-$(CONFIG_GRUB2_STABLE)=grub-2.04
NAME-$(CONFIG_GRUB2_MASTER)=HEAD NAME-$(CONFIG_GRUB2_MASTER)=HEAD
@ -15,14 +15,14 @@ all: grub2
checkout: checkout:
echo " GIT GRUB2 $(NAME-y)" echo " GIT GRUB2 $(NAME-y)"
test -d grub2 || \ test -d $(project_dir) || git clone $(project_git_repo) $(project_dir)
git clone $(project_git_repo) $(project_dir) git -C $(project_dir) fetch
cd grub2 && \ ifeq ("$(shell git -C $(project_dir) status --ignored=no --untracked-files=no --porcelain)",)
git checkout master && \ git -C $(project_dir) checkout -f $(TAG-y)
git pull; \ else
test -n "$(TAG-y)" && \ echo "WARNING: index/tree not clean, skipping update / force checkout."
git branch -f $(NAME-y) $(TAG-y) && \ echo " Checkout manually with `git -C $(project_dir) checkout -f`."
git checkout $(NAME-y) || true endif
grub2/build/config.h: $(CONFIG_DEP) | checkout grub2/build/config.h: $(CONFIG_DEP) | checkout
echo " CONFIG GRUB2 $(NAME-y)" echo " CONFIG GRUB2 $(NAME-y)"