dooit: 3.0.4 -> 3.1.0 (#363526)
[NixPkgs.git] / pkgs / development / perl-modules / Po4a / default.nix
blobdee562e6820c0c20d70c4ecb5c8382d991d850d7
1 { stdenv
2 , lib
3 , fetchurl
4 , docbook_xsl
5 , docbook_xsl_ns
6 , gettext
7 , libxslt
8 , glibcLocales
9 , docbook_xml_dtd_45
10 , docbook_sgml_dtd_41
11 , opensp
12 , bash
13 , fetchpatch
14 , perl
15 , buildPerlPackage
16 , ModuleBuild
17 , TextWrapI18N
18 , LocaleGettext
19 , SGMLSpm
20 , UnicodeLineBreak
21 , PodParser
22 , YAMLTiny
23 , SyntaxKeywordTry
24 , writeShellScriptBin
27 buildPerlPackage rec {
28   pname = "po4a";
29   version = "0.73";
31   src = fetchurl {
32     url = "https://github.com/mquinson/po4a/releases/download/v${version}/po4a-${version}.tar.gz";
33     hash = "sha256-bxj4LYyyo3c5QTfqOWzD6BldbNbkVP4CGKoPDjYDjqA=";
34   };
36   strictDeps = true;
38   nativeBuildInputs =
39     # the tests for the tex-format use kpsewhich -- texlive's file finding utility.
40     # We don't want to depend on texlive here, so we replace it with a minimal
41     # shellscript that suffices for the tests in t/fmt/tex/, i.e. it looks up
42     # article.cls to an existing file, but doesn't find article-wrong.cls.
43     let
44       kpsewhich-stub = writeShellScriptBin "kpsewhich"
45         ''[[ $1 = "article.cls" ]] && echo /dev/null'';
46     in
47     [
48       gettext
49       libxslt
50       docbook_xsl
51       docbook_xsl_ns
52       ModuleBuild
53       docbook_xml_dtd_45
54       docbook_sgml_dtd_41
55       opensp
56       kpsewhich-stub
57       glibcLocales
58     ];
59   patches = [
60     # Needs a patch for 5.40 until the next release
61     (fetchpatch {
62       url = "https://github.com/mquinson/po4a/commit/28fe52651eb8096d97d6bd3a97b3168522ba5306.patch";
63       hash = "sha256-QUXxkSzcnwRvU+2y2KoBXmtfE8qTZ2BV0StkJHqZehQ=";
64     })
65     ];
67   # TODO: TermReadKey was temporarily removed from propagatedBuildInputs to unfreeze the build
68   propagatedBuildInputs = lib.optionals (!stdenv.hostPlatform.isMusl) [
69     TextWrapI18N
70   ] ++ [
71     LocaleGettext
72     SGMLSpm
73     UnicodeLineBreak
74     PodParser
75     YAMLTiny
76     SyntaxKeywordTry
77   ];
79   buildInputs = [ bash ];
81   LC_ALL = "en_US.UTF-8";
82   SGML_CATALOG_FILES = "${docbook_xml_dtd_45}/xml/dtd/docbook/catalog.xml";
84   preConfigure = ''
85     touch Makefile.PL
86     export PERL_MB_OPT="--install_base=$out --prefix=$out"
87   '';
89   buildPhase = ''
90     perl Build.PL --install_base=$out --install_path="lib=$out/${perl.libPrefix}"
91     ./Build build
92   '';
94   # Disabling tests on musl
95   # Void linux package have investigated the failure and tracked it down to differences in gettext behavior. They decided to disable tests.
96   # https://github.com/void-linux/void-packages/pull/34029#issuecomment-973267880
97   # Alpine packagers have not worried about running the tests until now:
98   # https://git.alpinelinux.org/aports/tree/main/po4a/APKBUILD#n11
99   #
100   # Disabling tests on Darwin until https://github.com/NixOS/nixpkgs/issues/236560 is resolved.
101   doCheck = (!stdenv.hostPlatform.isMusl) && (!stdenv.hostPlatform.isDarwin);
103   checkPhase = ''
104     export SGML_CATALOG_FILES=${docbook_sgml_dtd_41}/sgml/dtd/docbook-4.1/docbook.cat
105     ./Build test
106   '';
108   installPhase = ''
109     ./Build install
110     for f in $out/bin/*; do
111       substituteInPlace $f --replace "#! /usr/bin/env perl" "#!${perl}/bin/perl"
112       substituteInPlace $f --replace "exec perl" "exec ${perl}/bin/perl"
113     done
114   '';
116   meta = {
117     description = "Tools for helping translation of documentation";
118     homepage = "https://po4a.org";
119     license = with lib.licenses; [ gpl2Plus ];
120   };