nixpkgs/pkgs/applications/misc/ikiwiki/default.nix
Michal Sojka 8094b8a953 ikiwiki: add highlight dependency
IkiWiki's highlight plugin requires this.

Note that the current highlight version (3.57) is not compatible with
ikiwiki version in nixpkgs. This will be fixed in the next commit.
2020-10-08 15:41:41 +02:00

92 lines
3.5 KiB
Nix

{ stdenv, fetchurl, perlPackages, gettext, makeWrapper, PerlMagick, which, highlight
, gitSupport ? false, git ? null
, docutilsSupport ? false, python ? null, docutils ? null
, monotoneSupport ? false, monotone ? null
, bazaarSupport ? false, breezy ? null
, cvsSupport ? false, cvs ? null, cvsps ? null
, subversionSupport ? false, subversion ? null
, mercurialSupport ? false, mercurial ? null
, extraUtils ? []
}:
assert docutilsSupport -> (python != null && docutils != null);
assert gitSupport -> (git != null);
assert monotoneSupport -> (monotone != null);
assert bazaarSupport -> (breezy != null);
assert cvsSupport -> (cvs != null && cvsps != null && perlPackages.Filechdir != null);
assert subversionSupport -> (subversion != null);
assert mercurialSupport -> (mercurial != null);
let
name = "ikiwiki";
version = "3.20190228";
lib = stdenv.lib;
in
stdenv.mkDerivation {
name = "${name}-${version}";
src = fetchurl {
url = "mirror://debian/pool/main/i/ikiwiki/${name}_${version}.orig.tar.xz";
sha256 = "17pyblaqhkb61lxl63bzndiffism8k859p54k3k4sghclq6lsynh";
};
buildInputs = [ which highlight ]
++ (with perlPackages; [ perl TextMarkdown URI HTMLParser HTMLScrubber HTMLTemplate
TimeDate gettext makeWrapper DBFile CGISession CGIFormBuilder LocaleGettext
RpcXML XMLSimple PerlMagick YAML YAMLLibYAML HTMLTree AuthenPassphrase
NetOpenIDConsumer LWPxParanoidAgent CryptSSLeay ])
++ lib.optionals docutilsSupport [python docutils]
++ lib.optionals gitSupport [git]
++ lib.optionals monotoneSupport [monotone]
++ lib.optionals bazaarSupport [breezy]
++ lib.optionals cvsSupport [cvs cvsps perlPackages.Filechdir]
++ lib.optionals subversionSupport [subversion]
++ lib.optionals mercurialSupport [mercurial];
# A few markdown tests fail, but this is expected when using Text::Markdown
# instead of Text::Markdown::Discount.
patches = [ ./remove-markdown-tests.patch ];
postPatch = ''
sed -i s@/usr/bin/perl@${perlPackages.perl}/bin/perl@ pm_filter mdwn2man
sed -i s@/etc/ikiwiki@$out/etc@ Makefile.PL
sed -i /ENV{PATH}/d ikiwiki.in
# State the gcc dependency, and make the cgi use our wrapper
sed -i -e 's@$0@"'$out/bin/ikiwiki'"@' \
-e "s@'cc'@'${stdenv.cc}/bin/gcc'@" IkiWiki/Wrapper.pm
'';
configurePhase = "perl Makefile.PL PREFIX=$out";
postInstall = ''
for a in "$out/bin/"*; do
wrapProgram $a --suffix PERL5LIB : $PERL5LIB --prefix PATH : ${perlPackages.perl}/bin:$out/bin \
${lib.optionalString gitSupport ''--prefix PATH : ${git}/bin \''}
${lib.optionalString monotoneSupport ''--prefix PATH : ${monotone}/bin \''}
${lib.optionalString bazaarSupport ''--prefix PATH : ${breezy}/bin \''}
${lib.optionalString cvsSupport ''--prefix PATH : ${cvs}/bin \''}
${lib.optionalString cvsSupport ''--prefix PATH : ${cvsps}/bin \''}
${lib.optionalString subversionSupport ''--prefix PATH : ${subversion.out}/bin \''}
${lib.optionalString mercurialSupport ''--prefix PATH : ${mercurial}/bin \''}
${lib.concatMapStrings (x: "--prefix PATH : ${x}/bin ") extraUtils}
done
'';
preCheck = ''
# Git needs some help figuring this out during test suite run.
export EMAIL="nobody@example.org"
'';
checkTarget = "test";
doCheck = true;
meta = {
description = "Wiki compiler, storing pages and history in a RCS";
homepage = "http://ikiwiki.info/";
license = stdenv.lib.licenses.gpl2Plus;
platforms = stdenv.lib.platforms.linux;
maintainers = [ stdenv.lib.maintainers.peti ];
};
}