2022-05-18 14:49:53 +00:00
{ stdenv , lib , fetchurl , makeWrapper , nixosTests
, buildPerlPackage
, coreutils
, curl
, git
, gnumake
, highlight
, libgit2
, man
, openssl
, pkg-config
, sqlite
, xapian
, AnyURIEscape
, DBDSQLite
, DBI
, EmailAddressXS
, EmailMIME
, IOSocketSSL
, IPCRun
, Inline
, InlineC
, LinuxInotify2
, MailIMAPClient
, ParseRecDescent
, Plack
, PlackMiddlewareReverseProxy
, SearchXapian
, TimeDate
, URI
2020-04-24 23:36:52 +00:00
} :
let
2022-05-18 14:49:53 +00:00
skippedTests = [
# 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/
" c o n v e r t - c o m p a c t " " s e a r c h " " v 2 w r i t a b l e " " w w w _ l i s t i n g "
# 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.
# perl5.32.0-public-inbox> # Failed test 'got wide character by assuming utf-8'
# perl5.32.0-public-inbox> # at t/eml.t line 272.
# 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.
" e m l "
# Failed test 'Makefile OK'
# at t/hl_mod.t line 19.
# got: 'makefile'
# expected: 'make'
" h l _ m o d "
# Failed test 'clone + index v1 synced ->created_at'
# at t/lei-mirror.t line 175.
# got: '1638378723'
# expected: undef
# Failed test 'clone + index v1 synced ->created_at'
# at t/lei-mirror.t line 178.
# got: '1638378723'
# expected: undef
# May be due to the use of $ENV{HOME}.
" l e i - m i r r o r "
# Failed test 'child error (pure-Perl)'
# at t/spawn.t line 33.
# got: '0'
# expected: anything else
# waiting for child to reap grandchild...
" s p a w n "
] ;
2020-04-24 23:36:52 +00:00
testConditions = with lib ;
concatMapStringsSep " " ( n : " ! - n a m e ${ escapeShellArg n } . t " ) skippedTests ;
in
buildPerlPackage rec {
pname = " p u b l i c - i n b o x " ;
2022-05-18 14:49:53 +00:00
version = " 1 . 8 . 0 " ;
2020-04-24 23:36:52 +00:00
src = fetchurl {
2022-05-18 14:49:53 +00:00
url = " h t t p s : / / p u b l i c - i n b o x . o r g / p u b l i c - i n b o x . g i t / s n a p s h o t / p u b l i c - i n b o x - ${ version } . t a r . g z " ;
sha256 = " s h a 2 5 6 - l a J O O C k 5 N e c I G W e s v 4 D 3 0 c L G f i j Q H V k e o 5 5 e N q N K z e w = " ;
2020-04-24 23:36:52 +00:00
} ;
outputs = [ " o u t " " d e v d o c " " s a _ c o n f i g " ] ;
postConfigure = ''
substituteInPlace Makefile - - replace ' TEST_FILES = t /* . t ' \
' TEST_FILES = $ ( shell find t - name * . t $ { testConditions } ) '
2022-05-18 14:49:53 +00:00
substituteInPlace lib/PublicInbox/TestCommon.pm \
- - replace /bin/cp $ { coreutils } /bin/cp
2020-04-24 23:36:52 +00:00
'' ;
nativeBuildInputs = [ makeWrapper ] ;
buildInputs = [
2022-05-18 14:49:53 +00:00
AnyURIEscape
DBDSQLite
DBI
EmailAddressXS
EmailMIME
highlight
IOSocketSSL
IPCRun
Inline
InlineC
ParseRecDescent
Plack
PlackMiddlewareReverseProxy
SearchXapian
TimeDate
URI
libgit2 # For Gcf2
man
2020-04-24 23:36:52 +00:00
] ;
2022-05-18 14:49:53 +00:00
doCheck = ! stdenv . isDarwin ;
checkInputs = [
MailIMAPClient
curl
git
openssl
pkg-config
sqlite
xapian
] ++ lib . optionals stdenv . isLinux [
LinuxInotify2
] ;
2020-04-24 23:36:52 +00:00
preCheck = ''
perl certs/create-certs.perl
2022-05-18 14:49:53 +00:00
export TEST_LEI_ERR_LOUD = 1
export HOME = " $ N I X _ B U I L D _ T O P " /home
mkdir - p " $ H O M E " /.cache/public-inbox/inline-c
2020-04-24 23:36:52 +00:00
'' ;
installTargets = [ " i n s t a l l " ] ;
postInstall = ''
for prog in $ out/bin /* ; d o
2022-05-18 14:49:53 +00:00
wrapProgram $ prog - - prefix PATH : $ { lib . makeBinPath [
git
/* f o r I n l i n e C */
gnumake
stdenv . cc . cc
] }
2020-04-24 23:36:52 +00:00
done
mv sa_config $ sa_config
'' ;
2022-05-18 14:49:53 +00:00
passthru . tests = {
nixos-public-inbox = nixosTests . public-inbox ;
} ;
2020-04-24 23:36:52 +00:00
meta = with lib ; {
homepage = " h t t p s : / / p u b l i c - i n b o x . o r g / " ;
license = licenses . agpl3Plus ;
2022-05-18 14:49:53 +00:00
maintainers = with maintainers ; [ julm qyliss ] ;
2020-04-24 23:36:52 +00:00
platforms = platforms . all ;
} ;
}