125 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 | |
| From: Oliver Steffen <osteffen@redhat.com>
 | |
| Date: Wed, 28 Feb 2024 13:36:00 +0100
 | |
| Subject: [PATCH] Track explicit module dependencies in Makefile.core.def
 | |
| 
 | |
| Add a new keyword, "depends", to the module definition syntax
 | |
| used in Makefile.core.def. This allows specifying explicit module
 | |
| dependencies together with the module definition.
 | |
| 
 | |
| Make use of this new keyword in the bli module definition.
 | |
| 
 | |
| Signed-off-by: Oliver Steffen <osteffen@redhat.com>
 | |
| Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
 | |
| Tested-by: Oskari Pirhonen <xxc3ncoredxx@gmail.com>
 | |
| ---
 | |
|  grub-core/Makefile.core.def | 1 +
 | |
|  .gitignore                  | 1 -
 | |
|  conf/Makefile.common        | 1 +
 | |
|  gentpl.py                   | 7 +++++++
 | |
|  grub-core/Makefile.am       | 9 ++++++---
 | |
|  grub-core/genmoddep.awk     | 2 +-
 | |
|  6 files changed, 16 insertions(+), 5 deletions(-)
 | |
| 
 | |
| diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
 | |
| index c9dcfa00e85..a5a3ee31800 100644
 | |
| --- a/grub-core/Makefile.core.def
 | |
| +++ b/grub-core/Makefile.core.def
 | |
| @@ -2670,6 +2670,7 @@ module = {
 | |
|    name = bli;
 | |
|    efi = commands/bli.c;
 | |
|    enable = efi;
 | |
| +  depends = part_gpt;
 | |
|  };
 | |
|  
 | |
|  module = {
 | |
| diff --git a/.gitignore b/.gitignore
 | |
| index f2e8e1e42d7..c603c15d66c 100644
 | |
| --- a/.gitignore
 | |
| +++ b/.gitignore
 | |
| @@ -11,7 +11,6 @@
 | |
|  *.img
 | |
|  *.log
 | |
|  *.lst
 | |
| -!/grub-core/extra_deps.lst
 | |
|  *.marker
 | |
|  *.mod
 | |
|  *.o
 | |
| diff --git a/conf/Makefile.common b/conf/Makefile.common
 | |
| index c8756d8146f..9feac7434da 100644
 | |
| --- a/conf/Makefile.common
 | |
| +++ b/conf/Makefile.common
 | |
| @@ -115,6 +115,7 @@ MOD_FILES =
 | |
|  MODULE_FILES =
 | |
|  MARKER_FILES =
 | |
|  KERNEL_HEADER_FILES =
 | |
| +EXTRA_DEPS =
 | |
|  
 | |
|  bin_SCRIPTS =
 | |
|  bin_PROGRAMS =
 | |
| diff --git a/gentpl.py b/gentpl.py
 | |
| index 5826a6b14e8..0f8d009ef21 100644
 | |
| --- a/gentpl.py
 | |
| +++ b/gentpl.py
 | |
| @@ -642,6 +642,9 @@ def platform_values(defn, platform, suffix):
 | |
|  def extra_dist(defn):
 | |
|      return foreach_value(defn, "extra_dist", lambda value: value + " ")
 | |
|  
 | |
| +def extra_dep(defn):
 | |
| +    return foreach_value(defn, "depends", lambda value: value + " ")
 | |
| +
 | |
|  def platform_sources(defn, p): return platform_values(defn, p, "")
 | |
|  def platform_nodist_sources(defn, p): return platform_values(defn, p, "_nodist")
 | |
|  
 | |
| @@ -712,6 +715,10 @@ def module(defn, platform):
 | |
|      gvar_add("MOD_FILES", name + ".mod")
 | |
|      gvar_add("MARKER_FILES", name + ".marker")
 | |
|      gvar_add("CLEANFILES", name + ".marker")
 | |
| +
 | |
| +    for dep in defn.find_all("depends"):
 | |
| +        gvar_add("EXTRA_DEPS", "depends " + name + " " + dep + ":")
 | |
| +
 | |
|      output("""
 | |
|  """ + name + """.marker: $(""" + cname(defn) + """_SOURCES) $(nodist_""" + cname(defn) + """_SOURCES)
 | |
|  	$(TARGET_CPP) -DGRUB_LST_GENERATOR $(CPPFLAGS_MARKER) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(""" + cname(defn) + """_CPPFLAGS) $(CPPFLAGS) $^ > $@.new || (rm -f $@; exit 1)
 | |
| diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am
 | |
| index 7953ba95399..77f8329cd43 100644
 | |
| --- a/grub-core/Makefile.am
 | |
| +++ b/grub-core/Makefile.am
 | |
| @@ -456,8 +456,11 @@ crypto.lst: $(srcdir)/lib/libgcrypt-grub/cipher/crypto.lst
 | |
|  platform_DATA += crypto.lst
 | |
|  CLEANFILES += crypto.lst
 | |
|  
 | |
| -syminfo.lst: gensyminfo.sh kernel_syms.lst $(top_srcdir)/grub-core/extra_deps.lst $(MODULE_FILES)
 | |
| -	cat kernel_syms.lst $(top_srcdir)/grub-core/extra_deps.lst > $@.new
 | |
| +extra_deps.lst:
 | |
| +	@echo $(EXTRA_DEPS) | sed "s/\s*:\s*/\n/g" > $@
 | |
| +
 | |
| +syminfo.lst: gensyminfo.sh kernel_syms.lst extra_deps.lst $(MODULE_FILES)
 | |
| +	cat kernel_syms.lst extra_deps.lst > $@.new
 | |
|  	for m in $(MODULE_FILES); do \
 | |
|  	  sh $< $$m >> $@.new || exit 1; \
 | |
|  	done
 | |
| @@ -467,7 +470,7 @@ syminfo.lst: gensyminfo.sh kernel_syms.lst $(top_srcdir)/grub-core/extra_deps.ls
 | |
|  moddep.lst: syminfo.lst genmoddep.awk video.lst
 | |
|  	cat $< | sort | $(AWK) -f $(srcdir)/genmoddep.awk > $@ || (rm -f $@; exit 1)
 | |
|  platform_DATA += moddep.lst
 | |
| -CLEANFILES += config.log syminfo.lst moddep.lst
 | |
| +CLEANFILES += config.log syminfo.lst moddep.lst extra_deps.lst
 | |
|  
 | |
|  $(MOD_FILES): %.mod : genmod.sh moddep.lst %.module$(EXEEXT) build-grub-module-verifier$(BUILD_EXEEXT)
 | |
|  	TARGET_OBJ2ELF=@TARGET_OBJ2ELF@ sh $^ $@
 | |
| diff --git a/grub-core/genmoddep.awk b/grub-core/genmoddep.awk
 | |
| index cc987a53aa8..ab457cb2b56 100644
 | |
| --- a/grub-core/genmoddep.awk
 | |
| +++ b/grub-core/genmoddep.awk
 | |
| @@ -35,7 +35,7 @@ BEGIN {
 | |
|      for (i = 3; i <= NF; i++) {
 | |
|        modtab[$2] = modtab[$2] " " $i;
 | |
|      }
 | |
| -  }
 | |
| +  } else if ($1 == "") {} #Skip empty lines
 | |
|    else {
 | |
|      printf "error: %u: unrecognized input format\n", NR >"/dev/stderr";
 | |
|      error++;
 |