Re: [RFC v3 0/3] Fix errors when try to build kvm selftests on specified output

From: shuah
Date: Fri May 01 2020 - 13:11:44 EST


On 3/28/20 2:51 AM, Xiaoyao Li wrote:
On 3/28/2020 12:03 AM, shuah wrote:
On 3/27/20 7:31 AM, Xiaoyao Li wrote:
On 3/27/2020 4:57 AM, shuah wrote:
On 3/25/20 9:07 PM, Xiaoyao Li wrote:
The patches you sent are based on running the command with OUTPUT
set.

The issues are also there when I use

 make O=/somewher TARGETS=kvm

from tools/testing/selftests/ directory,

Is it the right usecase?

That is why I am asking you start with the right use-cases,
and gave you pointers on tests to refer to that have sub-dirs
and handle relocatable builds:

futex
arm64
android

I have read the Makefile in futex, arm64, android to learn how they
deal with subdir, they have Makefile in subdir but kvm doesn't.

I just want to create the subdir as easy as possible, so I follow the method how to create subdir for LIBKVM_OBJ in kvm.

If you dislike it way you can reply it Patch 1 to disclaim clear what you want to fix the subdir.

Also, just build isn't sufficient for you to be able to run the
tests.

make kselftest-install O=/path/to/mydir TARGETS=kvm will generate
run script.

This command also has the x86_64 directory not created issue.
Since it generates header files in kernel_src/usr/include, it doesn't have headers path issue. But as result, the kernel_src directory is not clean, this requires me to run "make mrproper", I *really* don't like it.



If the test leverages lib.mk headers install logic correctly, you
shouldn't see this problem.

Yes. It does make the source directory dirty. That is the problem we
have to fix. I am seeing issues the issue of x86_64 not being created
in the case of relocatable builds.

Thanks for working on this by the way. It is one of the tests that
identified as the one doesn't support relocatable builds.

You will see fixes to others I already fixed in

https://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest.git/log/?h=next

Start withe the following use0-cases to fix and then test your fixes
for these use-cases. The goal is to be able to run kvm from target
directory and source directory staying clean.

You will have to build the kernel first in all of these cases.
Let's use kselftest-install which is what you would need if you
want build and then run tests later. Also assuming you are doing
native build on x86_64.

ÂFrom main kernel Makefile: (from kernel source root dir)

Builds in the same source directory:
make kselftest-install TARGETS=kvm

Relocatable build: (from kernel source root dir)

make O=/path/objdir - build kernel
make kselftest-install O=/path/objdir TARGETS=kvm

I don't want to build kernel at all.

ÂFrom tools/testing/selftests/kvm directory:
make O=/path/objdir install

Oh no. This needs to define INSTALL_PATH, and I don't want to install.
I just want to build the testcase of kvm to anywhere else to make srcdir clean.

Besides this command make both kernel src and selftest/kvm dirty.

Install step is important especially for relocatable builds,
as it makes sure all run-time dependencies are copied to the
target directory.


OK.

So, again.

is

 make O=/tmp/kvm-selftest -C tools/testing/selftests \
ÂÂÂÂÂÂ TARGETS=kvm install INSTALL_PATH=/home/lxy/kvm-selftest

the right command for me to start on?


Sorry for the delay. Yes the above command will work. Please check

https://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest.git next branch

I fixed kvm build/cross-build problems and applied it to next for
testing.

https://patchwork.kernel.org/patch/11513471/

thanks,
-- Shuah