[Cmake-commits] CMake branch, next, updated. v3.0.0-rc4-2979-g273265f

Daniele E. Domenichelli daniele.domenichelli at gmail.com
Wed May 7 09:18:56 EDT 2014


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  273265f59786680ce6075114709c127cc9025d61 (commit)
       via  66731453dec57c08a02e3cd74cfadcc45c995739 (commit)
      from  7f7983fe7893e56caba4da49510f4620223bc5c4 (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=273265f59786680ce6075114709c127cc9025d61
commit 273265f59786680ce6075114709c127cc9025d61
Merge: 7f7983f 6673145
Author:     Daniele E. Domenichelli <daniele.domenichelli at gmail.com>
AuthorDate: Wed May 7 09:18:54 2014 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Wed May 7 09:18:54 2014 -0400

    Merge topic 'bug_0014849' into next
    
    66731453 Allow to disable the Package Registry


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=66731453dec57c08a02e3cd74cfadcc45c995739
commit 66731453dec57c08a02e3cd74cfadcc45c995739
Author:     Daniele E. Domenichelli <daniele.domenichelli at iit.it>
AuthorDate: Wed Apr 2 16:32:54 2014 +0200
Commit:     Daniele E. Domenichelli <daniele.domenichelli at iit.it>
CommitDate: Wed May 7 11:23:10 2014 +0200

    Allow to disable the Package Registry
    
    Add 3 new variables:
    
     * CMAKE_EXPORT_NO_PACKAGE_REGISTRY that disables the export(PACKAGE)
       command
     * CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY that disables the User Package
       Registry in all the find_package calls.
     * CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY that disables the
       System Package Registry in all the find_package calls.
    
    Update documentation and unit tests.
    
    Fix Issue #14849

diff --git a/Help/command/export.rst b/Help/command/export.rst
index 6b83587..d4bab35 100644
--- a/Help/command/export.rst
+++ b/Help/command/export.rst
@@ -51,4 +51,7 @@ projects find and use a package from the current project's build tree
 without help from the user.  Note that the entry in the package
 registry that this command creates works only in conjunction with a
 package configuration file (<name>Config.cmake) that works with the
-build tree.
+build tree. In some cases, for example for packaging and for system
+wide installations, it is not desirable to write the user package
+registry. If the :variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` variable
+is enabled, the ``export(PACKAGE)`` command will do nothing.
diff --git a/Help/command/find_package.rst b/Help/command/find_package.rst
index 5d9aea6..190d05c 100644
--- a/Help/command/find_package.rst
+++ b/Help/command/find_package.rst
@@ -272,7 +272,9 @@ enabled.
    (This step is implemented only on Windows.)
 
 6. Search paths stored in the CMake :ref:`User Package Registry`.
-   This can be skipped if ``NO_CMAKE_PACKAGE_REGISTRY`` is passed.
+   This can be skipped if ``NO_CMAKE_PACKAGE_REGISTRY`` is passed or by
+   setting the :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY`
+   to ``TRUE``.
    See the :manual:`cmake-packages(7)` manual for details on the user
    package registry.
 
@@ -285,7 +287,9 @@ enabled.
      CMAKE_SYSTEM_APPBUNDLE_PATH
 
 8. Search paths stored in the CMake :ref:`System Package Registry`.
-   This can be skipped if ``NO_CMAKE_SYSTEM_PACKAGE_REGISTRY`` is passed.
+   This can be skipped if ``NO_CMAKE_SYSTEM_PACKAGE_REGISTRY`` is passed
+   or by setting the
+   :variable:`CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY` to ``TRUE``.
    See the :manual:`cmake-packages(7)` manual for details on the system
    package registry.
 
diff --git a/Help/manual/cmake-packages.7.rst b/Help/manual/cmake-packages.7.rst
index 1723826..c4cca6d 100644
--- a/Help/manual/cmake-packages.7.rst
+++ b/Help/manual/cmake-packages.7.rst
@@ -564,6 +564,21 @@ containing the package configuration file.
 
 There is no system package registry on non-Windows platforms.
 
+.. _`Disabling the Package Registry`:
+
+Disabling the Package Registry
+------------------------------
+
+In some cases using the Package Registries is not desirable. CMake
+allows to disable them using the following variables:
+
+ * :variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` disables the
+   :command:`export(PACKAGE)` command.
+ * :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` disables the
+   User Package Registry in all the :command:`find_package` calls.
+ * :variable:`CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY` disables
+   the System Package Registry in all the :command:`find_package` calls.
+
 Package Registry Example
 ------------------------
 
diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst
index 82242f5..6cdccea 100644
--- a/Help/manual/cmake-variables.7.rst
+++ b/Help/manual/cmake-variables.7.rst
@@ -109,10 +109,13 @@ Variables that Change Behavior
    /variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName
    /variable/CMAKE_ERROR_DEPRECATED
    /variable/CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION
+   /variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY
    /variable/CMAKE_SYSROOT
    /variable/CMAKE_FIND_LIBRARY_PREFIXES
    /variable/CMAKE_FIND_LIBRARY_SUFFIXES
    /variable/CMAKE_FIND_NO_INSTALL_PREFIX
+   /variable/CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY
+   /variable/CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY
    /variable/CMAKE_FIND_PACKAGE_WARN_NO_MODULE
    /variable/CMAKE_FIND_ROOT_PATH
    /variable/CMAKE_FIND_ROOT_PATH_MODE_INCLUDE
diff --git a/Help/variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY.rst b/Help/variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY.rst
new file mode 100644
index 0000000..ee109ba
--- /dev/null
+++ b/Help/variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY.rst
@@ -0,0 +1,11 @@
+CMAKE_EXPORT_NO_PACKAGE_REGISTRY
+--------------------------------
+
+Disable the :command:`export(PACKAGE)` command.
+
+In some cases, for example for packaging and for system wide
+installations, it is not desirable to write the user package registry.
+If the :variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` variable is enabled,
+the :command:`export(PACKAGE)` command will do nothing.
+
+See also :ref:`Disabling the Package Registry`.
diff --git a/Help/variable/CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY.rst b/Help/variable/CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY.rst
new file mode 100644
index 0000000..9058471
--- /dev/null
+++ b/Help/variable/CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY.rst
@@ -0,0 +1,13 @@
+CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY
+--------------------------------------
+
+Skip :ref:`User Package Registry` in :command:`find_package` calls.
+
+In some cases, for example to locate only system wide installations, it
+is not desirable to use the :ref:`User Package Registry` when searching
+for packages. If the :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY`
+variable is enabled, all the :command:`find_package` commands will skip
+the :ref:`User Package Registry` as if they were called with the
+``NO_CMAKE_PACKAGE_REGISTRY`` argument.
+
+See also :ref:`Disabling the Package Registry`.
diff --git a/Help/variable/CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY.rst b/Help/variable/CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY.rst
new file mode 100644
index 0000000..44588b1
--- /dev/null
+++ b/Help/variable/CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY.rst
@@ -0,0 +1,13 @@
+CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY
+---------------------------------------------
+
+Skip :ref:`System Package Registry` in :command:`find_package` calls.
+
+In some cases, it is not desirable to use the
+:ref:`System Package Registry` when searching for packages. If the
+:variable:`CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY` variable is
+enabled, all the :command:`find_package` commands will skip
+the :ref:`System Package Registry` as if they were called with the
+``NO_CMAKE_SYSTEM_PACKAGE_REGISTRY`` argument.
+
+See also :ref:`Disabling the Package Registry`.
diff --git a/Source/cmExportCommand.cxx b/Source/cmExportCommand.cxx
index 2536ada..db21c49 100644
--- a/Source/cmExportCommand.cxx
+++ b/Source/cmExportCommand.cxx
@@ -285,6 +285,13 @@ bool cmExportCommand::HandlePackage(std::vector<std::string> const& args)
     return false;
     }
 
+  // If the CMAKE_EXPORT_NO_PACKAGE_REGISTRY variable is set the command
+  // export(PACKAGE) does nothing.
+  if(this->Makefile->IsOn("CMAKE_EXPORT_NO_PACKAGE_REGISTRY"))
+    {
+    return true;
+    }
+
   // We store the current build directory in the registry as a value
   // named by a hash of its own content.  This is deterministic and is
   // unique with high probability.
diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx
index a790e00..55a61f5 100644
--- a/Source/cmFindPackageCommand.cxx
+++ b/Source/cmFindPackageCommand.cxx
@@ -90,6 +90,18 @@ bool cmFindPackageCommand
     this->UseLib64Paths = true;
     }
 
+  // Check if User Package Registry should be disabled
+  if(this->Makefile->IsOn("CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY"))
+    {
+    this->NoUserRegistry = true;
+    }
+
+  // Check if System Package Registry should be disabled
+  if(this->Makefile->IsOn("CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY"))
+    {
+    this->NoSystemRegistry = true;
+    }
+
   // Find the current root path mode.
   this->SelectDefaultRootPathMode();
 
diff --git a/Tests/FindPackageTest/CMakeLists.txt b/Tests/FindPackageTest/CMakeLists.txt
index a77713f..17f6b20 100644
--- a/Tests/FindPackageTest/CMakeLists.txt
+++ b/Tests/FindPackageTest/CMakeLists.txt
@@ -325,6 +325,7 @@ try_compile(EXPORTER_COMPILED
   ${FindPackageTest_BINARY_DIR}/Exporter
   ${FindPackageTest_SOURCE_DIR}/Exporter
   CMakeTestExportPackage dummy
+  CMAKE_FLAGS "-UCMAKE_EXPORT_NO_PACKAGE_REGISTRY"
   OUTPUT_VARIABLE output)
 message(STATUS "Searching for export(PACKAGE) test project")
 set(CMakeTestExportPackage_DIR "" CACHE FILEPATH
@@ -332,6 +333,35 @@ set(CMakeTestExportPackage_DIR "" CACHE FILEPATH
 string(REGEX REPLACE "-.*$" "" version ${CMAKE_VERSION})
 find_package(CMakeTestExportPackage 1.${version} EXACT REQUIRED)
 
+message(STATUS "Searching for export(PACKAGE) test project with CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=TRUE")
+set(CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY TRUE)
+set(CMakeTestExportPackage_DIR "" CACHE FILEPATH
+  "Wipe out find results for testing." FORCE)
+find_package(CMakeTestExportPackage  1.${version} EXACT QUIET)
+if(CMakeTestExportPackage_FOUND)
+  message(SEND_ERROR "CMakeTestExportPackage should not be FOUND!")
+endif()
+unset(CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY)
+
+message(STATUS "Remove export(PACKAGE) test project")
+file(REMOVE_RECURSE ${FindPackageTest_BINARY_DIR}/Exporter)
+set(CMakeTestExportPackage_DIR "" CACHE FILEPATH
+  "Wipe out find results for testing." FORCE)
+find_package(CMakeTestExportPackage QUIET) # Should clean the user package cache
+#
+message(STATUS "Preparing export(PACKAGE) test project with CMAKE_EXPORT_NO_PACKAGE_REGISTRY=TRUE")
+try_compile(EXPORTER_COMPILED
+  ${FindPackageTest_BINARY_DIR}/Exporter
+  ${FindPackageTest_SOURCE_DIR}/Exporter
+  CMakeTestExportPackage dummy
+  CMAKE_FLAGS "-DCMAKE_EXPORT_NO_PACKAGE_REGISTRY:BOOL=TRUE"
+  OUTPUT_VARIABLE output)
+message(STATUS "Searching for export(PACKAGE) test project")
+find_package(CMakeTestExportPackage 1.${version} EXACT QUIET)
+if(CMakeTestExportPackage_FOUND)
+  message(SEND_ERROR "CMakeTestExportPackage should not be FOUND!")
+endif()
+
 #-----------------------------------------------------------------------------
 # Test configure_package_config_file().
 

-----------------------------------------------------------------------

Summary of changes:
 Help/command/export.rst                            |    5 +++-
 Help/command/find_package.rst                      |    8 ++++--
 Help/manual/cmake-packages.7.rst                   |   15 ++++++++++
 Help/manual/cmake-variables.7.rst                  |    3 ++
 Help/variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY.rst |   11 +++++++
 .../CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY.rst     |   13 +++++++++
 ...AKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY.rst |   13 +++++++++
 Source/cmExportCommand.cxx                         |    7 +++++
 Source/cmFindPackageCommand.cxx                    |   12 ++++++++
 Tests/FindPackageTest/CMakeLists.txt               |   30 ++++++++++++++++++++
 10 files changed, 114 insertions(+), 3 deletions(-)
 create mode 100644 Help/variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY.rst
 create mode 100644 Help/variable/CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY.rst
 create mode 100644 Help/variable/CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY.rst


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list