On Sat, 10 Jun 2006 02:01:25 +0100
Roy Marples <[EMAIL PROTECTED]> wrote:

> On Saturday 10 June 2006 01:33, Alec Warner wrote:
> > > So we have two use flags - client and server. Here are the
> > > possabilities
> > >
> > > -client -server
> > > +client -server
> > > +client +server
> > > -client +server
> > >
> > > Do we read -client -server and +client +server to mean the same
> > > thing? If so the logic can read
> > >
> > > if use client || ! use server ; then
> > >     # build client
> > > fi
> > > if use server || ! use client ; then
> > >     # build server
> > > fi
> > >
> > > How does portage stop us from doing that now?
> >
> > built_with_use is then incorrect, since for -client -server you
> > really built both.
> 
> use client && build client
> use server && build server
> 
> The problem here is that breaks existing ebuilds, which could be
> viewed as equally bad.

I do think we should avoid built_with_use where we can, as it causes
emerge to abort.

I still think this would be much better dealt with by splitting the
ebuilds and using the existing one to install both sub-ebuilds.
To my mind, building client or server is too big a split for USE flags
which control features of a package rather than pieces of it. I realise
that's not a clear distinction, but I think 'use client|server' is
different from 'use ipv6'.  The latter, which is how I see most USE
flags that build stuff conditionally, is about including support for
something within the application/libraries built by the ebuild.
However USE client/server is about whether the apps/libraries are built
at all.

Suggestion was:
net-misc/dhcp-client
net-misc/dhcp-server
net-misc/dhcp - RDEPEND on -client and -server

This way, if something needs the server, they depend on dhcp-server.
If something needs the client, it depends on dhcp-client.  If you need
both, depend on net-misc/dhcp.  Over time, existing package depedencies
can be reduced from dhcp to dhcp-client or dhcp-server as appropriate.

The only objection I've seen so far to the split ebuild approach is that
if upstream intend the whole tarball to be installed then we should do
the same. I don't think that holds too much water;

1) The 'meta' build would provide the complete package as compiled
upstream anyway

2) Just because upstream provide everything in one tarball doesn't mean
upstream think you should necessarily install everything.  Obvious
example here is KDE.

3) The use flag approach effectively splits the build anyway, so
there's not really any difference.

> But technically built_with_use isn't incorrect as the ebuild wasn't
> built with it. To effectively use built_with_use you cannot assume
> that the flag does what it says on the tin - you have to inspect the
> ebuild code you're querying.
> 
> Prior history shows deps of db vs gdbm where if both or neither then
> db was used, otherwise the flagged db was used.
> 
> Problems problems - soltutions that work with existing installs or do
> we just bite the bullet and do
> 
> ! use client && ! use server && die "must select either client or
> server"
> 
> Which kinda defeats the purpose of a clean install.
> 


-- 
Kevin F. Quinn

Attachment: signature.asc
Description: PGP signature

Reply via email to