-----Original Message----- From: Shuah Khan skhan@linuxfoundation.org
On 7/8/22 10:23 AM, Guillaume Tucker wrote:
Earlier attempts to get "make O=build kselftest-all" to work were not successful as they made undesirable changes to some functions in the top-level Makefile. This series takes a different approach by removing the root cause of the problem within kselftest, which is when the sub-Makefile tries to install kernel headers "backwards" by calling make with the top-level Makefile. The actual issue comes from the fact that $(srctree) is ".." when building in a sub-directory with "O=build" which then obviously makes "-C $(top_srcdir)" point outside of the real source tree.
With this series, the generic kselftest targets work as expected from the top level with or without a build directory e.g.:
$ make kselftest-all
$ make O=build kselftest-all
Then in order to build using the sub-Makefile explicitly, the headers have to be installed first. This is arguably a valid requirement to have when building a tool from a sub-Makefile. For example, "make -C tools/testing/nvdimm/" fails in a similar way until <asm/rwonce.h> has been generated by a kernel build.
Guillaume Tucker (4): selftests: drop khdr make target selftests: stop using KSFT_KHDR_INSTALL selftests: drop KSFT_KHDR_INSTALL make target Makefile: add headers_install to kselftest targets
This takes us to back to the state before b2d35fa5fc80 added khdr support. I reluctantly agreed to the change and it has proven to be a problematic change. I would rather have had the dependency stated that headers should be installed prior to building tests - test build depends on kernel build anyway and having dependency on headers having build isn't a huge deal.
So I am in favor of getting rid of khdr support. However, this khdr support was a change originated from Linaro test ring. Undoing this might have implication on their workflow.
I will pull them into the discussion so they are aware of it and be prepared for this change.
I ran into this bug quite a while ago. I reported it here: https://lore.kernel.org/all/ECADFF3FD767C149AD96A924E7EA6EAF977BD214@USCULXM... it was fixed here: https://lore.kernel.org/all/20191015014505.14259-1-skhan@linuxfoundation.org... but apparently reverting it was discussed, based on this: https://lore.kernel.org/all/8d34a9b9-f8f3-0e37-00bf-c342cf3d4074@arm.com/
I'm not sure what happened after that.
I was able to work around it by avoiding putting the build directory inside the source tree.
I strongly support getting rid of the khdr stuff, as it's quite hard to follow. I think my workflow would not be affected (but I should run off and test it.)
Thanks for working on this Guillaume! -- Tim