File libraw.spec of Package libraw

#
# spec file for package libraw
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# 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 http://bugs.opensuse.org/
#

%define debug_build   0
%define asan_build    0

%define tar_name LibRaw
%define lver    16
%define lname	libraw%{lver}
Name:           libraw
Version:        0.18.9
Release:        0
Summary:        Library for reading RAW files obtained from digital photo cameras
License:        CDDL-1.0 OR LGPL-2.1-only
Group:          Development/Libraries/C and C++
Url:            https://www.libraw.org/
#Git-Clone:	git://github.com/LibRaw/LibRaw
Source:         https://www.libraw.org/data/%tar_name-%version.tar.gz
Patch0:         libraw-CVE-2018-10528.patch
Patch1:         libraw-CVE-2018-10529.patch
Patch2:         libraw-CVE-2018-5813.patch
Patch3:         libraw-CVE-2018-5815.patch
Patch4:         libraw-CVE-2018-5816.patch
Patch5:         libraw-CVE-2018-20337.patch
Patch6:         libraw-CVE-2018-20363,20364,20365.patch
Patch7:         libraw-CVE-2018-5817,5818,5819.patch
Patch8:         libraw-half-size-allocation-buffer-overflow.patch
# CVE-2020-15503 [bsc#1173674], lack of thumbnail size range check can lead to buffer overflow
Patch9:         libraw-CVE-2020-15503.patch
BuildRequires:  fdupes
BuildRequires:  gcc-c++
BuildRequires:  libjasper-devel
BuildRequires:  libjpeg-devel
BuildRequires:  liblcms2-devel
BuildRequires:  pkgconfig
# zlib for deflate DNG support
BuildRequires:  zlib-devel

%description
LibRaw is a library for reading RAW files obtained from digital photo
cameras (CRW/CR2, NEF, RAF, DNG, and others).

LibRaw is based on the source codes of the dcraw utility, where part of
drawbacks have already been eliminated and part will be fixed in future.

%package tools
Summary:        Tools for reading RAW files obtained from digital photo cameras
Group:          Productivity/Graphics/Other

%description tools
LibRaw is a library for reading RAW files obtained from digital photo
cameras (CRW/CR2, NEF, RAF, DNG, and others).

LibRaw is based on the source codes of the dcraw utility, where part of
drawbacks have already been eliminated and part will be fixed in future.

%package -n %lname
Summary:        Library for reading RAW files obtained from digital photo cameras
Group:          System/Libraries

%description -n %lname
LibRaw is a library for reading RAW files obtained from digital photo
cameras (CRW/CR2, NEF, RAF, DNG, and others).

LibRaw is based on the source codes of the dcraw utility, where part of
drawbacks have already been eliminated and part will be fixed in future.

%package devel
Summary:        Development files for libraw
Group:          Development/Libraries/C and C++
Requires:       %lname = %version

%description devel
LibRaw is a library for reading RAW files obtained from digital photo
cameras (CRW/CR2, NEF, RAF, DNG, and others).

LibRaw is based on the source codes of the dcraw utility, where part of
drawbacks have already been eliminated and part will be fixed in future.

%package devel-static
Summary:        Library for reading RAW files obtained from digital photo cameras
Group:          Development/Libraries/C and C++
Requires:       %name-devel = %version

%description devel-static
LibRaw is a library for reading RAW files obtained from digital photo
cameras (CRW/CR2, NEF, RAF, DNG, and others).

LibRaw is based on the source codes of the dcraw utility, where part of
drawbacks have already been eliminated and part will be fixed in future.

This package contains static libraries that applications can use to build
against LibRaw. LibRaw does not provide dynamic libraries.

%prep
%setup -qn %tar_name-%version
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1

%build
export CXXFLAGS="%optflags -fPIC -DUSE_ZLIB"
%if %{debug_build}
export CXXFLAGS="$CXXFLAGS -O0"
%endif
export LIBS="$LIBS -lz"
%configure
%if %{asan_build}
sed -i -e 's/\(^CXXFLAGS =.*\)/\1 -fsanitize=address/' \
       -e 's/\(^LIBS =.*\)/\1 -lasan/' \
       Makefile
%endif
make %{?_smp_mflags}

%install
find doc -type f -name "*.html" -exec chmod a-x "{}" "+"
mv doc manual
# The source tree has these with execute permissions for some reason
chmod -x Changelog.txt LICENSE.CDDL LICENSE.LGPL COPYRIGHT
chmod -x manual/index.html
# The Libraries
%make_install
find %buildroot -type f -name "*.la" -delete -print
# duplicated files
rm -rf %buildroot%_datadir/doc
%fdupes %buildroot/%_prefix

%post   -n %lname -p /sbin/ldconfig
%postun -n %lname -p /sbin/ldconfig

%files tools
%_bindir/*

%files devel
%doc Changelog.txt COPYRIGHT LICENSE.CDDL LICENSE.LGPL
%doc manual
%_includedir/%name/
%_libdir/pkgconfig/*.pc
%_libdir/libraw.so
%_libdir/libraw_r.so

%files -n %lname
%_libdir/libraw.so.%{lver}*
%_libdir/libraw_r.so.%{lver}*

%files devel-static
%_libdir/libraw.a
%_libdir/libraw_r.a

%changelog
openSUSE Build Service is sponsored by