comparison Resources/DownloadOrthancFramework.cmake @ 2533:e7f86a9f0f79

improvements
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 17 Apr 2018 11:27:51 +0200
parents c35202c8c0db
children 373d75b90d3b
comparison
equal deleted inserted replaced
2532:c35202c8c0db 2533:e7f86a9f0f79
56 ## 56 ##
57 ## Detection of the requested version 57 ## Detection of the requested version
58 ## 58 ##
59 59
60 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "hg" OR 60 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "hg" OR
61 ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive" OR
61 ORTHANC_FRAMEWORK_SOURCE STREQUAL "web") 62 ORTHANC_FRAMEWORK_SOURCE STREQUAL "web")
62 if (NOT DEFINED ORTHANC_FRAMEWORK_VERSION) 63 if (NOT DEFINED ORTHANC_FRAMEWORK_VERSION)
63 message(FATAL_ERROR "The variable ORTHANC_FRAMEWORK_VERSION must be set") 64 message(FATAL_ERROR "The variable ORTHANC_FRAMEWORK_VERSION must be set")
64 endif() 65 endif()
65 66
66 if (DEFINED ORTHANC_FRAMEWORK_MAJOR OR 67 if (DEFINED ORTHANC_FRAMEWORK_MAJOR OR
67 DEFINED ORTHANC_FRAMEWORK_MINOR OR 68 DEFINED ORTHANC_FRAMEWORK_MINOR OR
68 DEFINED ORTHANC_FRAMEWORK_REVISION) 69 DEFINED ORTHANC_FRAMEWORK_REVISION OR
70 DEFINED ORTHANC_FRAMEWORK_MD5)
69 message(FATAL_ERROR "Some internal variable has been set") 71 message(FATAL_ERROR "Some internal variable has been set")
70 endif() 72 endif()
73
74 set(ORTHANC_FRAMEWORK_MD5 "")
71 75
72 if (ORTHANC_FRAMEWORK_VERSION STREQUAL "mainline") 76 if (ORTHANC_FRAMEWORK_VERSION STREQUAL "mainline")
73 set(ORTHANC_FRAMEWORK_BRANCH "default") 77 set(ORTHANC_FRAMEWORK_BRANCH "default")
74 78
75 else() 79 else()
82 86
83 if (NOT ORTHANC_FRAMEWORK_MAJOR MATCHES "^[0-9]+$" OR 87 if (NOT ORTHANC_FRAMEWORK_MAJOR MATCHES "^[0-9]+$" OR
84 NOT ORTHANC_FRAMEWORK_MINOR MATCHES "^[0-9]+$" OR 88 NOT ORTHANC_FRAMEWORK_MINOR MATCHES "^[0-9]+$" OR
85 NOT ORTHANC_FRAMEWORK_REVISION MATCHES "^[0-9]+$") 89 NOT ORTHANC_FRAMEWORK_REVISION MATCHES "^[0-9]+$")
86 message("Bad version of the Orthanc framework: ${ORTHANC_FRAMEWORK_VERSION}") 90 message("Bad version of the Orthanc framework: ${ORTHANC_FRAMEWORK_VERSION}")
91 endif()
92
93 if (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.3.1")
94 set(ORTHANC_FRAMEWORK_MD5 "dac95bd6cf86fb19deaf4e612961f378")
87 endif() 95 endif()
88 endif() 96 endif()
89 endif() 97 endif()
90 98
91 99
138 if (NOT EXISTS ${ORTHANC_FRAMEWORK_ROOT}) 146 if (NOT EXISTS ${ORTHANC_FRAMEWORK_ROOT})
139 message(FATAL_ERROR "Non-existing directory: ${ORTHANC_FRAMEWORK_ROOT}") 147 message(FATAL_ERROR "Non-existing directory: ${ORTHANC_FRAMEWORK_ROOT}")
140 endif() 148 endif()
141 149
142 if (NOT EXISTS ${ORTHANC_FRAMEWORK_ROOT}/Resources/CMake/OrthancFrameworkParameters.cmake) 150 if (NOT EXISTS ${ORTHANC_FRAMEWORK_ROOT}/Resources/CMake/OrthancFrameworkParameters.cmake)
143 message(FATAL_ERROR "Directory not containing a version of Orthanc: ${ORTHANC_FRAMEWORK_ROOT}") 151 message(FATAL_ERROR "Directory not containing the source code of Orthanc: ${ORTHANC_FRAMEWORK_ROOT}")
144 endif() 152 endif()
145 153
146 set(ORTHANC_ROOT ${ORTHANC_FRAMEWORK_ROOT}) 154 set(ORTHANC_ROOT ${ORTHANC_FRAMEWORK_ROOT})
147 endif() 155 endif()
148 156
191 199
192 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive") 200 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive")
193 if (NOT DEFINED ORTHANC_FRAMEWORK_ARCHIVE) 201 if (NOT DEFINED ORTHANC_FRAMEWORK_ARCHIVE)
194 message(FATAL_ERROR "The variable ORTHANC_FRAMEWORK_ARCHIVE must provide the path to the sources of Orthanc") 202 message(FATAL_ERROR "The variable ORTHANC_FRAMEWORK_ARCHIVE must provide the path to the sources of Orthanc")
195 endif() 203 endif()
196
197 set(RE "^.*/Orthanc-([0-9]+)\\.([0-9]+)\\.([0-9]+).tar.gz$")
198 string(REGEX REPLACE ${RE} "\\1" ORTHANC_FRAMEWORK_MAJOR ${ORTHANC_FRAMEWORK_ARCHIVE})
199 string(REGEX REPLACE ${RE} "\\2" ORTHANC_FRAMEWORK_MINOR ${ORTHANC_FRAMEWORK_ARCHIVE})
200 string(REGEX REPLACE ${RE} "\\3" ORTHANC_FRAMEWORK_REVISION ${ORTHANC_FRAMEWORK_ARCHIVE})
201
202 if (NOT ORTHANC_FRAMEWORK_MAJOR MATCHES "^[0-9]+$" OR
203 NOT ORTHANC_FRAMEWORK_MINOR MATCHES "^[0-9]+$" OR
204 NOT ORTHANC_FRAMEWORK_REVISION MATCHES "^[0-9]+$")
205 message("Cannot detect the version of this release of Orthanc: ${ORTHANC_FRAMEWORK_ARCHIVE}")
206 endif()
207
208 set(ORTHANC_FRAMEWORK_VERSION ${ORTHANC_FRAMEWORK_MAJOR}.${ORTHANC_FRAMEWORK_MINOR}.${ORTHANC_FRAMEWORK_REVISION})
209 message("Detected version of Orthanc: ${ORTHANC_FRAMEWORK_VERSION}")
210 endif() 204 endif()
211 205
212 206
213 207
214 ## 208 ##
217 211
218 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "web") 212 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "web")
219 set(ORTHANC_FRAMEMORK_FILENAME Orthanc-${ORTHANC_FRAMEWORK_VERSION}.tar.gz) 213 set(ORTHANC_FRAMEMORK_FILENAME Orthanc-${ORTHANC_FRAMEWORK_VERSION}.tar.gz)
220 set(ORTHANC_FRAMEWORK_URL "https://www.orthanc-server.com/downloads/get.php?path=/orthanc/${ORTHANC_FRAMEMORK_FILENAME}") 214 set(ORTHANC_FRAMEWORK_URL "https://www.orthanc-server.com/downloads/get.php?path=/orthanc/${ORTHANC_FRAMEMORK_FILENAME}")
221 215
222 if (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.3.1")
223 set(ORTHANC_FRAMEWORK_MD5 "dac95bd6cf86fb19deaf4e612961f378")
224 else()
225 message(FATAL_ERROR "Unknown release of Orthanc: ${ORTHANC_FRAMEWORK_VERSION}")
226 endif()
227
228 set(ORTHANC_FRAMEWORK_ARCHIVE "${CMAKE_SOURCE_DIR}/ThirdPartyDownloads/${ORTHANC_FRAMEMORK_FILENAME}") 216 set(ORTHANC_FRAMEWORK_ARCHIVE "${CMAKE_SOURCE_DIR}/ThirdPartyDownloads/${ORTHANC_FRAMEMORK_FILENAME}")
229 217
230 if (NOT EXISTS "${ORTHANC_FRAMEWORK_ARCHIVE}") 218 if (NOT EXISTS "${ORTHANC_FRAMEWORK_ARCHIVE}")
231 message("Downloading ${ORTHANC_FRAMEWORK_ARCHIVE}") 219 message("Downloading: ${ORTHANC_FRAMEWORK_ARCHIVE}")
232 220
233 file(DOWNLOAD 221 file(DOWNLOAD
234 "${ORTHANC_FRAMEWORK_URL}" "${ORTHANC_FRAMEWORK_ARCHIVE}" 222 "${ORTHANC_FRAMEWORK_URL}" "${ORTHANC_FRAMEWORK_ARCHIVE}"
235 SHOW_PROGRESS EXPECTED_MD5 "${ORTHANC_FRAMEWORK_MD5}" 223 SHOW_PROGRESS EXPECTED_MD5 "${ORTHANC_FRAMEWORK_MD5}"
236 TIMEOUT 60 224 TIMEOUT 60
237 INACTIVITY_TIMEOUT 60 225 INACTIVITY_TIMEOUT 60
238 ) 226 )
239 else() 227 else()
240 message("Using local copy of ${ORTHANC_FRAMEWORK_URL}") 228 message("Using local copy of: ${ORTHANC_FRAMEWORK_URL}")
241
242 file(MD5 ${ORTHANC_FRAMEWORK_ARCHIVE} ActualMD5)
243 if (NOT "${ActualMD5}" STREQUAL "${ORTHANC_FRAMEWORK_MD5}")
244 message(FATAL_ERROR "The MD5 hash of a previously download file is invalid: ${ORTHANC_FRAMEWORK_ARCHIVE}")
245 endif()
246 endif() 229 endif()
247 endif() 230 endif()
248 231
249 232
250 233
256 239
257 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive" OR 240 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive" OR
258 ORTHANC_FRAMEWORK_SOURCE STREQUAL "web") 241 ORTHANC_FRAMEWORK_SOURCE STREQUAL "web")
259 242
260 if (NOT DEFINED ORTHANC_FRAMEWORK_ARCHIVE OR 243 if (NOT DEFINED ORTHANC_FRAMEWORK_ARCHIVE OR
261 NOT DEFINED ORTHANC_FRAMEWORK_VERSION) 244 NOT DEFINED ORTHANC_FRAMEWORK_VERSION OR
245 NOT DEFINED ORTHANC_FRAMEWORK_MD5)
262 message(FATAL_ERROR "Internal error") 246 message(FATAL_ERROR "Internal error")
247 endif()
248
249 if (ORTHANC_FRAMEWORK_MD5 STREQUAL "")
250 message(FATAL_ERROR "Unknown release of Orthanc: ${ORTHANC_FRAMEWORK_VERSION}")
251 endif()
252
253 file(MD5 ${ORTHANC_FRAMEWORK_ARCHIVE} ActualMD5)
254
255 if (NOT "${ActualMD5}" STREQUAL "${ORTHANC_FRAMEWORK_MD5}")
256 message(FATAL_ERROR "The MD5 hash of the Orthanc archive is invalid: ${ORTHANC_FRAMEWORK_ARCHIVE}")
263 endif() 257 endif()
264 258
265 set(ORTHANC_ROOT "${CMAKE_BINARY_DIR}/Orthanc-${ORTHANC_FRAMEWORK_VERSION}") 259 set(ORTHANC_ROOT "${CMAKE_BINARY_DIR}/Orthanc-${ORTHANC_FRAMEWORK_VERSION}")
266 260
267 if (NOT IS_DIRECTORY "${ORTHANC_ROOT}") 261 if (NOT IS_DIRECTORY "${ORTHANC_ROOT}")
268 if (NOT ORTHANC_FRAMEWORK_ARCHIVE MATCHES ".tar.gz$") 262 if (NOT ORTHANC_FRAMEWORK_ARCHIVE MATCHES ".tar.gz$")
269 message(FATAL_ERROR "Archive should have the \".tar.gz\" extension: ${ORTHANC_FRAMEWORK_ARCHIVE}") 263 message(FATAL_ERROR "Archive should have the \".tar.gz\" extension: ${ORTHANC_FRAMEWORK_ARCHIVE}")
270 endif() 264 endif()
271 265
272 message("Uncompressing ${ORTHANC_FRAMEWORK_ARCHIVE}") 266 message("Uncompressing: ${ORTHANC_FRAMEWORK_ARCHIVE}")
273 267
274 if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows") 268 if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
275 # How to silently extract files using 7-zip 269 # How to silently extract files using 7-zip
276 # http://superuser.com/questions/331148/7zip-command-line-extract-silently-quietly 270 # http://superuser.com/questions/331148/7zip-command-line-extract-silently-quietly
277 271