CVS module dependency list in machine processable form



In message <199812121601.LAA31589@rwf.lms.mit.edu>, "Sergey I. Panov" writes:
 ] I have a picture of the dependancies (gnome_deps.*) and some
 ] instruction in INSTALL file, all stored at
 ] http://sipan.ne.mediaone.net/gnome/  
 ] 

I think this is a mix of runtime as well as build time dependencies, 
which are totally different.

There are plenty of things that are run time dependencies that do not
affect the _order_ you need to build in.  So it's useful to separate the
two.

Also, one is not a superset of the other.  You might think that the
runtime requirements are just a superset of the build requirements.
autoconf is a build time dependency, but certainly not a run time 
dependency...  for the particular case of autoconf it is a moot point 
since it is not a CVS module.  There are many things that are run time 
dependencies in order to have a useful system but are not build time 
dependencies.  The main example here is gnome-core, which actually
is a build time dependency for a few select other modules (with the
panel and all), but it is sort of a run time dependency for everything 
if you intend to use GNOME as a desktop rather than just running
same-gnome under CDE or somesuch.

This ``mixup'' also leads to the circular gtk-engines thing that you
have.  gtk-engines needs gtk+ to build, but gtk+ wants gtk-engines at
runtime.

BTW, there are some things that aren't modules in your list, such as
``guile-core'' and ``libIDL'' which are presumably not in CVS or are
part of other modules these days.

Anyhow, last night I went through each module individually and tried
to determine what its immediate dependencies were.  I looked at the
configure.in as well as #include <foo> statements in the source.  I
would appreciate getting feedback on this list.  Note that the program
that processes with this handles multi-level dependencies okay, so it's
only necessary to list things that the module itself directly looks
for.  It seems somewhat silly to list gtk+ and glib everywhere that
gnome-libs is also listed since we know gnome-libs requires those,
but I have included these where appropriate for completeness.

========================================
#
# @(#)module-deps 1.2	12/12/98
#
# Jonathan Sergent <sergent@io.com>
#
# Gathered by looking at <module>/configure.in as well as by doing
#     find <module> -name '*.[ch]' | xargs grep '#include' /dev/null | 
#		grep -v '"' | cut -d: -f2 | sort | uniq
#
# Note that the ordering here on each line doesn't matter.  The
# resolver orders them based on dependencies in the end, so if you
# need things in a certain order, you must use dependencies to 
# express that.
#

ORBit: glib

audiofile: 				# No external module dependencies.

balsa: ORBit gnome-libs gtk+ libPropList

control-center: ORBit esound gnome-libs 

dia: glib gnome-xml gtk+

ee: gnome-libs gtk+ imlib

esound: audiofile

gdm: glib gnome-libs gtk+

# gedit/plugins/launcher appears to depend on a header file from panel.
gedit: ORBit glib gnome-libs gtk+ gnome-core

ggv: glib gnome-libs gtk+

glib:					# No external module dependencies.

gnome-admin: glib gnome-libs gnome-objc gtk+

gnome-chess: glib gnome-libs gtk+

gnome-core: glib ORBit esound gnome-http gnome-libs imlib libgtop gtk+

gnome-dom: ORBit glib gnome-xml

gnome-games: ORBit glib gnome-libs gnome-guile gnome-objc gtk+ imlib

gnome-guile: gnome-libs gtk+

gnome-http: 				# No external module dependencies.

gnome-libs: ORBit audiofile esound glib gtk+ imlib

gnome-media: esound gnome-libs gtk+ imlib

gnome-network: glib gnome-libs gnome-objc gnome-guile gtk+

gnome-objc: gnome-libs gtk+ imlib

gnome-pilot: ORBit glib gnome-libs gtk+ imlib

gnome-pim: ORBit glib gnome-libs gtk+

gnome-python: gnome-libs gtk+ imlib

gnome-utils: glib libgtop gnome-guile gnome-libs gnome-objc gtk+

gnome-xml: 				# No external module dependencies.

gnumeric: ORBit glib gnome-guile gnome-libs gnome-xml gtk+

# Looked in makeconfig.pl instead of configure.in.  (Auto-generator.)
go: glib gnome-libs gtk+

grpm: glib gnome-libs gtk+

gtk+: glib

gtk-engines: gtk+ imlib

gtkicq: esound gnome-libs gtk+

gtop: libgtop gnome-libs

gwp: glib gnome-libs gnome-print gnome-xml gtk+

imlib: gtk+

libgtop: glib gnome-guile gnome-libs 

libPropList: 				# No external module dependencies.

mc: ORBit glib gnome-libs gtk+

sane: gnome-libs gtk+

yagirc: esound glib gnome-libs gtk+ imlib 

WORLD: ORBit audiofile balsa control-center dia ee esound gdm gedit ggv 
WORLD: glib gnome-admin gnome-chess gnome-core gnome-dom gnome-games 
WORLD: gnome-guile gnome-http gnome-libs gnome-media gnome-network 
WORLD: gnome-objc gnome-pilot gnome-pim gnome-python gnome-utils gnome-xml 
WORLD: gnumeric go grpm gtk+ gtk-engines gtkicq gtop gwp imlib libgtop 
WORLD: libPropList mc sane yagirc
========================================

The result of this that the script (the one I posted the other day in 
a shar file) finds for "WORLD" is the following:

gnome-print gnome-http audiofile gnome-xml esound libPropList glib gtk+
ORBit gnome-dom imlib dia gnome-libs balsa yagirc sane mc gwp gtkicq
gtk-engines grpm go gnome-python gnome-pim gnome-pilot gnome-media
gnome-guile libgtop gnome-chess gnome-objc gnome-admin ggv gnome-core
gedit gdm ee control-center gtop gnumeric gnome-utils gnome-network
gnome-games WORLD

This probably isn't the order most of us have figured out manually,
but hopefully it works just as well.  I haven't tried it out yet,
but doing so should hopefully help me determine if my examination
of configure.in and include files was successful.

Can people please look at the module-deps file above and let me know
if they see anything missing from it?  I hope to be able to get this
integrated into a checkout and build script such that you can say
"I want to compile Balsa" for instance and it will go fetch the
right modules and build them in the right order and install them.


-- 
Jonathan Sergent / sergent@io.com



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]