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
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
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
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
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 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
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
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
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
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
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 :(