Re: [gentoo-user] revdep-rebuild vs. @preserved-rebuild [was: Kmplayer, video and audio not syncing.]

2009-11-02 Thread Jesús Guerrero
On Mon, 2 Nov 2009 16:12:49 +0200, Alan McKinnon alan.mckin...@gmail.com
wrote:
 On Monday 02 November 2009 15:58:57 Jesús Guerrero wrote:
 On Mon, 2 Nov 2009 13:25:08 +, Neil Bothwick n...@digimed.co.uk
 
 wrote:
  On Mon, 02 Nov 2009 13:58:03 +0100, Jesús Guerrero wrote:
  @preserved-rebuild never worked for me, maybe it's just that it
  doesn't
  like ~arch. I am just too lazy to work on how to fix a thing when
  there's an alternative that always worked reliably, revdep-rebuild.
 
  If it didn't work on ~arch, how would it ever make it into arch?
 
 I am not the one to answer that, all I can say is that the few times
I've
 tried it, it kept rebuilding the same  packages again, and again, and
 again
 ad infinitum, as said, I didn't even bother to find what the problem
was,
 because I have a working alternative. Sure it could be better, but that
 hasn't been the case for me with @preserved-rebuild.
 
 I've seen people reporting the same problems in the forums, so I am
 fairly
 sure that's a common problem and not just exclusive to my
installations.
 
  The trouble with revdep-rebuild is that you have to break your system
 
 and
 
  then fix it. Most of the time this is trivial, but updates like
 
 expat-2.0
 
  showed the usefulness of being able to recompile the packages before
 
 they
 
  were broken.
 
 I can't understand that. You CAN'T recompile your packages against the
 new
 ABI's until the new ABI is in your system, and hence your system is
 already
 broken. There's no preemptive measure against this. Both methods fix
the
 system *after* it's broken.
 
 Unless the old and the new ABI version are installed side by side. When 
 @preserved-rebuild is run, it deletes the old libs only after everything
 left 
 that used it is now linked against the new one.
 
Thanks for the feedback. However there's one thing I can't understand:
whether the libraries are kept of removed is decided at the merge time,
isn't it? So, whatever breaks, breaks when using emerge to update the
offending library, the one that will break the ABI. So, how can using a
tool *after that* have any impact over what's broken? It can fix the
problem, but so can revdep-rebuild.

I mean: if the old libs with the old abi's are kept, how it is relevant if
you are using @preserved-rebuild, revdep-rebuild or another method, or none
at all? Your programs will continue to work ok without needing to rebuild
anything, won't them? And after rebuilding the package it's irrelevant
*how* did you rebuild them... I must obviously be missing something here,
if you have the time please, direct me to an adequate source of information
or explain a bit, I am curious.


 There's only one case where this can't work - the developer changes the
 ABI 
 and does not change the .so version number. That ain't gentoo's fault -
 shoot 
 the developer.

Of course, I can understand that.

However and even if @preserved-rebuild has some reason to exist, it still
doesn't fix the weird behavior that it exhibited for me in the past. But to
tell the truth, I haven't tested lately. It just came to mi mind because of
the Dale's problem, which seems to be the same one. Please, understand that
I'm not complaining, merely describing my experience, I'd rather be filling
bugs than complain uselessly, it's just that -as I said- I really didn't
see a need to because the old way just works.

-- 
Jesús Guerrero



Re: [gentoo-user] revdep-rebuild vs. @preserved-rebuild [was: Kmplayer, video and audio not syncing.]

2009-11-02 Thread Alan McKinnon
On Monday 02 November 2009 17:01:17 Jesús Guerrero wrote:
 On Mon, 2 Nov 2009 16:12:49 +0200, Alan McKinnon alan.mckin...@gmail.com
 
 wrote:
  On Monday 02 November 2009 15:58:57 Jesús Guerrero wrote:
  On Mon, 2 Nov 2009 13:25:08 +, Neil Bothwick n...@digimed.co.uk
 
  wrote:
   On Mon, 02 Nov 2009 13:58:03 +0100, Jesús Guerrero wrote:
   @preserved-rebuild never worked for me, maybe it's just that it
   doesn't
   like ~arch. I am just too lazy to work on how to fix a thing when
   there's an alternative that always worked reliably, revdep-rebuild.
  
   If it didn't work on ~arch, how would it ever make it into arch?
 
  I am not the one to answer that, all I can say is that the few times
 
 I've
 
  tried it, it kept rebuilding the same  packages again, and again, and
  again
  ad infinitum, as said, I didn't even bother to find what the problem
 
 was,
 
  because I have a working alternative. Sure it could be better, but that
  hasn't been the case for me with @preserved-rebuild.
 
  I've seen people reporting the same problems in the forums, so I am
  fairly
  sure that's a common problem and not just exclusive to my
 
 installations.
 
   The trouble with revdep-rebuild is that you have to break your system
 
  and
 
   then fix it. Most of the time this is trivial, but updates like
 
  expat-2.0
 
   showed the usefulness of being able to recompile the packages before
 
  they
 
   were broken.
 
  I can't understand that. You CAN'T recompile your packages against the
  new
  ABI's until the new ABI is in your system, and hence your system is
  already
  broken. There's no preemptive measure against this. Both methods fix
 
 the
 
  system *after* it's broken.
 
  Unless the old and the new ABI version are installed side by side. When
  @preserved-rebuild is run, it deletes the old libs only after everything
  left
  that used it is now linked against the new one.
 
 Thanks for the feedback. However there's one thing I can't understand:
 whether the libraries are kept of removed is decided at the merge time,
 isn't it? So, whatever breaks, breaks when using emerge to update the
 offending library, the one that will break the ABI. So, how can using a
 tool *after that* have any impact over what's broken? It can fix the
 problem, but so can revdep-rebuild.
 
 I mean: if the old libs with the old abi's are kept, how it is relevant if
 you are using @preserved-rebuild, revdep-rebuild or another method, or none
 at all? Your programs will continue to work ok without needing to rebuild
 anything, won't them? And after rebuilding the package it's irrelevant
 *how* did you rebuild them... I must obviously be missing something here,
 if you have the time please, direct me to an adequate source of information
 or explain a bit, I am curious.

Easy. Say you have app x which links to lib y:

portage knows that x is linked to say y.1.0.0.so

portage then upgrades y and puts y.so.1.0.1.so and the system helpfully thinks 
to itself hang on a bit, I'm about to remove a library that Y is using. I'd 
better not do that! and tells you so. (In the meantime you can merge anything 
you like that links to y.1.0.0.so, this does not affect @preserved-rebuild)

You read the message, run @preserved-rebuild and x now links to the new y 
library. When everything in @preserved-rebuild has been rebuilt, portage knows 
that now nothing links to the old y library, and removes it.

Do you see that the intent is to provide a bridging period where needed libs 
are not missing? And that @preserved-rebuild and revdep-rebuild do essentially 
the same function, except:

1. Stuff does not break. OK, make that stuff should not break
2. You don't have to hang around waiting for revdep-rebuild to take ages to 
run

It can go south sometimes, the @preserved-rebuild magic is not always perfect 
and sometimes it gets confused. There's a file in /var somewhere that records 
this, so you can just delete it and run revdep-rebuild to get the old 
behaviour. Sometimes devs do stupid things with what they decide libs are 
called, and there's nothing portage can do about that except get itself 
confused (it's not a human and can't infer meaning).

I've been using @preserved-rebuild for as long as it's been available (more 
than a year now?) with very very few hitches. I think you were just unlucky to 
hit a few stupid packages.


  There's only one case where this can't work - the developer changes the
  ABI
  and does not change the .so version number. That ain't gentoo's fault -
  shoot
  the developer.
 
 Of course, I can understand that.
 
 However and even if @preserved-rebuild has some reason to exist, it still
 doesn't fix the weird behavior that it exhibited for me in the past. But to
 tell the truth, I haven't tested lately. It just came to mi mind because of
 the Dale's problem, which seems to be the same one. Please, understand that
 I'm not complaining, merely describing my experience, I'd rather be filling
 bugs than complain 

Re: [gentoo-user] revdep-rebuild vs. @preserved-rebuild [was: Kmplayer, video and audio not syncing.]

2009-11-02 Thread Alex Schuster
Jesús Guerrero writes:

 On Mon, 2 Nov 2009 16:12:49 +0200, Alan McKinnon
  alan.mckin...@gmail.com wrote:
  On Monday 02 November 2009 15:58:57 Jesús Guerrero wrote:
  On Mon, 2 Nov 2009 13:25:08 +, Neil Bothwick n...@digimed.co.uk
  wrote:
   On Mon, 02 Nov 2009 13:58:03 +0100, Jesús Guerrero wrote:
   @preserved-rebuild never worked for me, maybe it's just that it
   doesn't like ~arch. I am just too lazy to work on how to fix a
   thing when there's an alternative that always worked reliably,
   revdep-rebuild.

I like the preserve-libs FEATURE. With revdep-rebuild, things are fixed 
after they were broken by an update of a library. And there is a time (in 
case of the dreaded expat update, a large one, expecially if revdep-
rebuilding stuff fails for some packages) in which things do not work. I 
always hated that and considered it a serious bug.
With preserve-libs, things do not break in the first place, because the old 
libraries are still in place.

   If it didn't work on ~arch, how would it ever make it into arch?
 
  I am not the one to answer that, all I can say is that the few times
  I've tried it, it kept rebuilding the same  packages again, and 
  again, and again ad infinitum, as said, I didn't even bother to find
  what the problem was, because I have a working alternative. Sure it
  could be better, but that hasn't been the case for me with 
  @preserved-rebuild.

I had the same problem with emerge @preserved-rebuild looping endlessly, 
but that's probably just a minor issue. Just use emerge @preserved-rebuild 
once to make sure the new libs are being used, and remove 
/var/lib/portage/preserved_libs_registry afterwards to get rid of the 
preserved-libs message.


   The trouble with revdep-rebuild is that you have to break your
   system and then fix it. Most of the time this is trivial, but
   updates like expat-2.0 showed the usefulness of being able to
   recompile the packages before they were broken.
 
  I can't understand that. You CAN'T recompile your packages against
  the new ABI's until the new ABI is in your system, and hence your
  system is already broken. There's no preemptive measure against
  this. Both methods fix the system *after* it's broken.
 
  Unless the old and the new ABI version are installed side by side. When
  @preserved-rebuild is run, it deletes the old libs only after
  everything left that used it is now linked against the new one.
 
 Thanks for the feedback. However there's one thing I can't understand:
 whether the libraries are kept of removed is decided at the merge time,
 isn't it? So, whatever breaks, breaks when using emerge to update the
 offending library, the one that will break the ABI. So, how can using a
 tool *after that* have any impact over what's broken? It can fix the
 problem, but so can revdep-rebuild.

Again, things do not break in the first place with the preserved-rebuild 
FEATURE. As a library gets updated, the new library is installed along with 
the old one. Applications linked to the old one still work. When they are 
re-compiled, the are linked to the new library, making the old libraries 
obsolete when this is done for all packages depending on them.

 I mean: if the old libs with the old abi's are kept, how it is relevant
  if you are using @preserved-rebuild, revdep-rebuild or another method,
  or none at all? Your programs will continue to work ok without needing
  to rebuild anything, won't them? And after rebuilding the package it's
  irrelevant *how* did you rebuild them... I must obviously be missing
  something here, if you have the time please, direct me to an adequate
  source of information or explain a bit, I am curious.

I think the revdep-rebuild way would not work here. I assume it uses ldd to 
check all binaries for existance of their libraries, and rebuild them if 
there are problems. When the old libraries are still in place, there is no 
problem for ldd, and nothing gets re-compiled. No big problem, but you 
clutter your system with old libraries staying in place, and programs still 
using them do not take possible advantage ob the newer libraries.

Wonko



Re: [gentoo-user] revdep-rebuild vs. @preserved-rebuild [was: Kmplayer, video and audio not syncing.]

2009-11-02 Thread Jesús Guerrero
Thanks everyone for the input, it's being quite informative and valuable.
I guess I'll have to research on this at some point. Still I'd like to keep
responses coming if anyone can bring some light into the issue. :)

I am responding only to one post, but I've read Alan's one as well, as
said, thanks to everyone that answered.

On Mon, 2 Nov 2009 16:50:19 +0100, Alex Schuster wo...@wonkology.org
wrote:
 Jesús Guerrero writes:
 
 On Mon, 2 Nov 2009 16:12:49 +0200, Alan McKinnon
  alan.mckin...@gmail.com wrote:
  On Monday 02 November 2009 15:58:57 Jesús Guerrero wrote:
  On Mon, 2 Nov 2009 13:25:08 +, Neil Bothwick
n...@digimed.co.uk
  wrote:
   On Mon, 02 Nov 2009 13:58:03 +0100, Jesús Guerrero wrote:
   @preserved-rebuild never worked for me, maybe it's just that it
   doesn't like ~arch. I am just too lazy to work on how to fix a
   thing when there's an alternative that always worked reliably,
   revdep-rebuild.
 
 I like the preserve-libs FEATURE. With revdep-rebuild, things are fixed 
 after they were broken by an update of a library. And there is a time
(in 
 case of the dreaded expat update, a large one, expecially if revdep-
 rebuilding stuff fails for some packages) in which things do not work. I

 always hated that and considered it a serious bug.
 With preserve-libs, things do not break in the first place, because the
 old 
 libraries are still in place.

Ok, well, then the libs are preserved at merge time. Using Alan's analogy,
when you update the lib to y.1.0.1.so. It is *at this time* when y.1.0.0 is
kept, and that has nothing with using emerge @preserved-rebuild *in the
future*. You could still use revdep-rebuild and the effect will be the same
(except that old libs will not ever be cleaned if I got it right). Right?
So, it's not emerge @preserved-rebuild which fixes the problem (as I
said, by the time you run emerge @preserved-rebuild it's already too
late, by then the libs are either preserved or broken), but a whole new
portage behavior, which is quite different. And maybe only if you have a
given FEATURE enabled, which takes this even more far away from the
@revdep-rebuild set.

So, if this all is correct, this set is intended to *fix* the breakage,
just like revdep-rebuild, and *not to prevent* it. It's portage which
prevents it by preserving all .so files. Note that revdep-rebuild didn't
break anything either. That's false. revdep-rebuild only fixes what portage
breaks. It all comes down to one thing: are you using the preserve feature
or not? And not the tool you use to fix the binaries.

 
   If it didn't work on ~arch, how would it ever make it into arch?
 
  I am not the one to answer that, all I can say is that the few times
  I've tried it, it kept rebuilding the same  packages again, and 
  again, and again ad infinitum, as said, I didn't even bother to find
  what the problem was, because I have a working alternative. Sure it
  could be better, but that hasn't been the case for me with 
  @preserved-rebuild.
 
 I had the same problem with emerge @preserved-rebuild looping endlessly,

 but that's probably just a minor issue. Just use emerge
@preserved-rebuild 
 once to make sure the new libs are being used, and remove 
 /var/lib/portage/preserved_libs_registry afterwards to get rid of the 
 preserved-libs message.

That's good to know. However this needs to be fixed, which is probably one
of the reasons why portage 2.2 is taking quite a bit to be released.

   The trouble with revdep-rebuild is that you have to break your
   system and then fix it. Most of the time this is trivial, but
   updates like expat-2.0 showed the usefulness of being able to
   recompile the packages before they were broken.
 
  I can't understand that. You CAN'T recompile your packages against
  the new ABI's until the new ABI is in your system, and hence your
  system is already broken. There's no preemptive measure against
  this. Both methods fix the system *after* it's broken.
 
  Unless the old and the new ABI version are installed side by side.
When
  @preserved-rebuild is run, it deletes the old libs only after
  everything left that used it is now linked against the new one.
 
 Thanks for the feedback. However there's one thing I can't understand:
 whether the libraries are kept of removed is decided at the merge time,
 isn't it? So, whatever breaks, breaks when using emerge to update the
 offending library, the one that will break the ABI. So, how can using a
 tool *after that* have any impact over what's broken? It can fix the
 problem, but so can revdep-rebuild.
 
 Again, things do not break in the first place with the preserved-rebuild

 FEATURE. As a library gets updated, the new library is installed along
 with 
 the old one. Applications linked to the old one still work. When they
are 
 re-compiled, the are linked to the new library, making the old libraries

 obsolete when this is done for all packages depending on them.
 
 I mean: if the old libs with the old abi's are kept, how it