1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
#!/usr/bin/python
#
# This maintenance script updates the content of the "Orthanc" folder
# to match the latest version of the Orthanc source code.
#
import multiprocessing
import os
import stat
import urllib2
import subprocess
TARGET = os.path.join(os.path.dirname(__file__), 'Orthanc')
PLUGIN_SDK_VERSION = '1.8.1'
REPOSITORY = 'https://hg.orthanc-server.com/orthanc/raw-file'
FILES = [
('OrthancFramework/Resources/CMake/AutoGeneratedCode.cmake', 'CMake'),
('OrthancFramework/Resources/CMake/Compiler.cmake', 'CMake'),
('OrthancFramework/Resources/CMake/DownloadOrthancFramework.cmake', 'CMake'),
('OrthancFramework/Resources/CMake/DownloadPackage.cmake', 'CMake'),
('OrthancFramework/Resources/Toolchains/LinuxStandardBaseToolchain.cmake', 'Toolchains'),
('OrthancFramework/Resources/Toolchains/MinGW-W64-Toolchain32.cmake', 'Toolchains'),
('OrthancFramework/Resources/Toolchains/MinGW-W64-Toolchain64.cmake', 'Toolchains'),
('OrthancFramework/Resources/Toolchains/MinGWToolchain.cmake', 'Toolchains'),
('OrthancServer/Plugins/Samples/Common/ExportedSymbolsPlugins.list', 'Plugins'),
('OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp', 'Plugins'),
('OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.h', 'Plugins'),
('OrthancServer/Plugins/Samples/Common/OrthancPluginException.h', 'Plugins'),
('OrthancServer/Plugins/Samples/Common/OrthancPluginsExports.cmake', 'Plugins'),
('OrthancServer/Plugins/Samples/Common/VersionScriptPlugins.map', 'Plugins'),
]
SDK = [
'orthanc/OrthancCPlugin.h',
]
def Download(x):
branch = x[0]
source = x[1]
target = os.path.join(TARGET, x[2])
print target
try:
os.makedirs(os.path.dirname(target))
except:
pass
url = '%s/%s/%s' % (REPOSITORY, branch, source)
with open(target, 'w') as f:
f.write(urllib2.urlopen(url).read())
commands = []
for f in FILES:
commands.append([ 'default',
f[0],
os.path.join(f[1], os.path.basename(f[0])) ])
for f in SDK:
commands.append([
'Orthanc-%s' % PLUGIN_SDK_VERSION,
'OrthancServer/Plugins/Include/%s' % f,
'Sdk-%s/%s' % (PLUGIN_SDK_VERSION, f)
])
pool = multiprocessing.Pool(10) # simultaneous downloads
pool.map(Download, commands)
if False:
# Patch the SDK
subprocess.check_call([ 'patch', '-p0', '-i', os.path.join
(os.path.abspath(os.path.dirname(__file__)),
'OrthancCPlugin-%s.patch' % PLUGIN_SDK_VERSION) ],
cwd = os.path.join(os.path.dirname(__file__),
'Orthanc',
'Sdk-%s' % PLUGIN_SDK_VERSION, 'orthanc'))
|