This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH] Allow tests-special to be marked as UNSUPPORTED.
- From: "Carlos O'Donell" <carlos at redhat dot com>
- To: GNU C Library <libc-alpha at sourceware dot org>, "Joseph S. Myers" <joseph at codesourcery dot com>, Roland McGrath <roland at hack dot frob dot com>
- Date: Mon, 31 Aug 2015 13:57:45 -0400
- Subject: [PATCH] Allow tests-special to be marked as UNSUPPORTED.
- Authentication-results: sourceware.org; auth=none
Joseph, Roland,
Is this the way we want to solve marking special tests as unsupported?
This patch adds a new target, similar to tests-unsupported, but allows
tests-special to be marked as unsupported.
When the test is unsupported the rule to make the test should be removed,
and the test added to tests-special-unsupported. The test should always
be added to tests-special to trigger the running of the test.
I immediately use this to mark c++-types-test.sh as unsupported if a
C++ compiler is not present, as might be the case during a bootstrap.
At present this generates a FAIL for c++-types-test during Fedora
stage1 bootstrap because there is no C++ compiler yet, and because the
check is `ifneq ($(CXX),no)` which is always true since CXX is
set to empty when no compiler present or a valid path to a compiler
when it is present.
Tested on x86_64 without a C++ compiler installed to verify that all the
C++ related tests become UNSUPPORTED, including c++-types-check.
Note that due to the tests-special in Makefile we can't put this target
into Rules, but we add to Rules a comment.
OK?
Cheers,
Carlos.
2015-08-28 Carlos O'Donell <carlos@redhat.com>
* Makefile [ifeq (,$(CXX)] (tests-special-unsupported):
Add $(objpfx)c++-types-check.out.
[ifneq "$(strip $(tests-special-unsupported))" ""]
($(tests-special-unsupported)): New target.
* Rules: Add comment that $(tests-special-unsupported) target
is in Makefile.
diff --git a/Makefile b/Makefile
index 658ccfa..585100a 100644
--- a/Makefile
+++ b/Makefile
@@ -251,8 +251,11 @@ tests-clean:
@$(MAKE) subdir_testclean no_deps=t
tests-special += $(objpfx)c++-types-check.out $(objpfx)check-local-headers.out
-ifneq ($(CXX),no)
+ifeq (,$(CXX))
+# This test requires a C++ compiler to verify the types.
+tests-special-unsupported += $(objpfx)c++-types-check.out
+else
vpath c++-types.data $(+sysdep_dirs)
$(objpfx)c++-types-check.out: c++-types.data scripts/check-c++-types.sh
@@ -338,6 +341,24 @@ xtests:
> $(objpfx)xtests.sum
$(call summarize-tests,xtests.sum, for extra tests)
+# tests-special-unsupported lists tests that we will not try to run at all in
+# this configuration. Note this runs every time because it does not actually
+# create its target. The dependency on Makefile is meant to ensure that it
+# runs after a Makefile change to add a tests to the list when it previously
+# ran and produced a .out file.
+#
+# The tests-special-unsupported target lives in Makefile because there are
+# top-level tests in Makefile, and one or more of those top-level tests should
+# be unsupported in some configurations, and Rules can't be included here due
+# to ordering. A better solution would be to move all tests-special tests out
+# of the top-level and into subdirs and move this rule into Rules with the
+# matching tests-unsupported target.
+ifneq "$(strip $(tests-special-unsupported))" ""
+$(tests-special-unsupported): Makefile
+ $(..)scripts/evaluate-test.sh $(patsubst $(common-objpfx)%.out,%,$@) \
+ 77 false false > $(@:.out=.test-result)
+endif
+
# The realclean target is just like distclean for the parent, but we want
# the subdirs to know the difference in case they care.
realclean distclean: parent-clean
diff --git a/Rules b/Rules
index e237d03..7706fd1 100644
--- a/Rules
+++ b/Rules
@@ -210,6 +210,9 @@ $(tests-unsupported:%=$(objpfx)%.out): $(objpfx)%.out: Makefile
77 false false > $(@:.out=.test-result)
endif
+# NOTE: There is a tests-special-unsupported target, which should go here, but
+# for now lives in the top-level Makefile.
+
endif # tests
---
Cheers,
Carlos.