2018-08-22 18:55:16

by H. Nikolaus Schaller

[permalink] [raw]
Subject: please revert commit ce8556cca6 "kbuild: verify that $DEPMOD is installed" introduced in v4.18.4.

This patch requires that /sbin/depmod is installed and installable on
the build host.

But not all build hosts for cross compiling Linux are Linux systems
and are able to provide a working port of depmod, especially at the
file patch /sbin/depmod.

I use, for example, a Darwin system to cross compile Linux and I run
depmod -a on the embedded system once, after installing a new Linux
kernel there.

I have no problem with seeing a warning, but aborting the build process
is IMHO a bad idea since the previous behaviour didn't harm many people
as far as I see. Probably 99% of people compiling Linux kernels do that
on Linux and 99% of those have depmod installed for optimal operation of
their build host. So IMHO printing the warning is good enough.

BR and thanks,
Nikolaus Schaller


2018-08-22 19:12:22

by Greg KH

[permalink] [raw]
Subject: Re: please revert commit ce8556cca6 "kbuild: verify that $DEPMOD is installed" introduced in v4.18.4.

On Wed, Aug 22, 2018 at 08:53:46PM +0200, H. Nikolaus Schaller wrote:
> This patch requires that /sbin/depmod is installed and installable on
> the build host.
>
> But not all build hosts for cross compiling Linux are Linux systems
> and are able to provide a working port of depmod, especially at the
> file patch /sbin/depmod.
>
> I use, for example, a Darwin system to cross compile Linux and I run
> depmod -a on the embedded system once, after installing a new Linux
> kernel there.
>
> I have no problem with seeing a warning, but aborting the build process
> is IMHO a bad idea since the previous behaviour didn't harm many people
> as far as I see. Probably 99% of people compiling Linux kernels do that
> on Linux and 99% of those have depmod installed for optimal operation of
> their build host. So IMHO printing the warning is good enough.

It needs to be reverted in Linus's tree first before I can revert it in
the stable tree(s).

thanks,

greg k-h

2018-08-22 23:35:31

by Randy Dunlap

[permalink] [raw]
Subject: Re: please revert commit ce8556cca6 "kbuild: verify that $DEPMOD is installed" introduced in v4.18.4.

On 08/22/2018 11:53 AM, H. Nikolaus Schaller wrote:
> This patch requires that /sbin/depmod is installed and installable on
> the build host.
>
> But not all build hosts for cross compiling Linux are Linux systems
> and are able to provide a working port of depmod, especially at the
> file patch /sbin/depmod.
>
> I use, for example, a Darwin system to cross compile Linux and I run
> depmod -a on the embedded system once, after installing a new Linux
> kernel there.
>
> I have no problem with seeing a warning, but aborting the build process
> is IMHO a bad idea since the previous behaviour didn't harm many people
> as far as I see. Probably 99% of people compiling Linux kernels do that
> on Linux and 99% of those have depmod installed for optimal operation of
> their build host. So IMHO printing the warning is good enough.

Thanks for the report and sorry about the problem.

I'm OK with changing the error to a warning.
Does the patch below work for you?

thanks.
---
From: Randy Dunlap <[email protected]>

When $DEPMOD is not found, only print a warning instead of exiting
with an error message and error status.

E.g.:
Warning: 'make modules_install' requires /sbin/depmod. Please install it.
This is probably in the kmod package.
../scripts/depmod.sh: line 44: /sbin/depmod: No such file or directory
make[1]: *** [/home/rdunlap/lnx/lnx-418/Makefile:1244: _modinst_post] Error 127
make: *** [Makefile:146: sub-make] Error 2

Signed-off-by: Randy Dunlap <[email protected]>
Reported-by: H. Nikolaus Schaller <[email protected]>
---
scripts/depmod.sh | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

--- lnx-418.orig/scripts/depmod.sh
+++ lnx-418/scripts/depmod.sh
@@ -15,9 +15,8 @@ if ! test -r System.map ; then
fi

if [ -z $(command -v $DEPMOD) ]; then
- echo "'make modules_install' requires $DEPMOD. Please install it." >&2
+ echo "Warning: 'make modules_install' requires $DEPMOD. Please install it." >&2
echo "This is probably in the kmod package." >&2
- exit 1
fi

# older versions of depmod require the version string to start with three



2018-08-23 00:41:37

by Dmitry Torokhov

[permalink] [raw]
Subject: Re: please revert commit ce8556cca6 "kbuild: verify that $DEPMOD is installed" introduced in v4.18.4.

On Wed, Aug 22, 2018 at 4:35 PM Randy Dunlap <[email protected]> wrote:
>
> On 08/22/2018 11:53 AM, H. Nikolaus Schaller wrote:
> > This patch requires that /sbin/depmod is installed and installable on
> > the build host.
> >
> > But not all build hosts for cross compiling Linux are Linux systems
> > and are able to provide a working port of depmod, especially at the
> > file patch /sbin/depmod.
> >
> > I use, for example, a Darwin system to cross compile Linux and I run
> > depmod -a on the embedded system once, after installing a new Linux
> > kernel there.
> >
> > I have no problem with seeing a warning, but aborting the build process
> > is IMHO a bad idea since the previous behaviour didn't harm many people
> > as far as I see. Probably 99% of people compiling Linux kernels do that
> > on Linux and 99% of those have depmod installed for optimal operation of
> > their build host. So IMHO printing the warning is good enough.
>
> Thanks for the report and sorry about the problem.
>
> I'm OK with changing the error to a warning.
> Does the patch below work for you?

Why would one want a warning on a host that never runs "make modules_install"?
Can this check be only done when we actually try to install modules?

Thanks.

--
Dmitry

2018-08-23 01:08:56

by Randy Dunlap

[permalink] [raw]
Subject: Re: please revert commit ce8556cca6 "kbuild: verify that $DEPMOD is installed" introduced in v4.18.4.

On 08/22/2018 05:39 PM, Dmitry Torokhov wrote:
> On Wed, Aug 22, 2018 at 4:35 PM Randy Dunlap <[email protected]> wrote:
>>
>> On 08/22/2018 11:53 AM, H. Nikolaus Schaller wrote:
>>> This patch requires that /sbin/depmod is installed and installable on
>>> the build host.
>>>
>>> But not all build hosts for cross compiling Linux are Linux systems
>>> and are able to provide a working port of depmod, especially at the
>>> file patch /sbin/depmod.
>>>
>>> I use, for example, a Darwin system to cross compile Linux and I run
>>> depmod -a on the embedded system once, after installing a new Linux
>>> kernel there.
>>>
>>> I have no problem with seeing a warning, but aborting the build process
>>> is IMHO a bad idea since the previous behaviour didn't harm many people
>>> as far as I see. Probably 99% of people compiling Linux kernels do that
>>> on Linux and 99% of those have depmod installed for optimal operation of
>>> their build host. So IMHO printing the warning is good enough.
>>
>> Thanks for the report and sorry about the problem.
>>
>> I'm OK with changing the error to a warning.
>> Does the patch below work for you?
>
> Why would one want a warning on a host that never runs "make modules_install"?
> Can this check be only done when we actually try to install modules?


So Nikolaus: how do you provoke this problem that you are reporting?
It's not just a theoretical problem, is it?

The way that I read the top-level Makefile, this check for $DEPMOD only happens
when you run "make modules_install".

--
~Randy

2018-08-23 07:26:21

by Masahiro Yamada

[permalink] [raw]
Subject: Re: please revert commit ce8556cca6 "kbuild: verify that $DEPMOD is installed" introduced in v4.18.4.

2018-08-23 10:07 GMT+09:00 Randy Dunlap <[email protected]>:
> On 08/22/2018 05:39 PM, Dmitry Torokhov wrote:
>> On Wed, Aug 22, 2018 at 4:35 PM Randy Dunlap <[email protected]> wrote:
>>>
>>> On 08/22/2018 11:53 AM, H. Nikolaus Schaller wrote:
>>>> This patch requires that /sbin/depmod is installed and installable on
>>>> the build host.
>>>>
>>>> But not all build hosts for cross compiling Linux are Linux systems
>>>> and are able to provide a working port of depmod, especially at the
>>>> file patch /sbin/depmod.
>>>>
>>>> I use, for example, a Darwin system to cross compile Linux and I run
>>>> depmod -a on the embedded system once, after installing a new Linux
>>>> kernel there.
>>>>
>>>> I have no problem with seeing a warning, but aborting the build process
>>>> is IMHO a bad idea since the previous behaviour didn't harm many people
>>>> as far as I see. Probably 99% of people compiling Linux kernels do that
>>>> on Linux and 99% of those have depmod installed for optimal operation of
>>>> their build host. So IMHO printing the warning is good enough.
>>>
>>> Thanks for the report and sorry about the problem.
>>>
>>> I'm OK with changing the error to a warning.
>>> Does the patch below work for you?
>>
>> Why would one want a warning on a host that never runs "make modules_install"?
>> Can this check be only done when we actually try to install modules?
>
>
> So Nikolaus: how do you provoke this problem that you are reporting?
> It's not just a theoretical problem, is it?
>
> The way that I read the top-level Makefile, this check for $DEPMOD only happens
> when you run "make modules_install".
>
> --
> ~Randy


Unless I am misunderstanding, he wants to use
"make modules_install" just for copying modules.

Then, he will run depmod on the target system later.




--
Best Regards
Masahiro Yamada

2018-08-23 09:27:32

by H. Nikolaus Schaller

[permalink] [raw]
Subject: Re: please revert commit ce8556cca6 "kbuild: verify that $DEPMOD is installed" introduced in v4.18.4.

Hi Randy,

> Am 23.08.2018 um 03:07 schrieb Randy Dunlap <[email protected]>:
>
> On 08/22/2018 05:39 PM, Dmitry Torokhov wrote:
>> On Wed, Aug 22, 2018 at 4:35 PM Randy Dunlap <[email protected]> wrote:
>>>
>>> On 08/22/2018 11:53 AM, H. Nikolaus Schaller wrote:
>>>> This patch requires that /sbin/depmod is installed and installable on
>>>> the build host.
>>>>
>>>> But not all build hosts for cross compiling Linux are Linux systems
>>>> and are able to provide a working port of depmod, especially at the
>>>> file patch /sbin/depmod.
>>>>
>>>> I use, for example, a Darwin system to cross compile Linux and I run
>>>> depmod -a on the embedded system once, after installing a new Linux
>>>> kernel there.
>>>>
>>>> I have no problem with seeing a warning, but aborting the build process
>>>> is IMHO a bad idea since the previous behaviour didn't harm many people
>>>> as far as I see. Probably 99% of people compiling Linux kernels do that
>>>> on Linux and 99% of those have depmod installed for optimal operation of
>>>> their build host. So IMHO printing the warning is good enough.
>>>
>>> Thanks for the report and sorry about the problem.
>>>
>>> I'm OK with changing the error to a warning.
>>> Does the patch below work for you?
>>
>> Why would one want a warning on a host that never runs "make modules_install"?
>> Can this check be only done when we actually try to install modules?
>
>
> So Nikolaus: how do you provoke this problem that you are reporting?
> It's not just a theoretical problem, is it?
>
> The way that I read the top-level Makefile, this check for $DEPMOD only happens
> when you run "make modules_install".

Yes,
we run on the build host

make letux_defconfig dtbs uImage INSTALL_MOD_PATH=/tmp/kernel-modules-$$ modules modules_install

and then scp the files from /tmp/kernel-modules-$$ to the embedded device.
Or pack into some installable file setfor download on our server.

So we run modules_install on the build host as well to copy the modules into the correct hierarchy
and give it the correct lib/modules/<kernel_release> prefix.

I would have to duplicate this what module_install does in some wrapper script.

BTW: it is a standard technique described by others:

http://labs.isee.biz/index.php/The_Linux_kernel#IGEP_Boards_based_on_Texas_Instruments_.C2.A0Processors

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules_install INSTALL_MOD_PATH=/media/user/rootfs

http://en.gnublin.org/index.php/Kernel_compile_%2B_Module_installation#Compile_the_modules

mkdir kernel_archiv
make modules_install INSTALL_MOD_PATH=kernel_archiv
cp arch/arm/boot/zImage kernel_archiv
cd kernel_archiv
tar cfvz kernel.tar.gz zImage lib/

All these descriptions will now break if run on a host without /sbin/depmod installed.

BR and thanks,
Nikolaus

2018-08-23 14:29:16

by Masahiro Yamada

[permalink] [raw]
Subject: Re: please revert commit ce8556cca6 "kbuild: verify that $DEPMOD is installed" introduced in v4.18.4.

Hi Randy,


2018-08-23 8:33 GMT+09:00 Randy Dunlap <[email protected]>:
> On 08/22/2018 11:53 AM, H. Nikolaus Schaller wrote:
>> This patch requires that /sbin/depmod is installed and installable on
>> the build host.
>>
>> But not all build hosts for cross compiling Linux are Linux systems
>> and are able to provide a working port of depmod, especially at the
>> file patch /sbin/depmod.
>>
>> I use, for example, a Darwin system to cross compile Linux and I run
>> depmod -a on the embedded system once, after installing a new Linux
>> kernel there.
>>
>> I have no problem with seeing a warning, but aborting the build process
>> is IMHO a bad idea since the previous behaviour didn't harm many people
>> as far as I see. Probably 99% of people compiling Linux kernels do that
>> on Linux and 99% of those have depmod installed for optimal operation of
>> their build host. So IMHO printing the warning is good enough.
>
> Thanks for the report and sorry about the problem.
>
> I'm OK with changing the error to a warning.
> Does the patch below work for you?
>
> thanks.
> ---
> From: Randy Dunlap <[email protected]>
>
> When $DEPMOD is not found, only print a warning instead of exiting
> with an error message and error status.
>
> E.g.:
> Warning: 'make modules_install' requires /sbin/depmod. Please install it.
> This is probably in the kmod package.
> ../scripts/depmod.sh: line 44: /sbin/depmod: No such file or directory
> make[1]: *** [/home/rdunlap/lnx/lnx-418/Makefile:1244: _modinst_post] Error 127
> make: *** [Makefile:146: sub-make] Error 2
>
> Signed-off-by: Randy Dunlap <[email protected]>
> Reported-by: H. Nikolaus Schaller <[email protected]>
> ---
> scripts/depmod.sh | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> --- lnx-418.orig/scripts/depmod.sh
> +++ lnx-418/scripts/depmod.sh
> @@ -15,9 +15,8 @@ if ! test -r System.map ; then
> fi
>
> if [ -z $(command -v $DEPMOD) ]; then
> - echo "'make modules_install' requires $DEPMOD. Please install it." >&2
> + echo "Warning: 'make modules_install' requires $DEPMOD. Please install it." >&2
> echo "This is probably in the kmod package." >&2
> - exit 1


'exit 0' is missing here.

This shell script would fail, then abort the build process.


> ../scripts/depmod.sh: line 44: /sbin/depmod: No such file or directory
> make[1]: *** [/home/rdunlap/lnx/lnx-418/Makefile:1244: _modinst_post] Error 127
> make: *** [Makefile:146: sub-make] Error 2






--
Best Regards
Masahiro Yamada

2018-08-23 16:31:25

by Alexander Kapshuk

[permalink] [raw]
Subject: Re: please revert commit ce8556cca6 "kbuild: verify that $DEPMOD is installed" introduced in v4.18.4.

On Thu, Aug 23, 2018 at 05:38:27PM +0900, Masahiro Yamada wrote:
> Hi Randy,
>
>
> 2018-08-23 8:33 GMT+09:00 Randy Dunlap <[email protected]>:
> > On 08/22/2018 11:53 AM, H. Nikolaus Schaller wrote:
> >> This patch requires that /sbin/depmod is installed and installable on
> >> the build host.
> >>
> >> But not all build hosts for cross compiling Linux are Linux systems
> >> and are able to provide a working port of depmod, especially at the
> >> file patch /sbin/depmod.
> >>
> >> I use, for example, a Darwin system to cross compile Linux and I run
> >> depmod -a on the embedded system once, after installing a new Linux
> >> kernel there.
> >>
> >> I have no problem with seeing a warning, but aborting the build process
> >> is IMHO a bad idea since the previous behaviour didn't harm many people
> >> as far as I see. Probably 99% of people compiling Linux kernels do that
> >> on Linux and 99% of those have depmod installed for optimal operation of
> >> their build host. So IMHO printing the warning is good enough.
> >
> > Thanks for the report and sorry about the problem.
> >
> > I'm OK with changing the error to a warning.
> > Does the patch below work for you?
> >
> > thanks.
> > ---
> > From: Randy Dunlap <[email protected]>
> >
> > When $DEPMOD is not found, only print a warning instead of exiting
> > with an error message and error status.
> >
> > E.g.:
> > Warning: 'make modules_install' requires /sbin/depmod. Please install it.
> > This is probably in the kmod package.
> > ../scripts/depmod.sh: line 44: /sbin/depmod: No such file or directory
> > make[1]: *** [/home/rdunlap/lnx/lnx-418/Makefile:1244: _modinst_post] Error 127
> > make: *** [Makefile:146: sub-make] Error 2
> >
> > Signed-off-by: Randy Dunlap <[email protected]>
> > Reported-by: H. Nikolaus Schaller <[email protected]>
> > ---
> > scripts/depmod.sh | 3 +--
> > 1 file changed, 1 insertion(+), 2 deletions(-)
> >
> > --- lnx-418.orig/scripts/depmod.sh
> > +++ lnx-418/scripts/depmod.sh
> > @@ -15,9 +15,8 @@ if ! test -r System.map ; then
> > fi
> >
> > if [ -z $(command -v $DEPMOD) ]; then
> > - echo "'make modules_install' requires $DEPMOD. Please install it." >&2
> > + echo "Warning: 'make modules_install' requires $DEPMOD. Please install it." >&2
> > echo "This is probably in the kmod package." >&2
> > - exit 1
>
>
> 'exit 0' is missing here.
>
> This shell script would fail, then abort the build process.
>
>
> > ../scripts/depmod.sh: line 44: /sbin/depmod: No such file or directory
> > make[1]: *** [/home/rdunlap/lnx/lnx-418/Makefile:1244: _modinst_post] Error 127
> > make: *** [Makefile:146: sub-make] Error 2
>
>
>
>
>
>
> --
> Best Regards
> Masahiro Yamada

May I suggest the following implementation:

diff -U0 scripts/depmod.sh ~/tmp/depmod.sh
--- scripts/depmod.sh 2018-08-10 17:14:19.036349222 +0300
+++ /home/sasha/tmp/depmod.sh 2018-08-23 18:07:23.486048827 +0300

# 'if' block may be omitted here. If System.map isn't there and isn't
readable, 'exit 0'.
@@ -13,3 +13 @@
-if ! test -r System.map ; then
- exit 0
-fi
+test -r System.map || exit 0

# Have the 'if' test statement syntax conform with the remainder of the
script, which uses 'if test' rather then the 2nd form of the test utility,
i.e. '[ expr ]'.
# In my view, the use of the negation operator, '!', makes the intent
clearer, and reads, 'if $DEPMOD not found', rather then 'if the length
of $DEPMOD is zero'.
@@ -17 +15 @@
-if [ -z $(command -v $DEPMOD) ]; then
+if test ! $(command -v $DEPMOD); then
@@ -20 +18 @@
- exit 1
+ exit 0

[Sample run]
# Testing for a non-existant utility:
% if test ! $(command -v cmd); then echo cmd not found; fi
% cmd not found

# Testing for a existing utility:
% if test ! $(command -v ed); then echo ed not found; fi

% if test $(command -v ed); then echo ed found; fi
% ed found

2018-08-23 17:54:39

by Randy Dunlap

[permalink] [raw]
Subject: [PATCH v2] modules_install: make missing $DEPMOD a warning instead of error

From: Randy Dunlap <[email protected]>

When $DEPMOD is not found, only print a warning instead of exiting
with an error message and error status.

Warning: 'make modules_install' requires /sbin/depmod. Please install it.
This is probably in the kmod package.

Signed-off-by: Randy Dunlap <[email protected]>
---
v2: add missing "exit 0" and update the commit message (no Error).

scripts/depmod.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

--- lnx-418.orig/scripts/depmod.sh
+++ lnx-418/scripts/depmod.sh
@@ -15,9 +15,9 @@ if ! test -r System.map ; then
fi

if [ -z $(command -v $DEPMOD) ]; then
- echo "'make modules_install' requires $DEPMOD. Please install it." >&2
+ echo "Warning: 'make modules_install' requires $DEPMOD. Please install it." >&2
echo "This is probably in the kmod package." >&2
- exit 1
+ exit 0
fi

# older versions of depmod require the version string to start with three


2018-08-23 18:01:48

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH v2] modules_install: make missing $DEPMOD a warning instead of error

On Thu, Aug 23, 2018 at 10:52:39AM -0700, Randy Dunlap wrote:
> From: Randy Dunlap <[email protected]>
>
> When $DEPMOD is not found, only print a warning instead of exiting
> with an error message and error status.
>
> Warning: 'make modules_install' requires /sbin/depmod. Please install it.
> This is probably in the kmod package.
>
> Signed-off-by: Randy Dunlap <[email protected]>
> ---
> v2: add missing "exit 0" and update the commit message (no Error).

You need a cc: stable in here too :(