netpbm/netpbm.spec
Pedro Monreal Gonzalez 195fc44b11 Accepting request 1143208 from home:pgajdos
- version update to 11.5.2
  Release 11.05.02
  + ppmtowinicon: fix array overrun with 4 and 8 bits per pixel.
  Release 11.05.01
   Fix typo in ppmforge test case.
  Release 11.05.00
  + pnmpad: Add -color, -promote, -extend-edge, -detect-background .
  + pnmconvol: Restore ability of convolution matrix to be a
    pseudo-plain-PNM with samples that exceed the maxval.  Lost in
    10.30 (October 2005) because maxval-checking code was added to
    libnetpbm.  (Was fixed in 10.47.08 in November 2010, but only in
    the 10.47 series).
  + pnmindex: Improve failure mode when -size or -across is zero.
  + pnmindex: Make -plain work.
  + pnmpad: fix behavior with -left, -right, and -width together or
    -top, -bottom, -height together: ignores -width where it should
    fail.  Broken in Netpbm 10.72 (September 2015).
  + pamtosvg: fix "zero determinant" failure.  Introduced in
    Netpbm 11.04 (September 2023).
  + pjtoppm: fix crash based on uninitialized variable.
    Introduced in Netpbm 11.04 (September 2023).
  + ppmtopcxl: fix incorrect output with > 256 colors.  Always
    broken.  (Program was added in primordial Netpbm in 1990).
  + pbmtext: fix buffer overrun with insanely large input.
  + picttoppm: fix buffer overrun with insanely wide input.
  + ppmtoxpm: fix incorrect output with insanely large number of
    colors.
  + pnmscalefixed: fix incorrect output with really big image and
    -pixels option.
  + ppmdither: fix buffer overrun with insanely large dithering

OBS-URL: https://build.opensuse.org/request/show/1143208
OBS-URL: https://build.opensuse.org/package/show/graphics/netpbm?expand=0&rev=145
2024-02-02 09:12:34 +00:00

189 lines
6.5 KiB
RPMSpec

#
# spec file for package netpbm
#
# Copyright (c) 2024 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 ubsan_build 0
%define libmaj 11
%define libmin 105
%define libver %{libmaj}.%{libmin}
Name: netpbm
Version: 11.5.2
Release: 0
Summary: A Graphics Conversion Package
License: BSD-3-Clause AND GPL-2.0-or-later AND IJG AND MIT AND SUSE-Public-Domain
Group: Productivity/Graphics/Convertors
URL: http://netpbm.sourceforge.net/
Source: netpbm-%{version}-nohpcdtoppm-noppmtompeg.tar.bz2
Source1: netpbm-%{version}-documentation.tar.bz2
Source2: baselibs.conf
Source3: prepare-src-tarball.sh
# SUSE specific
Patch0: %{name}-make.patch
# neccessary for running with ASAN
Patch2: %{name}-security-code.patch
Patch3: %{name}-security-scripts.patch
Patch4: %{name}-gcc-warnings.patch
Patch5: makeman-py3.patch
# bsc#1144255 disable jpeg2k support due to removal of jasper
Patch8: netpbm-disable-jasper.patch
BuildRequires: flex
BuildRequires: libjpeg-devel
BuildRequires: libpng-devel
BuildRequires: libtiff-devel
BuildRequires: libxml2-devel
BuildRequires: pkgconfig
# needed for the makeman
BuildRequires: python3-base
BuildRequires: pkgconfig(x11)
Provides: pbmplus
%description
These are the Portable Bitmap Plus Utilities.
This package provides tools for graphics conversion. Using these
tools, images can be converted from virtually any format into any
other format. A few of the supported formats include: GIF,
PC-Paintbrush, IFF ILBM, Gould Scanner file, MTV ray tracer, Atari
Degas .pi1 and .pi3, Macintosh PICT, HP Paintjet file, QRT raytracer,
AUTOCAD slide, Atari Spectrum (compressed and uncompressed), Andrew
Toolkit raster object, and many more. On top of that, man pages are
included for all tools.
%package -n libnetpbm%{libmaj}
Summary: Libraries for the NetPBM (NetPortableBitmap) Graphic Formats
Group: System/Libraries
Provides: libnetpbm = %{version}
Obsoletes: libnetpbm < %{version}
%description -n libnetpbm%{libmaj}
These are the libs for the netpbm graphic formats. The tools can be
found in the netpbm package. The sources are contained in the netpbm
source package.
%package -n libnetpbm-devel
Summary: Header files for the NetPBM libraries
Group: Development/Libraries/C and C++
Requires: libnetpbm%{libmaj} = %{version}
%description -n libnetpbm-devel
These are the libs for the netpbm graphic formats. The tools can be
found in the netpbm package. The sources are contained in the netpbm
source package.
%prep
%setup -q -D -a 1
%autopatch -p1
mkdir pnmtopalm # for %%doc pnmtopalm
cp -p converter/other/pnmtopalm/{LICENSE,README} pnmtopalm
%build
# netpbm has _interactive_ configure perl script
cp config.mk.in config.mk # recomended by upstream, see doc/INSTALL
sed -i "s:STATICLIB_TOO = y:STATICLIB_TOO = n:" config.mk
# following two added 10.66.0, reported upstream
# recipe for target 'converter/install.manweb' failed
echo 'install.manweb:' >> converter/ppm/hpcdtoppm/Makefile
# dtto for ppmtompeg
echo 'install.manweb:' >> converter/ppm/ppmtompeg/Makefile
export CFLAGS="%{optflags} -flax-vector-conversions -Wno-return-type"
%if %{debug_build}
export CFLAGS="$CFLAGS -O0"
%endif
%if %{asan_build}
export CFLAGS="$CFLAGS -fsanitize=address -fno-sanitize-recover=all"
export LDFLAGS="$LDFLAGS -fsanitize=address"
%endif
%if %{ubsan_build}
export CFLAGS="$CFLAGS -fsanitize=undefined -fno-sanitize-recover=all"
export LDFLAGS="$LDFLAGS -fsanitize=undefined"
%endif
make %{?_smp_mflags} CFLAGS="$CFLAGS"
rm doc/INSTALL
#
# convert html to man pages
cd netpbm.sourceforge.net/doc
../../buildtools/makeman *.html
for i in 1 3 5 ; do
mkdir -p ../../man/man${i}
mv *.${i} ../../man/man${i}
done
%install
# netpbm has _interactive_ install perl script, see doc/INSTALL
make pkgdir=`pwd`/package package STRIPFLAG=
#
mkdir -p %{buildroot}%{_prefix}/{bin,include,%{_lib},share/man,share/%{name}}
cp -pd package/bin/* %{buildroot}%{_bindir}
cp -pd package/lib/*.so* %{buildroot}%{_libdir}
ln -s libnetpbm.so.%{libver} %{buildroot}%{_libdir}/libnetpbm.so
cp -prd package/include/netpbm %{buildroot}%{_includedir}
cp -prd man/* %{buildroot}%{_mandir}
install -m 644 converter/other/pnmtopalm/*.map \
%{buildroot}%{_datadir}/%{name}
rm %{buildroot}%{_bindir}/g3topbm # conflict with g3utils
rm %{buildroot}%{_bindir}/pstopnm # disable due security reasons, e. g. [bsc#1105592]
%post -n libnetpbm%{libmaj} -p /sbin/ldconfig
%postun -n libnetpbm%{libmaj} -p /sbin/ldconfig
%check
%if %{asan_build}
export LSAN_OPTIONS="detect_leaks=0"
%endif
%if %{ubsan_build}
export UBSAN_OPTIONS="print_stacktrace=1"
%endif
# do not run unneccesary tests
sed -i '/all-in-place/d' test/Test-Order
sed -i '/legacy-names/d' test/Test-Order
# picttoppm.c: #error "Unfixable. Don't ship me"
sed -i '/pict-roundtrip/d' test/Test-Order
sed -i '/stdin-ppm3.test/d' test/Test-Order
# pstopnm is not shipped
sed -i '/^l\?ps.*\.test/d' test/Test-Order
# new winicon-roundtrip2.test failure reported to bryanh@giraffe-data.com on 2020-12-29
# $ LD_LIBRARY_PATH=lib PATH=package/bin pamtowinicon -pngthreshold=1 package-test-tmp/testimg1.pam
# pamtowinicon: bad magic number 0xf0f - not a PAM, PPM, PGM, or PBM file
# $
sed -i '/winicon-roundtrip2.test/d' test/Test-Order
# Unable to exec 'gs'
sed -i '/pbmtextps.test/d' test/Test-Order
sed -i '/stdin-pnm2.test/d' test/Test-Order
mkdir package-test-{tmp,results}
make pkgdir=`pwd`/package tmpdir=`pwd`/package-test-tmp RESULTDIR=`pwd`/package-test-results check-package
%files
%doc README doc/* netpbm.sourceforge.net/doc
%doc pnmtopalm/
%{_mandir}/man1/*%{ext_man}
%{_mandir}/man5/*%{ext_man}
%{_bindir}/*
%{_datadir}/%{name}
%files -n libnetpbm%{libmaj}
%{_libdir}/lib*.so.%{libmaj}
%{_libdir}/lib*.so.%{libver}
%files -n libnetpbm-devel
%{_includedir}/%{name}
%{_libdir}/lib*.so
%{_mandir}/man3/*%{ext_man}
%changelog