[LTP] [PATCH 2/3] openposix: Setup autoconf and fix installation layout
Richard Palethorpe
rpalethorpe@suse.de
Tue Jul 5 07:57:02 CEST 2022
Hello Joerg,
Joerg Vehlow <lkml@jv-coder.de> writes:
> From: Joerg Vehlow <joerg.vehlow@aox.de>
>
> This allows installation of the tests to a different directory
> than directly under $prefix.
>
> Before the layout was:
> $prefix/bin/{run-*,t0,run-tests.h,Makefile}
> $prefix/conformance
> $prefix/functional
> $prefix/stress
>
> with prefix being /opt/openposix_testsuite on linux and
> /usr/local/openposix_testsuite on other systems
> OR the value of the env-var $prefix.
>
> With this change, the prefix defaults to /opt/openposix_testsuite
> and can be changed the usual way using configure (./configure ---prefix=foo)
> Additionally the path of the tests below $prefix can be changed, using
> configure --with-open-posix-testdir=<foo>. This allows clean installation as
> part of ltp:
>
> $prefix/bin/{run-all-posix-option-group-tests.sh,run-posix-option-group-test.sh}
> $prefix/$testdir/bin/{run-tests.sh,t0}
> $prefix/$testdir/conformance
> $prefix/$testdir/functional
> $prefix/$testdir/stress
>
> Only the two directly callable shell scripts are kept under $prefix/bin,
> the two other executables are moved to testdir, because they are only
> used by the implementation of the test execution scripts (run.sh)
> $prefix/bin/Makefile is not installed anymore, because it is not required.
>
> Signed-off-by: Joerg Vehlow <joerg.vehlow@aox.de>
> ---
> testcases/open_posix_testsuite/.gitignore | 5 ++
> testcases/open_posix_testsuite/CFLAGS | 1 -
> .../Documentation/HOWTO_Release | 4 +-
> .../Documentation/HOWTO_RunTests | 1 +
> testcases/open_posix_testsuite/INSTALL | 9 ----
> testcases/open_posix_testsuite/LDFLAGS | 0
> testcases/open_posix_testsuite/LDLIBS | 0
> testcases/open_posix_testsuite/Makefile | 51 +++++++++++++------
> testcases/open_posix_testsuite/QUICK-START | 6 +--
> testcases/open_posix_testsuite/bin/Makefile | 30 ++++++++---
> .../bin/run-posix-option-group-test.sh | 4 +-
> testcases/open_posix_testsuite/configure.ac | 18 +++++++
> .../open_posix_testsuite/conformance/Makefile | 1 +
> .../conformance/behavior/Makefile | 2 +
> .../conformance/definitions/Makefile | 2 +
> .../conformance/interfaces/Makefile | 2 +
> .../open_posix_testsuite/functional/Makefile | 2 +
> .../include/mk/config.mk.in | 17 +++++++
> .../open_posix_testsuite/include/mk/env.mk | 11 ++++
> .../scripts/generate-makefiles.sh | 39 +++-----------
> .../scripts/print-prefix.sh | 10 ----
> .../open_posix_testsuite/stress/Makefile | 2 +
> testcases/open_posix_testsuite/tools/Makefile | 9 ++--
> 23 files changed, 139 insertions(+), 87 deletions(-)
> delete mode 100644 testcases/open_posix_testsuite/CFLAGS
> delete mode 100644 testcases/open_posix_testsuite/INSTALL
> delete mode 100644 testcases/open_posix_testsuite/LDFLAGS
> delete mode 100644 testcases/open_posix_testsuite/LDLIBS
> create mode 100644 testcases/open_posix_testsuite/configure.ac
> create mode 100644 testcases/open_posix_testsuite/include/mk/config.mk.in
> create mode 100644 testcases/open_posix_testsuite/include/mk/env.mk
> delete mode 100755 testcases/open_posix_testsuite/scripts/print-prefix.sh
>
> diff --git a/testcases/open_posix_testsuite/.gitignore b/testcases/open_posix_testsuite/.gitignore
> index a134c02a4..c9164df3a 100644
> --- a/testcases/open_posix_testsuite/.gitignore
> +++ b/testcases/open_posix_testsuite/.gitignore
> @@ -15,3 +15,8 @@
> run.sh
>
> logfile
> +
> +/configure
> +/config.log
> +/config.status
> +include/mk/config.mk
> diff --git a/testcases/open_posix_testsuite/CFLAGS b/testcases/open_posix_testsuite/CFLAGS
> deleted file mode 100644
> index 297d2929a..000000000
> --- a/testcases/open_posix_testsuite/CFLAGS
> +++ /dev/null
> @@ -1 +0,0 @@
> --std=c99 -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -W -Wall
> diff --git a/testcases/open_posix_testsuite/Documentation/HOWTO_Release b/testcases/open_posix_testsuite/Documentation/HOWTO_Release
> index a6970c871..3332cae00 100644
> --- a/testcases/open_posix_testsuite/Documentation/HOWTO_Release
> +++ b/testcases/open_posix_testsuite/Documentation/HOWTO_Release
> @@ -20,8 +20,8 @@ released files.
> 4. Download the *.tar.gz file from the SF interface and untar it in
> a sandbox.
>
> -5. Run "make" to try to build and execute all files in the release, and
> - ensure that they all build and execute correctly.
> +5. Run "./configure && make" to try to build and execute all files
> + in the release, and ensure that they all build and execute correctly.
>
> 6. Craft a release message and send to: posixtest-announce.
>
> diff --git a/testcases/open_posix_testsuite/Documentation/HOWTO_RunTests b/testcases/open_posix_testsuite/Documentation/HOWTO_RunTests
> index 0231838e2..c443f9e3e 100644
> --- a/testcases/open_posix_testsuite/Documentation/HOWTO_RunTests
> +++ b/testcases/open_posix_testsuite/Documentation/HOWTO_RunTests
> @@ -45,6 +45,7 @@ To build and run the tests, you should be in the main posix test suite
> directory.
>
> From there, execute:
> + # ./configure
> # make all
>
> This will build all of the conformance, functional, and stress tests.
> diff --git a/testcases/open_posix_testsuite/INSTALL b/testcases/open_posix_testsuite/INSTALL
> deleted file mode 100644
> index 9e3d3cd0a..000000000
> --- a/testcases/open_posix_testsuite/INSTALL
> +++ /dev/null
> @@ -1,9 +0,0 @@
> -
> -This package does not install yet ... it is intended to be run
> -directly.
> -
> -See BUILD for information on how to configure your system to build
> -all tests.
> -
> -See Documentation/HOWTO_RunTests for information on how to run all tests.
> -
> diff --git a/testcases/open_posix_testsuite/LDFLAGS b/testcases/open_posix_testsuite/LDFLAGS
> deleted file mode 100644
> index e69de29bb..000000000
> diff --git a/testcases/open_posix_testsuite/LDLIBS b/testcases/open_posix_testsuite/LDLIBS
> deleted file mode 100644
> index e69de29bb..000000000
> diff --git a/testcases/open_posix_testsuite/Makefile b/testcases/open_posix_testsuite/Makefile
> index fea6db14b..affabf9f7 100644
> --- a/testcases/open_posix_testsuite/Makefile
> +++ b/testcases/open_posix_testsuite/Makefile
> @@ -5,6 +5,10 @@
> # all of the Makefiles will be rebuilt by default.
> CRITICAL_MAKEFILE= conformance/interfaces/timer_settime/Makefile
>
> +top_srcdir?= .
> +
> +include include/mk/env.mk
> +
> # The default logfile for the tests.
> LOGFILE?= logfile
> # Subdirectories to traverse down.
> @@ -21,43 +25,58 @@ BUILD_MAKE= env $(BUILD_MAKE_ENV) $(MAKE)
>
> TEST_MAKE= env $(TEST_MAKE_ENV) $(MAKE) -k
>
> -top_srcdir?= .
> -
> -prefix?= `$(top_srcdir)/scripts/print_prefix.sh`
> -
> -datadir?= $(prefix)/share
> -
> -exec_prefix?= $(prefix)
> -
> all: conformance-all functional-all stress-all tools-all
>
> ifeq ($(shell uname -s), Linux)
> include Makefile.linux
> endif
>
> -clean: $(CRITICAL_MAKEFILE)
> - @rm -f $(LOGFILE)*
> +AUTOGENERATED_FILES = include/mk/config.mk
> +
> +.PHONY: ac-clean
> +ac-clean: clean
> +
> +.PHONY: clean
> +clean:
> + $(RM) -f $(LOGFILE)*
> + $(RM) -f config.log config.status
> @for dir in $(SUBDIRS) tools; do \
> $(MAKE) -C $$dir clean >/dev/null; \
> done
>
> -distclean: distclean-makefiles
> +.PHONY: distclean
> +distclean: clean distclean-makefiles
> + @rm -f $(AUTOGENERATED_FILES)
Shouldn't this also include the configure script itself? Running
distclean on the LTP root removes the top level configure script.
>
> # Clean out all of the generated Makefiles.
> +.PHONY: distclean-makefiles
> distclean-makefiles:
> @for dir in $(SUBDIRS); do \
> $(MAKE) -C $$dir $@; \
> done
>
> +$(AUTOGENERATED_FILES): $(top_builddir)/config.status
> + $(SHELL) $^
> +
> +.PHONY: autotools
> +autotools: configure
> +
> +configure: configure.ac
> + autoconf
> +
> +.PHONY: generate-makefiles
> generate-makefiles: distclean-makefiles
> @env top_srcdir=$(top_srcdir) \
> $(top_srcdir)/scripts/generate-makefiles.sh
>
> +.PHONY: install
> install: bin-install conformance-install functional-install stress-install
>
> +.PHONY: test
> test: conformance-test functional-test stress-test
>
> # Test build and execution targets.
> +.PHONY: conformance-all conformance-install conformance-test
> conformance-all: $(CRITICAL_MAKEFILE)
> @rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@
> @$(BUILD_MAKE) -C conformance -j1 all
> @@ -69,6 +88,7 @@ conformance-test:
> @rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@
> @$(TEST_MAKE) -C conformance test
>
> +.PHONY: functional-all functional-install functional-test
> functional-all: $(CRITICAL_MAKEFILE)
> @rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@
> @$(BUILD_MAKE) -C functional -j1 all
> @@ -80,6 +100,7 @@ functional-test:
> @rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@
> @$(TEST_MAKE) -C functional test
>
> +.PHONY: stress-all stress-install stress-test
> stress-all: $(CRITICAL_MAKEFILE)
> @rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@
> @$(BUILD_MAKE) -C stress -j1 all
> @@ -92,17 +113,15 @@ stress-test:
> @$(TEST_MAKE) -C stress test
>
> # Tools build and install targets.
> +.PHONY: bin-install
> bin-install:
> @$(MAKE) -C bin install
>
> +.PHONY: tools-all
> tools-all:
> @$(MAKE) -C tools all
>
> -$(CRITICAL_MAKEFILE): \
> - $(top_srcdir)/scripts/generate-makefiles.sh \
> - $(top_srcdir)/CFLAGS \
> - $(top_srcdir)/LDFLAGS \
> - $(top_srcdir)/LDLIBS
> +$(CRITICAL_MAKEFILE): $(top_srcdir)/scripts/generate-makefiles.sh
> @$(MAKE) generate-makefiles
>
> .PHONY: check
> diff --git a/testcases/open_posix_testsuite/QUICK-START b/testcases/open_posix_testsuite/QUICK-START
> index 6f5d881b4..649d7a3d7 100644
> --- a/testcases/open_posix_testsuite/QUICK-START
> +++ b/testcases/open_posix_testsuite/QUICK-START
> @@ -10,8 +10,6 @@ No worries! Here's a quick doc to help you around POSIX** Test Suite.
> Setting up your machine
> ========================
>
> -* There is nothing to install, the suite is intended to be run directly.
> -
> * See the "BUILD" file for info on how to set up the Makefile and your machine,
> depending on what specific area you are concentrating on.
> (Signals, Semaphores, Threads, Timers or Message Queues).
> @@ -20,8 +18,8 @@ Setting up your machine
> Running the tests
> ===================
>
> -* Easiest way to run all the tests is to do a "make all" in the top-level
> - directory.
> +* Easiest way to run all the tests is to do a "./configure && make all"
Trailing whitespace at the end of this line
> + in the top-level directory.
>
> * To run tests for a specific directory, do the following
> - make generate-makefiles # only required for the first shot.
> diff --git a/testcases/open_posix_testsuite/bin/Makefile b/testcases/open_posix_testsuite/bin/Makefile
> index d9fd13800..262a6567c 100644
> --- a/testcases/open_posix_testsuite/bin/Makefile
> +++ b/testcases/open_posix_testsuite/bin/Makefile
> @@ -4,18 +4,32 @@
> # Ngie Cooper, July 2010
> #
>
> -top_srcdir?= ..
> +top_srcdir ?= ..
>
> -srcdir= $(top_srcdir)/bin
> +include $(top_srcdir)/include/mk/config.mk
>
> -prefix?= `$(top_srcdir)/scripts/print-prefix.sh`
> -
> -bindir?= $(prefix)/bin
> +INSTALL_BIN_TARGETS = run-all-posix-option-group-tests.sh run-posix-option-group-test.sh
> +INSTALL_TESTCASE_BIN_TARGETS = run-tests.sh t0
>
> +.PHONY: clean
> clean:
> @rm -f t0.val
>
> -install: clean
> - @set -e; for i in `ls *`; do \
> - install -m 0755 $$i $(DESTDIR)/$(bindir)/. ;\
> +.PHONY: install
> +install: clean $(DESTDIR)/$(bindir) $(DESTDIR)/$(testdir_bin)
> + set -e; for file in $(INSTALL_BIN_TARGETS); do \
> + install -m 00755 $$file $(DESTDIR)/$(bindir)/$$file; \
> + done
> +
> + sed -i 's~TESTPATH=""~TESTPATH="$(testdir_rel)"~' $(DESTDIR)/$(bindir)/run-posix-option-group-test.sh
> +
> + set -e; for file in $(INSTALL_TESTCASE_BIN_TARGETS); do \
> + install -m 00755 $$file $(DESTDIR)/$(testdir_bin)/$$file; \
> done
> +
> +
> +$(DESTDIR)/$(bindir):
> + mkdir -p $@
> +
> +$(DESTDIR)/$(testdir_bin):
> + mkdir -p $@
> diff --git a/testcases/open_posix_testsuite/bin/run-posix-option-group-test.sh b/testcases/open_posix_testsuite/bin/run-posix-option-group-test.sh
> index 1bbdddfd5..e90c252a3 100755
> --- a/testcases/open_posix_testsuite/bin/run-posix-option-group-test.sh
> +++ b/testcases/open_posix_testsuite/bin/run-posix-option-group-test.sh
> @@ -8,7 +8,9 @@
> #
> # Use to build and run tests for a specific area
>
> -BASEDIR="$(dirname "$0")/../conformance/interfaces"
> +TESTPATH=""
> +
> +BASEDIR="$(dirname "$0")/../${TESTPATH}/conformance/interfaces"
>
> usage()
> {
> diff --git a/testcases/open_posix_testsuite/configure.ac b/testcases/open_posix_testsuite/configure.ac
> new file mode 100644
> index 000000000..ae0399d07
> --- /dev/null
> +++ b/testcases/open_posix_testsuite/configure.ac
> @@ -0,0 +1,18 @@
> +AC_PREREQ(2.61)
> +AC_INIT([open_posix_testsuite], [LTP_VERSION], [ltp@lists.linux.it])
> +AC_CONFIG_FILES([ \
> + include/mk/config.mk \
> +])
> +
> +AC_PROG_CC_C99
This causes a deprecation warning for me
> +
> +AC_PREFIX_DEFAULT(/opt/openposix_testsuite)
> +
> +AC_ARG_WITH([open-posix-testdir],
> + [AS_HELP_STRING([--with-open-posix-testdir=DIR], [Relative path from $prefix to testdir])],
> + [testdir=$withval],
> + [testdir=]
> +)
> +AC_SUBST([testdir], [$testdir])
> +
> +AC_OUTPUT
--
Thank you,
Richard.
More information about the ltp
mailing list