commit:     7d7c53ec31479a88eeee0249a831ec0f82d269bd
Author:     François-Xavier Carton <fx.carton91 <AT> gmail <DOT> com>
AuthorDate: Mon May 16 15:41:43 2022 +0000
Commit:     Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Tue Jun 21 09:57:16 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7d7c53ec

sci-libs/dcmtk: rename bundled charls to avoid conflicts

Using upstream patch [1].

Note: both Debian [2] and Fedora [3] have given up unbundling charls as
the newer charls 2.0 is incompatible with charls 1.0 used by dcmtk and
causes regressions.

[1] 
https://git.dcmtk.org/?p=dcmtk.git;a=commitdiff;h=09afb527bb889932f919c28f47b08c84fe19ab32
[2] 
https://salsa.debian.org/med-team/dcmtk/-/commit/12aad369f3e5a6a4eac78b206a940cad80608bc7
[3] 
https://src.fedoraproject.org/rpms/dcmtk/c/d9cff801c2e4e2928e247a8c973b7118ec589ed5?branch=rawhide

Closes: https://bugs.gentoo.org/832453
Signed-off-by: François-Xavier Carton <fx.carton91 <AT> gmail.com>
Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> gentoo.org>

 sci-libs/dcmtk/dcmtk-3.6.5-r1.ebuild               | 90 ++++++++++++++++++++++
 .../files/dcmtk-3.6.5-rename-bundled-charls.patch  | 70 +++++++++++++++++
 2 files changed, 160 insertions(+)

diff --git a/sci-libs/dcmtk/dcmtk-3.6.5-r1.ebuild 
b/sci-libs/dcmtk/dcmtk-3.6.5-r1.ebuild
new file mode 100644
index 000000000000..d151996f1e2e
--- /dev/null
+++ b/sci-libs/dcmtk/dcmtk-3.6.5-r1.ebuild
@@ -0,0 +1,90 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+DESCRIPTION="The DICOM Toolkit"
+HOMEPAGE="https://dicom.offis.de/dcmtk.php.en";
+SRC_URI="https://dicom.offis.de/download/dcmtk/release/${P}.tar.gz";
+
+LICENSE="OFFIS"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+SLOT="0"
+IUSE="doc png ssl tcpd tiff +threads xml zlib"
+
+RDEPEND="
+       dev-libs/icu:=
+       virtual/jpeg:0
+       png? ( media-libs/libpng:* )
+       ssl? ( dev-libs/openssl:0= )
+       tcpd? ( sys-apps/tcp-wrappers )
+       tiff? ( media-libs/tiff:0 )
+       xml? ( dev-libs/libxml2:2 )
+       zlib? ( sys-libs/zlib )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="doc? ( app-doc/doxygen )"
+
+PATCHES=(
+       "${FILESDIR}/${P}-rename-bundled-charls.patch"
+)
+
+src_prepare() {
+       cmake_src_prepare
+
+       sed -e "s:share/doc/dcmtk:&-${PV}:" \
+               -e "s:DIR \"/:DIR \"/usr/:" \
+               -e "s:usr/etc:etc:" \
+               -e "s:/lib\":/$(get_libdir)\":" \
+               -e "s:COPYRIGHT::" \
+               -i CMakeLists.txt || die
+       sed -e 's:${CMAKE_INSTALL_PREFIX}/::' \
+               -i dcmwlm/data/CMakeLists.txt doxygen/CMakeLists.txt || die
+       # Temporary workaround: docs are not built with CMake
+       sed -i -e '/include/d' doxygen/Makefile.in || die
+
+       # fix -D deprecation warnings
+       sed -i -e "s|_BSD_SOURCE|_DEFAULT_SOURCE|g" \
+               "${S}"/config/configure.in \
+               "${S}"/CMakeLists.txt || die
+}
+
+src_configure() {
+       local mycmakeargs=(
+               -DCMAKE_INSTALL_SYSCONFDIR="${EPREFIX}/etc"
+               -DDCMTK_WITH_ICU=ON
+               -DDCMTK_WITH_TIFF=$(usex tiff)
+               -DDCMTK_WITH_PNG=$(usex png)
+               -DDCMTK_WITH_XML=$(usex xml)
+               -DDCMTK_WITH_ZLIB=$(usex zlib)
+               -DDCMTK_WITH_OPENSSL=$(usex ssl)
+               -DDCMTK_WITH_DOXYGEN=$(usex doc)
+               -DDCMTK_WITH_THREADS=$(usex threads)
+       )
+
+       cmake_src_configure
+
+       if use doc; then
+               cd "${S}"/doxygen || die
+               econf
+       fi
+}
+
+src_compile() {
+       cmake_src_compile
+
+       if use doc; then
+               emake -C "${S}"/doxygen
+       fi
+}
+
+src_install() {
+       doman doxygen/manpages/man1/*
+
+       if use doc; then
+               local HTML_DOCS=( "${S}"/doxygen/htmldocs/. )
+       fi
+       cmake_src_install
+}

diff --git a/sci-libs/dcmtk/files/dcmtk-3.6.5-rename-bundled-charls.patch 
b/sci-libs/dcmtk/files/dcmtk-3.6.5-rename-bundled-charls.patch
new file mode 100644
index 000000000000..5bb51fdc3273
--- /dev/null
+++ b/sci-libs/dcmtk/files/dcmtk-3.6.5-rename-bundled-charls.patch
@@ -0,0 +1,70 @@
+Upstream: 
https://git.dcmtk.org/?p=dcmtk.git;a=commitdiff;h=09afb527bb889932f919c28f47b08c84fe19ab32
+
+From 46b4b4c2d48612b60f27969db142599f56042a47 Mon Sep 17 00:00:00 2001
+From: Marco Eichelberg <[email protected]>
+Date: Tue, 10 Nov 2020 12:31:00 +0100
+Subject: [PATCH] Renamed libcharls to libdcmtkcharls.
+
+Renamed the CharLS JPEG-LS library that is built into DCMTK from
+"charls" to "dcmtkcharls" to avoid a naming conflict with another
+installation of the CharLS library when building shared libraries.
+
+Thanks to Mathieu Malaterre <[email protected]> for the suggestion
+and the patch.
+---
+ dcmjpls/apps/CMakeLists.txt      | 2 +-
+ dcmjpls/libcharls/CMakeLists.txt | 4 ++--
+ dcmjpls/libcharls/intrface.h     | 2 +-
+ dcmjpls/libsrc/CMakeLists.txt    | 2 +-
+ 4 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/dcmjpls/apps/CMakeLists.txt b/dcmjpls/apps/CMakeLists.txt
+index 2a9a452..0cb3f53 100644
+--- a/dcmjpls/apps/CMakeLists.txt
++++ b/dcmjpls/apps/CMakeLists.txt
+@@ -8,5 +8,5 @@ endforeach()
+ 
+ # make sure executables are linked to the corresponding libraries
+ foreach(PROGRAM dcmcjpls dcmdjpls dcml2pnm)
+-  DCMTK_TARGET_LINK_MODULES(${PROGRAM} dcmjpls charls dcmimage dcmimgle 
dcmdata oflog ofstd ofstd)
++  DCMTK_TARGET_LINK_MODULES(${PROGRAM} dcmjpls dcmtkcharls dcmimage dcmimgle 
dcmdata oflog ofstd ofstd)
+ endforeach()
+diff --git a/dcmjpls/libcharls/CMakeLists.txt 
b/dcmjpls/libcharls/CMakeLists.txt
+index 0c5b143..ae0c017 100644
+--- a/dcmjpls/libcharls/CMakeLists.txt
++++ b/dcmjpls/libcharls/CMakeLists.txt
+@@ -2,6 +2,6 @@
+ include_directories("${dcmjpls_SOURCE_DIR}/libcharls" 
"${ofstd_SOURCE_DIR}/include")
+ 
+ # create library from source files
+-DCMTK_ADD_LIBRARY(charls header intrface jpegls)
++DCMTK_ADD_LIBRARY(dcmtkcharls header intrface jpegls)
+ 
+-DCMTK_TARGET_LINK_MODULES(charls ofstd oflog)
++DCMTK_TARGET_LINK_MODULES(dcmtkcharls ofstd oflog)
+diff --git a/dcmjpls/libcharls/intrface.h b/dcmjpls/libcharls/intrface.h
+index c8fdaa9..3aa27fd 100644
+--- a/dcmjpls/libcharls/intrface.h
++++ b/dcmjpls/libcharls/intrface.h
+@@ -10,7 +10,7 @@
+ #include "dcmtk/ofstd/ofstd.h"    /* for size_t */
+ #include "dcmtk/ofstd/ofdefine.h" /* for DCMTK_DECL_EXPORT */
+ 
+-#ifdef charls_EXPORTS
++#ifdef dcmtkcharls_EXPORTS
+ #define DCMTK_CHARLS_EXPORT DCMTK_DECL_EXPORT
+ #else
+ #define DCMTK_CHARLS_EXPORT DCMTK_DECL_IMPORT
+diff --git a/dcmjpls/libsrc/CMakeLists.txt b/dcmjpls/libsrc/CMakeLists.txt
+index 314face..bd928f8 100644
+--- a/dcmjpls/libsrc/CMakeLists.txt
++++ b/dcmjpls/libsrc/CMakeLists.txt
+@@ -4,4 +4,4 @@ include_directories("${dcmjpls_SOURCE_DIR}/include" 
"${ofstd_SOURCE_DIR}/include
+ # create library from source files
+ DCMTK_ADD_LIBRARY(dcmjpls djcparam djdecode djencode djrparam djcodecd 
djutils djcodece)
+ 
+-DCMTK_TARGET_LINK_MODULES(dcmjpls ofstd oflog dcmdata dcmimgle dcmimage 
charls)
++DCMTK_TARGET_LINK_MODULES(dcmjpls ofstd oflog dcmdata dcmimgle dcmimage 
dcmtkcharls)
+-- 
+2.1.4
+

Reply via email to