[Cmake-commits] CMake branch, next, updated. v3.0.0-rc4-3127-g40e634c

Brad King brad.king at kitware.com
Mon May 12 09:49:45 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  40e634cda1c277e75b6929eb32eaa548e6893e79 (commit)
       via  be8ae96098c58cf96ed71badba94e7b45f273f3c (commit)
       via  d09fda5d91e92155ef674dde97a66547cc750e9f (commit)
       via  ac24a1c031a5ccb01c2a978655757e71c3f9acba (commit)
      from  5c8de9ef030460fb572a2d5ef4ee7321a435326b (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=40e634cda1c277e75b6929eb32eaa548e6893e79
commit 40e634cda1c277e75b6929eb32eaa548e6893e79
Merge: 5c8de9e be8ae96
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Mon May 12 09:49:44 2014 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Mon May 12 09:49:44 2014 -0400

    Merge topic 'package-disable-registry' into next
    
    be8ae960 Allow the Package Registry to be disabled (#14849)
    d09fda5d Tests: Improve FindPackageTest for in-source builds
    ac24a1c0 Tests: Improve FindPackageTest exported package version


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=be8ae96098c58cf96ed71badba94e7b45f273f3c
commit be8ae96098c58cf96ed71badba94e7b45f273f3c
Author:     Daniele E. Domenichelli <daniele.domenichelli at iit.it>
AuthorDate: Wed Apr 2 16:32:54 2014 +0200
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Mon May 12 09:50:01 2014 -0400

    Allow the Package Registry to be disabled (#14849)
    
    When a project is packaged for redistribution the local package
    registries should not be updated or consulted.  They are for developers.
    
    Add variables to disable use of package registries globally:
    
    * 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.

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 092801b..092bf20 100644
--- a/Tests/FindPackageTest/CMakeLists.txt
+++ b/Tests/FindPackageTest/CMakeLists.txt
@@ -331,7 +331,7 @@ try_compile(EXPORTER_COMPILED
   ${FindPackageTest_BINARY_DIR}/Exporter-build
   ${FindPackageTest_SOURCE_DIR}/Exporter
   CMakeTestExportPackage dummy
-  CMAKE_FLAGS
+  CMAKE_FLAGS "-UCMAKE_EXPORT_NO_PACKAGE_REGISTRY"
     -Dversion=${version}
   OUTPUT_VARIABLE output)
 message(STATUS "Searching for export(PACKAGE) test project")
@@ -339,6 +339,36 @@ set(CMakeTestExportPackage_DIR "" CACHE FILEPATH
   "Wipe out find results for testing." FORCE)
 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-build)
+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-build
+  ${FindPackageTest_SOURCE_DIR}/Exporter
+  CMakeTestExportPackage dummy
+  CMAKE_FLAGS "-DCMAKE_EXPORT_NO_PACKAGE_REGISTRY:BOOL=TRUE"
+    -Dversion=${version}
+  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().
 

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d09fda5d91e92155ef674dde97a66547cc750e9f
commit d09fda5d91e92155ef674dde97a66547cc750e9f
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri May 9 11:43:15 2014 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Mon May 12 09:44:32 2014 -0400

    Tests: Improve FindPackageTest for in-source builds
    
    Use a different directory name for the Exporter build tree so that it is
    out-of-source even when the main test is in-source.

diff --git a/Tests/FindPackageTest/CMakeLists.txt b/Tests/FindPackageTest/CMakeLists.txt
index fc82a1e..092801b 100644
--- a/Tests/FindPackageTest/CMakeLists.txt
+++ b/Tests/FindPackageTest/CMakeLists.txt
@@ -328,7 +328,7 @@ set(version "${version}.${v}")
 
 message(STATUS "Preparing export(PACKAGE) test project")
 try_compile(EXPORTER_COMPILED
-  ${FindPackageTest_BINARY_DIR}/Exporter
+  ${FindPackageTest_BINARY_DIR}/Exporter-build
   ${FindPackageTest_SOURCE_DIR}/Exporter
   CMakeTestExportPackage dummy
   CMAKE_FLAGS

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ac24a1c031a5ccb01c2a978655757e71c3f9acba
commit ac24a1c031a5ccb01c2a978655757e71c3f9acba
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Thu May 8 09:48:21 2014 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Mon May 12 09:44:28 2014 -0400

    Tests: Improve FindPackageTest exported package version
    
    Add a random version component so that the test is unlikely to conflict
    with other tests of the same CMake version on the same machine.

diff --git a/Tests/FindPackageTest/CMakeLists.txt b/Tests/FindPackageTest/CMakeLists.txt
index a77713f..fc82a1e 100644
--- a/Tests/FindPackageTest/CMakeLists.txt
+++ b/Tests/FindPackageTest/CMakeLists.txt
@@ -320,16 +320,23 @@ endif()
 
 #-----------------------------------------------------------------------------
 # Test export(PACKAGE) with find_package.
+
+# Choose a unique version.
+string(REGEX REPLACE "-.*$" "" version ${CMAKE_VERSION})
+string(RANDOM LENGTH 4 ALPHABET "0123456789" v)
+set(version "${version}.${v}")
+
 message(STATUS "Preparing export(PACKAGE) test project")
 try_compile(EXPORTER_COMPILED
   ${FindPackageTest_BINARY_DIR}/Exporter
   ${FindPackageTest_SOURCE_DIR}/Exporter
   CMakeTestExportPackage dummy
+  CMAKE_FLAGS
+    -Dversion=${version}
   OUTPUT_VARIABLE output)
 message(STATUS "Searching for export(PACKAGE) test project")
 set(CMakeTestExportPackage_DIR "" CACHE FILEPATH
   "Wipe out find results for testing." FORCE)
-string(REGEX REPLACE "-.*$" "" version ${CMAKE_VERSION})
 find_package(CMakeTestExportPackage 1.${version} EXACT REQUIRED)
 
 #-----------------------------------------------------------------------------
diff --git a/Tests/FindPackageTest/Exporter/CMakeTestExportPackageConfigVersion.cmake.in b/Tests/FindPackageTest/Exporter/CMakeTestExportPackageConfigVersion.cmake.in
index 42bd84e..6eac6e6 100644
--- a/Tests/FindPackageTest/Exporter/CMakeTestExportPackageConfigVersion.cmake.in
+++ b/Tests/FindPackageTest/Exporter/CMakeTestExportPackageConfigVersion.cmake.in
@@ -1,5 +1,5 @@
 # Test config file.
-set(PACKAGE_VERSION "1. at CMAKE_VERSION@")
+set(PACKAGE_VERSION "1. at version@")
 if("${PACKAGE_FIND_VERSION}" VERSION_EQUAL "${PACKAGE_VERSION}")
   set(PACKAGE_VERSION_COMPATIBLE 1)
   set(PACKAGE_VERSION_EXACT 1)

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

Summary of changes:


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list