Clang's optimizer, as of clang version 2.8 (trunk 107463), produces the
undefined instruction 'ud2' for the code "*(int*)0=0" on OS X x86_64.
It causes our crash tests to fail because the child process exits with
an invalid instruction instead of a segmentation fault. Work around the
bug by using "*(int*)1=0" in this case.
Commits 26ea271 and c00e4ac resulted from a bad export to KWSys CVS.
They were published automatically by a robot. We constructed a fixed
history and merged in the original history to fast-forward.
Add option KWSYS_TEST_BOGUS_FAILURES that can be set by a containing
project or in the CMake cache to list tests known to fail consistently
on a buggy system.
From: Brad King <brad.king@kitware.com>
Date: Wed, 30 Jun 2010 11:25:42 -0400
Subject: [PATCH 2/2] KWSys: Optionally suppress consistent test failures
Add option KWSYS_TEST_BOGUS_FAILURES that can be set by a containing
project or in the CMake cache to list tests known to fail consistently
on a buggy system.
---
Source/kwsys/CMakeLists.txt | 6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/Source/kwsys/CMakeLists.txt b/Source/kwsys/CMakeLists.txt
index bdf6613..bcc7a96 100644
--- a/Source/kwsys/CMakeLists.txt
+++ b/Source/kwsys/CMakeLists.txt
@@ -1125,5 +1125,11 @@ IF(KWSYS_STANDALONE OR CMake_SOURCE_DIR)
SET_TESTS_PROPERTIES(kwsys.testFail PROPERTIES MEASUREMENT "Some Key=Some Value")
MESSAGE(STATUS "GET_TEST_PROPERTY returned: ${wfv}")
ENDIF(COMMAND SET_TESTS_PROPERTIES AND COMMAND GET_TEST_PROPERTY AND KWSYS_STANDALONE)
+
+ # Suppress known consistent failures on buggy systems.
+ IF(KWSYS_TEST_BOGUS_FAILURES)
+ SET_TESTS_PROPERTIES(${KWSYS_TEST_BOGUS_FAILURES} PROPERTIES WILL_FAIL ON)
+ ENDIF()
+
ENDIF(BUILD_TESTING)
ENDIF(KWSYS_STANDALONE OR CMake_SOURCE_DIR)
--
1.7.0
From: Brad King <brad.king@kitware.com>
Date: Wed, 30 Jun 2010 11:23:19 -0400
Subject: [PATCH 1/2] KWSys: Use short fallback timeout for Process tests
If any of the KWSys Process tests take more than a minute or two then
something is wrong. There is no need to wait for a long default
timeout.
---
Source/kwsys/CMakeLists.txt | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/Source/kwsys/CMakeLists.txt b/Source/kwsys/CMakeLists.txt
index 083629a..bdf6613 100644
--- a/Source/kwsys/CMakeLists.txt
+++ b/Source/kwsys/CMakeLists.txt
@@ -1097,6 +1097,7 @@ IF(KWSYS_STANDALONE OR CMake_SOURCE_DIR)
FOREACH(n 1 2 3 4 5 6 ${KWSYS_TEST_PROCESS_7})
ADD_TEST(kwsys.testProcess-${n} ${EXEC_DIR}/${KWSYS_NAMESPACE}TestProcess ${n})
KWSYS_SET_PROPERTY(TEST kwsys.testProcess-${n} PROPERTY LABELS ${KWSYS_LABELS_TEST})
+ SET_TESTS_PROPERTIES(kwsys.testProcess-${n} PROPERTIES TIMEOUT 120)
ENDFOREACH(n)
# Some Apple compilers produce bad optimizations in this source.
--
1.7.0
Look for a C/C++ compiler pair from known toolchains on some platforms.
This makes it less likely that mismatched compilers will be found.
Check only if the environment variables CC and CXX are both empty.
Commit ff1f8d0b (Fix or cast more integer conversions in cmake) changed
a member type from int to size_t. Update the types of variables
compared to these values to be unsigned also.
Commit d84cbd0f (FindMPI: Parse mpicc flags more carefully, 2010-06-24)
broke parsing of '-L' flags appearing after '-Wl,' by expecting a
preceding space. Update the regular expression to allow '-Wl,-L' too.
Both possible result values need to be convertible to the same type.
Some compilers fail to recognize that they can construct std::string
from the empty string literal, so state it explicitly.
Since commit "Provide unix-sytle command line parsing" (2009-07-13) the
reference to KWSYS_C_HAS_PTRDIFF_T in System.c has been meaningless
because the macro was never passed to the compiler!
Separation by ',' only works in VS 2008 and below and does not work in
the PlayStation3 VS plugin. Separation by ';' works in VS 10 and all
prior versions.
Do not hard-code known BlueGene/L MPI libraries. We do not know their
location so the linker cannot find them without the proper -L search
path. The MPI compiler tells us about the libraries anyway, and if it
does not then the user can fix the problem locally by editing the
MPI_EXTRA_LIBRARY cache entry.
Change types of local variables, or casting, or re-arrange
expressions to get rid of "conversion may alter value" warnings
as seen on recent dashboard submissions from londinium.kitware.
If GIT_EXECUTABLE is not passed in, and is not available from
DartConfiguration.tcl or CTestConfiguration.ini, then make one
more last ditch attempt to get it from Update.xml, if there is
an Update.xml. For dashboards that have successfully done a
ctest_update call, there should be an Update.xml in the Testing
subdir of the binary tree. Parse that file for the git executable
recorded in the <UpdateCommand> element.
And make this test pass on those RogueResearch dashboard machines!
Make sure no one tries to use gcc 33 based tools to build CMake.
This is because a cpack test failed with a crash. The crash
seems to be caused by the stack checking code on by default in
OpenBSD. The crash is in some stl code. The problem is fixed
with newer gcc compilers on OpenBSD.
Extend the fix from commit 68c7d3e2 (FindMPI: Do not parse -l in middle
of library name, 2010-06-24). Parse -D, -I, -L, and -Wl only with
preceding spaces or at the beginning of the string.
ldd can return "not found" and we need to handle it correctly.
In that case, we extract only the name of the library instead of trying for its full path.