diff --git a/pkgs/tools/typesetting/docbook2x/db2x_texixml-to-stdout.patch b/pkgs/tools/typesetting/docbook2x/db2x_texixml-to-stdout.patch new file mode 100644 index 00000000000..8daa5c87a66 --- /dev/null +++ b/pkgs/tools/typesetting/docbook2x/db2x_texixml-to-stdout.patch @@ -0,0 +1,15 @@ +--- docbook2X-0.8.8/perl/db2x_texixml.pl 2006-04-20 05:02:31.000000000 +0200 ++++ docbook2X-0.8.8/perl/db2x_texixml.pl 2008-03-12 15:36:55.000000000 +0100 +@@ -432,8 +432,12 @@ sub texi_openfile { + $openstr = '>-'; + } + } else { ++ if(not $self->{options}->{'to-stdout'}) { + $openstr .= '> ' . shell_quote($filename); + print "$filename\n" + if $self->{options}->{'list-files'}; ++ } else { ++ $openstr = '>-'; ++ } + } + } diff --git a/pkgs/tools/typesetting/docbook2x/default.nix b/pkgs/tools/typesetting/docbook2x/default.nix index 68f92d22aed..a6e56f1c53b 100644 --- a/pkgs/tools/typesetting/docbook2x/default.nix +++ b/pkgs/tools/typesetting/docbook2x/default.nix @@ -1,4 +1,5 @@ -{ fetchurl, stdenv, perl, perlXMLSAX +{ fetchurl, stdenv, texinfo, perl +, perlXMLSAX, perlXMLParser, perlXMLNamespaceSupport , groff, libxml2, libxslt, gnused , makeWrapper }: @@ -9,16 +10,33 @@ stdenv.mkDerivation rec { sha256 = "0ifwzk99rzjws0ixzimbvs83x6cxqk1xzmg84wa1p7bs6rypaxs0"; }; - buildInputs = [ perl groff libxml2 libxslt makeWrapper ]; - propagatedBuildInputs = [ perlXMLSAX ]; + # This patch makes sure that `docbook2texi --to-stdout' actually + # writes its output to stdout instead of creating a file. + patches = [ ./db2x_texixml-to-stdout.patch ]; + + buildInputs = [ perl texinfo groff libxml2 libxslt makeWrapper + perlXMLSAX perlXMLParser perlXMLNamespaceSupport ]; + + postConfigure = '' + # Broken substitution is used for `perl/config.pl', which leaves literal + # `$prefix' in it. + substituteInPlace "perl/config.pl" \ + --replace '${"\$" + "{prefix}"}' "$out" + ''; postInstall = '' - perl_programs="db2x_manxml db2x_texixml db2x_xsltproc - docbook2man docbook2texi"; - for i in $perl_programs + perlPrograms="db2x_manxml db2x_texixml db2x_xsltproc + docbook2man docbook2texi"; + for i in $perlPrograms do - wrapProgram $out/bin/$i --prefix PERL5LIB : \ - "${perlXMLSAX}/lib/site_perl" + # XXX: We work around the fact that `wrapProgram' doesn't support + # spaces below by inserting escaped backslashes. + wrapProgram $out/bin/$i --prefix PERL5LIB : \ + "${perlXMLSAX}/lib/site_perl:${perlXMLParser}/lib/site_perl" \ + --prefix PERL5LIB : \ + "${perlXMLNamespaceSupport}/lib/site_perl" \ + --prefix XML_CATALOG_FILES "\ " \ + "$out/share/docbook2X/dtd/catalog.xml\ $out/share/docbook2X/xslt/catalog.xml" done wrapProgram $out/bin/sgml2xml-isoent --prefix PATH : \ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 61a410a6eab..252874b73b0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -504,7 +504,8 @@ rec { }); docbook2x = import ../tools/typesetting/docbook2x { - inherit fetchurl stdenv perl perlXMLSAX + inherit fetchurl stdenv texinfo perl + perlXMLSAX perlXMLParser perlXMLNamespaceSupport gnused groff libxml2 libxslt makeWrapper; };