Page MenuHomePhabricator

File names of installers should contain architecture
Closed, ResolvedPublic

Description

CPack generated installers should show 32bit or 64bit in the filename.

Event Timeline

Installer name can be set by [1]:

set(CPACK_PACKAGE_FILE_NAME "whatever")
before
include(CPack)

if you don't CPack provides a default value:

${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}

This defaults to [2]:

  1. CPACK_SYSTEM_NAME - System name, defaults to the value of
  2. ${CMAKE_SYSTEM_NAME}.

SET(cpack_system_name ${CMAKE_SYSTEM_NAME})
IF(${
cpack_system_name} MATCHES Windows)

IF(CMAKE_CL_64)
  SET(__cpack_system_name win64)
ELSE(CMAKE_CL_64)
  SET(__cpack_system_name win32)
ENDIF(CMAKE_CL_64)

ENDIF(${cpack_system_name} MATCHES Windows)
cpack_set_if_not_set(CPACK_SYSTEM_NAME "${
cpack_system_name}")

[...]

cpack_set_if_not_set(CPACK_PACKAGE_FILE_NAME

"${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}")

Which in turn corresponds to[3]:

CMAKE_SYSTEM

the complete system name, e.g. "Linux-2.4.22", "FreeBSD-5.4-RELEASE" or "Windows 5.1"

CMAKE_SYSTEM_NAME

the short system name, e.g. "Linux", "FreeBSD" or "Windows"

The CMAKE_SYSTEM variable is set during cmake of the project, for example for Windows and Linux[4]:

Win

SET(CMAKE_SYSTEM "Windows-6.0")
SET(CMAKE_SYSTEM_NAME "Windows")
SET(CMAKE_SYSTEM_VERSION "6.0")
SET(CMAKE_SYSTEM_PROCESSOR "x86")

SET(CMAKE_HOST_SYSTEM "Windows-6.0")
SET(CMAKE_HOST_SYSTEM_NAME "Windows")
SET(CMAKE_HOST_SYSTEM_VERSION "6.0")
SET(CMAKE_HOST_SYSTEM_PROCESSOR "x86")

SET(CMAKE_CROSSCOMPILING "FALSE")

SET(CMAKE_SYSTEM_LOADED 1)

Linux 32

SET(CMAKE_SYSTEM "Linux-2.6.38-15-generic")
SET(CMAKE_SYSTEM_NAME "Linux")
SET(CMAKE_SYSTEM_VERSION "2.6.38-15-generic")
SET(CMAKE_SYSTEM_PROCESSOR "i686")

SET(CMAKE_HOST_SYSTEM "Linux-2.6.38-15-generic")
SET(CMAKE_HOST_SYSTEM_NAME "Linux")
SET(CMAKE_HOST_SYSTEM_VERSION "2.6.38-15-generic")
SET(CMAKE_HOST_SYSTEM_PROCESSOR "i686")

SET(CMAKE_CROSSCOMPILING "FALSE")

SET(CMAKE_SYSTEM_LOADED 1)

Linux 64

SET(CMAKE_SYSTEM "Linux-3.2.0-25-generic") SET(CMAKE_SYSTEM_NAME "Linux") SET(CMAKE_SYSTEM_VERSION "3.2.0-25-generic") SET(CMAKE_SYSTEM_PROCESSOR "x86_64")

SET(CMAKE_HOST_SYSTEM "Linux-3.2.0-25-generic") SET(CMAKE_HOST_SYSTEM_NAME "Linux") SET(CMAKE_HOST_SYSTEM_VERSION "3.2.0-25-generic") SET(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")

SET(CMAKE_CROSSCOMPILING "FALSE")

SET(CMAKE_SYSTEM_LOADED 1)

[1] http://cmake.3232098.n2.nabble.com/Cpack-and-output-file-naming-td7580294.html
[2] CPack.cmake in the CMake directory
[3] http://www.cmake.org/Wiki/CMake_Useful_Variables
[4] CMakeSystem.cmake im build tree

First suggested solution has been pushed in branch

bug-12274-extend-installer-name-by-architecture-for-mitk-workbench-installers

Was tested on Windows 64 Bit, Linux 64 Bit and Mac and worked for those systems.

[c5389d]: Merge branch 'bug-12274-extend-installer-name-by-architecture-for-mitk

Merged commits:

2012-09-05 16:06:11 Caspar Goch [e0d634]
Added configuration file for mitk workbench CPack