2010/2/12 Hendrik Sattler <[email protected]>:
>>
>> Did you dig the mailing list I think the "file owner" part has been
>> discussed already.
>> Concerning the dpkg-shlibs may be it's worth a feature request?
>> And may be even a contribution?
>> The code of Deb Generator is in:
>> CMake/Source/CPack/cmCPackDebGenerator.cxx
>
> Follow to that: can the cpack generators define their own package names? The
> current generators don't. Would be easy to implement, though.
>
> Some bad examples for current file names:
> TGZ/ZIP:
> ends with e.g. _Linux.tar.gz which is totally bogus because a binary package
> for "Linux" is not specific enough. It should at least contain the
> architecture.
> It would not be wrong to stick to the conventions out there. GCC's
> -dumpmachine is a good start on e.g. Linux.
>
> STGZ:
> Dump the "-Source" from STGZ (tarballs without mentioned architecture are
> usually source tarballs) or make it lower-case, at least.
>
> DEB:
> the file name is completely diffent from the standard naming of debian
> packages. Suffers from the same problem as TGZ generator. Additionally, the
> internal package description contains the right values from the variables
> but the generator cannot create the right file name from that :-(
>
> Additionally, .tar.gz files and .deb are usually all lower-case, not
> mixed-case.
> I wouldn't mind being able to choose the filenames in CMakeLists.txt files,
> myself. Is this actually possible except differing between
> source/non-source? However, the defaults need to be better, too.
For binary package you can set
CPACK_PACKAGE_FILE_NAME
in your CMakeLists.txt.
I personnally do use:
SET(CPACK_PACKAGE_FILE_NAME
"${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_BUILD_TYPE}-${CPACK_SYSTEM_NAME}")
with customely modified CPACK_SYSTEM_NAME with this (used before the
previous line)
the "SystemSpecificInformations.cmake" is attached to this mail:
include(SystemSpecificInformations)
IF (SPECIFIC_COMPILER_NAME)
SET(CPACK_SYSTEM_NAME
${SPECIFIC_SYSTEM_VERSION_NAME}-${SPECIFIC_COMPILER_NAME})
ELSE (SPECIFIC_COMPILER_NAME)
SET(CPACK_SYSTEM_NAME ${SPECIFIC_SYSTEM_VERSION_NAME})
ENDIF(SPECIFIC_COMPILER_NAME)
For Source package you'll have to
SET(CPACK_SOURCE_PACKAGE_FILE_NAME ..
Now using that some problem still remain:
http://public.kitware.com/Bug/view.php?id=9900
http://public.kitware.com/Bug/view.php?id=7645
--
Erk
Membre de l'April - « promouvoir et défendre le logiciel libre » -
http://www.april.org
# define a set of string with may-be useful readable name
# this file is meant to be included in a CMakeLists.txt
# not as a standalone CMake script
set(SPECIFIC_COMPILER_NAME "")
set(SPECIFIC_SYSTEM_VERSION_NAME "")
if(WIN32)
# information taken from
# http://www.codeguru.com/cpp/w-p/system/systeminformation/article.php/c8973/
# Win9x series
if(CMAKE_SYSTEM_VERSION MATCHES "4.0")
set(SPECIFIC_SYSTEM_VERSION_NAME "Win95")
endif(CMAKE_SYSTEM_VERSION MATCHES "4.0")
if(CMAKE_SYSTEM_VERSION MATCHES "4.10")
set(SPECIFIC_SYSTEM_VERSION_NAME "Win98")
endif(CMAKE_SYSTEM_VERSION MATCHES "4.10")
if(CMAKE_SYSTEM_VERSION MATCHES "4.90")
set(SPECIFIC_SYSTEM_VERSION_NAME "WinME")
endif(CMAKE_SYSTEM_VERSION MATCHES "4.90")
# WinNTyyy series
if(CMAKE_SYSTEM_VERSION MATCHES "3.0")
set(SPECIFIC_SYSTEM_VERSION_NAME "WinNT351")
endif(CMAKE_SYSTEM_VERSION MATCHES "3.0")
if(CMAKE_SYSTEM_VERSION MATCHES "4.1")
set(SPECIFIC_SYSTEM_VERSION_NAME "WinNT4")
endif(CMAKE_SYSTEM_VERSION MATCHES "4.1")
# Win2000/XP series
if(CMAKE_SYSTEM_VERSION MATCHES "5.0")
set(SPECIFIC_SYSTEM_VERSION_NAME "Win2000")
endif(CMAKE_SYSTEM_VERSION MATCHES "5.0")
if(CMAKE_SYSTEM_VERSION MATCHES "5.1")
set(SPECIFIC_SYSTEM_VERSION_NAME "WinXP")
endif(CMAKE_SYSTEM_VERSION MATCHES "5.1")
if(CMAKE_SYSTEM_VERSION MATCHES "5.2")
set(SPECIFIC_SYSTEM_VERSION_NAME "Win2003")
endif(CMAKE_SYSTEM_VERSION MATCHES "5.2")
# WinVista/7 series
if(CMAKE_SYSTEM_VERSION MATCHES "6.0")
set(SPECIFIC_SYSTEM_VERSION_NAME "WinVISTA")
endif(CMAKE_SYSTEM_VERSION MATCHES "6.0")
if(CMAKE_SYSTEM_VERSION MATCHES "6.1")
set(SPECIFIC_SYSTEM_VERSION_NAME "Win7")
endif(CMAKE_SYSTEM_VERSION MATCHES "6.1")
# Compilers
# taken from http://predef.sourceforge.net/precomp.html#sec34
IF (MSVC)
if(MSVC_VERSION EQUAL 1200)
set(SPECIFIC_COMPILER_NAME "MSVC-6.0")
endif(MSVC_VERSION EQUAL 1200)
if(MSVC_VERSION EQUAL 1300)
set(SPECIFIC_COMPILER_NAME "MSVC-7.0")
endif(MSVC_VERSION EQUAL 1300)
if(MSVC_VERSION EQUAL 1310)
set(SPECIFIC_COMPILER_NAME "MSVC-7.1-2003") #Visual Studio 2003
endif(MSVC_VERSION EQUAL 1310)
if(MSVC_VERSION EQUAL 1400)
set(SPECIFIC_COMPILER_NAME "MSVC-8.0-2005") #Visual Studio 2005
endif(MSVC_VERSION EQUAL 1400)
if(MSVC_VERSION EQUAL 1500)
set(SPECIFIC_COMPILER_NAME "MSVC-9.0-2008") #Visual Studio 2008
endif(MSVC_VERSION EQUAL 1500)
endif(MSVC)
IF (MINGW)
set(SPECIFIC_COMPILER_NAME "MinGW")
endif(MINGW)
IF (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
set(SPECIFIC_SYSTEM_VERSION_NAME "${SPECIFIC_SYSTEM_VERSION_NAME}-x86_64")
endif(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
endif(WIN32)
if(UNIX)
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
set(SPECIFIC_SYSTEM_VERSION_NAME "${CMAKE_SYSTEM_NAME}")
if(EXISTS "/etc/issue")
set(LINUX_NAME "")
file(READ "/etc/issue" LINUX_ISSUE)
# Fedora case
if(LINUX_ISSUE MATCHES "Fedora")
string(REGEX MATCH "release ([0-9]+)" FEDORA "${LINUX_ISSUE}")
set(LINUX_NAME "FC${CMAKE_MATCH_1}")
endif(LINUX_ISSUE MATCHES "Fedora")
# Ubuntu case
if(LINUX_ISSUE MATCHES "Ubuntu")
string(REGEX MATCH "buntu ([0-9]+\\.[0-9]+)" UBUNTU "${LINUX_ISSUE}")
set(LINUX_NAME "Ubuntu_${CMAKE_MATCH_1}")
endif(LINUX_ISSUE MATCHES "Ubuntu")
# Debian case
if(LINUX_ISSUE MATCHES "Debian")
string(REGEX MATCH "Debian .*ux ([a-zA-Z]*/?[a-zA-Z]*) .*" DEBIAN "${LINUX_ISSUE}")
set(LINUX_NAME "Debian_${CMAKE_MATCH_1}")
string(REPLACE "/" "_" LINUX_NAME ${LINUX_NAME})
endif(LINUX_ISSUE MATCHES "Debian")
# Open SuSE case
if(LINUX_ISSUE MATCHES "SUSE")
string(REGEX MATCH "SUSE ([0-9]+\\.[0-9]+)" SUSE "${LINUX_ISSUE}")
set(LINUX_NAME "openSUSE_${CMAKE_MATCH_1}")
string(REPLACE "/" "_" LINUX_NAME ${LINUX_NAME})
endif(LINUX_ISSUE MATCHES "SUSE")
# Mandriva case
# TODO
if(LINUX_NAME)
set(SPECIFIC_SYSTEM_VERSION_NAME "${CMAKE_SYSTEM_NAME}-${LINUX_NAME}")
endif(LINUX_NAME)
endif(EXISTS "/etc/issue")
endif(CMAKE_SYSTEM_NAME MATCHES "Linux")
set(SPECIFIC_SYSTEM_VERSION_NAME "${SPECIFIC_SYSTEM_VERSION_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
set(SPECIFIC_COMPILER_NAME "")
endif(UNIX)
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake