Re: shooting oneself in the foot with ldconfig -v

2007-10-11 Thread perryh
  The previously configured directory list was fully populated, so
  effectively there should have been no change as the previously
  configured directories were untouched and I specified no
  additional pathnames.
  ...
  Are you saying that by specifying -v I no longer satisfied the
  no parameters are given clause and ended up in a default place
  in the logic?

 That wasn't actually what I was saying, but after checking the
 source code it turns out you are right and that is exactly what
 happens.

  ... IMHO a verbose switch shouldn't change behavior; it should
  just spam the console a lot.

 True.

Current behavior sounds like, at best, a LOLA violation.  Perhaps the
OP would consider submitting a PR.
___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]


shooting oneself in the foot with ldconfig -v

2007-10-10 Thread Jonathan Noack
Hey folks,
I'm running 6.2-p8 and was trying to clean up my portsclean -L output
today.  It was reporting tons of duplicate libraries in /usr/X11R6 and
/usr/local even though X11R6 is an alias to /usr/local.  I tracked the
problem to portclean's use of `ldconfig -elf -r` which was reporting
directories and libraries in /usr/X11R6.  I read the ldconfig manpage in
an attempt to understand more and saw this line:
 -v  Switch on verbose mode.

I told myself, Self, the '-v' option may allow you to determine what's
going on.  It can't help knowing more!  Alas, the -v option doesn't
behave as advertised.  Instead it clears the shared library cache
(reference: http://www.parsed.org/tip/231/).  An empty shared library
cache means all dynamically-linked programs fail.  This has the wonderful
side-effect of preventing me from logging into the box to fix it (I logged
off before I figured this out).  Reboot and all will be well, you say? 
Yes, on boot /etc/rc.d/ldconfig is run and it builds the shared library
cache.  Unfortunately, the box is 1,000 miles away in my apartment.  :(

This brings me to the question:
Is the -v option broken or is the documentation out of date?

Thanks,
-Jon

___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: shooting oneself in the foot with ldconfig -v

2007-10-10 Thread Erik Trulsson
On Wed, Oct 10, 2007 at 05:41:29PM -0400, Jonathan Noack wrote:
 Hey folks,
 I'm running 6.2-p8 and was trying to clean up my portsclean -L output
 today.  It was reporting tons of duplicate libraries in /usr/X11R6 and
 /usr/local even though X11R6 is an alias to /usr/local.  I tracked the
 problem to portclean's use of `ldconfig -elf -r` which was reporting
 directories and libraries in /usr/X11R6.  I read the ldconfig manpage in
 an attempt to understand more and saw this line:
  -v  Switch on verbose mode.
 
 I told myself, Self, the '-v' option may allow you to determine what's
 going on.  It can't help knowing more!  Alas, the -v option doesn't
 behave as advertised.  Instead it clears the shared library cache
 (reference: http://www.parsed.org/tip/231/).  An empty shared library
 cache means all dynamically-linked programs fail.  This has the wonderful
 side-effect of preventing me from logging into the box to fix it (I logged
 off before I figured this out).  Reboot and all will be well, you say? 
 Yes, on boot /etc/rc.d/ldconfig is run and it builds the shared library
 cache.  Unfortunately, the box is 1,000 miles away in my apartment.  :(
 
 This brings me to the question:
 Is the -v option broken or is the documentation out of date?

No, the '-v' option behaves as documented and is not broken.
It is, however, intended to be used in conjunction with some other option.

You see, running ldconfig(8) without any arguments at all will clear the
shared library cache.  (Actually it will replace the cache with the files
found in the specified directories, but since none were specified...)
Adding '-v' will not change what ldconfig does, except possibly letting
it be a bit more verbose about what happens.


ldconfig is behaving as designed and documented, so the bug, such as it is,
is in the design of ldconfig that lets you screw up the machine by simply
running ldconfig without any option.



-- 
Insert your favourite quote here.
Erik Trulsson
[EMAIL PROTECTED]
___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: shooting oneself in the foot with ldconfig -v

2007-10-10 Thread Jonathan Noack
On Wed, October 10, 2007 18:34, Erik Trulsson wrote:
 On Wed, Oct 10, 2007 at 05:41:29PM -0400, Jonathan Noack wrote:
 Hey folks,
 I'm running 6.2-p8 and was trying to clean up my portsclean -L output
 today.  It was reporting tons of duplicate libraries in /usr/X11R6 and
 /usr/local even though X11R6 is an alias to /usr/local.  I tracked the
 problem to portclean's use of `ldconfig -elf -r` which was reporting
 directories and libraries in /usr/X11R6.  I read the ldconfig manpage in
 an attempt to understand more and saw this line:
  -v  Switch on verbose mode.

 I told myself, Self, the '-v' option may allow you to determine what's
 going on.  It can't help knowing more!  Alas, the -v option doesn't
 behave as advertised.  Instead it clears the shared library cache
 (reference: http://www.parsed.org/tip/231/).  An empty shared library
 cache means all dynamically-linked programs fail.  This has the
 wonderful
 side-effect of preventing me from logging into the box to fix it (I
 logged
 off before I figured this out).  Reboot and all will be well, you say?
 Yes, on boot /etc/rc.d/ldconfig is run and it builds the shared library
 cache.  Unfortunately, the box is 1,000 miles away in my apartment.  :(

 This brings me to the question:
 Is the -v option broken or is the documentation out of date?

 No, the '-v' option behaves as documented and is not broken.
 It is, however, intended to be used in conjunction with some other option.

 You see, running ldconfig(8) without any arguments at all will clear the
 shared library cache.  (Actually it will replace the cache with the files
 found in the specified directories, but since none were specified...)
 Adding '-v' will not change what ldconfig does, except possibly letting
 it be a bit more verbose about what happens.

Not according to ldconfig(8); running ldconfig without any arguments
implies -R:
-R  Rescan the previously configured directories.  This opens the
previous hints file and fetches the directory list from the
header.  Any additional pathnames on the command line are also
processed.  This is the default action when no parameters are
given.

The previously configured directory list was fully populated, so
effectively there should have been no change as the previously configured
directories were untouched and I specified no additional pathnames.

 ldconfig is behaving as designed and documented, so the bug, such as it
 is,
 is in the design of ldconfig that lets you screw up the machine by simply
 running ldconfig without any option.

Are you saying that by specifying -v I no longer satisfied the no
parameters are given clause and ended up in a default place in the logic?
 I could see how an unconditional shared library cache clear coupled with
no additional action (no matching actions to pursue) could get me the
results I got.  If so that behavior is really confusing.  IMHO a verbose
switch shouldn't change behavior; it should just spam the console a lot.

-Jon

___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: shooting oneself in the foot with ldconfig -v

2007-10-10 Thread Erik Trulsson
On Thu, Oct 11, 2007 at 12:27:49AM -0400, Jonathan Noack wrote:
 On Wed, October 10, 2007 18:34, Erik Trulsson wrote:
  On Wed, Oct 10, 2007 at 05:41:29PM -0400, Jonathan Noack wrote:
  Hey folks,
  I'm running 6.2-p8 and was trying to clean up my portsclean -L output
  today.  It was reporting tons of duplicate libraries in /usr/X11R6 and
  /usr/local even though X11R6 is an alias to /usr/local.  I tracked the
  problem to portclean's use of `ldconfig -elf -r` which was reporting
  directories and libraries in /usr/X11R6.  I read the ldconfig manpage in
  an attempt to understand more and saw this line:
   -v  Switch on verbose mode.
 
  I told myself, Self, the '-v' option may allow you to determine what's
  going on.  It can't help knowing more!  Alas, the -v option doesn't
  behave as advertised.  Instead it clears the shared library cache
  (reference: http://www.parsed.org/tip/231/).  An empty shared library
  cache means all dynamically-linked programs fail.  This has the
  wonderful
  side-effect of preventing me from logging into the box to fix it (I
  logged
  off before I figured this out).  Reboot and all will be well, you say?
  Yes, on boot /etc/rc.d/ldconfig is run and it builds the shared library
  cache.  Unfortunately, the box is 1,000 miles away in my apartment.  :(
 
  This brings me to the question:
  Is the -v option broken or is the documentation out of date?
 
  No, the '-v' option behaves as documented and is not broken.
  It is, however, intended to be used in conjunction with some other option.
 
  You see, running ldconfig(8) without any arguments at all will clear the
  shared library cache.  (Actually it will replace the cache with the files
  found in the specified directories, but since none were specified...)
  Adding '-v' will not change what ldconfig does, except possibly letting
  it be a bit more verbose about what happens.
 
 Not according to ldconfig(8); running ldconfig without any arguments
 implies -R:
 -R  Rescan the previously configured directories.  This opens the
 previous hints file and fetches the directory list from the
 header.  Any additional pathnames on the command line are also
 processed.  This is the default action when no parameters are
 given.

Yes, you are right.

 
 The previously configured directory list was fully populated, so
 effectively there should have been no change as the previously configured
 directories were untouched and I specified no additional pathnames.
 
  ldconfig is behaving as designed and documented, so the bug, such as it
  is,
  is in the design of ldconfig that lets you screw up the machine by simply
  running ldconfig without any option.
 
 Are you saying that by specifying -v I no longer satisfied the no
 parameters are given clause and ended up in a default place in the logic?

That wasn't actually what I was saying, but after checking the source code it 
turns
out you are right and that is exactly what happens.


  I could see how an unconditional shared library cache clear coupled with
 no additional action (no matching actions to pursue) could get me the
 results I got.  If so that behavior is really confusing.  IMHO a verbose
 switch shouldn't change behavior; it should just spam the console a lot.

True.


-- 
Insert your favourite quote here.
Erik Trulsson
[EMAIL PROTECTED]
___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]