[Cmake-commits] CMake branch, next, updated. v3.7.0-1272-g760f2bf

Brad King brad.king at kitware.com
Fri Nov 18 09:43:59 EST 2016


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  760f2bfc6dc3f0d21460f1f85a6b2f7b50244639 (commit)
       via  80ebc55a7ce934ee357c30713bcb96b209e97963 (commit)
       via  ce1abfa4149ae0b3920626bef2dd15e8ee8b1940 (commit)
       via  44de61578130cbd6e0f23057f9cf86f884078a4e (commit)
      from  dc97bfc8af0895adadcce4ccd6f2099d70c44e5a (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=760f2bfc6dc3f0d21460f1f85a6b2f7b50244639
commit 760f2bfc6dc3f0d21460f1f85a6b2f7b50244639
Merge: dc97bfc 80ebc55
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri Nov 18 09:43:59 2016 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Fri Nov 18 09:43:59 2016 -0500

    Merge topic 'capture-clang-tidy-errors' into next
    
    80ebc55a cmake: Report if the <LANG>_CLANG_TIDY tool exits with non-zero
    ce1abfa4 cmake: If ldd for LINK_WHAT_YOU_USE fails to run then report why
    44de6157 cmake: Comment why we ignore the include-what-you-use return code


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=80ebc55a7ce934ee357c30713bcb96b209e97963
commit 80ebc55a7ce934ee357c30713bcb96b209e97963
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Thu Nov 17 11:36:04 2016 -0500
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Fri Nov 18 09:43:22 2016 -0500

    cmake: Report if the <LANG>_CLANG_TIDY tool exits with non-zero
    
    When using `<LANG>_CLANG_TIDY` our internal launcher for the tool must
    capture its return code and stderr and report them on failure.
    Otherwise incorrect command lines silently fail.
    
    Closes: #16435

diff --git a/Help/release/dev/capture-clang-tidy-errors.rst b/Help/release/dev/capture-clang-tidy-errors.rst
new file mode 100644
index 0000000..14c32e6
--- /dev/null
+++ b/Help/release/dev/capture-clang-tidy-errors.rst
@@ -0,0 +1,6 @@
+capture-clang-tidy-errors
+-------------------------
+
+* If a command specified by the :prop_tgt:`<LANG>_CLANG_TIDY` target property
+  returns non-zero at build time this is now treated as an error instead of
+  silently ignored.
diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx
index dca5ffc..f1ce75a 100644
--- a/Source/cmcmd.cxx
+++ b/Source/cmcmd.cxx
@@ -358,14 +358,21 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string>& args)
 
         // Run the tidy command line.  Capture its stdout and hide its stderr.
         std::string stdOut;
-        if (!cmSystemTools::RunSingleCommand(tidy_cmd, &stdOut, CM_NULLPTR,
-                                             &ret, CM_NULLPTR,
+        std::string stdErr;
+        if (!cmSystemTools::RunSingleCommand(tidy_cmd, &stdOut, &stdErr, &ret,
+                                             CM_NULLPTR,
                                              cmSystemTools::OUTPUT_NONE)) {
-          std::cerr << "Error running '" << tidy_cmd[0] << "'\n";
+          std::cerr << "Error running '" << tidy_cmd[0] << "': " << stdErr
+                    << "\n";
           return 1;
         }
         // Output the stdout from clang-tidy to stderr
         std::cerr << stdOut;
+        // If clang-tidy exited with an error do the same.
+        if (ret != 0) {
+          std::cerr << stdErr;
+          return ret;
+        }
       }
       if (!lwyu.empty()) {
         // Construct the ldd -r -u (link what you use lwyu) command line
diff --git a/Tests/RunCMake/ClangTidy/C-bad-Build-result.txt b/Tests/RunCMake/ClangTidy/C-bad-Build-result.txt
new file mode 100644
index 0000000..d197c91
--- /dev/null
+++ b/Tests/RunCMake/ClangTidy/C-bad-Build-result.txt
@@ -0,0 +1 @@
+[^0]
diff --git a/Tests/RunCMake/ClangTidy/C-bad-Build-stdout.txt b/Tests/RunCMake/ClangTidy/C-bad-Build-stdout.txt
new file mode 100644
index 0000000..2370ce1
--- /dev/null
+++ b/Tests/RunCMake/ClangTidy/C-bad-Build-stdout.txt
@@ -0,0 +1,2 @@
+stdout from bad command line arg '-bad'
+stderr from bad command line arg '-bad'
diff --git a/Tests/RunCMake/ClangTidy/C-bad.cmake b/Tests/RunCMake/ClangTidy/C-bad.cmake
new file mode 100644
index 0000000..aa54c08
--- /dev/null
+++ b/Tests/RunCMake/ClangTidy/C-bad.cmake
@@ -0,0 +1,3 @@
+enable_language(C)
+set(CMAKE_C_CLANG_TIDY "${PSEUDO_TIDY}" -bad)
+add_executable(main main.c)
diff --git a/Tests/RunCMake/ClangTidy/RunCMakeTest.cmake b/Tests/RunCMake/ClangTidy/RunCMakeTest.cmake
index 27cd922..2f41e50 100644
--- a/Tests/RunCMake/ClangTidy/RunCMakeTest.cmake
+++ b/Tests/RunCMake/ClangTidy/RunCMakeTest.cmake
@@ -20,3 +20,4 @@ if (NOT RunCMake_GENERATOR STREQUAL "Watcom WMake")
   run_tidy(C-launch)
   run_tidy(CXX-launch)
 endif()
+run_tidy(C-bad)
diff --git a/Tests/RunCMake/pseudo_tidy.c b/Tests/RunCMake/pseudo_tidy.c
index c950d03..2feeb0f 100644
--- a/Tests/RunCMake/pseudo_tidy.c
+++ b/Tests/RunCMake/pseudo_tidy.c
@@ -1,9 +1,15 @@
 #include <stdio.h>
+#include <string.h>
 
 int main(int argc, char* argv[])
 {
   int i;
   for (i = 1; i < argc; ++i) {
+    if (strcmp(argv[i], "-bad") == 0) {
+      fprintf(stdout, "stdout from bad command line arg '-bad'\n");
+      fprintf(stderr, "stderr from bad command line arg '-bad'\n");
+      return 1;
+    }
     if (argv[i][0] != '-') {
       fprintf(stdout, "%s:0:0: warning: message [checker]\n", argv[i]);
       break;

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ce1abfa4149ae0b3920626bef2dd15e8ee8b1940
commit ce1abfa4149ae0b3920626bef2dd15e8ee8b1940
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Thu Nov 17 11:34:32 2016 -0500
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Fri Nov 18 09:43:22 2016 -0500

    cmake: If ldd for LINK_WHAT_YOU_USE fails to run then report why

diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx
index 945913e..dca5ffc 100644
--- a/Source/cmcmd.cxx
+++ b/Source/cmcmd.cxx
@@ -378,11 +378,15 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string>& args)
 
         // Run the ldd -u -r command line.
         // Capture its stdout and hide its stderr.
+        // Ignore its return code because the tool always returns non-zero
+        // if there are any warnings, but we just want to warn.
         std::string stdOut;
-        if (!cmSystemTools::RunSingleCommand(lwyu_cmd, &stdOut, CM_NULLPTR,
-                                             &ret, CM_NULLPTR,
+        std::string stdErr;
+        if (!cmSystemTools::RunSingleCommand(lwyu_cmd, &stdOut, &stdErr, &ret,
+                                             CM_NULLPTR,
                                              cmSystemTools::OUTPUT_NONE)) {
-          std::cerr << "Error running '" << lwyu_cmd[0] << "'\n";
+          std::cerr << "Error running '" << lwyu_cmd[0] << "': " << stdErr
+                    << "\n";
           return 1;
         }
 

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=44de61578130cbd6e0f23057f9cf86f884078a4e
commit 44de61578130cbd6e0f23057f9cf86f884078a4e
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Thu Nov 17 11:33:24 2016 -0500
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Fri Nov 18 09:43:19 2016 -0500

    cmake: Comment why we ignore the include-what-you-use return code
    
    The include-what-you-use tool always returns non-zero to indicate that
    it did not actually produce an object file as Clang would from the same
    command line.  Add a comment explaining that this is why we ignore its
    return code.  Also update our `pseudo_iwyu` test suite tool to always
    exit with an error too.

diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx
index 1db147a..945913e 100644
--- a/Source/cmcmd.cxx
+++ b/Source/cmcmd.cxx
@@ -327,6 +327,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string>& args)
         iwyu_cmd.insert(iwyu_cmd.end(), orig_cmd.begin() + 1, orig_cmd.end());
 
         // Run the iwyu command line.  Capture its stderr and hide its stdout.
+        // Ignore its return code because the tool always returns non-zero.
         std::string stdErr;
         if (!cmSystemTools::RunSingleCommand(iwyu_cmd, CM_NULLPTR, &stdErr,
                                              &ret, CM_NULLPTR,
diff --git a/Tests/RunCMake/pseudo_iwyu.c b/Tests/RunCMake/pseudo_iwyu.c
index 1e25de7..c761741 100644
--- a/Tests/RunCMake/pseudo_iwyu.c
+++ b/Tests/RunCMake/pseudo_iwyu.c
@@ -3,5 +3,6 @@
 int main(void)
 {
   fprintf(stderr, "should add these lines:\n#include <...>\n");
-  return 0;
+  /* include-what-you-use always returns failure */
+  return 1;
 }

-----------------------------------------------------------------------

Summary of changes:


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list