#
# spec file for package libpaper
#
# Copyright (c) 2025 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 sover 2

Name:           libpaper
Version:        2.2.6
Release:        1.1
Summary:        Enables users to indicate their preferred paper size
License:        GPL-3.0-or-later
URL:            https://github.com/rrthomas/libpaper
Source:         %{url}/releases/download/v%{version}/libpaper-%{version}.tar.gz
BuildRequires:  autoconf >= 2.71
BuildRequires:  automake
BuildRequires:  perl
# libpaper-utils meanly packaged doc files in /usr/share/doc/packaes/libpaper
Conflicts:      libpaper-utils <= 1.1.28
# /etc/paperspecs used to live in paper (main package)
Provides:       paper:/etc/paperspecs
Conflicts:      paper <= 2.3

%description
This package enables users to indicate their preferred paper
size, provides the libpaper(1) utility to find the user's preferred
default libpaper size and give information about known sizes, and
specifies system-wide and per-user libpaper size catalogues, which can be
can also be used directly (see libpaperspecs(5)).

%package -n %{name}%{sover}
Summary:        This package contains the paper library
# To get /etc/paperspecs installed as used by libpaper
Requires:       %{name} >= %{version}

%description -n %{name}%{sover}
This package provides the paper library

%package -n %{name}-tools
Summary:        Tools that make use of libpaper
Provides:       paper = 2.4
Obsoletes:      paper <= 2.3
Provides:       libpaper-utils = 2.4
Obsoletes:      libpaper-utils <= 2.3

%description -n %{name}-tools
This package provides the 'paper' binary

%package devel
Summary:        This package contains the development files needed by libpaper
Requires:       %{name}%{sover} = %{version}

%description devel
This package contains all devel files needed by the libpaper package

%prep
%autosetup -p1

%build
%configure \
  --disable-static \
  --enable-relocatable \
  --enable-year2038
%make_build

%install
%make_install
rm -vRf %{buildroot}%{_datadir}/doc/libpaper/README.md
find %{buildroot}%{_libdir} -name *libpaper.la -delete

%post -n %{name}%{sover} -p /sbin/ldconfig
%postun -n %{name}%{sover} -p /sbin/ldconfig

%files
%license COPYING
%doc README.md
%config %{_sysconfdir}/paperspecs
%{_mandir}/man5/paperspecs.5.gz

%files -n %{name}-tools
%{_bindir}/paper
%{_bindir}/paperconf
%{_mandir}/man1/paper.1.gz

%files -n %{name}%{sover}
%{_libdir}/libpaper.so.%{sover}
%{_libdir}/libpaper.so.%{sover}.*

%files devel
%{_includedir}/paper.h
%{_libdir}/libpaper.so

%changelog
* Sun Mar 30 2025 Dirk Müller <dmueller@suse.com>
- update to 2.2.6:
  * This release involves no code changes, but lots of tidying
    up. The library is now versioned on Windows, and build fixes
    avoid problems on macOS.
* Fri May 24 2024 Dr. Werner Fink <werner@suse.de>
- Update 2.2.5:
  * This release exports the symbol ‘defaultpaper’, which was previously missing.
  * Former release adds missing license files (GPL 3 and MIT) to the source tarball.
  * Former release fixes the build when configured without --enable-relocatable
  * Former release fixes the license headers of paper.c and paper.h
  * Former release merely puts the correct copyright holders in the copy of
    the MIT License.
  * Former release adds the option of using the library under the MIT license
    when it is built without relocation support (--enable-relocatable).
    It achieves this by replacing all the other LGPL’ed code from gnulib
    with alternative code.
* Thu Feb 15 2024 Paolo Stivanin <info@paolostivanin.com>
- Update 2.1.3:
  * This release fixes a small problem with the paperspecs(5) man page,
    and ensures that the name of the ‘paper’ program is always set,
    even in a non-relocatable build.
* Tue Nov 28 2023 Paolo Stivanin <info@paolostivanin.com>
- Update to 2.1.2:
  * This release contains a change only to the tests, which improves
    the detection of glibc.
* Wed Aug  2 2023 Paolo Stivanin <info@paolostivanin.com>
- Update to 2.1.1:
  * This release fixes the -N flag of paperconf.
* Thu Apr 20 2023 Paolo Stivanin <info@paolostivanin.com>
- Update to 2.1.0:
  * This release reintroduces the old ‘paperconf’ utility, for
    backwards compatibility only.
* Mon Feb 27 2023 Paolo Stivanin <info@paolostivanin.com>
- Update to 2.0.10:
  * minor build fix.
* Mon Feb 20 2023 Paolo Stivanin <info@paolostivanin.com>
- update to 2.0.9:
  * Tweak the documentation of how paper sizes are set to make it
    easier to find and more accurate.
  * Removes the requirement for help2man at build time
  * Various fixes.
* Thu Dec  8 2022 Dirk Müller <dmueller@suse.com>
- update to 2.0.4:
  * don't hardcode make binary name in tests
* Mon Nov  7 2022 Paolo Stivanin <info@paolostivanin.com>
- Update to 2.0.3:
  * avoid error in paperconfig
  * paperinit: fix a space leak in case of error parsing paperspecs
  * paper.c: make unit_list const char *, to fix a warning
  * paper.c: fix a trivial leak
  * fix segfault when HOME is unset (thanks, Werner Fink)
  * fix a segfault in systempapername() (fix from Werner Fink, thanks!)
  * hardwire papersize configuration filename to ‘papersize’
- Remove upstreamed libpaper-foul.patch
* Wed Aug 24 2022 Dr. Werner Fink <werner@suse.de>
- Do not assume that HOME is set in the environment
* Wed Aug 24 2022 Dr. Werner Fink <werner@suse.de>
- As told: require libpaper for libpaper1 to get paperspecs back
* Wed Aug 24 2022 Dr. Werner Fink <werner@suse.de>
- Ignore existing /etc
* Wed Aug 24 2022 Dr. Werner Fink <werner@suse.de>
- Add required configure paperspecs to /etc as otherwise the
  libpaper.so.1.2.2 and all tools like paper(1) to not know
  any paper layout nor the size of those
* Wed Aug 24 2022 Dr. Werner Fink <werner@suse.de>
- Correct patch libpaper-foul.patch to patch the correct file!
* Wed Aug 24 2022 Dr. Werner Fink <werner@suse.de>
- Add patch libpaper-foul.patch
  * Do not expect that defaultpapername() returns a default paper
    size but also NULL (nada)
* Mon Aug 22 2022 Dominique Leuenberger <dimstar@opensuse.org>
- The new libpaper also conflicts with paper directly, as
  /etc/paperspecs used to be in paper. Add split provides for the
  move from paper to libpaper for /etc/paperspecs.
* Mon Aug 22 2022 Dominique Leuenberger <dimstar@opensuse.org>
- Try to fix upgrade issues:
  + Move paper provides/obsoletes to libpaper-tools sub-package:
    the paper binary is there, making this the most correct place.
  + Have libpaper conflict with libpaper-utils: the old package
    had doc files in /usr/share/doc/packages/libpaper, which now
    conflicts.
- Do not package ChangeLog file: it only has a reference to 'check
  git history' (not even with a link to the repository).
* Wed Aug  3 2022 Paolo Stivanin <info@paolostivanin.com>
- Update to 1.2.2:
  * Allow the user paperspecs file to be invalid.
  * Make systempapername() return a value that must be freed by the caller.
  * Set free_xdg_config_home precisely when needed.
* Mon Jul  4 2022 Paolo Stivanin <info@paolostivanin.com>
- Initial OBS release. This package provides and obsoletes paper.