selftests: introduce gen_tar Makefile target
The gen_kselftest_tar.sh always packages *all* selftests and doesn't pass along any variables to `make install` to influence what should be built. This can result in an early error on the command line ("Unknown tarball format TARGETS=XXX"), or unexpected test failures as the tarball contains tests people wanted to skip on purpose. Since the makefile already contains all the logic, we can add a target for packaging. Keep the default .gz target the script uses, and actually extend the supported formats by using tar's autodetection. To not break current workflows, keep the gen_kselftest_tar.sh script as it is, with an added suggestion to use the makefile target instead. Signed-off-by: Veronika Kabatova <vkabatov@redhat.com> Reviewed-by: Stefano Brivio <sbrivio@redhat.com> Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
This commit is contained in:
parent
2ef96a5bb1
commit
a5f304670b
@ -151,6 +151,29 @@ note some tests will require root privileges::
|
|||||||
$ cd kselftest
|
$ cd kselftest
|
||||||
$ ./run_kselftest.sh
|
$ ./run_kselftest.sh
|
||||||
|
|
||||||
|
Packaging selftests
|
||||||
|
===================
|
||||||
|
|
||||||
|
In some cases packaging is desired, such as when tests need to run on a
|
||||||
|
different system. To package selftests, run::
|
||||||
|
|
||||||
|
$ make -C tools/testing/selftests gen_tar
|
||||||
|
|
||||||
|
This generates a tarball in the `INSTALL_PATH/kselftest-packages` directory. By
|
||||||
|
default, `.gz` format is used. The tar format can be overridden by specifying
|
||||||
|
a `FORMAT` make variable. Any value recognized by `tar's auto-compress`_ option
|
||||||
|
is supported, such as::
|
||||||
|
|
||||||
|
$ make -C tools/testing/selftests gen_tar FORMAT=.xz
|
||||||
|
|
||||||
|
`make gen_tar` invokes `make install` so you can use it to package a subset of
|
||||||
|
tests by using variables specified in `Running a subset of selftests`_
|
||||||
|
section::
|
||||||
|
|
||||||
|
$ make -C tools/testing/selftests gen_tar TARGETS="bpf" FORMAT=.xz
|
||||||
|
|
||||||
|
.. _tar's auto-compress: https://www.gnu.org/software/tar/manual/html_node/gzip.html#auto_002dcompress
|
||||||
|
|
||||||
Contributing new tests
|
Contributing new tests
|
||||||
======================
|
======================
|
||||||
|
|
||||||
|
@ -249,10 +249,17 @@ else
|
|||||||
$(error Error: set INSTALL_PATH to use install)
|
$(error Error: set INSTALL_PATH to use install)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
FORMAT ?= .gz
|
||||||
|
TAR_PATH = $(abspath ${INSTALL_PATH}/kselftest-packages/kselftest.tar${FORMAT})
|
||||||
|
gen_tar: install
|
||||||
|
@mkdir -p ${INSTALL_PATH}/kselftest-packages/
|
||||||
|
@tar caf ${TAR_PATH} --exclude=kselftest-packages -C ${INSTALL_PATH} .
|
||||||
|
@echo "Created ${TAR_PATH}"
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@for TARGET in $(TARGETS); do \
|
@for TARGET in $(TARGETS); do \
|
||||||
BUILD_TARGET=$$BUILD/$$TARGET; \
|
BUILD_TARGET=$$BUILD/$$TARGET; \
|
||||||
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\
|
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\
|
||||||
done;
|
done;
|
||||||
|
|
||||||
.PHONY: khdr all run_tests hotplug run_hotplug clean_hotplug run_pstore_crash install clean
|
.PHONY: khdr all run_tests hotplug run_hotplug clean_hotplug run_pstore_crash install clean gen_tar
|
||||||
|
@ -49,6 +49,11 @@ main()
|
|||||||
# directory
|
# directory
|
||||||
./kselftest_install.sh "$install_dir"
|
./kselftest_install.sh "$install_dir"
|
||||||
(cd "$install_work"; tar $copts "$dest"/kselftest${ext} $install_name)
|
(cd "$install_work"; tar $copts "$dest"/kselftest${ext} $install_name)
|
||||||
|
|
||||||
|
# Don't put the message at the actual end as people may be parsing the
|
||||||
|
# "archive created" line in their scripts.
|
||||||
|
echo -e "\nConsider using 'make gen_tar' instead of this script\n"
|
||||||
|
|
||||||
echo "Kselftest archive kselftest${ext} created!"
|
echo "Kselftest archive kselftest${ext} created!"
|
||||||
|
|
||||||
# clean up top-level install work directory
|
# clean up top-level install work directory
|
||||||
|
Loading…
Reference in New Issue
Block a user