Re: [gentoo-dev] blocking mixed versions of split QT libraries

2009-05-18 Thread Ciaran McCreesh
On Mon, 18 May 2009 22:47:30 +0200
Patrick Lauer  wrote:
> > No, they're temporary except when things go wrong, at which point
> > there's no indication that they'll be fixed.
> >
> When things go wrong they go wrong. Indeed.

When things go wrong, they go wrong beyond the scope of the failure in
question.

> > > Which either means that the deps are wrong/incomplete or that
> > > portage has algorithmic flaws which should be corrected.
> > > I'd expect you to at least point to the relevant bugs and not just
> > > state some emotional mumbo-jumbo.
> > Look at the new slot deps in EAPI 3.
> So the deps were not precise enough, and now we improve that. Which
> means that portage will only get more precise in the future. Awesome!

...and until they're in wide use, Portage's assumptions are dangerous.

> > No, broke. What he did was in direct violation of PMS and in direct
> > violation of assumptions made by many packages.
> So PMS did once again not reflect reality, and there were some buggy
> packages.

Uhm. No. PMS reflected how Portage used to work, and packages relied
upon how Portage used to work.

> Maybe we should spend more time on making PMS a standard
> that documents current and past behavior instead of omitting things
> (mtime, bash 3.1) or keeping it ambiguous so that two implementations
> can be compliant while delivering incompatible results?

Uhm. PMS correctly reflects current and past behaviour on those issues.

> > > > * work by explaining the reason for the blocker, rather than
> > > > sort-of stating the expected resolution.
> > >
> > > That's dumb ;) (Sorry, emotional statement)
> > > I mean, it does not help to solve the issue and requires user
> > > interaction where an automated solution has been working reliably
> > > for quite some time.
> >
> > Uhm. Knowing the reason for the block lets the package manager solve
> > the problem in the most intelligent available way. Merely being
> > sort-of told the expected resolution does not.
> You're contradicting yourself there - until now you only mentioned
> user- visible messages, which now suddenly become hints for the
> package manager. 

Re-read what I said, alongside the original discussion on replacing
blockers. "Explaining" is not exclusively limited to the user.

> Now I do wonder what you can "explain" about a block - "some files
> collide" ? How does that help the package manager decide what to do?
> What can it do, except unmerging one package or refusing to merge
> another one? How does that differ from the portage solution to the
> blocker situation?

Yes, that's one explanation you'd give to the package manager. As
you'll recall from your reading of the previous discussion, there are
four different ways in which blockers are commonly used, and the
best response from the package manager to each situation is different.

> > A tree requirement is one that comes about as a result of studying
> > what ebuilds do now and what they'd like to do in the future,
> > rather than one that comes around based upon what someone happens
> > to code.
> I am confused. I did not think that ebuilds have desires, so I have
> no idea what they'd like to do in the future. And it does in no way
> tell me what a tree requirement is (unless you mean happy photons,
> which are emitted by free- range ebuilds when you try to source them
> in the kitchen)

Then I suggest you take some basic English classes.

> Incidentally most of our ebuilds are based upon what someone happened
> to code.

But the ebuild design (or at least the clean parts of it...) is not.

> > ...except for the things that it broke, which necessitated
> > shoving !! blocks in at the last minute. And I'll remind you that
> > there were discussions about a proper blocker solution before Zac
> > went and did his thing,
> bikeshedding and circular reasoning in large amounts, stalling any
> progress for a long time ... until someone provided a working
> implementation that solved a large enough amount of issues to gain
> the support of the majority of devs (and big cheers from so many
> users!). 

Funnily enough, the original discussion was extremely productive and
didn't involve any of the nonsense you're coming up with now.

> (If it had been as bad as you suggest council would have
> banninated it within the shortest amount of time...)

That was back in the bad old days before the Council agreed to step in
when Portage did that kind of thing. In fact, the blocker changes were
one of the things that lead to the Council saying "in future, we'll
package.mask Portage if it does that kind of behaviour change again".

> > and the overwhelming view
>
> a minority view, but let's not get distracted by such subjective
> matters.

Please point me to people involved in the discussion who did not agree
with the views presented. Provide a list of message IDs to support your
claim.

-- 
Ciaran McCreesh


signature.asc
Description: PGP signature


Re: [gentoo-dev] blocking mixed versions of split QT libraries

2009-05-18 Thread Patrick Lauer
On Monday 18 May 2009 21:20:10 Ciaran McCreesh wrote:
> On Mon, 18 May 2009 21:08:25 +0200
>
> Patrick Lauer  wrote:
> > In terms of the on-disk result it's invariant, the result is what
> > you'd expect. There are intermediate stages that are "inconsistent" /
> > "unclean", but as these are known and temporary they are an
> > acceptable solution.
>
> No, they're temporary except when things go wrong, at which point
> there's no indication that they'll be fixed.
>
When things go wrong they go wrong. Indeed.
At the moment I can't think of an obvious failure mode, so I guess I'll have 
to wait for you to refresh my memory. Until then I'll just be happy that KDE, 
poppler, e2fsprogs and a few other apps refused to fail and saved me lots of 
time and trouble (and some failure modes that are really frustrating) by just 
magically upgrading in the right sequence, avoiding error-prone user 
interaction (e2fsprogs had one funny bug that a few hundred users found) and 
allowing me to be a lazy cat.

> > > It's unrealistic to assume that depclean's going to be accurate at
> > > every given moment, especially given Portage's massively
> > > overoptimistic treatment of slots. It's also a very bad idea to
> > > remove packages without the user explicitly giving permission to do
> > > so.
> >
> > Which either means that the deps are wrong/incomplete or that portage
> > has algorithmic flaws which should be corrected.
> > I'd expect you to at least point to the relevant bugs and not just
> > state some emotional mumbo-jumbo.
> Look at the new slot deps in EAPI 3.
So the deps were not precise enough, and now we improve that. Which means that 
portage will only get more precise in the future. Awesome!

> No, broke. What he did was in direct violation of PMS and in direct
> violation of assumptions made by many packages.
So PMS did once again not reflect reality, and there were some buggy packages. 
Maybe we should spend more time on making PMS a standard that documents 
current and past behavior instead of omitting things (mtime, bash 3.1) or 
keeping it ambiguous so that two implementations can be compliant while 
delivering incompatible results?
And then ... well ... bugs are there to be fixed.

> > > * work by explaining the reason for the blocker, rather than sort-of
> > >   stating the expected resolution.
> >
> > That's dumb ;) (Sorry, emotional statement)
> > I mean, it does not help to solve the issue and requires user
> > interaction where an automated solution has been working reliably for
> > quite some time.
>
> Uhm. Knowing the reason for the block lets the package manager solve
> the problem in the most intelligent available way. Merely being sort-of
> told the expected resolution does not.
You're contradicting yourself there - until now you only mentioned user-
visible messages, which now suddenly become hints for the package manager. 

Don't try to confuse issues like that.

Now I do wonder what you can "explain" about a block - "some files collide" ? 
How does that help the package manager decide what to do? What can it do, 
except unmerging one package or refusing to merge another one? How does that 
differ from the portage solution to the blocker situation?

> Automated resolution is not always possible 
Indeed, in such cases you can let the package manager abort

> or a good idea. 
Again a subjective thing. This bacon here, buying that was a good idea. I 
should give you some, it's totally awesome!


> Also,
> having more information available for the user and being able to
> suggest an automated resolution are not in the least bit contradictory.
... which means that we can let the package manager handle all the "obvious" 
cases and try to give the user more information in the rare cases where it 
cannot find a valid solution on its own. Cool.

> > > * be based around tree requirements, not some side effects of some
> > > code someone happened to write without considering the implications.
> >
> > What is a tree requirement? (Nice buzzword btw)
>
> A tree requirement is one that comes about as a result of studying what
> ebuilds do now and what they'd like to do in the future, rather than
> one that comes around based upon what someone happens to code.
I am confused. I did not think that ebuilds have desires, so I have no idea 
what they'd like to do in the future. And it does in no way tell me what a 
tree requirement is (unless you mean happy photons, which are emitted by free-
range ebuilds when you try to source them in the kitchen)

Incidentally most of our ebuilds are based upon what someone happened to code. 
Personally I think that many upstream devs didn't have a great plan (or at 
least they didn't like to express it in the code ;) ) and still we have an 
ebuild based upon their coding, uhm, accidents. But we adapt to it, and the 
result is quite impressive.

Somewhere a while ago I read a funny idea - the more rules a contract needs 
the less trust there is. If you trust someone you agree, sh

Re: [gentoo-dev] blocking mixed versions of split QT libraries

2009-05-18 Thread Ciaran McCreesh
On Mon, 18 May 2009 21:08:25 +0200
Patrick Lauer  wrote:
> In terms of the on-disk result it's invariant, the result is what
> you'd expect. There are intermediate stages that are "inconsistent" /
> "unclean", but as these are known and temporary they are an
> acceptable solution.

No, they're temporary except when things go wrong, at which point
there's no indication that they'll be fixed.

> > It's unrealistic to assume that depclean's going to be accurate at
> > every given moment, especially given Portage's massively
> > overoptimistic treatment of slots. It's also a very bad idea to
> > remove packages without the user explicitly giving permission to do
> > so.
> Which either means that the deps are wrong/incomplete or that portage
> has algorithmic flaws which should be corrected. 
> I'd expect you to at least point to the relevant bugs and not just
> state some emotional mumbo-jumbo.

Look at the new slot deps in EAPI 3.

> > Bah. I'm looking for a way of doing this properly, as I was before
> > Zac went and broke blockers in Portage.
> s/broke/fixed/

No, broke. What he did was in direct violation of PMS and in direct
violation of assumptions made by many packages.

> > * work by explaining the reason for the blocker, rather than sort-of
> >   stating the expected resolution.
> That's dumb ;) (Sorry, emotional statement)
> I mean, it does not help to solve the issue and requires user
> interaction where an automated solution has been working reliably for
> quite some time.

Uhm. Knowing the reason for the block lets the package manager solve
the problem in the most intelligent available way. Merely being sort-of
told the expected resolution does not.

> > * provide mechanisms for explaining the block in detail to the user,
> >   along with instructions on how to resolve it.
> User interaction where automated resolution works sounds like a step
> backwards to me. Maybe refining the rules for automated resolution
> would be a more appropriate solution?

Automated resolution is not always possible or a good idea. Also,
having more information available for the user and being able to
suggest an automated resolution are not in the least bit contradictory.

> > * be based around tree requirements, not some side effects of some
> > code someone happened to write without considering the implications.
>
> What is a tree requirement? (Nice buzzword btw)

A tree requirement is one that comes about as a result of studying what
ebuilds do now and what they'd like to do in the future, rather than
one that comes around based upon what someone happens to code.

> And as many devs and users benefit quite a lot from the portage
> solution, which zmedico did not dream up without thinking about the
> impact on users, I find it very rude and condescending of you to
> disrespect the solution without offering an alternative.

...except for the things that it broke, which necessitated shoving !!
blocks in at the last minute. And I'll remind you that there were
discussions about a proper blocker solution before Zac went and did his
thing, and the overwhelming view was that a solution based around the
things I've been discussing was what was wanted.

> As you seem to understand the problem domain I'd expect a coherent
> unambiguous proposal instead of vague accusations and emotional terms
> that do not help in any way to improve the situation.

See the discussions we had back when the only kind of blocker was a
hard, single ! block.

-- 
Ciaran McCreesh


signature.asc
Description: PGP signature


Re: [gentoo-dev] blocking mixed versions of split QT libraries

2009-05-18 Thread Patrick Lauer
On Monday 18 May 2009 20:19:24 Ciaran McCreesh wrote:
> On Mon, 18 May 2009 20:05:51 +0200
>
> Maciej Mrozowski  wrote:
> > > That's not in the least bit well defined, and it's also extremely
> > > dangerous.
> >
> > Please elaborate on that.
>
> With Portage's soft blocks, there's no guarantee that your blocks will
> do anything at all. Soft blocks are ignored if "they'll be fixed
> later", but then there's no guarantee that later will be reached.

In terms of the on-disk result it's invariant, the result is what you'd 
expect. There are intermediate stages that are "inconsistent" / "unclean", but 
as these are known and temporary they are an acceptable solution.

> > Everything else like things installed temporarily, no longer pulled
> > packages, are subject of 'depclean'. I don't see why pruning those
> > you consider extremely dangerous - especially when there are
> > parameters like --pretend or --ask.
>
> It's unrealistic to assume that depclean's going to be accurate at
> every given moment, especially given Portage's massively overoptimistic
> treatment of slots. It's also a very bad idea to remove packages
> without the user explicitly giving permission to do so.
Which either means that the deps are wrong/incomplete or that portage has 
algorithmic flaws which should be corrected. 
I'd expect you to at least point to the relevant bugs and not just state some 
emotional mumbo-jumbo.

Plus the packages that are removed were not installed explicitly, and to 
satisfy the needs of the user they are removed. This reflects the demands of 
the user ("Give me this app!" or "Update this pile of apps!") quite well.

> Blocks are supposed to be an absolute last resort, not something you
> throw around willy-nilly to try to get Portage to do what you're after.

No, blocks are what you need to keep the set of installed packages consistent. 
They need to be used as much as the flaws and conflicts of software packaging 
require.
Any emotional statement like "last resort", "obviously", "willy-nilly" or 
"cute" has no place in a discussion about needed technical features.


> > - that being said, I'm surprised you're looking for cheap excuse for
> > providing no working block auto-resolution mechanism (or maybe there
> > is some I'm not aware of) - it does not need to be in any Gentoo
> > specification after all - just to make things easier for users.
>
> Bah. I'm looking for a way of doing this properly, as I was before Zac
> went and broke blockers in Portage.
s/broke/fixed/

> Such a way would:
>
> * work by explaining the reason for the blocker, rather than sort-of
>   stating the expected resolution.
That's dumb ;) (Sorry, emotional statement)
I mean, it does not help to solve the issue and requires user interaction 
where an automated solution has been working reliably for quite some time.

Providing extra information would be nice, but causes more work for the 
package maintainer and the user for little benefit.

> * provide mechanisms for explaining the block in detail to the user,
>   along with instructions on how to resolve it.
User interaction where automated resolution works sounds like a step backwards 
to me. Maybe refining the rules for automated resolution would be a more 
appropriate solution?

> * be based around tree requirements, not some side effects of some code
>   someone happened to write without considering the implications.
What is a tree requirement? (Nice buzzword btw)

And as many devs and users benefit quite a lot from the portage solution, 
which zmedico did not dream up without thinking about the impact on users, I 
find it very rude and condescending of you to disrespect the solution without 
offering an alternative.

As you seem to understand the problem domain I'd expect a coherent unambiguous 
proposal instead of vague accusations and emotional terms that do not help in 
any way to improve the situation.



Re: [gentoo-dev] blocking mixed versions of split QT libraries

2009-05-18 Thread Ciaran McCreesh
On Mon, 18 May 2009 20:05:51 +0200
Maciej Mrozowski  wrote:
> > That's not in the least bit well defined, and it's also extremely
> > dangerous.
> 
> Please elaborate on that.

With Portage's soft blocks, there's no guarantee that your blocks will
do anything at all. Soft blocks are ignored if "they'll be fixed
later", but then there's no guarantee that later will be reached.

> Everything else like things installed temporarily, no longer pulled
> packages, are subject of 'depclean'. I don't see why pruning those
> you consider extremely dangerous - especially when there are
> parameters like --pretend or --ask.

It's unrealistic to assume that depclean's going to be accurate at
every given moment, especially given Portage's massively overoptimistic
treatment of slots. It's also a very bad idea to remove packages
without the user explicitly giving permission to do so.

> > > Zac did good job there saving users (especially KDE users) from
> > > nightmare of handling all package refactoring/blocks manually.
> >
> > The nightmare only existed because of abuse of that feature. Had
> > blocks kept their original meaning, people would not have abused
> > them to the same extent.
> 
> Unfortunately in packaging of dynamically developed applications like
> whole KDE environment (with Gentoo KDE split package policy - ~250
> ebuilds with every release) it's impossible not to 'abuse' blocks -
> either to handle file collisions issues, or removed/moved libraries
> (by upstream). Not sure what was original meaning of blocks you're
> referring to, either way - there is no rule stating ">= N uses of
> feature X in scope Y in time frame T is considered abuse"

Blocks are supposed to be an absolute last resort, not something you
throw around willy-nilly to try to get Portage to do what you're after.

> - that being said, I'm surprised you're looking for cheap excuse for
> providing no working block auto-resolution mechanism (or maybe there
> is some I'm not aware of) - it does not need to be in any Gentoo
> specification after all - just to make things easier for users.

Bah. I'm looking for a way of doing this properly, as I was before Zac
went and broke blockers in Portage. Such a way would:

* work by explaining the reason for the blocker, rather than sort-of
  stating the expected resolution.

* provide mechanisms for explaining the block in detail to the user,
  along with instructions on how to resolve it.

* be based around tree requirements, not some side effects of some code
  someone happened to write without considering the implications.

-- 
Ciaran McCreesh


signature.asc
Description: PGP signature


Re: [gentoo-dev] blocking mixed versions of split QT libraries

2009-05-18 Thread Maciej Mrozowski
On Monday 18 of May 2009 19:26:58 Ciaran McCreesh wrote:
> On Mon, 18 May 2009 19:15:59 +0200
>
> Maciej Mrozowski  wrote:
> > Not sure who is 'we' there, but Portage team already made is useful.
> > Basic portage rule for soft-blocks behaviour is "no longer referenced
> > (a'ka 'soft') blocked package can be uninstalled cleanly without user
> > intervention"
>
> That's not in the least bit well defined, and it's also extremely
> dangerous.

Please elaborate on that.
(to make it simple, let me use portage terminology below)
Everything what user should be interested in is expected to be in 'world' file 
or 'world_sets' or pulled as dependencies. This I define by "referenced". 
Everything else like things installed temporarily, no longer pulled packages, 
are subject of 'depclean'. I don't see why pruning those you consider 
extremely dangerous - especially when there are parameters like --pretend or 
--ask.
While "no longer referenced" term may be considered not fully defined as it 
does not specify the way things become not referenced anymore (as packages may 
be determined to be referenced later, during block resolution stage, but 
that's implementation specific) - the term "referenced" is defined well 
enough.
Nobody is (for now) expecting every PMS compliant package manager to return 
identical dependency graph in corner cases.

> > Zac did good job there saving users (especially KDE users) from
> > nightmare of handling all package refactoring/blocks manually.
>
> The nightmare only existed because of abuse of that feature. Had blocks
> kept their original meaning, people would not have abused them to the
> same extent.

Unfortunately in packaging of dynamically developed applications like whole 
KDE environment (with Gentoo KDE split package policy - ~250 ebuilds with 
every release) it's impossible not to 'abuse' blocks - either to handle file 
collisions issues, or removed/moved libraries (by upstream). Not sure what was 
original meaning of blocks you're referring to, either way - there is no rule 
stating ">= N uses of feature X in scope Y in time frame T is considered 
abuse" - that being said, I'm surprised you're looking for cheap excuse for 
providing no working block auto-resolution mechanism (or maybe there is some 
I'm not aware of) - it does not need to be in any Gentoo specification after 
all - just to make things easier for users.

-- 
regards
MM

--
Zrob sobie prezent. Wygraj nagrode!
Sprawdz >>  http://link.interia.pl/f2176 





Re: [gentoo-dev] blocking mixed versions of split QT libraries

2009-05-18 Thread Ciaran McCreesh
On Mon, 18 May 2009 19:15:59 +0200
Maciej Mrozowski  wrote:
> Not sure who is 'we' there, but Portage team already made is useful.
> Basic portage rule for soft-blocks behaviour is "no longer referenced
> (a'ka 'soft') blocked package can be uninstalled cleanly without user
> intervention"

That's not in the least bit well defined, and it's also extremely
dangerous.

> Zac did good job there saving users (especially KDE users) from
> nightmare of handling all package refactoring/blocks manually.

The nightmare only existed because of abuse of that feature. Had blocks
kept their original meaning, people would not have abused them to the
same extent.

-- 
Ciaran McCreesh


signature.asc
Description: PGP signature


Re: [gentoo-dev] blocking mixed versions of split QT libraries

2009-05-18 Thread Maciej Mrozowski
On Monday 18 of May 2009 16:52:19 Ciaran McCreesh wrote:
> On Mon, 18 May 2009 17:47:52 +0300
[snip]
> The definition of soft behaviour allows soft blockers to be treated
> identically to hard blockers. We had to do it this way because
> Portage's rules for soft blockers are too fuzzy and arbitrary to turn
> into a formal specification -- they were a "code first, think later"
> solution with which we can't do anything useful.

Not sure who is 'we' there, but Portage team already made is useful. Basic 
portage rule for soft-blocks behaviour is "no longer referenced (a'ka 'soft') 
blocked package can be uninstalled cleanly without user intervention" - it's 
well defined behaviour and possible subject of formal specification - it's 
just up to PM to implement block resolution algorithms for corner cases (those 
would not be the subject of formal specification of course, it's just an 
implementation detail like whether to apply rule like order set by '||' 
operator takes precedence over '!' block or order of block appearance in 
RDEPEND sets block precedence) - Zac did good job there saving users 
(especially KDE users) from nightmare of handling all package 
refactoring/blocks manually.

-- 
regards
MM


--
Oryginalne przepisy na grilla. Zaskocz swoich gosci!
Sprawdz >>> http://link.interia.pl/f217c







Re: [gentoo-dev] blocking mixed versions of split QT libraries

2009-05-18 Thread Ciaran McCreesh
On Mon, 18 May 2009 20:01:22 +0300
Alex Alexander  wrote:
> is paludis expected to behave like portage in the near future
> regarding these blocks?

Probably not. My issue with the way Portage does soft blocks is that
it's way too arbitrary, fuzzy and ill defined.

There were plans to do blocks properly (include annotations that would
let the developer tell the package manager to point the user to a URL
explaining the block and how to resolve it) back before Zac went and
did his own thing. One of the goals was to tell the package manager
exactly what was meant by the block, allowing the package manager to
come up with a much more sensible and far less dangerous solution. If
those plans are ever revived, Paludis would support them.

> are there any plans to add support for these kinds of cases in the
> PMS? other sets of packages could probably benefit from such a feature
> as well.

I don't recall any existing discussion about such a feature (beyond me
moaning in pre-EAPI days about vim/gvim/vim-core breaking in the same
way Qt does). So... The way to start is probably by identifying the
problem in detail, and identifying other groups of packages affected by
similar issues, so we can work out what exactly it is we'd be looking
to fix.

-- 
Ciaran McCreesh


signature.asc
Description: PGP signature


Re: [gentoo-dev] blocking mixed versions of split QT libraries

2009-05-18 Thread Alex Alexander
On Mon, May 18, 2009 at 19:51, Ciaran McCreesh
 wrote:
> It wouldn't, although it would be fixed as soon as someone tried to
> install a package with a Qt dep.
>
> Dependencies the way they are now aren't really expressive enough to
> handle what you're after -- split packages are considered unrelated.

so the RDEPEND in qting-edge seems to be the only working solution for now...

is paludis expected to behave like portage in the near future
regarding these blocks?

are there any plans to add support for these kinds of cases in the
PMS? other sets of packages could probably benefit from such a feature
as well.

thanks

--
Alex Alexander || wired
Gentoo QT && KDE Herd Tester
http://www.linuxized.com



Re: [gentoo-dev] blocking mixed versions of split QT libraries

2009-05-18 Thread Ciaran McCreesh
On Mon, 18 May 2009 19:42:02 +0300
Alex Alexander  wrote:
> >    x11-libs/split-qt[gui][xmlpatterns]
> >
> > and then have x11-libs/split-qt's deps be like:
> >
> >    gui? ( ~x11-libs/qt-gui-${PV} )
> 
> how would that solve a user's "emerge -av1 qt-core" when a new Qt
> version becomes available?

It wouldn't, although it would be fixed as soon as someone tried to
install a package with a Qt dep.

Dependencies the way they are now aren't really expressive enough to
handle what you're after -- split packages are considered unrelated.

-- 
Ciaran McCreesh


signature.asc
Description: PGP signature


Re: [gentoo-dev] blocking mixed versions of split QT libraries

2009-05-18 Thread Alex Alexander
On Mon, May 18, 2009 at 17:21, Ciaran McCreesh
 wrote:
> Not really. There's no particularly good mechanism for ensuring equal
> versions of things where not everything has to be installed. The best
> option I can think of is to have a meta package called, say, split-qt,
> and to do all your external (not inter-qt-library) dependencies as:
>
>    x11-libs/split-qt[gui][xmlpatterns]
>
> and then have x11-libs/split-qt's deps be like:
>
>    gui? ( ~x11-libs/qt-gui-${PV} )

how would that solve a user's "emerge -av1 qt-core" when a new Qt
version becomes available?

--
Alex Alexander || wired
Gentoo QT && KDE Herd Tester
http://www.linuxized.com



Re: [gentoo-dev] blocking mixed versions of split QT libraries

2009-05-18 Thread Alex Alexander
> From what I understand you are utilizing portages ability to
> automagically resolve blockers when all blockers will be resolved within
> the current command.  Agree?? or is it the fact that you are doing
> !>x11-libs/qt-assistant-${PV}-r that is causing the paludis problem?

Yes, portage's auto-resolving ability thats exactly what we're using
to make this happen.

> I would suggest that you just tell paludis users to use --dl-blocks
> discard when updating qt.  After looking at the eclass im not sure
> whether it will work or not.  im assuming that discarding blocks will
> just ignore everything, but I haven't tested it so can't be sure.

Well since there's no other obvious way to achieve the whole thing,
this seems like the only option for paludis users for now. If it
works.

>> 1) Is there a saner way to achieve our goal of doing whatever is
>> possible to avoid mixed QT versions?
>
> I don't believe so, not within current ways of declaring dependencies.

maybe the PMS guys could implement something... :D

>> 2) Is our implementation considered correct and acceptable by the PMS guys?
>> 3) Whats the general Gentoo Policy on mixed versions? Do we care, or
>> is our policy "please -Du world"?
>
> I say we should be stopping them from happening.
>
> Good work btw.

Thank you for your thoughts

--
Alex Alexander || wired
Gentoo QT && KDE Herd Tester
http://www.linuxized.com



Re: [gentoo-dev] Re: GLEP 55 updated

2009-05-18 Thread David Leverton
2009/5/18 Steven J Long :
> David Leverton wrote:
>
>> 2009/5/17 Ben de Groot :
>>> I think the way eapi-2 was introduced into the tree wasn't particularly
>>> problematic.
>>
>> I think there might be a misunderstanding here. Ciaran means functions
>> provided by the package manager that ebuilds can call during metadata
>> generation, for example built-in versionator-like functionality, not
>> new phase functions like src_prepare and src_configure.
>
> Ugh. Firstly versionator is a piece of bloated crap that should have died a
> long time ago; all it does is stop Gentoo newbs learning the basics[1] of
> their implementation language, which leaves them open to nonsensical
> arguments about printf -v (glad you finally learnt that one, btw.)

Yes, it should have died a long time ago, that's why we're talking
about adding equivalent built-in functionality.  Please try to keep
up.  (And it's always amusing to see your bizarre delusions about what
I do and don't know.)

> Secondly, please explain fully and clearly, but concisely, why we can't
> simply state that EAPI=NN allows the ebuild to use the EAPI functions in
> global scope.

Because by the time the package manager knows the EAPI and is in a
position to provide the appropriate functions, the ebuild will have
already tried to use them.

> Bear in mind that you have to deal with the case of the mangler which can
> get EAPI from an ebuild without sourcing, as portage currently can, I
> believe.

Interesting

> Relaxing that restriction strikes me as much saner than relaxing all the
> other restrictions which make interoperability easier.
>
> (Frankly, I'm amazed at having to state that to people trusted to write a
> specification. Follow up to -project on this point please, as it's about
> process, not technique.)

You're amazed that people trusted to write a specification don't
already know what "strikes you as much saner"?  Believe it or not, the
world does not revolve around you and your opinions.



Re: versionator.eclass terminator, was [gentoo-dev] Re: GLEP 55 updated

2009-05-18 Thread Ciaran McCreesh
On Mon, 18 May 2009 17:42:19 +0200
Robert Buchholz  wrote:
> I'm not following. Why should it be discouraged? 
> I was happy with it until now.

Versionator is a lot better than what people were doing before I wrote
it. It's just nowhere near as good as what a package manager provided
solution combined with a reduced need for MY_PV hacks would give.

-- 
Ciaran McCreesh


signature.asc
Description: PGP signature


Re: versionator.eclass terminator, was [gentoo-dev] Re: GLEP 55 updated

2009-05-18 Thread Robert Buchholz
On Monday 18 May 2009, Jeroen Roovers wrote:
> On Mon, 18 May 2009 16:16:46 +0100
>
> Ciaran McCreesh  wrote:
> > Why do you think I wrote the awful hack that is versionator?
>
> Why don't you explain why, historically, you put that in the tree? It
> would help us now if you were to simply record your mistakes for
> everybody else to easily avoid. It's still being used in the tree and
> should be discouraged.

I'm not following. Why should it be discouraged? 
I was happy with it until now.

Robert


signature.asc
Description: This is a digitally signed message part.


Re: versionator.eclass terminator, was [gentoo-dev] Re: GLEP 55 updated

2009-05-18 Thread Ciaran McCreesh
On Mon, 18 May 2009 17:28:00 +0200
Jeroen Roovers  wrote:
> On Mon, 18 May 2009 16:16:46 +0100
> Ciaran McCreesh  wrote:
> > Why do you think I wrote the awful hack that is versionator?
> 
> Why don't you explain why, historically, you put that in the tree? It
> would help us now if you were to simply record your mistakes for
> everybody else to easily avoid. It's still being used in the tree and
> should be discouraged.

Versionator was created because the alternative was worse: developers
were hard-coding versions in ebuilds, writing dodgy bash substitutions
that wouldn't reliably convert between versions and using things like
sed and tr in global scope.

The problem is, versionator was written before the current version
rules. It doesn't handle some things that are now legal, and it still
uses the old meanings for numeric components.

The correct solution is two-fold:

* Replace versionator with package-manager internal functions that use
  the package manager's rules for version parsing.

* Reduce the need to use MY_PV by extending the version rules.

Both of these are things that can't be done with current EAPI rules.

> > Anything that finally lets us kill that off has to be good...
> 
> Loosening VERSION requirements won't fix the problem. This will:
> 
> 1) Discourage its use by putting a QA ewarn in the eclass.
> 2) Have all ebuilds converted either through QA bugs or a nice
> Saturday afternoon coding spree.
> 3) Announce its removal.
> 4) Remove.

You can't discourage versionator until the replacement's in place.
Going back to the old way of doing things is a loot worse than
using versionator. So no, the way to fix it is:

1) Change the EAPI rules to allow global scope and version suffix
changes.

2) Bring in a versionator replacement done as internals in a new EAPI.

3) Extend the version format rules in a new EAPI.

4) Disallow versionator use in the first EAPI that has 2) and 3).

-- 
Ciaran McCreesh


signature.asc
Description: PGP signature


Re: [gentoo-dev] Re: GLEP 55 updated

2009-05-18 Thread Joe Peterson
Ciaran McCreesh wrote:
> On Mon, 18 May 2009 16:07:20 +0100
> Steven J Long  wrote:
>> I missed the clamour of developers complaining about this
>> oh-so-burdensome restriction that they've been dealing with for at
>> least 5 years.
> 
> Why do you think I wrote the awful hack that is versionator?
> Anything that finally lets us kill that off has to be good...

I have to disagree.  As Steve said, the fact that Gentoo has a strict
way to specify versions brings clarity and uniformity to our tree,
regardless of the myriad upstream conventions.  I do not think that
allowing all of those upstream conventions in our filenames is a
benefit.  It is actually quite ugly and would make the tree harder to
comprehend.  Someone looking at various packages in our tree would need
to learn each specific upstream format in order to make sense of the
filename content.  The current consistency in versions in the tree is a
great feature, IMHO.

Using versionator and $MY_PV is, as I see it, a translation method.  It
gives us the best of both worlds: the ability to deal with upstream
versions and a consistent Gentoo version format.  These mechanisms could
certainly be improved upon, of course, and handling some cases is
currently difficult, as is handing the case in which upstream's tarball
file does not contain the version, but these are fixable issues.

-Joe



[gentoo-dev] Re: GLEP 55 updated

2009-05-18 Thread Steven J Long
David Leverton wrote:

> 2009/5/17 Ben de Groot :
>> I think the way eapi-2 was introduced into the tree wasn't particularly
>> problematic. 
> 
> I think there might be a misunderstanding here. Ciaran means functions
> provided by the package manager that ebuilds can call during metadata
> generation, for example built-in versionator-like functionality, not
> new phase functions like src_prepare and src_configure.

Ugh. Firstly versionator is a piece of bloated crap that should have died a
long time ago; all it does is stop Gentoo newbs learning the basics[1] of
their implementation language, which leaves them open to nonsensical
arguments about printf -v (glad you finally learnt that one, btw.)

Secondly, please explain fully and clearly, but concisely, why we can't
simply state that EAPI=NN allows the ebuild to use the EAPI functions in
global scope.

Bear in mind that you have to deal with the case of the mangler which can
get EAPI from an ebuild without sourcing, as portage currently can, I
believe.

Relaxing that restriction strikes me as much saner than relaxing all the
other restrictions which make interoperability easier.

(Frankly, I'm amazed at having to state that to people trusted to write a
specification. Follow up to -project on this point please, as it's about
process, not technique.)

[1] (watch wrap)
http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_02
http://wooledge.org/mywiki/BashFAQ/073
man bash /Parameter Expansion

--
#friendly-coders -- We're friendly but we're not /that/ friendly ;-)





Re: versionator.eclass terminator, was [gentoo-dev] Re: GLEP 55 updated

2009-05-18 Thread Jeroen Roovers
On Mon, 18 May 2009 16:16:46 +0100
Ciaran McCreesh  wrote:

> Why do you think I wrote the awful hack that is versionator?

Why don't you explain why, historically, you put that in the tree? It
would help us now if you were to simply record your mistakes for
everybody else to easily avoid. It's still being used in the tree and
should be discouraged.

> Anything that finally lets us kill that off has to be good...

Loosening VERSION requirements won't fix the problem. This will:

1) Discourage its use by putting a QA ewarn in the eclass.
2) Have all ebuilds converted either through QA bugs or a nice Saturday
afternoon coding spree.
3) Announce its removal.
4) Remove.



Re: [gentoo-dev] Re: GLEP 55 updated

2009-05-18 Thread Ciaran McCreesh
On Mon, 18 May 2009 16:07:20 +0100
Steven J Long  wrote:
> I missed the clamour of developers complaining about this
> oh-so-burdensome restriction that they've been dealing with for at
> least 5 years.

Why do you think I wrote the awful hack that is versionator?

Anything that finally lets us kill that off has to be good...

-- 
Ciaran McCreesh


signature.asc
Description: PGP signature


[gentoo-dev] Re: GLEP 55 updated

2009-05-18 Thread Steven J Long
Joe Peterson wrote:

> Ciaran McCreesh wrote:
>>> 3. "Extend versioning rules in an EAPI - for example, addition of the
>>> scm suffix - GLEP54 [1] or allowing more sensible version formats like
>>> 1-rc1, 1-alpha etc. to match upstream more closely."
>>> Apart from GLEP54, I believe our versioning scheme works reasonably
>>> well. I don't see any need to match upstream more closely. I'd rather
>>> like to keep the more uniform way of handling suffixes like rc and
>>> alpha, that we have now.
>> 
>> Please explain why 1.2_rc3 is legal but 1.2-rc3 is not.
> 
> I actually like the current format in that it does *not* allow "-" in
> the version.  For example, pkg-2.3.1_rc5 makes it clear that the string
> from "2" to "rc5" is the version.  If were were to allow pkg-2.3.1-rc5,
> this could get visually confusing (looks a bit like pkg-2.3.1-r5).  In
> this case, *less* flexibility and more strict rules serve a good
> purpose, I think.
> 
Agreed; the purpose of an internal format specification is not to allow
NN variants on a theme all over the place. It should nail things
down to ONE variant which everybody can collaborate around.

I missed the clamour of developers complaining about this oh-so-burdensome
restriction that they've been dealing with for at least 5 years. Until I see
that happening independently of this current hooha, I'm going to consider
this 'reason' to be yaf "straw man".

-- 
#friendly-coders -- We're friendly but we're not /that/ friendly ;-)





Re: [gentoo-dev] blocking mixed versions of split QT libraries

2009-05-18 Thread Ciaran McCreesh
On Mon, 18 May 2009 17:47:52 +0300
Petteri Räty  wrote:
> Ciaran McCreesh wrote:
> > On Mon, 18 May 2009 13:04:27 +0300
> > Alex Alexander  wrote:
> >> Unfortunately we've got reports from paludis users stating that
> >> they can't update QT from qting-edge anymore.
> > 
> > Paludis treats blocks as strong, the way Portage used to and the way
> > PMS defined them until we had to retroactively change it to allow
> > Portage's newer behaviour...
> 
> Unfortunate but what does this have to do with the original question?
> EAPI 2 moved to the new soft behavior and as far as I know all qt
> ebuilds are EAPI 2.

The definition of soft behaviour allows soft blockers to be treated
identically to hard blockers. We had to do it this way because
Portage's rules for soft blockers are too fuzzy and arbitrary to turn
into a formal specification -- they were a "code first, think later"
solution with which we can't do anything useful.

-- 
Ciaran McCreesh


signature.asc
Description: PGP signature


Re: [gentoo-dev] blocking mixed versions of split QT libraries

2009-05-18 Thread Petteri Räty
Ciaran McCreesh wrote:
> On Mon, 18 May 2009 13:04:27 +0300
> Alex Alexander  wrote:
>> Unfortunately we've got reports from paludis users stating that they
>> can't update QT from qting-edge anymore.
> 
> Paludis treats blocks as strong, the way Portage used to and the way
> PMS defined them until we had to retroactively change it to allow
> Portage's newer behaviour...
> 

Unfortunate but what does this have to do with the original question?
EAPI 2 moved to the new soft behavior and as far as I know all qt
ebuilds are EAPI 2.

Regards,
Petteri



signature.asc
Description: OpenPGP digital signature


Re: [gentoo-dev] blocking mixed versions of split QT libraries

2009-05-18 Thread Ciaran McCreesh
On Mon, 18 May 2009 13:04:27 +0300
Alex Alexander  wrote:
> Unfortunately we've got reports from paludis users stating that they
> can't update QT from qting-edge anymore.

Paludis treats blocks as strong, the way Portage used to and the way
PMS defined them until we had to retroactively change it to allow
Portage's newer behaviour...

> 1) Is there a saner way to achieve our goal of doing whatever is
> possible to avoid mixed QT versions?

Not really. There's no particularly good mechanism for ensuring equal
versions of things where not everything has to be installed. The best
option I can think of is to have a meta package called, say, split-qt,
and to do all your external (not inter-qt-library) dependencies as:

x11-libs/split-qt[gui][xmlpatterns]

and then have x11-libs/split-qt's deps be like:

gui? ( ~x11-libs/qt-gui-${PV} )

> 2) Is our implementation considered correct and acceptable by the PMS
> guys?

The way PMS defines blockers has been rewritten to allow both what
Portage used to do and what Portage now does. It's fairly horrible, but
unfortunately Zac changed Portage's behaviour (breaking anything that
relied upon strong blockers, hence the quickly-hacked-in !! blocker
hack) without EAPI control.

-- 
Ciaran McCreesh


signature.asc
Description: PGP signature


Re: [gentoo-dev] GLEP 54 and hyphens in PV

2009-05-18 Thread Ciaran McCreesh
On Mon, 18 May 2009 06:59:36 +0200
Ulrich Mueller  wrote:
> AFAICS, there _is_ an ambiguity.

There's no ambiguity. It means what we define it to mean.

-- 
Ciaran McCreesh


signature.asc
Description: PGP signature


Re: [gentoo-dev] blocking mixed versions of split QT libraries

2009-05-18 Thread Alistair Bush


Alex Alexander wrote:
> QT doesn't work well when mixed versions of its core libraries are
> installed. Usually an emerge -avDu world solves the problem, but some
> users tend to avoid this.
> 
> For example, lets say you have parts of QT 4.4.2 on your system. QT
> 4.5.1 is available and a user decides to manually update qt-core, or
> to install KDE which has a QT dependency on a QT library not
> installed. In these cases, portage will update only a part of the
> installed QT libraries, leaving the system in a mixed state.
> 
> QT based apps don't like that. Others will refuse to build, others
> will fail to run.
> 
> We've managed to experimentally block partial QT upgrades by adding an
> RDEPEND to all QT libraries [1] in qting-edge overlay. Portage
> understands this and throws out B blocks if you try to change versions
> only in parts of QT, but upgrades/downgrades fine if you do them all
> at once (or use -Du world).
> 
> This "fix" also catches stale QT libraries that nothing depends on
> anymore because the user has removed whatever required them (and never
> ran --depclean).
> 
> Unfortunately we've got reports from paludis users stating that they
> can't update QT from qting-edge anymore.

>From what I understand you are utilizing portages ability to
automagically resolve blockers when all blockers will be resolved within
the current command.  Agree?? or is it the fact that you are doing
!>x11-libs/qt-assistant-${PV}-r that is causing the paludis problem?

I would suggest that you just tell paludis users to use --dl-blocks
discard when updating qt.  After looking at the eclass im not sure
whether it will work or not.  im assuming that discarding blocks will
just ignore everything, but I haven't tested it so can't be sure.

> 
> What I'd like to discuss is the following:
> 
> 1) Is there a saner way to achieve our goal of doing whatever is
> possible to avoid mixed QT versions?

I don't believe so, not within current ways of declaring dependencies.

> 2) Is our implementation considered correct and acceptable by the PMS guys?
> 3) Whats the general Gentoo Policy on mixed versions? Do we care, or
> is our policy "please -Du world"?

I say we should be stopping them from happening.

> 
> We've also managed to achieve the same thing by adding PDEPENDs to
> each QT library for any other QT libraries that depend on it:
> 
> i.e. if qt-xmlpatterns depends on qt-gui, we add the following to qt-gui:
> PDEPEND="
> || ( !x11-libs/qt-xmlpatterns ~x11-libs/qt-xmlpatterns-${PV} )
> "
> 
> the above (expanded for all libraries) has the same effect as the [1]
> RDEPEND but looks a bit more hackish.
> 

And I would agree with the hackish comment.

> thanks

Good work btw.

Alistair.



[gentoo-dev] blocking mixed versions of split QT libraries

2009-05-18 Thread Alex Alexander
QT doesn't work well when mixed versions of its core libraries are
installed. Usually an emerge -avDu world solves the problem, but some
users tend to avoid this.

For example, lets say you have parts of QT 4.4.2 on your system. QT
4.5.1 is available and a user decides to manually update qt-core, or
to install KDE which has a QT dependency on a QT library not
installed. In these cases, portage will update only a part of the
installed QT libraries, leaving the system in a mixed state.

QT based apps don't like that. Others will refuse to build, others
will fail to run.

We've managed to experimentally block partial QT upgrades by adding an
RDEPEND to all QT libraries [1] in qting-edge overlay. Portage
understands this and throws out B blocks if you try to change versions
only in parts of QT, but upgrades/downgrades fine if you do them all
at once (or use -Du world).

This "fix" also catches stale QT libraries that nothing depends on
anymore because the user has removed whatever required them (and never
ran --depclean).

Unfortunately we've got reports from paludis users stating that they
can't update QT from qting-edge anymore.

What I'd like to discuss is the following:

1) Is there a saner way to achieve our goal of doing whatever is
possible to avoid mixed QT versions?
2) Is our implementation considered correct and acceptable by the PMS guys?
3) Whats the general Gentoo Policy on mixed versions? Do we care, or
is our policy "please -Du world"?

We've also managed to achieve the same thing by adding PDEPENDs to
each QT library for any other QT libraries that depend on it:

i.e. if qt-xmlpatterns depends on qt-gui, we add the following to qt-gui:
PDEPEND="
|| ( !x11-libs/qt-xmlpatterns ~x11-libs/qt-xmlpatterns-${PV} )
"

the above (expanded for all libraries) has the same effect as the [1]
RDEPEND but looks a bit more hackish.

thanks

[1] lines 30-59
http://github.com/gentoo-qt/qting-edge/blob/master/eclass/qt4-build-edge.eclass

--
Alex Alexander || wired
Gentoo QT && KDE Herd Tester
http://www.linuxized.com