[Cmake-commits] CMake branch, next, updated. v3.2.2-1964-g287945c

Domen Vrankar domen.vrankar at gmail.com
Mon Apr 20 14:50:36 EDT 2015


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  287945cf3b310b298b8cfe140af94eb86c913a73 (commit)
       via  268e008c1c448fd3652c0cf196437ede85c37880 (commit)
      from  c45456ba932b319cff57d24d69a17d5b18293eef (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=287945cf3b310b298b8cfe140af94eb86c913a73
commit 287945cf3b310b298b8cfe140af94eb86c913a73
Merge: c45456b 268e008
Author:     Domen Vrankar <domen.vrankar at gmail.com>
AuthorDate: Mon Apr 20 14:50:36 2015 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Mon Apr 20 14:50:36 2015 -0400

    Merge topic 'cpack-deb-component-vars-prepare' into next
    
    268e008c CPackDEB: component vars prepare


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=268e008c1c448fd3652c0cf196437ede85c37880
commit 268e008c1c448fd3652c0cf196437ede85c37880
Author:     Domen Vrankar <domen.vrankar at gmail.com>
AuthorDate: Mon Apr 20 20:48:24 2015 +0200
Commit:     Domen Vrankar <domen.vrankar at gmail.com>
CommitDate: Mon Apr 20 20:48:24 2015 +0200

    CPackDEB: component vars prepare
    
    Preparation for per component variables.
    Patch makes sure we know which variables
    will be set for per component generator
    and also prevents accidental overflows
    of variable values between components.

diff --git a/Modules/CPackDeb.cmake b/Modules/CPackDeb.cmake
index 8a4fa49..f248a67 100644
--- a/Modules/CPackDeb.cmake
+++ b/Modules/CPackDeb.cmake
@@ -223,233 +223,260 @@ if(NOT UNIX)
   message(FATAL_ERROR "CPackDeb.cmake may only be used under UNIX.")
 endif()
 
-# CPACK_DEBIAN_PACKAGE_SHLIBDEPS
-# If specify OFF, only user depends are used
-if(NOT DEFINED CPACK_DEBIAN_PACKAGE_SHLIBDEPS)
-  set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS OFF)
-endif()
+function(cpack_deb_prepare_package_vars)
+  # CPACK_DEBIAN_PACKAGE_SHLIBDEPS
+  # If specify OFF, only user depends are used
+  if(NOT DEFINED CPACK_DEBIAN_PACKAGE_SHLIBDEPS)
+    set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS OFF)
+  endif()
 
-find_program(FAKEROOT_EXECUTABLE fakeroot)
-if(FAKEROOT_EXECUTABLE)
-  set(CPACK_DEBIAN_FAKEROOT_EXECUTABLE ${FAKEROOT_EXECUTABLE})
-endif()
+  find_program(FAKEROOT_EXECUTABLE fakeroot)
+  if(FAKEROOT_EXECUTABLE)
+    set(CPACK_DEBIAN_FAKEROOT_EXECUTABLE ${FAKEROOT_EXECUTABLE})
+  endif()
 
-if(CPACK_DEBIAN_PACKAGE_SHLIBDEPS)
-  # dpkg-shlibdeps is a Debian utility for generating dependency list
-  find_program(SHLIBDEPS_EXECUTABLE dpkg-shlibdeps)
-
-  # Check version of the dpkg-shlibdeps tool using CPackRPM method
-  if(SHLIBDEPS_EXECUTABLE)
-    execute_process(COMMAND env LC_ALL=C ${SHLIBDEPS_EXECUTABLE} --version
-      OUTPUT_VARIABLE _TMP_VERSION
-      ERROR_QUIET
-      OUTPUT_STRIP_TRAILING_WHITESPACE)
-    string(REGEX MATCH "dpkg-shlibdeps version ([0-9]+\\.[0-9]+\\.[0-9]+)"
-      SHLIBDEPS_EXECUTABLE_VERSION
-      ${_TMP_VERSION})
-    set(SHLIBDEPS_EXECUTABLE_VERSION "${CMAKE_MATCH_1}")
-    if(CPACK_DEBIAN_PACKAGE_DEBUG)
-      message( "CPackDeb Debug: dpkg-shlibdeps version is <${SHLIBDEPS_EXECUTABLE_VERSION}>")
-    endif()
+  if(CPACK_DEBIAN_PACKAGE_SHLIBDEPS)
+    # dpkg-shlibdeps is a Debian utility for generating dependency list
+    find_program(SHLIBDEPS_EXECUTABLE dpkg-shlibdeps)
+
+    # Check version of the dpkg-shlibdeps tool using CPackRPM method
+    if(SHLIBDEPS_EXECUTABLE)
+      execute_process(COMMAND env LC_ALL=C ${SHLIBDEPS_EXECUTABLE} --version
+        OUTPUT_VARIABLE _TMP_VERSION
+        ERROR_QUIET
+        OUTPUT_STRIP_TRAILING_WHITESPACE)
+      string(REGEX MATCH "dpkg-shlibdeps version ([0-9]+\\.[0-9]+\\.[0-9]+)"
+        SHLIBDEPS_EXECUTABLE_VERSION
+        ${_TMP_VERSION})
+      set(SHLIBDEPS_EXECUTABLE_VERSION "${CMAKE_MATCH_1}")
+      if(CPACK_DEBIAN_PACKAGE_DEBUG)
+        message( "CPackDeb Debug: dpkg-shlibdeps version is <${SHLIBDEPS_EXECUTABLE_VERSION}>")
+      endif()
 
-    # Generating binary list - Get type of all install files
-    execute_process(COMMAND find -type f
-      COMMAND xargs file
-      WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
-      OUTPUT_VARIABLE CPACK_DEB_INSTALL_FILES)
-
-    # Convert to CMake list
-    string(REPLACE "\n" ";" CPACK_DEB_INSTALL_FILES ${CPACK_DEB_INSTALL_FILES})
-
-    # Only dynamically linked ELF files are included
-    # Extract only file name infront of ":"
-    foreach ( _FILE ${CPACK_DEB_INSTALL_FILES})
-      if ( ${_FILE} MATCHES "ELF.*dynamically linked")
-         string(REGEX MATCH "(^.*):" _FILE_NAME ${_FILE})
-         list(APPEND CPACK_DEB_BINARY_FILES ${CMAKE_MATCH_1})
+      # Generating binary list - Get type of all install files
+      execute_process(COMMAND find -type f
+        COMMAND xargs file
+        WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
+        OUTPUT_VARIABLE CPACK_DEB_INSTALL_FILES)
+
+      # Convert to CMake list
+      string(REPLACE "\n" ";" CPACK_DEB_INSTALL_FILES ${CPACK_DEB_INSTALL_FILES})
+
+      # Only dynamically linked ELF files are included
+      # Extract only file name infront of ":"
+      foreach ( _FILE ${CPACK_DEB_INSTALL_FILES})
+        if ( ${_FILE} MATCHES "ELF.*dynamically linked")
+           string(REGEX MATCH "(^.*):" _FILE_NAME ${_FILE})
+           list(APPEND CPACK_DEB_BINARY_FILES ${CMAKE_MATCH_1})
+        endif()
+      endforeach()
+
+      message( "CPackDeb: - Generating dependency list")
+
+      # Create blank control file for running dpkg-shlibdeps
+      # There might be some other way to invoke dpkg-shlibdeps without creating this file
+      # but standard debian package should not have anything that can collide with this file or directory
+      file(MAKE_DIRECTORY ${CPACK_TEMPORARY_DIRECTORY}/debian)
+      file(WRITE ${CPACK_TEMPORARY_DIRECTORY}/debian/control "")
+
+      # Execute dpkg-shlibdeps
+      # --ignore-missing-info : allow dpkg-shlibdeps to run even if some libs do not belong to a package
+      # -O : print to STDOUT
+      execute_process(COMMAND ${SHLIBDEPS_EXECUTABLE} --ignore-missing-info -O ${CPACK_DEB_BINARY_FILES}
+        WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
+        OUTPUT_VARIABLE SHLIBDEPS_OUTPUT
+        RESULT_VARIABLE SHLIBDEPS_RESULT
+        ERROR_VARIABLE SHLIBDEPS_ERROR
+        OUTPUT_STRIP_TRAILING_WHITESPACE )
+      if(CPACK_DEBIAN_PACKAGE_DEBUG)
+        # dpkg-shlibdeps will throw some warnings if some input files are not binary
+        message( "CPackDeb Debug: dpkg-shlibdeps warnings \n${SHLIBDEPS_ERROR}")
       endif()
-    endforeach()
-
-    message( "CPackDeb: - Generating dependency list")
-
-    # Create blank control file for running dpkg-shlibdeps
-    # There might be some other way to invoke dpkg-shlibdeps without creating this file
-    # but standard debian package should not have anything that can collide with this file or directory
-    file(MAKE_DIRECTORY ${CPACK_TEMPORARY_DIRECTORY}/debian)
-    file(WRITE ${CPACK_TEMPORARY_DIRECTORY}/debian/control "")
-
-    # Execute dpkg-shlibdeps
-    # --ignore-missing-info : allow dpkg-shlibdeps to run even if some libs do not belong to a package
-    # -O : print to STDOUT
-    execute_process(COMMAND ${SHLIBDEPS_EXECUTABLE} --ignore-missing-info -O ${CPACK_DEB_BINARY_FILES}
-      WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
-      OUTPUT_VARIABLE SHLIBDEPS_OUTPUT
-      RESULT_VARIABLE SHLIBDEPS_RESULT
-      ERROR_VARIABLE SHLIBDEPS_ERROR
-      OUTPUT_STRIP_TRAILING_WHITESPACE )
-    if(CPACK_DEBIAN_PACKAGE_DEBUG)
-      # dpkg-shlibdeps will throw some warnings if some input files are not binary
-      message( "CPackDeb Debug: dpkg-shlibdeps warnings \n${SHLIBDEPS_ERROR}")
-    endif()
-    if (NOT SHLIBDEPS_RESULT EQUAL 0)
-      message (FATAL_ERROR "CPackDeb: dpkg-shlibdeps: ${SHLIBDEPS_ERROR}")
-    endif ()
+      if (NOT SHLIBDEPS_RESULT EQUAL 0)
+        message (FATAL_ERROR "CPackDeb: dpkg-shlibdeps: ${SHLIBDEPS_ERROR}")
+      endif ()
 
-    #Get rid of prefix generated by dpkg-shlibdeps
-    string (REGEX REPLACE "^.*Depends=" "" CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS ${SHLIBDEPS_OUTPUT})
+      #Get rid of prefix generated by dpkg-shlibdeps
+      string (REGEX REPLACE "^.*Depends=" "" CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS ${SHLIBDEPS_OUTPUT})
 
-    if(CPACK_DEBIAN_PACKAGE_DEBUG)
-      message( "CPackDeb Debug: Found dependency: ${CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS}")
-    endif()
+      if(CPACK_DEBIAN_PACKAGE_DEBUG)
+        message( "CPackDeb Debug: Found dependency: ${CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS}")
+      endif()
+
+      # Remove blank control file
+      # Might not be safe if package actual contain file or directory named debian
+      file(REMOVE_RECURSE "${CPACK_TEMPORARY_DIRECTORY}/debian")
 
-    # Remove blank control file
-    # Might not be safe if package actual contain file or directory named debian
-    file(REMOVE_RECURSE "${CPACK_TEMPORARY_DIRECTORY}/debian")
+      # Append user depend if set
+      if (CPACK_DEBIAN_PACKAGE_DEPENDS)
+        set (CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS}, ${CPACK_DEBIAN_PACKAGE_DEPENDS}")
+      else ()
+        set (CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS}")
+      endif ()
 
-    # Append user depend if set
-    if (CPACK_DEBIAN_PACKAGE_DEPENDS)
-      set (CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS}, ${CPACK_DEBIAN_PACKAGE_DEPENDS}")
     else ()
-      set (CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS}")
-    endif ()
+      if(CPACK_DEBIAN_PACKAGE_DEBUG)
+        message( "CPackDeb Debug: Using only user-provided depends because dpkg-shlibdeps is not found.")
+      endif()
+    endif()
 
   else ()
     if(CPACK_DEBIAN_PACKAGE_DEBUG)
-      message( "CPackDeb Debug: Using only user-provided depends because dpkg-shlibdeps is not found.")
+      message( "CPackDeb Debug: Using only user-provided depends")
     endif()
   endif()
 
-else ()
-  if(CPACK_DEBIAN_PACKAGE_DEBUG)
-    message( "CPackDeb Debug: Using only user-provided depends")
-  endif()
-endif()
-
-# Let's define the control file found in debian package:
+  # Let's define the control file found in debian package:
 
-# Binary package:
-# http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-binarycontrolfiles
+  # Binary package:
+  # http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-binarycontrolfiles
 
-# DEBIAN/control
-# debian policy enforce lower case for package name
-# Package: (mandatory)
-if(NOT CPACK_DEBIAN_PACKAGE_NAME)
-  string(TOLOWER "${CPACK_PACKAGE_NAME}" CPACK_DEBIAN_PACKAGE_NAME)
-endif()
-
-# Version: (mandatory)
-if(NOT CPACK_DEBIAN_PACKAGE_VERSION)
-  if(NOT CPACK_PACKAGE_VERSION)
-    message(FATAL_ERROR "CPackDeb: Debian package requires a package version")
+  # DEBIAN/control
+  # debian policy enforce lower case for package name
+  # Package: (mandatory)
+  if(NOT CPACK_DEBIAN_PACKAGE_NAME)
+    string(TOLOWER "${CPACK_PACKAGE_NAME}" CPACK_DEBIAN_PACKAGE_NAME)
   endif()
-  set(CPACK_DEBIAN_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION})
-endif()
 
-# Architecture: (mandatory)
-if(NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE)
-  # There is no such thing as i686 architecture on debian, you should use i386 instead
-  # $ dpkg --print-architecture
-  find_program(DPKG_CMD dpkg)
-  if(NOT DPKG_CMD)
-    message(STATUS "CPackDeb: Can not find dpkg in your path, default to i386.")
-    set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE i386)
+  # Version: (mandatory)
+  if(NOT CPACK_DEBIAN_PACKAGE_VERSION)
+    if(NOT CPACK_PACKAGE_VERSION)
+      message(FATAL_ERROR "CPackDeb: Debian package requires a package version")
+    endif()
+    set(CPACK_DEBIAN_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION})
   endif()
-  execute_process(COMMAND "${DPKG_CMD}" --print-architecture
-    OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE
-    OUTPUT_STRIP_TRAILING_WHITESPACE
-    )
-endif()
 
-# have a look at get_property(result GLOBAL PROPERTY ENABLED_FEATURES),
-# this returns the successful find_package() calls, maybe this can help
-# Depends:
-# You should set: DEBIAN_PACKAGE_DEPENDS
-# TODO: automate 'objdump -p | grep NEEDED'
-if(NOT CPACK_DEBIAN_PACKAGE_DEPENDS)
-  message(STATUS "CPACK_DEBIAN_PACKAGE_DEPENDS not set, the package will have no dependencies.")
-endif()
+  # Architecture: (mandatory)
+  if(NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE)
+    # There is no such thing as i686 architecture on debian, you should use i386 instead
+    # $ dpkg --print-architecture
+    find_program(DPKG_CMD dpkg)
+    if(NOT DPKG_CMD)
+      message(STATUS "CPackDeb: Can not find dpkg in your path, default to i386.")
+      set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE i386)
+    endif()
+    execute_process(COMMAND "${DPKG_CMD}" --print-architecture
+      OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE
+      OUTPUT_STRIP_TRAILING_WHITESPACE
+      )
+  endif()
 
-# Maintainer: (mandatory)
-if(NOT CPACK_DEBIAN_PACKAGE_MAINTAINER)
-  if(NOT CPACK_PACKAGE_CONTACT)
-    message(FATAL_ERROR "CPackDeb: Debian package requires a maintainer for a package, set CPACK_PACKAGE_CONTACT or CPACK_DEBIAN_PACKAGE_MAINTAINER")
+  # have a look at get_property(result GLOBAL PROPERTY ENABLED_FEATURES),
+  # this returns the successful find_package() calls, maybe this can help
+  # Depends:
+  # You should set: DEBIAN_PACKAGE_DEPENDS
+  # TODO: automate 'objdump -p | grep NEEDED'
+  if(NOT CPACK_DEBIAN_PACKAGE_DEPENDS)
+    message(STATUS "CPACK_DEBIAN_PACKAGE_DEPENDS not set, the package will have no dependencies.")
   endif()
-  set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_CONTACT})
-endif()
 
-# Description: (mandatory)
-if(NOT CPACK_DEBIAN_PACKAGE_DESCRIPTION)
-  if(NOT CPACK_PACKAGE_DESCRIPTION_SUMMARY)
-    message(FATAL_ERROR "CPackDeb: Debian package requires a summary for a package, set CPACK_PACKAGE_DESCRIPTION_SUMMARY or CPACK_DEBIAN_PACKAGE_DESCRIPTION")
+  # Maintainer: (mandatory)
+  if(NOT CPACK_DEBIAN_PACKAGE_MAINTAINER)
+    if(NOT CPACK_PACKAGE_CONTACT)
+      message(FATAL_ERROR "CPackDeb: Debian package requires a maintainer for a package, set CPACK_PACKAGE_CONTACT or CPACK_DEBIAN_PACKAGE_MAINTAINER")
+    endif()
+    set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_CONTACT})
   endif()
-  set(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION_SUMMARY})
-endif()
 
-# Section: (recommended)
-if(NOT CPACK_DEBIAN_PACKAGE_SECTION)
-  set(CPACK_DEBIAN_PACKAGE_SECTION "devel")
-endif()
+  # Description: (mandatory)
+  if(NOT CPACK_DEBIAN_PACKAGE_DESCRIPTION)
+    if(NOT CPACK_PACKAGE_DESCRIPTION_SUMMARY)
+      message(FATAL_ERROR "CPackDeb: Debian package requires a summary for a package, set CPACK_PACKAGE_DESCRIPTION_SUMMARY or CPACK_DEBIAN_PACKAGE_DESCRIPTION")
+    endif()
+    set(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION_SUMMARY})
+  endif()
 
-# Priority: (recommended)
-if(NOT CPACK_DEBIAN_PACKAGE_PRIORITY)
-  set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
-endif()
+  # Section: (recommended)
+  if(NOT CPACK_DEBIAN_PACKAGE_SECTION)
+    set(CPACK_DEBIAN_PACKAGE_SECTION "devel")
+  endif()
 
-# Compression: (recommended)
-if(NOT CPACK_DEBIAN_COMPRESSION_TYPE)
-  set(CPACK_DEBIAN_COMPRESSION_TYPE "gzip")
-endif()
+  # Priority: (recommended)
+  if(NOT CPACK_DEBIAN_PACKAGE_PRIORITY)
+    set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
+  endif()
 
+  # Compression: (recommended)
+  if(NOT CPACK_DEBIAN_COMPRESSION_TYPE)
+    set(CPACK_DEBIAN_COMPRESSION_TYPE "gzip")
+  endif()
 
-# Recommends:
-# You should set: CPACK_DEBIAN_PACKAGE_RECOMMENDS
-
-# Suggests:
-# You should set: CPACK_DEBIAN_PACKAGE_SUGGESTS
-
-# CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
-# This variable allow advanced user to add custom script to the control.tar.gz (inside the .deb archive)
-# Typical examples are:
-# - conffiles
-# - postinst
-# - postrm
-# - prerm"
-# Usage:
-# set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
-#    "${CMAKE_CURRENT_SOURCE_DIR/prerm;${CMAKE_CURRENT_SOURCE_DIR}/postrm")
-
-# Are we packaging components ?
-if(CPACK_DEB_PACKAGE_COMPONENT)
-  set(CPACK_DEB_PACKAGE_COMPONENT_PART_NAME "-${CPACK_DEB_PACKAGE_COMPONENT}")
-  string(TOLOWER "${CPACK_PACKAGE_NAME}${CPACK_DEB_PACKAGE_COMPONENT_PART_NAME}" CPACK_DEBIAN_PACKAGE_NAME)
-else()
-  set(CPACK_DEB_PACKAGE_COMPONENT_PART_NAME "")
-endif()
 
-set(WDIR "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_DEB_PACKAGE_COMPONENT_PART_PATH}")
-
-# Print out some debug information if we were asked for that
-if(CPACK_DEBIAN_PACKAGE_DEBUG)
-   message("CPackDeb:Debug: CPACK_TOPLEVEL_DIRECTORY          = ${CPACK_TOPLEVEL_DIRECTORY}")
-   message("CPackDeb:Debug: CPACK_TOPLEVEL_TAG                = ${CPACK_TOPLEVEL_TAG}")
-   message("CPackDeb:Debug: CPACK_TEMPORARY_DIRECTORY         = ${CPACK_TEMPORARY_DIRECTORY}")
-   message("CPackDeb:Debug: CPACK_OUTPUT_FILE_NAME            = ${CPACK_OUTPUT_FILE_NAME}")
-   message("CPackDeb:Debug: CPACK_OUTPUT_FILE_PATH            = ${CPACK_OUTPUT_FILE_PATH}")
-   message("CPackDeb:Debug: CPACK_PACKAGE_FILE_NAME           = ${CPACK_PACKAGE_FILE_NAME}")
-   message("CPackDeb:Debug: CPACK_PACKAGE_INSTALL_DIRECTORY   = ${CPACK_PACKAGE_INSTALL_DIRECTORY}")
-   message("CPackDeb:Debug: CPACK_TEMPORARY_PACKAGE_FILE_NAME = ${CPACK_TEMPORARY_PACKAGE_FILE_NAME}")
-endif()
+  # Recommends:
+  # You should set: CPACK_DEBIAN_PACKAGE_RECOMMENDS
+
+  # Suggests:
+  # You should set: CPACK_DEBIAN_PACKAGE_SUGGESTS
+
+  # CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
+  # This variable allow advanced user to add custom script to the control.tar.gz (inside the .deb archive)
+  # Typical examples are:
+  # - conffiles
+  # - postinst
+  # - postrm
+  # - prerm"
+  # Usage:
+  # set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
+  #    "${CMAKE_CURRENT_SOURCE_DIR/prerm;${CMAKE_CURRENT_SOURCE_DIR}/postrm")
+
+  # Are we packaging components ?
+  if(CPACK_DEB_PACKAGE_COMPONENT)
+    set(CPACK_DEB_PACKAGE_COMPONENT_PART_NAME "-${CPACK_DEB_PACKAGE_COMPONENT}")
+    string(TOLOWER "${CPACK_PACKAGE_NAME}${CPACK_DEB_PACKAGE_COMPONENT_PART_NAME}" CPACK_DEBIAN_PACKAGE_NAME)
+  else()
+    set(CPACK_DEB_PACKAGE_COMPONENT_PART_NAME "")
+  endif()
 
-# For debian source packages:
-# debian/control
-# http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-sourcecontrolfiles
+  set(WDIR "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_DEB_PACKAGE_COMPONENT_PART_PATH}")
 
-# .dsc
-# http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-debiansourcecontrolfiles
+  # Print out some debug information if we were asked for that
+  if(CPACK_DEBIAN_PACKAGE_DEBUG)
+     message("CPackDeb:Debug: CPACK_TOPLEVEL_DIRECTORY          = ${CPACK_TOPLEVEL_DIRECTORY}")
+     message("CPackDeb:Debug: CPACK_TOPLEVEL_TAG                = ${CPACK_TOPLEVEL_TAG}")
+     message("CPackDeb:Debug: CPACK_TEMPORARY_DIRECTORY         = ${CPACK_TEMPORARY_DIRECTORY}")
+     message("CPackDeb:Debug: CPACK_OUTPUT_FILE_NAME            = ${CPACK_OUTPUT_FILE_NAME}")
+     message("CPackDeb:Debug: CPACK_OUTPUT_FILE_PATH            = ${CPACK_OUTPUT_FILE_PATH}")
+     message("CPackDeb:Debug: CPACK_PACKAGE_FILE_NAME           = ${CPACK_PACKAGE_FILE_NAME}")
+     message("CPackDeb:Debug: CPACK_PACKAGE_INSTALL_DIRECTORY   = ${CPACK_PACKAGE_INSTALL_DIRECTORY}")
+     message("CPackDeb:Debug: CPACK_TEMPORARY_PACKAGE_FILE_NAME = ${CPACK_TEMPORARY_PACKAGE_FILE_NAME}")
+  endif()
 
-# Builds-Depends:
-#if(NOT CPACK_DEBIAN_PACKAGE_BUILDS_DEPENDS)
-#  set(CPACK_DEBIAN_PACKAGE_BUILDS_DEPENDS
-#    "debhelper (>> 5.0.0), libncurses5-dev, tcl8.4"
-#  )
-#endif()
+  # For debian source packages:
+  # debian/control
+  # http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-sourcecontrolfiles
+
+  # .dsc
+  # http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-debiansourcecontrolfiles
+
+  # Builds-Depends:
+  #if(NOT CPACK_DEBIAN_PACKAGE_BUILDS_DEPENDS)
+  #  set(CPACK_DEBIAN_PACKAGE_BUILDS_DEPENDS
+  #    "debhelper (>> 5.0.0), libncurses5-dev, tcl8.4"
+  #  )
+  #endif()
+
+  # move variables to parent scope so that they may be used to create debian package
+  set(GEN_CPACK_DEBIAN_PACKAGE_NAME "${CPACK_DEBIAN_PACKAGE_NAME}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_VERSION "${CPACK_DEBIAN_PACKAGE_VERSION}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_SECTION "${CPACK_DEBIAN_PACKAGE_SECTION}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_PRIORITY "${CPACK_DEBIAN_PACKAGE_PRIORITY}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_MAINTAINER "${CPACK_DEBIAN_PACKAGE_MAINTAINER}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_DESCRIPTION "${CPACK_DEBIAN_PACKAGE_DESCRIPTION}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_FAKEROOT_EXECUTABLE "${CPACK_DEBIAN_FAKEROOT_EXECUTABLE}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_COMPRESSION_TYPE "${CPACK_DEBIAN_COMPRESSION_TYPE}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_RECOMMENDS "${CPACK_DEBIAN_PACKAGE_RECOMMENDS}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_SUGGESTS "${CPACK_DEBIAN_PACKAGE_SUGGESTS}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_HOMEPAGE "${CPACK_DEBIAN_PACKAGE_HOMEPAGE}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_PREDEPENDS "${CPACK_DEBIAN_PACKAGE_PREDEPENDS}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_ENHANCES "${CPACK_DEBIAN_PACKAGE_ENHANCES}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_BREAKS "${CPACK_DEBIAN_PACKAGE_BREAKS}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_CONFLICTS "${CPACK_DEBIAN_PACKAGE_CONFLICTS}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_PROVIDES "${CPACK_DEBIAN_PACKAGE_PROVIDES}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_REPLACES "${CPACK_DEBIAN_PACKAGE_REPLACES}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA}" PARENT_SCOPE)
+  set(GEN_WDIR "${WDIR}" PARENT_SCOPE)
+endfunction()
+
+cpack_deb_prepare_package_vars()
diff --git a/Source/CPack/cmCPackDebGenerator.cxx b/Source/CPack/cmCPackDebGenerator.cxx
index fcf4122..1c2c001 100644
--- a/Source/CPack/cmCPackDebGenerator.cxx
+++ b/Source/CPack/cmCPackDebGenerator.cxx
@@ -90,7 +90,7 @@ int cmCPackDebGenerator::PackageOnePack(std::string initialTopLevel,
     }
 
   cmsys::Glob gl;
-  std::string findExpr(this->GetOption("WDIR"));
+  std::string findExpr(this->GetOption("GEN_WDIR"));
   findExpr += "/*";
   gl.RecurseOn();
   if ( !gl.FindFiles(findExpr) )
@@ -217,7 +217,7 @@ int cmCPackDebGenerator::PackageComponentsAllInOne()
     }
 
   cmsys::Glob gl;
-  std::string findExpr(this->GetOption("WDIR"));
+  std::string findExpr(this->GetOption("GEN_WDIR"));
   findExpr += "/*";
   gl.RecurseOn();
   if ( !gl.FindFiles(findExpr) )
@@ -286,7 +286,7 @@ int cmCPackDebGenerator::createDeb()
 
   // debian-binary file
   std::string dbfilename;
-    dbfilename += this->GetOption("WDIR");
+    dbfilename += this->GetOption("GEN_WDIR");
   dbfilename += "/debian-binary";
     { // the scope is needed for cmGeneratedFileStream
     cmGeneratedFileStream out(dbfilename.c_str());
@@ -296,44 +296,47 @@ int cmCPackDebGenerator::createDeb()
 
   // control file
   std::string ctlfilename;
-    ctlfilename = this->GetOption("WDIR");
+    ctlfilename = this->GetOption("GEN_WDIR");
   ctlfilename += "/control";
 
   // debian policy enforce lower case for package name
   // mandatory entries:
   std::string debian_pkg_name = cmsys::SystemTools::LowerCase(
-                                this->GetOption("CPACK_DEBIAN_PACKAGE_NAME") );
+      this->GetOption("GEN_CPACK_DEBIAN_PACKAGE_NAME") );
   const char* debian_pkg_version =
-                               this->GetOption("CPACK_DEBIAN_PACKAGE_VERSION");
+      this->GetOption("GEN_CPACK_DEBIAN_PACKAGE_VERSION");
   const char* debian_pkg_section =
-                               this->GetOption("CPACK_DEBIAN_PACKAGE_SECTION");
+      this->GetOption("GEN_CPACK_DEBIAN_PACKAGE_SECTION");
   const char* debian_pkg_priority =
-                              this->GetOption("CPACK_DEBIAN_PACKAGE_PRIORITY");
+      this->GetOption("GEN_CPACK_DEBIAN_PACKAGE_PRIORITY");
   const char* debian_pkg_arch =
-                          this->GetOption("CPACK_DEBIAN_PACKAGE_ARCHITECTURE");
-  const char* maintainer =  this->GetOption("CPACK_DEBIAN_PACKAGE_MAINTAINER");
-  const char* desc =       this->GetOption("CPACK_DEBIAN_PACKAGE_DESCRIPTION");
+      this->GetOption("GEN_CPACK_DEBIAN_PACKAGE_ARCHITECTURE");
+  const char* maintainer =
+      this->GetOption("GEN_CPACK_DEBIAN_PACKAGE_MAINTAINER");
+  const char* desc =
+      this->GetOption("GEN_CPACK_DEBIAN_PACKAGE_DESCRIPTION");
 
   // optional entries
-  const char* debian_pkg_dep = this->GetOption("CPACK_DEBIAN_PACKAGE_DEPENDS");
+  const char* debian_pkg_dep =
+      this->GetOption("GEN_CPACK_DEBIAN_PACKAGE_DEPENDS");
   const char* debian_pkg_rec =
-                            this->GetOption("CPACK_DEBIAN_PACKAGE_RECOMMENDS");
+      this->GetOption("GEN_CPACK_DEBIAN_PACKAGE_RECOMMENDS");
   const char* debian_pkg_sug =
-                              this->GetOption("CPACK_DEBIAN_PACKAGE_SUGGESTS");
+      this->GetOption("GEN_CPACK_DEBIAN_PACKAGE_SUGGESTS");
   const char* debian_pkg_url =
-                              this->GetOption("CPACK_DEBIAN_PACKAGE_HOMEPAGE");
+      this->GetOption("GEN_CPACK_DEBIAN_PACKAGE_HOMEPAGE");
   const char* debian_pkg_predep =
-                    this->GetOption("CPACK_DEBIAN_PACKAGE_PREDEPENDS");
+      this->GetOption("GEN_CPACK_DEBIAN_PACKAGE_PREDEPENDS");
   const char* debian_pkg_enhances =
-                    this->GetOption("CPACK_DEBIAN_PACKAGE_ENHANCES");
+      this->GetOption("GEN_CPACK_DEBIAN_PACKAGE_ENHANCES");
   const char* debian_pkg_breaks =
-                    this->GetOption("CPACK_DEBIAN_PACKAGE_BREAKS");
+      this->GetOption("GEN_CPACK_DEBIAN_PACKAGE_BREAKS");
   const char* debian_pkg_conflicts =
-                    this->GetOption("CPACK_DEBIAN_PACKAGE_CONFLICTS");
+      this->GetOption("GEN_CPACK_DEBIAN_PACKAGE_CONFLICTS");
   const char* debian_pkg_provides =
-                    this->GetOption("CPACK_DEBIAN_PACKAGE_PROVIDES");
+      this->GetOption("GEN_CPACK_DEBIAN_PACKAGE_PROVIDES");
   const char* debian_pkg_replaces =
-                    this->GetOption("CPACK_DEBIAN_PACKAGE_REPLACES");
+      this->GetOption("GEN_CPACK_DEBIAN_PACKAGE_REPLACES");
 
     { // the scope is needed for cmGeneratedFileStream
     cmGeneratedFileStream out(ctlfilename.c_str());
@@ -399,13 +402,10 @@ int cmCPackDebGenerator::createDeb()
     out << std::endl;
     }
 
-  std::string cmd;
-  if (NULL != this->GetOption("CPACK_DEBIAN_FAKEROOT_EXECUTABLE")) {
-      cmd += this->GetOption("CPACK_DEBIAN_FAKEROOT_EXECUTABLE");
-  }
+  std::string cmd(this->GetOption("GEN_CPACK_DEBIAN_FAKEROOT_EXECUTABLE"));
 
   const char* debian_compression_type =
-      this->GetOption("CPACK_DEBIAN_COMPRESSION_TYPE");
+      this->GetOption("GEN_CPACK_DEBIAN_COMPRESSION_TYPE");
   if(!debian_compression_type)
     {
     debian_compression_type = "gzip";
@@ -440,8 +440,9 @@ int cmCPackDebGenerator::createDeb()
   // now add all directories which have to be compressed
   // collect all top level install dirs for that
   // e.g. /opt/bin/foo, /usr/bin/bar and /usr/bin/baz would give /usr and /opt
-    size_t topLevelLength = std::string(this->GetOption("WDIR")).length();
-    cmCPackLogger(cmCPackLog::LOG_DEBUG, "WDIR: \"" << this->GetOption("WDIR")
+    size_t topLevelLength = std::string(this->GetOption("GEN_WDIR")).length();
+    cmCPackLogger(cmCPackLog::LOG_DEBUG, "WDIR: \""
+          << this->GetOption("GEN_WDIR")
           << "\", length = " << topLevelLength
           << std::endl);
   std::set<std::string> installDirs;
@@ -467,7 +468,7 @@ int cmCPackDebGenerator::createDeb()
   std::string output;
     int retval = -1;
   int res = cmSystemTools::RunSingleCommand(cmd.c_str(), &output,
-      &retval, this->GetOption("WDIR"), this->GeneratorVerbose, 0);
+      &retval, this->GetOption("GEN_WDIR"), this->GeneratorVerbose, 0);
 
     if ( !res || retval )
     {
@@ -485,7 +486,7 @@ int cmCPackDebGenerator::createDeb()
     }
 
   std::string md5filename;
-    md5filename = this->GetOption("WDIR");
+    md5filename = this->GetOption("GEN_WDIR");
   md5filename += "/md5sums";
 
     { // the scope is needed for cmGeneratedFileStream
@@ -523,14 +524,10 @@ int cmCPackDebGenerator::createDeb()
     // Do not end the md5sum file with yet another (invalid)
     }
 
-    cmd = "";
-    if (NULL != this->GetOption("CPACK_DEBIAN_FAKEROOT_EXECUTABLE"))
-      {
-      cmd = this->GetOption("CPACK_DEBIAN_FAKEROOT_EXECUTABLE");
-      }
+    cmd = this->GetOption("GEN_CPACK_DEBIAN_FAKEROOT_EXECUTABLE");
     cmd += cmake_tar + "tar czf control.tar.gz ./control ./md5sums";
     const char* controlExtra =
-      this->GetOption("CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA");
+      this->GetOption("GEN_CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA");
   if( controlExtra )
     {
     std::vector<std::string> controlExtraList;
@@ -540,7 +537,7 @@ int cmCPackDebGenerator::createDeb()
       {
       std::string filenamename =
         cmsys::SystemTools::GetFilenameName(*i);
-      std::string localcopy = this->GetOption("WDIR");
+      std::string localcopy = this->GetOption("GEN_WDIR");
       localcopy += "/";
       localcopy += filenamename;
       // if we can copy the file, it means it does exist, let's add it:
@@ -554,7 +551,7 @@ int cmCPackDebGenerator::createDeb()
       }
     }
   res = cmSystemTools::RunSingleCommand(cmd.c_str(), &output,
-      &retval, this->GetOption("WDIR"), this->GeneratorVerbose, 0);
+      &retval, this->GetOption("GEN_WDIR"), this->GeneratorVerbose, 0);
 
     if ( !res || retval )
     {
@@ -575,7 +572,7 @@ int cmCPackDebGenerator::createDeb()
   // since debian packages require BSD ar (most Linux distros and even
   // FreeBSD and NetBSD ship GNU ar) we use a copy of OpenBSD ar here.
   std::vector<std::string> arFiles;
-    std::string topLevelString = this->GetOption("WDIR");
+    std::string topLevelString = this->GetOption("GEN_WDIR");
   topLevelString += "/";
   arFiles.push_back(topLevelString + "debian-binary");
   arFiles.push_back(topLevelString + "control.tar.gz");

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

Summary of changes:
 Modules/CPackDeb.cmake               |  419 ++++++++++++++++++----------------
 Source/CPack/cmCPackDebGenerator.cxx |   75 +++---
 2 files changed, 259 insertions(+), 235 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list