#
# Conditional build:
-%bcond_without xpm # without XPM support (requires X11 libs)
+%bcond_without fontconfig # fontconfig support
+%bcond_with libimagequant # LIQ quantization method support (breaks transparency in TrueColor->palette conversion)
+%bcond_with sse # SSE math on ix86
+%bcond_without xpm # XPM support (requires X11 libs)
+%bcond_without tests # "make check"
#
+%ifarch pentium3 pentium4
+%define with_sse 1
+%endif
Summary: Library for PNG, JPEG creation
-Summary(es): Biblioteca para manipulación de imágenes
-Summary(pl): Biblioteka do tworzenia grafiki w formacie PNG, JPEG
-Summary(pt_BR): Biblioteca para manipulação de imagens
+Summary(es.UTF-8): Biblioteca para manipulación de imágenes
+Summary(pl.UTF-8): Biblioteka do tworzenia grafiki w formacie PNG, JPEG
+Summary(pt_BR.UTF-8): Biblioteca para manipulação de imagens
Name: gd
-Version: 2.0.31
+Version: 2.2.4
Release: 2
License: BSD-like
Group: Libraries
-Source0: http://www.boutell.com/gd/http/%{name}-%{version}.tar.gz
-# Source0-md5: 3a6e508f7911458151fe4a1475cbba51
+#Source0Download: https://github.com/libgd/libgd/releases
+Source0: https://github.com/libgd/libgd/releases/download/%{name}-%{version}/lib%{name}-%{version}.tar.xz
+# Source0-md5: a244855a323a3ea1975d708eb1e12b7a
Patch0: %{name}-fontpath.patch
-Patch1: %{name}-rotate_from_php.patch
-URL: http://www.boutell.com/gd/
-%{?with_xpm:BuildRequires: XFree86-devel}
+Patch1: %{name}-2.0.33-BoxBound.patch
+Patch2: %{name}-loop.patch
+Patch3: %{name}-liq.patch
+Patch4: %{name}-upstream.patch
+URL: https://libgd.github.io/
BuildRequires: autoconf >= 2.54
BuildRequires: automake
-BuildRequires: fontconfig-devel
-BuildRequires: freetype-devel >= 2.0
-BuildRequires: libpng-devel
+%{?with_fontconfig:BuildRequires: fontconfig-devel}
+BuildRequires: freetype-devel >= 1:2.1.10
+BuildRequires: gettext-tools
+%{?with_libimagequant:BuildRequires: libimagequant-devel}
BuildRequires: libjpeg-devel
-BuildRequires: libtiff-devel
-BuildRequires: libtool >= 1:1.4.3
+BuildRequires: libpng-devel >= 2:1.4.0
+BuildRequires: libtiff-devel >= 4
+BuildRequires: libtool >= 2:2
+BuildRequires: libwebp-devel
+BuildRequires: pkgconfig
+BuildRequires: sed >= 4
+BuildRequires: tar >= 1:1.22
+%{?with_xpm:BuildRequires: xorg-lib-libXpm-devel}
+BuildRequires: xz
BuildRequires: zlib-devel
-%{!?with_xpm:BuildConflicts: XFree86-devel}
+Requires: freetype >= 1:2.1.10
Provides: gd(gif) = %{version}-%{release}
+# versioned by php version rotate_from_php code comes from
+Provides: gd(imagerotate) = 5.2.0
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description
and is still more compatible with the major Web browsers than even PNG
is. WBMP is intended for wireless devices (not regular web browsers).
-%description -l es
-Esta es la biblioteca gd para el manejo de imágenes. Fue creada para
-uso en la Web, creando gráficos automáticamente. Pero es útil para
-cualquier programa que necesite de imágenes personalizados. No es un
+%description -l es.UTF-8
+Esta es la biblioteca gd para el manejo de imágenes. Fue creada para
+uso en la Web, creando gráficos automáticamente. Pero es útil para
+cualquier programa que necesite de imágenes personalizados. No es un
programa de dibujo; es una biblioteca.
-%description -l pl
-gd to biblioteka do obróbki obrazów. Zosta³a stworzona, aby umo¿liwiæ
-dynamiczne generowanie wykresów i podobnych rzeczy na potrzeby WWW,
-ale mo¿e byæ przydatna tak¿e dla ka¿dej aplikacji tworz±cej w³asne
-obrazy. Biblioteka ta pozwala na tworzenie plików graficznych w
+%description -l pl.UTF-8
+gd to biblioteka do obróbki obrazów. Została stworzona, aby umożliwić
+dynamiczne generowanie wykresów i podobnych rzeczy na potrzeby WWW,
+ale może być przydatna także dla każdej aplikacji tworzącej własne
+obrazy. Biblioteka ta pozwala na tworzenie plików graficznych w
formatach PNG, JPEG, GIF i WBMP. PNG jest zwartym formatem z
-bezstratn± kompresj±. JPEG dobrze nadaje siê do obrazów
-fotograficznych i jest obs³ugiwany nawet przez wiêcej przegl±darek WWW
-ni¿ PNG. WBMP jest przeznaczony dla urz±dzeñ bezprzewodowych (a nie
-zwyk³ych przegl±darek WWW).
+bezstratną kompresją. JPEG dobrze nadaje się do obrazów
+fotograficznych i jest obsługiwany nawet przez więcej przeglądarek WWW
+niż PNG. WBMP jest przeznaczony dla urządzeń bezprzewodowych (a nie
+zwykłych przeglądarek WWW).
-%description -l pt_BR
-Esta é a biblioteca gd para manipulação de imagens. Ela foi criada
-para uso na Web, gerando gráficos automaticamente. Mas é útil para
-qualquer programa que precise de imagens personalizados. Não é um
-programa de desenho; é uma biblioteca.
+%description -l pt_BR.UTF-8
+Esta é a biblioteca gd para manipulação de imagens. Ela foi criada
+para uso na Web, gerando gráficos automaticamente. Mas é útil para
+qualquer programa que precise de imagens personalizados. Não é um
+programa de desenho; é uma biblioteca.
%package devel
Summary: Development part of the GD library
-Summary(es): Archivos de inclusión y bibliotecas para desarrollar programas usando gd
-Summary(pl): Czê¶æ biblioteki GD przeznaczona dla developerów
-Summary(pt_BR): Arquivos de inclusão e bibliotecas para desenvolver programas usando gd
+Summary(es.UTF-8): Archivos de inclusión y bibliotecas para desarrollar programas usando gd
+Summary(pl.UTF-8): Część biblioteki GD przeznaczona dla developerów
+Summary(pt_BR.UTF-8): Arquivos de inclusão e bibliotecas para desenvolver programas usando gd
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
-%{?with_xpm:Requires: XFree86-devel}
Requires: fontconfig-devel
-Requires: freetype-devel >= 2.0
+Requires: freetype-devel >= 1:2.1.10
+%{?with_libimagequant:Requires: libimagequant-devel}
Requires: libjpeg-devel
Requires: libpng-devel
+Requires: libtiff-devel >= 4
+Requires: libwebp-devel
+%{?with_xpm:Requires: xorg-lib-libXpm-devel}
Requires: zlib-devel
Provides: gd-devel(gif) = %{version}-%{release}
+Provides: gd-devel(imagerotate) = 5.2.0
%description devel
This package contains the files needed for development of programs
linked against GD.
-%description devel -l es
-Este paquete contiene los archivos de inclusión y las bibliotecas
+%description devel -l es.UTF-8
+Este paquete contiene los archivos de inclusión y las bibliotecas
necesarias para desarrollar programas usando gd.
-%description devel -l pl
-Pakiet ten zawiera pliki potrzebne do rozwoju programów korzystaj±cych
+%description devel -l pl.UTF-8
+Pakiet ten zawiera pliki potrzebne do rozwoju programów korzystających
z biblioteki GD.
-%description devel -l pt_BR
-Este pacote contém os arquivos de inclusão e as bibliotecas
-necessárias para desenvolver programas usando gd.
+%description devel -l pt_BR.UTF-8
+Este pacote contém os arquivos de inclusão e as bibliotecas
+necessárias para desenvolver programas usando gd.
%package static
Summary: Static GD library
-Summary(pl): Statyczna biblioteka GD
-Summary(pt_BR): Bibliotecas estáticas para desenvolvimento com libgd
+Summary(pl.UTF-8): Statyczna biblioteka GD
+Summary(pt_BR.UTF-8): Bibliotecas estáticas para desenvolvimento com libgd
Group: Development/Libraries
Requires: %{name}-devel = %{version}-%{release}
Provides: gd-static(gif) = %{version}-%{release}
+Provides: gd-static(imagerotate) = 5.2.0
%description static
This package contains static gd library.
-%description static -l pl
-Ten pakiet zawiera statyczn± bibliotekê gd.
+%description static -l pl.UTF-8
+Ten pakiet zawiera statyczną bibliotekę gd.
-%description static -l pt_BR
-Este pacote contem bibliotecas estáticas para desenvolvimento com
+%description static -l pt_BR.UTF-8
+Este pacote contem bibliotecas estáticas para desenvolvimento com
libgd.
%package progs
Summary: Utility programs that use libgd
-Summary(es): Programas utilitarios libgd
-Summary(pl): Narzêdzia u¿ywaj±ce libgd
-Summary(pt_BR): Programas utilitários libgd
+Summary(es.UTF-8): Programas utilitarios libgd
+Summary(pl.UTF-8): Narzędzia używające libgd
+Summary(pt_BR.UTF-8): Programas utilitários libgd
Group: Applications/Graphics
Requires: %{name} = %{version}-%{release}
manipulating the graphics files in formats which are supported by the
libgd library.
-%description progs -l pl
-Ten pakiet zawiera programy u¿ywaj±ce biblioteki gd, s³u¿±ce do
-obróbki plików graficznych w formatach obs³ugiwanych przez libgd.
+%description progs -l pl.UTF-8
+Ten pakiet zawiera programy używające biblioteki gd, służące do
+obróbki plików graficznych w formatach obsługiwanych przez libgd.
-%description progs -l pt_BR
-Este pacote inclui vários utilitários para manipulação de arquivos gd
+%description progs -l pt_BR.UTF-8
+Este pacote inclui vários utilitários para manipulação de arquivos gd
para uso pelos programas que usam a libgd.
%prep
-%setup -q
+%setup -q -n libgd-%{version}
%patch0 -p1
%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
-# hack to avoid inclusion of -s or -L/usr/%{_lib} in --ldflags
-%{__perl} -pi -e 's,\@LDFLAGS\@,-L/usr/X11R6/%{_lib},g' config/gdlib-config.in
+# hack to avoid inclusion of -s in --ldflags
+%{__sed} -i -e 's,@LDFLAGS@,,g' config/gdlib-config.in
+# disable error caused by subdir-objects warning in automake 1.14
+%{__sed} -i -e '/AM_INIT_AUTOMAKE/s/-Werror//' configure.ac
%build
%{__libtoolize}
%{__automake}
%{__autoheader}
%{__autoconf}
-%configure
+%ifarch %{ix86}
+%if %{with sse}
+CFLAGS="%{rpmcflags} -msse -mfpmath=sse"
+%endif
+%endif
+%configure \
+ %{!?with_fontconfig:--without-fontconfig} \
+ %{!?with_libimagequant:--without-liq} \
+ %{!?with_xpm:--without-xpm}
%{__make}
+%if %{with tests}
+# https://bitbucket.org/libgd/gd-libgd/issue/72/gdimagestringft_bbox-test-fails-on-old (what is the exact reason???)
+XFAIL_TESTS=gdimagestringft/gdimagestringft_bbox
+%ifarch %{ix86}
+# https://github.com/libgd/libgd/issues/359
+XFAIL_TESTS="$XFAIL_TESTS gdimagegrayscale/basic"
+%endif
+%ifarch %{ix86}
+%if %{without sse}
+# 387 arithmetic is inexact, https://github.com/libgd/libgd/issues/242
+XFAIL_TESTS="$XFAIL_TESTS gdimagecopyresampled/bug00201 gdimagerotate/bug00067"
+%endif
+%endif
+# freetype TTF rendering difference?
+XFAIL_TESTS="$XFAIL_TESTS freetype/bug00132"
+export XFAIL_TESTS
+%{__make} check
+%endif
+
%install
rm -rf $RPM_BUILD_ROOT
%files
%defattr(644,root,root,755)
-%doc COPYING index.html
-%attr(755,root,root) %{_libdir}/*.so.*.*
+%doc CONTRIBUTORS COPYING README.md
+%attr(755,root,root) %{_libdir}/libgd.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libgd.so.3
%files devel
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/gdlib-config
-%attr(755,root,root) %{_libdir}/*.so
-%{_libdir}/*.la
-%{_includedir}/*
+%attr(755,root,root) %{_libdir}/libgd.so
+%{_libdir}/libgd.la
+%{_includedir}/entities.h
+%{_includedir}/gd*.h
+%{_pkgconfigdir}/gdlib.pc
%files static
%defattr(644,root,root,755)
-%{_libdir}/lib*.a
+%{_libdir}/libgd.a
%files progs
%defattr(644,root,root,755)
-%attr(755,root,root) %{_bindir}/*
-%exclude %{_bindir}/gdlib-config
+%attr(755,root,root) %{_bindir}/annotate
+%attr(755,root,root) %{_bindir}/bdftogd
+%attr(755,root,root) %{_bindir}/gd2copypal
+%attr(755,root,root) %{_bindir}/gd2togif
+%attr(755,root,root) %{_bindir}/gd2topng
+%attr(755,root,root) %{_bindir}/gdcmpgif
+%attr(755,root,root) %{_bindir}/gdparttopng
+%attr(755,root,root) %{_bindir}/gdtopng
+%attr(755,root,root) %{_bindir}/giftogd2
+%attr(755,root,root) %{_bindir}/pngtogd
+%attr(755,root,root) %{_bindir}/pngtogd2
+%attr(755,root,root) %{_bindir}/webpng