[gentoo-dev] Re: Avoiding rebuilds

2014-08-03 Thread Martin Vaeth
Steven J. Long sl...@rathaus.eclipse.co.uk wrote:

 collect your thoughts into a forum post

You are right: Not everybody on this list is interested in all
technical details, so it is perhaps better to shift this discussion
to the forums. I have opened the topic

https://forums.gentoo.org/viewtopic-p-7593700.html#7593700

with a summary of the various suggestions (and a very rough sketch
of their advantages/disadvantages).

 Sounds like something that repoman could check, once a GLEP and impl
 are in place.

The problem I meant is that repoman is no able to check it:
It can be completely reasonable that the value of that metadata
variable is unchanged, that is, repoman should not even spit a
warning in this case.
Unless one adds an artificial mechanism (like encoding the revision
into the variable name or variable content) which *forces* the
maintainer to change/check that variable.
But any such mechanism I can think of is inconvenient and
possibly confusing.




[gentoo-dev] Re: Avoiding rebuilds

2014-08-02 Thread Steven J. Long
Martin Vaeth wrote:
 Steven J. Long wrote:
Please set your client not to include email addresses (for publically
web-archived newsgroups.)

   It will probably also cause confusion for comaintainers and
   collaborators, especially when INSTALL_VERSION points to a version
   that has already been removed.
 
  So use another name that can't be confused.
 
 Perhaps there is a misunderstanding: I did not understand that the
 confusion is caused by the name, but by the lack of information
 about its entries:

Yeah, perhaps that's a language thing then. install version in English
implies you're installing it currently, and the removal conflicts in
semantic terms. It just doesn't feel right.

 For instance, if you bump a version, you must never forget to
 check whether this variable needs to be updated.
 Moreover, if you want to update that variable, you should
 understand precisely why which version is listed here
 in order to decide whether a recompile from that version
 might be needed with the current bump or not.
 This decision is not necessarily easy if the corresponding
 referred ebuilds are already in the CVS attic.

My instant thought there is that this is a maintainer decision. I agree
the consequences of getting it wrong aren't good. What about giving it
a working-name of CHANGE_VDB?

Regardless of how it's implemented the PM has to have an installed pkg
db; for instance istr portage can share a sqlite db with eix.
Irrespective of the impl or its configuration, the concept of a pkg db
is hardly contentious; it's central to the domain, and implicit in
REPLACING_VERSIONS and REPLACED_BY_VERSION. Based on the long prior
thread, I'd say there's consensus for the need in very specific
circumstances to change vdb entries, ideally at the granularity of the
ebuild; and it's better if this isn't part of the normal dep-calc.

Calling it that directly is simpler, and it stands out as something
both unusual and changing the vdb, which any Gentoo admin is familiar
with. The imperative form is in line with what is going to happen:
we're telling the mangler to change the vdb, for matching atoms, if
it installs this package. It could end up CHANGE_PKG_DB instead;
sticking an E on the front, or making it into some obfuscated C++
style name, that can be bikeshedded after it's actually specified.

However as you've seen, it's a lot harder to have a focussed discussion
on the dev ML than it is on the forums. Having waded through that thread
on the web[1] I have no wish ever to do it again, nor would I inflict it
on someone trying to catch up with the thinking behind changes in the
future. Indeed it would be quite embarrassing in the context of
attracting new people, as has happened before.

At this stage though, I cannot say that I have any sort of overall grasp
on the various constraints you've outlined, based on the requirements
you and others have specified. Could I ask therefore that you collect
your thoughts into a forum post, where we can collaborate without the
flak-storm of agenda-driven political FUD poisoning the discussion?
It's much easier since the OP is always at the top of the thread, and
we can push the content block to a wiki page once we're done, and go
for a GLEP from there, after wider discussion.

While I could go back over the thread and try to pull out your thoughts,
it would take me a long time, be painfully tedious (ie I ain't going to,
come what may;) and not consistent, nor as comprehensive as you simply
grabbing it from your mailbox, and tidying up what you're thinking.

If you want some help making it more fluent English, feel free to email
me off-list with a first draft, assuming this is okay with you.

 Of course, if in doubt, it is a safe strategy to always
 remove that variable (it can only cause redundant compilation,
 while it can be fatal if you leave a version falsely).
 
 Therefore, an automatism to forget this variable automatically
 if not changed would be preferrable, but one would need a mechanism
 for this (I have only some strange ideas for such a mechanisms:
 One could encode the current ebuild version into the name of
 that variable; or one could require that the current version
 is the first entry in this variable [although, semanatically,
 it is ignored and just serves as a proof that the ebuild
 maintainer checked that variable]).

Sounds like something that repoman could check, once a GLEP and impl
are in place. By then it should be much easier to add, and maintain,
a specific check as the repoman code is currently being modularised.

Anyhow, good to have a man of your experience and approach contributing
to the dev discussion at last. Plenty of devs use eix as you may have
seen in various posts; I can tell you from IRC that knowing its
switches is almost seen as black-magic sometimes ;p

I don't ofc: I just tell them to post on the forums and get the info
from you, if they can't work out the manpages, which as you know is
exactly what I do quite frequently.. so thanks 

[gentoo-dev] Re: Avoiding rebuilds

2014-08-01 Thread Steven J. Long
On Mon, Jul 28, 2014 at 05:49:07AM +, Martin Vaeth wrote:
 hasufell hasuf...@gentoo.org wrote:
  Ulrich Mueller:
 
  I wonder if it wouldn't be saner to leave our revision syntax
  untouched.
 
 As already mentioned, -r1.1 is only one of several possible ways
 how to achieve the same aim; I am not speaking in favour for a
 particular method.

Sure. As dolsen prefix is using it, even if this weren't better done
as metadata.

 The -r1.1 method has the advantage of being simple and transparent
 to the user and developer.  Other approaches have other advantages:
 
  Instead, one could introduce a variable INSTALL_VERSION that would
 
 (It would have to be a variable stored in the metadata/ cache
 and thus also would only work with a new API, but these are only
 technical details.)

Agreed again, there's far too much conflabation of EAPI vs impl round here.
Not helped by the obfuscatory troll you've had the mispleasure to encounter.
Think of it as an initiation.. ;-)

  default to ${PVR} but could be set to the version of a previous ebuild
  instead. The PM could compare it against INSTALL_VERSION in the VDB
  and skip build and installation if versions match.
 
 It should be a list and have empty default (*never* including the
 version itself), but these are also technical details.
 This solution would have the advantage that you could specify
 *full* versions and thus have even more fine-grained control when
 recompilations are necessary. One could also allow specify version
 ranges, slots, overlays, etc., perhaps even make the behaviour
 dependent of USE-flags, as you already mentioned, all
 similarl to current DEPEND syntax.
 
 The disadvantage is that it is slightly more work than -r1.1,
 less transparent, and easily overlooked to remove for a version bump,
 causing issues like these:
 
  It will probably also cause confusion for comaintainers and
  collaborators, especially when INSTALL_VERSION points to a version that
  has already been removed.

So use another name that can't be confused. Perhaps REPLACES_VERSION, or
w/e the primadonna will allow, since we're still feeding him goats..
Perhaps doubt he'll want to pluralise it, in that tedious nu-skool way
of his. More likely he'll just use anything we discuss as an excuse
for more FUD.

Regards,
steveL

PS: Now you know just why..
-- 
#friendly-coders -- We're friendly, but we're not /that/ friendly ;-)



[gentoo-dev] Re: Avoiding rebuilds

2014-08-01 Thread Martin Vaeth
Steven J. Long sl...@rathaus.eclipse.co.uk wrote:

  It will probably also cause confusion for comaintainers and
  collaborators, especially when INSTALL_VERSION points to a version
  that has already been removed.

 So use another name that can't be confused.

Perhaps there is a misunderstanding: I did not understand that the
confusion is caused by the name, but by the lack of information
about its entries:

For instance, if you bump a version, you must never forget to
check whether this variable needs to be updated.
Moreover, if you want to update that variable, you should
understand precisely why which version is listed here
in order to decide whether a recompile from that version
might be needed with the current bump or not.
This decision is not necessarily easy if the corresponding
referred ebuilds are already in the CVS attic.

Of course, if in doubt, it is a safe strategy to always
remove that variable (it can only cause redundant compilation,
while it can be fatal if you leave a version falsely).

Therefore, an automatism to forget this variable automatically
if not changed would be preferrable, but one would need a mechanism
for this (I have only some strange ideas for such a mechanisms:
One could encode the current ebuild version into the name of
that variable; or one could require that the current version
is the first entry in this variable [although, semanatically,
it is ignored and just serves as a proof that the ebuild
maintainer checked that variable]).




Re: [gentoo-dev] Re: Avoiding rebuilds

2014-07-28 Thread Brian Dolbec
On Mon, 28 Jul 2014 05:49:07 + (UTC)
Martin Vaeth mar...@mvath.de wrote:

 hasufell hasuf...@gentoo.org wrote:
  Ulrich Mueller:
 
  I wonder if it wouldn't be saner to leave our revision syntax
  untouched.
 
 As already mentioned, -r1.1 is only one of several possible ways
 how to achieve the same aim; I am not speaking in favour for a
 particular method.
 The -r1.1 method has the advantage of being simple and transparent
 to the user and developer.  Other approaches have other advantages:
 
  Instead, one could introduce a variable INSTALL_VERSION that would
 
 (It would have to be a variable stored in the metadata/ cache
 and thus also would only work with a new API, but these are only
 technical details.)
 
  default to ${PVR} but could be set to the version of a previous
  ebuild instead. The PM could compare it against INSTALL_VERSION in
  the VDB and skip build and installation if versions match.
 
 It should be a list and have empty default (*never* including the
 version itself), but these are also technical details.
 This solution would have the advantage that you could specify
 *full* versions and thus have even more fine-grained control when
 recompilations are necessary. One could also allow specify version
 ranges, slots, overlays, etc., perhaps even make the behaviour
 dependent of USE-flags, as you already mentioned, all
 similarl to current DEPEND syntax.
 
 The disadvantage is that it is slightly more work than -r1.1,
 less transparent, and easily overlooked to remove for a version bump,
 causing issues like these:
 
  It will probably also cause confusion for comaintainers and
  collaborators, especially when INSTALL_VERSION points to a version
  that has already been removed.
 
 

I haven't had the energy to read all the mails over all the dynamic
deps thread...

the -r1.1 syntax has been in use by the prefix since early in it's
existence.  I haven't kept track, but they may have finally done away
with it.

There are many other problems with using that syntax, namely most other
tools are not compatible with it, so more than just portage needs to be
modified.  Adding that syntax to ebuilds will cause disruptions and bugs
for years to come.

So, please, forget about this syntax as a viable solution.

-- 
Brian Dolbec dolsen




[gentoo-dev] Re: Avoiding rebuilds

2014-07-27 Thread Martin Vaeth
hasufell hasuf...@gentoo.org wrote:
 Ulrich Mueller:

 I wonder if it wouldn't be saner to leave our revision syntax
 untouched.

As already mentioned, -r1.1 is only one of several possible ways
how to achieve the same aim; I am not speaking in favour for a
particular method.
The -r1.1 method has the advantage of being simple and transparent
to the user and developer.  Other approaches have other advantages:

 Instead, one could introduce a variable INSTALL_VERSION that would

(It would have to be a variable stored in the metadata/ cache
and thus also would only work with a new API, but these are only
technical details.)

 default to ${PVR} but could be set to the version of a previous ebuild
 instead. The PM could compare it against INSTALL_VERSION in the VDB
 and skip build and installation if versions match.

It should be a list and have empty default (*never* including the
version itself), but these are also technical details.
This solution would have the advantage that you could specify
*full* versions and thus have even more fine-grained control when
recompilations are necessary. One could also allow specify version
ranges, slots, overlays, etc., perhaps even make the behaviour
dependent of USE-flags, as you already mentioned, all
similarl to current DEPEND syntax.

The disadvantage is that it is slightly more work than -r1.1,
less transparent, and easily overlooked to remove for a version bump,
causing issues like these:

 It will probably also cause confusion for comaintainers and
 collaborators, especially when INSTALL_VERSION points to a version that
 has already been removed.