]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
build: Track explicit module dependencies in Makefile.core.def
authorOliver Steffen <osteffen@redhat.com>
Thu, 22 Feb 2024 13:32:31 +0000 (14:32 +0100)
committerDaniel Kiper <daniel.kiper@oracle.com>
Thu, 9 May 2024 13:04:54 +0000 (15:04 +0200)
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.

Do not track the "extra_deps.lst" file in the repository anymore,
it is now auto-generated.

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>
.gitignore
conf/Makefile.common
gentpl.py
grub-core/Makefile.am
grub-core/Makefile.core.def
grub-core/extra_deps.lst [deleted file]
grub-core/genmoddep.awk

index 4d0dfb700e470a3b5a5562810f4759cf8ffdb447..11fcecf5c40bb3af0c0622ccad504ee28ef6de3b 100644 (file)
@@ -11,7 +11,6 @@
 *.img
 *.log
 *.lst
-!/grub-core/extra_deps.lst
 *.marker
 *.mod
 *.o
index b8f216f6cd340a70f54cc25b0834cd76d30e828f..c60f5538653eaeedd4868091c86408ad9516f9f8 100644 (file)
@@ -111,6 +111,7 @@ MOD_FILES =
 MODULE_FILES =
 MARKER_FILES =
 KERNEL_HEADER_FILES =
+EXTRA_DEPS =
 
 bin_SCRIPTS =
 bin_PROGRAMS =
index bfab2113a1da7f979b07e3172a9600832a0b3bef..3b12eca6c8908626ea3247bd27d4c7798ea687de 100644 (file)
--- a/gentpl.py
+++ b/gentpl.py
@@ -631,6 +631,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")
 
@@ -699,6 +702,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)
index f18550c1c98ee372a47b490b9632356a1faa5bca..1eda467e00ace48dde47c9db4b835a0b95e994a1 100644 (file)
@@ -454,8 +454,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
@@ -465,7 +468,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 $^ $@
index 007ff628e911e65d24ce31db3521d8c66b7d1250..8e1b1d9f3396bcffedcb07ec12720029ceb305b6 100644 (file)
@@ -2598,4 +2598,5 @@ module = {
   name = bli;
   efi = commands/bli.c;
   enable = efi;
+  depends = part_gpt;
 };
diff --git a/grub-core/extra_deps.lst b/grub-core/extra_deps.lst
deleted file mode 100644 (file)
index f44ad6a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-depends bli part_gpt
index cc987a53aa81688e650dc2d2b6e00af6debe606d..ab457cb2b5647480c3b79b1c6587caf30f3c88bd 100644 (file)
@@ -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++;