comparison Resources/Orthanc/DownloadOrthancFramework.cmake @ 193:20636b255424

cont
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 17 Apr 2018 11:44:39 +0200
parents afaa2e133e7d
children e481ff4a86cc
comparison
equal deleted inserted replaced
192:afaa2e133e7d 193:20636b255424
41 NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "path")) 41 NOT ORTHANC_FRAMEWORK_SOURCE STREQUAL "path"))
42 message(FATAL_ERROR "The variable ORTHANC_FRAMEWORK_SOURCE must be set to \"hg\", \"web\", \"archive\" or \"path\"") 42 message(FATAL_ERROR "The variable ORTHANC_FRAMEWORK_SOURCE must be set to \"hg\", \"web\", \"archive\" or \"path\"")
43 endif() 43 endif()
44 44
45 45
46 ##
47 ## Detection of the requested version
48 ##
49
46 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "hg" OR 50 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "hg" OR
47 ORTHANC_FRAMEWORK_SOURCE STREQUAL "web") 51 ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive" OR
48 if (NOT STATIC_BUILD AND
49 NOT ALLOW_DOWNLOADS)
50 message(FATAL_ERROR "CMake is not allowed to download from Internet. Please set the ALLOW_DOWNLOADS option to ON")
51 endif()
52 endif()
53
54
55
56 ##
57 ## Detection of the requested version
58 ##
59
60 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "hg" OR
61 ORTHANC_FRAMEWORK_SOURCE STREQUAL "web") 52 ORTHANC_FRAMEWORK_SOURCE STREQUAL "web")
62 if (NOT DEFINED ORTHANC_FRAMEWORK_VERSION) 53 if (NOT DEFINED ORTHANC_FRAMEWORK_VERSION)
63 message(FATAL_ERROR "The variable ORTHANC_FRAMEWORK_VERSION must be set") 54 message(FATAL_ERROR "The variable ORTHANC_FRAMEWORK_VERSION must be set")
64 endif() 55 endif()
65 56
66 if (DEFINED ORTHANC_FRAMEWORK_MAJOR OR 57 if (DEFINED ORTHANC_FRAMEWORK_MAJOR OR
67 DEFINED ORTHANC_FRAMEWORK_MINOR OR 58 DEFINED ORTHANC_FRAMEWORK_MINOR OR
68 DEFINED ORTHANC_FRAMEWORK_REVISION) 59 DEFINED ORTHANC_FRAMEWORK_REVISION OR
60 DEFINED ORTHANC_FRAMEWORK_MD5)
69 message(FATAL_ERROR "Some internal variable has been set") 61 message(FATAL_ERROR "Some internal variable has been set")
70 endif() 62 endif()
63
64 set(ORTHANC_FRAMEWORK_MD5 "")
71 65
72 if (ORTHANC_FRAMEWORK_VERSION STREQUAL "mainline") 66 if (ORTHANC_FRAMEWORK_VERSION STREQUAL "mainline")
73 set(ORTHANC_FRAMEWORK_BRANCH "default") 67 set(ORTHANC_FRAMEWORK_BRANCH "default")
74 68
75 else() 69 else()
82 76
83 if (NOT ORTHANC_FRAMEWORK_MAJOR MATCHES "^[0-9]+$" OR 77 if (NOT ORTHANC_FRAMEWORK_MAJOR MATCHES "^[0-9]+$" OR
84 NOT ORTHANC_FRAMEWORK_MINOR MATCHES "^[0-9]+$" OR 78 NOT ORTHANC_FRAMEWORK_MINOR MATCHES "^[0-9]+$" OR
85 NOT ORTHANC_FRAMEWORK_REVISION MATCHES "^[0-9]+$") 79 NOT ORTHANC_FRAMEWORK_REVISION MATCHES "^[0-9]+$")
86 message("Bad version of the Orthanc framework: ${ORTHANC_FRAMEWORK_VERSION}") 80 message("Bad version of the Orthanc framework: ${ORTHANC_FRAMEWORK_VERSION}")
81 endif()
82
83 if (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.3.1")
84 set(ORTHANC_FRAMEWORK_MD5 "dac95bd6cf86fb19deaf4e612961f378")
87 endif() 85 endif()
88 endif() 86 endif()
89 endif() 87 endif()
90 88
91 89
138 if (NOT EXISTS ${ORTHANC_FRAMEWORK_ROOT}) 136 if (NOT EXISTS ${ORTHANC_FRAMEWORK_ROOT})
139 message(FATAL_ERROR "Non-existing directory: ${ORTHANC_FRAMEWORK_ROOT}") 137 message(FATAL_ERROR "Non-existing directory: ${ORTHANC_FRAMEWORK_ROOT}")
140 endif() 138 endif()
141 139
142 if (NOT EXISTS ${ORTHANC_FRAMEWORK_ROOT}/Resources/CMake/OrthancFrameworkParameters.cmake) 140 if (NOT EXISTS ${ORTHANC_FRAMEWORK_ROOT}/Resources/CMake/OrthancFrameworkParameters.cmake)
143 message(FATAL_ERROR "Directory not containing a version of Orthanc: ${ORTHANC_FRAMEWORK_ROOT}") 141 message(FATAL_ERROR "Directory not containing the source code of Orthanc: ${ORTHANC_FRAMEWORK_ROOT}")
144 endif() 142 endif()
145 143
146 set(ORTHANC_ROOT ${ORTHANC_FRAMEWORK_ROOT}) 144 set(ORTHANC_ROOT ${ORTHANC_FRAMEWORK_ROOT})
147 endif() 145 endif()
148 146
151 ## 149 ##
152 ## Case of the Orthanc framework cloned using Mercurial 150 ## Case of the Orthanc framework cloned using Mercurial
153 ## 151 ##
154 152
155 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "hg") 153 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "hg")
154 if (NOT STATIC_BUILD AND NOT ALLOW_DOWNLOADS)
155 message(FATAL_ERROR "CMake is not allowed to download from Internet. Please set the ALLOW_DOWNLOADS option to ON")
156 endif()
157
156 set(ORTHANC_ROOT ${CMAKE_BINARY_DIR}/orthanc) 158 set(ORTHANC_ROOT ${CMAKE_BINARY_DIR}/orthanc)
157 159
158 if (NOT EXISTS ${ORTHANC_ROOT}) 160 if (NOT EXISTS ${ORTHANC_ROOT})
159 message("Forking the Orthanc source repository using Mercurial") 161 message("Forking the Orthanc source repository using Mercurial")
160 162
161 execute_process( 163 execute_process(
162 COMMAND ${ORTHANC_FRAMEWORK_HG} clone "https://bitbucket.org/sjodogne/orthanc" 164 COMMAND ${ORTHANC_FRAMEWORK_HG} clone "https://bitbucket.org/sjodogne/orthanc"
191 193
192 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive") 194 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive")
193 if (NOT DEFINED ORTHANC_FRAMEWORK_ARCHIVE) 195 if (NOT DEFINED ORTHANC_FRAMEWORK_ARCHIVE)
194 message(FATAL_ERROR "The variable ORTHANC_FRAMEWORK_ARCHIVE must provide the path to the sources of Orthanc") 196 message(FATAL_ERROR "The variable ORTHANC_FRAMEWORK_ARCHIVE must provide the path to the sources of Orthanc")
195 endif() 197 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() 198 endif()
211 199
212 200
213 201
214 ## 202 ##
217 205
218 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "web") 206 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "web")
219 set(ORTHANC_FRAMEMORK_FILENAME Orthanc-${ORTHANC_FRAMEWORK_VERSION}.tar.gz) 207 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}") 208 set(ORTHANC_FRAMEWORK_URL "https://www.orthanc-server.com/downloads/get.php?path=/orthanc/${ORTHANC_FRAMEMORK_FILENAME}")
221 209
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}") 210 set(ORTHANC_FRAMEWORK_ARCHIVE "${CMAKE_SOURCE_DIR}/ThirdPartyDownloads/${ORTHANC_FRAMEMORK_FILENAME}")
229 211
230 if (NOT EXISTS "${ORTHANC_FRAMEWORK_ARCHIVE}") 212 if (NOT EXISTS "${ORTHANC_FRAMEWORK_ARCHIVE}")
231 message("Downloading ${ORTHANC_FRAMEWORK_ARCHIVE}") 213 if (NOT STATIC_BUILD AND NOT ALLOW_DOWNLOADS)
214 message(FATAL_ERROR "CMake is not allowed to download from Internet. Please set the ALLOW_DOWNLOADS option to ON")
215 endif()
216
217 message("Downloading: ${ORTHANC_FRAMEWORK_ARCHIVE}")
232 218
233 file(DOWNLOAD 219 file(DOWNLOAD
234 "${ORTHANC_FRAMEWORK_URL}" "${ORTHANC_FRAMEWORK_ARCHIVE}" 220 "${ORTHANC_FRAMEWORK_URL}" "${ORTHANC_FRAMEWORK_ARCHIVE}"
235 SHOW_PROGRESS EXPECTED_MD5 "${ORTHANC_FRAMEWORK_MD5}" 221 SHOW_PROGRESS EXPECTED_MD5 "${ORTHANC_FRAMEWORK_MD5}"
236 TIMEOUT 60 222 TIMEOUT 60
237 INACTIVITY_TIMEOUT 60 223 INACTIVITY_TIMEOUT 60
238 ) 224 )
239 else() 225 else()
240 message("Using local copy of ${ORTHANC_FRAMEWORK_URL}") 226 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() 227 endif()
247 endif() 228 endif()
248 229
249 230
250 231
256 237
257 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive" OR 238 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "archive" OR
258 ORTHANC_FRAMEWORK_SOURCE STREQUAL "web") 239 ORTHANC_FRAMEWORK_SOURCE STREQUAL "web")
259 240
260 if (NOT DEFINED ORTHANC_FRAMEWORK_ARCHIVE OR 241 if (NOT DEFINED ORTHANC_FRAMEWORK_ARCHIVE OR
261 NOT DEFINED ORTHANC_FRAMEWORK_VERSION) 242 NOT DEFINED ORTHANC_FRAMEWORK_VERSION OR
243 NOT DEFINED ORTHANC_FRAMEWORK_MD5)
262 message(FATAL_ERROR "Internal error") 244 message(FATAL_ERROR "Internal error")
245 endif()
246
247 if (ORTHANC_FRAMEWORK_MD5 STREQUAL "")
248 message(FATAL_ERROR "Unknown release of Orthanc: ${ORTHANC_FRAMEWORK_VERSION}")
249 endif()
250
251 file(MD5 ${ORTHANC_FRAMEWORK_ARCHIVE} ActualMD5)
252
253 if (NOT "${ActualMD5}" STREQUAL "${ORTHANC_FRAMEWORK_MD5}")
254 message(FATAL_ERROR "The MD5 hash of the Orthanc archive is invalid: ${ORTHANC_FRAMEWORK_ARCHIVE}")
263 endif() 255 endif()
264 256
265 set(ORTHANC_ROOT "${CMAKE_BINARY_DIR}/Orthanc-${ORTHANC_FRAMEWORK_VERSION}") 257 set(ORTHANC_ROOT "${CMAKE_BINARY_DIR}/Orthanc-${ORTHANC_FRAMEWORK_VERSION}")
266 258
267 if (NOT IS_DIRECTORY "${ORTHANC_ROOT}") 259 if (NOT IS_DIRECTORY "${ORTHANC_ROOT}")
268 if (NOT ORTHANC_FRAMEWORK_ARCHIVE MATCHES ".tar.gz$") 260 if (NOT ORTHANC_FRAMEWORK_ARCHIVE MATCHES ".tar.gz$")
269 message(FATAL_ERROR "Archive should have the \".tar.gz\" extension: ${ORTHANC_FRAMEWORK_ARCHIVE}") 261 message(FATAL_ERROR "Archive should have the \".tar.gz\" extension: ${ORTHANC_FRAMEWORK_ARCHIVE}")
270 endif() 262 endif()
271 263
272 message("Uncompressing ${ORTHANC_FRAMEWORK_ARCHIVE}") 264 message("Uncompressing: ${ORTHANC_FRAMEWORK_ARCHIVE}")
273 265
274 if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows") 266 if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
275 # How to silently extract files using 7-zip 267 # How to silently extract files using 7-zip
276 # http://superuser.com/questions/331148/7zip-command-line-extract-silently-quietly 268 # http://superuser.com/questions/331148/7zip-command-line-extract-silently-quietly
277 269