Merge topic 'cpack-package-empty-dirs'
9298f56d
CPack: allow packaging of empty directoriesecd71c9c
SystemTools: time operations on directories19c6f4ee
SystemTools: set time file permissions749a140a
CPackDeb: allow empty directories in component packages
This commit is contained in:
commit
6a072563d2
|
@ -0,0 +1,4 @@
|
|||
cpack-package-empty-dirs
|
||||
------------------------
|
||||
|
||||
* The :module:`CPack` module learned to package empty directories.
|
|
@ -78,7 +78,7 @@ int cmCPackArchiveGenerator::addOneComponentToArchive(cmArchiveWrite& archive,
|
|||
std::string rp = filePrefix + *fileIt;
|
||||
cmCPackLogger(cmCPackLog::LOG_DEBUG,"Adding file: "
|
||||
<< rp << std::endl);
|
||||
archive.Add(rp);
|
||||
archive.Add(rp, 0, 0, false);
|
||||
if (!archive)
|
||||
{
|
||||
cmCPackLogger(cmCPackLog::LOG_ERROR, "ERROR while packaging files: "
|
||||
|
@ -284,7 +284,7 @@ int cmCPackArchiveGenerator::PackageFiles()
|
|||
// Get the relative path to the file
|
||||
std::string rp = cmSystemTools::RelativePath(toplevel.c_str(),
|
||||
fileIt->c_str());
|
||||
archive.Add(rp);
|
||||
archive.Add(rp, 0, 0, false);
|
||||
if(!archive)
|
||||
{
|
||||
cmCPackLogger(cmCPackLog::LOG_ERROR, "Problem while adding file< "
|
||||
|
|
|
@ -95,6 +95,7 @@ int cmCPackDebGenerator::PackageOnePack(std::string initialTopLevel,
|
|||
std::string findExpr(this->GetOption("GEN_WDIR"));
|
||||
findExpr += "/*";
|
||||
gl.RecurseOn();
|
||||
gl.SetRecurseListDirs(true);
|
||||
if ( !gl.FindFiles(findExpr) )
|
||||
{
|
||||
cmCPackLogger(cmCPackLog::LOG_ERROR,
|
||||
|
@ -222,6 +223,7 @@ int cmCPackDebGenerator::PackageComponentsAllInOne()
|
|||
std::string findExpr(this->GetOption("GEN_WDIR"));
|
||||
findExpr += "/*";
|
||||
gl.RecurseOn();
|
||||
gl.SetRecurseListDirs(true);
|
||||
if ( !gl.FindFiles(findExpr) )
|
||||
{
|
||||
cmCPackLogger(cmCPackLog::LOG_ERROR,
|
||||
|
|
|
@ -367,6 +367,7 @@ int cmCPackGenerator::InstallProjectViaInstalledDirectories(
|
|||
cmCPackLogger(cmCPackLog::LOG_OUTPUT,
|
||||
"- Install directory: " << top << std::endl);
|
||||
gl.RecurseOn();
|
||||
gl.SetRecurseListDirs(true);
|
||||
if ( !gl.FindFiles(findExpr) )
|
||||
{
|
||||
cmCPackLogger(cmCPackLog::LOG_ERROR,
|
||||
|
@ -379,7 +380,11 @@ int cmCPackGenerator::InstallProjectViaInstalledDirectories(
|
|||
for ( gfit = files.begin(); gfit != files.end(); ++ gfit )
|
||||
{
|
||||
bool skip = false;
|
||||
std::string &inFile = *gfit;
|
||||
std::string inFile = *gfit;
|
||||
if(cmSystemTools::FileIsDirectory(*gfit))
|
||||
{
|
||||
inFile += '/';
|
||||
}
|
||||
for ( regIt= ignoreFilesRegex.begin();
|
||||
regIt!= ignoreFilesRegex.end();
|
||||
++ regIt)
|
||||
|
@ -869,6 +874,7 @@ int cmCPackGenerator::InstallProjectViaInstallCMakeProjects(
|
|||
cmsys::Glob glB;
|
||||
findExpr += "/*";
|
||||
glB.RecurseOn();
|
||||
glB.SetRecurseListDirs(true);
|
||||
glB.FindFiles(findExpr);
|
||||
filesBefore = glB.GetFiles();
|
||||
std::sort(filesBefore.begin(),filesBefore.end());
|
||||
|
@ -908,6 +914,7 @@ int cmCPackGenerator::InstallProjectViaInstallCMakeProjects(
|
|||
{
|
||||
cmsys::Glob glA;
|
||||
glA.RecurseOn();
|
||||
glA.SetRecurseListDirs(true);
|
||||
glA.FindFiles(findExpr);
|
||||
std::vector<std::string> filesAfter = glA.GetFiles();
|
||||
std::sort(filesAfter.begin(),filesAfter.end());
|
||||
|
@ -1074,6 +1081,7 @@ int cmCPackGenerator::DoPackage()
|
|||
std::string findExpr = tempDirectory;
|
||||
findExpr += "/*";
|
||||
gl.RecurseOn();
|
||||
gl.SetRecurseListDirs(true);
|
||||
gl.SetRecurseThroughSymlinks(false);
|
||||
if ( !gl.FindFiles(findExpr) )
|
||||
{
|
||||
|
|
|
@ -2045,10 +2045,11 @@ bool cmSystemTools::CopyFileTime(const char* fromFile, const char* toFile)
|
|||
cmSystemToolsWindowsHandle hFrom =
|
||||
CreateFileW(SystemTools::ConvertToWindowsExtendedPath(fromFile).c_str(),
|
||||
GENERIC_READ, FILE_SHARE_READ, 0,
|
||||
OPEN_EXISTING, 0, 0);
|
||||
OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
|
||||
cmSystemToolsWindowsHandle hTo =
|
||||
CreateFileW(SystemTools::ConvertToWindowsExtendedPath(toFile).c_str(),
|
||||
GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
|
||||
FILE_WRITE_ATTRIBUTES, 0, 0, OPEN_EXISTING,
|
||||
FILE_FLAG_BACKUP_SEMANTICS, 0);
|
||||
if(!hFrom || !hTo)
|
||||
{
|
||||
return false;
|
||||
|
@ -2100,7 +2101,8 @@ bool cmSystemTools::FileTimeGet(const char* fname, cmSystemToolsFileTime* t)
|
|||
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||
cmSystemToolsWindowsHandle h =
|
||||
CreateFileW(SystemTools::ConvertToWindowsExtendedPath(fname).c_str(),
|
||||
GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
|
||||
GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING,
|
||||
FILE_FLAG_BACKUP_SEMANTICS, 0);
|
||||
if(!h)
|
||||
{
|
||||
return false;
|
||||
|
@ -2127,7 +2129,8 @@ bool cmSystemTools::FileTimeSet(const char* fname, cmSystemToolsFileTime* t)
|
|||
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||
cmSystemToolsWindowsHandle h =
|
||||
CreateFileW(SystemTools::ConvertToWindowsExtendedPath(fname).c_str(),
|
||||
GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
|
||||
FILE_WRITE_ATTRIBUTES, 0, 0, OPEN_EXISTING,
|
||||
FILE_FLAG_BACKUP_SEMANTICS, 0);
|
||||
if(!h)
|
||||
{
|
||||
return false;
|
||||
|
|
|
@ -110,9 +110,8 @@ install(FILES ${CPackComponentsDEB_BINARY_DIR}/symtest
|
|||
if(EXISTS "./dirtest")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory ./dirtest)
|
||||
endif()
|
||||
# NOTE: directory left empty on purpose
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ./dirtest)
|
||||
# BUG: apparently cannot add an empty directory
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ../mylibapp ./dirtest/symtest)
|
||||
# NOTE: we should not add the trailing "/" to dirtest
|
||||
install(DIRECTORY ${CPackComponentsDEB_BINARY_DIR}/dirtest
|
||||
DESTINATION bin/
|
||||
|
|
|
@ -290,7 +290,7 @@ if("${CMAKE_GENERATOR}" MATCHES "Make|Ninja")
|
|||
add_RunCMake_test(CompilerLauncher)
|
||||
endif()
|
||||
|
||||
add_RunCMake_test_group(CPack "DEB;RPM")
|
||||
add_RunCMake_test_group(CPack "DEB;RPM;TGZ")
|
||||
# add a test to make sure symbols are exported from a shared library
|
||||
# for MSVC compilers CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS property is used
|
||||
add_RunCMake_test(AutoExportDll)
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
set(CPACK_COMPONENTS_ALL test)
|
||||
install(DIRECTORY DESTINATION empty
|
||||
COMPONENT test)
|
||||
|
||||
set(CPACK_PACKAGE_NAME "components_empty_dir")
|
|
@ -0,0 +1,5 @@
|
|||
set(whitespaces_ "[\t\n\r ]*")
|
||||
|
||||
set(EXPECTED_FILES_COUNT "1")
|
||||
set(EXPECTED_FILE_1 "components_empty_dir*.deb")
|
||||
set(EXPECTED_FILE_CONTENT_1 "^.*/usr/${whitespaces_}.*/usr/empty/$")
|
|
@ -0,0 +1,2 @@
|
|||
set(CPACK_PACKAGE_CONTACT "someone")
|
||||
set(CPACK_DEB_COMPONENT_INSTALL "ON")
|
|
@ -0,0 +1,5 @@
|
|||
set(whitespaces_ "[\t\n\r ]*")
|
||||
|
||||
set(EXPECTED_FILES_COUNT "1")
|
||||
set(EXPECTED_FILE_1 "empty_dir*.deb")
|
||||
set(EXPECTED_FILE_CONTENT_1 "^.*/usr/${whitespaces_}.*/usr/empty/$")
|
|
@ -0,0 +1 @@
|
|||
set(CPACK_PACKAGE_CONTACT "someone")
|
|
@ -0,0 +1,4 @@
|
|||
install(DIRECTORY DESTINATION empty
|
||||
COMPONENT test)
|
||||
|
||||
set(CPACK_PACKAGE_NAME "empty_dir")
|
|
@ -0,0 +1,5 @@
|
|||
set(whitespaces_ "[\t\n\r ]*")
|
||||
|
||||
set(EXPECTED_FILES_COUNT "1")
|
||||
set(EXPECTED_FILE_1 "components_empty_dir*.rpm")
|
||||
set(EXPECTED_FILE_CONTENT_1 "^/usr/empty$")
|
|
@ -0,0 +1 @@
|
|||
^CPackRPM: Will use GENERATED spec file: .*/Tests/RunCMake/RPM/CPack/COMPONENTS_EMPTY_DIR-build/_CPack_Packages/.*/RPM/SPECS/components_empty_dir.spec$
|
|
@ -0,0 +1,5 @@
|
|||
set(whitespaces_ "[\t\n\r ]*")
|
||||
|
||||
set(EXPECTED_FILES_COUNT "1")
|
||||
set(EXPECTED_FILE_1 "empty_dir*.rpm")
|
||||
set(EXPECTED_FILE_CONTENT_1 "^/usr/empty$")
|
|
@ -0,0 +1 @@
|
|||
^CPackRPM: Will use GENERATED spec file: .*/Tests/RunCMake/RPM/CPack/EMPTY_DIR-build/_CPack_Packages/.*/RPM/SPECS/empty_dir.spec$
|
|
@ -4,7 +4,9 @@ include(RunCMake)
|
|||
include("${RunCMake_SOURCE_DIR}/CPackTestHelpers.cmake")
|
||||
|
||||
# args: TEST_NAME "GENERATORS" RUN_CMAKE_BUILD_STEP
|
||||
run_cpack_test(MINIMAL "RPM;DEB" false)
|
||||
run_cpack_test(MINIMAL "RPM;DEB;TGZ" false)
|
||||
run_cpack_test(PARTIALLY_RELOCATABLE_WARNING "RPM" false)
|
||||
run_cpack_test(DEB_EXTRA "DEB" false)
|
||||
run_cpack_test(DEPENDENCIES "RPM;DEB" true)
|
||||
run_cpack_test(EMPTY_DIR "RPM;DEB;TGZ" true)
|
||||
run_cpack_test(COMPONENTS_EMPTY_DIR "RPM;DEB;TGZ" true)
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
set(EXPECTED_FILES_COUNT "1")
|
||||
set(EXPECTED_FILE_1 "components_empty_dir*.tar.gz")
|
||||
set(EXPECTED_FILE_CONTENT_1 "^[^\n]*empty/$")
|
|
@ -0,0 +1 @@
|
|||
set(CPACK_ARCHIVE_COMPONENT_INSTALL "ON")
|
|
@ -0,0 +1,3 @@
|
|||
set(EXPECTED_FILES_COUNT "1")
|
||||
set(EXPECTED_FILE_1 "empty_dir*.tar.gz")
|
||||
set(EXPECTED_FILE_CONTENT_1 "^[^\n]*empty_dir-0.1.1-[^\n]*/empty/$")
|
|
@ -0,0 +1,10 @@
|
|||
set(ALL_FILES_GLOB "*.tar.gz")
|
||||
|
||||
function(getPackageContent FILE RESULT_VAR)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar -ztvf ${FILE}
|
||||
OUTPUT_VARIABLE package_content_
|
||||
ERROR_QUIET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
set(${RESULT_VAR} "${package_content_}" PARENT_SCOPE)
|
||||
endfunction()
|
|
@ -0,0 +1,5 @@
|
|||
set(whitespaces_ "[\t\n\r ]*")
|
||||
|
||||
set(EXPECTED_FILES_COUNT "1")
|
||||
set(EXPECTED_FILE_1 "minimal*.tar.gz")
|
||||
set(EXPECTED_FILE_CONTENT_1 "^[^\n]*minimal-0.1.1-[^\n]*/foo/\n[^\n]*minimal-0.1.1-[^\n]*/foo/CMakeLists.txt$")
|
|
@ -0,0 +1,4 @@
|
|||
function(get_test_prerequirements found_var config_file)
|
||||
file(WRITE "${config_file}" "")
|
||||
set(${found_var} true PARENT_SCOPE)
|
||||
endfunction()
|
Loading…
Reference in New Issue