Skip to content

About

GitHub clone of the David Clunie's dicom3tools toolkit

Resources

Stars

3 stars

Watchers

0 watching

Forks

Repository files navigation

This repository is a mirror of the Pixelmed software developed by David Clunie @dclunie.

The original source code is available at https://www.dclunie.com/dicom3tools/workinprogress/index.html

This repository content is populated automatically by a GitHub action that runs every day and checks for the presence of a new version of the pixelmed package.

This fork was created by Andrey Fedorov to keep track of changes done while experimenting with the components of the toolkit.

Linux Packages

This repository includes a GitHub Action that builds Linux packages for dicom3tools. The workflow:

  • Uses Ubuntu 20.04 for better backward compatibility across Linux distributions
  • Installs required build dependencies (g++, xutils-dev, libx11-dev, libxext-dev)
  • Builds the project using the standard build process (Configure, imake, make World)
  • Tests binary execution to ensure they work correctly
  • Checks binary dependencies (GLIBC and GLIBCXX versions)
  • Packages the binaries into a tar.gz archive
  • Uploads the package as a workflow artifact (retained for 90 days)
  • Attaches the package to GitHub releases when a new release is published

The binaries are built on Ubuntu 20.04 (GLIBC 2.31, gcc 9.4) to ensure compatibility with a wide range of Linux distributions including:

  • Ubuntu 20.04 and later
  • Debian 11 (Bullseye) and later
  • RHEL/CentOS 8 and later
  • Fedora 32 and later

The workflow can also be triggered manually via the "Actions" tab.

Using Pre-built Binaries

To download pre-built Linux binaries:

  1. Go to the Releases page
  2. Download the dicom3tools-linux-x86_64.tar.gz file
  3. Extract the archive: tar -xzf dicom3tools-linux-x86_64.tar.gz
  4. The binaries will be in the current directory

macOS Packages

A second GitHub Action builds macOS packages. The workflow:

  • Runs on macOS 15 (Apple Silicon) but produces universal binaries (x86_64 + arm64), as configured by Configure for Darwin
  • Installs imake, makedepend and gawk from Homebrew, and XQuartz for X11
  • Builds the project using the standard build process (Configure, imake, make World), under a pseudo terminal because the header generation scripts write their diagnostics to /dev/tty
  • Tests binary execution to ensure they work correctly
  • Checks that every binary contains both architectures, and reports its library dependencies and minimum macOS version
  • Packages the binaries into three tar.gz archives: universal, arm64 only and x86_64 only, the last two split out of the universal build with lipo
  • Uploads the packages as workflow artifacts (retained for 90 days)
  • Attaches the packages to GitHub releases when a new release is published

The binaries are built with -mmacosx-version-min=10.9, so the x86_64 slice runs on macOS 10.9 and later and the arm64 slice on macOS 11.0 and later (the floor for Apple Silicon). They link only against the system libraries (libSystem and libc++), with one exception: dcdisp links X11 from /opt/X11, so running dcdisp requires XQuartz to be installed. Every other tool runs with no dependencies beyond macOS itself.

XQuartz rather than the Homebrew X11 formulae is used to build dcdisp for two reasons: the XQuartz libraries are universal (x86_64 i386 arm64), so they can be linked into a universal binary, and /opt/X11 is where an end user's X11 lives, so the shipped dcdisp resolves against their XQuartz rather than a Homebrew prefix they may not have.

The workflow can also be triggered manually via the "Actions" tab.

Using Pre-built Binaries

To download pre-built macOS binaries:

  1. Go to the Releases page
  2. Download one of:
    • dicom3tools-macos-universal.tar.gz — runs on both Apple Silicon and Intel; pick this one if unsure
    • dicom3tools-macos-arm64.tar.gz — Apple Silicon only, half the size
    • dicom3tools-macos-x86_64.tar.gz — Intel only, half the size
  3. Extract the archive: tar -xzf dicom3tools-macos-universal.tar.gz
  4. Remove the download quarantine flag so Gatekeeper allows them to run: xattr -dr com.apple.quarantine .
  5. The binaries will be in the current directory

Default Configuration

The upstream build configuration (config/site.p-def) defaults every UID to the placeholder 0.0.0.0, which makes the generated DICOM objects invalid. The packages built here use UIDs under the QIICR root 1.3.6.1.4.1.43046.3, following the conventions of dcmqi:

Setting Value dcmqi counterpart
DefaultUIDRoot (prefix of every generated UID) 1.3.6.1.4.1.43046.3.1.5 instance UID root ….1.4
DefaultImplementationClassUID 1.3.6.1.4.1.43046.3.0.2 implementation class UID ….0.1
DefaultInstanceCreatorUID 1.3.6.1.4.1.43046.3.0.3 none

These are passed as -D options to imake in the build workflows rather than written into config/site.p-def, so the daily upstream sync cannot overwrite them. To build with the same UIDs locally:

./Configure
imake -I./config -DInstallInTopDir -DDefaultUIDRoot=1.3.6.1.4.1.43046.3.1.5 -DDefaultImplementationClassUID=1.3.6.1.4.1.43046.3.0.2 -DDefaultInstanceCreatorUID=1.3.6.1.4.1.43046.3.0.3
make World

Generated UIDs end in .<time>.<pid>.<hostid> unless -stamp is given; on some Linux hosts this can exceed the 64 character limit (see #23).

About

GitHub clone of the David Clunie's dicom3tools toolkit

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages