[cmake-developers] [CMake 0014944]: Add more control over individual components in a component-based configuration

Mantis Bug Tracker mantis at public.kitware.com
Thu May 29 06:47:01 EDT 2014


The following issue has been SUBMITTED. 
====================================================================== 
http://www.cmake.org/Bug/view.php?id=14944 
====================================================================== 
Reported By:                Thierry Valentin
Assigned To:                
====================================================================== 
Project:                    CMake
Issue ID:                   14944
Category:                   CPack
Reproducibility:            always
Severity:                   minor
Priority:                   normal
Status:                     new
====================================================================== 
Date Submitted:             2014-05-29 06:47 EDT
Last Modified:              2014-05-29 06:47 EDT
====================================================================== 
Summary:                    Add more control over individual components in a
component-based configuration
Description: 
Hello

I'm in the following situation:
I use Jenkins to build software binaries for several platforms. Each platform is
built in a in separate job. I also need to produce the software documentation
which is common to all platforms, so I only need a single job to build it.

I would like to configure the binary packages as follows:
- the package name should include the platform name, e.g:
MyProject-1.0.0-Linux64-runtime.tar.gz
- the package includes the toplevel directory, such that uncompressing the
package gives a directory MyProject-1.0.0/...

And I would like to configure the documentation packages as follows:
- the package name should NOT include the platform name, e.g:
MyProject-1.0.0-doc-user.tar.gz
- the package does NOT include the toplevel directory, such that uncompressing
the package gives the destination directory as specified in the INSTALL(FILES
... DESTINATION /doc/user) command in the CMakeLists.txt

This is currently impossible with the current version of CPack. But it could be
possible if we could specify PACKAGE_FILE_NAME and INCLUDE_TOPLEVEL_DIRECTORY at
the component level, as explained below:

# List of components:
set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
set(CPACK_COMPONENTS_GROUPING "IGNORE")
set(CPACK_COMPONENTS_ALL runtime doc-user)

# Default settings:
set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION})
set(CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY true)

# Per component settings:
set(CPACK_COMPONENT_RUNTIME_DISPLAY_NAME "Application Runtime")
set(CPACK_COMPONENT_RUNTIME_PACKAGE_FILE_NAME
${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME})

set(CPACK_COMPONENT_DOC-USER_DISPLAY_NAME "Application Documentation")
set(CPACK_COMPONENT_DOC-USER_INCLUDE_TOPLEVEL_DIRECTORY OFF)


Thanks


====================================================================== 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2014-05-29 06:47 Thierry ValentinNew Issue                                    
======================================================================



More information about the cmake-developers mailing list