nixpkgs-suyu/pkgs/servers/mail/public-inbox/default.nix
Alyssa Ross 8f8514c6ba public-inbox: init at 1.2.0
highlight's Perl bindings are currently disabled on Darwin, but I
didn't make the dependency here conditional so that if that is ever
fixed, this function won't need to be updated. p-i is smart enough to
disable the test for highlight if it can't find the Perl module.
2019-12-20 19:47:42 +00:00

66 lines
1.7 KiB
Nix

{ buildPerlPackage, lib, fetchurl, makeWrapper
, DBDSQLite, EmailMIME, IOSocketSSL, IPCRun, Plack, PlackMiddlewareReverseProxy
, SearchXapian, TimeDate, URI
, git, highlight, openssl, xapian
}:
let
# These tests would fail, and produce "Operation not permitted"
# errors from git, because they use git init --shared. This tries
# to set the setgid bit, which isn't permitted inside build
# sandboxes.
#
# These tests were indentified with
# grep -r shared t/
skippedTests = [ "convert-compact" "search" "v2writable" "www_listing" ];
testConditions = with lib;
concatMapStringsSep " " (n: "! -name ${escapeShellArg n}.t") skippedTests;
in
buildPerlPackage rec {
pname = "public-inbox";
version = "1.2.0";
src = fetchurl {
url = "https://public-inbox.org/releases/public-inbox-${version}.tar.gz";
sha256 = "0sa2m4f2x7kfg3mi4im7maxqmqvawafma8f7g92nyfgybid77g6s";
};
outputs = [ "out" "devdoc" "sa_config" ];
postConfigure = ''
substituteInPlace Makefile --replace 'TEST_FILES = t/*.t' \
'TEST_FILES = $(shell find t -name *.t ${testConditions})'
'';
nativeBuildInputs = [ makeWrapper ];
buildInputs = [
DBDSQLite EmailMIME IOSocketSSL IPCRun Plack PlackMiddlewareReverseProxy
SearchXapian TimeDate URI highlight
];
checkInputs = [ git openssl xapian ];
preCheck = ''
perl certs/create-certs.perl
'';
installTargets = [ "install" ];
postInstall = ''
for prog in $out/bin/*; do
wrapProgram $prog --prefix PATH : ${lib.makeBinPath [ git ]}
done
mv sa_config $sa_config
'';
meta = with lib; {
homepage = "https://public-inbox.org/";
license = licenses.agpl3Plus;
maintainers = with maintainers; [ qyliss ];
platforms = platforms.all;
};
}