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