Sync from SUSE:SLFO:Main ImageMagick revision 1a0edb91c5d7698ceffe27a6c0dafb0c

This commit is contained in:
Adrian Schröter 2024-05-03 10:45:01 +02:00
commit a810e832ff
12 changed files with 5371 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

BIN
ImageMagick-7.1.1-21.tar.xz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEE2Ccu9R2iI+TQW0Zpiatj1IJ3N3oFAmU0f0MACgkQiatj1IJ3
N3qD5A//Wn6lXGgyL6rLFtiHxGvCEmW6iZG2gvNTHRMEshnVIix41xvpDMn/Oduh
o+rJ8KID+dPnOUzOhgX5dl0JYxUQg1Qd5OwbtMOqJf6DtiHLKGGyKK9+iu1GX3pW
MRimmkEZWJj4ro28SCdlk/694VWJG9QynbE4opoj3a0HF63RPvHdG9FEb86tGMJs
B61gT4jkLMiEVEBN7pDDSCxcveabEG0QRB0CwcQKg3LEcqgHmf69qmCSDvXgxN8F
LOWvwP2kt7Gqh9OOruR4by+91SrV5Y+ckh0zS18wbQL7k346prqP0lUaa/oUCuDT
LszX9hXG6tK0T2kl25kct6fFOP5FCsy5pV5BoUu7GAVgz4ISC+/FzxHecdx2lLTg
YePZPdWG21/1FvLiX5YTCC1FLaiPGs6Fg9n21kskxKZZHXfXWwLkDNUXolSH+DLQ
92xBEDYTePmemD7cf7dduOUt5UgtQcHhLoaHKFvM1AWTBh7PoWlWF4OeinmPONC3
+R2cGlXEVtpzo8bGVgx4epYAmbvHtLJXT9ckl32p5kow6fVc+f5hsaP2cKSzAEW+
UJlgfOFk0sKX1k3RZLgnWu9co0r5gsi2ZWZbyqlmWZlJfR9FxFfM4zni+ipe4HTp
Z59bCP+z1NMCUyOI4mc/i2L8Fd9YItCG0scweuw8fugsPs/EN1w=
=8EVl
-----END PGP SIGNATURE-----

View File

@ -0,0 +1,15 @@
--- a/config/policy-secure.xml
+++ b/config/policy-secure.xml
@@ -92,8 +92,10 @@
<policy domain="path" rights="none" pattern="/etc/*"/>
<!-- Indirect reads are not permitted. -->
<policy domain="path" rights="none" pattern="@*"/>
+ <!-- These image types can expose risks on read and write -->
+ <policy domain="module" rights="none" pattern="{EPHEMERAL,URL,HTTPS,MVG,MSL,TEXT,SHOW,WIN,PLT}"/>
<!-- These image types are security risks on read, but write is fine -->
- <policy domain="module" rights="write" pattern="{MSL,MVG,PS,SVG,URL,XPS}"/>
+ <policy domain="module" rights="write" pattern="{MSL,MVG,PS,SVG,URL,XPS,PDF,EPI,EPS,PCL,PS1,PS2,PS3}"/>
<!-- This policy sets the number of times to replace content of certain
memory buffers and temporary files before they are freed or deleted. -->
<policy domain="system" name="shred" value="1"/>

View File

@ -0,0 +1,12 @@
--- a/PerlMagick/t/filter.t.orig 2021-10-04 14:07:03.016458903 +0000
+++ b/PerlMagick/t/filter.t 2021-10-04 14:08:31.717025766 +0000
@@ -57,7 +57,7 @@ testFilterCompare('input.miff', "fuzz=>$
testFilterCompare('input.miff', "fuzz=>$fuzz", 'reference/filter/Colorize.miff', 'Colorize', q/fill=>"red", blend=>"50%"/, 0.00001, 0.004);
++$test;
-testFilterCompare('input.miff', q//, 'reference/filter/Contrast.miff', 'Contrast', q//, 0.00001, 0.004);
+testFilterCompare('input.miff', q//, 'reference/filter/Contrast.miff', 'Contrast', q//, 0.0002, 0.4);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Convolve.miff', 'Convolve', q/[0.0625, 0.0625, 0.0625, 0.0625, 0.5, 0.0625, 0.0625, 0.0625, 0.0625]/, 0.1, 0.7);

View File

@ -0,0 +1,31 @@
Index: ImageMagick-7.1.1-21/MagickCore/resource.c
===================================================================
--- ImageMagick-7.1.1-21.orig/MagickCore/resource.c
+++ ImageMagick-7.1.1-21/MagickCore/resource.c
@@ -136,7 +136,7 @@ static ResourceInfo
MagickULLConstant(768), /* file limit */
MagickULLConstant(1), /* thread limit */
MagickULLConstant(0), /* throttle limit */
- MagickResourceInfinity /* time limit */
+ INT_MAX /* time limit */
};
static SemaphoreInfo
@@ -971,7 +971,7 @@ MagickExport MagickBooleanType ListMagic
(void) FormatMagickSize(resource_info.disk_limit,MagickTrue,"B",
MagickFormatExtent,disk_limit);
(void) CopyMagickString(time_limit,"unlimited",MagickFormatExtent);
- if (resource_info.time_limit != MagickResourceInfinity)
+ if (resource_info.time_limit != INT_MAX)
FormatTimeToLive(resource_info.time_limit,time_limit);
(void) FormatLocaleFile(file,"Resource limits:\n");
(void) FormatLocaleFile(file," Width: %s\n",width_limit);
@@ -1333,7 +1333,7 @@ MagickPrivate MagickBooleanType Resource
limit,100.0));
limit=DestroyString(limit);
}
- (void) SetMagickResourceLimit(TimeResource,MagickResourceInfinity);
+ (void) SetMagickResourceLimit(TimeResource,INT_MAX);
limit=GetEnvironmentValue("MAGICK_TIME_LIMIT");
if (limit != (char *) NULL)
{

View File

@ -0,0 +1,15 @@
Index: ImageMagick-7.1.1-17/configure
===================================================================
--- ImageMagick-7.1.1-17.orig/configure
+++ ImageMagick-7.1.1-17/configure
@@ -34840,7 +34840,9 @@ fi
# Subdirectory to place architecture-dependent configuration files
-CONFIGURE_RELATIVE_PATH="${PACKAGE_NAME}-${MAGICK_MAJOR_VERSION}"
+if test "x$CONFIGURE_RELATIVE_PATH" = "x"; then
+ CONFIGURE_RELATIVE_PATH="${PACKAGE_NAME}-${MAGICK_MAJOR_VERSION}"
+fi
printf "%s\n" "#define CONFIGURE_RELATIVE_PATH \"$CONFIGURE_RELATIVE_PATH\"" >>confdefs.h

View File

@ -0,0 +1,25 @@
Index: ImageMagick-7.1.1-18/PerlMagick/t/read.t
===================================================================
--- ImageMagick-7.1.1-18.orig/PerlMagick/t/read.t
+++ ImageMagick-7.1.1-18/PerlMagick/t/read.t
@@ -15,7 +15,7 @@
#
# Test reading formats supported directly by ImageMagick.
#
-BEGIN { $| = 1; $test=1; print "1..47\n"; }
+BEGIN { $| = 1; $test=1; print "1..46\n"; }
END {print "not ok $test\n" unless $loaded;}
use Image::Magick;
$loaded=1;
@@ -72,10 +72,6 @@ print("MAT (MatLab gray 8-bit MSB intege
++$test;
testReadCompare('input_gray_msb_08bit.mat', 'reference/read/input_gray_msb_08bit_mat.miff', q//, 0.22, 1.022);
-print("MAT (MatLab gray 64-bit LSB double) ...\n");
-++$test;
-testReadCompare('input_gray_lsb_double.mat', 'reference/read/input_gray_lsb_double_mat.miff', q//, 0.22, 1.022);
-
print("MAT (MatLab RGB 8-bit LSB integer) ...\n");
++$test;
testReadCompare('input_rgb_lsb_08bit.mat', 'reference/read/input_rgb_lsb_08bit_mat.miff', q//, 0.0, 0.0);

4481
ImageMagick.changes Normal file

File diff suppressed because it is too large Load Diff

53
ImageMagick.keyring Normal file
View File

@ -0,0 +1,53 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.20 (GNU/Linux)
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
Ujew
=X6Ea
-----END PGP PUBLIC KEY BLOCK-----

686
ImageMagick.spec Normal file
View File

@ -0,0 +1,686 @@
#
# spec file for package ImageMagick
#
# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define debug_build 0
%define asan_build 0
%define maj 7
%define mfr_version %{maj}.1.1
%define mfr_revision 21
%define quantum_depth 16
%define source_version %{mfr_version}-%{mfr_revision}
%define clibver 10
%define cwandver 10
%define cxxlibver 5
%define libspec -%{maj}_Q%{quantum_depth}HDRI
%define config_dir ImageMagick-7
%define config_spec config-7
%define test_verbose 1
# bsc#1088463
%define urw_base35_fonts 0
# do/don't pull djvulibre dependency
%bcond_without djvu
Name: ImageMagick
Version: %{mfr_version}.%{mfr_revision}
Release: 0
Summary: Viewer and Converter for Images
License: ImageMagick
Group: Productivity/Graphics/Other
URL: https://imagemagick.org/
Source0: https://imagemagick.org/archive/releases/ImageMagick-%{mfr_version}-%{mfr_revision}.tar.xz
Source1: baselibs.conf
Source2: https://imagemagick.org/archive/releases/ImageMagick-%{mfr_version}-%{mfr_revision}.tar.xz.asc
Source3: ImageMagick.keyring
# suse specific patches
Patch0: ImageMagick-configuration-SUSE.patch
Patch2: ImageMagick-library-installable-in-parallel.patch
#%%ifarch i586
#%%if %%{?suse_version} < 1550
Patch4: ImageMagick-filter.t-disable-Contrast.patch
#%%endif
#%%endif
#%%ifarch s390x
Patch5: ImageMagick-s390x-disable-tests.patch
# https://github.com/ImageMagick/ImageMagick/commit/8f3c56fabc619c1672865257e5aafe33cbfaaf3e https://github.com/ImageMagick/ImageMagick/commit/3a7b915d9a810ce742987b37c935f6ae8b36df10
Patch6: ImageMagick-infinite-resource-time-limit.patch
#%%endif
BuildRequires: chrpath
BuildRequires: dejavu-fonts
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: libjbig-devel
BuildRequires: libjpeg-devel
BuildRequires: libtool
BuildRequires: libwmf-devel
BuildRequires: pkgconfig
BuildRequires: xdg-utils
BuildRequires: xz-devel
BuildRequires: zip
BuildRequires: pkgconfig(OpenEXR)
BuildRequires: pkgconfig(bzip2)
BuildRequires: pkgconfig(fftw3)
BuildRequires: pkgconfig(freetype2)
BuildRequires: pkgconfig(ijs)
BuildRequires: pkgconfig(lcms2)
BuildRequires: pkgconfig(libexif)
BuildRequires: pkgconfig(libheif)
BuildRequires: pkgconfig(libopenjp2) >= 2.1.0
BuildRequires: pkgconfig(libraw)
BuildRequires: pkgconfig(librsvg-2.0)
BuildRequires: pkgconfig(libtiff-4) >= 4.0.3
BuildRequires: pkgconfig(libwebp)
BuildRequires: pkgconfig(libwebpmux)
BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: pkgconfig(lqr-1)
BuildRequires: pkgconfig(pango)
%if %{with djvu}
BuildRequires: pkgconfig(ddjvuapi)
%endif
%if 0%{?suse_version} > 1500
BuildRequires: pkgconfig(libjxl)
%endif
# bsc#1088463
%if %{urw_base35_fonts}
BuildRequires: urw-base35-fonts
%else
BuildRequires: ghostscript-fonts-other
BuildRequires: ghostscript-fonts-std
%endif
%package -n perl-PerlMagick
Summary: Perl interface for ImageMagick
Group: Development/Libraries/Perl
Requires: ImageMagick = %{version}
Requires: libMagickCore%{libspec}%{clibver} = %{version}
Requires: perl = %{perl_version}
%package devel
Summary: Development files for ImageMagick's C interface
Group: Development/Libraries/C and C++
Requires: ImageMagick = %{version}
Requires: glibc-devel
Requires: libMagickCore%{libspec}%{clibver} = %{version}
Requires: libMagickWand%{libspec}%{cwandver} = %{version}
# bnc#741947:
Requires: pkgconfig(bzip2)
%if !%{debug_build}
%package extra
Summary: Extra codecs for the ImageMagick image viewer/converter
Group: Productivity/Graphics/Other
Requires: ImageMagick = %{version}
Requires: libMagickCore%{libspec}%{clibver} = %{version}
Recommends: autotrace
Recommends: dcraw
Recommends: hp2xx
Recommends: libwmf
Recommends: netpbm
Recommends: transfig
%endif
%package -n libMagickCore%{libspec}%{clibver}
Summary: C runtime library for ImageMagick
Group: Productivity/Graphics/Other
Requires: imagick-%{config_spec}
Recommends: %{config_spec}-SUSE
Recommends: ghostscript
Suggests: %{name}-extra = %{version}
%package -n libMagickWand%{libspec}%{cwandver}
Summary: C runtime library for ImageMagick
Group: Productivity/Graphics/Other
%package -n libMagick++%{libspec}%{cxxlibver}
Summary: C++ interface runtime library for ImageMagick
Group: Development/Libraries/C and C++
Requires: %{name}
%package -n libMagick++-devel
Summary: Development files for ImageMagick's C++ interface
Group: Development/Libraries/C and C++
Requires: libMagick++%{libspec}%{cxxlibver} = %{version}
Requires: libstdc++-devel
Requires: pkgconfig(ImageMagick) = %{mfr_version}
%package doc
Summary: Document Files for ImageMagick Library
Group: Documentation/HTML
BuildArch: noarch
%package %{config_spec}-upstream-open
Summary: Open ImageMagick Security Policy
Group: Development/Libraries/C and C++
Requires(post): update-alternatives
Requires(postun):update-alternatives
Provides: imagick-%{config_spec}
Obsoletes: %{config_spec}-upstream < %{version}
Provides: %{config_spec}-upstream = %{version}
%package %{config_spec}-upstream-limited
Summary: Limited ImageMagick Security Policy
Group: Development/Libraries/C and C++
Requires(post): update-alternatives
Requires(postun):update-alternatives
Provides: imagick-%{config_spec}
%package %{config_spec}-upstream-secure
Summary: Secure ImageMagick Security Policy
Group: Development/Libraries/C and C++
Requires(post): update-alternatives
Requires(postun):update-alternatives
Provides: imagick-%{config_spec}
%package %{config_spec}-upstream-websafe
Summary: Web-safe ImageMagick Security Policy
Group: Development/Libraries/C and C++
Requires(post): update-alternatives
Requires(postun):update-alternatives
Provides: imagick-%{config_spec}
%package %{config_spec}-SUSE
Summary: SUSE Provided Configuration
Group: Development/Libraries/C and C++
Requires(post): update-alternatives
Requires(postun):update-alternatives
Provides: imagick-%{config_spec}
%description
ImageMagick is a robust collection of tools and libraries to read,
write, and manipulate an image in many image formats, including popular
formats like TIFF, JPEG, PNG, PDF, PhotoCD, and GIF. With ImageMagick,
you can create images dynamically, making it suitable for Web
applications. You can also resize, rotate, sharpen, color-reduce, or
add special effects to an image and save your completed work in many
different image formats. Image processing operations are available from
the command line as well as through C, C++, and Perl-based programming
interfaces.
%description devel
ImageMagick is a robust collection of tools and libraries to read,
write, and manipulate an image in many image formats, including popular
formats like TIFF, JPEG, PNG, PDF, PhotoCD, and GIF. With ImageMagick,
you can create images dynamically, making it suitable for Web
applications. You can also resize, rotate, sharpen, color-reduce, or
add special effects to an image and save your completed work in many
different image formats. Image processing operations are available from
the command line as well as through C, C++, and Perl-based programming
interfaces.
%if !%{debug_build}
%description extra
This package adds support for djvu, wmf and jpeg2000 formats and
installs optional helper applications.
ImageMagick is a robust collection of tools and libraries to read,
write, and manipulate an image in many image formats, including popular
formats like TIFF, JPEG, PNG, PDF, PhotoCD, and GIF. With ImageMagick,
you can create images dynamically, making it suitable for Web
applications. You can also resize, rotate, sharpen, color-reduce, or
add special effects to an image and save your completed work in many
different image formats. Image processing operations are available from
the command line as well as through C, C++, and Perl-based programming
interfaces.
%endif
%description -n libMagickCore%{libspec}%{clibver}
ImageMagick is a robust collection of tools and libraries to read,
write, and manipulate an image in many image formats, including popular
formats like TIFF, JPEG, PNG, PDF, PhotoCD, and GIF. With ImageMagick,
you can create images dynamically, making it suitable for Web
applications. You can also resize, rotate, sharpen, color-reduce, or
add special effects to an image and save your completed work in many
different image formats. Image processing operations are available from
the command line as well as through C, C++, and Perl-based programming
interfaces.
%description -n libMagickWand%{libspec}%{cwandver}
ImageMagick is a robust collection of tools and libraries to read,
write, and manipulate an image in many image formats, including popular
formats like TIFF, JPEG, PNG, PDF, PhotoCD, and GIF. With ImageMagick,
you can create images dynamically, making it suitable for Web
applications. You can also resize, rotate, sharpen, color-reduce, or
add special effects to an image and save your completed work in many
different image formats. Image processing operations are available from
the command line as well as through C, C++, and Perl-based programming
interfaces.
%description -n perl-PerlMagick
PerlMagick is an objected-oriented Perl interface to ImageMagick. Use
the module to read, manipulate, or write an image or image sequence
from within a Perl script. This makes it suitable for Web CGI scripts.
%description -n libMagick++%{libspec}%{cxxlibver}
This is Magick++, the object-oriented C++ API for the ImageMagick
image-processing library.
Magick++ supports an object model inspired by PerlMagick. Magick++
should be faster than PerlMagick since it is written in a compiled
language which is not parsed at run-time. This makes it suitable for
Web CGI programs. Images support implicit reference counting so that
copy constructors and assignment incur almost no cost. The cost of
actually copying an image (if necessary) is done just before
modification and this copy is managed automatically by Magick++.
De-referenced copies are automatically deleted. The image objects
support value (rather than pointer) semantics so it is trivial to
support multiple generations of an image in memory at one time.
%description -n libMagick++-devel
This is Magick++, the object-oriented C++ API for the ImageMagick
image-processing library.
Magick++ supports an object model inspired by PerlMagick. Magick++
should be faster than PerlMagick since it is written in a compiled
language which is not parsed at run-time. This makes it suitable for
Web CGI programs. Images support implicit reference counting so that
copy constructors and assignment incur almost no cost. The cost of
actually copying an image (if necessary) is done just before
modification and this copy is managed automatically by Magick++.
De-referenced copies are automatically deleted. The image objects
support value (rather than pointer) semantics so it is trivial to
support multiple generations of an image in memory at one time.
%description doc
HTML documentation for ImageMagick library and scene examples.
%description %{config_spec}-upstream-open
This policy is designed for usage in secure settings like those
protected by firewalls or within Docker containers. Within this framework,
ImageMagick enjoys broad access to resources and functionalities. This policy
provides convenient and adaptable options for image manipulation. However,
it's important to note that it might present security vulnerabilities in
less regulated conditions. Thus, organizations should thoroughly assess
the appropriateness of the open policy according to their particular use
case and security prerequisites.
%description %{config_spec}-upstream-limited
The primary objective of the limited security policy is to find a
middle ground between convenience and security. This policy involves the
deactivation of potentially hazardous functionalities, like specific coders
such as SVG or HTTP. Furthermore, it establishes several constraints on
the utilization of resources like memory, storage, and processing duration,
all of which are adjustable. This policy proves advantageous in situations
where there's a need to mitigate the potential threat of handling possibly
malicious or demanding images, all while retaining essential capabilities
for prevalent image formats.
%description %{config_spec}-upstream-secure
This stringent security policy prioritizes the implementation of
rigorous controls and restricted resource utilization to establish a
profoundly secure setting while employing ImageMagick. It deactivates
conceivably hazardous functionalities, including specific coders like
SVG or HTTP. The policy promotes the tailoring of security measures to
harmonize with the requirements of the local environment and the guidelines
of the organization. This protocol encompasses explicit particulars like
limitations on memory consumption, sanctioned pathways for reading and
writing, confines on image sequences, the utmost permissible duration of
workflows, allocation of disk space intended for image data, and even an
undisclosed passphrase for remote connections. By adopting this robust
policy, entities can elevate their overall security stance and alleviate
potential vulnerabilities.
%description %{config_spec}-upstream-websafe
This security protocol designed for web-safe usage focuses on situations
where ImageMagick is applied in publicly accessible contexts, like websites.
It deactivates the capability to read from or write to any image formats
other than web-safe formats like GIF, JPEG, and PNG. Additionally, this
policy prohibits the execution of image filters and indirect reads, thereby
thwarting potential security breaches. By implementing these limitations,
the web-safe policy fortifies the safeguarding of systems accessible to
the public, reducing the risk of exploiting ImageMagick's capabilities
for potential attacks.
%description %{config_spec}-SUSE
ImageMagick configuration as provide by SUSE. It is upstream 'secure'
policy plus disable few other coders for reading and/or writing.
%prep
%setup -q -n ImageMagick-%{source_version}
%patch2 -p1
%ifarch i586
%if %{?suse_version} < 1550
%patch4 -p1
%endif
%endif
%ifarch s390x
%patch5 -p1
%endif
%patch6 -p1
%build
# bsc#1088463
%if %{urw_base35_fonts}
sed -i 's:type1:otf:' config/type-urw-base35.xml.in
sed -i 's:metrics=[^ ]*::' config/type-urw-base35.xml.in
sed -i 's:\.t1:.otf:' config/type-urw-base35.xml.in
%endif
# make library binary package parallel installable
export MODULES_DIRNAME="modules%{libspec}%{clibver}"
export SHAREARCH_DIRNAME="config%{libspec}%{clibver}"
%if %{debug_build}
export CFLAGS="%{optflags} -O0"
export CXXFLAGS="%{optflags} -O0"
%endif
%configure \
--disable-silent-rules \
--enable-shared \
--without-frozenpaths \
--with-magick_plus_plus \
%if !%{debug_build}
--with-modules \
%else
--without-modules \
%endif
--with-threads \
%if %{urw_base35_fonts}
--with-urw-base35-font-dir=%{_datadir}/fonts/truetype \
%else
--with-gs-font-dir=%{_datadir}/fonts/ghostscript \
%endif
--with-perl \
--with-perl-options="INSTALLDIRS=vendor %{?perl_prefix} CC='gcc -L$PWD/magick/.libs' LDDLFLAGS='-shared -L$PWD/magick/.libs'" \
--disable-static \
--with-gvc \
%if %{with ddjvuapi}
--with-djvu \
%endif
--with-fftw \
--with-lcms \
--with-jbig \
--with-openjp2 \
--with-openexr \
--with-rsvg \
--with-webp \
--with-wmf \
--with-quantum-depth=%{quantum_depth} \
--without-gcc-arch \
--enable-pipes=no \
--enable-reproducible-build=yes \
--disable-openmp
%if %{asan_build}
sed -i -e 's/\(^CFLAGS.*\)/\1 -fsanitize=address/' \
-e 's/\(^LIBS =.*\)/\1 -lasan/' \
Makefile
%endif
# don't build together, PerlMagick could be miscompiled when using parallel build[1]
# [1] http://pkgs.fedoraproject.org/cgit/ImageMagick.git/tree/ImageMagick.spec
%make_build all
%make_build -j1 perl-build
# mostly because */demo is used later with %check
# polutting dir with .libs etc.
cp -r Magick++/demo Magick++/examples
cp -r PerlMagick/demo PerlMagick/examples
# other improvements
chmod -x PerlMagick/demo/*.pl
exit 0
%check
%if %{debug_build} || %{asan_build}
# testsuite does not succeed for some reason
# research TODO
exit 0
%endif
%ifarch i586
# do not report test issues related to 32-bit architectures upstream,
# they do not want to dedicate any time to fix them:
# https://github.com/ImageMagick/ImageMagick/issues/1215
rm PerlMagick/t/montage.t
sed -i -e 's:averageImages ::' -e 's:1..13:1..12:' Magick++/tests/tests.tap
%endif
%make_build check
export MAGICK_CODER_MODULE_PATH=$PWD/coders/.libs
export MAGICK_CODER_FILTER_PATH=$PWD/filters/.libs
export MAGICK_CONFIGURE_PATH=$PWD/config
cd PerlMagick
%if %{test_verbose}
sed -i 's:TEST_VERBOSE=0:TEST_VERBOSE=1:' Makefile
%endif
%make_build test
cd ..
%install
%make_install pkgdocdir=%{_defaultdocdir}/%{name}-%{maj}/
# configuration magic
mv -t %{buildroot}%{_sysconfdir}/%{name}* %{buildroot}%{_datadir}/%{name}*/*.xml
for policy in open limited secure websafe; do
cp -r %{buildroot}%{_sysconfdir}/%{config_dir}{,-upstream-$policy}
cp config/policy-$policy.xml %{buildroot}%{_sysconfdir}/%{config_dir}-upstream-$policy
done
mv %{buildroot}%{_sysconfdir}/%{config_dir}{,-SUSE}
cp config/policy-secure.xml %{buildroot}%{_sysconfdir}/%{config_dir}-SUSE
patch --fuzz=0 --dir %{buildroot}%{_sysconfdir}/%{config_dir}-SUSE < %{PATCH0}
mkdir -p %{buildroot}%{_sysconfdir}/alternatives/
ln -sf %{_sysconfdir}/alternatives/%{config_dir} %{buildroot}%{_sysconfdir}/%{config_dir}
# symlink header file relative to /usr/include/ImageMagick-7/
# so that inclusions like wand/*.h and magick/*.h work
ln -s ./MagickCore %{buildroot}%{_includedir}/%{name}-%{maj}/magick
ln -s ./MagickWand %{buildroot}%{_includedir}/%{name}-%{maj}/wand
# these will be included via %doc
rm -r %{buildroot}%{_datadir}/doc/%{name}-%{maj}/
rm %{buildroot}%{_libdir}/*.la
# remove RPATH from perl module
perl_module=$(find %{buildroot}%{_prefix}/lib/perl5 -name '*.so')
chmod 755 $perl_module
chrpath -d $perl_module
chmod 555 $perl_module
# remove %%{buildroot} from distributed file
sed -i 's:%{buildroot}::' %{buildroot}/%{_libdir}/ImageMagick-%{mfr_version}/config%{libspec}%{clibver}/configure.xml
#remove duplicates
%fdupes -s %{buildroot}%{_defaultdocdir}/%{name}-%{maj}
%fdupes -s %{buildroot}%{_includedir}/%{name}-%{maj}
%fdupes -s %{buildroot}%{_libdir}/pkgconfig
%perl_process_packlist
%post -n libMagickCore%{libspec}%{clibver} -p /sbin/ldconfig
%postun -n libMagickCore%{libspec}%{clibver} -p /sbin/ldconfig
%post -n libMagickWand%{libspec}%{cwandver} -p /sbin/ldconfig
%postun -n libMagickWand%{libspec}%{cwandver} -p /sbin/ldconfig
%post -n libMagick++%{libspec}%{cxxlibver} -p /sbin/ldconfig
%postun -n libMagick++%{libspec}%{cxxlibver} -p /sbin/ldconfig
%post %{config_spec}-upstream-open
%{_sbindir}/update-alternatives --quiet --install %{_sysconfdir}/%{config_dir} %{config_dir} %{_sysconfdir}/%{config_dir}-upstream-open 1
%postun %{config_spec}-upstream-open
if [ ! -d %{_sysconfdir}/%{config_dir}-upstream ] ; then
%{_sbindir}/update-alternatives --quiet --remove %{config_dir} %{_sysconfdir}/%{config_dir}-upstream
fi
%post %{config_spec}-upstream-limited
%{_sbindir}/update-alternatives --quiet --install %{_sysconfdir}/%{config_dir} %{config_dir} %{_sysconfdir}/%{config_dir}-upstream-limited 5
%postun %{config_spec}-upstream-limited
if [ ! -d %{_sysconfdir}/%{config_dir}-upstream ] ; then
%{_sbindir}/update-alternatives --quiet --remove %{config_dir} %{_sysconfdir}/%{config_dir}-upstream-limited
fi
%post %{config_spec}-upstream-secure
%{_sbindir}/update-alternatives --quiet --install %{_sysconfdir}/%{config_dir} %{config_dir} %{_sysconfdir}/%{config_dir}-upstream-secure 10
%postun %{config_spec}-upstream-secure
if [ ! -d %{_sysconfdir}/%{config_dir}-upstream ] ; then
%{_sbindir}/update-alternatives --quiet --remove %{config_dir} %{_sysconfdir}/%{config_dir}-upstream-secure
fi
%pretrans %{config_spec}-upstream-open -p <lua>
-- this %pretrans to be removed soon [bug#1122033#c37]
path = "%{_sysconfdir}/%{config_dir}"
st = posix.stat(path)
if st and st.type == "directory" then
os.remove(path .. ".rpmmoved")
os.rename(path, path .. ".rpmmoved")
end
%pretrans %{config_spec}-upstream-limited -p <lua>
-- this %pretrans to be removed soon [bug#1122033#c37]
path = "%{_sysconfdir}/%{config_dir}"
st = posix.stat(path)
if st and st.type == "directory" then
os.remove(path .. ".rpmmoved")
os.rename(path, path .. ".rpmmoved")
end
%pretrans %{config_spec}-upstream-secure -p <lua>
-- this %pretrans to be removed soon [bug#1122033#c37]
path = "%{_sysconfdir}/%{config_dir}"
st = posix.stat(path)
if st and st.type == "directory" then
os.remove(path .. ".rpmmoved")
os.rename(path, path .. ".rpmmoved")
end
%pretrans %{config_spec}-SUSE -p <lua>
-- this %pretrans to be removed soon [bug#1122033#c37]
path = "%{_sysconfdir}/%{config_dir}"
st = posix.stat(path)
if st and st.type == "directory" then
os.remove(path .. ".rpmmoved")
os.rename(path, path .. ".rpmmoved")
end
%pretrans %{config_spec}-upstream-websafe -p <lua>
-- this %pretrans to be removed soon [bug#1122033#c37]
path = "%{_sysconfdir}/%{config_dir}"
st = posix.stat(path)
if st and st.type == "directory" then
os.remove(path .. ".rpmmoved")
os.rename(path, path .. ".rpmmoved")
end
%post %{config_spec}-SUSE
%{_sbindir}/update-alternatives --quiet --install %{_sysconfdir}/%{config_dir} %{config_dir} %{_sysconfdir}/%{config_dir}-SUSE 15
%postun %{config_spec}-SUSE
if [ ! -d %{_sysconfdir}/%{config_dir}-SUSE ] ; then
%{_sbindir}/update-alternatives --quiet --remove %{config_dir} %{_sysconfdir}/%{config_dir}-SUSE
fi
%post %{config_spec}-upstream-websafe
%{_sbindir}/update-alternatives --quiet --install %{_sysconfdir}/%{config_dir} %{config_dir} %{_sysconfdir}/%{config_dir}-upstream-websafe 20
%postun %{config_spec}-upstream-websafe
if [ ! -d %{_sysconfdir}/%{config_dir}-upstream ] ; then
%{_sbindir}/update-alternatives --quiet --remove %{config_dir} %{_sysconfdir}/%{config_dir}-upstream-websafe
fi
%files
%license LICENSE
%doc NEWS.txt
%{_bindir}/[^MW]*
%{_mandir}/man1/*
%exclude %{_mandir}/man1/*-config.1%{ext_man}
%files -n libMagickCore%{libspec}%{clibver}
%license LICENSE
%{_libdir}/libMagickCore*.so.%{clibver}*
%dir %{_libdir}/ImageMagick*
%if !%{debug_build}
%dir %{_libdir}/ImageMagick*/modules*
%dir %{_libdir}/ImageMagick*/modules*/*
%exclude %{_libdir}/ImageMagick*/modules*/*/wmf.*
%exclude %{_libdir}/ImageMagick*/modules*/*/jp2.*
%if %{with djvu}
%exclude %{_libdir}/ImageMagick*/modules*/*/djvu.*
%endif
%{_libdir}/ImageMagick*/modules*/*/*.so
# don't remove la files, see bnc#579798
%{_libdir}/ImageMagick*/modules*/*/*.la
%endif
%{_libdir}/ImageMagick*/config*
%files -n libMagickWand%{libspec}%{cwandver}
%{_libdir}/libMagickWand*.so.%{cwandver}*
%if !%{debug_build}
%files extra
%{_libdir}/ImageMagick*/modules*/*/wmf.so
# don't remove la files, see bnc#579798
%{_libdir}/ImageMagick*/modules*/*/jp2.so
%{_libdir}/ImageMagick*/modules*/*/jp2.la
%if %{with djvu}
%{_libdir}/ImageMagick*/modules*/*/djvu.so
%{_libdir}/ImageMagick*/modules*/*/djvu.la
%endif
%endif
%files devel
%{_libdir}/libMagickCore*.so
%{_libdir}/libMagickWand*.so
%dir %{_includedir}/ImageMagick*
%{_includedir}/ImageMagick*/MagickCore
%{_includedir}/ImageMagick*/MagickWand
%{_includedir}/ImageMagick*/magick
%{_includedir}/ImageMagick*/wand
%{_bindir}/MagickCore-config
%{_bindir}/MagickWand-config
%{_libdir}/pkgconfig/MagickCore*.pc
%{_libdir}/pkgconfig/ImageMagick*.pc
%{_libdir}/pkgconfig/MagickWand*.pc
%{_mandir}/man1/*-config.1%{?ext_man}
%exclude %{_mandir}/man1/Magick++-config.1%{ext_man}
%files -n perl-PerlMagick
%doc PerlMagick/README.txt
%doc PerlMagick/examples
%{_mandir}/man3/*
%{perl_vendorarch}/auto/Image
%{perl_vendorarch}/Image
%files -n libMagick++%{libspec}%{cxxlibver}
%{_libdir}/libMagick++*.so.%{cxxlibver}*
%files -n libMagick++-devel
%doc Magick++/examples
%doc Magick++/NEWS Magick++/README Magick++/AUTHORS
%{_libdir}/libMagick++*.so
%{_includedir}/ImageMagick*/Magick++.h
%{_includedir}/ImageMagick*/Magick++
%{_bindir}/Magick++-config
%{_libdir}/pkgconfig/Magick++*.pc
%{_mandir}/man1/Magick++-config.1%{?ext_man}
%files doc
%{_defaultdocdir}/%{name}-%{maj}
%files %{config_spec}-upstream-open
%dir %{_sysconfdir}/ImageMagick*-upstream-open/
%config(noreplace) %{_sysconfdir}/ImageMagick*-upstream-open/*
%{_sysconfdir}/%{config_dir}
%ghost %{_sysconfdir}/alternatives/%{config_dir}
%files %{config_spec}-upstream-limited
%dir %{_sysconfdir}/ImageMagick*-upstream-limited/
%config(noreplace) %{_sysconfdir}/ImageMagick*-upstream-limited/*
%{_sysconfdir}/%{config_dir}
%ghost %{_sysconfdir}/alternatives/%{config_dir}
%files %{config_spec}-upstream-secure
%dir %{_sysconfdir}/ImageMagick*-upstream-secure/
%config(noreplace) %{_sysconfdir}/ImageMagick*-upstream-secure/*
%{_sysconfdir}/%{config_dir}
%ghost %{_sysconfdir}/alternatives/%{config_dir}
%files %{config_spec}-SUSE
%dir %{_sysconfdir}/ImageMagick*-SUSE/
%config %{_sysconfdir}/ImageMagick*-SUSE/*
%{_sysconfdir}/%{config_dir}
%ghost %{_sysconfdir}/alternatives/%{config_dir}
%files %{config_spec}-upstream-websafe
%dir %{_sysconfdir}/ImageMagick*-upstream-websafe/
%config(noreplace) %{_sysconfdir}/ImageMagick*-upstream-websafe/*
%{_sysconfdir}/%{config_dir}
%ghost %{_sysconfdir}/alternatives/%{config_dir}
%changelog

11
baselibs.conf Normal file
View File

@ -0,0 +1,11 @@
libMagickCore-7_Q16HDRI10
libMagickWand-7_Q16HDRI10
libMagick++-7_Q16HDRI5
ImageMagick-devel
requires -ImageMagick-<targettype>
requires "libMagickCore-7_Q16HDRI10-<targettype> = <version>"
requires "libMagickWand-7_Q16HDRI10-<targettype> = <version>"
libMagick++-devel
requires -ImageMagick-<targettype>
requires "libMagick++-7_Q16HDRI5-<targettype> = <version>"