[Reproducible-builds] Bug#829191: python-pydot-ng: FTBFS: pydot_ng/__init__.py:1958: InvocationException
Chris Lamb
lamby at debian.org
Fri Jul 1 10:08:16 UTC 2016
Source: python-pydot-ng
Version: 1.0.0-2
Severity: serious
Justification: fails to build from source
User: reproducible-builds at lists.alioth.debian.org
Usertags: ftbfs
X-Debbugs-Cc: reproducible-builds at lists.alioth.debian.org
Dear Maintainer,
python-pydot-ng fails to build from source in unstable/amd64:
[..]
pyversions: missing X(S)-Python-Version in control file, fall back to debian/pyversions
pyversions: missing debian/pyversions file, fall back to supported versions
py3versions: no X-Python3-Version in control file, using supported versions
dh_clean -O--buildsystem=python_distutils
rm -rf build
make[1]: Leaving directory '/home/lamby/temp/cdt.20160701115412.iR2SLMJMIF.python-pydot-ng/python-pydot-ng-1.0.0'
debian/rules build
pyversions: missing X(S)-Python-Version in control file, fall back to debian/pyversions
pyversions: missing debian/pyversions file, fall back to supported versions
pyversions: missing X(S)-Python-Version in control file, fall back to debian/pyversions
pyversions: missing debian/pyversions file, fall back to supported versions
py3versions: no X-Python3-Version in control file, using supported versions
dh build --buildsystem=python_distutils --with python2
dh_testdir -O--buildsystem=python_distutils
dh_update_autotools_config -O--buildsystem=python_distutils
dh_auto_configure -O--buildsystem=python_distutils
dh_auto_build -O--buildsystem=python_distutils
pyversions: missing X(S)-Python-Version in control file, fall back to debian/pyversions
pyversions: missing debian/pyversions file, fall back to supported versions
python setup.py build --force
running build
running build_py
creating build
creating build/lib.linux-x86_64-2.7
creating build/lib.linux-x86_64-2.7/pydot_ng
copying pydot_ng/__init__.py -> build/lib.linux-x86_64-2.7/pydot_ng
copying pydot_ng/_dotparser.py -> build/lib.linux-x86_64-2.7/pydot_ng
debian/rules override_dh_auto_test
make[1]: Entering directory '/home/lamby/temp/cdt.20160701115412.iR2SLMJMIF.python-pydot-ng/python-pydot-ng-1.0.0'
pyversions: missing X(S)-Python-Version in control file, fall back to debian/pyversions
pyversions: missing debian/pyversions file, fall back to supported versions
pyversions: missing X(S)-Python-Version in control file, fall back to debian/pyversions
pyversions: missing debian/pyversions file, fall back to supported versions
py3versions: no X-Python3-Version in control file, using supported versions
set -e ; for pyvers in 2.7 3.5; do \
python$pyvers -m pytest test ; \
done
============================= test session starts ==============================
platform linux2 -- Python 2.7.12, pytest-2.9.2, py-1.4.31, pluggy-0.3.1
rootdir: /home/lamby/temp/cdt.20160701115412.iR2SLMJMIF.python-pydot-ng/python-pydot-ng-1.0.0, inifile:
collected 23 items
test/test_pydot.py ........ss.....F....F..
=================================== FAILURES ===================================
____________________ TestGraphAPI.test_my_regression_tests _____________________
self = <test_pydot.TestGraphAPI testMethod=test_my_regression_tests>
def test_my_regression_tests(self):
> self._render_and_compare_dot_files(MY_REGRESSION_TESTS_DIR)
test/test_pydot.py:222:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
test/test_pydot.py:243: in _render_and_compare_dot_files
parsed_data_hexdigest = self._render_with_pydot(fname)
test/test_pydot.py:217: in _render_with_pydot
jpe_data = NULL_SEP.join([_g.create(format='jpe') for _g in g])
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pydot_ng.Dot object at 0x7fb322c28d90>, prog = 'dot', format = 'jpe'
def create(self, prog=None, format='ps'):
"""Creates and returns a Postscript representation of the graph.
create will write the graph to a temporary dot file and process
it with the program given by 'prog' (which defaults to 'twopi'),
reading the Postscript output and returning it as a string is the
operation is successful.
On failure None is returned.
There's also the preferred possibility of using:
create_'format'(prog='program')
which are automatically defined for all the supported formats.
[create_ps(), create_gif(), create_dia(), ...]
If 'prog' is a list instead of a string the fist item is expected
to be the program name, followed by any optional command-line
arguments for it:
['twopi', '-Tdot', '-s10']
"""
if prog is None:
prog = self.prog
if isinstance(prog, (list, tuple)):
prog, args = prog[0], prog[1:]
else:
args = []
if self.progs is None:
self.progs = find_graphviz()
if self.progs is None:
raise InvocationException(
'GraphViz\'s executables not found')
if prog not in self.progs:
raise InvocationException(
'GraphViz\'s executable "%s" not found' % prog)
if not os.path.exists(self.progs[prog]) or not os.path.isfile(self.progs[prog]):
raise InvocationException(
'GraphViz\'s executable "%s" is not a file or doesn\'t exist' % self.progs[prog])
tmp_fd, tmp_name = tempfile.mkstemp()
os.close(tmp_fd)
self.write(tmp_name)
tmp_dir = os.path.dirname(tmp_name)
# For each of the image files...
for img in self.shape_files:
# Get its data
f = open(img, 'rb')
f_data = f.read()
f.close()
# And copy it under a file with the same name in the temporary directory
f = open(os.path.join(tmp_dir, os.path.basename(img)), 'wb')
f.write(f_data)
f.close()
cmdline = [self.progs[prog], '-T' + format, tmp_name] + args
p = subprocess.Popen(
cmdline,
cwd=tmp_dir,
stderr=subprocess.PIPE, stdout=subprocess.PIPE)
stderr = p.stderr
stdout = p.stdout
stdout_output = list()
while True:
data = stdout.read()
if not data:
break
stdout_output.append(data)
stdout.close()
stdout_output = NULL_SEP.join(stdout_output)
if not stderr.closed:
stderr_output = list()
while True:
data = stderr.read()
if not data:
break
stderr_output.append(data)
stderr.close()
if stderr_output:
stderr_output = NULL_SEP.join(stderr_output)
if PY3:
stderr_output = stderr_output.decode(sys.stderr.encoding)
#pid, status = os.waitpid(p.pid, 0)
status = p.wait()
if status != 0:
raise InvocationException(
'Program terminated with status: %d. stderr follows: %s' % (
> status, stderr_output))
E InvocationException: Program terminated with status: 1. stderr follows: Format: "jpe" not recognized. Use one of: canon cmap cmapx cmapx_np dot eps fig gd gd2 gv imap imap_np ismap pdf pic plain plain-ext png pov ps ps2 svg svgz tk vml vmlz x11 xdot xdot1.2 xdot1.4 xlib
pydot_ng/__init__.py:1958: InvocationException
----------------------------- Captured stdout call -----------------------------
#Failed rendering BAD(html_labels.dot)
__________________________ TestGraphAPI.test_quoting ___________________________
self = <test_pydot.TestGraphAPI testMethod=test_quoting>
def test_quoting(self):
import string
g = pydot.Dot()
g.add_node(pydot.Node("test", label=string.printable))
#print g.to_string()
> data = g.create(format='jpe')
test/test_pydot.py:350:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pydot_ng.Dot object at 0x7fb3224a9910>, prog = 'dot', format = 'jpe'
def create(self, prog=None, format='ps'):
"""Creates and returns a Postscript representation of the graph.
create will write the graph to a temporary dot file and process
it with the program given by 'prog' (which defaults to 'twopi'),
reading the Postscript output and returning it as a string is the
operation is successful.
On failure None is returned.
There's also the preferred possibility of using:
create_'format'(prog='program')
which are automatically defined for all the supported formats.
[create_ps(), create_gif(), create_dia(), ...]
If 'prog' is a list instead of a string the fist item is expected
to be the program name, followed by any optional command-line
arguments for it:
['twopi', '-Tdot', '-s10']
"""
if prog is None:
prog = self.prog
if isinstance(prog, (list, tuple)):
prog, args = prog[0], prog[1:]
else:
args = []
if self.progs is None:
self.progs = find_graphviz()
if self.progs is None:
raise InvocationException(
'GraphViz\'s executables not found')
if prog not in self.progs:
raise InvocationException(
'GraphViz\'s executable "%s" not found' % prog)
if not os.path.exists(self.progs[prog]) or not os.path.isfile(self.progs[prog]):
raise InvocationException(
'GraphViz\'s executable "%s" is not a file or doesn\'t exist' % self.progs[prog])
tmp_fd, tmp_name = tempfile.mkstemp()
os.close(tmp_fd)
self.write(tmp_name)
tmp_dir = os.path.dirname(tmp_name)
# For each of the image files...
for img in self.shape_files:
# Get its data
f = open(img, 'rb')
f_data = f.read()
f.close()
# And copy it under a file with the same name in the temporary directory
f = open(os.path.join(tmp_dir, os.path.basename(img)), 'wb')
f.write(f_data)
f.close()
cmdline = [self.progs[prog], '-T' + format, tmp_name] + args
p = subprocess.Popen(
cmdline,
cwd=tmp_dir,
stderr=subprocess.PIPE, stdout=subprocess.PIPE)
stderr = p.stderr
stdout = p.stdout
stdout_output = list()
while True:
data = stdout.read()
if not data:
break
stdout_output.append(data)
stdout.close()
stdout_output = NULL_SEP.join(stdout_output)
if not stderr.closed:
stderr_output = list()
while True:
data = stderr.read()
if not data:
break
stderr_output.append(data)
stderr.close()
if stderr_output:
stderr_output = NULL_SEP.join(stderr_output)
if PY3:
stderr_output = stderr_output.decode(sys.stderr.encoding)
#pid, status = os.waitpid(p.pid, 0)
status = p.wait()
if status != 0:
raise InvocationException(
'Program terminated with status: %d. stderr follows: %s' % (
> status, stderr_output))
E InvocationException: Program terminated with status: 1. stderr follows: Format: "jpe" not recognized. Use one of: canon cmap cmapx cmapx_np dot eps fig gd gd2 gv imap imap_np ismap pdf pic plain plain-ext png pov ps ps2 svg svgz tk vml vmlz x11 xdot xdot1.2 xdot1.4 xlib
pydot_ng/__init__.py:1958: InvocationException
================ 2 failed, 19 passed, 2 skipped in 2.56 seconds ================
debian/rules:27: recipe for target 'override_dh_auto_test' failed
make[1]: *** [override_dh_auto_test] Error 1
make[1]: Leaving directory '/home/lamby/temp/cdt.20160701115412.iR2SLMJMIF.python-pydot-ng/python-pydot-ng-1.0.0'
debian/rules:10: recipe for target 'build' failed
make: *** [build] Error 2
[..]
The full build log is attached.
Regards,
--
,''`.
: :' : Chris Lamb
`. `'` lamby at debian.org / chris-lamb.co.uk
`-
-------------- next part --------------
A non-text attachment was scrubbed...
Name: python-pydot-ng.1.0.0-2.unstable.amd64.log.txt.gz
Type: application/octet-stream
Size: 8365 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/reproducible-builds/attachments/20160701/dc3b228a/attachment.obj>
More information about the Reproducible-builds
mailing list