On 09/08/2024 18:11, Michał Górny wrote:
On Fri, 2024-08-09 at 17:49 +0200, Andrew Ammerlaan wrote:
(de)compressing modules changes the path of the module files so we need to
run depmod to ensure that tools such as modprobe/modinfo work.

Note that depmod is often, but *not* always, run by sys-kernel/installkernel.
Systemd installs a hook to do this, but there is no equivalent on openrc
systems. So instead just ensure that the tree of modules we install is
consistent here in the eclass.

Signed-off-by: Andrew Ammerlaan <andrewammerl...@gentoo.org>
---
  eclass/kernel-install.eclass | 3 +++
  1 file changed, 3 insertions(+)

diff --git a/eclass/kernel-install.eclass b/eclass/kernel-install.eclass
index 496e258815d2..930640188c26 100644
--- a/eclass/kernel-install.eclass
+++ b/eclass/kernel-install.eclass
@@ -796,6 +796,9 @@ kernel-install_compress_modules() {
                find "${ED}/lib/modules/${KV_FULL}" -name '*.ko' -print0 |
                        xargs -0 -P "$(makeopts_jobs)" -n 128 "${compress[@]}"
                assert "Compressing kernel modules failed"
+
+               # Module paths have changed, run depmod
+               depmod --all --basedir "${ED}" ${KV_FULL} || die
        fi
  }

Are you actually supposed to run it on ED and not EROOT?

Either works, but doing it in ED ensures that the gentoo-kernel-bin[modules-compress] install image is the same as the gentoo-kernel[modules-compress] install image.

Won't that
cause file collisions (even if we circumvent them via CONFIG_PROTECT).

No, it does not install any files that we are not installing anyway, it just updates them.


Reply via email to