[Pkg-ace-devel] Re: [devo-group] reactor separation & automake
Marek Brudka
mbrudka@aster.pl
Tue, 25 Jan 2005 17:35:40 +0100
Hi,
User J.T. Conklin wrote:
>Ok, but I'm not advocating going back to a single monolithic library.
>
>
I'm sorry, I misunderstood you, my fault.
>I'm resposible for the binary ACE and TAO packages used at my company.
>I configure, build, and install a single set of libraries. It's true
>that this wouldn't have been possible if we were using a GUI reactor,
>but now that they've been split into separate libraries I'll be able
>to install all of them at once as well. It doesn't matter that some
>of our service objects only use ACE while others use ACE and TAO, as
>those can pick and choose what libraries to link with.
>
>
Right :-). I suppose you know configuration problems better than me,
hence my
explanations were not necessary.
I see one can mention at least two different perspective on the role of
MPC.
a) ACE developement and package building,
b) Developing external applications using binary distribution of ACE.
In a) one can assume that all necessary tools are installed, and even if
they are not then
it does not really matter, because ACE maintainer knows about
dependencies and
related issues. The additional switches for MPC are redundant here and
simplicity of
configuration is prefered. For example, Debian ACE source cannot be
installed but
compiled if all those GUI developement packages are not set. That's why
these switches
rather does not simplifies developement of these packages, though IMO
the overhead isn't
too great.
In b) developer does not compile ACE, hence binary packages should be
reasonably fine
grained to reduce the dependencies of external applications. This is why
it is good to have ACE
subsetted. If developer does not use MPC, then all those switches can be
ignored.
But this case is quite different if both ACE and MPC binary packages are
used. I made an
assumption (maybe bad), that the current build system should faciliate
using ACE and MPC.
There were at least three reasons:
1. ACE/TAO/CIAO is a big project, hence it's developement (with respect
to GUI) should
be formal to some degree. First of all we have the dependency chain
core_ACE <-- core_TAO <-- core_CIAO and I tried to mirror this.
Secondly, I considered
GUI tests, examples and similiar application as a small projects
depending on ACE,
hence I tried to create a formal way to develop them.
2. I tried to release the external configuration managers or
distribution maintainers
of inventing their own ACE+MPC methodology ( :-) ) because quite
reasonable solution can
be proposed already by ACE.
3. Moreover, if external developers invent their our "philosophy" then
I'm almost sure they
will not be compatible. As a result, ACE+MPC based application developed
under Debian
would not compile under Fedora or MSVC, because feature/switches would
be different for various
platforms.
I agree, that my consideration are little MPC-centric. That's not
because I love or promote MPC so
much :-), in fact it has many deficiencies when compared to other build
tools, but rather because
I tried to summarize my experience on employing MPC and ACE in external
applications.
I realize now I mixed these two perspectives namely a) and b) trying to
achieve a kind of compromise.
Maybe the result is directed too much into b) direction, but as for b)
the most important issue for me
was 1).
What can we do then? My first proposition is to leave the things as they
are with x11 and gl
features removed. It is not so bad, because the implication are not so
painfull. The second
proposition is to create two partially distinct sets of base projects,
one for compiling ACE/TAO/CIAO
only, and one for using ACE/TAO/CIAO components in external
applications. The latter is the
current state of mpb, while the former would be controlled by external
features only eg. qt, xt, fl, tk.
The problem with this solution is its inconsistency with the latter, the
additional base projects, and
partially parallel mpb hierarchy.
Your opinions?
BTW. I do not agree that hundreds of extra builds are needed for current
setup, because of dependencies eg.
one cannot compile TAO_QtResource with ACE_QtResource, but when
ACE_QtResource is tested one does not need
to do it again when building TAO_QtResource. In fact only one build is
necessary, exactly
the same as currently as rich as possible. The same problems are
present for building the entire OS
(Debian, Fedora) distributions, though they are several magnitudes
worse than for ACE. If they were built by
testing each combination there would not be any distribution for the
next eternity :-).
Thanks
Marek