[Pkg-ace-devel] Re: Some feedback..

Marek Brudka mbrudka@aster.pl
Sun, 23 Jan 2005 23:50:21 +0100


Hi Bala,
    Unfortunatelly, I lost your email about global.features, but I try 
to answer it.
Currently we have the following dependencies for interesting features
(fixed fonts are necessary :-) ):

x11 <----- xt <----- ACE_XTReactor <----- TAO_XtResource
       |         |
       |         |-- motif <------------- test,examples
       |         |
       |         |-- athena <------------ test,examples
       |
       |-- fl <----- ACE_FlReactor <----- TAO_FlResource
       |
gl <---|

As a result, only x11 and gl can be removed or turn on by default in 
global.features, as these are
superseded by xt and fl respectively. This can work, but I'd rather 
prefered explicit enumeration
of dependencies, because this directly tells packagers what is needed to 
compile a library, and
give a better control on what is necessary for compilation. Moreover, 
removing features x11 and gl
makes the way ACE uses external libraries a little inconsistent, hence 
harder to describe.

In fact my first idea when I saw Raphael's patch was to remove all those 
additional features (I even
posted a letter on this), but after a time I realized that an "explicit 
features"
and control on compilation process are better for inexperienced 
developer, because MPC can tell him
directly what to do to obtain a well built ACE. I agree, that probably 
for ACE guru all those switches
are unnecessary, additional payload, but gure knows perfectly what is 
important. A newbie usually
does not read all docs, well at the best to paragraph where make/MSVC is 
invoked, issues the command, and
then wrotes a long letter about compilation problems. MPC, which 
directly tells what should be
installed can faciliate developer in ACE compilation.

Certainly, the best way to configure ACE is autoconf. I think we can 
hide all those dependency
details on this level, and this was my intent. Nevertheless, autoconf is 
not avalaible on some
platforms, while perl necessary to use mpc is almost everywhere.

We can also propose the additional keyword for MPC, eg. *ignores*, to 
tell which features are implied by
other features. We loose some of the functionality described above, but 
the convenience..

For example ace_xt.mpb should look then like:
project: ace_x11 {
  requires += xt
  ignores += x11

  verbatim(gnuace,local) {
        CPPFLAGS += $(PLATFORM_XT_CPPFLAGS) $(PLATFORM_X11_CPPFLAGS)
        LIBS += $(PLATFORM_XT_LIBS) $(PLATFORM_X11_LIBS)
        LDFLAGS += $(PLATFORM_XT_LDFLAGS) $(PLATFORM_X11_LDFLAGS)
  }
}
thus each project derived from ace_xt, should inherit x11 settings, but 
would not depend on
x11 feature.

What is your opinion on that?

Thanks

Marek