]> granicus.if.org Git - imagemagick/blobdiff - ImageMagick.spec.in
https://oss-fuzz.com/v2/testcase-detail/5733690030686208?noredirect=1
[imagemagick] / ImageMagick.spec.in
index f14b79edb0ea39cc0c7dc23cf90f7728d0d273d8..05e45e18b4ace4512a8cbf92c01472e459961cd7 100644 (file)
@@ -1,52 +1,52 @@
 %global VERSION  @PACKAGE_VERSION@
 %global Patchlevel  @PACKAGE_RELEASE@
 
-Name:          @PACKAGE_NAME@
-Version:               %{VERSION}.%{Patchlevel}
-Release:               3%{?dist}
-Summary:               Use ImageMagick to convert, edit, or compose bitmap images in a variety of formats.  In addition resize, rotate, shear, distort and transform images.
-Group:         Applications/Multimedia
-License:               http://www.imagemagick.org/script/license.php
-Url:                   http://www.imagemagick.org/
-Source0:               ftp://ftp.ImageMagick.org/pub/%{name}/%{name}-%{VERSION}-%{Patchlevel}.tar.xz
-
-BuildRoot:     %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-BuildRequires: bzip2-devel, freetype-devel, libjpeg-devel, libpng-devel
-BuildRequires: libtiff-devel, giflib-devel, zlib-devel, perl-devel >= 5.8.1
-BuildRequires: ghostscript-devel, djvulibre-devel
-BuildRequires: libwmf-devel, jasper-devel, libtool-ltdl-devel
-BuildRequires: libX11-devel, libXext-devel, libXt-devel
-BuildRequires: lcms-devel, libxml2-devel, librsvg2-devel, OpenEXR-devel
+
+Name:           @PACKAGE_NAME@
+Version:        %{VERSION}
+Release:        %{Patchlevel}
+Summary:        Use ImageMagick to convert, edit, or compose bitmap images in a variety of formats.  In addition resize, rotate, shear, distort and transform images.
+Group:          Applications/Multimedia
+License:        https://imagemagick.org/script/license.php
+Url:            https://imagemagick.org/
+Source0:        https://imagemagick.org/download/%{name}/%{name}-%{VERSION}-%{Patchlevel}.tar.bz2
+
+Requires:       %{name}-libs%{?_isa} = %{version}-%{release}
+
+BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+BuildRequires:  bzip2-devel, freetype-devel, libjpeg-devel, libpng-devel
+BuildRequires:  libtiff-devel, giflib-devel, zlib-devel, perl-devel >= 5.8.1
+BuildRequires:  perl-generators
+BuildRequires:  ghostscript-devel, djvulibre-devel
+BuildRequires:  libwmf-devel
+BuildRequires:  libX11-devel, libXext-devel, libXt-devel
+BuildRequires:  lcms2-devel, libxml2-devel, librsvg2-devel, OpenEXR-devel
+BuildRequires:  fftw-devel, OpenEXR-devel, libwebp-devel
+BuildRequires:  jbigkit-devel
+BuildRequires:  openjpeg2-devel >= 2.1.0
+BuildRequires:  autoconf automake libtool-ltdl-devel
 
 %description
-ImageMagick is an image display and manipulation tool for the X
-Window System. ImageMagick can read and write JPEG, TIFF, PNM, GIF,
-and Photo CD image formats. It can resize, rotate, sharpen, color
-reduce, or add special effects to an image, and when finished you can
-either save the completed work in the original format or a different
-one. ImageMagick also includes command line programs for creating
-animated or transparent .gifs, creating composite images, creating
-thumbnail images, and more.
+ImageMagick® is a software suite to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 200) including PNG, JPEG, JPEG-2000, GIF, TIFF, DPX, EXR, WebP, Postscript, PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.
+
+The functionality of ImageMagick is typically utilized from the command-line or you can use the features from programs written in your favorite language. Choose from these interfaces: G2F (Ada), MagickCore (C), MagickWand (C), ChMagick (Ch), ImageMagickObject (COM+), Magick++ (C++), JMagick (Java), L-Magick (Lisp), Lua (LuaJIT), NMagick (Neko/haXe), Magick.NET (.NET), PascalMagick (Pascal), PerlMagick (Perl), MagickWand for PHP (PHP), IMagick (PHP), PythonMagick (Python), RMagick (Ruby), or TclMagick (Tcl/TK). With a language interface, use ImageMagick to modify or create images dynamically and automagically.
+
+ImageMagick utilizes multiple computational threads to increase performance and can read, process, or write mega-, giga-, or tera-pixel image sizes.
 
-ImageMagick is one of your choices if you need a program to manipulate
-and display images. If you want to develop your own applications
-which use ImageMagick code or APIs, you need to install
-ImageMagick-devel as well.
+ImageMagick is free software delivered as a ready-to-run binary distribution or as source code that you may use, copy, modify, and distribute in both open and proprietary applications. It is distributed under the Apache 2.0 license.
 
+The ImageMagick development process ensures a stable API and ABI. Before each ImageMagick release, we perform a comprehensive security assessment that includes memory error and thread data race detection to prevent security vulnerabilities.
+
+The authoritative ImageMagick web site is https://imagemagick.org. The authoritative source code repository is http://git.imagemagick.org/repos/ImageMagick. We maintain a source code mirror at GitHub.
 
 %package devel
-Summary: Library links and header files for ImageMagick app development
+Summary: Library links and header files for ImageMagick application development
 Group: Development/Libraries
-Requires: %{name} = %{version}-%{release}
-Requires: libX11-devel, libXext-devel, libXt-devel
-Requires: ghostscript-devel
-Requires: bzip2-devel
-Requires: freetype-devel
-Requires: libtiff-devel
-Requires: libjpeg-devel
-Requires: lcms-devel
-Requires: jasper-devel
-Requires: pkgconfig
+Requires: %{name}%{?_isa} = %{version}-%{release}
+Requires: libX11-devel, libXext-devel, libXt-devel, ghostscript-devel
+Requires: bzip2-devel, freetype-devel, libtiff-devel, libjpeg-devel, lcms2-devel
+Requires: libwebp-devel, OpenEXR-devel, openjpeg2-devel, pkgconfig
+Requires: %{name}-libs%{?_isa} = %{version}-%{release}
 
 %description devel
 ImageMagick-devel contains the library links and header files you'll
@@ -58,11 +58,17 @@ APIs, you need to install ImageMagick-devel as well as ImageMagick.
 You do not need to install it if you just want to use ImageMagick,
 however.
 
+%package libs
+Summary: ImageMagick libraries to link with
+Group: Applications/Multimedia
+
+%description libs
+This packages contains a shared libraries to use within other applications.
 
 %package djvu
 Summary: DjVu plugin for ImageMagick
 Group: Applications/Multimedia
-Requires: %{name} = %{version}-%{release}
+Requires: %{name}-libs%{?_isa} = %{version}-%{release}
 
 %description djvu
 This packages contains a plugin for ImageMagick which makes it possible to
@@ -70,22 +76,23 @@ save and load DjvU files from ImageMagick and libMagickCore using applications.
 
 
 %package doc
-Summary: ImageMagick html documentation
+Summary: ImageMagick HTML documentation
 Group: Documentation
 
 %description doc
 ImageMagick documentation, this package contains usage (for the
-commandline tools) and API (for the libraries) documentation in html format.
+commandline tools) and API (for the libraries) documentation in HTML format.
 Note this documentation can also be found on the ImageMagick website:
-http://www.imagemagick.org/
+https://imagemagick.org/.
 
 
 %package perl
 Summary: ImageMagick perl bindings
 Group: System Environment/Libraries
-Requires: %{name} = %{version}-%{release}
+Requires: %{name}-libs%{?_isa} = %{version}-%{release}
 Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
 
+
 %description perl
 Perl bindings to ImageMagick.
 
@@ -96,7 +103,7 @@ ImageMagick.
 %package c++
 Summary: ImageMagick Magick++ library (C++ bindings)
 Group: System Environment/Libraries
-Requires: %{name} = %{version}-%{release}
+Requires: %{name}-libs%{?_isa} = %{version}-%{release}
 
 %description c++
 This package contains the Magick++ library, a C++ binding to the ImageMagick
@@ -108,8 +115,8 @@ Install ImageMagick-c++ if you want to use any applications that use Magick++.
 %package c++-devel
 Summary: C++ bindings for the ImageMagick library
 Group: Development/Libraries
-Requires: %{name}-c++ = %{version}-%{release}
-Requires: %{name}-devel = %{version}-%{release}
+Requires: %{name}-c++%{?_isa} = %{version}-%{release}
+Requires: %{name}-devel%{?_isa} = %{version}-%{release}
 
 %description c++-devel
 ImageMagick-devel contains the static libraries and header files you'll
@@ -119,6 +126,7 @@ ImageMagick is an image manipulation program.
 If you want to create applications that will use Magick++ code
 or APIs, you'll need to install ImageMagick-c++-devel, ImageMagick-devel and
 ImageMagick.
+
 You don't need to install it if you just want to use ImageMagick, or if you
 want to develop/compile applications using the ImageMagick C interface,
 however.
@@ -126,49 +134,42 @@ however.
 
 %prep
 %setup -q -n %{name}-%{VERSION}-%{Patchlevel}
-sed -i 's/libltdl.la/libltdl.so/g' configure
-iconv -f ISO-8859-1 -t UTF-8 README.txt > README.txt.tmp
-touch -r README.txt README.txt.tmp
-mv README.txt.tmp README.txt
-# for %doc
+
+# for %%doc
 mkdir Magick++/examples
 cp -p Magick++/demo/*.cpp Magick++/demo/*.miff Magick++/examples
 
-
 %build
 %configure --enable-shared \
-           --disable-static \
-           --with-modules \
-           --with-perl \
-           --with-x \
-           --with-threads \
-           --with-magick_plus_plus \
-           --with-gslib \
-           --with-wmf \
-           --with-lcms \
-           --with-rsvg \
-           --with-xml \
-           --with-perl-options="INSTALLDIRS=vendor %{?perl_prefix} CC='%__cc -L$PWD/MagickCore/.libs' LDDLFLAGS='-shared -L$PWD/MagickCore/.libs'" \
-           --without-dps \
-           --without-included-ltdl --with-ltdl-include=%{_includedir} \
-           --with-ltdl-lib=%{_libdir}
-# Disable rpath
-sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
-sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
+        --disable-static \
+        --with-modules \
+        --with-perl \
+        --with-x \
+        --with-threads \
+        --with-magick_plus_plus \
+        --with-wmf \
+        --with-webp \
+        --with-openexr \
+        --with-gslib \
+        --with-rsvg \
+        --with-xml \
+        --with-perl-options="INSTALLDIRS=vendor %{?perl_prefix} CC='%__cc -L$PWD/MagickCore/.libs' LDDLFLAGS='-shared -L$PWD/MagickCore/.libs'" \
+        --without-dps \
+        --without-gcc-arch \
+        --with-jbig \
+        --with-openjp2
+
 # Do *NOT* use %%{?_smp_mflags}, this causes PerlMagick to be silently misbuild
 make
 
 
 %install
-rm -rf %{buildroot}
-
-make install DESTDIR=%{buildroot} INSTALL="install -p"
+make %{?_smp_mflags} install DESTDIR=%{buildroot} INSTALL="install -p"
 cp -a www/source %{buildroot}%{_datadir}/doc/%{name}-%{VERSION}
-# Delete *ONLY* _libdir/*.la files! .la files used internally to handle plugins - BUG#185237!!!
 rm %{buildroot}%{_libdir}/*.la
 
 # fix weird perl Magick.so permissions
-chmod 755 %{buildroot}%{perl_vendorarch}/auto/Image/Magick/Magick.so
+chmod -f 755 %{buildroot}%{perl_vendorarch}/auto/Image/Magick/*/*.so
 
 # perlmagick: fix perl path of demo files
 %{__perl} -MExtUtils::MakeMaker -e 'MY->fixin(@ARGV)' PerlMagick/demo/*.pl
@@ -191,110 +192,101 @@ if [ -z perl-pkg-files ] ; then
     exit -1
 fi
 
-# fix multilib issues
-%ifarch x86_64 s390x ia64 ppc64 alpha sparc64
-%define wordsize 64
-%else
-%define wordsize 32
-%endif
-
-mv %{buildroot}%{_includedir}/%{name}/MagickCore/magick-config.h \
-   %{buildroot}%{_includedir}/%{name}/MagickCore/magick-config-%{wordsize}.h
+# fix multilib issues: Rename provided file with platform-bits in name.
+# Create platform independant file inplace of provided and conditionally include required.
+# $1 - filename.h to process.
+function multilibFileVersions(){
+mv $1 ${1%%.h}-%{__isa_bits}.h
 
-cat >%{buildroot}%{_includedir}/%{name}/MagickCore/magick-config.h <<EOF
-#ifndef IMAGEMAGICK_MULTILIB
-#define IMAGEMAGICK_MULTILIB
+local basename=$(basename $1)
 
+cat >$1 <<EOF
 #include <bits/wordsize.h>
 
 #if __WORDSIZE == 32
-# include "magick-config-32.h"
+# include "${basename%%.h}-32.h"
 #elif __WORDSIZE == 64
-# include "magick-config-64.h"
+# include "${basename%%.h}-64.h"
 #else
 # error "unexpected value for __WORDSIZE macro"
-#endif
-
 #endif
 EOF
+}
 
-# Fonts must be packaged separately. It does nothave matter and demos work without it.
-rm PerlMagick/demo/Generic.ttf
+multilibFileVersions %{buildroot}%{_includedir}/%{name}-7/MagickCore/magick-config.h
+multilibFileVersions %{buildroot}%{_includedir}/%{name}-7/MagickCore/magick-baseconfig.h
+multilibFileVersions %{buildroot}%{_includedir}/%{name}-7/MagickCore/version.h
 
-# From version around 6.7.5-6 docs go to unversioned dir. Fixing
-mv %{buildroot}/%{_datadir}/doc/%{name} %{buildroot}/%{_datadir}/doc/%{name}-%{VERSION}
 
-%clean
-rm -rf %{buildroot}
+%check
+export LD_LIBRARY_PATH=%{buildroot}/%{_libdir}
+make %{?_smp_mflags} check
 
-
-%post -p /sbin/ldconfig
+%post libs -p /sbin/ldconfig
 
 %post c++ -p /sbin/ldconfig
 
-%postun -p /sbin/ldconfig
+%postun libs -p /sbin/ldconfig
 
 %postun c++ -p /sbin/ldconfig
 
-
 %files
-%defattr(-,root,root,-)
-%doc QuickStart.txt ChangeLog Platforms.txt
-%doc README.txt LICENSE NOTICE AUTHORS.txt NEWS.txt
-%{_libdir}/libMagickCore.so.5*
-%{_libdir}/libMagickWand.so.5*
+%doc README.txt LICENSE NOTICE AUTHORS.txt NEWS.txt ChangeLog Platforms.txt
 %{_bindir}/[a-z]*
-%{_libdir}/%{name}-%{VERSION}
-%{_datadir}/%{name}-%{VERSION}
 %{_mandir}/man[145]/[a-z]*
 %{_mandir}/man1/%{name}.*
-%exclude %{_libdir}/%{name}-%{VERSION}/modules-Q16/coders/djvu.*
-%{_sysconfdir}/%{name}
+
+%files libs
+%doc LICENSE NOTICE AUTHORS.txt QuickStart.txt
+%{_libdir}/libMagickCore-7.Q16HDRI.so.*
+%{_libdir}/libMagickWand-7.Q16HDRI.so.*
+%{_libdir}/%{name}-%{VERSION}
+%{_datadir}/%{name}-7
+%exclude %{_libdir}/%{name}-%{VERSION}/modules-Q16HDRI/coders/djvu.*
+%dir %{_sysconfdir}/%{name}-7
+%config(noreplace) %{_sysconfdir}/%{name}-7/*.xml
 
 %files devel
-%defattr(-,root,root,-)
 %{_bindir}/MagickCore-config
 %{_bindir}/MagickWand-config
-%{_libdir}/libMagickCore.so
-%{_libdir}/libMagickWand.so
+%{_libdir}/libMagickCore-7.Q16HDRI.so
+%{_libdir}/libMagickWand-7.Q16HDRI.so
 %{_libdir}/pkgconfig/MagickCore.pc
+%{_libdir}/pkgconfig/MagickCore-7.Q16HDRI.pc
 %{_libdir}/pkgconfig/ImageMagick.pc
+%{_libdir}/pkgconfig/ImageMagick-7.Q16HDRI.pc
 %{_libdir}/pkgconfig/MagickWand.pc
-%{_libdir}/pkgconfig/Wand.pc
-%dir %{_includedir}/%{name}
-%{_includedir}/%{name}/MagickCore
-%{_includedir}/%{name}/MagickWand
+%{_libdir}/pkgconfig/MagickWand-7.Q16HDRI.pc
+%dir %{_includedir}/%{name}-7
+%{_includedir}/%{name}-7/MagickCore
+%{_includedir}/%{name}-7/MagickWand
 %{_mandir}/man1/MagickCore-config.*
 %{_mandir}/man1/MagickWand-config.*
 
 %files djvu
-%defattr(-,root,root,-)
-%{_libdir}/%{name}-%{VERSION}/modules-Q16/coders/djvu.*
+%{_libdir}/%{name}-%{VERSION}/modules-Q16HDRI/coders/djvu.*
 
 %files doc
-%defattr(-,root,root,-)
+%doc %{_datadir}/doc/%{name}-7
 %doc %{_datadir}/doc/%{name}-%{VERSION}
 %doc LICENSE
 
 %files c++
-%defattr(-,root,root,-)
 %doc Magick++/AUTHORS Magick++/ChangeLog Magick++/NEWS Magick++/README
 %doc www/Magick++/COPYING
-%{_libdir}/libMagick++.so.5*
+%{_libdir}/libMagick++-7.Q16HDRI.so.*
 
 %files c++-devel
-%defattr(-,root,root,-)
 %doc Magick++/examples
 %{_bindir}/Magick++-config
-%{_includedir}/%{name}/Magick++
-%{_includedir}/%{name}/Magick++.h
-%{_libdir}/libMagick++.so
+%{_includedir}/%{name}-7/Magick++
+%{_includedir}/%{name}-7/Magick++.h
+%{_libdir}/libMagick++-7.Q16HDRI.so
 %{_libdir}/pkgconfig/Magick++.pc
-%{_libdir}/pkgconfig/ImageMagick++.pc
+%{_libdir}/pkgconfig/Magick++-7.Q16HDRI.pc
 %{_mandir}/man1/Magick++-config.*
 
 %files perl -f perl-pkg-files
-%defattr(-,root,root,-)
 %{_mandir}/man3/*
 %doc PerlMagick/demo/ PerlMagick/Changelog PerlMagick/README.txt