mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-02 20:00:38 -06:00
file(INSTALL): Improve formatting of symlink creation error
Avoid printing two error messages. Format paths without wrapping.
This commit is contained in:
@@ -504,11 +504,12 @@ bool cmFileCopier::InstallSymlinkChain(std::string& fromFile,
|
||||
cmSystemTools::RemoveFile(toFile);
|
||||
cmSystemTools::MakeDirectory(toFilePath);
|
||||
|
||||
if (!cmSystemTools::CreateSymlink(symlinkTarget, toFile)) {
|
||||
std::ostringstream e;
|
||||
e << this->Name << " cannot create symlink \"" << toFile
|
||||
<< "\": " << cmSystemTools::GetLastSystemError() << ".";
|
||||
this->Status.SetError(e.str());
|
||||
cmsys::Status status =
|
||||
cmSystemTools::CreateSymlinkQuietly(symlinkTarget, toFile);
|
||||
if (!status) {
|
||||
std::string e = cmStrCat(this->Name, " cannot create symlink\n ",
|
||||
toFile, "\nbecause: ", status.GetString());
|
||||
this->Status.SetError(e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -557,12 +558,13 @@ bool cmFileCopier::InstallSymlink(const std::string& fromFile,
|
||||
cmSystemTools::MakeDirectory(cmSystemTools::GetFilenamePath(toFile));
|
||||
|
||||
// Create the symlink.
|
||||
if (!cmSystemTools::CreateSymlink(symlinkTarget, toFile)) {
|
||||
std::ostringstream e;
|
||||
e << this->Name << " cannot duplicate symlink \"" << fromFile
|
||||
<< "\" at \"" << toFile
|
||||
<< "\": " << cmSystemTools::GetLastSystemError() << ".";
|
||||
this->Status.SetError(e.str());
|
||||
cmsys::Status status =
|
||||
cmSystemTools::CreateSymlinkQuietly(symlinkTarget, toFile);
|
||||
if (!status) {
|
||||
std::string e =
|
||||
cmStrCat(this->Name, " cannot duplicate symlink\n ", fromFile,
|
||||
"\nat\n ", toFile, "\nbecause: ", status.GetString());
|
||||
this->Status.SetError(e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
1
|
||||
@@ -0,0 +1,12 @@
|
||||
^CMake Error at cmake_install.cmake:[0-9]+ \(file\):
|
||||
file INSTALL cannot duplicate symlink
|
||||
|
||||
[^
|
||||
]*/Tests/RunCMake/install/DIRECTORY-symlink-clobber-build/new/dir
|
||||
|
||||
at
|
||||
|
||||
[^
|
||||
]*/Tests/RunCMake/install/DIRECTORY-symlink-clobber-build/root-all/dest/dir
|
||||
|
||||
because:
|
||||
@@ -0,0 +1,12 @@
|
||||
-- Installing: [^
|
||||
]*/Tests/RunCMake/install/DIRECTORY-symlink-clobber-build/root-all/dest/dir
|
||||
-- Installing: [^
|
||||
]*/Tests/RunCMake/install/DIRECTORY-symlink-clobber-build/root-all/dest/dir/file
|
||||
-- Installing: [^
|
||||
]*/Tests/RunCMake/install/DIRECTORY-symlink-clobber-build/root-all/dest/lnk
|
||||
-- Up-to-date: [^
|
||||
]*/Tests/RunCMake/install/DIRECTORY-symlink-clobber-build/root-all/dest/lnk
|
||||
-- Up-to-date: [^
|
||||
]*/Tests/RunCMake/install/DIRECTORY-symlink-clobber-build/root-all/dest/lnk/file
|
||||
-- Installing: [^
|
||||
]*/Tests/RunCMake/install/DIRECTORY-symlink-clobber-build/root-all/dest/dir
|
||||
11
Tests/RunCMake/install/DIRECTORY-symlink-clobber.cmake
Normal file
11
Tests/RunCMake/install/DIRECTORY-symlink-clobber.cmake
Normal file
@@ -0,0 +1,11 @@
|
||||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/old/dir)
|
||||
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/old/dir/file "")
|
||||
file(CREATE_LINK dir ${CMAKE_CURRENT_BINARY_DIR}/old/lnk SYMBOLIC)
|
||||
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/old/dir DESTINATION dest)
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/old/lnk DESTINATION dest)
|
||||
|
||||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/new/lnk)
|
||||
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/new/lnk/file "")
|
||||
file(CREATE_LINK lnk ${CMAKE_CURRENT_BINARY_DIR}/new/dir SYMBOLIC)
|
||||
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/new/lnk DESTINATION dest)
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/new/dir DESTINATION dest)
|
||||
@@ -175,6 +175,10 @@ run_install_test(FILES-PERMISSIONS)
|
||||
run_install_test(TARGETS-RPATH)
|
||||
run_install_test(InstallRequiredSystemLibraries)
|
||||
|
||||
if(UNIX)
|
||||
run_install_test(DIRECTORY-symlink-clobber)
|
||||
endif()
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||
run_cmake(TARGETS-RUNTIME_DEPENDENCIES-macos-two-bundle)
|
||||
run_cmake(TARGETS-RUNTIME_DEPENDENCIES-macos-no-framework)
|
||||
|
||||
Reference in New Issue
Block a user