source: tol/installer/linux/CMakeLists.txt @ 84e5b2ac

1941-docker-image-to-testdevel
Last change on this file since 84e5b2ac was 84e5b2ac, checked in by Jorge Pérez <josp.jorge@…>, 10 years ago

refs #1950, completando dependencias de CentOS

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@7449 be4846ae-f051-483a-831f-b64e7d08527f

  • Property mode set to 100644
File size: 10.2 KB
Line 
1
2macro(subdirlist result dir)
3  set(ExtraMacroArgs ${ARGN})
4  message("GLOB children RELATIVE ${dir} ${dir}/*")
5  file(GLOB children RELATIVE ${dir} ${dir}/*)
6  set(dirlist "")
7  foreach(child ${children})
8    if(IS_DIRECTORY ${dir}/${child})
9      if(ExtraMacroArgs STREQUAL RELATIVE)
10        list(APPEND dirlist ${child})
11      else(ExtraMacroArgs STREQUAL RELATIVE)
12        list(APPEND dirlist ${dir}/${child})
13      endif(ExtraMacroArgs STREQUAL RELATIVE)
14    endif(IS_DIRECTORY ${dir}/${child})
15  endforeach()
16  set(${result} ${dirlist})
17endmacro()
18
19#=============================================================================
20
21set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}" ${CMAKE_MODULE_PATH})
22#include(cpack_generator)
23include(cpack_generator)
24
25if(CPACK_GENERATOR)
26  message(STATUS "Requested CPACK_GENERATOR = ${CPACK_GENERATOR}")
27else(CPACK_GENERATOR)
28  if(SPECIFIC_SYSTEM_PREFERED_CPACK_GENERATOR)
29    message(STATUS "Setting CPACK_GENERATOR to ${SPECIFIC_SYSTEM_PREFERED_CPACK_GENERATOR}")
30    set(CPACK_GENERATOR ${SPECIFIC_SYSTEM_PREFERED_CPACK_GENERATOR} CACHE STRING "")
31  endif(SPECIFIC_SYSTEM_PREFERED_CPACK_GENERATOR)
32endif(CPACK_GENERATOR )
33
34#set(SPECIFIC_COMPILER_NAME "")
35
36#=============================================================================
37# SETTINGS
38#=============================================================================
39
40#=== Installer filename ======================================================
41
42# Variable PACKAGE_ARCHITECTURE
43# if(CPACK_GENERATOR STREQUAL "RPM")
44#   execute_process(COMMAND uname "-m"
45#     OUTPUT_VARIABLE PACKAGE_ARCHITECTURE
46#     OUTPUT_STRIP_TRAILING_WHITESPACE )
47# elseif(CPACK_GENERATOR STREQUAL "DEB")
48#   message(STATUS "CPACK_DEBIAN_PACKAGE_ARCHITECTURE = ${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
49#   find_program(DPKG_CMD dpkg)
50#   if(NOT DPKG_CMD)
51#     message(STATUS "Can not find dpkg in your path, default to i386.")
52#     set(PACKAGE_ARCHITECTURE i386)
53#   endif(NOT DPKG_CMD)
54#   execute_process(COMMAND "${DPKG_CMD}" --print-architecture
55#     OUTPUT_VARIABLE PACKAGE_ARCHITECTURE
56#     OUTPUT_STRIP_TRAILING_WHITESPACE)
57# else(CPACK_GENERATOR STREQUAL "RPM")
58#   set(PACKAGE_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})
59# endif(CPACK_GENERATOR STREQUAL "RPM")
60set(PACKAGE_ARCHITECTURE ${SPECIFIC_SYSTEM_ARCHITECTURE})
61message(STATUS "PACKAGE_ARCHITECTURE=${PACKAGE_ARCHITECTURE}")
62
63# Variable CPACK_SYSTEM_NAME
64string(TOLOWER "${SPECIFIC_SYSTEM_NAME}.${SPECIFIC_SYSTEM_RELEASE}.${PACKAGE_ARCHITECTURE}" _CPACK_SYSTEM_NAME)
65set(CPACK_SYSTEM_NAME ${_CPACK_SYSTEM_NAME} CACHE STRING "" FORCE)
66message(STATUS "CPACK_SYSTEM_NAME=${CPACK_SYSTEM_NAME}")
67
68# Variable CPACK_PACKAGE_FILE_NAME
69# Default value for ${CPACK_PACKAGE_FILE_NAME} is:
70#   ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}
71# See: cpack --help-variable CPACK_PACKAGE_FILE_NAME
72#message(STATUS "CPACK_PACKAGE_FILE_NAME=${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}")
73
74#=== Components ==============================================================
75
76set(CPACK_TGZ_COMPONENT_INSTALL 1 PARENT_SCOPE)
77set(CPACK_DEB_COMPONENT_INSTALL 1 PARENT_SCOPE)
78set(CPACK_RPM_COMPONENT_INSTALL 1 PARENT_SCOPE)
79
80#set(CPACK_COMPONENTS_GROUPING "ALL_COMPONENTS_IN_ONE" PARENT_SCOPE)
81set(CPACK_COMPONENTS_GROUPING "IGNORE" PARENT_SCOPE)
82set(CPACK_COMPONENTS_ALL core headers gui)
83
84set(CPACK_COMPONENT_CORE_DESCRIPTION "TOL Core (Time Oriented Language)" PARENT_SCOPE)
85set(CPACK_COMPONENT_HEADERS_DESCRIPTION "C++ headers for TOL (Time Oriented Language)" PARENT_SCOPE)
86set(CPACK_COMPONENT_GUI_DESCRIPTION "GUI for TOL (Time Oriented Language)" PARENT_SCOPE)
87
88#=== RPM =====================================================================
89#!! Mirar si algunas configuraciones pueden obviarse porque por defecto usan
90#!! una configuración general, por ejemplo: CPACK_RPM_PACKAGE_VENDOR quizá
91#!! ya usa: CPACK_PACKAGE_VENDOR
92#!! Comprobar si los nombres de las componentes pueden ponerse en mayúsculas:
93#!! CPACK_RPM_CORE_PACKAGE_DESCRIPTION en lugar de: CPACK_RPM_core_PACKAGE_DESCRIPTION
94
95set(CPACK_RPM_PACKAGE_URL "www.tol-project.org" PARENT_SCOPE)
96set(CPACK_RPM_PACKAGE_VENDOR "TOL Project" PARENT_SCOPE)
97set(CPACK_RPM_PACKAGE_RELOCATABLE OFF PAREENT_SCOPE)
98set(CPACK_RPM_PACKAGE_AUTOREQ " no" PARENT_SCOPE)
99set(CPACK_RPM_PACKAGE_GROUP "Applications/Engineering" PARENT_SCOPE)
100
101set(CPACK_RPM_core_PACKAGE_SUMMARY "The minimal TOL components necessary for a functional runtime" PARENT_SCOPE)
102set(CPACK_RPM_core_PACKAGE_DESCRIPTION
103"
104TOL = Time Oriented Language is a language and environment for statistical
105computing. It provides a natural way to handle time series data and model it.
106
107There is a TOL package called TolRInside based on Rcpp/RInside wich R which
108expose all R funcionality whithin TOL.
109
110" PARENT_SCOPE)
111
112set(FEDORA_core_REQUIRES "atlas, tcl >= 8.5, tcllib, boost-filesystem >= 1.41, boost-thread >= 1.41, suitesparse >= 3, fftw >= 3, gsl >= 1.13, bzip2-libs, zlib, libtool-ltdl, libcurl >= 7.19, postgresql-libs >= 8.4, mysql-libs, unixODBC")
113
114set(CENTOS_core_REQUIRES "epel-release, atlas, blas, lapack, tcl >= 8.5, tcllib, boost-atomic >= 1.41, boost-date-time >= 1.41, boost-chrono >= 1.41, boost-filesystem >= 1.41, boost-thread >= 1.41, suitesparse >= 3, fftw >= 3, gsl >= 1.13, bzip2-libs, zlib, libtool-ltdl, libcurl >= 7.19, postgresql-libs >= 8.4, mysql-libs, unixODBC")
115
116
117set(CPACK_RPM_core_PACKAGE_REQUIRES ${CENTOS_core_REQUIRES} PARENT_SCOPE)
118set(CPACK_RPM_headers_PACKAGE_REQUIRES "tol-core = ${CPACK_PACKAGE_VERSION}"  PARENT_SCOPE)
119set(CPACK_RPM_gui_PACKAGE_REQUIRES "tol-core = ${CPACK_PACKAGE_VERSION}, tk >= 8.5, bwidget"  PARENT_SCOPE)
120
121set(CPACK_RPM_core_PACKAGE_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR} PARENT_SCOPE)
122set(CPACK_RPM_headers_PACKAGE_ARCHITECTURE noarch PARENT_SCOPE)
123set(CPACK_RPM_gui_PACKAGE_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR} PARENT_SCOPE)
124
125#=== DEB =====================================================================
126
127# + CPACK_DEBIAN_PACKAGE_NAME = CPACK_PACKAGE_NAME (lower case)
128# + CPACK_DEBIAN_PACKAGE_VERSION = CPACK_PACKAGE_VERSION
129# + CPACK_DEBIAN_PACKAGE_ARCHITECTURE
130# - CPACK_DEBIAN_PACKAGE_DEPENDS
131# + CPACK_DEBIAN_PACKAGE_MAINTAINER = CPACK_PACKAGE_CONTACT
132# + CPACK_DEBIAN_PACKAGE_DESCRIPTION = PACK_PACKAGE_DESCRIPTION_SUMMARY
133# + CPACK_DEBIAN_PACKAGE_SECTION = 'devel'
134# + CPACK_DEBIAN_PACKAGE_PRIORITY = 'optional'
135# - CPACK_DEBIAN_PACKAGE_HOMEPAGE
136set(CPACK_DEBIAN_PACKAGE_SECTION "Mathematics" PARENT_SCOPE)
137set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "www.tol-project.org" PARENT_SCOPE)
138
139set(CPACK_DEBIAN_CORE_PACKAGE_DEPENDS "libatlas3-base, tcl (>= 8.5), libboost-filesystem-dev (>= 1.41), libboost-thread-dev (>= 1.41), libsuitesparse-dev, libfftw3-bin, libgsl0ldbl (>= 1.13), bzip2, zlib1g, libltdl7, libcurl3 (>=7.19), libpq5, libmysqlclient18, unixodbc" PARENT_SCOPE) # tclcurl
140set(CPACK_DEBIAN_HEADERS_PACKAGE_DEPENDS "tol-core (= ${CPACK_PACKAGE_VERSION})" PARENT_SCOPE)
141set(CPACK_DEBIAN_GUI_PACKAGE_DEPENDS "tol-core (= ${CPACK_PACKAGE_VERSION}), tk (>= 8.5), bwidget, tcllib, blt, tktreectrl, libtk-img" PARENT_SCOPE) # tclodbc, tk-table
142
143#=============================================================================
144# INSTALLATION FILES
145#=============================================================================
146
147#=== Installation Directory ==================================================
148
149# lib or lib64 directory
150if(CPACK_GENERATOR STREQUAL "RPM")
151  get_property(LIB64 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS)
152  if(LIB64 STREQUAL "TRUE")
153    set(LIBSUFFIX "64")
154  else(LIB64 STREQUAL "TRUE")
155    set(LIBSUFFIX "")
156  endif(LIB64 STREQUAL "TRUE")
157else(CPACK_GENERATOR STREQUAL "RPM")
158  set(LIBSUFFIX "")
159endif(CPACK_GENERATOR STREQUAL "RPM")
160
161set(PREFIX_TOL "lib${LIBSUFFIX}/tol${CPACK_PACKAGE_VERSION}")
162
163#=== [core] ==================================================================
164
165# core executables [BIN]
166install(FILES
167  "${TOL_RUNTIME_DIR}/bin/tolcon"
168  "${TOL_RUNTIME_DIR}/bin/tolsh"
169  DESTINATION "${PREFIX_TOL}/bin"
170  COMPONENT core
171  PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ
172  GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE
173  WORLD_EXECUTE)
174
175# TolCore (stdlib directory)
176file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/stdlib" stdlib_dir)
177install(DIRECTORY ${stdlib_dir} DESTINATION "${PREFIX_TOL}/bin"
178  COMPONENT core)
179
180# libraries [LIB]
181file(GLOB tol_libs  "${TOL_RUNTIME_DIR}/lib/*.so")
182install(FILES ${tol_libs} DESTINATION "${PREFIX_TOL}/lib"
183  COMPONENT core)
184
185# core tcltk libraries (toltcl & TclCurl)
186file(GLOB toltcl_dirs 
187  "${TOL_RUNTIME_DIR}/lib/toltcl*"
188  "${TOL_RUNTIME_DIR}/lib/TclCurl*")
189install(DIRECTORY ${toltcl_dirs} DESTINATION "${PREFIX_TOL}/lib"
190  COMPONENT core)
191
192#=== [headers] ===============================================================
193
194# headers [INCLUDE]
195file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/include" include_dir)
196install( DIRECTORY ${include_dir} DESTINATION "${PREFIX_TOL}"
197  COMPONENT headers)
198 
199#=== [gui] ===================================================================
200
201# gui executables [BIN]
202install(FILES
203  "${TOL_RUNTIME_DIR}/bin/tolbase.tcl"
204  "${TOL_RUNTIME_DIR}/bin/tolbase"
205  DESTINATION "${PREFIX_TOL}/bin"
206  COMPONENT gui
207  PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ
208  GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE
209  WORLD_EXECUTE)
210
211# gui tcltk libraries 
212subdirlist(tclExtDirs "${TOL_RUNTIME_DIR}/lib")
213install(DIRECTORY ${tclExtDirs} DESTINATION "${PREFIX_TOL}/lib"
214  COMPONENT gui
215  PATTERN toltcl* EXCLUDE
216  PATTERN TclCurl* EXCLUDE)
217##!!! cuidado que excluye bftoltcl.tcl quitar *
218 
219#=============================================================================
220
221# SCRIPTS (/usr/bin)
222## !!
223## file(TO_CMAKE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/building/Linux_32/scripts/tol*" sh_pattern)
224## file(GLOB RT_SH  ${sh_pattern})
225## install(FILES ${RT_SH} DESTINATION "bin" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE WORLD_EXECUTE)
226
227# nombre del paquete instalador
228#if( SPECIFIC_SYSTEM_PREFERED_CPACK_GENERATOR STREQUAL "RPM" )
229#  configure_file(
230#    ${CMAKE_CURRENT_SOURCE_DIR}/rpm_post_install.sh.in
231#    ${CMAKE_CURRENT_BINARY_DIR}/rpm_post_install.sh )
232#  set( CPACK_RPM_core_POST_INSTALL_SCRIPT_FILE
233#    "${CMAKE_CURRENT_BINARY_DIR}/rpm_post_install.sh" PARENT_SCOPE )
234#endif( SPECIFIC_SYSTEM_PREFERED_CPACK_GENERATOR STREQUAL "RPM" )
235# Estudiar como hacer lo mismo con CPACK_DEBIAN_core_PACKAGE_CONTROL_EXTRA
Note: See TracBrowser for help on using the repository browser.