Re: Out-of-tree module building fails with O= argument

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Feb 14, 2024 at 11:02 PM Marcos Paulo de Souza
<mpdesouza@xxxxxxxx> wrote:
>
> Hello Masahiro and Kbuild ML,
>
> Recently we added out-of-tree module building on kselftests for the
> livepatch selftests. Everything worked as expected, but kernel test
> robot complained about it[1].
>
> So far, all our tests were being done targeting different options for
> kselftests, but we didn't test using the O= option. The interesting
> part of it is that this can be easily reproducible with any out-of-tree
> module building even on current upstream, like the code below:
>
> $ uname -r
> 6.8.0-rc4+
> $ make
> make -C /lib/modules/6.8.0-rc4+/build M=/home/mpdesouza/test-oot
> modules
> make[1]: Entering directory '/home/mpdesouza/git/linux'
>   CC [M]  /home/mpdesouza/test-oot/patch_1.o
>   MODPOST /home/mpdesouza/test-oot/Module.symvers
>   CC [M]  /home/mpdesouza/test-oot/patch_1.mod.o
>   LD [M]  /home/mpdesouza/test-oot/patch_1.ko
>   BTF [M] /home/mpdesouza/test-oot/patch_1.ko
> make[1]: Leaving directory '/home/mpdesouza/git/linux'
>
> But it fails when using O= argument:
> $ make O=/tmp/kout
> make -C /lib/modules/6.8.0-rc4+/build M=/home/mpdesouza/test-oot
> modules
> make[1]: Entering directory '/home/mpdesouza/git/linux'
> make[2]: Entering directory '/tmp/kout'
> /home/mpdesouza/git/linux/Makefile:733: include/config/auto.conf: No
> such file or directory
> make[2]: *** [/home/mpdesouza/git/linux/Makefile:240: __sub-make] Error
> 2
> make[2]: Leaving directory '/tmp/kout'
> make[1]: *** [Makefile:240: __sub-make] Error 2
> make[1]: Leaving directory '/home/mpdesouza/git/linux'
> make: *** [Makefile:6: all] Error 2
>
> As I already described on [2], the O= argument (or KBUILD_OUTPUT) makes
> the kernel to jump into the directory specified on the variabled, but
> running the Makefile on /lib/modules/6.8.0-rc4+/build. The problem is
> thattoplevel Makefile on /lib/modules/.../build includes files using
> relative paths. In this case, the makefile tries to find
> include/config/auto.conf on /tmp/kout, which obviously doesn't exists.
>
> Do you think this can be a bug on Kbuild? Should we ignore O= when
> building out-of-tree modules?


No.

O= is not meant for the output directory for external modules.

O= is supposed to point to the object tree of the kernel
(when the kernel was built in the separate output directory)











> Also, as noted[3] by Petr Mladek (CCed here as well), kernel-devel
> doesn't include auto.conf, so maybe kernel-devel should be patched as
> well?
>
> Thanks in advance,
>   Marcos
>
> [1]:
> https://lore.kernel.org/oe-kbuild-all/202401300736.GkSZoSrA-lkp@xxxxxxxxx/
> [2]:
> https://lore.kernel.org/oe-kbuild-all/fd027fa958a0bc65285a0c6c42e5921e7d28b0ad.camel@xxxxxxxx/
> [3]: https://lore.kernel.org/oe-kbuild-all/ZbpnBqHUl3pE_3Te@alley/



-- 
Best Regards
Masahiro Yamada





[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux