What is this? 

DePlo is a program that converts the dependency relationship between Ada packages (i.e., who "with"s whom) into  a graph description in DOT format. Such a description can be successively converted  to a graphical representation (PDF, PostScript, jpg, SVG, XFig, ...) by using, for example, one of the software available in the Graphviz page (home of the DOT language). Package hierarchy is showed by drawing child packages inside their parents.  The graph can be simplified by "collapsing" whole package hierarchies in a single node. 

Currently it works only in a GNAT environment since it get the dependency graph by reading the ALI files generated by GNAT.  I guess that it would be possible to make it portable by using ASIS... maybe in a future release.

Why did you write it? 

Very short answer: why not? :-)

Short answer: an itch of mine

Long and more meaningfull answer: 

I had the need of visualizing the mutual dependencies among the packages in a large piece of software that I am developing (currently 185 packages, for almost 1 Mbyte of source code).  With such a large number of files, the dependency tool provided by GPS produced just a mess.  Moreover, I wanted to print it, in order to attach it to the wall. Therefore, I wrote this program.


  • Converting the structure in DOT format allow you (if necessary) to adjust the graph with graph-editing software
  • Package hierarchy is showed by drawing child packages inside their parents.  I find this very convenient.
  • Moreover, since 185 packages is still quite a lot of packages, I added two nice features: trim lists and ignore lists.
    • [Trim]  If a package belongs to the trim list, the node and all its descendants are "collapsed" in a single node (shown as a "folder") and the arch graphs adjusted accordingly.  For example, if A.B belongs to the trim list and A.B.C "with"s D.E, then the final graph will have the arch A.B -> D.E instead of A.B.C -> D.E.
    • [Ignore] If a package belongs to the ignore list, it is removed from the graph together with (of course) all its arches.  The ignore list is useful to remove those "basic" packages that are used in many places (like, for example, stdio.h in C) and that cause the creation of lots of arches that complicate needlessly the graph.

Installation, use and examples

Supported platforms

I work with Linux and I tested the code only there, but the program is in Ada (actually Ada 2005), so you should not experience any portability issue, as long as you have an Ada 2005 compiler.  

System Requirements

An Ada 2005 compiler, but since the current release works only with GNAT compiler, if you download this you already have a GNAT compiler and this requirement is satisfied.


DePlo is released under the terms of the LGPL v3. For more information, see the official site.