Reviving a 2 month old thread. Now working with easybuild 2.1.0...
On Thu, 19 Mar 2015 at 22:57 -0000, Stuart Barkley wrote:
> > > Is there a good way to see a dependency tree with easybuild (I'm
> > > now running 2.0.0)? I'm trying to reconcile different
> > > dependency requirements for my large build and am finding it
> > > difficult to determine what packages are requiring other
> > > packages.
> >
> > Have you considered trying eb --dep-graph?
> >
> > That can be used to generate a .dot file describing the dependency
> > graph (eb will tell you what's missing).
> >
> > With the right optional Python packages installed, you can also
> > make it dump a rendered image (.png, .pdf).
> >
> > For example:
> >
> > eb --dep-graph=goolf.dot goolf-1.4.10.eb -r
>
> I missed seeing this and I don't have the necessary dependencies
> installed.
>
> This would tend to imply that there is some dependency resolution
> which could be useful. Is is possible to get the basic relationship
> data without out sending things all the way through graphviz?
>
> The graphviz dependencies are not installed in my easybuild version
> of python which might be useful. I'll follow up on this in the
> future.
I wanted to revisit my dependency tree and spent some time today
trying to get --dep-graph to work for me without much luck.
% eb --configfiles app-c6-alpha.cfg --dep-graph=alpha.dot --robot --
easyconfigs/FDASCL_*.eb
== temporary log file in case of crash /tmp/eb-DCn36b/easybuild-77mVPt.log
== resolving dependencies ...
ERROR: An optional Python packages required to generate dependency graphs
is missing: Failed to import pygraph-core: try easy_install python-graph-core
Failed to import pygraph-dot: try easy_install python-graph-dot
Failed to import graphviz: try yum install graphviz-python,or apt-get
install python-pygraphviz,or brew install graphviz --with-bindings, global name
'digraph' is not defined
%
I can do 'yum install graphviz-python' on a test system and get that
module without problem (since it is directly in CentOS 6). That gets
rid of one message. (There is a Graphviz-2.38.0-intel-2014b.eb module
which I may try to modify for -goolf at a later time.)
However, I don't have easy_install available so thought I would just
add python-graph-core and python-graph-dot to my python installation
as built with easybuild. I can build either of them into Python, but
not both of them at the same time.
I've added the following to my Python-2.7.3-goolf-1.4.10.eb file:
# Added to support easybuild --dep-graph option
# http://pydot.googlecode.com/files/pydot-1.0.28.tar.gz
('pydot', '1.0.28', {
'source_urls': ['http://pydot.googlecode.com/files/'],
}),
-- and --
#
https://pypi.python.org/packages/source/p/python-graph-core/python-graph-core-1.8.2.tar.gz
# md5=16f177496beb6e6bc507b12b8346ff96
('pygraph', '1.8.2', {
'source_tmpl': 'python-graph-core-%(version)s.tar.gz',
'source_urls':
['https://pypi.python.org/packages/source/p/python-graph-core/'],
}),
-- or --
#
https://pypi.python.org/packages/source/p/python-graph-dot/python-graph-dot-1.8.2.tar.gz
# md5=0ecd251a9fd210a9135e1d1957689709
('pygraph', '1.8.2', {
'source_tmpl': 'python-graph-dot-%(version)s.tar.gz',
'source_urls':
['https://pypi.python.org/packages/source/p/python-graph-dot/'],
}),
This will get rid of one of the remaining messages but I have not been
able to figure out how to add both modules at the same time. These
appear to be two source files that are part of the same python module.
There may be something simple that will let this work. Also, I did
this while using "--try-toolchain-version=1.7.20", just in case that
makes a difference. (goolf-1.7.20 seems to working okay for me, but
that is other work for a different email thread.)
> I'll leave the rant about useless modules being necessary just to
> write a simple text mode .dot file aside for now (mostly).
So far I have not been able to get the --dep-graph=alpha.dot option to
work so don't know what that output is actually like, but it should be
pretty simple and about what I would like to see for a basic report.
Both pygraph and pydot look pretty dead (and floundering further with
the lingering demise of google code). I suspect this use case for
them is very minor and simple write statements could really handle the
easybuild needs (eliminating at least three external dependencies).
I suggest that easybuild/framework/easyconfig/tools.py could use some
work to remove these dependencies and either use graphviz-python
(gv) or just directly use the graphviz binary.
At the same time, a simple text mode dependency table could be output
which would be more useful than a .jpeg or .png anyway. Something
suitable for input to tsort(1) would be useful as would a slightly
more verbose form.
Stuart
--
I've never been lost; I was once bewildered for three days, but never lost!
-- Daniel Boone