File public-inbox.spec of Package public-inbox
# spec file for package public-inbox
#
# Copyright (c) 2026 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/
#
Name: public-inbox
Version: 2.1.0
Release: 1.1
Summary: An "archives-first" approach to mailing lists
License: AGPL-3.0-or-later
URL: https://public-inbox.org
Source0: https://public-inbox.org/public-inbox.git/snapshot/public-inbox-%{version}.tar.gz
BuildArch: noarch
BuildRequires: bash-completion-devel
BuildRequires: curl
BuildRequires: gcc-c++
BuildRequires: git >= 2.6
BuildRequires: man
BuildRequires: perl
BuildRequires: perl-macros
BuildRequires: perl(DBD::SQLite)
BuildRequires: perl(Email::Address::XS)
BuildRequires: perl(Inline::C)
BuildRequires: perl(IO::Compress)
BuildRequires: perl(IO::Socket::SSL)
BuildRequires: perl(Mail::IMAPClient)
BuildRequires: perl(Parse::RecDescent)
BuildRequires: perl(Plack)
BuildRequires: perl(Plack::Middleware::ReverseProxy)
BuildRequires: perl(Plack::Test::Agent)
BuildRequires: perl(Search::Xapian)
BuildRequires: perl(Unix::Syslog)
BuildRequires: perl(URI)
BuildRequires: pkg-config
BuildRequires: pkgconfig(libgit2)
BuildRequires: sqlite3
BuildRequires: xapian-core
Requires: perl-PublicInbox = %{version}-%{release}
# not automatically picked up since it's required dynamically
# via `eval` in Search.pm. *shudders*
Requires: perl-Search-Xapian
%description
public-inbox implements the sharing of an email inbox via git to complement or
replace traditional mailing lists. Readers may read via NNTP, IMAP, Atom feeds
or HTML archives.
%package -n perl-PublicInbox
Summary: Perl libraries for public-inbox
Group: Development/Libraries/Perl
Requires: perl-base >= 5.42.0
Requires: perl(DBD::SQLite)
Requires: perl(Email::Address::XS)
Requires: perl(Inline::C)
Requires: perl(IO::Compress)
Requires: perl(IO::Socket::SSL)
Requires: perl(Mail::IMAPClient)
Requires: perl(Parse::RecDescent)
Requires: perl(Plack)
Requires: perl(Plack::Middleware::ReverseProxy)
Requires: perl(Plack::Test::Agent)
Requires: perl(Search::Xapian)
Requires: perl(Unix::Syslog)
Requires: perl(URI)
Requires: sqlite3
Requires: xapian-core
%description -n perl-PublicInbox
Perl libraries for public-inbox.
%package server
Summary: Server-side components for public-inbox
Group: Productivity/Networking/Email/Servers
Requires: public-inbox = %{version}-%{release}
%description server
Server-side components and daemons for public-inbox.
%package -n lei
Summary: Local Email Interface for public-inbox
Group: Productivity/Networking/Email/Clients
Requires: public-inbox = %{version}-%{release}
%description -n lei
The client-side component of public-inbox that allows to interact with mail
storage systems, including public-inbox servers.
%prep
%autosetup -n 'public-inbox-%{version}'
%build
%{__perl} Makefile.PL INSTALLDIRS=vendor
%make_build
%install
make pure_install DESTDIR=%{buildroot}
find %{buildroot} -type f -name .packlist -exec rm -f {} ';'
find %{buildroot} -depth -type d -exec rmdir {} 2>/dev/null ';'
%{_fixperms} %{buildroot}/*
install -d -m 0755 %{buildroot}%{_mandir}/man1
install -d -m 0755 %{buildroot}%{_mandir}/man5
install -d -m 0755 %{buildroot}%{_mandir}/man7
install -d -m 0755 %{buildroot}%{_mandir}/man8
install -m 0644 *.1 %{buildroot}%{_mandir}/man1/
install -m 0644 *.5 %{buildroot}%{_mandir}/man5/
install -m 0644 *.7 %{buildroot}%{_mandir}/man7/
install -m 0644 *.8 %{buildroot}%{_mandir}/man8/
%define completionsdir %(pkg-config --variable completionsdir bash-completion)
install -m 755 -d %{buildroot}%{completionsdir}
install -m 0644 contrib/completion/lei-completion.bash %{buildroot}%{completionsdir}/lei
%check
(cd certs && %{__perl} ./create-certs.perl)
mkdir -p %{buildroot}/tmp
PERL_INLINE_DIRECTORY=%{buildroot}/tmp make test
rm -rf %{buildroot}/tmp
%files
%license COPYING
%doc AUTHORS HACKING README TODO
%{_bindir}/public-inbox-cindex
%{_bindir}/public-inbox-clone
%{_bindir}/public-inbox-compact
%{_bindir}/public-inbox-convert
%{_bindir}/public-inbox-edit
%{_bindir}/public-inbox-extindex
%{_bindir}/public-inbox-fetch
%{_bindir}/public-inbox-index
%{_bindir}/public-inbox-init
%{_bindir}/public-inbox-learn
%{_bindir}/public-inbox-netd
%{_bindir}/public-inbox-pop3d
%{_bindir}/public-inbox-purge
%{_bindir}/public-inbox-watch
%{_bindir}/public-inbox-xcpdb
%{_mandir}/man1/public-inbox-*.1*
%{_mandir}/man5/public-inbox-*.5*
%{_mandir}/man7/public-inbox-*.7*
%{_mandir}/man8/public-inbox-*.8*
%exclude %{_mandir}/man1/public-inbox.cgi.1*
%exclude %{_mandir}/man1/public-inbox-httpd.1*
%exclude %{_mandir}/man1/public-inbox-imapd.1*
%exclude %{_mandir}/man1/public-inbox-mda.1*
%exclude %{_mandir}/man1/public-inbox-nntpd.1*
%files -n lei
%{_bindir}/lei
%{_mandir}/man1/lei*.1*
%{_mandir}/man5/lei-*.5*
%{_mandir}/man7/lei-*.7*
%{_mandir}/man8/lei-*.8*
%{completionsdir}/lei
%files -n perl-PublicInbox
%license COPYING
%{perl_vendorlib}/*
%{_mandir}/man3/PublicInbox*.3*
%files server
%{_bindir}/public-inbox.cgi
%{_bindir}/public-inbox-httpd
%{_bindir}/public-inbox-imapd
%{_bindir}/public-inbox-mda
%{_bindir}/public-inbox-nntpd
%{_mandir}/man1/public-inbox.cgi.1*
%{_mandir}/man1/public-inbox-httpd.1*
%{_mandir}/man1/public-inbox-imapd.1*
%{_mandir}/man1/public-inbox-mda.1*
%{_mandir}/man1/public-inbox-nntpd.1*
%changelog