diff mbox series

[2/2] selftests: Add kselftest_install target to main Makefile

Message ID b3c50f4c726df521039f57295b53349227f629d9.1569452305.git.skhan@linuxfoundation.org (mailing list archive)
State New, archived
Headers show
Series Simplify kselftest build and install use-cases | expand

Commit Message

Shuah Khan Sept. 25, 2019, 11:04 p.m. UTC
Add kselftest_install target to install tests from the top level
Makefile. This is to simplify kselftest use-cases for CI and
distributions where build and test systems are different.

This change addresses requests from developers and testers to add
support for installing kselftest from the main Makefile.

In addition, make the install directory the same when install is
run using "make kselftest_install" or by running kselftest_install.sh.
Also fix the INSTALL_PATH variable conflict between main Makefile.

Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
---
 Makefile                                     | 4 ++++
 tools/testing/selftests/Makefile             | 8 ++++++--
 tools/testing/selftests/kselftest_install.sh | 4 ++--
 3 files changed, 12 insertions(+), 4 deletions(-)

Comments

Masahiro Yamada Sept. 26, 2019, 3:24 a.m. UTC | #1
Hi Shuah,



On Thu, Sep 26, 2019 at 8:05 AM Shuah Khan <skhan@linuxfoundation.org> wrote:
>
> Add kselftest_install target to install tests from the top level
> Makefile. This is to simplify kselftest use-cases for CI and
> distributions where build and test systems are different.
>
> This change addresses requests from developers and testers to add
> support for installing kselftest from the main Makefile.
>
> In addition, make the install directory the same when install is
> run using "make kselftest_install" or by running kselftest_install.sh.
> Also fix the INSTALL_PATH variable conflict between main Makefile.
>
> Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>

So, if these two patches were applied, we would see the following:


PHONY += kselftest_build
kselftest_build:
        $(Q)$(MAKE) -C $(srctree)/tools/testing/selftests all

PHONY += kselftest
kselftest:
        $(Q)$(MAKE) -C $(srctree)/tools/testing/selftests run_tests

PHONY += kselftest_install
kselftest_install:
        $(Q)$(MAKE) -C $(srctree)/tools/testing/selftests install

PHONY += kselftest-clean
kselftest-clean:
        $(Q)$(MAKE) -C $(srctree)/tools/testing/selftests clean


I do not want to see this endless crap addition just for
changing the working directory to $(srctree)/tools/testing/selftests



Why don't you use pattern rule?
Those will be reduced into the two rules.



PHONY += kselftest
kselftest:
        $(Q)$(MAKE) -C $(srctree)/tools/testing/selftests run_tests

kselftest-%: FORCE
        $(Q)$(MAKE) -C $(srctree)/tools/testing/selftests $*



This also avoids your inconsistency about
"kselftest-" vs "kselftest_".


Given the existing "kselftest-clean" and "kselftest-merge",
"kselftest_build" and "kselftest_install"
(using an underscore instead of n hyphen)
would add needless confusion.
Shuah Khan Sept. 26, 2019, 10:11 p.m. UTC | #2
On 9/25/19 9:24 PM, Masahiro Yamada wrote:
> Hi Shuah,
> 
> 
> 
> On Thu, Sep 26, 2019 at 8:05 AM Shuah Khan <skhan@linuxfoundation.org> wrote:
>>
>> Add kselftest_install target to install tests from the top level
>> Makefile. This is to simplify kselftest use-cases for CI and
>> distributions where build and test systems are different.
>>
>> This change addresses requests from developers and testers to add
>> support for installing kselftest from the main Makefile.
>>
>> In addition, make the install directory the same when install is
>> run using "make kselftest_install" or by running kselftest_install.sh.
>> Also fix the INSTALL_PATH variable conflict between main Makefile.
>>
>> Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
> 
> So, if these two patches were applied, we would see the following:
> 
> 
> PHONY += kselftest_build
> kselftest_build:
>          $(Q)$(MAKE) -C $(srctree)/tools/testing/selftests all
> 
> PHONY += kselftest
> kselftest:
>          $(Q)$(MAKE) -C $(srctree)/tools/testing/selftests run_tests
> 
> PHONY += kselftest_install
> kselftest_install:
>          $(Q)$(MAKE) -C $(srctree)/tools/testing/selftests install
> 
> PHONY += kselftest-clean
> kselftest-clean:
>          $(Q)$(MAKE) -C $(srctree)/tools/testing/selftests clean
> 
> 
> I do not want to see this endless crap addition just for
> changing the working directory to $(srctree)/tools/testing/selftests
> 
> 
> 
> Why don't you use pattern rule?
> Those will be reduced into the two rules.
> 

I just didn't think about simplifying it. Thanks for
being direct.

> 
> 
> PHONY += kselftest
> kselftest:
>          $(Q)$(MAKE) -C $(srctree)/tools/testing/selftests run_tests
> 
> kselftest-%: FORCE
>          $(Q)$(MAKE) -C $(srctree)/tools/testing/selftests $*
> 
> 
> 
> This also avoids your inconsistency about
> "kselftest-" vs "kselftest_".
> 
> 
> Given the existing "kselftest-clean" and "kselftest-merge",
> "kselftest_build" and "kselftest_install"
> (using an underscore instead of n hyphen)
> would add needless confusion.
> 
> 

Done. Sending v2 with two patches collapsed into one.

thanks,
-- Shuah
diff mbox series

Patch

diff --git a/Makefile b/Makefile
index ac4af6fc4b50..65c62af6b6fa 100644
--- a/Makefile
+++ b/Makefile
@@ -1241,6 +1241,10 @@  PHONY += kselftest
 kselftest:
 	$(Q)$(MAKE) -C $(srctree)/tools/testing/selftests run_tests
 
+PHONY += kselftest_install
+kselftest_install:
+	$(Q)$(MAKE) -C $(srctree)/tools/testing/selftests install
+
 PHONY += kselftest-clean
 kselftest-clean:
 	$(Q)$(MAKE) -C $(srctree)/tools/testing/selftests clean
diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile
index c3feccb99ff5..bad18145ed1a 100644
--- a/tools/testing/selftests/Makefile
+++ b/tools/testing/selftests/Makefile
@@ -171,9 +171,12 @@  run_pstore_crash:
 # 1. output_dir=kernel_src
 # 2. a separate output directory is specified using O= KBUILD_OUTPUT
 # 3. a separate output directory is specified using KBUILD_OUTPUT
+# Avoid conflict with INSTALL_PATH set by the main Makefile
 #
-INSTALL_PATH ?= $(BUILD)/install
-INSTALL_PATH := $(abspath $(INSTALL_PATH))
+KSFT_INSTALL_PATH ?= $(BUILD)/kselftest_install
+KSFT_INSTALL_PATH := $(abspath $(KSFT_INSTALL_PATH))
+# Avoid changing the rest of the logic here and lib.mk.
+INSTALL_PATH := $(KSFT_INSTALL_PATH)
 ALL_SCRIPT := $(INSTALL_PATH)/run_kselftest.sh
 
 install: all
@@ -203,6 +206,7 @@  ifdef INSTALL_PATH
 		echo "[ -w /dev/kmsg ] && echo \"kselftest: Running tests in $$TARGET\" >> /dev/kmsg" >> $(ALL_SCRIPT); \
 		echo "cd $$TARGET" >> $(ALL_SCRIPT); \
 		echo -n "run_many" >> $(ALL_SCRIPT); \
+		echo -n "Emit Tests for $$TARGET\n"; \
 		$(MAKE) -s --no-print-directory OUTPUT=$$BUILD_TARGET -C $$TARGET emit_tests >> $(ALL_SCRIPT); \
 		echo "" >> $(ALL_SCRIPT);	    \
 		echo "cd \$$ROOT" >> $(ALL_SCRIPT); \
diff --git a/tools/testing/selftests/kselftest_install.sh b/tools/testing/selftests/kselftest_install.sh
index ec304463883c..e2e1911d62d5 100755
--- a/tools/testing/selftests/kselftest_install.sh
+++ b/tools/testing/selftests/kselftest_install.sh
@@ -24,12 +24,12 @@  main()
 		echo "$0: Installing in specified location - $install_loc ..."
 	fi
 
-	install_dir=$install_loc/kselftest
+	install_dir=$install_loc/kselftest_install
 
 # Create install directory
 	mkdir -p $install_dir
 # Build tests
-	INSTALL_PATH=$install_dir make install
+	KSFT_INSTALL_PATH=$install_dir make install
 }
 
 main "$@"