Skip to content

Commit

Permalink
Refactor CPack [ci skip]
Browse files Browse the repository at this point in the history
  • Loading branch information
vigsterkr committed Oct 26, 2014
1 parent 9aecdc2 commit bc1e1b3
Show file tree
Hide file tree
Showing 13 changed files with 141 additions and 93 deletions.
23 changes: 2 additions & 21 deletions CMakeLists.txt
Expand Up @@ -26,8 +26,6 @@ if(CCACHE_FOUND AND ENABLE_CCACHE)
SET(CMAKE_CXX_FLAGS "${CCACHE_FLAGS} ${CMAKE_CXX_FLAGS}")
endif()

SET(CPACK_PACKAGE_CONTACT shogun@shogun-toolbox.org)

################# VARIABLES #####################
SET(DEFINES "SWIG_TYPE_TABLE=shogun;SHOGUN")
SET(INCLUDES "")
Expand Down Expand Up @@ -648,7 +646,7 @@ ELSE()
ENDIF()

# OpenCL/ViennaCL detection
FIND_PACKAGE(ViennaCL ${VIENNACL_VERSION_MINIMUM})
#FIND_PACKAGE(ViennaCL ${VIENNACL_VERSION_MINIMUM})
IF (VIENNACL_FOUND)
SET(HAVE_VIENNACL 1)
LIST(APPEND DEFINES HAVE_VIENNACL)
Expand Down Expand Up @@ -1194,24 +1192,7 @@ IF(DOXYGEN_FOUND)
ENDIF()
ENDIF()

# general cpack settings
set(CPACK_PACKAGE_NAME "shogun")
set(CPACK_PACKAGE_VENDOR "shogun")
#SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/README")
#SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/src/COPYRIGHT")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Shogun Machine Learning Toolbox")
set(CPACK_PACKAGE_VERSION ${VERSION})
set(CPACK_PACKAGE_VERSION_MAJOR ${SHOGUN_VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${SHOGUN_VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${SHOGUN_VERSION_PATCH})

# debian package settings
set(CPACK_DEB_COMPONENT_INSTALL ON)

# rpm package settings
set(CPACK_RPM_COMPONENT_INSTALL ON)

INCLUDE(CPack)
include(ShogunPackaging)

message(STATUS "===================================================================================================================")
message(STATUS "Summary of Configuration Variables")
Expand Down
139 changes: 139 additions & 0 deletions cmake/ShogunPackaging.cmake
@@ -0,0 +1,139 @@
SET(CPACK_PACKAGE_CONTACT shogun@shogun-toolbox.org)

# general cpack settings
set(CPACK_PACKAGE_NAME "shogun")
set(CPACK_PACKAGE_VENDOR "shogun")
#set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/README")
#set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/src/COPYRIGHT")
set(CPACK_PACKAGE_VERSION ${VERSION})
set(CPACK_PACKAGE_VERSION_MAJOR ${SHOGUN_VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${SHOGUN_VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${SHOGUN_VERSION_PATCH})
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Shogun Machine Learning Toolbox")
set(CPACK_PACKAGE_DESCRIPTION "Large Scale Machine Learning Toolbox
SHOGUN - is a new machine learning toolbox with focus on large scale kernel
methods and especially on Support Vector Machines (SVM) with focus to
bioinformatics. It provides a generic SVM object interfacing to several
different SVM implementations. Each of the SVMs can be combined with a variety
of the many kernels implemented. It can deal with weighted linear combination
of a number of sub-kernels, each of which not necessarily working on the same
domain, where an optimal sub-kernel weighting can be learned using Multiple
Kernel Learning. Apart from SVM 2-class classification and regression
problems, a number of linear methods like Linear Discriminant Analysis (LDA),
Linear Programming Machine (LPM), (Kernel) Perceptrons and also algorithms to
train hidden markov models are implemented. The input feature-objects can be
dense, sparse or strings and of type int/short/double/char and can be
converted into different feature types. Chains of preprocessors (e.g.
substracting the mean) can be attached to each feature object allowing for
on-the-fly pre-processing.
.
SHOGUN comes in different flavours, a stand-a-lone version and also with
interfaces to Matlab(tm), R, Octave, Readline and Python. This is the core
library with the machine learning methods and ui helpers all interfaces are
based on.")
SET(CPACK_STRIP_FILES ON)

# Heuristics to figure out cpack generator
set(CPACK_GENERATOR "TGZ")
if(MSVC)
set(CPACK_GENERATOR "NSIS")
set(CPACK_NSIS_MODIFY_PATH ON)
elseif(APPLE)
set(CPACK_GENERATOR "PackageMaker")
set(CPACK_OSX_PACKAGE_VERSION "${${UPPER_PROJECT_NAME}_OSX_VERSION}")
elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
if(EXISTS "/etc/issue")
file(READ "/etc/issue" LINUX_ISSUE)
if(LINUX_ISSUE MATCHES "(Fedora)|(SUSE)|(Mandriva)")
set(CPACK_GENERATOR "RPM")
elseif(LINUX_ISSUE MATCHES "(Ubuntu)|(Debian)")
set(CPACK_GENERATOR "DEB")
endif()
endif()
endif()

if(CPACK_GENERATOR STREQUAL "DEB")
# debian package settings
set(CPACK_DEB_COMPONENT_INSTALL ON)
set(CPACK_COMPONENTS_IGNORE_GROUPS ON)

set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${CPACK_PACKAGE_VERSION}_${CMAKE_SYSTEM_PROCESSOR}")
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${CPACK_PACKAGE_VERSION}-${OPENCV_PACKAGE_ARCH_SUFFIX}")
set(CPACK_DEBIAN_PACKAGE_SECTION "science")

set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6, libstdc++6, libsnappy1, zlib1g, liblzma5, libbz2-1.0, liblzo2-2, libxml2, libhdf5-8, libnlopt0, liblapack3, libglpk36, libcurl3-gnutls, libarpack2")

set(CPACK_COMPONENT_libraries_DISPLAY_NAME "lib${CMAKE_PROJECT_NAME}${LIBSHOGUNSO}")
set(CPACK_COMPONENT_headers_DISPLAY_NAME "lib${CMAKE_PROJECT_NAME}-dev")
set(CPACK_COMPONENT_python_DISPLAY_NAME "python-${CMAKE_PROJECT_NAME}")
elseif(CPACK_GENERATOR STREQUAL "RPM")
# rpm package settings
set(CPACK_RPM_COMPONENT_INSTALL ON)
set(CPACK_COMPONENTS_IGNORE_GROUPS ON)

set(CPACK_RPM_PACKAGE_NAME "shogun")
set(CPACK_RPM_PACKAGE_REQUIRES "snappy, libxml2, NLopt, xz, lapack, glpk, libcurl, bzip2, arpack, ColPack")
set(CPACK_PACKAGE_FILE_NAME "${CPACK_RPM_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}.${CMAKE_SYSTEM_PROCESSOR}")

set(CPACK_COMPONENT_libraries_DISPLAY_NAME "${CMAKE_PROJECT_NAME}")
set(CPACK_COMPONENT_headers_DISPLAY_NAME "${CMAKE_PROJECT_NAME}-devel")
set(CPACK_COMPONENT_python_DISPLAY_NAME "python-${CMAKE_PROJECT_NAME}")
else()
set(CPACK_COMPONENT_libraries_DISPLAY_NAME "Shogun libraries")
set(CPACK_COMPONENT_headers_DISPLAY_NAME "C++ headers")
set(CPACK_COMPONENT_python_DISPLAY_NAME "Python interface")
set(CPACK_COMPONENT_r_DISPLAY_NAME "R interface")
set(CPACK_COMPONENT_ruby_DISPLAY_NAME "Ruby interface")
set(CPACK_COMPONENT_csharp_DISPLAY_NAME "C# Interface")
set(CPACK_COMPONENT_java_DISPLAY_NAME "Java interface")
set(CPACK_COMPONENT_octave_DISPLAY_NAME "OCTAVE interface")
set(CPACK_COMPONENT_lua_DISPLAY_NAME "Lua interface")
endif()

set(CPACK_COMPONENT_libraries_DESCRIPTION "Shogun Machine Learning Toolbox")
set(CPACK_COMPONENT_libraries_GROUP "Runtime")
set(CPACK_COMPONENT_libraries_REQUIRED On)

set(CPACK_COMPONENT_headers_DESCRIPTION "Development files for Shogun Machine Learning Toolbox")
set(CPACK_COMPONENT_headers_GROUP "Development")

set(CPACK_COMPONENT_GROUP_DEVELOPMENT_EXPANDED ON)
set(CPACK_COMPONENT_GROUP_DEVELOPMENT_DESCRIPTION
"All of the packages that's required for developing with Shogun")

set(CPACK_COMPONENT_headers_DEPENDS libraries)

set(CPACK_COMPONENT_python_DESCRIPTION "Python modular interface of Shogun")
set(CPACK_COMPONENT_python_GROUP "Runtime")
set(CPACK_COMPONENT_python_DEPENDS libraries)

set(CPACK_COMPONENT_r_DESCRIPTION "R modular interface of Shogun")
set(CPACK_COMPONENT_r_GROUP "Runtime")
set(CPACK_COMPONENT_r_DEPENDS libraries)

set(CPACK_COMPONENT_ruby_DESCRIPTION "Ruby modular interface of Shogun")
set(CPACK_COMPONENT_ruby_GROUP "Runtime")
set(CPACK_COMPONENT_ruby_DEPENDS libraries)

set(CPACK_COMPONENT_csharp_DESCRIPTION "C# modular interface of Shogun")
set(CPACK_COMPONENT_csharp_GROUP "Runtime")
set(CPACK_COMPONENT_csharp_DEPENDS libraries)

set(CPACK_COMPONENT_java_DESCRIPTION "Java modular interface of Shogun")
set(CPACK_COMPONENT_java_GROUP "Runtime")
set(CPACK_COMPONENT_java_DEPENDS libraries)

set(CPACK_COMPONENT_octave_DESCRIPTION "OCTAVE modular interface of Shogun")
set(CPACK_COMPONENT_octave_GROUP "Runtime")
set(CPACK_COMPONENT_octave_DEPENDS libraries)

set(CPACK_COMPONENT_lua_DESCRIPTION "Lua modular interface of Shogun")
set(CPACK_COMPONENT_lua_GROUP "Runtime")
set(CPACK_COMPONENT_lua_DEPENDS libraries)

set(CPACK_COMPONENT_cmdline_DISPLAY_NAME "Command Line Interface")
set(CPACK_COMPONENT_cmdline_DESCRIPTION "Command Line interface of Shogun")
set(CPACK_COMPONENT_cmdline_GROUP "Runtime")
set(CPACK_COMPONENT_cmdline_DEPENDS libraries)

INCLUDE(CPack)
2 changes: 0 additions & 2 deletions examples/undocumented/cmdline_static/CMakeLists.txt
Expand Up @@ -10,5 +10,3 @@ ENDFOREACH()
INSTALL(FILES ${EXAMPLES}
DESTINATION share/shogun/examples/cmdline
COMPONENT cmdline-examples)

SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} cmdline-examples PARENT_SCOPE)
2 changes: 0 additions & 2 deletions examples/undocumented/libshogun/CMakeLists.txt
Expand Up @@ -136,5 +136,3 @@ ENDFOREACH()
INSTALL(PROGRAMS ${INSTALL_EXAMPLES}
DESTINATION share/shogun/examples/libshogun
COMPONENT libshogun-examples)

SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} libshogun-examples PARENT_SCOPE)
6 changes: 0 additions & 6 deletions src/interfaces/cmdline_static/CMakeLists.txt
Expand Up @@ -7,9 +7,3 @@ INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/cmdline_static
DESTINATION bin
COMPONENT cmdline
RENAME shogun)

set(CPACK_COMPONENT_CMDLINE_DISPLAY_NAME "Command Line Interface" PARENT_SCOPE)
set(CPACK_COMPONENT_CMDLINE_DESCRIPTION "Command Line interface of Shogun" PARENT_SCOPE)
set(CPACK_COMPONENT_CMDLINE_GROUP "Runtime" PARENT_SCOPE)
set(CPACK_COMPONENT_CMDLINE_DEPENDS libraries PARENT_SCOPE)
SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} cmdline PARENT_SCOPE)
6 changes: 0 additions & 6 deletions src/interfaces/csharp_modular/CMakeLists.txt
Expand Up @@ -15,9 +15,3 @@ INSTALL(TARGETS csharp_modular
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/modshogun.dll
DESTINATION lib/cli/shogun
COMPONENT csharp)

set(CPACK_COMPONENT_CSHARP_DISPLAY_NAME "C# Interface" PARENT_SCOPE)
set(CPACK_COMPONENT_CSHARP_DESCRIPTION "C# modular interface of Shogun" PARENT_SCOPE)
set(CPACK_COMPONENT_CSHARP_GROUP "Runtime" PARENT_SCOPE)
set(CPACK_COMPONENT_CSHARP_DEPENDS libraries PARENT_SCOPE)
SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} csharp PARENT_SCOPE)
6 changes: 0 additions & 6 deletions src/interfaces/java_modular/CMakeLists.txt
Expand Up @@ -30,9 +30,3 @@ SET(SHOGUN_JAR "${CMAKE_CURRENT_BINARY_DIR}/shogun.jar" PARENT_SCOPE)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/shogun.jar
DESTINATION share/java
COMPONENT java)

set(CPACK_COMPONENT_JAVA_DISPLAY_NAME "Java interface" PARENT_SCOPE)
set(CPACK_COMPONENT_JAVA_DESCRIPTION "Java modular interface of Shogun" PARENT_SCOPE)
set(CPACK_COMPONENT_JAVA_GROUP "Runtime" PARENT_SCOPE)
set(CPACK_COMPONENT_JAVA_DEPENDS libraries PARENT_SCOPE)
SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} java PARENT_SCOPE)
6 changes: 0 additions & 6 deletions src/interfaces/lua_modular/CMakeLists.txt
Expand Up @@ -13,9 +13,3 @@ STRING(REGEX REPLACE "([0-9]*.[0-9]*).[0-9]*" "${LIB_INSTALL_DIR}/lua/\\1" LUA_E
INSTALL(TARGETS lua_modular
LIBRARY DESTINATION ${LUA_EXTENSION_DIR}
COMPONENT lua)

set(CPACK_COMPONENT_LUA_DISPLAY_NAME "Lua interface" PARENT_SCOPE)
set(CPACK_COMPONENT_LUA_DESCRIPTION "Lua modular interface of Shogun" PARENT_SCOPE)
set(CPACK_COMPONENT_LUA_GROUP "Runtime" PARENT_SCOPE)
set(CPACK_COMPONENT_LUA_DEPENDS libraries PARENT_SCOPE)
SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} lua PARENT_SCOPE)
6 changes: 0 additions & 6 deletions src/interfaces/octave_modular/CMakeLists.txt
Expand Up @@ -9,9 +9,3 @@ SET(OCTAVE_MODULAR_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR} PARENT_SCOPE)
install (TARGETS octave_modular
DESTINATION ${OCTAVE_OCT_LOCAL_API_FILE_DIR}/shogun
COMPONENT octave)

set(CPACK_COMPONENT_OCTAVE_DISPLAY_NAME "OCTAVE interface" PARENT_SCOPE)
set(CPACK_COMPONENT_OCTAVE_DESCRIPTION "OCTAVE modular interface of Shogun" PARENT_SCOPE)
set(CPACK_COMPONENT_OCTAVE_GROUP "Runtime" PARENT_SCOPE)
set(CPACK_COMPONENT_OCTAVE_DEPENDS libraries PARENT_SCOPE)
SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} octave PARENT_SCOPE)
7 changes: 0 additions & 7 deletions src/interfaces/python_modular/CMakeLists.txt
Expand Up @@ -67,10 +67,3 @@ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/main_init.py
DESTINATION ${PYTHON_PACKAGES_PATH}/shogun
COMPONENT python
RENAME __init__.py)

set(CPACK_COMPONENT_PYTHON_DISPLAY_NAME "Python interface" PARENT_SCOPE)
set(CPACK_COMPONENT_PYTHON_DESCRIPTION "Python modular interface of Shogun" PARENT_SCOPE)
set(CPACK_COMPONENT_PYTHON_GROUP "Runtime" PARENT_SCOPE)
set(CPACK_COMPONENT_PYTHON_DEPENDS libraries PARENT_SCOPE)
SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} python PARENT_SCOPE)

6 changes: 0 additions & 6 deletions src/interfaces/r_modular/CMakeLists.txt
Expand Up @@ -22,9 +22,3 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/modshogun.RData
install(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}/${R_COMPONENT_LIB_PATH}/shogun/Meta)")

install(CODE "EXECUTE_PROCESS(COMMAND \$ENV{DESTDIR}/${CMAKE_SOURCE_DIR}/src/.r-install.sh ${R_COMPONENT_LIB_PATH} shogun so saveRDS WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})")

set(CPACK_COMPONENT_R_DISPLAY_NAME "R interface" PARENT_SCOPE)
set(CPACK_COMPONENT_R_DESCRIPTION "R modular interface of Shogun" PARENT_SCOPE)
set(CPACK_COMPONENT_R_GROUP "Runtime" PARENT_SCOPE)
set(CPACK_COMPONENT_R_DEPENDS libraries PARENT_SCOPE)
SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} r PARENT_SCOPE)
6 changes: 0 additions & 6 deletions src/interfaces/ruby_modular/CMakeLists.txt
Expand Up @@ -13,9 +13,3 @@ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/modshogun.so
DESTINATION ${RUBY_SITE_ARCH_DIR}
COMPONENT ruby
RENAME modshogun${EXT_LIB_SWIG_RUBY_MODULAR})

set(CPACK_COMPONENT_RUBY_DISPLAY_NAME "Ruby interface" PARENT_SCOPE)
set(CPACK_COMPONENT_RUBY_DESCRIPTION "Ruby modular interface of Shogun" PARENT_SCOPE)
set(CPACK_COMPONENT_RUBY_GROUP "Runtime" PARENT_SCOPE)
set(CPACK_COMPONENT_RUBY_DEPENDS libraries PARENT_SCOPE)
SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} ruby PARENT_SCOPE)
19 changes: 0 additions & 19 deletions src/shogun/CMakeLists.txt
Expand Up @@ -123,7 +123,6 @@ INSTALL(DIRECTORY ./
COMPONENT headers
FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp"
PATTERN ".settings" EXCLUDE)
SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} headers)

IF (LIB_INSTALL_DIR)
SET(SHOGUN_LIB_INSTALL ${LIB_INSTALL_DIR})
Expand All @@ -135,21 +134,3 @@ INSTALL(TARGETS shogun
ARCHIVE DESTINATION ${SHOGUN_LIB_INSTALL}
LIBRARY DESTINATION ${SHOGUN_LIB_INSTALL}
COMPONENT libraries)

SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} libraries PARENT_SCOPE)

# cpack
set(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "Libraries" PARENT_SCOPE)
set(CPACK_COMPONENT_LIBRARIES_DESCRIPTION "Shogun libraries" PARENT_SCOPE)
set(CPACK_COMPONENT_LIBRARIES_GROUP "Runtime" PARENT_SCOPE)

set(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "C++ Headers" PARENT_SCOPE)
set(CPACK_COMPONENT_HEADERS_DESCRIPTION "C/C++ header files for Shogun" PARENT_SCOPE)
set(CPACK_COMPONENT_HEADERS_GROUP "Development" PARENT_SCOPE)

set(CPACK_COMPONENT_GROUP_DEVELOPMENT_EXPANDED ON PARENT_SCOPE)
set(CPACK_COMPONENT_GROUP_DEVELOPMENT_DESCRIPTION
"All of the packages that's required for developing with Shogun" PARENT_SCOPE)

set(CPACK_COMPONENT_HEADERS_DEPENDS libraries PARENT_SCOPE)

0 comments on commit bc1e1b3

Please sign in to comment.