From fe530ff5e90f8eada47b4480375b9898f018eefc Mon Sep 17 00:00:00 2001 From: Eric NOULARD Date: Thu, 3 Mar 2011 21:19:13 +0100 Subject: [PATCH] CPackArchive package all components specified in CPACK_COMPONENTS_ALL When asking for group packaging the components not belonging to any group should be packaged separately. --- Source/CPack/cmCPackArchiveGenerator.cxx | 33 +++++++++++++++++++ .../RunCPackVerifyResult.cmake | 2 +- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/Source/CPack/cmCPackArchiveGenerator.cxx b/Source/CPack/cmCPackArchiveGenerator.cxx index 3c670a166..b629c635d 100644 --- a/Source/CPack/cmCPackArchiveGenerator.cxx +++ b/Source/CPack/cmCPackArchiveGenerator.cxx @@ -143,6 +143,39 @@ int cmCPackArchiveGenerator::PackageComponents(bool ignoreGroup) // add the generated package to package file names list packageFileNames.push_back(packageFileName); } + // Handle Orphan components (components not belonging to any groups) + std::map::iterator compIt; + for (compIt=this->Components.begin(); + compIt!=this->Components.end(); ++compIt ) + { + // Does the component belong to a group? + if (compIt->second.Group==NULL) + { + cmCPackLogger(cmCPackLog::LOG_VERBOSE, + "Component <" + << compIt->second.Name + << "> does not belong to any group, package it separately." + << std::endl); + std::string localToplevel( + this->GetOption("CPACK_TEMPORARY_DIRECTORY") + ); + std::string packageFileName = std::string(toplevel); + + localToplevel += "/"+ compIt->first; + packageFileName += "/"+ + GetComponentPackageFileName(this->GetOption("CPACK_PACKAGE_FILE_NAME"), + compIt->first, + false) + + this->GetOutputExtension(); + { + DECLARE_AND_OPEN_ARCHIVE(packageFileName,archive); + // Add the files of this component to the archive + addOneComponentToArchive(archive,&(compIt->second)); + } + // add the generated package to package file names list + packageFileNames.push_back(packageFileName); + } + } } // CPACK_COMPONENTS_IGNORE_GROUPS is set // We build 1 package per component diff --git a/Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake b/Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake index 45a3b1703..e797b7cd6 100644 --- a/Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake +++ b/Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake @@ -39,7 +39,7 @@ if(CPackGen MATCHES "ZIP") set(expected_count 1) endif(${CPackComponentWay} STREQUAL "default") if (${CPackComponentWay} STREQUAL "OnePackPerGroup") - set(expected_count 2) + set(expected_count 3) endif (${CPackComponentWay} STREQUAL "OnePackPerGroup") if (${CPackComponentWay} STREQUAL "IgnoreGroup") set(expected_count 4)