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 rdunlap@infradead.org
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 rdunlap@infradead.org Reported-by: H. Nikolaus Schaller hns@goldelico.com --- 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 rdunlap@infradead.org 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.
On 08/22/2018 05:39 PM, Dmitry Torokhov wrote:
On Wed, Aug 22, 2018 at 4:35 PM Randy Dunlap rdunlap@infradead.org 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".
Hi Randy,
Am 23.08.2018 um 03:07 schrieb Randy Dunlap rdunlap@infradead.org:
On 08/22/2018 05:39 PM, Dmitry Torokhov wrote:
On Wed, Aug 22, 2018 at 4:35 PM Randy Dunlap rdunlap@infradead.org 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_I...
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#Compi...
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 10:07 GMT+09:00 Randy Dunlap rdunlap@infradead.org:
On 08/22/2018 05:39 PM, Dmitry Torokhov wrote:
On Wed, Aug 22, 2018 at 4:35 PM Randy Dunlap rdunlap@infradead.org 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.
Hi Randy,
2018-08-23 8:33 GMT+09:00 Randy Dunlap rdunlap@infradead.org:
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 rdunlap@infradead.org
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 rdunlap@infradead.org Reported-by: H. Nikolaus Schaller hns@goldelico.com
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
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 rdunlap@infradead.org:
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 rdunlap@infradead.org
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 rdunlap@infradead.org Reported-by: H. Nikolaus Schaller hns@goldelico.com
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 rdunlap@infradead.org
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 rdunlap@infradead.org --- 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 rdunlap@infradead.org
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 rdunlap@infradead.org
v2: add missing "exit 0" and update the commit message (no Error).
You need a cc: stable in here too :(
linux-stable-mirror@lists.linaro.org