1 # -*- python; coding: utf-8 -*-
3 # gtk-doc - GTK DocBook documentation generator.
4 # Copyright (C) 2009-2017 Stefan Sauer
7 # This program is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 2 of the License, or
10 # (at your option) any later version.
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with this program; if not, write to the Free Software
19 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22 # Support both Python 2 and 3
23 from __future__
import print_function
33 def run_xsltproc(options
, args
):
34 command
= [config
.xsltproc
]
35 # we could do "--path $PWD " to avoid needing rewriting entities that are
36 # copied from the header into docs under xml
37 for path
in options
.path
:
38 command
+= ['--path', path
]
39 logging
.info('running "%s"', ' '.join(command
+ args
))
40 pc
= subprocess
.Popen(command
+ args
, stderr
=subprocess
.PIPE
)
41 (o
, stde
) = pc
.communicate()
42 with
open('profile.txt', 'wb') as h
:
48 logging
.info('options: %s', str(options
.__dict
__))
50 module
= options
.args
[0]
51 document
= options
.args
[1]
53 if options
.uninstalled
:
54 # this does not work from buiddir!=srcdir
56 # MAKE_SCRDIR=$(abs_srcdir) MAKE_BUILDDIR=$(abs_builddir) gtkdoc-mkpdf ...
57 gtkdocdir
= os
.path
.split(sys
.argv
[0])[0]
59 gtkdocdir
= os
.path
.join(config
.datadir
, 'gtk-doc/data')
61 if config
.dblatex
!= '':
62 # extra options to consider
64 # -V is useful for debugging
65 # -T db2latex : different style
66 # -d : keep transient files (for debugging)
67 # -P abc.def=$quiet : once the stylesheets have a quiet mode
68 # xsltproc is already called with --xinclude
69 # does not work: --xslt-opts "--path $searchpath --nonet $@"
70 dblatex_options
= ['-o', module
+ '.pdf']
71 for i
in options
.imgdir
:
72 dblatex_options
+= ['-I', i
]
73 dblatex_options
.append(document
)
74 if not options
.verbose
:
75 pc
= subprocess
.Popen([config
.dblatex
, '--help'], stdout
=subprocess
.PIPE
, stderr
=subprocess
.PIPE
)
76 (stdo
, stde
) = pc
.communicate()
77 if b
'--quiet' in stdo
or b
'--quiet' in stde
:
78 dblatex_options
= ['--quiet'] + dblatex_options
79 dbcmd
= [config
.dblatex
] + dblatex_options
80 pc
= subprocess
.Popen(dbcmd
, stdout
=subprocess
.PIPE
, stderr
=subprocess
.STDOUT
)
81 (stde
, _
) = pc
.communicate()
82 for line
in stde
.decode('utf-8').split('\n'):
85 if 'programlisting or screen' in line
:
87 # This happens when dblatex has no support for some special chars
88 if 'Missing character' in line
:
92 elif config
.fop
!= '':
97 res
= run_xsltproc(options
, ['--nonet',
109 'chunker.output.quiet',
115 gtkdocdir
+ '/gtk-doc-fo.xsl',
117 # TODO: fop dies too easily :(
118 # res = subprocess.call([config.fop, module + '.fo', module + '.pdf'))
119 fname
= module
+ '.fo'
120 if os
.path
.exists(fname
):
123 print("dblatex or fop must be installed to use gtkdoc-mkpdf.")
126 with
open('pdf.stamp', 'w') as h
: