[gentoo-dev] RFC: PROPERTIES=funky-slots

June 23rd, 2012 - 09:30 am ET by Ciaran McCreesh | Report spam

There's been a move towards using slots for "clever" things that don't
fit the traditional way of how slots worked. Examples include the new
gtk2 / gtk3 handling and Ruby gems virtuals.

Aside from being abusive, this screws things up for Paludis users.
Paludis tends to bring in newer versions when possible (so that users
aren't stuck with an old GCC forever), and allows the user to select
when new slots are brought in. When suddenly a few packages are using
slots and versions to "mean" something other than what they used to,
this makes the feature unusable.

Thus, as a quick workaround, I'd like to suggest adding a PROPERTIES
value called "funky-slots", which should be set on every version of any
package that uses slots in an unconventional manner. This probably
doesn't need EAPI control, since package manglers are free to ignore
PROPERTIES tokens. It won't solve the abuse, but it will allow the
impact upon users to be lessened.

Ciaran McCreesh



email Follow the discussionReplies 49 repliesReplies Make a reply

Similar topics

Replies

#1 Mike Gilbert
June 23rd, 2012 - 10:10 am ET | Report spam
On Sat, Jun 23, 2012 at 10:02 AM, Mike Gilbert wrote:
On Sat, Jun 23, 2012 at 9:21 AM, Ciaran McCreesh
wrote:
There's been a move towards using slots for "clever" things that don't
fit the traditional way of how slots worked. Examples include the new
gtk2 / gtk3 handling and Ruby gems virtuals.

Aside from being abusive, this screws things up for Paludis users.
Paludis tends to bring in newer versions when possible (so that users
aren't stuck with an old GCC forever), and allows the user to select
when new slots are brought in. When suddenly a few packages are using
slots and versions to "mean" something other than what they used to,
this makes the feature unusable.

Thus, as a quick workaround, I'd like to suggest adding a PROPERTIES
value called "funky-slots", which should be set on every version of any
package that uses slots in an unconventional manner. This probably
doesn't need EAPI control, since package manglers are free to ignore
PROPERTIES tokens. It won't solve the abuse, but it will allow the
impact upon users to be lessened.

Ciaran McCreesh



I don't quite understand why this would be necessary.

Would "funky-slots" just be used in situations where ebuilds with the
same PV but different PVR have different slots?

Taking the gtk2/gtk3 example, I think the -r200/-r300 thing is only
used in libraries; applications use slot deps to select which one they
need. Paludis should not remove the -r200 version if it is still
referenced in the depgraph, correct?



Or maybe you are saying that Paludis will not automatically install a
new slot for a package that is already installed, even when referenced
by a slot dep?
Replies Reply to this message
#2 Mike Gilbert
June 23rd, 2012 - 10:10 am ET | Report spam
On Sat, Jun 23, 2012 at 9:21 AM, Ciaran McCreesh
wrote:
There's been a move towards using slots for "clever" things that don't
fit the traditional way of how slots worked. Examples include the new
gtk2 / gtk3 handling and Ruby gems virtuals.

Aside from being abusive, this screws things up for Paludis users.
Paludis tends to bring in newer versions when possible (so that users
aren't stuck with an old GCC forever), and allows the user to select
when new slots are brought in. When suddenly a few packages are using
slots and versions to "mean" something other than what they used to,
this makes the feature unusable.

Thus, as a quick workaround, I'd like to suggest adding a PROPERTIES
value called "funky-slots", which should be set on every version of any
package that uses slots in an unconventional manner. This probably
doesn't need EAPI control, since package manglers are free to ignore
PROPERTIES tokens. It won't solve the abuse, but it will allow the
impact upon users to be lessened.

Ciaran McCreesh



I don't quite understand why this would be necessary.

Would "funky-slots" just be used in situations where ebuilds with the
same PV but different PVR have different slots?

Taking the gtk2/gtk3 example, I think the -r200/-r300 thing is only
used in libraries; applications use slot deps to select which one they
need. Paludis should not remove the -r200 version if it is still
referenced in the depgraph, correct?
Replies Reply to this message
#3 Ciaran McCreesh
June 23rd, 2012 - 10:20 am ET | Report spam

On Sat, 23 Jun 2012 10:06:58 -0400
Mike Gilbert wrote:
> I don't quite understand why this would be necessary.
>
> Would "funky-slots" just be used in situations where ebuilds with
> the same PV but different PVR have different slots?
>
> Taking the gtk2/gtk3 example, I think the -r200/-r300 thing is only
> used in libraries; applications use slot deps to select which one
> they need. Paludis should not remove the -r200 version if it is
> still referenced in the depgraph, correct?

Or maybe you are saying that Paludis will not automatically install a
new slot for a package that is already installed, even when referenced
by a slot dep?



The 'standard' behaviour (which can be changed by the user) for Paludis
when doing "complete" resolutions is that whenever there's a slot of
something installed, it will try to bring in the newest version of that
package, even if it's in a different slot. This is generally a good
thing, since newer versions are supposed to be better than older
versions. The problem is that now "newer" versions are being used to
mean "with a different Ruby implementation" or "built in a different
way", which screws up the meaning.

Ciaran McCreesh



Replies Reply to this message
#4 Mart Raudsepp
June 23rd, 2012 - 10:30 am ET | Report spam
On L, 2012-06-23 at 15:10 +0100, Ciaran McCreesh wrote:
On Sat, 23 Jun 2012 10:06:58 -0400
Mike Gilbert wrote:
> > I don't quite understand why this would be necessary.
> >
> > Would "funky-slots" just be used in situations where ebuilds with
> > the same PV but different PVR have different slots?
> >
> > Taking the gtk2/gtk3 example, I think the -r200/-r300 thing is only
> > used in libraries; applications use slot deps to select which one
> > they need. Paludis should not remove the -r200 version if it is
> > still referenced in the depgraph, correct?
>
> Or maybe you are saying that Paludis will not automatically install a
> new slot for a package that is already installed, even when referenced
> by a slot dep?

The 'standard' behaviour (which can be changed by the user) for Paludis
when doing "complete" resolutions is that whenever there's a slot of
something installed, it will try to bring in the newest version of that
package, even if it's in a different slot. This is generally a good
thing, since newer versions are supposed to be better than older
versions. The problem is that now "newer" versions are being used to
mean "with a different Ruby implementation" or "built in a different
way", which screws up the meaning.



Don't do that if the slotted package in question is not in the @world,
and all packages depending on it strictly require the older SLOT.
Replies Reply to this message
#5 Michał Górny
June 23rd, 2012 - 12:00 pm ET | Report spam

On Sat, 23 Jun 2012 15:10:01 +0100
Ciaran McCreesh wrote:

On Sat, 23 Jun 2012 10:06:58 -0400
Mike Gilbert wrote:
> > I don't quite understand why this would be necessary.
> >
> > Would "funky-slots" just be used in situations where ebuilds with
> > the same PV but different PVR have different slots?
> >
> > Taking the gtk2/gtk3 example, I think the -r200/-r300 thing is
> > only used in libraries; applications use slot deps to select
> > which one they need. Paludis should not remove the -r200 version
> > if it is still referenced in the depgraph, correct?
>
> Or maybe you are saying that Paludis will not automatically install
> a new slot for a package that is already installed, even when
> referenced by a slot dep?

The 'standard' behaviour (which can be changed by the user) for
Paludis when doing "complete" resolutions is that whenever there's a
slot of something installed, it will try to bring in the newest
version of that package, even if it's in a different slot. This is
generally a good thing, since newer versions are supposed to be
better than older versions. The problem is that now "newer" versions
are being used to mean "with a different Ruby implementation" or
"built in a different way", which screws up the meaning.



I think you should start by describing the problem so we all could
understand it, and then we can start thinking about a solution.

Is it that Paludis installs a newer SLOT even if a reverse dependency
explicitly requests another SLOT? Sounds like a bug to me.

Best regards,
Michał Górny



Replies Reply to this message
Help Create a new topicNext page Replies Make a reply
Search Make your own search