Re: [PATCH 0/2] Bli: fix hidden module dependency
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
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
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
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