commit:     e902da31307d79b5eb107b36c5192472af74cf92
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 28 13:30:48 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Jul 28 13:30:59 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e902da31

media-gfx/graphicsmagick: fix build w/ libjpeg-turbo-3

Closes: https://bugs.gentoo.org/909834
Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...graphicsmagick-1.3.40-libjpeg-turbo-3-001.patch |  69 +++++++++
 ...graphicsmagick-1.3.40-libjpeg-turbo-3-002.patch |  48 ++++++
 ...graphicsmagick-1.3.40-libjpeg-turbo-3-003.patch |  31 ++++
 .../graphicsmagick/graphicsmagick-1.3.40-r1.ebuild | 163 +++++++++++++++++++++
 4 files changed, 311 insertions(+)

diff --git 
a/media-gfx/graphicsmagick/files/graphicsmagick-1.3.40-libjpeg-turbo-3-001.patch
 
b/media-gfx/graphicsmagick/files/graphicsmagick-1.3.40-libjpeg-turbo-3-001.patch
new file mode 100644
index 000000000000..a505f8b7e2d8
--- /dev/null
+++ 
b/media-gfx/graphicsmagick/files/graphicsmagick-1.3.40-libjpeg-turbo-3-001.patch
@@ -0,0 +1,69 @@
+https://bugs.gentoo.org/909834
+https://hg.osdn.net/view/graphicsmagick/GM/rev/f07f6a9c3a58
+
+# HG changeset patch
+# User Bob Friesenhahn <[email protected]>
+# Date 1675529318 21600
+# Node ID f07f6a9c3a5862971b17d1481bb53f0666b0b66c
+# Parent  166bc6d3500ddeb243c7c1b25ca0d9eade8e3b55
+configure.ac: Test for interesting libjpeg-turbo 3.0 functions
+
+--- a/configure
++++ b/configure
+@@ -26116,6 +26116,20 @@
+         { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ $as_echo "yes" >&6; }
+         have_jpeg='yes'
++        # Test for interesting libjpeg-turbo 3.0 functions (which may also 
appear in other JPEG libraries)
++        for ac_func in jpeg_enable_lossless jpeg12_write_scanlines 
jpeg16_write_scanlines \
++                        jpeg12_read_scanlines jpeg16_read_scanlines
++do :
++  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
++if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
++  cat >>confdefs.h <<_ACEOF
++#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
++_ACEOF
++
++fi
++done
++
+     fi
+     else
+         { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+--- a/configure.ac
++++ b/configure.ac
+@@ -2250,6 +2250,9 @@
+         AC_DEFINE([HasJPEG],[1],[Define if you have JPEG library])
+         AC_MSG_RESULT([yes])
+         have_jpeg='yes'
++        # Test for interesting libjpeg-turbo 3.0 functions (which may also 
appear in other JPEG libraries)
++        AC_CHECK_FUNCS([jpeg_enable_lossless jpeg12_write_scanlines 
jpeg16_write_scanlines \
++                        jpeg12_read_scanlines jpeg16_read_scanlines])
+     fi
+     else
+         AC_MSG_RESULT([no])
+--- a/magick/magick_config.h.in
++++ b/magick/magick_config.h.in
+@@ -149,6 +149,21 @@
+ /* Define to 1 if you have the `jas_init_library' function. */
+ #undef HAVE_JAS_INIT_LIBRARY
+ 
++/* Define to 1 if you have the `jpeg12_read_scanlines' function. */
++#undef HAVE_JPEG12_READ_SCANLINES
++
++/* Define to 1 if you have the `jpeg12_write_scanlines' function. */
++#undef HAVE_JPEG12_WRITE_SCANLINES
++
++/* Define to 1 if you have the `jpeg16_read_scanlines' function. */
++#undef HAVE_JPEG16_READ_SCANLINES
++
++/* Define to 1 if you have the `jpeg16_write_scanlines' function. */
++#undef HAVE_JPEG16_WRITE_SCANLINES
++
++/* Define to 1 if you have the `jpeg_enable_lossless' function. */
++#undef HAVE_JPEG_ENABLE_LOSSLESS
++
+ /* Define if you have the <lcms2.h> header file. */
+ #undef HAVE_LCMS2_H
+ 

diff --git 
a/media-gfx/graphicsmagick/files/graphicsmagick-1.3.40-libjpeg-turbo-3-002.patch
 
b/media-gfx/graphicsmagick/files/graphicsmagick-1.3.40-libjpeg-turbo-3-002.patch
new file mode 100644
index 000000000000..d45fc6d9605b
--- /dev/null
+++ 
b/media-gfx/graphicsmagick/files/graphicsmagick-1.3.40-libjpeg-turbo-3-002.patch
@@ -0,0 +1,48 @@
+https://bugs.gentoo.org/909834
+https://hg.osdn.net/view/graphicsmagick/GM/rev/166bc6d3500d
+
+# HG changeset patch
+# User Bob Friesenhahn <[email protected]>
+# Date 1675522420 21600
+# Node ID 166bc6d3500ddeb243c7c1b25ca0d9eade8e3b55
+# Parent  8c82d3be78692071e2f74fb1b9543e9b8384d7cb
+JPEG: Ignore C_LOSSLESS_SUPPORTED/D_LOSSLESS_SUPPORTED defined by JPEG-Turbo
+
+--- a/coders/jpeg.c
++++ b/coders/jpeg.c
+@@ -1,5 +1,5 @@
+ /*
+-% Copyright (C) 2003-2022 GraphicsMagick Group
++% Copyright (C) 2003-2023 GraphicsMagick Group
+ % Copyright (C) 2002 ImageMagick Studio
+ % Copyright 1991-1999 E. I. du Pont de Nemours and Company
+ %
+@@ -954,7 +954,7 @@
+     i;
+ 
+   save_quality=0;
+-#ifdef D_LOSSLESS_SUPPORTED
++#if !defined(LIBJPEG_TURBO_VERSION_NUMBER) && defined(D_LOSSLESS_SUPPORTED)
+   if (image->compression==LosslessJPEGCompression)
+     {
+       save_quality=100;
+@@ -1461,7 +1461,9 @@
+     }
+ #endif
+ #if (JPEG_LIB_VERSION >= 61) && defined(D_PROGRESSIVE_SUPPORTED)
+-#ifdef D_LOSSLESS_SUPPORTED
++#if !defined(LIBJPEG_TURBO_VERSION_NUMBER) && defined(D_LOSSLESS_SUPPORTED)
++  /* This code is based on a patch to IJG JPEG 6b, or somesuch.  Standard
++     library does not have a 'process' member. */
+   image->interlace=
+     jpeg_info.process == JPROC_PROGRESSIVE ? LineInterlace : NoInterlace;
+   image->compression=jpeg_info.process == JPROC_LOSSLESS ?
+@@ -2896,7 +2898,7 @@
+   if ((image->compression == LosslessJPEGCompression) ||
+       (quality > 100))
+     {
+-#if defined(C_LOSSLESS_SUPPORTED)
++#if !defined(LIBJPEG_TURBO_VERSION_NUMBER) && defined(C_LOSSLESS_SUPPORTED)
+       if (quality < 100)
+         ThrowException(&image->exception,CoderWarning,
+                        LosslessToLossyJPEGConversion,(char *) NULL);

diff --git 
a/media-gfx/graphicsmagick/files/graphicsmagick-1.3.40-libjpeg-turbo-3-003.patch
 
b/media-gfx/graphicsmagick/files/graphicsmagick-1.3.40-libjpeg-turbo-3-003.patch
new file mode 100644
index 000000000000..5b72576b1512
--- /dev/null
+++ 
b/media-gfx/graphicsmagick/files/graphicsmagick-1.3.40-libjpeg-turbo-3-003.patch
@@ -0,0 +1,31 @@
+https://bugs.gentoo.org/909834
+https://hg.osdn.net/view/graphicsmagick/GM/rev/03561d79e918
+
+# HG changeset patch
+# User Bob Friesenhahn <[email protected]>
+# Date 1676216369 21600
+# Node ID 03561d79e9180a65d204b6240a5846fd8b01d1b4
+# Parent  6eb67db043d537ae350409535873c5cbf55ba14c
+ReadJPEGImage(): Use MagickAllocateResourceLimitedClearedArray()
+
+--- a/coders/jpeg.c
++++ b/coders/jpeg.c
+@@ -1695,7 +1695,7 @@
+         }
+     }
+ 
+-  jpeg_pixels=MagickAllocateResourceLimitedArray(JSAMPLE *,
++  jpeg_pixels=MagickAllocateResourceLimitedClearedArray(JSAMPLE *,
+                                   jpeg_info.output_components,
+                                   MagickArraySize(image->columns,
+                                                   sizeof(JSAMPLE)));
+@@ -1704,9 +1704,6 @@
+       jpeg_destroy_decompress(&jpeg_info);
+       
ThrowJPEGReaderException(ResourceLimitError,MemoryAllocationFailed,image);
+     }
+-  (void) memset(jpeg_pixels,0,MagickArraySize(jpeg_info.output_components,
+-                                              MagickArraySize(image->columns,
+-                                                              
sizeof(JSAMPLE))));
+ 
+   /*
+     Extended longjmp-based error handler (with jpeg_pixels)

diff --git a/media-gfx/graphicsmagick/graphicsmagick-1.3.40-r1.ebuild 
b/media-gfx/graphicsmagick/graphicsmagick-1.3.40-r1.ebuild
new file mode 100644
index 000000000000..119b6ba3c803
--- /dev/null
+++ b/media-gfx/graphicsmagick/graphicsmagick-1.3.40-r1.ebuild
@@ -0,0 +1,163 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools toolchain-funcs
+
+MY_P=${P/graphicsm/GraphicsM}
+DESCRIPTION="Collection of tools and libraries for many image formats"
+HOMEPAGE="http://www.graphicsmagick.org/ 
https://hg.osdn.net/view/graphicsmagick/GM";
+
+if [[ ${PV} == 9999 ]] ; then
+       inherit mercurial
+       EHG_REPO_URI="http://hg.code.sf.net/p/${PN}/code";
+else
+       
VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/usr/share/openpgp-keys/bobfriesenhahn.asc
+       inherit verify-sig
+       SRC_URI="mirror://sourceforge/${PN}/${MY_P}.tar.xz"
+       SRC_URI+=" verify-sig? ( mirror://sourceforge/${PN}/${MY_P}.tar.xz.asc 
)"
+       S="${WORKDIR}/${MY_P}"
+
+       KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~ppc 
~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+
+       BDEPEND="verify-sig? ( sec-keys/openpgp-keys-bobfriesenhahn )"
+fi
+
+LICENSE="MIT"
+SLOT="0/${PV%.*}"
+
+IUSE="bzip2 +cxx debug dynamic-loading fpx heif imagemagick jbig jpeg jpegxl 
lcms lzma"
+IUSE+=" openmp perl png postscript q16 q32 static-libs svg tcmalloc tiff 
truetype"
+IUSE+=" webp wmf X zlib zstd"
+
+RDEPEND="
+       dev-libs/libltdl
+       bzip2? ( app-arch/bzip2 )
+       fpx? ( media-libs/libfpx )
+       heif? ( media-libs/libheif:= )
+       imagemagick? ( !media-gfx/imagemagick )
+       jbig? ( media-libs/jbigkit )
+       jpeg? ( media-libs/libjpeg-turbo:= )
+       jpegxl? ( media-libs/libjxl:= )
+       lcms? ( media-libs/lcms:2 )
+       lzma? ( app-arch/xz-utils )
+       perl? ( dev-lang/perl:= )
+       png? ( media-libs/libpng:= )
+       postscript? ( app-text/ghostscript-gpl )
+       svg? ( dev-libs/libxml2 )
+       tcmalloc? ( dev-util/google-perftools:= )
+       tiff? ( media-libs/tiff:= )
+       truetype? (
+               media-fonts/urw-fonts
+               >=media-libs/freetype-2
+       )
+       webp? ( media-libs/libwebp:= )
+       wmf? ( media-libs/libwmf )
+       X? (
+               x11-libs/libSM
+               x11-libs/libX11
+               x11-libs/libXext
+       )
+       zlib? ( sys-libs/zlib )
+       zstd? ( app-arch/zstd:= )
+"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-1.3.36-flags.patch
+       "${FILESDIR}"/${PN}-1.3.19-perl.patch
+       "${FILESDIR}"/graphicsmagick-1.3.40-libjpeg-turbo-3-001.patch
+       "${FILESDIR}"/graphicsmagick-1.3.40-libjpeg-turbo-3-002.patch
+       "${FILESDIR}"/graphicsmagick-1.3.40-libjpeg-turbo-3-003.patch
+)
+
+pkg_pretend() {
+       [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+}
+
+pkg_setup() {
+       [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+}
+
+src_prepare() {
+       default
+
+       eautoreconf
+}
+
+src_configure() {
+       local depth=8
+
+       use q16 && depth=16
+       use q32 && depth=32
+
+       local myeconfargs=(
+               --enable-largefile
+               --enable-shared
+               $(use_enable static-libs static)
+               $(use_enable debug prof)
+               $(use_enable debug gcov)
+               $(use_enable imagemagick magick-compat)
+               $(use_enable openmp)
+               --with-threads
+               $(use_with dynamic-loading modules)
+               --with-quantum-depth=${depth}
+               --without-frozenpaths
+               $(use_with cxx magick-plus-plus)
+               $(use_with heif)
+               $(use_with jpegxl jxl)
+               $(use_with perl)
+               --with-perl-options=INSTALLDIRS=vendor
+               $(use_with bzip2 bzlib)
+               $(use_with postscript dps)
+               $(use_with fpx)
+               $(use_with jbig)
+               $(use_with webp)
+               $(use_with jpeg)
+               # Needs last-rited/unpackaged jasper
+               --without-jp2
+               $(use_with lcms lcms2)
+               $(use_with lzma)
+               $(use_with png)
+               $(use_with tcmalloc)
+               $(use_with tiff)
+               --without-trio
+               $(use_with truetype ttf)
+               $(use_with wmf)
+               --with-fontpath="${EPREFIX}"/usr/share/fonts
+               --with-gs-font-dir="${EPREFIX}"/usr/share/fonts/urw-fonts
+               --with-windows-font-dir="${EPREFIX}"/usr/share/fonts/corefonts
+               $(use_with svg xml)
+               $(use_with zlib)
+               $(use_with zstd)
+               $(use_with X x)
+       )
+
+       econf "${myeconfargs[@]}"
+}
+
+src_compile() {
+       default
+
+       use perl && emake perl-build
+}
+
+src_test() {
+       unset DISPLAY # some perl tests fail when DISPLAY is set
+
+       default
+}
+
+src_install() {
+       default
+
+       if use perl ; then
+               emake -C PerlMagick DESTDIR="${D}" install
+
+               find "${ED}" -type f -name perllocal.pod -exec rm -f {} + || die
+               find "${ED}" -depth -mindepth 1 -type d -empty -exec rm -rf {} 
+ || die
+       fi
+
+       find "${ED}" -name '*.la' -exec sed -i -e 
"/^dependency_libs/s:=.*:='':" {} + || die
+}

Reply via email to