From: "Michal Suchánek" <msuchanek@suse.de>
To: Masahiro Yamada <masahiroy@kernel.org>
Cc: linux-modules@vger.kernel.org, "Takashi Iwai" <tiwai@suse.com>,
"Lucas De Marchi" <lucas.de.marchi@gmail.com>,
"Michal Koutný" <mkoutny@suse.com>,
"Jiri Slaby" <jslaby@suse.com>,
"Jan Engelhardt" <jengelh@inai.de>,
"Nathan Chancellor" <nathan@kernel.org>,
"Nick Desaulniers" <ndesaulniers@google.com>,
"Nicolas Schier" <nicolas@fjasle.eu>,
linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 1/2] depmod: Handle installing modules under a different directory
Date: Tue, 12 Dec 2023 14:03:24 +0100 [thread overview]
Message-ID: <20231212130324.GP9696@kitsune.suse.cz> (raw)
In-Reply-To: <CAK7LNAQQe-fdeKe2RHd5TyYpXa95WJO_-f38o12oewGC3rFTHA@mail.gmail.com>
On Mon, Dec 11, 2023 at 01:29:15PM +0900, Masahiro Yamada wrote:
> On Mon, Dec 11, 2023 at 6:07 AM Michal Suchánek <msuchanek@suse.de> wrote:
> >
> > Hello!
> >
> > On Mon, Dec 11, 2023 at 03:43:44AM +0900, Masahiro Yamada wrote:
> > > On Thu, Dec 7, 2023 at 4:48 AM Michal Suchanek <msuchanek@suse.de> wrote:
> > > >
> > > > Some distributions aim at shipping all files in /usr.
> > > >
> > > > The path under which kernel modules are installed is hardcoded to /lib
> > > > which conflicts with this goal.
> > > >
> > > > When kmod provides kmod.pc, use it to determine the correct module
> > > > installation path.
> > > >
> > > > With kmod that does not provide the config /lib/modules is used as
> > > > before.
> > > >
> > > > While pkg-config does not return an error when a variable does not exist
> > > > the kmod configure script puts some effort into ensuring that
> > > > module_directory is non-empty. With that empty module_directory from
> > > > pkg-config can be used to detect absence of the variable.
> > > >
> > > > Signed-off-by: Michal Suchanek <msuchanek@suse.de>
> > > > ---
> > > > v6:
> > > > - use ?= instead of := to make it easier to override the value
> > >
> > >
> > > "KERNEL_MODULE_DIRECTORY=/local/usr/lib/modules make modules_install"
> > > will override the install destination, but
> > > depmod will not be not aware of it.
> >
> > At the same time if you know what you are doing you can build a src rpm
> > for another system that uses a different location.
> >
> > > How to avoid the depmod error?
> >
> > Not override the variable?
>
> You are not answering my question.
> You intentionally changed := to ?=.
>
> This implies that KERNEL_MODULE_DIRECTORY is an interface to users,
> and should be documented in Documentation/kbuild/kbuild.rst
That's reasonable
> However, it never works if it is overridden from the env variable
> or make command line because there is no way to let depmod know
> the fact that KERNEL_MODULE_DIRECTORY has been overridden.
And there should not. kmod is not aware, kbuild is. That's the
direction of information flow. kmod defines where it looks for the
modules, and kbuild shoukld install the modules there.
If the user knows better (eg. possibility of building src-rpm for a
different you brought up) they can override the autodetection.
> In my understanding, depmod does not provide an option to
> specify the module directory from a command line option, does it?
No it does not.
> If not, is it reasonable to add a new option to depmod?
I don't think so. The module directory is intentionally in a fixed
location. It can be set at compile time, and that's it.
Then when running depmod on the target distribution either kbuild and
kmod agree on the location or the build fails. That's the intended
outcome.
kmod recently grew the ability to use modules outside of module
directory. For that to work internally the path to these out-of-kernel
modules is stored as absolute path, and the path of modules that are in
the module directory is stored relative to the module directory.
Setting the module directory location dynamically still should not break
this but I am not sure it's a great idea. In the end modprobe needs to
find those modules, and if depmod puts the modules.dep in arbitrary
location it will not.
> depmod provides the "-b basedir" option, but it only allows
> adding a prefix to the default "/lib/modules/<version>".
Yes, that's for installation into a staging directory, and there again
the modules that are inside the module directory are considedred
'in-kernel'. Not sure how well this even works with 'out-of-kernel'
modules.
> (My original idea to provide the prefix_part, it would have worked
> like -b "${INSTALL_MOD_PATH}${MOD_PREFIX}", which you refused)
It's not clear that adding a prefix covers all use cases. It is an
arbitrary limitation that the module path must end with '/lib/modules'.
It may allow taking some shortcuts in some places but is unnecessarily
limiting.
Thanks
Michal
next prev parent reply other threads:[~2023-12-12 13:03 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-05 15:07 [PATCH rebased] kbuild: rpm-pkg: Fix build with non-default MODLIB Michal Suchanek
2023-10-06 16:58 ` Nathan Chancellor
2023-10-09 8:31 ` Masahiro Yamada
2023-10-09 8:52 ` Michal Suchánek
2023-10-09 12:34 ` Masahiro Yamada
2023-10-09 14:07 ` Michal Suchánek
2023-10-09 15:14 ` Masahiro Yamada
2023-10-09 16:01 ` Jan Engelhardt
2023-10-10 10:15 ` Michal Suchánek
2023-10-17 10:15 ` Masahiro Yamada
2023-10-17 10:44 ` Michal Suchánek
2023-10-17 12:05 ` Masahiro Yamada
2023-10-17 12:27 ` Michal Suchánek
2023-10-17 14:46 ` Masahiro Yamada
2023-10-17 15:10 ` Michal Suchánek
2023-10-18 1:12 ` Jan Engelhardt
2023-11-10 17:44 ` Michal Suchánek
2023-11-10 17:57 ` Jan Engelhardt
2023-12-06 19:47 ` [PATCH v6 1/2] depmod: Handle installing modules under a different directory Michal Suchanek
2023-12-10 18:43 ` Masahiro Yamada
2023-12-10 18:51 ` Woody Suwalski
2023-12-10 21:07 ` Michal Suchánek
2023-12-11 4:29 ` Masahiro Yamada
2023-12-12 13:03 ` Michal Suchánek [this message]
2023-12-18 14:05 ` Masahiro Yamada
2023-12-06 19:47 ` [PATCH v6 2/2] kbuild: rpm-pkg: Fix build with non-default MODLIB Michal Suchanek
2023-12-10 18:44 ` Masahiro Yamada
2023-12-10 21:08 ` Michal Suchánek
2023-12-11 4:33 ` Masahiro Yamada
2023-12-12 13:12 ` Michal Suchánek
2023-12-18 14:16 ` Masahiro Yamada
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231212130324.GP9696@kitsune.suse.cz \
--to=msuchanek@suse.de \
--cc=jengelh@inai.de \
--cc=jslaby@suse.com \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-modules@vger.kernel.org \
--cc=lucas.de.marchi@gmail.com \
--cc=masahiroy@kernel.org \
--cc=mkoutny@suse.com \
--cc=nathan@kernel.org \
--cc=ndesaulniers@google.com \
--cc=nicolas@fjasle.eu \
--cc=tiwai@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox