Hi Sebastien,
sorry to be the bad guy again, but I ran into a compilation error for the new plugin version:
[ 11s] /home/abuild/rpmbuild/BUILD/OrthancDicomWeb-1.1/Plugin/WadoRs.cpp: In static member function ‘static bool {anonymous}::MainDicomTagsCache::ReadResource(Orthanc::DicomMap&, std::__cxx11::string&, OrthancPlugins::MetadataMode, const string&, Orthanc::ResourceType)’:
[ 11s] /home/abuild/rpmbuild/BUILD/OrthancDicomWeb-1.1/Plugin/WadoRs.cpp:420:13: error: ‘class Orthanc::DicomMap’ has no member named ‘ParseMainDicomTags’; did you mean ‘IsMainDicomTag’?
[ 11s] dicom.ParseMainDicomTags(value[MAIN_DICOM_TAGS], level);
[ 11s] ^~~~~~~~~~~~~~~~~~
[ 11s] IsMainDicomTag
[ 11s] /home/abuild/rpmbuild/BUILD/OrthancDicomWeb-1.1/Plugin/WadoRs.cpp:426:17: error: ‘class Orthanc::DicomMap’ has no member named ‘ParseMainDicomTags’; did you mean ‘IsMainDicomTag’?
[ 11s] dicom.ParseMainDicomTags(value[PATIENT_MAIN_DICOM_TAGS], Orthanc::ResourceType_Patient);
[ 11s] ^~~~~~~~~~~~~~~~~~
[ 11s] IsMainDicomTag
[ 11s] make[2]: *** [CMakeFiles/OrthancDicomWeb.dir/build.make:1204: CMakeFiles/OrthancDicomWeb.dir/Plugin/WadoRs.cpp.o] Error 1
Full log at https://build.opensuse.org/build/home:DocB:Orthanc/openSUSE_Leap_15.1/x86_64/orthanc-dicomweb/_log
Thanks
Axel
Hello Axel,
The DICOMweb plugin requires a more recent version of the Orthanc framework to build.
You have to replace “Orthanc-1.5.7.tar.gz” by “Orthanc-ae0e3fd609df.tar.gz”, that can be downloaded from:
http://orthanc.osimis.io/ThirdPartyDownloads/orthanc-framework/Orthanc-ae0e3fd609df.tar.gz
Here is the corresponding change in the Debian package:
https://salsa.debian.org/med-team/orthanc-dicomweb/-/commit/49a5ee5ff59b8734e07ab0ce9fe7a14a3ac2e0a3
HTH,
Sébastien-
Hi Sebastien,
I tried to compile my own plugin with the new mainline Orthanc in Windows 10 and Visual Studio Community 2019, but visual studio cannot compile it. It throws the errors like:
3>D:\workingspace\tmp\orthanc-dicomweb\build\orthanc\Core\Compatibility.h(79,4): error C2976: ‘std::unique_ptr’: too few template arguments
3>D:\workingspace\tmp\orthanc-dicomweb\build\orthanc\Core\Compatibility.h(67): message : see declaration of ‘std::unique_ptr’
3>D:\workingspace\tmp\orthanc-dicomweb\build\orthanc\Core\MultiThreading../OrthancException.h(63,5): error C2512: ‘std::unique_ptr’: no appropriate default constructor available
3>D:\workingspace\tmp\orthanc-dicomweb\build\orthanc\Core\Compatibility.h(67,9): message : see declaration of ‘std::unique_ptr’
I also tried to compile with the new DicomWeb (https://bitbucket.org/sjodogne/orthanc-dicomweb/src), but it throws the same erros. The attachment is my CMakes. Can you pleas e help with that.
P/S 1 week ago I still can compile with my plugin, but after change some code, recompile and no success.
CMakeLists.txt (4.85 KB)
DownloadOrthancFramework.cmake (12.9 KB)
Hello,
Your question is totally unrelated to Axel’s one that was about the DICOMweb plugin. Please open a different thread when discussing different topics.
In either case, as far as I’m concerned, I don’t provide any support for Microsoft tools.
Sébastien-
Hi again,
I was building against 1.5.8 anyway…
Is there a plan to release an updated Orthanc version including these latest changes?
I am currently implementing DICOM storage commitment thanks to an industrial sponsor. New official release 1.6.0 integrating this feature should hopefully be available during March.
Currently the development is a bit stuck as gdcm is broken for newer poppler versions …
After April, thanks to another industrial sponsor, I’ll work on adding a transcoding API for DICOM files directly within the Orthanc plugin SDK. This should allow us to uncouple the DICOMweb plugin from the dependency upon GDCM.
And…can it be that Orthanc-ae0e3fd609df.tar.gz does not look into ThirdPartyDownloads for the files it wants to download?
Normally, no.
Cheers,
Sébastien-
Hi Sebastien,
Hi again,
I was building against 1.5.8 anyway…
Is there a plan to release an updated Orthanc version including these latest changes?
I am currently implementing DICOM storage commitment thanks to an industrial sponsor. New official release 1.6.0 integrating this feature should hopefully be available during March.
Good, I will then wait for it…
Currently the development is a bit stuck as gdcm is broken for newer poppler versions …
After April, thanks to another industrial sponsor, I’ll work on adding a transcoding API for DICOM files directly within the Orthanc plugin SDK. This should allow us to uncouple the DICOMweb plugin from the dependency upon GDCM.
And…can it be that Orthanc-ae0e3fd609df.tar.gz does not look into ThirdPartyDownloads for the files it wants to download?
I get:
[ 23s] Downloading http://orthanc.osimis.io/ThirdPartyDownloads/dicom-web/bootstrap-4.3.1.zip
[ 23s] CMake Error at /home/abuild/rpmbuild/BUILD/Orthanc-ae0e3fd609df/Resources/CMake/DownloadPackage.cmake:80 (message):
[ 23s] CMake is not allowed to download from Internet. Please set the
[ 23s] ALLOW_DOWNLOADS option to ON
[ 23s] Call Stack (most recent call first):
[ 23s] /home/abuild/rpmbuild/BUILD/Orthanc-ae0e3fd609df/Resources/CMake/DownloadPackage.cmake:116 (DownloadFile)
[ 23s] JavaScriptLibraries.cmake:3 (DownloadPackage)
[ 23s] CMakeLists.txt:11 (include)
Although:
axel@southpole:~> dir /var/tmp/build-root/openSUSE_Leap_15.1-x86_64/home/abuild/rpmbuild/BUILD/Orthanc-ae0e3fd609df/ThirdPartyDownloads/
insgesamt 2644
-rw-r–r-- 1 399 399 2705432 6. Mär 13:57 bootstrap-4.3.1.zip
→ So the file is in ThirdPartyDownloads/
Cheers
Axel
Hi Axel,
With yesterday’s release of Orthanc 1.6.0, you’ll find attached to this file, a set of Docker files to compile the DICOMweb plugin 1.1 on openSUSE Leap 15.1 with the newest version of the Orthanc framework.
Note that a small patch is necessary to upgrade the version of the Orthanc framework.
HTH,
Sébastien-
build-dicomweb.sh (511 Bytes)
build-dicomweb-1.1.patch (778 Bytes)
Dockerfile (926 Bytes)
Hello Sebastien,
dicomweb can wait, I’m still struggeling with 1.6.0, as I see the same issue with ThirdPartyDownloads not working:
[ 2s] + exec rpmbuild -ba --define ‘_srcdefattr (-,root,root)’ --nosignature /home/abuild/rpmbuild/SOURCES/orthanc.spec
[ 2s] setting SOURCE_DATE_EPOCH=1576584000
[ 2s] Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.bMvKOs
[ 2s] + umask 022
[ 2s] + cd /home/abuild/rpmbuild/BUILD
[ 2s] + cd /home/abuild/rpmbuild/BUILD
[ 2s] + rm -rf Orthanc-1.6.0
[ 2s] + /usr/bin/gzip -dc /home/abuild/rpmbuild/SOURCES/Orthanc-1.6.0.tar.gz
[ 2s] + /usr/bin/tar -xof -
[ 2s] + STATUS=0
[ 2s] + ‘[’ 0 -ne 0 ‘]’
[ 2s] + cd Orthanc-1.6.0
[ 2s] + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
[ 2s] + cp /home/abuild/rpmbuild/SOURCES/orthanc.service /home/abuild/rpmbuild/SOURCES/orthanc-readme.SUSE .
[ 2s] + cp /home/abuild/rpmbuild/SOURCES/VersionsTests.cpp UnitTestsSources/.
[ 2s] + mkdir ThirdPartyDownloads
[ 2s] + cp /home/abuild/rpmbuild/SOURCES/bootstrap-4.3.1.zip ThirdPartyDownloads/.
[ 2s] + exit 0
Quick check of the build directory:
southpole:/home/axel # ls -al /var/tmp/build-root/openSUSE_Leap_15.1-x86_64/home/abuild/rpmbuild/BUILD/Orthanc-1.6.0/ThirdPartyDownloads/
insgesamt 2644
drwxr-xr-x 1 399 399 38 19. Mär 14:27 .
drwxr-xr-x 1 399 399 510 19. Mär 14:27 …
-rw-r–r-- 1 399 399 2705432 19. Mär 14:27 bootstrap-4.3.1.zip
→ File is there
But:
[ 8s] make[2]: Leaving directory ‘/home/abuild/rpmbuild/BUILD/Orthanc-1.6.0/build’
[ 8s] make[2]: Entering directory ‘/home/abuild/rpmbuild/BUILD/Orthanc-1.6.0/build’
[ 8s] [ 5%] Performing configure step for ‘ConnectivityChecks’
[ 8s] cd /home/abuild/rpmbuild/BUILD/Orthanc-1.6.0/build/ConnectivityChecks-build && /usr/bin/cmake -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/home/abuild/rpmbuild/BUILD/Orthanc-1.6.0/build -DPLUGIN_VERSION=1.6.0 -DSTATIC_BUILD=OFF -DALLOW_DOWNLOADS=OFF -DUSE_LEGACY_JSONCPP=OFF “-GUnix Makefiles” /home/abuild/rpmbuild/BUILD/Orthanc-1.6.0/Resources/CMake/…/…/Plugins/Samples/ConnectivityChecks
[ 8s] Re-run cmake no build system arguments
[ 8s] – The C compiler identification is GNU 7.4.0
[ 8s] – The CXX compiler identification is GNU 7.4.0
[ 8s] – Check for working C compiler: /var/lib/build/ccache/bin/cc
[ 8s] – Check for working C compiler: /var/lib/build/ccache/bin/cc – works
[ 8s] – Detecting C compiler ABI info
[ 8s] – Detecting C compiler ABI info - done
[ 8s] – Detecting C compile features
[ 8s] – Detecting C compile features - done
[ 8s] – Check for working CXX compiler: /var/lib/build/ccache/bin/c++
[ 8s] – Check for working CXX compiler: /var/lib/build/ccache/bin/c++ – works
[ 8s] – Detecting CXX compiler ABI info
[ 8s] – Detecting CXX compiler ABI info - done
[ 8s] – Detecting CXX compile features
[ 8s] – Detecting CXX compile features - done
[ 8s] – Found PythonInterp: /usr/bin/python3.6 (found version “3.6.5”)
[ 8s] JsonCpp include dir: /usr/include
[ 8s] – Looking for C++ include /usr/include/json/reader.h
[ 8s] – Looking for C++ include /usr/include/json/reader.h - found
[ 8s] JsonCpp major version: 1
[ 8s] Switching to C++11 standard in gcc, as version of JsonCpp is >= 1.0.0
[ 8s] – Looking for uuid/uuid.h
[ 8s] – Looking for uuid/uuid.h - found
[ 8s] – Looking for uuid_generate_random in /usr/lib64/libuuid.so
[ 8s] – Looking for uuid_generate_random in /usr/lib64/libuuid.so - found
[ 8s] – Boost version: 1.66.0
[ 8s] – Looking for pthread.h
[ 8s] – Looking for pthread.h - found
[ 8s] – Looking for pthread_create
[ 8s] – Looking for pthread_create - not found
[ 8s] – Looking for pthread_create in pthreads
[ 8s] – Looking for pthread_create in pthreads - not found
[ 8s] – Looking for pthread_create in pthread
[ 8s] – Looking for pthread_create in pthread - found
[ 8s] – Found Threads: TRUE
[ 8s] – Boost version: 1.66.0
[ 8s] – Found the following Boost libraries:
[ 8s] – filesystem
[ 8s] – thread
[ 8s] – system
[ 8s] – date_time
[ 8s] – regex
[ 8s] – chrono
[ 8s] Downloading http://orthanc.osimis.io/ThirdPartyDownloads/dicom-web/bootstrap-4.3.1.zip
[ 8s] CMake Error at /home/abuild/rpmbuild/BUILD/Orthanc-1.6.0/Resources/CMake/DownloadPackage.cmake:80 (message):
[ 8s] CMake is not allowed to download from Internet. Please set the
[ 8s] ALLOW_DOWNLOADS option to ON
[ 8s] Call Stack (most recent call first):
[ 8s] /home/abuild/rpmbuild/BUILD/Orthanc-1.6.0/Resources/CMake/DownloadPackage.cmake:116 (DownloadFile)
[ 8s] JavaScriptLibraries.cmake:3 (DownloadPackage)
[ 8s] CMakeLists.txt:11 (include)
[ 8s]
[ 8s]
[ 8s] – Configuring incomplete, errors occurred!
Any idea?
Cheers
Axel
Hello,
The third-party dependencies must be put in a folder named “ThirdPartyDownloads” that is placed next to the “CMakeLists.txt” file that uses it.
In your case, “bootstrap-4.3.1.zip” is not needed by the Orthanc core but by the “ConnectivityChecks” sample plugin. As a consequence, you must do the following move:
/home/abuild/rpmbuild/SOURCES/ThirdPartyDownloads/bootstrap-4.3.1.zip
=>
/home/abuild/rpmbuild/SOURCES/Plugins/Samples/ConnectivityChecks/ThirdPartyDownloads/bootstrap-4.3.1.zip
Note that you’ll presumably need more third-party dependencies to make the “ConnectivityChecks” plugin work (namely, axios-0.19.0.tar.gz, jquery-3.4.1.min.js and vuejs-2.6.10.tar.gz).
An easier alternative is simply to disable the compilation of this plugin, which can be done by providing the “-DBUILD_CONNECTIVITY_CHECKS:BOOL=OFF” argument to CMake. This is actually the strategy of the official Debian package.
HTH,
Sébastien-
With this hint it worked perfectly, thanks.
Nice!
So what do you do on Debian with the ConnectivityChecks plugin?
I simply haven’t packaged it yet: The CMake option “-DBUILD_CONNECTIVITY_CHECKS:BOOL=OFF” is currently is use until I get more time.
Cheers,
Sébastien-
Fair enough
I have packaging done including the Connectivity Check Plugin, and test was successful so far.
Coming back to the original issue - DicomWeb - it builds fine for Leap, but not for Tumbleweed, as gdcm still does not support the new poppler-API. And no reaction on the mailing list…
Didnt you mention you wanted to get rid of gdcm?
Cheers
Axel
Hello Axel,
So what do you do on Debian with the ConnectivityChecks plugin?
I simply haven’t packaged it yet: The CMake option “-DBUILD_CONNECTIVITY_CHECKS:BOOL=OFF” is currently is use until I get more time
Fair enough
I have packaging done including the Connectivity Check Plugin, and test was successful so far.
Great news! 
Coming back to the original issue - DicomWeb - it builds fine for Leap, but not for Tumbleweed, as gdcm still does not support the new poppler-API. And no reaction on the mailing list…
Didnt you mention you wanted to get rid of gdcm?
We are indeed in the process of implementing support of DICOM transcoding.
As a side-effect, GDCM will be moved to a separate plugin dedicated to DICOM decoding/transcoding (currently, the Web viewers and the DICOMweb plugins all link against GDCM). The Orthanc core will propose transcoding using DCMTK (which will notably not feature feature built-in support for JPEG2k): It will then be possible to selectively add GDCM support (e.g. if JPEG2k is needed). As a consequence, the dependency on GDCM will not be mandatory anymore.
This is obviously a complex refactoring. A release with transcoding (codename “Orthanc 1.7.0”) should hopefully be available around May 2020.
Regards,
Sébastien-