A new stable version of libseccomp is available, so update the recipe. At the same time, integrate the ptest support that's currently being discussed on the libseccomp list.
Signed-off-by: Joe MacDonald <j...@deserted.net> --- .../0001-tests-create-install-tests-target.patch | 203 ++++++++++++++++++++ ...tests-install-python-tests-if-appropriate.patch | 61 ++++++ ...ts-introduce-alternate-test-report-format.patch | 124 ++++++++++++ .../{libseccomp_2.1.0.bb => libseccomp_2.1.1.bb} | 10 +- 4 files changed, 395 insertions(+), 3 deletions(-) create mode 100644 recipes-security/libseccomp/files/0001-tests-create-install-tests-target.patch create mode 100644 recipes-security/libseccomp/files/0002-tests-install-python-tests-if-appropriate.patch create mode 100644 recipes-security/libseccomp/files/0003-tests-introduce-alternate-test-report-format.patch rename recipes-security/libseccomp/{libseccomp_2.1.0.bb => libseccomp_2.1.1.bb} (58%) diff --git a/recipes-security/libseccomp/files/0001-tests-create-install-tests-target.patch b/recipes-security/libseccomp/files/0001-tests-create-install-tests-target.patch new file mode 100644 index 0000000..55eaf81 --- /dev/null +++ b/recipes-security/libseccomp/files/0001-tests-create-install-tests-target.patch @@ -0,0 +1,203 @@ +From e8e166cdc1fc31e02d568424e17b9f9fc1e95256 Mon Sep 17 00:00:00 2001 +From: Joe MacDonald <j...@deserted.net> +Date: Mon, 28 Oct 2013 15:40:14 -0400 +Subject: [PATCH 1/3] tests: create install-tests target + +It can be useful, in particular on a cross-build setup, to install the +tests and regression suite in addition to the library itself. Since most +people probably don't want that by default, though, create an +install-tests target that will place tests and regression script in +$(INSTALL_LIB_DIR)/libseccomp/tests and install the necessary tools in +$(INSTALL_BIN_DIR)/bin. + +Upstream-Status: Submitted [http://www.mail-archive.com/libseccomp-discuss@lists.sourceforge.net/msg00470.html] + +Signed-off-by: Joe MacDonald <j...@deserted.net> +--- + Makefile | 9 +++++++++ + README | 8 ++++++++ + install.mk | 1 + + macros.mk | 18 ++++++++++++++++++ + tests/Makefile | 7 ++++++- + tests/regression | 19 ++++++++++++++++--- + tools/Makefile | 3 +++ + 7 files changed, 61 insertions(+), 4 deletions(-) + +diff --git a/Makefile b/Makefile +index 1f61f20..8cb0a16 100644 +--- a/Makefile ++++ b/Makefile +@@ -40,6 +40,7 @@ include install.mk + CONFIGS = configure.mk configure.h version_info.mk libseccomp.pc + SUBDIRS_BUILD = include src tests tools + SUBDIRS_INSTALL = include src tools doc ++SUBDIRS_INSTALL_TEST = tools tests + + .PHONY: tarball install check check-syntax ctags cstags clean dist-clean \ + $(SUBDIRS_BUILD) +@@ -106,6 +107,14 @@ check: tools tests + check-syntax: + @./tools/check-syntax + ++install-tests: $(SUBDIRS_INSTALL_TEST) ++ @$(ECHO_INFO) "installing tests in $(INSTALL_PREFIX) ..." ++ $(ECHO_INFO) "installing from $$dir/" ++ @for dir in $(SUBDIRS_INSTALL_TEST); do \ ++ $(ECHO_INFO) "installing from $$dir/"; \ ++ $(MAKE) -C $$dir install-tests; \ ++ done ++ + ctags: + @$(ECHO_INFO) "generating ctags for the project ..." + @ctags -R * +diff --git a/README b/README +index 37b9709..14ae254 100644 +--- a/README ++++ b/README +@@ -41,6 +41,14 @@ to run all of the tests you can simply run the script: + However, the script takes a number of options to customize its execution; the + options can be displayed by running "./regression -h". + ++It is also possible to install the tests and regression script to the system by ++issuing: ++ ++ # make install-tests ++ ++When complete, installed tests and regression script may be found in ++$LIBDIR/lib/libseccomp/test ++ + * Other Useful Tools + + The "tools/" directory includes a number of tools which may be helpful in the +diff --git a/install.mk b/install.mk +index 123af33..f6aa311 100644 +--- a/install.mk ++++ b/install.mk +@@ -24,6 +24,7 @@ INSTALL_PREFIX ?= $(CONF_INSTALL_PREFIX) + INSTALL_SBIN_DIR ?= $(DESTDIR)/$(INSTALL_PREFIX)/sbin + INSTALL_BIN_DIR ?= $(DESTDIR)/$(INSTALL_PREFIX)/bin + INSTALL_LIB_DIR ?= $(DESTDIR)/$(CONF_INSTALL_LIBDIR) ++INSTALL_TEST_DIR ?= $(DESTDIR)/$(CONF_INSTALL_LIBDIR)/libseccomp/tests + INSTALL_INC_DIR ?= $(DESTDIR)/$(INSTALL_PREFIX)/include + INSTALL_MAN_DIR ?= $(DESTDIR)/$(INSTALL_PREFIX)/share/man + +diff --git a/macros.mk b/macros.mk +index 6df5b3a..e7c196d 100644 +--- a/macros.mk ++++ b/macros.mk +@@ -206,6 +206,24 @@ INSTALL_INC_MACRO += \ + $^ "$(INSTALL_INC_DIR)"; + + ifeq ($(V),0) ++ INSTALL_TEST_MACRO = @echo " INSTALL $^ ($(INSTALL_TEST_DIR))"; ++endif ++INSTALL_TEST_MACRO += \ ++ $(INSTALL) -o $(INSTALL_OWNER) -g $(INSTALL_GROUP) \ ++ -d "$(INSTALL_TEST_DIR)"; \ ++ $(INSTALL) -o $(INSTALL_OWNER) -g $(INSTALL_GROUP) -m 0755 \ ++ $^ "$(INSTALL_TEST_DIR)"; ++ ++ifeq ($(V),0) ++ INSTALL_REGRESSION_TEST_MACRO = @echo " INSTALL regression ($(INSTALL_TEST_DIR))"; ++endif ++INSTALL_REGRESSION_TEST_MACRO += \ ++ $(INSTALL) -o $(INSTALL_OWNER) -g $(INSTALL_GROUP) \ ++ -d "$(INSTALL_TEST_DIR)"; \ ++ $(INSTALL) -o $(INSTALL_OWNER) -g $(INSTALL_GROUP) -m 0755 \ ++ regression "$(INSTALL_TEST_DIR)"; ++ ++ifeq ($(V),0) + INSTALL_MAN1_MACRO = \ + @echo " INSTALL manpages ($(INSTALL_MAN_DIR)/man1)"; + endif +diff --git a/tests/Makefile b/tests/Makefile +index 5fdbca7..135551c 100644 +--- a/tests/Makefile ++++ b/tests/Makefile +@@ -31,6 +31,7 @@ include ../macros.mk + + include $(TOPDIR)/version_info.mk + include $(TOPDIR)/configure.mk ++include $(TOPDIR)/install.mk + + OBJS = util.o + +@@ -71,7 +72,7 @@ DEPS_TESTS = $(TESTS:%=%.d) + # targets + # + +-.PHONY: check clean ++.PHONY: check clean install-tests + + all: $(TESTS) $(OBJS) + +@@ -91,5 +92,9 @@ $(TEST_PRIVATE): 00-test.c $(OBJS) ../src/libseccomp.a + check: $(TESTS) + ./regression + ++install-tests: $(TESTS) $(TESTS:%=%.tests) ++ $(INSTALL_TEST_MACRO) ++ $(INSTALL_REGRESSION_TEST_MACRO) ++ + clean: + $(RM) $(DEPS_TESTS) $(DEPS_OBJS) $(TESTS) $(TEST_PRIVATE) $(OBJS) *.pyc +diff --git a/tests/regression b/tests/regression +index 790d5e1..3c293a4 100755 +--- a/tests/regression ++++ b/tests/regression +@@ -23,9 +23,18 @@ + + GLBL_ARCH_SUPPORT="x86 x86_64 x32 arm" + +-GLBL_SYS_ARCH="../tools/scmp_arch_detect" +-GLBL_SYS_RESOLVER="../tools/scmp_sys_resolver" +-GLBL_SYS_SIM="../tools/scmp_bpf_sim" ++GLBL_SYS_PATH=$(dirname $(readlink -m $0)) ++if [ -d $GLBL_SYS_PATH/../tools/ ]; then ++ # prepend ../tools to $PATH so we can use verify_deps to check for ++ # scmp_* support binaries if regression is running out of the build ++ # tree. ++ PATH=$GLBL_SYS_PATH/../tools/:$PATH ++ export PATH ++fi ++ ++GLBL_SYS_ARCH=$(which scmp_arch_detect) ++GLBL_SYS_RESOLVER=$(which scmp_sys_resolver) ++GLBL_SYS_SIM=$(which scmp_bpf_sim) + + #### + # functions +@@ -761,6 +770,9 @@ verify_deps head + verify_deps sed + verify_deps seq + verify_deps tr ++verify_deps scmp_arch_detect ++verify_deps scmp_sys_resolver ++verify_deps scmp_bpf_sim + + # global variables + declare -a batch_list +@@ -865,6 +877,7 @@ arch=$($GLBL_SYS_ARCH) + # display the test output and run the requested tests + echo "=============== $(date) ===============" >&$logfd + echo "Regression Test Report (\"regression $*\")" >&$logfd ++cd $(dirname $0) + for mode in $mode_list; do + run_tests + done +diff --git a/tools/Makefile b/tools/Makefile +index 79c7d25..9f4ffea 100644 +--- a/tools/Makefile ++++ b/tools/Makefile +@@ -62,5 +62,8 @@ $(TOOLS): + install: $(TOOLS_INSTALL) + $(INSTALL_BIN_MACRO) + ++install-tests: $(TOOLS) ++ $(INSTALL_BIN_MACRO) ++ + clean: + $(RM) $(DEPS) $(TOOLS) +-- +1.7.10.4 + diff --git a/recipes-security/libseccomp/files/0002-tests-install-python-tests-if-appropriate.patch b/recipes-security/libseccomp/files/0002-tests-install-python-tests-if-appropriate.patch new file mode 100644 index 0000000..52ae751 --- /dev/null +++ b/recipes-security/libseccomp/files/0002-tests-install-python-tests-if-appropriate.patch @@ -0,0 +1,61 @@ +From 49dd92b85ca1797f2d289f48d3c1cdaec678334b Mon Sep 17 00:00:00 2001 +From: Joe MacDonald <j...@deserted.net> +Date: Mon, 28 Oct 2013 15:40:15 -0400 +Subject: [PATCH 2/3] tests: install python tests if appropriate + +Install the python tests in addition to the C tests if python bindings are +being built. The regression script can, and needs to, have the +modification of the PYTHONPATH removed since it's unlikely in this +scenario that the original source tree will be around at all anymore. +This shouldn't be a problem since the library should be installed to the +default PYTHONPATH anyway. + +Upstream-Status: Submitted [http://www.mail-archive.com/libseccomp-discuss@lists.sourceforge.net/msg00470.html] + +Signed-off-by: Joe MacDonald <j...@deserted.net> +--- + macros.mk | 3 ++- + tests/Makefile | 6 +++++- + 2 files changed, 7 insertions(+), 2 deletions(-) + +diff --git a/macros.mk b/macros.mk +index e7c196d..13e7ed3 100644 +--- a/macros.mk ++++ b/macros.mk +@@ -221,7 +221,8 @@ INSTALL_REGRESSION_TEST_MACRO += \ + $(INSTALL) -o $(INSTALL_OWNER) -g $(INSTALL_GROUP) \ + -d "$(INSTALL_TEST_DIR)"; \ + $(INSTALL) -o $(INSTALL_OWNER) -g $(INSTALL_GROUP) -m 0755 \ +- regression "$(INSTALL_TEST_DIR)"; ++ regression "$(INSTALL_TEST_DIR)"; \ ++ $(SED) -i "/\/..\/src\/python\/build\/lib\./d" "$(INSTALL_TEST_DIR)/regression"; + + ifeq ($(V),0) + INSTALL_MAN1_MACRO = \ +diff --git a/tests/Makefile b/tests/Makefile +index 135551c..309a570 100644 +--- a/tests/Makefile ++++ b/tests/Makefile +@@ -78,6 +78,10 @@ all: $(TESTS) $(OBJS) + + -include $(DEPS_TESTS) $(DEPS_OBJS) + ++ifeq ($(CONF_BINDINGS_PYTHON), 1) ++ PY_TESTS = $(TESTS:%=%.py) ++endif ++ + $(DEPS_TESTS): + $(MAKEDEP_EXEC) + $(ADDDEP) $@ ../src/libseccomp.a +@@ -92,7 +96,7 @@ $(TEST_PRIVATE): 00-test.c $(OBJS) ../src/libseccomp.a + check: $(TESTS) + ./regression + +-install-tests: $(TESTS) $(TESTS:%=%.tests) ++install-tests: $(TESTS) $(TESTS:%=%.tests) $(PY_TESTS) + $(INSTALL_TEST_MACRO) + $(INSTALL_REGRESSION_TEST_MACRO) + +-- +1.7.10.4 + diff --git a/recipes-security/libseccomp/files/0003-tests-introduce-alternate-test-report-format.patch b/recipes-security/libseccomp/files/0003-tests-introduce-alternate-test-report-format.patch new file mode 100644 index 0000000..cd4d6fb --- /dev/null +++ b/recipes-security/libseccomp/files/0003-tests-introduce-alternate-test-report-format.patch @@ -0,0 +1,124 @@ +From 389604a4d7b445e429998599827195751238400a Mon Sep 17 00:00:00 2001 +From: Joe MacDonald <j...@deserted.net> +Date: Mon, 28 Oct 2013 15:40:16 -0400 +Subject: [PATCH 3/3] tests: introduce alternate test report format + +Adding an alternate test report format to the regression script. The +output format is modelled on the automake style described here: + + http://www.gnu.org/software/automake/manual/automake.html#Simple-Tests + +and is intended to support integrating the existing test scripts with the +Yocto Project's ptest infrastructure: + + https://wiki.yoctoproject.org/wiki/Ptest#What_constitutes_a_ptest.3F + +Currently there was only one use of the existing "INFO" tag in test +reporting, used in a way that better fit the "SKIP" model, so update that +as well and adjust print_result to handle SKIP and INFO interchangeably so +as to minimize the impact of this change on anyone not choosing to use the +new report format. + +Upstream-Status: Submitted [http://www.mail-archive.com/libseccomp-discuss@lists.sourceforge.net/msg00470.html] + +Signed-off-by: Joe MacDonald <j...@deserted.net> +--- + tests/regression | 35 +++++++++++++++++++++++++++-------- + 1 file changed, 27 insertions(+), 8 deletions(-) + +diff --git a/tests/regression b/tests/regression +index 3c293a4..a9315f7 100755 +--- a/tests/regression ++++ b/tests/regression +@@ -71,7 +71,7 @@ function verify_deps() { + function usage() { + cat << EOF + usage: regression [-h] [-v] [-m MODE] [-a] [-b BATCH_NAME] [-l <LOG>] +- [-s SINGLE_TEST] [-t <TEMP_DIR>] [-T <TEST_TYPE>] ++ [-p] [-s SINGLE_TEST] [-t <TEMP_DIR>] [-T <TEST_TYPE>] + + libseccomp regression test automation script + optional arguments: +@@ -80,6 +80,7 @@ optional arguments: + -a specifies all tests are to be run + -b BATCH_NAME specifies batch of tests to be run + -l [LOG] specifies log file to write test results to ++ -p use automake-style results output (ptest format) + -s SINGLE_TEST specifies individual test number to be run + -t [TEMP_DIR] specifies directory to create temporary files in + -T [TEST_TYPE] only run tests matching the specified type +@@ -127,17 +128,31 @@ function print_data() { + # + # Arguments: + # 1 string containing generated test number +-# 2 string containing the test result (INFO, SUCCESS, ERROR, or FAILURE) ++# 2 string containing the test result (SKIP, INFO, SUCCESS, ERROR, or FAILURE) + # 3 string containing addition details + # + function print_result() { +- if [[ $2 == "INFO" && -z $verbose ]]; then ++ if [[ $2 == "INFO" || $2 == "SKIP" ]] && [[ -z $verbose ]]; then + return + fi +- if [[ $3 == "" ]]; then +- printf "Test %s result: %s\n" "$1" "$2" >&$logfd ++ if [[ -n $ptest_report ]]; then ++ case $2 in ++ SUCCESS ) ++ printf "PASS: %s %s\n" "$1" "$3" >&$logfd ++ ;; ++ ERROR | FAILURE ) ++ printf "FAIL: %s %s\n" "$1" "$3" >&$logfd ++ ;; ++ SKIP ) ++ printf "SKIP: %s %s\n" "$1" "$3" >&$logfd ++ ;; ++ esac + else +- printf "Test %s result: %s %s\n" "$1" "$2" "$3" >&$logfd ++ if [[ $3 == "" ]]; then ++ printf "Test %s result: %s\n" "$1" "$2" >&$logfd ++ else ++ printf "Test %s result: %s %s\n" "$1" "$2" "$3" >&$logfd ++ fi + fi + } + +@@ -358,7 +373,7 @@ function run_test_bpf_sim() { + fi + elif [[ "$testarch" != "all" ]] && [[ "$testarch" != "$arch" ]]; then + # only run tests that match the current architecture +- print_result $(generate_test_num "$1" $2 1) "INFO" \ ++ print_result $(generate_test_num "$1" $2 1) "SKIP" \ + "Test skipped due to test/system architecture difference" + stats_skipped=$(($stats_skipped+1)) + return +@@ -788,13 +803,14 @@ tmpfile="" + tmpdir="" + type= + verbose= ++ptest_report= + stats_all=0 + stats_skipped=0 + stats_success=0 + stats_failure=0 + stats_error=0 + +-while getopts "ab:gl:m:s:t:T:vh" opt; do ++while getopts "ab:gl:m:ps:t:T:vh" opt; do + case $opt in + a) + runall=1 +@@ -820,6 +836,9 @@ while getopts "ab:gl:m:s:t:T:vh" opt; do + exit 1 + esac + ;; ++ p) ++ ptest_report=1 ++ ;; + s) + single_list[single_count]=$OPTARG + single_count=$(($single_count+1)) +-- +1.7.10.4 + diff --git a/recipes-security/libseccomp/libseccomp_2.1.0.bb b/recipes-security/libseccomp/libseccomp_2.1.1.bb similarity index 58% rename from recipes-security/libseccomp/libseccomp_2.1.0.bb rename to recipes-security/libseccomp/libseccomp_2.1.1.bb index f909c62..27fa259 100644 --- a/recipes-security/libseccomp/libseccomp_2.1.0.bb +++ b/recipes-security/libseccomp/libseccomp_2.1.1.bb @@ -5,10 +5,14 @@ LICENSE = "GPL-2.0" LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" SRC_URI = "http://sourceforge.net/projects/libseccomp/files/${PN}-${PV}.tar.gz \ - file://compiler.patch" + file://compiler.patch \ + file://0001-tests-create-install-tests-target.patch \ + file://0002-tests-install-python-tests-if-appropriate.patch \ + file://0003-tests-introduce-alternate-test-report-format.patch \ +" -SRC_URI[md5sum] = "3961103c1234c13a810f6a12e60c797f" -SRC_URI[sha256sum] = "b0d6e4f0984e6632a04f0cf33c6babdb011674ba15ff208e196f037e0e09905e" +SRC_URI[md5sum] = "1f41207b29e66a7e5e375dd48a64de85" +SRC_URI[sha256sum] = "8812c11e407c383f5ad6afb84a88e5a0224477bcfe8ff03f0c548e5abaac841c" do_configure() { ${S}/configure --prefix=${prefix} --libdir=${libdir} -- 1.7.10.4 _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto