# TODO:
# - use system libjpeg? (rather hard: it needs 8/12/16-bit versions; included libijg*
# are libjpeg 6b with some arithmetic and lossless patches applied;
-# libjpeg 8 already inclded arithmetic encoding support, but not lossless)
+# libjpeg 8 already included arithmetic encoding support, but not lossless)
#
-Summary: DICOM To:olkit - implementation of DICOM/MEDICOM standard
+# Conditional build:
+%bcond_without icu # libicu instead of bundled oficonv
+# glibc iconv supports only AbortTranscodingOnIllegalSequence conversion flag
+# icu supports AbortTranscodingOnIllegalSequence and DiscardIllegalSequences
+# standalone libiconv >= 1.8 supports additionally TransliterateIllegalSequences
+Summary: DICOM Toolkit - implementation of DICOM/MEDICOM standard
Summary(pl.UTF-8): Narzędzia DICOM - implementacja standardu DICOM/MEDICOM
Name: dcmtk
-Version: 3.6.3
+Version: 3.6.8
Release: 1
License: BSD
Group: Libraries
-Source0: ftp://dicom.offis.de/pub/dicom/offis/software/dcmtk/dcmtk363/%{name}-%{version}.tar.gz
-# Source0-md5: 2f79082d52cbbb06a360f48b4a9c61be
+Source0: https://dicom.offis.de/download/dcmtk/release/%{name}-%{version}.tar.gz
+# Source0-md5: 7522e06ca2479183eb535c5da2bdf5e4
Patch0: %{name}-3.6.0-0005-Fixed-includes-for-CharLS-1.0.patch
Patch1: %{name}-3.6.1-0001-Removed-reference-to-bundled-libcharls.patch
Patch2: %{name}-3.6.1-0002-Find-and-include-CharLS.patch
Patch4: %{name}-3.6.1-0004-Use-cmake-suggested-location-for-CharLS.patch
Patch5: %{name}-etc.patch
Patch6: CharLS.patch
-URL: http://dicom.offis.de/dcmtk
+Patch7: %{name}-pc.patch
+URL: https://dcmtk.org/
BuildRequires: CharLS-devel < 2.0
-BuildRequires: cmake >= 2.4
+BuildRequires: cmake >= 3.0
+BuildRequires: doxygen
+%{?with_icu:BuildRequires: libicu-devel}
BuildRequires: libpng-devel >= 2:1.2.8
+# handled during configuration, but actually not used
+#BuildRequires: libsndfile-devel
BuildRequires: libstdc++-devel >= 6:4.8.1
-BuildRequires: libtiff-devel >= 3.7.0
+BuildRequires: libtiff-devel >= 4
BuildRequires: libwrap-devel
BuildRequires: libxml2-devel >= 1:2.6.26
-BuildRequires: openssl-devel >= 0.9.8
+BuildRequires: openjpeg2-devel >= 2
+BuildRequires: openssl-devel >= 1.0.1
+BuildRequires: pkgconfig
BuildRequires: zlib-devel >= 1.2.3
Requires: %{name}-libs = %{version}-%{release}
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
Summary(pl.UTF-8): Biblioteki współdzielone DICOM
Group: Libraries
Requires: libstdc++ >= 6:4.8.1
+Requires: openssl >= 1.0.1
+Requires: zlib >= 1.2.3
%description libs
DICOM ToolKit shared libraries.
Summary(pl.UTF-8): Pliki nagłówkowe bibliotek DCMTK
Group: Development/Libraries
Requires: %{name}-libs = %{version}-%{release}
+%{?with_icu:Requires: libicu-devel}
+Requires: libpng-devel >= 2:1.2.8
Requires: libstdc++-devel >= 6:4.8.1
+Requires: libtiff-devel >= 4
+Requires: libwrap-devel
+Requires: openjpeg2-devel >= 2
+Requires: openssl-devel >= 1.0.1
+Requires: zlib-devel >= 1.2.3
%description devel
Header files for DCMTK libraries.
%patch4 -p1
%patch5 -p1
%patch6 -p1
+%patch7 -p1
# enforce system CharLS
%{__rm} -r dcmjpls/libcharls
%build
-%cmake . \
- -DDCMTK_INSTALL_ETCDIR=%{_sysconfdir}/%{name} \
- -DDCMTK_INSTALL_LIBDIR=%{_lib} \
+install -d build
+cd build
+# SNDFILE does nothing (as of 3.6.7), just -devel dependency
+%cmake .. \
+ -DCMAKE_INSTALL_LIBDIR=%{_lib} \
+ %{?with_icu:-DDCMTK_ENABLE_CHARSET_CONVERSION=ICU} \
-DDCMTK_INSTALL_CMKDIR=%{_lib}/cmake/dcmtk \
-DBUILD_APPS:BOOL=ON \
-DBUILD_SHARED_LIBS:BOOL=ON \
+ -DDCMTK_ENABLE_CXX11:BOOL=ON \
-DDCMTK_USE_CXX11_STL:BOOL=ON \
+ -DDCMTK_WITH_CHARLS:BOOL=ON \
+ -DDCMTK_WITH_ICONV:BOOL=OFF \
+ %{?with_icu:-DDCMTK_WITH_ICU:BOOL=ON} \
-DDCMTK_WITH_OPENSSL:BOOL=ON \
-DDCMTK_WITH_PNG:BOOL=ON \
-DDCMTK_WITH_PRIVATE_TAGS:BOOL=ON \
+ -DDCMTK_WITH_SNDFILE:BOOL=OFF \
-DDCMTK_WITH_TIFF:BOOL=ON \
-DDCMTK_WITH_XML:BOOL=ON \
- -DDCMTK_WITH_CHARLS=ON \
-DDCMTK_WITH_ZLIB:BOOL=ON
%{__make}
%install
rm -rf $RPM_BUILD_ROOT
-%{__make} install \
+%{__make} -C build install \
DESTDIR=$RPM_BUILD_ROOT
-%{__rm} -r $RPM_BUILD_ROOT%{_docdir}
+# disable completeness check incompatible with split packaging
+%{__sed} -i -e '/^foreach(target .*IMPORT_CHECK_TARGETS/,/^endforeach/d; /^unset(_IMPORT_CHECK_TARGETS)/d' $RPM_BUILD_ROOT%{_libdir}/cmake/dcmtk/DCMTKTargets.cmake
+
+%{__rm} $RPM_BUILD_ROOT%{_bindir}/{oficonv,ofstd}_tests
+
+# packaged as %doc
+%{__rm} -r $RPM_BUILD_ROOT%{_datadir}/doc-%{version}
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(644,root,root,755)
%doc ANNOUNCE CHANGES COPYRIGHT FAQ HISTORY README
-%doc dcmdata/docs/datadict.txt dcmnet/docs/asconfig.txt
-%doc dcmqrdb/docs/dcmqr*.txt dcmtls/docs/ciphers.txt
+%doc dcmdata/docs/datadict.txt dcmnet/docs/asconfig.txt dcmqrdb/docs/dcmqr*.txt dcmtls/docs/ciphers.txt
+%attr(755,root,root) %{_bindir}/cda2dcm
%attr(755,root,root) %{_bindir}/dcm*
%attr(755,root,root) %{_bindir}/dcod2lum
%attr(755,root,root) %{_bindir}/dconvlum
%attr(755,root,root) %{_bindir}/findscu
%attr(755,root,root) %{_bindir}/getscu
%attr(755,root,root) %{_bindir}/img2dcm
+%attr(755,root,root) %{_bindir}/mkcsmapper
+%attr(755,root,root) %{_bindir}/mkesdb
%attr(755,root,root) %{_bindir}/mkreport
%attr(755,root,root) %{_bindir}/movescu
%attr(755,root,root) %{_bindir}/msgserv
-%attr(755,root,root) %{_bindir}/ofstd_tests
%attr(755,root,root) %{_bindir}/pdf2dcm
+%attr(755,root,root) %{_bindir}/stl2dcm
%attr(755,root,root) %{_bindir}/storescp
%attr(755,root,root) %{_bindir}/storescu
%attr(755,root,root) %{_bindir}/termscu
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dcmtk/printers.cfg
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dcmtk/storescp.cfg
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dcmtk/storescu.cfg
-%{_datadir}/dcmtk
+%{_datadir}/dcmtk-%{version}
+%{_mandir}/man1/cda2dcm.1*
%{_mandir}/man1/dcm*.1*
%{_mandir}/man1/dcod2lum.1*
%{_mandir}/man1/dconvlum.1*
%{_mandir}/man1/findscu.1*
%{_mandir}/man1/getscu.1*
%{_mandir}/man1/img2dcm.1*
+%{_mandir}/man1/mkcsmapper.1*
+%{_mandir}/man1/mkesdb.1*
%{_mandir}/man1/movescu.1*
%{_mandir}/man1/pdf2dcm.1*
+%{_mandir}/man1/stl2dcm.1*
%{_mandir}/man1/storescp.1*
%{_mandir}/man1/storescu.1*
%{_mandir}/man1/termscu.1*
%files libs
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libcmr.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libcmr.so.13
+%attr(755,root,root) %ghost %{_libdir}/libcmr.so.18
%attr(755,root,root) %{_libdir}/libdcmdata.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmdata.so.13
+%attr(755,root,root) %ghost %{_libdir}/libdcmdata.so.18
+%attr(755,root,root) %{_libdir}/libdcmect.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libdcmect.so.18
%attr(755,root,root) %{_libdir}/libdcmdsig.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmdsig.so.13
+%attr(755,root,root) %ghost %{_libdir}/libdcmdsig.so.18
%attr(755,root,root) %{_libdir}/libdcmfg.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmfg.so.13
+%attr(755,root,root) %ghost %{_libdir}/libdcmfg.so.18
%attr(755,root,root) %{_libdir}/libdcmimage.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmimage.so.13
+%attr(755,root,root) %ghost %{_libdir}/libdcmimage.so.18
%attr(755,root,root) %{_libdir}/libdcmimgle.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmimgle.so.13
+%attr(755,root,root) %ghost %{_libdir}/libdcmimgle.so.18
%attr(755,root,root) %{_libdir}/libdcmiod.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmiod.so.13
+%attr(755,root,root) %ghost %{_libdir}/libdcmiod.so.18
%attr(755,root,root) %{_libdir}/libdcmjpeg.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmjpeg.so.13
+%attr(755,root,root) %ghost %{_libdir}/libdcmjpeg.so.18
%attr(755,root,root) %{_libdir}/libdcmjpls.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmjpls.so.13
+%attr(755,root,root) %ghost %{_libdir}/libdcmjpls.so.18
%attr(755,root,root) %{_libdir}/libdcmnet.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmnet.so.13
+%attr(755,root,root) %ghost %{_libdir}/libdcmnet.so.18
%attr(755,root,root) %{_libdir}/libdcmpstat.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmpstat.so.13
+%attr(755,root,root) %ghost %{_libdir}/libdcmpstat.so.18
%attr(755,root,root) %{_libdir}/libdcmqrdb.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmqrdb.so.13
+%attr(755,root,root) %ghost %{_libdir}/libdcmqrdb.so.18
%attr(755,root,root) %{_libdir}/libdcmrt.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmrt.so.13
+%attr(755,root,root) %ghost %{_libdir}/libdcmrt.so.18
%attr(755,root,root) %{_libdir}/libdcmseg.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmseg.so.13
+%attr(755,root,root) %ghost %{_libdir}/libdcmseg.so.18
%attr(755,root,root) %{_libdir}/libdcmpmap.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmpmap.so.13
+%attr(755,root,root) %ghost %{_libdir}/libdcmpmap.so.18
%attr(755,root,root) %{_libdir}/libdcmsr.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmsr.so.13
+%attr(755,root,root) %ghost %{_libdir}/libdcmsr.so.18
%attr(755,root,root) %{_libdir}/libdcmtract.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmtract.so.13
+%attr(755,root,root) %ghost %{_libdir}/libdcmtract.so.18
%attr(755,root,root) %{_libdir}/libdcmtls.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmtls.so.13
+%attr(755,root,root) %ghost %{_libdir}/libdcmtls.so.18
%attr(755,root,root) %{_libdir}/libdcmwlm.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmwlm.so.13
+%attr(755,root,root) %ghost %{_libdir}/libdcmwlm.so.18
+%attr(755,root,root) %{_libdir}/libdcmxml.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libdcmxml.so.18
%attr(755,root,root) %{_libdir}/libi2d.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libi2d.so.13
+%attr(755,root,root) %ghost %{_libdir}/libi2d.so.18
%attr(755,root,root) %{_libdir}/libijg12.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libijg12.so.13
+%attr(755,root,root) %ghost %{_libdir}/libijg12.so.18
%attr(755,root,root) %{_libdir}/libijg16.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libijg16.so.13
+%attr(755,root,root) %ghost %{_libdir}/libijg16.so.18
%attr(755,root,root) %{_libdir}/libijg8.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libijg8.so.13
+%attr(755,root,root) %ghost %{_libdir}/libijg8.so.18
+%attr(755,root,root) %{_libdir}/liboficonv.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/liboficonv.so.18
%attr(755,root,root) %{_libdir}/liboflog.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/liboflog.so.13
+%attr(755,root,root) %ghost %{_libdir}/liboflog.so.18
%attr(755,root,root) %{_libdir}/libofstd.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libofstd.so.13
+%attr(755,root,root) %ghost %{_libdir}/libofstd.so.18
%files devel
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libcmr.so
%attr(755,root,root) %{_libdir}/libdcmdata.so
%attr(755,root,root) %{_libdir}/libdcmdsig.so
+%attr(755,root,root) %{_libdir}/libdcmect.so
%attr(755,root,root) %{_libdir}/libdcmfg.so
%attr(755,root,root) %{_libdir}/libdcmimage.so
%attr(755,root,root) %{_libdir}/libdcmimgle.so
%attr(755,root,root) %{_libdir}/libdcmtls.so
%attr(755,root,root) %{_libdir}/libdcmtract.so
%attr(755,root,root) %{_libdir}/libdcmwlm.so
+%attr(755,root,root) %{_libdir}/libdcmxml.so
%attr(755,root,root) %{_libdir}/libi2d.so
%attr(755,root,root) %{_libdir}/libijg12.so
%attr(755,root,root) %{_libdir}/libijg16.so
%attr(755,root,root) %{_libdir}/libijg8.so
+%attr(755,root,root) %{_libdir}/liboficonv.so
%attr(755,root,root) %{_libdir}/liboflog.so
%attr(755,root,root) %{_libdir}/libofstd.so
%{_libdir}/cmake/dcmtk
%{_includedir}/dcmtk
+%{_pkgconfigdir}/dcmtk.pc