This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[v2, with help] Re: run one test
- From: DJ Delorie <dj at redhat dot com>
- To: Szabolcs Nagy <Szabolcs dot Nagy at arm dot com>
- Cc: libc-alpha at sourceware dot org, nd at arm dot com
- Date: Mon, 30 Sep 2019 15:37:19 -0400
- Subject: [v2, with help] Re: run one test
Szabolcs Nagy <Szabolcs.Nagy@arm.com> writes:
> unfortunately there is currently no easy way to
> discover such make targets. (maybe there could be a
> make target that prints out usage information for
> the most commonly used make targets)
I added a help option, with mini-help. I do NOT volunteer to write a
comprehensive one-page help doc for our Makefile, but invite everyone to
add their favorite targets willy-nilly after the initial commit :-)
The obvious next question is "how does the user know to run 'make
help'?" but I tried to give them a hint there too.
> it can be convenient to rerun a set of tests too, e.g.
> by providing a list or pattern like 'math/test-double-*',
> which can be implemented in a similar way.
I think we can do that with wildcards and file matching, but I don't
know off the top of my head how to wrap the onetest code into that kind
of expansion. Is there a compelling case for needing more than one but
less than a subdir of tests rerun?
> same for benchmarks.
I've not run the benchmarks myself, but... yeah, probably.
> for now the proposed patch looks good enough though.
Same patch, with help system, attached...
diff --git a/Makefile b/Makefile
index 67ddd01bfe..0465609de0 100644
--- a/Makefile
+++ b/Makefile
@@ -26,8 +26,17 @@ include Makeconfig
# This is the default target; it makes everything except the tests.
-.PHONY: all
-all: lib others
+.PHONY: all help minihelp
+all: minihelp lib others
+
+help:
+ @sed '0,/^help-starts-here$$/d' Makefile.help
+
+minihelp:
+ @echo
+ @echo type \"make help\" for help with common GLIBC makefile targets
+ @echo
+
ifneq ($(AUTOCONF),no)
@@ -499,3 +508,11 @@ FORCE:
iconvdata/% localedata/% po/%: FORCE
$(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
+
+# Convenience target to rerun one test, from the top of the build tree
+# Example: make onetest t=wcsmbs/test-wcsnlen
+onetest :
+ @-rm -f $(objpfx)$t.out
+ $(MAKE) subdir=$(dir $t) -C $(dir $t) ..=../ $(objpfx)$t.out
+ @cat $(objpfx)$t.test-result
+ @cat $(objpfx)$t.out
diff --git a/Makefile.help b/Makefile.help
new file mode 100644
index 0000000000..76b3418adb
--- /dev/null
+++ b/Makefile.help
@@ -0,0 +1,41 @@
+# Copyright (C) 2019 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <https://www.gnu.org/licenses/>.
+
+This is the file that gets printed when the user runs "make help",
+starting just after the "help-starts-here" line.
+
+help-starts-here
+
+all
+ The usual default; builds everything but doesn't run the
+ tests.
+tests
+ Runs the testsuite. Also "make check" is a shortcut for this
+
+onetest
+ Runs one test. Use like this:
+ make onetest t=wcsmbs/test-wcsnlen
+ Note that this will rebuild the test if needed, but will not
+ rebuild what "make all" would have rebuilt.
+
+--
+Other useful hints:
+
+$ rm $(objpfx)testroot.pristine/install.stamp
+ Forces the testroot to be reinstalled the next time you run
+ the testsuite (or just rm -rf testroot.pristine)
+