# Snapshot of upstream master. To refresh: # cd ~/work/git/public-inbox && git fetch upstream # spectool -g -C ~/rpmbuild/SOURCES ~/rpmbuild/SPECS/public-inbox.spec # (public-inbox.org serves the same tree as # git archive --prefix=public-inbox-/ upstream/master) # then update commit/commitdate/commitcount below (and baseversion after a # new tag). commitcount is `git rev-list --count v..`. %global baseversion 2.1.0 %global commit 9f68364181d2f312fbae8f5db5975b77b076e74b %global shortcommit %(c=%{commit}; echo ${c:0:8}) %global commitdate 20261009 %global commitcount 70 Name: public-inbox Version: %{baseversion}^%{commitdate}git%{shortcommit} Release: 1%{?dist} Summary: An archives-first approach to mailing lists # contrib/css/*.css example stylesheets are CC0-1.0 License: AGPL-3.0-or-later AND CC0-1.0 URL: https://public-inbox.org Source0: https://public-inbox.org/public-inbox.git/snapshot/%{name}-%{shortcommit}.tar.gz BuildArch: noarch BuildRequires: perl BuildRequires: perl-generators BuildRequires: perl(ExtUtils::MakeMaker) BuildRequires: perl(DBD::SQLite) BuildRequires: perl(Email::Address::XS) # Fedora's highlight currently built without Perl bindings # BuildRequires: perl(highlight) BuildRequires: perl(Inline::C) BuildRequires: perl(IO::Socket::SSL) BuildRequires: perl(Mail::IMAPClient) BuildRequires: perl(Parse::RecDescent) BuildRequires: perl(Plack::Middleware::ReverseProxy) BuildRequires: perl(Plack::Test) BuildRequires: perl(Search::Xapian) BuildRequires: perl(Socket::MsgHdr) BuildRequires: pkgconfig(libgit2) # core-ish modules also listed in Makefile.PL's PREREQ_PM BuildRequires: perl(autodie) BuildRequires: perl(Compress::Raw::Zlib) BuildRequires: perl(Compress::Zlib) BuildRequires: perl(Data::Dumper) BuildRequires: perl(Digest::SHA) BuildRequires: perl(IO::Compress::Gzip) BuildRequires: perl(IO::Uncompress::Gunzip) BuildRequires: perl(Sys::Syslog) BuildRequires: perl(Text::ParseWords) BuildRequires: perl(URI) BuildRequires: perl(constant) BuildRequires: perl(Encode) >= 2.35 BuildRequires: perl(File::Path) BuildRequires: perl(File::Temp) >= 0.19 BuildRequires: perl(Getopt::Long) BuildRequires: perl(Exporter) BuildRequires: perl(IO::Poll) BuildRequires: perl(Storable) BuildRequires: perl(Time::HiRes) BuildRequires: curl BuildRequires: e2fsprogs BuildRequires: git >= 2.6 BuildRequires: man-db BuildRequires: sqlite 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) # Search.pm prefers the SWIG Xapian module over Search::Xapian when both are # present (Search.pm:110); without it we silently fall back to the older XS # bindings against a 1.4.x library Requires: xapian14-bindings-perl %global __requires_exclude ^perl\\((highlight|IO::KQueue)\\) %{?perl_default_filter} %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 %description -n perl-PublicInbox Perl libraries for public-inbox. %package server Summary: Server-side components for public-inbox Requires: %{name} = %{version}-%{release} # The WWW interface minifies publicinbox.css files at startup when # CSS::Minifier::XS or CSS::Minifier is available; neither is packaged # for EL10/EPEL 10, so no Recommends for now. %description server Server-side components and daemons for public-inbox. Example stylesheets for the WWW interface are installed in %{_datadir}/%{name}/css/ for use with the publicinbox.css setting. %package -n lei Summary: Local Email Interface for public-inbox Requires: %{name} = %{version}-%{release} # preferred over Inline::C for FD-passing between the lei front-end and # backend daemon (see PublicInbox::CmdIPC4) Requires: perl(Socket::MsgHdr) # LEI.pm unconditionally uses PublicInbox::XapHelperCxx, whose module-scope # code dies at compile time without a C++ compiler on PATH (upstream commit # 22ae93b8, "lei will only use the C++ version" -- there is no pure-Perl # fallback for lei) Requires: gcc-c++ # XapHelperCxx::cmd() shells out to pkg-config for xapian-core to build the # helper; without the .pc file it fails silently inside an eval and lei runs # with no search backend at all Requires: xapian14-core-devel %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 %{name}-%{shortcommit} # contrib/css/README would land as a bare, ambiguous README in the -server docdir cp -p contrib/css/README README.css # version-gen.perl only consults `git describe` inside a git checkout, so # tarball builds would report the hardcoded release version. Substitute the # same string upstream generates from git (describe output with - -> .). sed -i "s/^my \$version = '%{baseversion}';\$/my \$version = '%{baseversion}.%{commitcount}.g%{shortcommit}';/" Makefile.PL grep -q "^my \$version = '%{baseversion}.%{commitcount}.g%{shortcommit}';\$" Makefile.PL %build %{__perl} Makefile.PL INSTALLDIRS=vendor %make_build %install make pure_install DESTDIR=$RPM_BUILD_ROOT find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} ';' find $RPM_BUILD_ROOT -depth -type d -exec rmdir {} 2>/dev/null ';' %{_fixperms} $RPM_BUILD_ROOT/* for MANS in 1 5 7 8; do mkdir -p $RPM_BUILD_ROOT/%{_mandir}/man$MANS install -m 0644 *.$MANS $RPM_BUILD_ROOT/%{_mandir}/man$MANS/ done mkdir -p -m 0755 $RPM_BUILD_ROOT/%{_sysconfdir}/bash_completion.d install -m 0644 contrib/completion/* $RPM_BUILD_ROOT/%{_sysconfdir}/bash_completion.d/ # Not %%doc: publicinbox.css config points at these by absolute path, and # docs are dropped entirely under --excludedocs / tsflags=nodocs mkdir -p -m 0755 $RPM_BUILD_ROOT/%{_datadir}/%{name}/css install -m 0644 contrib/css/*.css $RPM_BUILD_ROOT/%{_datadir}/%{name}/css/ %check (cd certs && %{__perl} ./create-certs.perl) mkdir -p $RPM_BUILD_ROOT/tmp # t/lei-q-remote-import.t exercises `lei q --socks5-gssapi-service`, a # curl(1) option that only passes options through to curl without making # a real SOCKS connection -- but AlmaLinux/EPEL 10's curl build rejects # the option outright ("is unknown") despite advertising GSS-API among # its Features, so the subtest fails here regardless of whether lei's # own option handling is correct. Drop the file rather than patch # upstream's test for a packaging-environment curl build quirk. rm -f t/lei-q-remote-import.t PERL_INLINE_DIRECTORY=$RPM_BUILD_ROOT/tmp make test rm -rf $RPM_BUILD_ROOT/tmp %files %license COPYING %doc AUTHORS HACKING NEWS 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* %config(noreplace) %{_sysconfdir}/bash_completion.d/lei-completion.bash %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* %doc README.css %{_datadir}/%{name}/ %changelog * Tue Oct 13 2026 Konstantin Ryabitsev - 2.1.0^20261009git9f683641-1 - Build from an upstream master snapshot (commit 9f683641, 70 commits past v2.1.0) now that all korg-deployment fixes have landed upstream; fetch Source0 from public-inbox.org instead of the kernel.org fork - Ship the contrib/css example stylesheets in public-inbox-server under %%{_datadir}/%%{name}/css/ for use with publicinbox.css; add CC0-1.0 to License accordingly * Wed Sep 30 2026 Konstantin Ryabitsev - 2.1.0^20261001git7c115bde-1 - Build from a snapshot of the kernel.org korg-deployment branch (commit 7c115bde, 67 commits past v2.1.0) instead of master, to pick up fixes sent upstream but not yet landed there: - lei add-external: fix index and curl option rejection w/o --mirror - lei_curl: fix --curl-config - lei_query: fix curl(1) option specs - lei: reap curl and report errors on remote mboxrd failures - mbox_reader: die on truncated gzip input - Drop t/lei-q-remote-import.t from %%check: it exercises --socks5-gssapi-service as a pure passthrough-to-curl check, but this curl(1) build rejects the option outright ("is unknown") despite listing GSS-API among its Features -- an environment quirk, not a defect in lei's option handling * Fri Sep 25 2026 Konstantin Ryabitsev - 2.1.0^20260925git94b6bbb9-1 - Build from a snapshot of the kernel.org master branch (commit 94b6bbb9, 62 commits past v2.1.0) instead of the v2.1.0 tag - Use caret snapshot versioning so the package sorts above 2.1.0-3 and below a future 2.1.1 release - Patch the hardcoded version in Makefile.PL to the git-describe style 2.1.0.62.g94b6bbb9, so installed tools report the actual snapshot instead of plain 2.1.0 * Wed Sep 16 2026 Konstantin Ryabitsev - 2.1.0-3 - Add Requires: gcc-c++ and xapian14-core-devel to the lei sub-package: PublicInbox::XapHelperCxx dies at module load without a C++ compiler (upstream deliberately dropped the pure-Perl fallback for lei in 22ae93b8) and its cmd() silently fails to build the helper without xapian-core.pc, leaving lei with no working search backend - Add Requires: xapian14-bindings-perl to the main package: Search.pm prefers the SWIG Xapian module over Search::Xapian when both are installed, so without it public-inbox quietly runs against the older XS bindings instead of the 1.4.x library we ship * Wed Sep 09 2026 Konstantin Ryabitsev - 2.1.0-2 - Add perl(Socket::MsgHdr) BuildRequires and a Requires on the lei sub-package: it's PublicInbox::CmdIPC4's preferred (first-choice for the lei front-end) mechanism for passing FDs between lei and its backend daemon, ahead of the Inline::C fallback (newly packaged for EPEL10 in icon/lfit) * Wed Sep 09 2026 Konstantin Ryabitsev - 2.1.0-1 - Update to the released 2.1.0 (v2.1.0 tag, commit 87966e581f) - Drop the git-snapshot versioning scheme (gitver/date) and rpmautospec macros in favor of a plain tagged-release Version/Release, since this is now an actual upstream release rather than a dev snapshot - Add explicit BuildRequires for the rest of Makefile.PL's PREREQ_PM list that Fedora's spec relied on being pulled in transitively - Build against perl(Search::Xapian) (newly packaged for EPEL10 in icon/lfit as perl-Search-Xapian; not to be confused with the API-incompatible Xapian module from xapian-bindings), perl(Inline::C), perl(Plack::Middleware::ReverseProxy), and perl(Mail::IMAPClient) (all newly packaged for EPEL10 in icon/lfit) * Thu Jul 16 2026 Fedora Release Engineering - 2.0.0~20230714git590023f-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild * Tue Jan 20 2026 Fedora Release Engineering - 2.0.0~20230714git590023f-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild * Fri Jul 25 2025 Fedora Release Engineering - 2.0.0~20230714git590023f-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild * Sat Jan 18 2025 Fedora Release Engineering - 2.0.0~20230714git590023f-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild * Fri Jul 19 2024 Fedora Release Engineering - 2.0.0~20230714git590023f-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild * Fri Jan 26 2024 Fedora Release Engineering - 2.0.0~20230714git590023f-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild * Sun Jan 21 2024 Fedora Release Engineering - 2.0.0~20230714git590023f-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild * Tue Jul 25 2023 Michel Alexandre Salim - 2.0.0~20230714git590023f-1 - Update to 2.0.0 snapshot to work around imapd test issues (rhbz#2222856) - Use SPDX license identifier and correct the license (AGPL-3.0-or-later not AGPL3/AGPL-3.0-only) - Fix some lint warnings * Fri Jul 21 2023 Fedora Release Engineering - 1.9.0-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild * Fri Jan 20 2023 Fedora Release Engineering - 1.9.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild * Fri Jan 13 2023 Jitka Plesnikova - 1.9.0-2 - Remove perl(MODULE_COMPAT), it will be replaced by generators * Sat Aug 27 2022 Michel Alexandre Salim - 1.9.0-1 - Update to 1.9.0 * Fri Aug 26 2022 Michel Alexandre Salim - 1.8.0-1 - Update to 1.8.0 * Fri Jul 22 2022 Fedora Release Engineering - 1.7.0-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild * Wed Jun 01 2022 Jitka Plesnikova - 1.7.0-4 - Perl 5.36 rebuild * Fri Jan 21 2022 Fedora Release Engineering - 1.7.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild * Tue Jan 04 2022 Michel Alexandre Salim - 1.7.0-2 - Add missing runtime dep on perl(Search::Xapian). Fixes bz#2037095. * Fri Dec 03 2021 Michel Alexandre Salim - 1.7.0-1 - Initial package, based off the package in icon/b4 COPR