reassign -1 mk-configure
thanks
Hi. I looked into this, and the conclusions are:
- This is not an FTBFS for graphviz, but rather for mk-configure. The
graphviz package builds just fine, but ...
- The "dot" executable it produces has a bug: graphs spanning multiple
pages contain incorrect postscript
- This is an upstream bug in graphviz. I have a prototype patch that
fixes it. We need a workaround for mk-configure, and I'll try to get
something working in the near future. If somebody wants to beat me to
it, please feel free.
Description of bug and patch:
Let's say you have my_prjs.dot, attached in an earlier post in this
report. You run
dot -Tps my_prjs.dot > my_prjs.eps
As reported earlier, my_prjs.eps is bogus because gs barfs at it:
$ ps2pdf my_prjs-sid.eps
Error: /undefined in setupLatin1
Operand stack:
Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval--
--nostringval-- 2 %stopped_push --nostringval-- --nostringval--
--nostringval-- false 1 %stopped_push 1999 1 3 %oparray_pop
1998 1 3 %oparray_pop 1982 1 3 %oparray_pop 1868 1 3
%oparray_pop --nostringval-- %errorexec_pop .runexec2 --nostringval--
--nostringval-- --nostringval-- 2 %stopped_push --nostringval--
Dictionary stack:
--dict:982/1684(ro)(G)-- --dict:0/20(G)-- --dict:78/200(L)--
Current allocation mode is local
Current file position is 15221
GPL Ghostscript 9.20: Unrecoverable error, exit code 1
Looking at the my_projs.eps file, its structure is
1. A chunk written by psgen_begin_job() in
plugin/core/gvrender_core_ps.c:
%!PS-Adobe-3.0
%%Creator: graphviz version ...
...
2. A chunk that comes from plugin/core/ps.txt, written by
psgen_begin_graph() in plugin/core/gvrender_core_ps.c:
%%Title: ...
...
%%BeginProlog
/DotDict 200 dict def
DotDict begin
/setupLatin1 { ... } bind def
...
setupLatin1
Note that this defines the setupLatin1 function, and it then calls this
function
3. There is no psgen_end_graph()
4. A chunk that comes from psgen_end_job()
%%Trailer
%%Pages: 1
%%BoundingBox: 36 36 975 418
end
restore
%%EOF
Note that this undefineds the setupLatin1 function
5. At this point steps 2,3,4 repeat for each page, with some omissions.
The immediate next chunk is
setupLatin1
This comes from psgen_begin_graph() again, but it doesn't re-define
setupLatin1
This is the source of the complaint: we're calling an undefined
function.
This is only an issue when touching .dot files that have more than one
graph. Two solutions are possible:
1. Don't clean up as much after each page, so that the setupLatin1
function remains defined
2. Perform more initialization at the start of each page, to redefine
setupLatin1 each time
A simple proof-of-concept fix to implement solution 2 is to modify
psgen_begin_graph() in plugin/core/gvrender_core_ps.c to change
if (job->common->viewNum == 0) {
to
if (true) {
This if() statement served to prevent redefining setupLatin1 (and a
whole lotta other stuff), and this fix redefines it each time.
Solution 1 is probably better, but it involves touching more code, and
I'd rather upstream did that. Laszlo: as the graphviz Debian maintainer,
can you please forward this upstream?
Thanks.