Re: [PATCH 0/2] Bli: fix hidden module dependency

2023-11-14 Thread Vladimir 'phcoder' Serbinenko
In general series looks good. Few comments:
* I'm unsure about the name. It seems to suggest that people put the
dependencies there by default while in fact it's the last place for it.
Maybe extra_deps.lst?
* EFI supports both GPT and msdos. GPT is a more common choice but I still
think that a dependency on part_msdos is warranted
* Please elaborate commit message as to why bli needs those mods rather
than "not functions properly". Detail that it needs to identify partitions.


Le mar. 14 nov. 2023, 17:45, Oliver Steffen  a écrit :

> The bli module has a hidden/implicit dependency on the part_gpt module.
> The part_gpt module has to be loaded before the bli module.
> This dependency is not picked up automatically by the build system
> because the bli module does not use any function of part_gpt. It just
> expects Grub to be able to parse GPT formatted disks.
>
> This series introduces a mechanism that allows specifying module
> dependencies explicitly in a new file called explicit_dependencies.lst.
>
> An explicit dependency is then added for the bli module on the part_gpt
> module.
>
> Oliver Steffen (2):
>   Allow explicit module dependencies
>   bli: Add explicit dependency on the part_gpt module
>
>  grub-core/Makefile.am   | 4 ++--
>  grub-core/explicit_dependencies.lst | 1 +
>  grub-core/genmoddep.awk | 4 
>  3 files changed, 7 insertions(+), 2 deletions(-)
>  create mode 100644 grub-core/explicit_dependencies.lst
>
> --
> 2.41.0
>
>
___
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel


[PATCH 1/2] Allow explicit module dependencies

2023-11-14 Thread Oliver Steffen
The build system deduces inter-module dependencies from the symbols
required and exported by the modules. This works well, except for some
rare cases where the dependency is indirect or hidden. A module might
not make use of any function of some other module, but still expect its
functionality to be available to Grub.

To solve this, introduce a new file (currently empty) called
explicit_depdendencies.lst to track these cases manually. This file gets
processed in the same way as the (automatically generated) syminfo.lst,
making it possible to inject data into the dependency resolver.

Additionally, introduce a new keyword for the syminfo.lst syntax:
"depends" allows specifying a module dependency directly:

depends  ...

Signed-off-by: Oliver Steffen 
---
 grub-core/Makefile.am   | 4 ++--
 grub-core/explicit_dependencies.lst | 0
 grub-core/genmoddep.awk | 4 
 3 files changed, 6 insertions(+), 2 deletions(-)
 create mode 100644 grub-core/explicit_dependencies.lst

diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am
index f0cb2f2cc..8c3a7d83b 100644
--- a/grub-core/Makefile.am
+++ b/grub-core/Makefile.am
@@ -452,8 +452,8 @@ crypto.lst: $(srcdir)/lib/libgcrypt-grub/cipher/crypto.lst
 platform_DATA += crypto.lst
 CLEANFILES += crypto.lst
 
-syminfo.lst: gensyminfo.sh kernel_syms.lst $(MODULE_FILES)
-   cat kernel_syms.lst > $@.new
+syminfo.lst: gensyminfo.sh kernel_syms.lst explicit_dependencies.lst 
$(MODULE_FILES)
+   cat kernel_syms.lst explicit_dependencies.lst > $@.new
for m in $(MODULE_FILES); do \
  sh $< $$m >> $@.new || exit 1; \
done
diff --git a/grub-core/explicit_dependencies.lst 
b/grub-core/explicit_dependencies.lst
new file mode 100644
index 0..e69de29bb
diff --git a/grub-core/genmoddep.awk b/grub-core/genmoddep.awk
index 247436392..cc987a53a 100644
--- a/grub-core/genmoddep.awk
+++ b/grub-core/genmoddep.awk
@@ -31,6 +31,10 @@ BEGIN {
   printf "%s in %s is not defined\n", $3, $2 >"/dev/stderr";
   error++;
 }
+  } else if ($1 == "depends") {
+for (i = 3; i <= NF; i++) {
+  modtab[$2] = modtab[$2] " " $i;
+}
   }
   else {
 printf "error: %u: unrecognized input format\n", NR >"/dev/stderr";
-- 
2.41.0


___
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel


[PATCH 0/2] Bli: fix hidden module dependency

2023-11-14 Thread Oliver Steffen
The bli module has a hidden/implicit dependency on the part_gpt module.
The part_gpt module has to be loaded before the bli module.
This dependency is not picked up automatically by the build system
because the bli module does not use any function of part_gpt. It just
expects Grub to be able to parse GPT formatted disks.

This series introduces a mechanism that allows specifying module
dependencies explicitly in a new file called explicit_dependencies.lst.

An explicit dependency is then added for the bli module on the part_gpt
module.

Oliver Steffen (2):
  Allow explicit module dependencies
  bli: Add explicit dependency on the part_gpt module

 grub-core/Makefile.am   | 4 ++--
 grub-core/explicit_dependencies.lst | 1 +
 grub-core/genmoddep.awk | 4 
 3 files changed, 7 insertions(+), 2 deletions(-)
 create mode 100644 grub-core/explicit_dependencies.lst

-- 
2.41.0


___
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel


[PATCH 2/2] bli: Add explicit dependency on the part_gpt module

2023-11-14 Thread Oliver Steffen
The bli module has a "hidden" dependency on the part_gpt module,
which is not picked up automatically by the build system.
Without the part_gpt module, bli does not function correctly.
Since bli does its work in the module initialization function,
the order in which the modules are loaded is also important:
part_gpt needs to be loaded before the bli module.

To solve this, track this dependency explicitly.

Signed-off-by: Oliver Steffen 
---
 grub-core/explicit_dependencies.lst | 1 +
 1 file changed, 1 insertion(+)

diff --git a/grub-core/explicit_dependencies.lst 
b/grub-core/explicit_dependencies.lst
index e69de29bb..f44ad6a0c 100644
--- a/grub-core/explicit_dependencies.lst
+++ b/grub-core/explicit_dependencies.lst
@@ -0,0 +1 @@
+depends bli part_gpt
-- 
2.41.0


___
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel