From 142a6257294afbfdf86ec13fdb4ecf303b131f99 Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 22 Jun 2018 09:31:45 -0400 Subject: file: Drop error cases added by CMake 3.12.0-rc1 to avoid regressions Refactoring in commit v3.12.0-rc1~418^2~3 (Refactor HandleGlobCommand, 2018-02-13) introduced error diagnostics for argument combinations that were previously accepted. Restore acceptance to avoid regressing projects that used those combinations even if they do not make sense. Fixes: #18097 --- Source/cmFileCommand.cxx | 28 +++++++++------------- .../file/GLOB-error-FOLLOW_SYMLINKS-result.txt | 1 - .../file/GLOB-error-FOLLOW_SYMLINKS-stderr.txt | 4 ---- .../RunCMake/file/GLOB-error-FOLLOW_SYMLINKS.cmake | 1 - .../RunCMake/file/GLOB-noexp-FOLLOW_SYMLINKS.cmake | 1 + .../file/GLOB-noexp-LIST_DIRECTORIES-result.txt | 1 - .../file/GLOB-noexp-LIST_DIRECTORIES-stderr.txt | 4 ---- Tests/RunCMake/file/RunCMakeTest.cmake | 2 +- 8 files changed, 13 insertions(+), 29 deletions(-) delete mode 100644 Tests/RunCMake/file/GLOB-error-FOLLOW_SYMLINKS-result.txt delete mode 100644 Tests/RunCMake/file/GLOB-error-FOLLOW_SYMLINKS-stderr.txt delete mode 100644 Tests/RunCMake/file/GLOB-error-FOLLOW_SYMLINKS.cmake create mode 100644 Tests/RunCMake/file/GLOB-noexp-FOLLOW_SYMLINKS.cmake delete mode 100644 Tests/RunCMake/file/GLOB-noexp-LIST_DIRECTORIES-result.txt delete mode 100644 Tests/RunCMake/file/GLOB-noexp-LIST_DIRECTORIES-stderr.txt diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index aae70b1..dcb79f7 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -777,7 +777,7 @@ bool cmFileCommand::HandleGlobCommand(std::vector const& args, this->Makefile->GetCMakeInstance()->GetWorkingMode(); while (i != args.end()) { if (*i == "LIST_DIRECTORIES") { - ++i; + ++i; // skip LIST_DIRECTORIES if (i != args.end()) { if (cmSystemTools::IsOn(i->c_str())) { g.SetListDirs(true); @@ -789,27 +789,21 @@ bool cmFileCommand::HandleGlobCommand(std::vector const& args, this->SetError("LIST_DIRECTORIES missing bool value."); return false; } + ++i; } else { this->SetError("LIST_DIRECTORIES missing bool value."); return false; } - ++i; - if (i == args.end()) { - this->SetError("GLOB requires a glob expression after the bool."); - return false; - } } else if (*i == "FOLLOW_SYMLINKS") { - if (!recurse) { - this->SetError("FOLLOW_SYMLINKS is not a valid parameter for GLOB."); - return false; - } - explicitFollowSymlinks = true; - g.RecurseThroughSymlinksOn(); - ++i; - if (i == args.end()) { - this->SetError( - "GLOB_RECURSE requires a glob expression after FOLLOW_SYMLINKS."); - return false; + ++i; // skip FOLLOW_SYMLINKS + if (recurse) { + explicitFollowSymlinks = true; + g.RecurseThroughSymlinksOn(); + if (i == args.end()) { + this->SetError( + "GLOB_RECURSE requires a glob expression after FOLLOW_SYMLINKS."); + return false; + } } } else if (*i == "RELATIVE") { ++i; // skip RELATIVE diff --git a/Tests/RunCMake/file/GLOB-error-FOLLOW_SYMLINKS-result.txt b/Tests/RunCMake/file/GLOB-error-FOLLOW_SYMLINKS-result.txt deleted file mode 100644 index d00491f..0000000 --- a/Tests/RunCMake/file/GLOB-error-FOLLOW_SYMLINKS-result.txt +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/Tests/RunCMake/file/GLOB-error-FOLLOW_SYMLINKS-stderr.txt b/Tests/RunCMake/file/GLOB-error-FOLLOW_SYMLINKS-stderr.txt deleted file mode 100644 index af3cb2e..0000000 --- a/Tests/RunCMake/file/GLOB-error-FOLLOW_SYMLINKS-stderr.txt +++ /dev/null @@ -1,4 +0,0 @@ -^CMake Error at GLOB-error-FOLLOW_SYMLINKS\.cmake:[0-9]+ \(file\): - file FOLLOW_SYMLINKS is not a valid parameter for GLOB\. -Call Stack \(most recent call first\): - CMakeLists\.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/file/GLOB-error-FOLLOW_SYMLINKS.cmake b/Tests/RunCMake/file/GLOB-error-FOLLOW_SYMLINKS.cmake deleted file mode 100644 index 6d467a0..0000000 --- a/Tests/RunCMake/file/GLOB-error-FOLLOW_SYMLINKS.cmake +++ /dev/null @@ -1 +0,0 @@ -file(GLOB CONTENT_LIST FOLLOW_SYMLINKS) diff --git a/Tests/RunCMake/file/GLOB-noexp-FOLLOW_SYMLINKS.cmake b/Tests/RunCMake/file/GLOB-noexp-FOLLOW_SYMLINKS.cmake new file mode 100644 index 0000000..6d467a0 --- /dev/null +++ b/Tests/RunCMake/file/GLOB-noexp-FOLLOW_SYMLINKS.cmake @@ -0,0 +1 @@ +file(GLOB CONTENT_LIST FOLLOW_SYMLINKS) diff --git a/Tests/RunCMake/file/GLOB-noexp-LIST_DIRECTORIES-result.txt b/Tests/RunCMake/file/GLOB-noexp-LIST_DIRECTORIES-result.txt deleted file mode 100644 index d00491f..0000000 --- a/Tests/RunCMake/file/GLOB-noexp-LIST_DIRECTORIES-result.txt +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/Tests/RunCMake/file/GLOB-noexp-LIST_DIRECTORIES-stderr.txt b/Tests/RunCMake/file/GLOB-noexp-LIST_DIRECTORIES-stderr.txt deleted file mode 100644 index ee6cb0b..0000000 --- a/Tests/RunCMake/file/GLOB-noexp-LIST_DIRECTORIES-stderr.txt +++ /dev/null @@ -1,4 +0,0 @@ -^CMake Error at GLOB-noexp-LIST_DIRECTORIES\.cmake:[0-9]+ \(file\): - file GLOB requires a glob expression after the bool\. -Call Stack \(most recent call first\): - CMakeLists\.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/file/RunCMakeTest.cmake b/Tests/RunCMake/file/RunCMakeTest.cmake index 342606b..b383230 100644 --- a/Tests/RunCMake/file/RunCMakeTest.cmake +++ b/Tests/RunCMake/file/RunCMakeTest.cmake @@ -39,12 +39,12 @@ run_cmake(GLOB_RECURSE-noexp-FOLLOW_SYMLINKS) # tests are valid both for GLOB and GLOB_RECURSE run_cmake(GLOB-sort-dedup) -run_cmake(GLOB-error-FOLLOW_SYMLINKS) run_cmake(GLOB-error-LIST_DIRECTORIES-not-boolean) run_cmake(GLOB-error-LIST_DIRECTORIES-no-arg) run_cmake(GLOB-error-RELATIVE-no-arg) run_cmake(GLOB-error-CONFIGURE_DEPENDS-modified) run_cmake(GLOB-noexp-CONFIGURE_DEPENDS) +run_cmake(GLOB-noexp-FOLLOW_SYMLINKS) run_cmake(GLOB-noexp-LIST_DIRECTORIES) run_cmake(GLOB-noexp-RELATIVE) run_cmake_command(GLOB-error-CONFIGURE_DEPENDS-SCRIPT_MODE ${CMAKE_COMMAND} -P -- cgit v0.12