Re: [png-mng-implement] -version-number and BeOS

2006-05-17 Thread Ralf Wildenhues
Hi John,

* John Bowler wrote on Wed, May 17, 2006 at 04:17:21AM CEST:
> From: Ralf Wildenhues
> >What I still don't understand is the following additional change you
> >also suggest:
> >
> >> $ diff libpng-1.2.9beta7/ltmain.sh libpng-1.2.9beta11 3248c3248
> >> <   current=`expr $number_major + $number_minor - 1`
> >> ---
> >> >   current=`expr $number_major + $number_minor`
> >> 3323c3323
> >> < major=`expr $current - $age + 1`
> >> ---
> >> > major=`expr $current - $age`
> >
> >There is a comment above this code that explains why this should be
>> necessary, no?
> 
> This is the irix/nonstopux case, I don't think there is any comment; I
> wasn't able to find any explanation of why the irix case adds 1 to get
> the major version number.  I did notice the comment for the first case
> which says:
> 
> 'then there is irix which has an extra 1 added just for fun'

AFAIK IRIX doesn't or at one point in time didn't allow for a major
version number of 0.  That's why Libtool always added 1: because version
numbers of 0 are commonly used elsewhere, so it wouldn't be nice to
force everyone else to adjust.

> That's clearly a reference to the second case adding of 1, not a
> reference to whatever irix behaviour the second piece of code is trying
> to accommodate.
> 
> The issue here is that libpng on irix has (currently) a major version
> number of '0', as it does on all other operating systems.

Why should the version number be constant across operating systems?
This is a requirement that is impossible to fulfill portably.
I fully understand that the maintenance hassles incurred by this
limitations: explaining to users that their libfoo 1.2.3 has different
numbers 4.5.6 elsewhere; but fundamentally, it simply isn't possible to
generate a uniform numbering scheme.

> So we need to be able to set the major version number to 0 (currently
> impossible because ltmain.sh objects to the value of '-1' for current)
> and, ideally we don't want to do OS specific stuff in configure to fix
> up the arguments to libtool for irix...  That would defeat the point
> of libtool.

Well, the point of libtool is that you give it the same version
information for all systems, and that it will map that to some version
representation that keeps the semantics w.r.t. compatible and
incompatible changes right.  A library on IRIX need not be compatible
with a library on GNU/Linux: they will never be linked together.

> Well, there is obviously something weird going on on IRIX.  libpng has
> worked on IRIX for a long time, but maybe not with shared libraries.
> Still it seems weird that libtool should make a major version number
> of 0 impossible and not offer any explanation of what is going on.

Good point.  We should document this somewhere, after clarifying where
exactly the constraint came from and whether it still applies.

Cheers,
Ralf


___
http://lists.gnu.org/mailman/listinfo/libtool


Re: Avoiding to install some static libs

2006-05-17 Thread Sander Niemeijer


On 16-mei-2006, at 16:06, Pierre Ossman wrote:


Hi!

I'd like to avoid installing some of the static libs built, but I  
can't figure out how.


I have a package that contains both "normal" libraries, for which  
I'd like both dynamic and static to be installed, and some modules.  
I'd like to kill off the static versions of the modules as they  
serve no purpose.


If I understand you correctly then what you want is the -shared  
option that is available in the CVS version of libtool.
See also: http://lists.gnu.org/archive/html/libtool/2003-08/ 
msg8.html


I have been struggling with the same problem and am eagerly waiting  
for this option to become available in a public version of libtool.



I am currently using a not so elegant post-install workaround to get  
rid of the .a files:


install-exec-hook:
rm -f $(DESTDIR)$(yourmoduledir)/yourmodule.a



I tried adding --tag=disable-static when doing libtool -- 
mode=install, but that didn't help. Any other ideas?


I'd like to keep building the libs, as they might be used for  
preloading. But if there is a way to disable building them  
(figuring out how to get automake to give libtool the --tag  
probably) but not a way to disable installing them, then that is  
possible solution, although not preferable.


--
Rgds
Pierre OssmanTelephone: +46-13-21 46 00
Cendio ABWeb: http://www.cendio.com


___
http://lists.gnu.org/mailman/listinfo/libtool




___
http://lists.gnu.org/mailman/listinfo/libtool


RE: [png-mng-implement] -version-number and BeOS

2006-05-17 Thread John Bowler
From: Ralf Wildenhues [mailto:[EMAIL PROTECTED] 
>John Bowler:
>> The issue here is that libpng on irix has (currently) a major version

>> number of '0', as it does on all other operating systems.
>
>Why should the version number be constant across operating systems?

It isn't.  The *major* version number is the same across all operating
systems (all the ones libpng supports.)  In so far as this issue is
concerned I believe libpng is supported on a sufficient variety of
platforms to exercise all the different cases in ltmain.sh - so I think
we are testing all the different varieties of version number mangling
in libtool.

libpng has an existing (one-makefile-per-os) build system which produces
shared libraries for each operating system with a particular version
number.  Across minor revisions (including API adds) the major number
does not change and must not change (on any platform).  Across a major
revision the library and include file *names* change, and we keep the
same major version number.

When we tried to get a configure script to work in 1.2.9 (a minor
revision from package version 1.2.8) we obviously wanted the configure
stuff to generate the same shared library names+*major* versions as the
makefiles.  Indeed this is a requirement - we need to continue to
support libpng12 without a major shared library revision.  Since we
wanted to swap to a configure script build by default we had to have
it generate the required major versions across all platforms.

When I tried to do this with --version-info I discovered that I couldn't
get the correct result (even with a change to major version number) on
freebsd.  IIRC to set the minor part of the version number on *linux*
I had to supply a non-zero 'age' but if I did that it would change the
*major* version on freebsd.  This is discussed at length in the
png-implement archives.  The conclusion was that the required value for
--version-info had to be changed for different Oses.

When I tried this with --version-number, however, I found it was
portable;
I could set a single version number for all Oses.  libtool correctly
removes the spurious parts - so the version number is 0:9:0 and we get
libpng12.so.0.9.0 on linux and libpng12.so.0 on freebsd.

Notice that we *did* change our version numbering scheme to get this to
work - but only in the minor part (we had libpng12.so.0.1.2.8 before on
linux).

Of course we then found that the irix build fails.

This is all documented on the png-implement archive.  The important
points
are:

1) We want to use minor versioning on the platforms which support it.
2) The major version must not change on any platform between successive
   (minor revision) configure builds.
3) We could change the major version to be (say) '1' at the next major
   release, but we can't change it in libpng 1.2.x

John Bowler <[EMAIL PROTECTED]>



___
http://lists.gnu.org/mailman/listinfo/libtool


autoreconf --help (was: Libtool release plan)

2006-05-17 Thread Ralf Wildenhues
Hi Olly,

* Olly Betts wrote on Tue, May 16, 2006 at 01:38:05PM CEST:
> 
> I'm guessing the issue is that the tarball builder reuses the same
> SVN checkout and just reruns "autoreconf" without "--force".  The
> output from "autoreconf --help" says:
> 
>   Run `autoconf' (and `autoheader', `aclocal', `automake', `autopoint'
>   (formerly `gettextize'), and `libtoolize' where appropriate)
>   repeatedly to remake the GNU Build System files in the DIRECTORIES or
>   the directory trees driven by CONFIGURE-AC (defaulting to `.').
> 
>   By default, it only remakes those files that are older than their
>   predecessors.  If you install new versions of the GNU Build System,
>   running `autoreconf' remakes all of the files by giving it the
>   `--force' option.
> 
> I had read that as saying "if you upgrade autoconf, automake, or libtool
> then running autoreconf implicitly uses the `--force' option", but
> rereading it I think it probably isn't saying that.
> 
> And the info manual makes this totally clear:
*snip*

> I suggest that autoreconf's --help should follow the info version -
> in particular "sources" is better than "predecessors" and the
> last sentence is a lot clearer in the info version.

Yes, that is a good idea IMHO.  At the same time let's get rid of the
CONFIGURE-AC argument we're suggesting there but which didn't work right
anyway.  But let's not actually change the functionality, so that what
works continues to.  (A bit fragile, I know; I think the long term goal
should be to implement that functionality properly, in all autotools;
but I don't want to do that now.)

OK to apply?  Do you think we need to announce this change in NEWS?

Cheers,
Ralf

* bin/autoreconf.in ($help): Reword according to the manual.
Suggested by Olly Betts.

Index: bin/autoreconf.in
===
RCS file: /cvsroot/autoconf/autoconf/bin/autoreconf.in,v
retrieving revision 1.132
diff -u -r1.132 autoreconf.in
--- bin/autoreconf.in   17 May 2006 02:20:15 -  1.132
+++ bin/autoreconf.in   17 May 2006 17:11:21 -
@@ -55,16 +55,16 @@
 
 # $HELP
 # -
-$help = "Usage: $0 [OPTION] ... [CONFIGURE-AC or DIRECTORY] ...
+$help = "Usage: $0 [OPTION] ... [DIRECTORY] ...
 
 Run `autoconf' (and `autoheader', `aclocal', `automake', `autopoint'
 (formerly `gettextize'), and `libtoolize' where appropriate)
-repeatedly to remake the GNU Build System files in the DIRECTORIES or
-the directory trees driven by CONFIGURE-AC (defaulting to `.').
+repeatedly to remake the GNU Build System files in specified
+DIRECTORIES and their subdirectories (defaulting to `.').
 
 By default, it only remakes those files that are older than their
-predecessors.  If you install new versions of the GNU Build System,
-running `autoreconf' remakes all of the files by giving it the
+sources.  If you install new versions of the GNU Build System,
+you can make `autoreconf' remake all of the files by giving it the
 `--force' option.
 
 Operation modes:


___
http://lists.gnu.org/mailman/listinfo/libtool


Re: autoreconf --help (was: Libtool release plan)

2006-05-17 Thread Olly Betts
On Wed, May 17, 2006 at 07:19:57PM +0200, Ralf Wildenhues wrote:
> At the same time let's get rid of the
> CONFIGURE-AC argument we're suggesting there but which didn't work right
> anyway.  But let's not actually change the functionality, so that what
> works continues to.  (A bit fragile, I know; I think the long term goal
> should be to implement that functionality properly, in all autotools;
> but I don't want to do that now.)

Another approach would be to change autoreconf to just remove any
filename part - that's easy to explain to the user ("the top-level
directory or any file in it") and also easy to implement (simply
s,[^/\\]*$,, on that argument.)

Cheers,
Olly


___
http://lists.gnu.org/mailman/listinfo/libtool


Re: autoreconf --help

2006-05-17 Thread Ralf Wildenhues
Hi Olly,

* Olly Betts wrote on Wed, May 17, 2006 at 08:56:28PM CEST:
> On Wed, May 17, 2006 at 07:19:57PM +0200, Ralf Wildenhues wrote:
> > At the same time let's get rid of the
> > CONFIGURE-AC argument we're suggesting there but which didn't work right
> > anyway.  But let's not actually change the functionality, so that what
> > works continues to.  (A bit fragile, I know; I think the long term goal
> > should be to implement that functionality properly, in all autotools;
> > but I don't want to do that now.)
> 
> Another approach would be to change autoreconf to just remove any
> filename part - that's easy to explain to the user ("the top-level
> directory or any file in it") and also easy to implement (simply
> s,[^/\\]*$,, on that argument.)

Well, the point is that
  autoreconf subdir/foobar.ac

simply won't cause the called tools to use foobar.ac, but the first that
exists in the list
  subdir/configure.ac
  subdir/configure.in

The file name you pass currently is stripped off as you suggest, but
since it won't be used, I think that it is confusing to document this
unless it is actually used.

Cheers,
Ralf


___
http://lists.gnu.org/mailman/listinfo/libtool


Re: autoreconf --help

2006-05-17 Thread Olly Betts
On 2006-05-17, Ralf Wildenhues <[EMAIL PROTECTED]> wrote:
> Well, the point is that
>   autoreconf subdir/foobar.ac
>
> simply won't cause the called tools to use foobar.ac, but the first that
> exists in the list
>   subdir/configure.ac
>   subdir/configure.in

Yeah, I know.

My thought was that it is sometimes convenient to be able to do
something like:

for f in `find . -name configure.ac -print` ; do autoreconf $f ; done

But it's not a big deal - it's not hard for the user to chop the leaf
themselves in the case above, and as you say it's a bit odd to accept a
filename to indicate just a directory.

Cheers,
Olly



___
http://lists.gnu.org/mailman/listinfo/libtool


Re: autoreconf --help

2006-05-17 Thread Paul Eggert
Ralf Wildenhues <[EMAIL PROTECTED]> writes:

> OK to apply?

Yes, and thanks.

> Do you think we need to announce this change in NEWS?

Not really.


___
http://lists.gnu.org/mailman/listinfo/libtool


Re: autoreconf --help

2006-05-17 Thread Ralf Wildenhues
Hi Paul,

* Paul Eggert wrote on Thu, May 18, 2006 at 08:45:37AM CEST:
> Ralf Wildenhues <[EMAIL PROTECTED]> writes:
> 
> > OK to apply?
> 
> Yes, and thanks.

Done, thanks!

Cheers,
Ralf


___
http://lists.gnu.org/mailman/listinfo/libtool