Merge pull request #330634 from r-ryantm/auto-update/circumflex
[NixPkgs.git] / pkgs / servers / mail / public-inbox / default.nix
blob9918d075a733f8c631249c4d0731e20279847bfc
1 { stdenv, lib, fetchurl, makeWrapper, nixosTests
2 , buildPerlPackage
3 , coreutils
4 , curl
5 , git
6 , gnumake
7 , highlight
8 , libgit2
9 , libxcrypt
10 , man
11 , openssl
12 , pkg-config
13 , sqlite
14 , xapian
15 , AnyURIEscape
16 , DBDSQLite
17 , DBI
18 , EmailAddressXS
19 , EmailMIME
20 , IOSocketSSL
21 # FIXME: to be packaged
22 #, IOSocketSocks
23 , IPCRun
24 , Inline
25 , InlineC
26 , LinuxInotify2
27 , MailIMAPClient
28 # FIXME: to be packaged
29 #, NetNetrc
30 # FIXME: to be packaged
31 #, NetNNTP
32 , ParseRecDescent
33 , Plack
34 , PlackMiddlewareReverseProxy
35 , PlackTestExternalServer
36 , SearchXapian
37 , TestSimple13
38 , TimeDate
39 , URI
40 , XMLTreePP
43 let
45   skippedTests = [
46     # fatal: Could not make /tmp/pi-search-9188-DGZM/a.git/branches/ writable by group
47     "search"
48     # perl5.32.0-public-inbox> t/eml.t ...................... 1/? Cannot parse parameter '=?ISO-8859-1?Q?=20charset=3D=1BOF?=' at t/eml.t line 270.
49     # perl5.32.0-public-inbox> #   Failed test 'got wide character by assuming utf-8'
50     # perl5.32.0-public-inbox> #   at t/eml.t line 272.
51     # perl5.32.0-public-inbox> Wide character in print at /nix/store/38vxlxrvg3yji3jms44qn94lxdysbj5j-perl-5.32.0/lib/perl5/5.32.0/Test2/Formatter/TAP.pm line 125.
52     "eml"
53     # Failed test 'Makefile OK'
54     # at t/hl_mod.t line 19.
55     #        got: 'makefile'
56     #   expected: 'make'
57     "hl_mod"
58     # Hangs on "inbox unlocked on initial fetch, waiting for IDLE".
59     # Fixed in HEAD: 7234e671 ("t/imapd: workaround a Perl 5.36.0 readline regression")
60     "imapd"
61     # Failed test 'clone + index v1 synced ->created_at'
62     # at t/lei-mirror.t line 175.
63     #        got: '1638378723'
64     #   expected: undef
65     # Failed test 'clone + index v1 synced ->created_at'
66     # at t/lei-mirror.t line 178.
67     #        got: '1638378723'
68     #   expected: undef
69     # May be due to the use of $ENV{HOME}.
70     "lei-mirror"
71     # Failed test 'child error (pure-Perl)'
72     # at t/spawn.t line 33.
73     #        got: '0'
74     #   expected: anything else
75     # waiting for child to reap grandchild...
76     "spawn"
77     # Failed to connect to 127.0.0.1
78     "v2mirror"
79   ];
81   testConditions = with lib;
82     concatMapStringsSep " " (n: "! -name ${escapeShellArg n}.t") skippedTests;
86 buildPerlPackage rec {
87   pname = "public-inbox";
88   version = "1.9.0";
90   src = fetchurl {
91     url = "https://public-inbox.org/public-inbox.git/snapshot/public-inbox-${version}.tar.gz";
92     sha256 = "sha256-ENnT2YK7rpODII9TqiEYSCp5mpWOnxskeSuAf8Ilqro=";
93   };
95   outputs = [ "out" "devdoc" "sa_config" ];
97   postConfigure = ''
98     substituteInPlace Makefile --replace 'TEST_FILES = t/*.t' \
99         'TEST_FILES = $(shell find t -name *.t ${testConditions})'
100     substituteInPlace lib/PublicInbox/TestCommon.pm \
101       --replace /bin/cp ${coreutils}/bin/cp
102   '';
104   nativeBuildInputs = [ makeWrapper ];
106   buildInputs = [
107     AnyURIEscape
108     DBDSQLite
109     DBI
110     EmailAddressXS
111     highlight
112     IOSocketSSL
113     #IOSocketSocks
114     IPCRun
115     Inline
116     InlineC
117     MailIMAPClient
118     #NetNetrc
119     #NetNNTP
120     ParseRecDescent
121     Plack
122     PlackMiddlewareReverseProxy
123     SearchXapian
124     TimeDate
125     URI
126     libgit2 # For Gcf2
127     man
128   ];
130   doCheck = !stdenv.isDarwin;
131   nativeCheckInputs = [
132     curl
133     git
134     openssl
135     pkg-config
136     sqlite
137     xapian
138     EmailMIME
139     PlackTestExternalServer
140     TestSimple13
141     XMLTreePP
142   ] ++ lib.optionals stdenv.isLinux [
143     LinuxInotify2
144   ];
145   preCheck = ''
146     perl certs/create-certs.perl
147     export TEST_LEI_ERR_LOUD=1
148     export HOME="$NIX_BUILD_TOP"/home
149     mkdir -p "$HOME"/.cache/public-inbox/inline-c
150   '';
152   installTargets = [ "install" ];
153   postInstall = ''
154     for prog in $out/bin/*; do
155         wrapProgram $prog \
156             --set NIX_CFLAGS_COMPILE_${stdenv.cc.suffixSalt} -I${lib.getDev libxcrypt}/include \
157             --prefix PATH : ${lib.makeBinPath [
158               git
159               xapian
160               /* for InlineC */
161               gnumake
162               stdenv.cc
163             ]}
164     done
166     mv sa_config $sa_config
167   '';
169   passthru.tests = {
170     nixos-public-inbox = nixosTests.public-inbox;
171   };
173   meta = with lib; {
174     homepage = "https://public-inbox.org/";
175     license = licenses.agpl3Plus;
176     maintainers = with maintainers; [ julm qyliss ];
177     platforms = platforms.all;
178   };