[Cmake-commits] CMake branch, next, updated. v2.8.12.1-5777-g901b076
Nils Gladitz
nilsgladitz at gmail.com
Mon Nov 25 13:28:38 EST 2013
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 901b076a16d6008643149e550f2ba3b65c80d34f (commit)
via 49becb8bd743a833394d77c25343c105f5e835c0 (commit)
via f527a0a1810ad36a9706172a986bc4920fa65bac (commit)
via 6e9d711bf3221cb47d015f9e5a1b4febcde9ae25 (commit)
via 81a16ddeb39af55a80f0ce37af34c534def8cdc3 (commit)
from 764d987919e8cd4feaca0d8a9fa6532c67845354 (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 -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=901b076a16d6008643149e550f2ba3b65c80d34f
commit 901b076a16d6008643149e550f2ba3b65c80d34f
Merge: 764d987 49becb8
Author: Nils Gladitz <nilsgladitz at gmail.com>
AuthorDate: Mon Nov 25 13:28:35 2013 -0500
Commit: CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Mon Nov 25 13:28:35 2013 -0500
Merge topic 'wix-components' into next
49becb8 CPackWiX: handle component REQUIRE, HIDDEN and group EXPANDED
f527a0a CPackWiX: use the FeatureTree UI in case components have been defined
6e9d711 CPackWiX: associate WiX components with their respective features
81a16dd CPackWiX: generate hierarchy of WiX features from CPack components/groups
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=49becb8bd743a833394d77c25343c105f5e835c0
commit 49becb8bd743a833394d77c25343c105f5e835c0
Author: Nils Gladitz <nilsgladitz at gmail.com>
AuthorDate: Tue Nov 19 23:36:43 2013 +0100
Commit: Nils Gladitz <nilsgladitz at gmail.com>
CommitDate: Tue Nov 19 23:36:43 2013 +0100
CPackWiX: handle component REQUIRE, HIDDEN and group EXPANDED
diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.cxx b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
index eb45006..8bfe4bf 100644
--- a/Source/CPack/WiX/cmCPackWIXGenerator.cxx
+++ b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
@@ -414,6 +414,7 @@ bool cmCPackWIXGenerator::CreateWiXSourceFiles()
featureDefinitions.BeginElement("Feature");
featureDefinitions.AddAttribute("Id", "ProductFeature");
+ featureDefinitions.AddAttribute("Display", "expand");
featureDefinitions.AddAttribute("ConfigurableDirectory", "INSTALL_ROOT");
std::string cpackPackageName;
@@ -530,6 +531,11 @@ bool cmCPackWIXGenerator::EmitFeatureForComponentGroup(
featureDefinitions.BeginElement("Feature");
featureDefinitions.AddAttribute("Id", "CM_G_" + group.Name);
+ if(group.IsExpandedByDefault)
+ {
+ featureDefinitions.AddAttribute("Display", "expand");
+ }
+
featureDefinitions.AddAttributeUnlessEmpty(
"Title", group.DisplayName);
@@ -572,6 +578,16 @@ bool cmCPackWIXGenerator::EmitFeatureForComponent(
featureDefinitions.AddAttributeUnlessEmpty(
"Description", component.Description);
+ if(component.IsRequired)
+ {
+ featureDefinitions.AddAttribute("Absent", "disallow");
+ }
+
+ if(component.IsHidden)
+ {
+ featureDefinitions.AddAttribute("Display", "hidden");
+ }
+
featureDefinitions.EndElement("Feature");
return true;
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f527a0a1810ad36a9706172a986bc4920fa65bac
commit f527a0a1810ad36a9706172a986bc4920fa65bac
Author: Nils Gladitz <nilsgladitz at gmail.com>
AuthorDate: Tue Nov 19 23:02:01 2013 +0100
Commit: Nils Gladitz <nilsgladitz at gmail.com>
CommitDate: Tue Nov 19 23:02:01 2013 +0100
CPackWiX: use the FeatureTree UI in case components have been defined
diff --git a/Modules/CPackWIX.cmake b/Modules/CPackWIX.cmake
index 3f0978d..237c5bc 100644
--- a/Modules/CPackWIX.cmake
+++ b/Modules/CPackWIX.cmake
@@ -63,6 +63,14 @@
#
# If set, this icon is used in place of the default icon.
#
+# .. variable:: CPACK_WIX_UI_REF
+#
+# This variable allows you to override the Id of the ``<UIRef>`` element
+# in the WiX template.
+#
+# The default is ``WixUI_InstallDir`` in case no CPack components have
+# been defined and ``WixUI_FeatureTree`` otherwise.
+#
# .. variable:: CPACK_WIX_UI_BANNER
#
# The bitmap will appear at the top of all installer pages other than the
diff --git a/Modules/WIX.template.in b/Modules/WIX.template.in
index 0bc7e10..59a75c7 100644
--- a/Modules/WIX.template.in
+++ b/Modules/WIX.template.in
@@ -39,6 +39,6 @@
<FeatureRef Id="ProductFeature"/>
- <UIRef Id="WixUI_InstallDir" />
+ <UIRef Id="$(var.CPACK_WIX_UI_REF)" />
</Product>
</Wix>
diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.cxx b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
index 1149996..eb45006 100644
--- a/Source/CPack/WiX/cmCPackWIXGenerator.cxx
+++ b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
@@ -198,6 +198,18 @@ bool cmCPackWIXGenerator::InitializeWiXConfiguration()
<< std::endl);
}
+ if(GetOption("CPACK_WIX_UI_REF") == 0)
+ {
+ std::string defaultRef = "WixUI_InstallDir";
+
+ if(Components.size())
+ {
+ defaultRef = "WixUI_FeatureTree";
+ }
+
+ SetOption("CPACK_WIX_UI_REF", defaultRef.c_str());
+ }
+
CollectExtensions("CPACK_WIX_EXTENSIONS", candleExtensions);
CollectExtensions("CPACK_WIX_CANDLE_EXTENSIONS", candleExtensions);
@@ -296,6 +308,7 @@ bool cmCPackWIXGenerator::CreateWiXVariablesIncludeFile()
SetOptionIfNotSet("CPACK_WIX_PROGRAM_MENU_FOLDER",
GetOption("CPACK_PACKAGE_NAME"));
CopyDefinition(includeFile, "CPACK_WIX_PROGRAM_MENU_FOLDER");
+ CopyDefinition(includeFile, "CPACK_WIX_UI_REF");
return true;
}
@@ -401,7 +414,15 @@ bool cmCPackWIXGenerator::CreateWiXSourceFiles()
featureDefinitions.BeginElement("Feature");
featureDefinitions.AddAttribute("Id", "ProductFeature");
- featureDefinitions.AddAttribute("Title", "ProductFeature");
+ featureDefinitions.AddAttribute("ConfigurableDirectory", "INSTALL_ROOT");
+
+ std::string cpackPackageName;
+ if(!RequireOption("CPACK_PACKAGE_NAME", cpackPackageName))
+ {
+ return false;
+ }
+ featureDefinitions.AddAttribute("Title", cpackPackageName);
+
featureDefinitions.AddAttribute("Level", "1");
CreateFeatureHierarchy(featureDefinitions);
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6e9d711bf3221cb47d015f9e5a1b4febcde9ae25
commit 6e9d711bf3221cb47d015f9e5a1b4febcde9ae25
Author: Nils Gladitz <nilsgladitz at gmail.com>
AuthorDate: Tue Nov 19 22:13:28 2013 +0100
Commit: Nils Gladitz <nilsgladitz at gmail.com>
CommitDate: Tue Nov 19 22:13:28 2013 +0100
CPackWiX: associate WiX components with their respective features
diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.cxx b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
index 0fd66da..1149996 100644
--- a/Source/CPack/WiX/cmCPackWIXGenerator.cxx
+++ b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
@@ -408,36 +408,27 @@ bool cmCPackWIXGenerator::CreateWiXSourceFiles()
featureDefinitions.EndElement("Feature");
- featureDefinitions.BeginElement("FeatureRef");
- featureDefinitions.AddAttribute("Id", "ProductFeature");
-
- std::vector<std::string> cpackPackageExecutablesList;
- const char *cpackPackageExecutables = GetOption("CPACK_PACKAGE_EXECUTABLES");
- if(cpackPackageExecutables)
+ if(Components.empty())
{
- cmSystemTools::ExpandListArgument(cpackPackageExecutables,
- cpackPackageExecutablesList);
- if(cpackPackageExecutablesList.size() % 2 != 0 )
- {
- cmCPackLogger(cmCPackLog::LOG_ERROR,
- "CPACK_PACKAGE_EXECUTABLES should contain pairs of <executable> and "
- "<text label>." << std::endl);
- return false;
- }
+ AddComponentsToFeature(toplevel, "ProductFeature",
+ directoryDefinitions, fileDefinitions, featureDefinitions);
}
+ else
+ {
+ for(std::map<std::string, cmCPackComponent>::const_iterator
+ i = Components.begin(); i != Components.end(); ++i)
+ {
+ cmCPackComponent const& component = i->second;
- AddDirectoryAndFileDefinitons(
- toplevel, "INSTALL_ROOT",
- directoryDefinitions, fileDefinitions, featureDefinitions,
- cpackPackageExecutablesList);
+ std::string componentPath = toplevel;
+ componentPath += "/";
+ componentPath += component.Name;
- if(!CreateStartMenuShortcuts(
- directoryDefinitions, fileDefinitions, featureDefinitions))
- {
- return false;
+ AddComponentsToFeature(componentPath, "CM_C_" + component.Name,
+ directoryDefinitions, fileDefinitions, featureDefinitions);
+ }
}
- featureDefinitions.EndElement("FeatureRef");
featureDefinitions.EndElement("Fragment");
fileDefinitions.EndElement("Fragment");
@@ -565,6 +556,47 @@ bool cmCPackWIXGenerator::EmitFeatureForComponent(
return true;
}
+bool cmCPackWIXGenerator::AddComponentsToFeature(
+ std::string const& rootPath,
+ std::string const& featureId,
+ cmWIXSourceWriter& directoryDefinitions,
+ cmWIXSourceWriter& fileDefinitions,
+ cmWIXSourceWriter& featureDefinitions)
+{
+ featureDefinitions.BeginElement("FeatureRef");
+ featureDefinitions.AddAttribute("Id", featureId);
+
+ std::vector<std::string> cpackPackageExecutablesList;
+ const char *cpackPackageExecutables = GetOption("CPACK_PACKAGE_EXECUTABLES");
+ if(cpackPackageExecutables)
+ {
+ cmSystemTools::ExpandListArgument(cpackPackageExecutables,
+ cpackPackageExecutablesList);
+ if(cpackPackageExecutablesList.size() % 2 != 0 )
+ {
+ cmCPackLogger(cmCPackLog::LOG_ERROR,
+ "CPACK_PACKAGE_EXECUTABLES should contain pairs of <executable> and "
+ "<text label>." << std::endl);
+ return false;
+ }
+ }
+
+ AddDirectoryAndFileDefinitons(
+ rootPath, "INSTALL_ROOT",
+ directoryDefinitions, fileDefinitions, featureDefinitions,
+ cpackPackageExecutablesList);
+
+ if(!CreateStartMenuShortcuts(
+ directoryDefinitions, fileDefinitions, featureDefinitions))
+ {
+ return false;
+ }
+
+ featureDefinitions.EndElement("FeatureRef");
+
+ return true;
+}
+
bool cmCPackWIXGenerator::CreateStartMenuShortcuts(
cmWIXSourceWriter& directoryDefinitions,
cmWIXSourceWriter& fileDefinitions,
diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.h b/Source/CPack/WiX/cmCPackWIXGenerator.h
index aa19cd3..f298896 100644
--- a/Source/CPack/WiX/cmCPackWIXGenerator.h
+++ b/Source/CPack/WiX/cmCPackWIXGenerator.h
@@ -90,6 +90,13 @@ private:
cmWIXSourceWriter& featureDefinitions,
cmCPackComponent const& component);
+ bool AddComponentsToFeature(
+ std::string const& rootPath,
+ std::string const& featureId,
+ cmWIXSourceWriter& directoryDefinitions,
+ cmWIXSourceWriter& fileDefinitions,
+ cmWIXSourceWriter& featureDefinitions);
+
bool CreateStartMenuShortcuts(
cmWIXSourceWriter& directoryDefinitions,
cmWIXSourceWriter& fileDefinitions,
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=81a16ddeb39af55a80f0ce37af34c534def8cdc3
commit 81a16ddeb39af55a80f0ce37af34c534def8cdc3
Author: Nils Gladitz <nilsgladitz at gmail.com>
AuthorDate: Tue Nov 19 21:38:09 2013 +0100
Commit: Nils Gladitz <nilsgladitz at gmail.com>
CommitDate: Tue Nov 19 21:38:09 2013 +0100
CPackWiX: generate hierarchy of WiX features from CPack components/groups
diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.cxx b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
index 1d7681b..0fd66da 100644
--- a/Source/CPack/WiX/cmCPackWIXGenerator.cxx
+++ b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
@@ -401,8 +401,11 @@ bool cmCPackWIXGenerator::CreateWiXSourceFiles()
featureDefinitions.BeginElement("Feature");
featureDefinitions.AddAttribute("Id", "ProductFeature");
- featureDefinitions.AddAttribute("Title", Name);
+ featureDefinitions.AddAttribute("Title", "ProductFeature");
featureDefinitions.AddAttribute("Level", "1");
+
+ CreateFeatureHierarchy(featureDefinitions);
+
featureDefinitions.EndElement("Feature");
featureDefinitions.BeginElement("FeatureRef");
@@ -475,6 +478,93 @@ bool cmCPackWIXGenerator::CreateWiXSourceFiles()
return true;
}
+bool cmCPackWIXGenerator::CreateFeatureHierarchy(
+ cmWIXSourceWriter& featureDefinitions)
+{
+ for(std::map<std::string, cmCPackComponentGroup>::const_iterator
+ i = ComponentGroups.begin(); i != ComponentGroups.end(); ++i)
+ {
+ cmCPackComponentGroup const& group = i->second;
+ if(group.ParentGroup == 0)
+ {
+ if(!EmitFeatureForComponentGroup(featureDefinitions, group))
+ {
+ return false;
+ }
+ }
+ }
+
+ for(std::map<std::string, cmCPackComponent>::const_iterator
+ i = Components.begin(); i != Components.end(); ++i)
+ {
+ cmCPackComponent const& component = i->second;
+
+ if(!component.Group)
+ {
+ if(!EmitFeatureForComponent(featureDefinitions, component))
+ {
+ return false;
+ }
+ }
+ }
+
+ return true;
+}
+
+bool cmCPackWIXGenerator::EmitFeatureForComponentGroup(
+ cmWIXSourceWriter& featureDefinitions,
+ cmCPackComponentGroup const& group)
+{
+ featureDefinitions.BeginElement("Feature");
+ featureDefinitions.AddAttribute("Id", "CM_G_" + group.Name);
+
+ featureDefinitions.AddAttributeUnlessEmpty(
+ "Title", group.DisplayName);
+
+ featureDefinitions.AddAttributeUnlessEmpty(
+ "Description", group.Description);
+
+ for(std::vector<cmCPackComponentGroup*>::const_iterator
+ i = group.Subgroups.begin(); i != group.Subgroups.end(); ++i)
+ {
+ if(!EmitFeatureForComponentGroup(featureDefinitions, **i))
+ {
+ return false;
+ }
+ }
+
+ for(std::vector<cmCPackComponent*>::const_iterator
+ i = group.Components.begin(); i != group.Components.end(); ++i)
+ {
+ if(!EmitFeatureForComponent(featureDefinitions, **i))
+ {
+ return false;
+ }
+ }
+
+ featureDefinitions.EndElement("Feature");
+
+ return true;
+}
+
+bool cmCPackWIXGenerator::EmitFeatureForComponent(
+ cmWIXSourceWriter& featureDefinitions,
+ cmCPackComponent const& component)
+{
+ featureDefinitions.BeginElement("Feature");
+ featureDefinitions.AddAttribute("Id", "CM_C_" + component.Name);
+
+ featureDefinitions.AddAttributeUnlessEmpty(
+ "Title", component.DisplayName);
+
+ featureDefinitions.AddAttributeUnlessEmpty(
+ "Description", component.Description);
+
+ featureDefinitions.EndElement("Feature");
+
+ return true;
+}
+
bool cmCPackWIXGenerator::CreateStartMenuShortcuts(
cmWIXSourceWriter& directoryDefinitions,
cmWIXSourceWriter& fileDefinitions,
diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.h b/Source/CPack/WiX/cmCPackWIXGenerator.h
index 481a07d..aa19cd3 100644
--- a/Source/CPack/WiX/cmCPackWIXGenerator.h
+++ b/Source/CPack/WiX/cmCPackWIXGenerator.h
@@ -56,7 +56,7 @@ protected:
virtual bool SupportsComponentInstallation() const
{
- return false;
+ return true;
}
private:
@@ -79,6 +79,17 @@ private:
bool CreateWiXSourceFiles();
+ bool CreateFeatureHierarchy(
+ cmWIXSourceWriter& featureDefinitions);
+
+ bool EmitFeatureForComponentGroup(
+ cmWIXSourceWriter& featureDefinitions,
+ cmCPackComponentGroup const& group);
+
+ bool EmitFeatureForComponent(
+ cmWIXSourceWriter& featureDefinitions,
+ cmCPackComponent const& component);
+
bool CreateStartMenuShortcuts(
cmWIXSourceWriter& directoryDefinitions,
cmWIXSourceWriter& fileDefinitions,
diff --git a/Source/CPack/WiX/cmWIXSourceWriter.cxx b/Source/CPack/WiX/cmWIXSourceWriter.cxx
index 214b8ac..c8a3922 100644
--- a/Source/CPack/WiX/cmWIXSourceWriter.cxx
+++ b/Source/CPack/WiX/cmWIXSourceWriter.cxx
@@ -123,6 +123,15 @@ void cmWIXSourceWriter::AddAttribute(
file << " " << key << "=\"" << EscapeAttributeValue(utf8) << '"';
}
+void cmWIXSourceWriter::AddAttributeUnlessEmpty(
+ const std::string& key, const std::string& value)
+{
+ if(value.size())
+ {
+ AddAttribute(key, value);
+ }
+}
+
std::string cmWIXSourceWriter::WindowsCodepageToUtf8(const std::string& value)
{
if(value.empty())
diff --git a/Source/CPack/WiX/cmWIXSourceWriter.h b/Source/CPack/WiX/cmWIXSourceWriter.h
index 0c7803c..670d4c0 100644
--- a/Source/CPack/WiX/cmWIXSourceWriter.h
+++ b/Source/CPack/WiX/cmWIXSourceWriter.h
@@ -40,6 +40,9 @@ public:
void AddAttribute(
const std::string& key, const std::string& value);
+ void AddAttributeUnlessEmpty(
+ const std::string& key, const std::string& value);
+
static std::string WindowsCodepageToUtf8(const std::string& value);
private:
-----------------------------------------------------------------------
Summary of changes:
Modules/CPackWIX.cmake | 8 +
Modules/WIX.template.in | 2 +-
Source/CPack/WiX/cmCPackWIXGenerator.cxx | 209 ++++++++++++++++++++++++++----
Source/CPack/WiX/cmCPackWIXGenerator.h | 20 +++-
Source/CPack/WiX/cmWIXSourceWriter.cxx | 9 ++
Source/CPack/WiX/cmWIXSourceWriter.h | 3 +
6 files changed, 224 insertions(+), 27 deletions(-)
hooks/post-receive
--
CMake
More information about the Cmake-commits
mailing list