Mercurial > hg > orthanc-webviewer
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 |