about summary refs log tree commit homepage
path: root/INSTALL
DateCommit message (Collapse)
2024-03-18INSTALL: try to be less confusing about optional modules
2024-03-16Fix some typos and language nits in docs and comments
2024-03-14doc: update release notes, marketing, and install
INSTALL now covers more of lei since I'm less uncomfortable about it for 2.0 and points users towards the install/ helpers if installing from source.
2023-12-10imap: replace Mail::Address fallback with AddressPP
Our pure-Perl (PublicInbox::AddressPP) fallback is closer to the preferred Email::Address::XS (EAX) behavior than Mail::Address is for ->name support. EAX tends to be overkill with good spam filtering, and using our own fallback means life is easier for users with neither C/XS build tools nor a pre-built EAX package.
2023-09-14updates around RPM packages on CentOS 7.x
Add explicit dependencies on packages that are possible to remove without removing the `perl' RPM from CentOS 7.x. However, simplify deps.perl to avoid naming essential Perl modules (e.g. `perl-Exporter') that cannot be removed without removing the `perl' RPM entirely. We can also drop `Socket6' from deps.perl since it's pulled in as-needed by other packages and we try to avoid it in favor of the (now-standard) IO::Socket::IP.
2023-09-14INSTALL: update for 2023, NetBSD and OpenBSD
We'll also note that curl is used by lei and -clone.
2023-09-11treewide: favor Xapian (SWIG binding) over Search::Xapian
The Xapian SWIG bindings are favored by Xapian upstream for ease-of-maintenance compared to the XS version. While Debian lags on this front, the SWIG bindings are widely available on all *BSDs.
2023-09-08update docs + tests for xapian-delve use
Since -cindex uses the xapian-delve(1) command for `--prune' functionality, we'll rename our `xapian-compact' dependency to the Debian package name (xapian-tools) since `xapian-delve' is in the same package.
2023-09-02Clarify Inline::C dependency (optional on Linux, required elsewhere)
Link: https://public-inbox.org/meta/20230901110903.M876537@dcvr/ Link: https://public-inbox.org/meta/20230902194407.M464597@dcvr/ Fixes: 88c7c7c26b44 ("lei: wire up pure Perl sendmsg/recvmsg for Linux users") Fixes: acefd91b302d ("syscall: implement sendmsg+recvmsg in pure Perl")
2023-08-30Makefile.PL: depend on autodie, at least for tests
While using autodie everywhere is not appropriate[*], many of our tests and FS access code can be easier-to-write and more readable using autodie as we've started doing in XapHelperCxx.pm and xap_helper.t [*] - EAGAIN on non-blocking I/O shouldn't die, nor should certain cases of opening maybe-missing files for reading
2023-08-28Fix some typos/grammar/errors in docs and comments
2023-08-25doc: INSTALL: note OpenBSD xapian-bindings-perl package
The `xapian-bindings-perl' package contains the Xapian.pm SWIG bindings, but doesn't adhere to the existing convention of naming system packages after the Perl package name itself using: "p5-${\($Perl_package_name =~ s/::/-/gr)}". Reported-by: Štěpán Němec <stepnem@smrk.net> Link: https://public-inbox.org/meta/20230824132323+0200.507058-stepnem@smrk.net/
2023-04-27INSTALL: fix FreeBSD pkg name typos
Tested on FreeBSD 13.2-RELEASE.
2022-08-30INSTALL: update for Perl 5.12 dependency and 2022
AFAIK, there's no new distro packages this year...
2021-11-01doc: update release notes and INSTALL
This is what I can think of at the moment.
2021-09-10INSTALL: depend on URI rather than URI::Escape
As far as I can tell, URI::Escape has always been a part of the `URI' package (aka "distribution" on CPAN) and not distributed separately (unlike URI::Escape::XS). So avoid confusing users with `URI::Escape' and just document `URI' instead. Along the same lines, we depend on the `Plack' package rather than Plack::Util or Plack::Builder, after all.
2021-06-06INSTALL: note about lei metadata storage
Since lei is for personal mailboxes, I don't think lei needs to keep keyword and label changes in history. And fix a minor wording problem ("or" => "nor") while we're at it.
2021-04-23doc: INSTALL: add Guix to distribution list
public-inbox has been available in Guix since 2019.
2021-04-23doc: INSTALL: update with more distro info, symlink-install
2021-02-08INSTALL: depend on Text::ParseWords
It's been distributed with Perl since 1994, and we use it for both -imapd and lei. It's split out as a separate package in CentOS 7.x, so we'll depend on it to avoid surprising users of RPM-based distros.
2021-02-04doc: update dependencies (+Storable, Data::Dumper)
The new IPC stuff doesn't work without Storable or Sereal. Storable is part of the standard library since Perl 5.8, so we'll put a hard dependency on it for distros that package it separately. Data::Dumper is also part of the standard library, and PublicInbox::MboxReader uses it, and it's frequently useful during development. We'll also trim down INSTALL for standard library modules so it's hopefully less daunting for new users. Development dependencies are noted in HACKING, now. Email::MIME is only used for maintainer tests, so it's only documented in HACKING.
2021-02-01doc: note optional BSD::Resource use
We've actually been capable of using this since 2019(*) in our spawn code for PSGI limiters. And it's been used since 2016 in our tests. It's a dependency of SpamAssassin, and Danga::Socket used it, too. (*) commit 721368cd04bfbd03c0d9173fff633ae34f16409a ("spawn: support RLIMIT_CPU, RLIMIT_DATA and RLIMIT_CORE")
2021-01-25doc: README + INSTALL: update with -imapd info
I forgot to update these when releasing 1.6 :x
2021-01-01update copyrights for 2021
Using "make update-copyrights" after setting GNULIB_PATH in my config.mak
2020-07-06stop auto-loading Plack::Middleware::Deflater
Instead of gzipping some (mbox.gz, manifest.js.gz) responses and leaving P::M::D to do the rest, we gzip everything ourselves, now, so P::M::D is redundant.
2020-06-28watch: remove Filesys::Notify::Simple dependency
Since we already use inotify and EVFILT_VNODE (kqueue) in -imapd, we might as well use them directly in -watch, too. This will allow public-inbox-watch to use PublicInbox::DS for timers to watch newsgroups/mailboxes and have saner signal handling in future commits.
2020-05-09remove most internal Email::MIME usage
We no longer load or use Email::MIME outside of comparison tests.
2020-04-20doc: HACKING: add a bit about faster testing
`make test' is annoyingly slow, and `make check-run' works wonders for improving the edit && test cycle.
2020-03-08INSTALL: refer to the proper Debian version
Debian 10.0 was released July 2019, so update our documentation to reflect that. While we're at it, fixup a broken footnote reference for Inline::C, too.
2020-03-01INSTALL: update for 1.3.0+, clarify IO::Compress
IO::Compress is required for v2 inboxes and overview indices, after all, but it is often pulled in by other packages (HTTP::Message via Plack::Test).
2020-02-24INSTALL: s/repositories/inboxes/
Since v2 inboxes can be made of several git repositories, consistently call them "inboxes", instead.
2020-02-07tests: switch to XML::TreePP for testing Atom feeds
XML::Feed pulls in a lot of dependencies, some of which XS. That makes testing with blead or any non-OS-supplied Perl installations more time consuming and more difficult because of the need to have development headers and libraries for libexpat1 or libxml2. Performance from libexpat1 or libxml2 for our small tests cases isn't relevant, either, and the pure Perl XML::TreePP seems up to the task. It's also available in CentOS 7.x, FreeBSD 11.x, and Debian, at least.
2020-02-06treewide: run update-copyrights from gnulib for 2019
I didn't wait until September to do it, this year!
2020-01-28INSTALL: fix Linux::Inotify2 package name
The "2" is important, since "Linux::Inotify" without the "2" is not available from Debian 9/10 or CentOS 7.x and seems unmaintained.
2020-01-25doc: INSTALL describe required deps for released versions
1.3.0 isn't out, yet, and sometimes folks will rely on INSTALL on our website while installing older versions, so try to clarify that.
2020-01-11make Plack optional for non-WWW and non-httpd users
Some users just want to run -mda, -watch, and/or -nntpd. Let them run just those without forcing them to pull in a bunch of dependencies.
2019-12-12Date::Parse is now optional
-mda should not be dealing with broken Date: headers nowadays, and deprioritize it in our documentation and internal checks.
2019-12-11build: support doc generation w/o GNU make
We can replace the GNU-isms for building docs with Perl5 equivalents. The only downside is the resulting Makefile gets larger, but that's the price of portability.
2019-11-16doc: remove IPC::Run as a dev and test dependency
It's no longer needed and we're able to speed up some of our tests as a result.
2019-10-15INSTALL: recommend inotify|kqueue modules for -watch
Jan Kiszka reported high polling frequency when using -watch. It turns out OS-specific packages for Filesys::Notify::Simple do not pull in interfaces to use kqueue or inotify, which are required to perform power-efficient event-based wakeups on Maildir writes. Fix the name of the Filesys::Notify::Simple for FreeBSD while we're at it. Link: https://public-inbox.org/meta/c85803c6-6d77-a300-491a-9f310dd284c1@web.de/
2019-10-09INSTALL: note that we prefer GNU make
ExtUtils::MakeMaker uses non-POSIX '::', at least; and our own Documentation/include.mk and our postamble are written for GNU make. GNU make is also more widely-installed and available than any other make; even if I'm not generally a fan of GNU-isms.
2019-06-13doc: update dependencies for CentOS 7.x
Digest::SHA is the most notable missing package at runtime for a minimal system. Tests don't run at all without Test::Simple (or Test::More). Plack::Test is also a separate package, too... Also, the package for IO::Compress::Gzip should be IO::Compress; as perl-PerlIO-gzip is a different thing entirely which is not relevant to our needs. Test::HTTP::Server::Simple doesn't seem required at all for Plack tests. ExtUtils::MakeMaker needs to be documented as a install dependency for people installing this, too; since AFAIK public-inbox is not yet in any distros.
2019-05-21Merge remote-tracking branch 'origin/xap-optional' into master
* origin/xap-optional: admin: improve warnings and errors for missing modules searchidx: do not create empty Xapian partitions for basic lazy load Xapian and make it optional for v2 www: use Inbox->over where appropriate nntp: use Inbox->over directly inbox: add ->over method to ease access
2019-05-15remove hard Devel::Peek dependency and lazy load for daemons
It's only useful for a corner case in long-running daemons when an admin decides to compact or vacuum a Xapian or SQLite DB. As a result, other scripts should run slightly faster. For instance, this saves about 80ms (2.710s => 2.630s) in t/mda.t on my remote workstation. While we're at it, make sure EvCleanup is properly require'd in Daemon.pm and HTTP.pm and document our use of Devel::Peek.
2019-05-15lazy load Xapian and make it optional for v2
More tests work without Search::Xapian, now. Usability issues still need to be fixed
2019-05-08INSTALL: note xapian-compact(1) tool
The Perl Xapian bindings do not support compacting, yet, so we rely on the xapian-compact tool.
2019-05-08INSTALL: depend on Encode instead of Encode::MIME::Header
Email::MIME uses Encode::MIME::Header and depends on that appropriately; however we depend on other parts of the Encode distribution, but that's bundled with Perl by upstream, anyways; and should place no additional burden on users.
2019-05-08INSTALL: update with FreeBSD pkg names and reorder
Fortunately, there is a pattern to most of these package names in all distros I've tested (and hopefully other BSDs have them, too). Then, reorder the INSTALL document to mention the top-level modules, first, so users can avoid needing to type extra dependencies. However, we still list some implicit dependencies in case the upstream package drops dependencies independently of us. Finally, Devel::Peek is not a dependency worth making optional since it's bundled by Perl upstream. Fedora/RH-based distros are the only one which turn it into a non-standard package when Perl5 is installed.
2019-05-08Merge remote-tracking branch 'origin/danga-bundle'
* origin/danga-bundle: DS: epoll: fix misordered EPOLL_CTL_DEL call DS: drop unused "_undef" sub syscall: drop readahead wrapper build: do not manify DS and Syscall pods DS: handle EINTR in IO::Poll path, too DS: workaround IO::Kqueue EINTR (mis-)handling DS: drop profiling support DS: remove unused fields and functions listener: use EPOLLEXCLUSIVE for listen sockets bundle Danga::Socket and Sys::Syscall
2019-05-04bundle Danga::Socket and Sys::Syscall
These modules are unmaintained upstream at the moment, but I'll be able to help with the intended maintainer once/if CPAN ownership is transferred. OTOH, we've been waiting for that transfer for several years, now... Changes I intend to make: * EPOLLEXCLUSIVE for Linux * remove unused fields wasting memory * kqueue bugfixes e.g. https://rt.cpan.org/Ticket/Display.html?id=116615 * accept4 support And some lower priority experiments: * switch to EV_ONESHOT / EPOLLONESHOT (incompatible changes) * nginx-style buffering to tmpfile instead of string array * sendfile off tmpfile buffers * io_uring maybe?