commit:     19fa78b557686620270aa70ca58d398b3ecc2e33
Author:     François-Xavier Carton <fx.carton91 <AT> gmail <DOT> com>
AuthorDate: Tue Feb  1 10:14:53 2022 +0000
Commit:     Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Tue Aug 23 10:58:02 2022 +0000
URL:        https://gitweb.gentoo.org/proj/sci.git/commit/?id=19fa78b5

sci-libs/gdcm: new package

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

 .../gdcm/files/gdcm-3.0.14-include-math-h.patch    |  15 +++
 sci-libs/gdcm/files/gdcm_support_vtk9.patch        |  70 ++++++++++++
 sci-libs/gdcm/gdcm-3.0.14.ebuild                   | 121 +++++++++++++++++++++
 sci-libs/gdcm/metadata.xml                         |  14 +++
 4 files changed, 220 insertions(+)

diff --git a/sci-libs/gdcm/files/gdcm-3.0.14-include-math-h.patch 
b/sci-libs/gdcm/files/gdcm-3.0.14-include-math-h.patch
new file mode 100644
index 000000000..ba99c3547
--- /dev/null
+++ b/sci-libs/gdcm/files/gdcm-3.0.14-include-math-h.patch
@@ -0,0 +1,15 @@
+https://cgit.freebsd.org/ports/plain/devel/gdcm/files/patch-Utilities_VTK_vtkImageMapToWindowLevelColors2.cxx?id=8f5541298099b722e34632ca9ed388bda91064e7
+
+- workaround for https://sourceforge.net/p/gdcm/bugs/536/
+
+--- a/Utilities/VTK/vtkImageMapToWindowLevelColors2.cxx        2022-06-26 
20:39:45 UTC
++++ b/Utilities/VTK/vtkImageMapToWindowLevelColors2.cxx
+@@ -37,6 +37,8 @@
+ #include "vtkScalarsToColors.h"
+ #include "vtkPointData.h"
+ 
++#include <math.h>
++
+ //vtkCxxRevisionMacro(vtkImageMapToWindowLevelColors2, "$Revision: 1.3 $")
+ vtkStandardNewMacro(vtkImageMapToWindowLevelColors2)
+ 

diff --git a/sci-libs/gdcm/files/gdcm_support_vtk9.patch 
b/sci-libs/gdcm/files/gdcm_support_vtk9.patch
new file mode 100644
index 000000000..3818a82b5
--- /dev/null
+++ b/sci-libs/gdcm/files/gdcm_support_vtk9.patch
@@ -0,0 +1,70 @@
+--- a/Utilities/VTK/CMakeLists.txt
++++ b/Utilities/VTK/CMakeLists.txt
+@@ -26,6 +26,11 @@
+   )
+ endif()
+ 
++if( ${VTK_MAJOR_VERSION} GREATER_EQUAL 9 )
++  set(VTK_INCLUDE_DIRS 
"${VTK_PREFIX_PATH}/include/vtk-${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}")
++  include_directories(AFTER ${VTK_INCLUDE_DIRS})
++endif()
++
+ include(CheckCXXSourceCompiles)
+ set(CMAKE_REQUIRED_INCLUDES ${VTK_INCLUDE_DIRS})
+ CHECK_CXX_SOURCE_COMPILES(
+@@ -94,6 +99,10 @@
+   endforeach()
+ endif()
+ 
++if( ${VTK_MAJOR_VERSION} GREATER_EQUAL 9 )
++  string(REGEX REPLACE "vtk([^;]+)" "VTK::\\1" vtkgdcm_LIBS "${vtkgdcm_LIBS}")
++endif()
++
+ # Use wrapping hints for this project.
+ #set(VTK_WRAP_HINTS "${PROJECT_SOURCE_DIR}/hints")
+ 
+--- a/Utilities/VTK/Applications/CMakeLists.txt
++++ b/Utilities/VTK/Applications/CMakeLists.txt
+@@ -25,6 +25,11 @@
+     )
+ endif()
+ 
++set(vtk_ioxml vtkIOXML)
++if( ${VTK_MAJOR_VERSION} GREATER_EQUAL 9 )
++  set(vtk_ioxml VTK::IOXML)
++endif()
++
+ foreach(app ${GDCM_VTK_APPS})
+   add_executable(${app} ${app}.cxx)
+   if(GDCM_EXECUTABLE_PROPERTIES)
+@@ -42,7 +47,7 @@
+     endif()
+   else()
+     # >= 6.0
+-    target_link_libraries(${app} ${VTK_LIBRARIES} vtkIOXML)
++    target_link_libraries(${app} ${VTK_LIBRARIES} ${vtk_ioxml})
+   endif()
+   if(WIN32 AND NOT CYGWIN)
+     target_link_libraries(${app} gdcmgetopt)
+--- a/Utilities/VTK/vtkGDCMPolyDataWriter.cxx
++++ b/Utilities/VTK/vtkGDCMPolyDataWriter.cxx
+@@ -496,6 +496,9 @@
+   sqi = new SequenceOfItems;
+ 
+   vtkIdType npts = 0;
++#if VTK_MAJOR_VERSION >= 9
++  const
++#endif
+   vtkIdType *indx = 0;
+   double v[3];
+   unsigned int cellnum = 0;
+@@ -759,6 +762,9 @@
+     vtkPoints *pts;
+     vtkCellArray *polys;
+     vtkIdType npts = 0;
++#if VTK_MAJOR_VERSION >= 9
++  const
++#endif
+     vtkIdType *indx = 0;
+     pts = theData->GetPoints();
+     polys = theData->GetPolys();

diff --git a/sci-libs/gdcm/gdcm-3.0.14.ebuild b/sci-libs/gdcm/gdcm-3.0.14.ebuild
new file mode 100644
index 000000000..5249e81b7
--- /dev/null
+++ b/sci-libs/gdcm/gdcm-3.0.14.ebuild
@@ -0,0 +1,121 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{9..10} )
+
+inherit cmake python-single-r1
+
+DESCRIPTION="Cross-platform DICOM implementation"
+HOMEPAGE="http://gdcm.sourceforge.net/";
+SRC_URI="mirror://sourceforge/gdcm/${P}.tar.bz2
+       test? ( mirror://sourceforge/gdcm/gdcmData.tar.gz )" # 3.0.14: .bz2 is 
broken, should be checked in next release
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="doc python test vtk"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+       app-text/poppler:0=[cxx]
+       dev-libs/expat:0=
+       dev-libs/json-c:0=
+       dev-libs/libxml2:2=
+       dev-libs/openssl:0=
+       >=media-libs/charls-2.0.0:0=
+       >=media-libs/openjpeg-2.0.0:2=
+       sys-apps/util-linux:0=
+       sys-libs/zlib:0=
+       python? ( ${PYTHON_DEPS} )
+       vtk? (
+               sci-libs/vtk[rendering]
+               python? (
+                       sci-libs/vtk[python,${PYTHON_SINGLE_USEDEP}]
+               )
+       )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="
+       dev-libs/libxslt
+       app-text/docbook-xsl-ns-stylesheets
+       doc? ( app-doc/doxygen[dot] )
+       python? (
+               ${PYTHON_DEPS}
+               >=dev-lang/swig-3.0.7
+       )"
+
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
+
+PATCHES=(
+       "${FILESDIR}/gdcm_support_vtk9.patch"
+       "${FILESDIR}/gdcm-3.0.14-include-math-h.patch"
+)
+
+pkg_setup() {
+       use python && python-single-r1_pkg_setup
+}
+
+src_prepare() {
+       # drop unbundled libs
+       local -a DROPS=( gdcmcharls gdcmexpat gdcmopenjpeg gdcmuuid gdcmzlib 
getopt pvrg KWStyle Release )
+       local x
+       for x in "${DROPS[@]}"; do
+               ebegin "Dropping bundled ${x#gdcm}"
+               rm -r "Utilities/${x}" || die
+               sed -i "s,^[ 
\t]*APPEND_COPYRIGHT(\\\${CMAKE_CURRENT_SOURCE_DIR}/${x}/,#&," 
"Utilities/CMakeLists.txt" || die
+               eend $?
+       done
+       find Utilities -mindepth 1 -maxdepth 1 '!' -name doxygen '!' -name VTK 
-type d \
+               -exec ewarn "Using bundled" {} ';' || die
+
+       # fix charls include case
+       sed -i 's:CharLS/charls\.h:charls/charls.h:' CMake/FindCharLS.cmake 
Utilities/gdcm_charls.h || die
+       sed -i 's:NAMES CharLS:NAMES charls:' CMake/FindCharLS.cmake || die
+
+       # Use prefixed socket++ (to avoid potential conflicts)
+       sed -i '/target_link_libraries(/s/socketxx/gdcm&/' \
+               Source/MessageExchangeDefinition/CMakeLists.txt \
+               Applications/Cxx/CMakeLists.txt \
+               || die
+
+       cmake_src_prepare
+}
+
+src_configure() {
+       local mycmakeargs=(
+               -DCMAKE_SKIP_RPATH=ON
+               -DGDCM_BUILD_SHARED_LIBS=ON
+               -DGDCM_DATA_ROOT="${WORKDIR}/gdcmData"
+               -DGDCM_INSTALL_LIB_DIR="$(get_libdir)"
+               -DGDCM_INSTALL_DOC_DIR="share/doc/${P}"
+               -DGDCM_INSTALL_PYTHONMODULE_DIR="lib/${EPYTHON}/site-packages"
+               -DGDCM_USE_SYSTEM_ZLIB=ON
+               -DGDCM_USE_SYSTEM_OPENSSL=ON
+               -DGDCM_USE_SYSTEM_UUID=ON
+               -DGDCM_USE_SYSTEM_EXPAT=ON
+               -DGDCM_USE_SYSTEM_JSON=ON
+               -DGDCM_USE_SYSTEM_PAPYRUS3=OFF
+               -DGDCM_USE_SYSTEM_SOCKETXX=OFF
+               -DSOCKETXX_NAMESPACE=GDCMSOCKETXX
+               -DGDCM_USE_SYSTEM_LJPEG=OFF
+               -DGDCM_USE_SYSTEM_OPENJPEG=ON
+               -DGDCM_USE_SYSTEM_CHARLS=ON
+               -DGDCM_USE_SYSTEM_POPPLER=ON
+               -DGDCM_USE_SYSTEM_LIBXML2=ON
+               -DGDCM_BUILD_TESTING=$(usex test)
+               -DGDCM_WRAP_PYTHON=$(usex python)
+               $(usex python "-DGDCM_DEFAULT_PYTHON_VERSION=${EPYTHON#python}" 
"")
+               -DGDCM_WRAP_PERL=OFF
+               -DGDCM_WRAP_PHP=OFF
+               -DGDCM_WRAP_JAVA=OFF
+               -DGDCM_WRAP_CSHARP=OFF
+               -DGDCM_DOCUMENTATION=$(usex doc)
+               $(usex doc "-DGDCM_PDF_DOCUMENTATION=OFF" "")
+               -DGDCM_BUILD_EXAMPLES=OFF
+               -DGDCM_BUILD_APPLICATIONS=ON
+               -DGDCM_USE_VTK=$(usex vtk)
+       )
+       cmake_src_configure
+}

diff --git a/sci-libs/gdcm/metadata.xml b/sci-libs/gdcm/metadata.xml
new file mode 100644
index 000000000..1845bf1bd
--- /dev/null
+++ b/sci-libs/gdcm/metadata.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+       <maintainer type="person">
+               <email>[email protected]</email>
+               <name>François-Xavier Carton</name>
+       </maintainer>
+       <use>
+               <flag name="vtk">Build <pkg>sci-libs/vtk</pkg> bridge</flag>
+       </use>
+       <upstream>
+               <remote-id type="sourceforge">gdcm</remote-id>
+       </upstream>
+</pkgmetadata>

Reply via email to