Bug 1093960

Summary: [abrt] pylint: subprocess.py:1308:_execute_child:OSError: [Errno 2] No such file or directory
Product: [Fedora] Fedora Reporter: Bengt Lüers <Bengt.Lueers>
Component: pylintAssignee: Brian Lane <bcl>
Status: CLOSED WONTFIX QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 20CC: bcl, mrunge
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Unspecified   
URL: https://retrace.fedoraproject.org/faf/reports/bthash/657f2c4648e7933923dec54614fce9774a455805
Whiteboard: abrt_hash:a1d02c0dfe1558f2e7678baed61335cc9c290db8
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-05-05 16:35:37 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
File: backtrace
none
File: dso_list
none
File: environ none

Description Bengt Lüers 2014-05-03 23:19:51 UTC
Description of problem:
graphviz was not installed

Version-Release number of selected component:
pylint-1.1.0-1.fc20

Additional info:
reporter:       libreport-2.2.2
cmdline:        /usr/bin/python /usr/bin/pyreverse --ignore tests -o png -p MetaOpt metaopt
executable:     /usr/bin/pyreverse
kernel:         3.13.10-200.fc20.x86_64
runlevel:       N 5
type:           Python
uid:            1000

Truncated backtrace:
subprocess.py:1308:_execute_child:OSError: [Errno 2] No such file or directory

Traceback (most recent call last):
  File "/usr/bin/pyreverse", line 9, in <module>
    load_entry_point('pylint==1.2.0', 'console_scripts', 'pyreverse')()
  File "/usr/lib/python2.7/site-packages/pylint/__init__.py", line 39, in run_pyreverse
    Run(sys.argv[1:])
  File "/usr/lib/python2.7/site-packages/pylint/pyreverse/main.py", line 98, in __init__
    sys.exit(self.run(args))
  File "/usr/lib/python2.7/site-packages/pylint/pyreverse/main.py", line 119, in run
    writer.DotWriter(self.config).write(diadefs)
  File "/usr/lib/python2.7/site-packages/pylint/pyreverse/writer.py", line 43, in write
    self.close_graph()
  File "/usr/lib/python2.7/site-packages/pylint/pyreverse/writer.py", line 135, in close_graph
    self.printer.generate(self.file_name)
  File "/usr/lib/python2.7/site-packages/logilab/common/graph.py", line 123, in generate
    shell=use_shell)
  File "/usr/lib64/python2.7/subprocess.py", line 524, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__
    errread, errwrite)
  File "/usr/lib64/python2.7/subprocess.py", line 1308, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

Local variables in innermost frame:
errread: None
c2pread: None
gc_was_enabled: True
errwrite: None
shell: False
errpipe_write: 4
executable: 'dot'
close_fds: False
self: <subprocess.Popen object at 0x72d10d0>
env: None
cwd: None
child_exception: OSError(2, 'No such file or directory')
args: ['dot', '-T', 'png', '/tmp/packages_MetaOptvMDfzT.dot', '-o', 'packages_MetaOpt.png']
c2pwrite: None
data: 'cexceptions\nOSError\np0\n(I2\nS\'No such file or directory\'\np1\ntp2\nRp3\n(dp4\nS\'child_traceback\'\np5\nS\'Traceback (most recent call last):\\n  File "/usr/lib64/python2.7/subprocess.py", line 1263, in _execute_child\\n    os.execvp(executable, args)\\n  File "/usr/lib64/python2.7/os.py", line 344, in execvp\\n    _execvpe(file, args)\\n  File "/usr/lib64/python2.7/os.py", line 380, in _execvpe\\n    func(fullname, *argrest)\\nOSError: [Errno 2] No such file or directory\\n\'\np6\nsb.'
creationflags: 0
errpipe_read: 3
preexec_fn: None
p2cread: None
startupinfo: None
p2cwrite: None
universal_newlines: False

Comment 1 Bengt Lüers 2014-05-03 23:19:55 UTC
Created attachment 892193 [details]
File: backtrace

Comment 2 Bengt Lüers 2014-05-03 23:19:57 UTC
Created attachment 892194 [details]
File: dso_list

Comment 3 Bengt Lüers 2014-05-03 23:19:59 UTC
Created attachment 892195 [details]
File: environ

Comment 4 Brian Lane 2014-05-05 16:35:37 UTC
You need to have graphviz installed in order to use pyreverse.

I don't really want to add this as a Requires on pylint since it will drag in a pile of dependencies that other users of pylint likely don't want.

Comment 5 Bengt Lüers 2014-05-05 17:33:09 UTC
I see that adding graphviz to pylint's requirements will add unwanted installations for users that do not ever start pyreverse. On the other hand, not having graphviz as a requirements of pylint causes unwanted errors for those users who do try to use pyreverse. I think, having possibly unused requirements is far less painful than installing programs via the package manager and not having all dependencies installed.

I do not know the rationale for bundling pylint, pyreverse, symilar, epylint and pylint-gui. I could but imagine them being a set of tools for working with a repository of python code. In that case it makes sense to install the entire toolbox even if not all tools will be used by every user. Isn't that in any case a decision that logilab makes, not RedHat? If RedHat was do decide these should be unbundled, I would expect to be able to install one without the other and that all dependencies for the installed parts get installed, too.

Comment 7 Brian Lane 2014-05-05 18:51:37 UTC
It is useful (eg. headless test box witout X running) to have pylint not drag in a bunch of dependencies. It might make sense to move pyreverse into pylint-gui though.

Also, while inconvenient, you only have to install the dependency once.