aarch64 builds for Vanilla Orthanc and Osimis Orthanc?

Hi all and especially devs,

I have compute time on an aarch64 Cavium ThunderX machine to do medical imaging archival and machine learning. I have been compiling and dockerizing vanilla Orthanc for ARM6 (raspberry pi’s) and ARM8 (aarch64) for a while to support a couple dozen Orthanc containers that receive data, anonymize imaging, and manage an image archive.

  1. I would be pleased to donate ARM builds or ARM build-time to Sebastian/Alain/et al, as it would be really useful for me to have a unified multi-architecture Orthanc docker container instead of maintaining my own spin.

  2. I deeply miss the Osimis plug-ins in my vanilla ARM builds. Is the Osimis plug-in source available for compilation anywhere, perhaps with a non-disclosure agreement or something? Again, happy to donate ARM builds or build-time, as it would be even more super-useful to me to have a unified multi-arch Osimis docker container so I didn’t have to maintain multiple config patterns.

(And FWIW: if speed isn’t a concern, you don’t even need native build-time anymore to support multi-architecture images. There are Docker image from resin.io that include the qemu-cross-compiler toolchain for pretty much all modern architectures. But these 96-core Caviums certainly are fast for native compiling.)

I suspect that my aarch64 use-case is pretty rare, but some people may be interested in a recent raspberry pi build. My vanilla multi-arch spins are available on docker hub under derekmerck/orthanc (no plugins, tho).

Hope you all had a good summer!

Derek-

See: https://bitbucket.org/sjodogne/orthanc/src

Dear Derek,

I thank you much for your interest in Orthanc and for your contribution!

Because I’m personally not familiar with the challenges specific to aarch64, I am however unsure about the nature of your contribution. If I understand your message correctly, you have produced aarch64 Docker images, and you would like to share them with the Orthanc community.

If my understanding is correct, please publish your Docker images on the file hosting platform that best suits you, then make a link in the following file by emitting a pull request:
https://github.com/jodogne/OrthancContributed/blob/master/Links.md

This GitHub repository is indeed dedicated to track all the community contributions. I could also add a more visible link to the following page of the Orthanc homepage, in the “Frameworks” section:
https://www.orthanc-server.com/static.php?page=resources

Thanks again!
Sébastien-

I rethought my strategy and just forked the official docker container builder and created a multi-architecture branch. I am having trouble with one of the unit tests:

[ RUN ] Toolbox.CaseWithAccents /root/orthanc/UnitTestsSources/FromDcmtkTests.cpp:1251: Failure Expected: toUpperResult Which is: "GR\xC3\x9C\xC3\x9F" "EN S\xC3\x89" "BASTIEN TEST\xC3\x89\xC3\x84\xC3\x96\xC3\x92\xD0\x94\xCE\x98\xC4\x9C\xD7\x93\xD8\xB5\xC4\xB6\xD0\x8B\xE0\xB9\x9B\xEF\xBE\x88\xC4\xB0" To be equal to: Toolbox::ToUpperCaseWithAccents(toUpperSource) Which is: "GR\xC3\xBC\xC3\x9F" "EN S\xC3\xA9" "BASTIEN TEST\xC3\xA9\xC3\xA4\xC3\xB6\xC3\xB2\xD0\x94\xCE\x98\xC4\x9D\xD7\x93\xD8\xB5\xC4\xB7\xD1\x9B\xE0\xB9\x9B\xEF\xBE\x88\xC4\xB0" [ FAILED ] Toolbox.CaseWithAccents (0 ms)

Looks like it’s just a couple of characters (copyright? vulgar fractions?), but may be important for those of you with interesting characters in your names! Any thoughts on how to fix so I can claim that it passes the unit tests when I put in the pull request? This re-based is on the regular amd64/intel version of Debian. Seems like it may be related to locales?

Derek–

Hello,

This error typically occurs if your system is not configured to use UTF-8 locales by default.

Please could you try again after applying the following patch to the sources of Orthanc?

diff -r f3a2d109e361 UnitTestsSources/UnitTestsMain.cpp
— a/UnitTestsSources/UnitTestsMain.cpp Fri Sep 21 15:48:40 2018 +0200
+++ b/UnitTestsSources/UnitTestsMain.cpp Tue Sep 25 07:06:18 2018 +0200
@@ -1125,6 +1125,7 @@
Toolbox::DetectEndianness();
SystemToolbox::MakeDirectory(“UnitTestsResults”);
OrthancInitialize();

  • Toolbox::InitializeGlobalLocale(“en_US.UTF8”);

::testing::InitGoogleTest(&argc, argv);
int result = RUN_ALL_TESTS();

HTH,
Sébastien-

That was enough to get me on the right track. It turns out that
Debian doesn't use `gen-locales` exactly the same way Ubuntu does. So
the image required a little re-engineering. It was defaulting to
"C.utf-8" rather than "en_US.utf-8", which apparently handles
capitalization somewhat differently.

Fix is described here if useful:
https://unix.stackexchange.com/questions/246846/cant-generate-en-us-utf-8-locale

Appears to be passing all tests now.

D--

Great, thanks for the feedback!

Done! Recent Orthanc and Orthanc-plugins images available for amd64, armhf, and aarch64 Docker.

https://hub.docker.com/r/derekmerck

https://github.com/derekmerck/docker-orthanc-xarch

I added links and put in a pull request for OrthancContributed as well.

Still interested in helping build the Osimis plugins for ARM if useful.

Best,
Derek-

Wow! This is an impressive contribution! Actually, I wasn’t aware of the fact that Docker was available for ARM architectures, which explains my previous misunderstanding.

Just merged your pull request on OrthancContributed.

Many thanks,

Sébastien-