[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