Commit a5f30467 authored by Veronika Kabatova's avatar Veronika Kabatova Committed by Shuah Khan
Browse files

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: default avatarVeronika Kabatova <vkabatov@redhat.com>
Reviewed-by: default avatarStefano Brivio <sbrivio@redhat.com>
Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
parent 2ef96a5b
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -151,6 +151,29 @@ note some tests will require root privileges::
   $ cd kselftest
   $ ./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
======================

+8 −1
Original line number Diff line number Diff line
@@ -249,10 +249,17 @@ else
	$(error Error: set INSTALL_PATH to use install)
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:
	@for TARGET in $(TARGETS); do \
		BUILD_TARGET=$$BUILD/$$TARGET;	\
		$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\
	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
+5 −0
Original line number Diff line number Diff line
@@ -49,6 +49,11 @@ main()
	# directory
	./kselftest_install.sh "$install_dir"
	(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!"

	# clean up top-level install work directory