grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC PATCH] Track explicit module dependencies in Makefile.core.def


From: Daniel Kiper
Subject: Re: [RFC PATCH] Track explicit module dependencies in Makefile.core.def
Date: Thu, 22 Feb 2024 15:13:06 +0100
User-agent: NeoMutt/20170113 (1.7.2)

Adding Vladimir...

On Thu, Feb 22, 2024 at 02:32:31PM +0100, Oliver Steffen wrote:
> 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>

But I would want to hear Vladimir's opinion too...

> ---
>  .gitignore                  | 1 -
>  conf/Makefile.common        | 1 +
>  gentpl.py                   | 7 +++++++
>  grub-core/Makefile.am       | 7 +++++--
>  grub-core/Makefile.core.def | 1 +
>  grub-core/extra_deps.lst    | 1 -
>  grub-core/genmoddep.awk     | 2 +-
>  7 files changed, 15 insertions(+), 5 deletions(-)
>  delete mode 100644 grub-core/extra_deps.lst
>
> diff --git a/.gitignore b/.gitignore
> index 4d0dfb700..11fcecf5c 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 b8f216f6c..c60f55386 100644
> --- a/conf/Makefile.common
> +++ b/conf/Makefile.common
> @@ -111,6 +111,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 bfab2113a..3b12eca6c 100644
> --- 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)
> diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am
> index f18550c1c..5df36744e 100644
> --- a/grub-core/Makefile.am
> +++ b/grub-core/Makefile.am
> @@ -454,7 +454,10 @@ 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)
> +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 $(top_srcdir)/grub-core/extra_deps.lst > $@.new
>       for m in $(MODULE_FILES); do \
>         sh $< $$m >> $@.new || exit 1; \
> @@ -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 $^ $@
> diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
> index 1571421d7..142faeff0 100644
> --- a/grub-core/Makefile.core.def
> +++ b/grub-core/Makefile.core.def
> @@ -2594,4 +2594,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
> index f44ad6a0c..000000000
> --- a/grub-core/extra_deps.lst
> +++ /dev/null
> @@ -1 +0,0 @@
> -depends bli part_gpt
> diff --git a/grub-core/genmoddep.awk b/grub-core/genmoddep.awk
> index cc987a53a..ab457cb2b 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++;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]