On Fri, Nov 18, 2005, Florin Iucha wrote:

> [...]
> My problem is that some openpkg packages appear to conflate the build
> time dependencies with run time dependencies, and it does that in an
> inconsistent manner: why does db depend on gcc but subversion and
> pdksh do not?

It is consistent, but perhaps not easily traceable. "db" in particular
requires "gcc" under build-time because it chooses the underlying mutex
implementation for Berkeley-DB as GCC specific assembly versions on
most platforms. "subversion" and "pdksh" do not depend on "gcc" simply
because they are known to build also without GCC (mainly because they
both do not depend on GCC features and contain no C99 or latest C++2003
stuff). If a package builds with an arbitrary C94 compiler we do not
depend GCC as we assume (and know) that any vendor compiler (on all
of our supported platforms) at least support C94. If anything more is
required we depend on our GCC 4 which provides this.

> Besides, most of the software packages you open-package already
> support (via autoconf/automake & friends) being compiled with native
> build environments so hard-depending on GNU make and GNU cc does not
> help in a significant way. You are being overly-protective here -
> people who just "want it to work" will get binaries, people who pass
> --use_cc are expected to know what they are doing, or able to quickly
> learn ;)
>
> BTW, I have already added
>    %l_cc    /opt/SUNWspro/bin/cc
> do my .rpmmacros file but I expected the system to remember that I
> have passed --use_cc to the bootstrap procedure.
>
> Please do not take this as "drive-by criticism" of the project. I
> appreciate the work that you are doing. My reason to compile with
> the native compiler is trying to get the most out of this aging
> machine.

I fully see your point and accept your wish.

The basic problem for OpenPKG just is that "optimizations for a
particular platform" (like choosing already existing vendor programs
or choosing a vendor compiler) are in great conflict with "being
self-contained and consistent across all platforms". Sure with enough
conditionals in all packages both could be achieved, but it results in
really nasty packaging code.

Just take the "db" example: there is already an ugly case/esac construct
in db.spec for the GCC assembly stuff. If we want now to even allow a
non-GCC compiler to be used we need a lot of of additional if-clauses in
this package (remember that we support nearly 20 platforms and each one
has a different vendor compiler or at least vendor compiler version).

All of those platform specific hackings are making our packaging
unclean and ugly and hence we try very hard to avoid it at all. At
the obvious but not easily avoidable cost of being not flexible
enough to allow specific platform optimizations. Our general
design decision is that cleanness and maintenability is greatly
preferred over any platform specific optimizations (see also
http://www.openpkg.org/doc/slideset/openpkg/slide-012-l.html).

                                       Ralf S. Engelschall
                                       [EMAIL PROTECTED]
                                       www.engelschall.com

______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
User Communication List                      openpkg-users@openpkg.org

Reply via email to