payloads/external/Memtest86Plus: allow for selecting a specific revision

Because the Kconfig configuration files for primary payloads are
already sourced via a wildcard pattern this change requires to
use another file name pattern.

Change-Id: I83b89f5e14618e8a487ebb044fcdd3c175662591
Signed-off-by: Stefan Tauner <stefan.tauner@gmx.at>
Reviewed-on: https://review.coreboot.org/28217
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Martin Roth <martinroth@google.com>
This commit is contained in:
Stefan Tauner 2018-08-19 17:48:53 +02:00 committed by Martin Roth
parent 44cff7a897
commit a07366c9f9
4 changed files with 55 additions and 21 deletions

View File

@ -129,27 +129,6 @@ config MEMTEST_SECONDARY_PAYLOAD
Memtest86+ can be loaded as a secondary payload under SeaBIOS, GRUB, Memtest86+ can be loaded as a secondary payload under SeaBIOS, GRUB,
or any other payload that can load additional payloads. or any other payload that can load additional payloads.
choice
prompt "Memtest86+ version"
default MEMTEST_STABLE
depends on MEMTEST_SECONDARY_PAYLOAD
config MEMTEST_STABLE
bool "Stable"
help
Stable Memtest86+ version.
For reproducible builds, this option must be selected.
config MEMTEST_MASTER
bool "Master"
help
Newest Memtest86+ version.
This option will fetch the newest version of the Memtest86+ code,
updating as new changes are committed. This makes the build
non-reproducible, as it can fetch different code each time.
endchoice
config NVRAMCUI_SECONDARY_PAYLOAD config NVRAMCUI_SECONDARY_PAYLOAD
bool "Load nvramcui as a secondary payload" bool "Load nvramcui as a secondary payload"
default n default n
@ -166,5 +145,7 @@ config TINT_SECONDARY_PAYLOAD
tint can be loaded as a secondary payload under SeaBIOS, GRUB, tint can be loaded as a secondary payload under SeaBIOS, GRUB,
or any other payload that can load additional payloads. or any other payload that can load additional payloads.
source "payloads/external/*/Kconfig.secondary"
endmenu # "Secondary Payloads" endmenu # "Secondary Payloads"
endmenu endmenu

View File

@ -218,6 +218,8 @@ payloads/external/Memtest86Plus/memtest86plus/memtest: $(DOTCONFIG)
LD="$(LD_x86_32)" \ LD="$(LD_x86_32)" \
OBJCOPY="$(OBJCOPY_x86_32)" \ OBJCOPY="$(OBJCOPY_x86_32)" \
AS="$(AS_x86_32)" \ AS="$(AS_x86_32)" \
CONFIG_MEMTEST_REVISION=$(CONFIG_MEMTEST_REVISION) \
CONFIG_MEMTEST_REVISION_ID=$(CONFIG_MEMTEST_REVISION_ID) \
CONFIG_MEMTEST_MASTER=$(CONFIG_MEMTEST_MASTER) \ CONFIG_MEMTEST_MASTER=$(CONFIG_MEMTEST_MASTER) \
CONFIG_MEMTEST_STABLE=$(CONFIG_MEMTEST_STABLE) \ CONFIG_MEMTEST_STABLE=$(CONFIG_MEMTEST_STABLE) \
$(MEMTEST_SERIAL_OPTIONS) \ $(MEMTEST_SERIAL_OPTIONS) \

View File

@ -0,0 +1,42 @@
if MEMTEST_SECONDARY_PAYLOAD
choice
prompt "Memtest86+ version"
default MEMTEST_STABLE
depends on MEMTEST_SECONDARY_PAYLOAD
config MEMTEST_STABLE
bool "Stable"
help
Stable Memtest86+ version.
For reproducible builds, this option must be selected.
config MEMTEST_MASTER
bool "Master"
help
Newest Memtest86+ version.
This option will fetch the newest version of the Memtest86+ code,
updating as new changes are committed. This makes the build
non-reproducible, as it can fetch different code each time.
config MEMTEST_REVISION
bool "git revision"
help
Select this option if you have a specific commit or branch
that you want to use as the revision from which to
build Memtest86+. This makes the build
non-reproducible, as it can fetch different code each time.
You will be able to specify the name of a branch or a commit id
later.
endchoice
config MEMTEST_REVISION_ID
string "Insert a commit's SHA-1 or a branch name"
depends on MEMTEST_REVISION
default "origin/master"
help
The commit's SHA-1 or branch name of the revision to use.
endif

View File

@ -17,6 +17,7 @@ TAG-$(CONFIG_MEMTEST_MASTER)=origin/master
NAME-$(CONFIG_MEMTEST_MASTER)=Master NAME-$(CONFIG_MEMTEST_MASTER)=Master
TAG-$(CONFIG_MEMTEST_STABLE)=3754fd440f4009b62244e0f95c56bbb12c2fffcb TAG-$(CONFIG_MEMTEST_STABLE)=3754fd440f4009b62244e0f95c56bbb12c2fffcb
NAME-$(CONFIG_MEMTEST_STABLE)=Stable NAME-$(CONFIG_MEMTEST_STABLE)=Stable
TAG-$(CONFIG_MEMTEST_REVISION)=$(CONFIG_MEMTEST_REVISION_ID)
project_name=Memtest86+ project_name=Memtest86+
project_dir=$(CURDIR)/memtest86plus project_dir=$(CURDIR)/memtest86plus
@ -29,6 +30,14 @@ $(project_dir):
git clone $(project_git_repo) $(project_dir) git clone $(project_git_repo) $(project_dir)
fetch: $(project_dir) fetch: $(project_dir)
ifeq ($(TAG-y),)
echo "Error: The specified tag is invalid"
ifeq ($(CONFIG_MEMTEST_REVISION),y)
echo "Error: There is no revision specified for $(project_name)"
false
endif
false
endif
-cd $(project_dir); git show $(TAG-y) >/dev/null 2>&1 ; \ -cd $(project_dir); git show $(TAG-y) >/dev/null 2>&1 ; \
if [ $$? -ne 0 ] || [ "$(TAG-y)" = "origin/master" ]; then \ if [ $$? -ne 0 ] || [ "$(TAG-y)" = "origin/master" ]; then \
echo " Fetching new commits from the $(project_name) git repo"; \ echo " Fetching new commits from the $(project_name) git repo"; \