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
openSUSE Build Service is sponsored by