edb3efc
%global so_version 1
17e4ff0
%global apiver 1.0
d57126b
d221d0f
# “Let mm-common-get copy some files to untracked/”, i.e., replace scripts from
d221d0f
# the tarball with those from mm-common. This is (potentially) required if
d221d0f
# building an autotools-generated tarball with meson, or vice versa.
5c91e1d
%bcond maintainer_mode 1
Rick L. Vinyard, Jr 311a0e6
b89cf86
# Doxygen HTML help is not suitable for packaging due to a minified JavaScript
b89cf86
# bundle inserted by Doxygen itself. See discussion at
b89cf86
# https://bugzilla.redhat.com/show_bug.cgi?id=2006555.
b89cf86
#
a660469
# We can enable the Doxygen PDF documentation as a substitute.
0b72d19
#
0b72d19
# We still generate the HTML documentation, but strip out all the JavaScript
0b72d19
# that causes policy issues. This degrades it in the browser, but is sufficient
0b72d19
# to keep the Devhelp documentation working.
5c91e1d
%bcond doc_pdf 1
b89cf86
e80e153
Name:           cairomm
d5cb165
Summary:        C++ API for the cairo graphics library
ebbbfa3
Version:        1.14.4
ebbbfa3
Release:        %autorelease
d5cb165
0a24349
URL:            https://www.cairographics.org
dbbbd7e
License:        LGPL-2.0-or-later
d5cb165
f1ece3e
%global src_base https://www.cairographics.org/releases
77b9996
Source0:        %{src_base}/cairomm-%{version}.tar.xz
57b8492
# No keyring with authorized GPG signing keys is published
57b8492
# (https://gitlab.freedesktop.org/freedesktop/freedesktop/-/issues/331), but we
57b8492
# are able to verify the signature using the key for Kjell Ahlstedt from
508e556
# https://gitlab.freedesktop.org/freedesktop/freedesktop/-/issues/290.
57b8492
Source1:        %{src_base}/cairomm-%{version}.tar.xz.asc
508e556
Source2:        https://gitlab.freedesktop.org/freedesktop/freedesktop/uploads/0ac64e9582659f70a719d59fb02cd037/gpg_key.pub
508e556
508e556
BuildRequires:  gnupg2
d5cb165
c0cfa69
BuildRequires:  gcc-c++
d221d0f
BuildRequires:  meson
d5cb165
83d3ed9
BuildRequires:  pkgconfig(cairo)
83d3ed9
BuildRequires:  pkgconfig(sigc++-2.0)
83d3ed9
BuildRequires:  pkgconfig(fontconfig)
83d3ed9
83d3ed9
# Everything mentioned in data/cairomm*.pc.in, except the Quartz and Win32
83d3ed9
# libraries that do not apply to this platform:
83d3ed9
BuildRequires:  pkgconfig(cairo-ft)
83d3ed9
BuildRequires:  pkgconfig(cairo-pdf)
83d3ed9
BuildRequires:  pkgconfig(cairo-png)
83d3ed9
BuildRequires:  pkgconfig(cairo-ps)
83d3ed9
BuildRequires:  pkgconfig(cairo-svg)
83d3ed9
BuildRequires:  pkgconfig(cairo-xlib)
83d3ed9
BuildRequires:  pkgconfig(cairo-xlib-xrender)
83d3ed9
83d3ed9
%if %{with maintainer_mode}
d221d0f
# mm-common-get
966054d
BuildRequires:  mm-common >= 1.0.4
83d3ed9
%endif
83d3ed9
ba7b0d0
BuildRequires:  doxygen
d221d0f
# dot
d221d0f
BuildRequires:  graphviz
d221d0f
# xsltproc
d221d0f
BuildRequires:  libxslt
83d3ed9
BuildRequires:  pkgconfig(mm-common-libstdc++)
b89cf86
%if %{with doc_pdf}
b89cf86
BuildRequires:  doxygen-latex
b89cf86
BuildRequires:  make
b89cf86
%endif
d221d0f
d221d0f
# For tests:
d221d0f
BuildRequires:  boost-devel
d221d0f
ce4f146
# Based on discussion in
ce4f146
# https://src.fedoraproject.org/rpms/pangomm/pull-request/2, cairomm will
ce4f146
# continue to provide API/ABI version 1.0 indefinitely, with the cairomm1.16
ce4f146
# package providing the new 1.16 API/ABI series. This virtual Provides is
ce4f146
# therefore no longer required, as dependent packages requiring the 1.0 API/ABI
ce4f146
# may safely require cairomm and its subpackages.
77b9996
Provides:       cairomm%{apiver}%{?_isa} = %{version}-%{release}
ba7b0d0
4b007a6
%description
4b007a6
This library provides a C++ interface to cairo.
Rick L. Vinyard, Jr 69db439
508e556
The API/ABI version series is %{apiver}.
508e556
d5cb165
Rick L. Vinyard, Jr 69db439
%package        devel
77b9996
Summary:        Development files for cairomm
77b9996
Requires:       cairomm%{?_isa} = %{version}-%{release}
Rick L. Vinyard, Jr 69db439
77b9996
Provides:       cairomm%{apiver}-devel%{?_isa} = %{version}-%{release}
9ee2ea9
4b007a6
%description    devel
77b9996
The cairomm-devel package contains libraries and header files for developing
77b9996
applications that use cairomm.
Rick L. Vinyard, Jr 9eca487
508e556
The API/ABI version series is %{apiver}.
508e556
Rick L. Vinyard, Jr 69db439
06d96df
%package        doc
77b9996
Summary:        Documentation for cairomm
948e04f
06d96df
BuildArch:      noarch
77b9996
77b9996
Provides:       cairomm%{apiver}-doc = %{version}-%{release}
9ee2ea9
4b007a6
%description    doc
b89cf86
Documentation for cairomm can be viewed through the devhelp documentation
b89cf86
browser.
Rick L. Vinyard, Jr 2454e90
508e556
The API/ABI version series is %{apiver}.
508e556
Rick L. Vinyard, Jr 2454e90
Rick L. Vinyard, Jr 69db439
%prep
57b8492
%{gpgverify} \
Björn Persson 338b584
    --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
57b8492
508e556
%autosetup
ebbbfa3
# Fix stray executable bit:
ebbbfa3
chmod -v a-x NEWS
ebbbfa3
041b27b
# We must remove the jQuery/jQueryUI bundle with precompiled/minified/bundled
041b27b
# JavaScript that is in untracked/docs/reference/html/jquery.js, since such
041b27b
# sources are banned in Fedora. (Note also that the bundled JavaScript had a
041b27b
# different license.) We also remove the tag file, which triggers a rebuild of
041b27b
# the documentation. While we are at it, we might as well rebuild the devhelp
0b72d19
# XML too. Note that we will still install the HTML documentation, since the
0b72d19
# devhelp XML requires it, but we will strip out the JavaScript, which will
0b72d19
# degrade the documentation in a web browser.
17e4ff0
rm -rf untracked/docs/reference/html
77b9996
rm untracked/docs/reference/cairomm-%{apiver}.tag \
77b9996
   untracked/docs/reference/cairomm-%{apiver}.devhelp2
b89cf86
%if %{with doc_pdf}
a660469
# We enable the Doxygen PDF documentation as a substitute. We must
b89cf86
# enable GENERATE_LATEX and LATEX_BATCHMODE; the rest are precautionary and
b89cf86
# should already be set as we like them.
b89cf86
sed -r -i \
b89cf86
    -e "s/^([[:blank:]]*(GENERATE_LATEX|LATEX_BATCHMODE|USE_PDFLATEX|\
b89cf86
PDF_HYPERLINKS)[[:blank:]]*=[[:blank:]]*)NO[[:blank:]]*/\1YES/" \
b89cf86
    -e "s/^([[:blank:]]*(LATEX_TIMESTAMP)\
b89cf86
[[:blank:]]*=[[:blank:]]*)YES[[:blank:]]*/\1NO/" \
b89cf86
    docs/reference/Doxyfile.in
b89cf86
%endif
d5cb165
Rick L. Vinyard, Jr 69db439
Rick L. Vinyard, Jr 69db439
%build
d221d0f
%meson \
d221d0f
  -Dmaintainer-mode=%{?with_maintainer_mode:true}%{?!with_maintainer_mode:false} \
d221d0f
  -Dbuild-documentation=true \
d221d0f
  -Dbuild-examples=false \
d221d0f
  -Dbuild-tests=true \
d221d0f
  -Dboost-shared=true \
d221d0f
  -Dwarnings=max
d221d0f
%meson_build
Rick L. Vinyard, Jr 69db439
b89cf86
%if %{with doc_pdf}
b89cf86
%make_build -C '%{_vpath_builddir}/docs/reference/latex'
b89cf86
%endif
b89cf86
d5cb165
Rick L. Vinyard, Jr 69db439
%install
d221d0f
%meson_install
Rick L. Vinyard, Jr 69db439
77b9996
install -t %{buildroot}%{_docdir}/cairomm-%{apiver} -m 0644 -p \
ebbbfa3
    AUTHORS ChangeLog MAINTAINERS NEWS README.md
77b9996
cp -rp examples %{buildroot}%{_docdir}/cairomm-%{apiver}/
b25d344
0b72d19
# Strip out bundled and/or pre-minified JavaScript; this degrades the browser
0b72d19
# experience, but the HTML is still usable for devhelp.
0b72d19
find '%{buildroot}%{_docdir}/cairomm-%{apiver}/reference/html' \
0b72d19
    -type f \( -name '*.js' -o -name '*.js.*' \) -print -delete
b89cf86
%if %{with doc_pdf}
cd53c4a
install '%{_vpath_builddir}/docs/reference/latex/refman.pdf' -p -m 0644 \
cd53c4a
    '%{buildroot}%{_docdir}/cairomm-%{apiver}/reference/cairomm-%{apiver}.pdf'
b89cf86
%endif
948e04f
d5cb165
d221d0f
%check
d221d0f
%meson_test
01a08b7
01a08b7
Rick L. Vinyard, Jr 69db439
%files
2b7df01
%license COPYING
a740f58
%{_libdir}/libcairomm-%{apiver}.so.%{so_version}{,.*}
Rick L. Vinyard, Jr 69db439
d5cb165
Rick L. Vinyard, Jr 69db439
%files devel
b46cb2e
%{_includedir}/cairomm-%{apiver}/
77b9996
%{_libdir}/libcairomm-%{apiver}.so
77b9996
%{_libdir}/pkgconfig/cairomm-%{apiver}.pc
77b9996
%{_libdir}/pkgconfig/cairomm-*-%{apiver}.pc
b46cb2e
%{_libdir}/cairomm-%{apiver}/
Rick L. Vinyard, Jr 69db439
d5cb165
Rick L. Vinyard, Jr 2454e90
%files doc
5263eff
%license COPYING
0b72d19
# Note: JavaScript has been removed from HTML reference manual, degrading the
0b72d19
# browser experience. It is still needed for Devhelp support.
b46cb2e
%doc %{_docdir}/cairomm-%{apiver}/
71a644b
%doc %{_datadir}/devhelp/
Rick L. Vinyard, Jr 2454e90
d5cb165
Rick L. Vinyard, Jr 69db439
%changelog
8f2f85c
%autochangelog