public inbox for gentoo-user@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Bo Ørsted Andresen" <bo.andresen@zlin.dk>
To: gentoo-user@lists.gentoo.org
Subject: Re: [gentoo-user] why multiple versions of java-config, automake, and autoconf?
Date: Sat, 9 Jun 2007 12:46:04 +0200	[thread overview]
Message-ID: <200706091246.04667.bo.andresen@zlin.dk> (raw)
In-Reply-To: <20070608124654.GA765@nibiru.local>

[-- Attachment #1: Type: text/plain, Size: 6042 bytes --]

On Friday 08 June 2007 14:46:54 Enrico Weigelt wrote:
> > Well, they still are different versions under the same packages
> > from the same projects.
>
> Evolutionarily yes, technically no ;-P
> They're in fact very diffrent, but provide an very similar
> (almost the same) functionality.
>
> The problem is: upstream claims that newer evolutions steps
> were newer versions, Gentoo takes it as it is and runs into
> trouble, the attempt to fix this is slotting.

Wtf. Newer versions are newer versions. No matter if they are fully backwards 
compatible or not.

> If we simply would consider them as different packages,
> the whole story would be trivial. We just have to decide at
> which point a split has to be done. The whole complexity of
> slotting and the still unsolved problems (ie. cleaning up)
> could be dropped and dependency handling would be easy.

The point is from the package manager point of view it would be trivial 
*because* the developers would have to do more of the work manually. I.e. the 
work of creating new packages, removing old ones and creating/updating 
virtuals where they currently just do version bumps and remove old ebuilds.

I *really* don't see how adding seven versions of automake as seven packages 
in seven dirs plus adding a virtual that's provided by all seven of those 
versions is easier than just having seven versions in the same package with 
different slots. I also *really* don't see how adding a dep on =automake-1.4* 
or automake:1.4 is harder or more complex than automake1.4 (which currently 
would be an invalid package name anyway).

The reason why cleaning cannot be done properly for packages in system or 
world is that the packages files that define the system set in the profiles 
and the world file don't support specifying slots. At this point it would be 
pretty trivial to add both, however, the problem with that is backwards 
compatibility with older versions of portage itself. Profiles aren't 
versioned like ebuilds with an EAPI so there are no means to assure that 
people upgrade portage before getting profiles that are incompatible with 
older versions of portage.. Even today we still occasionally get bug reports 
from people who --sync with <portage-2.0.51 which aren't compatible with the 
current profiles (bug #114798)...

[SNIP]
> Same with autoconf. The numbering is not that easy here, since
> major breaks sometimes happen with minor version changes. So
> we just have to look a bit more cafully. But still much simpler
> as adjusting all these versioned dependencies which are necessary
> with slotting.
[SNIP]

Indeed the real problem is that the current EAPI supports neither slot deps 
nor ranged deps (with the exception of the not too powerful =foo* syntax).

> > > Gentoo has an strange magic for handling that, called "Slots".
> > > They deeply break the linear version space. This makes handling
> > > very tricky and requires much additional complexity. Some of
> > > the other replies should make clear some prolems ...
> >
> > I have no idea what breaking 'the linear version space' means.
[SNIP]
> The Idea of this "linear" version space is that we can compare each
> version with another one very easy. Additionally use the axiom that
> higher versions are always successors of lower ones and backwards
> compatible. In this situation the whole package management story
> is really easy. Things like slots are not necessary. If we also take
> in binary compatibility, revdev-rebuild is also not needed. Evrything
> is strictly defined in the dependency graph.

Wow. You're actually suggesting making a new package not only on API breakage 
but even on ABI breakage (otherwise revdep-rebuild would still be needed)? Do 
you *any* idea how many packages that would result in? It would be a 
maintenance nightmare. Keep in mind that CVS doesn't even support removing a 
package properly (with it's dirs).

[SNIP]
> > How is having a depend on =sys-devel/automake-1.4* or
> > sys-devel/automake:1.4 any more complex than a depend on a separate
> > packages named
> > sys-devel/automake-1.4 ?
>
> What if now comes an 1.4.99 which is totally incompatible with the
> other 1.4.* ? What do you do now ?

Add a 1.4.99 slot? Just like you'd create a new package for it and add that to 
the virtual?

> Drop that 1.4.99 ?
> Give it another version, ie. some 1.5.* ?
> Touch all depending patches to exclude 1.4.99 ?

Huh?

[SNIP]
> > > No idea, why the responsible Gentoo-devs didn't just give
> > > those incompatible packages different names, especially on
> > > their own packages. AFAIK, java-config is made by Gentoo.
> > > It would be trivial, just to call the 2.x version something
> > > like java-config-2 ... perhaps too simple for them ?
> >
> > It still doesn't change the problem that if they have different
> > files with the same name they need to install it in different
> > places. That problem is just the same whether in slots or separate
> > packages.
>
> Right. But that argument is neither for slots nor against.

So that still leaves me without a clue about what problem making 
java-config-{1,2} different packages rather than slots would solve.

[SNIP]
> > --depclean does actually remove unneeded slots now for packages
> > not in system or world.
>
> Well, I didn't prove it by myself - just took the input from this
> list, where people stated it would NOT do it cleanly.

The ability to do that has been added rather recently.

> > By removing slotting you take away flexibility and make things
> > in a source distribution harder.
>
> What flexibility do I take away exactly ?
> And what exactly gets harder ?

The ability to have more than one version of the same package installed at the 
same time. What is now a simple version bump (that happens to use a new slot) 
or cleaning of obsolete versions becomes packages additions and removals plus 
updates to virtuals.

-- 
Bo Andresen

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

  parent reply	other threads:[~2007-06-09 10:54 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-31  2:23 [gentoo-user] why multiple versions of java-config, automake, and autoconf? Denis
2007-05-31  2:43 ` Boyd Stephen Smith Jr.
2007-05-31  3:16   ` Ric de France
2007-05-31  3:53     ` Denis
2007-05-31  4:00       ` Bo Ørsted Andresen
2007-05-31  4:25         ` Denis
2007-05-31  4:55           ` Bo Ørsted Andresen
2007-05-31 16:48         ` Denis
2007-06-01  3:30         ` Ric de France
2007-05-31  3:17   ` Bo Ørsted Andresen
     [not found] ` <20070606234438.GE2575@nibiru.local>
2007-06-07 15:54   ` Bo Ørsted Andresen
2007-06-08 12:46     ` Enrico Weigelt
2007-06-08 13:18       ` Kent Fredric
2007-06-08 14:20         ` Enrico Weigelt
2007-06-08 14:51           ` Kent Fredric
     [not found]             ` <8cd1ed20706080754u276683f1h3a5136335aa3a971@mail.gmail.com>
2007-06-08 14:56               ` Kent Fredric
2007-06-08 18:37             ` Enrico Weigelt
2007-06-09  6:44               ` Kent Fredric
2007-06-09 10:51                 ` Bo Ørsted Andresen
2007-06-12 12:59                 ` Enrico Weigelt
2007-06-09 10:46       ` Bo Ørsted Andresen [this message]
2007-06-12 13:49         ` Enrico Weigelt
2007-06-12 17:26           ` Kent Fredric

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200706091246.04667.bo.andresen@zlin.dk \
    --to=bo.andresen@zlin.dk \
    --cc=gentoo-user@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox