Re: [SOLVED] RE: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-10-16 Thread Yaakov (Cygwin Ports)
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

Dave Korn wrote:
   Uh, no, not sure what you're referring to; got a reference?

http://cygwin.com/ml/cygwin/2008-04/msg00378.html

   Another thought occurs: does that work for cross-compilation?

You can't use /usr/bin/libtool for cross-compilation (it is coded for
the i686-pc-cygwin toolchain), but the above OBJDUMP patch uses
AC_CHECK_TOOL, so it should be fine for configure-generated libtools.

   This would only apply to w32api files, yes?

Yes, because lib/w32api is the only directory in the standard linker
path that isn't standard to other systems.

   Well that certainly is a problem with lib-link.m4.  Perhaps libtool should
 mark sys_lib_search_path_spec read-only?  Or would that just cause a failure
 later down the line?

I would think the latter.  I'm testing the attached patch against 0.17.

   Ok, now I've got one for you :-)  Got any idea why libtool isn't including
 the typeinfo from my shared libstdc++ when it generates the import library?
 (If you do have any insight into this area, we should probably start a
 separate thread.)

Not without a .cygport and patches, together with some more details. :-)


Yaakov
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEUEAREIAAYFAkj3CkcACgkQpiWmPGlmQSOXuwCcD0vQxqpPviG9hec9kIDqJA2f
IUQAl02HUn7oJj5LziVueql0kysd73w=
=lpJm
-END PGP SIGNATURE-
--- origsrc/gettext-0.17/gettext-tools/misc/autopoint.in	2007-11-06 20:53:58.0 -0600
+++ src/gettext-0.17/gettext-tools/misc/autopoint.in	2008-10-12 23:14:20.306696700 -0500
@@ -294,6 +294,7 @@
   0.15 | \
   0.16 | 0.16.1 | \
   0.17 )
+ver=$version
 ;;
   *)
 func_fatal_error The AM_GNU_GETTEXT_VERSION declaration in your $configure_in\

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/

RE: [SOLVED] RE: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-10-13 Thread Dave Korn
Yaakov (Cygwin Ports) wrote on 13 October 2008 04:52:

 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA256
 
 Dave Korn wrote:
   Yep, you've got it.  The problem is that OBJDUMP is not set to
 anything, and so the regexes all fail pretty hard.  And the reason that
 OBJDUMP is not set to anything is due to this very common idiom in GNU
 projects that exercise recursive makes:
 
 Actually, I hate to burst your bubble, but I think that this is not the
 reason.  Remember that I fixed the missing OBJDUMP defines, and Chuck
 included those patches in 2.2.2-2 and pushed them upstream.  

  Uh, no, not sure what you're referring to; got a reference?  Hmm, I see an
OBJDUMP=objdump definition near the top of usr/bin/libtool.  I /thought/ I'd
been using uptodate libtool to build gcc packages (I do that on my home PC and
I'm at work now so can't check), but I guess I can infer that I must not have
been after all; I'm absolutely certain the only problem I had was no
definition of objdump (the symptoms are immediately distinguishable when you
see the output running under bash -x.)

  Another thought occurs: does that work for cross-compilation?

 /usr/lib /lib/w32api /lib /usr/local/lib.  However, since
 AM_GNU_GETTEXT (or AM_ICONV) is invariably called *after*
 AC_PROG_LIBTOOL/LT_INIT, the correct value is clobbered, and suddenly
 libtool can't find a library that the linker can.

  This would only apply to w32api files, yes?

 Thoughts?

  Well that certainly is a problem with lib-link.m4.  Perhaps libtool should
mark sys_lib_search_path_spec read-only?  Or would that just cause a failure
later down the line?

  Ok, now I've got one for you :-)  Got any idea why libtool isn't including
the typeinfo from my shared libstdc++ when it generates the import library?
(If you do have any insight into this area, we should probably start a
separate thread.)

cheers,
  DaveK
-- 
Can't think of a witty .sigline today


--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: [SOLVED] RE: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-10-12 Thread Yaakov (Cygwin Ports)
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

Dave Korn wrote:
   Yep, you've got it.  The problem is that OBJDUMP is not set to anything, and
 so the regexes all fail pretty hard.  And the reason that OBJDUMP is not set
 to anything is due to this very common idiom in GNU projects that exercise
 recursive makes:

Actually, I hate to burst your bubble, but I think that this is not the
reason.  Remember that I fixed the missing OBJDUMP defines, and Chuck
included those patches in 2.2.2-2 and pushed them upstream.  AFAICS, the
problem is, once again, gettext.

Old versions of lib-link.m4 (pre-0.12) define sys_lib_search_path_spec
from config.rpath output, and for Cygwin sets it to /lib /usr/lib
/usr/local/lib. (Which also happens to be the default value in libtool,
and was a red herring causing me to look into libtool itself as the
problem instead of something else.)  But libtool-2.2 uses that variable
to know where to look for libraries by default, and sets it on Cygwin to
/usr/lib /lib/w32api /lib /usr/local/lib.  However, since
AM_GNU_GETTEXT (or AM_ICONV) is invariably called *after*
AC_PROG_LIBTOOL/LT_INIT, the correct value is clobbered, and suddenly
libtool can't find a library that the linker can.

This explains why:
1) this happened only sporadically (not every package uses
AM_GNU_GETTEXT or AM_ICONV);
2) there was a difference in behaviour between libtool generated by
config.lt (with LT_OUTPUT) and the libtool generated by config.status at
the end of configure (only the latter was poisoned).

Now, I mentioned before that there were other such conflicts with this
macro; they were fixed in gettext, but only before 0.17.  Since
autopoint will pull in the exact version of the macros specified in
AM_GNU_GETTEXT_VERSION, not only must the gettext package be updated to
0.17, but packages need to be forced to use the newest version as well.

AFAICS the possible solutions are:
1) fix each package's call to AM_GNU_GETTEXT_VERSION to 0.17;
2) change autopoint to treat the value as a minimum instead of an absolute.

If the latter is possible, it would make things a lot easier than
patching configure.ac every single time (although perhaps I could
automate that with cygport).

Thoughts?


Yaakov
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEAREIAAYFAkjyxfoACgkQpiWmPGlmQSNeVQCfWth0mN1F5PUrer0I3K8kEKgq
qzAAoLjLAXhjfrxSqGDA4UDgyRkYGtQ6
=HKnN
-END PGP SIGNATURE-

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



[SOLVED] RE: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-09-25 Thread Dave Korn
Charles Wilson wrote on 15 April 2008 00:07:

 Yaakov (Cygwin Ports) wrote:
 Charles Wilson wrote:
 Changes sine libtool2.2-2.2.2-1
 =
 o changed base package name from 'libtool2.2' to 'libtool'
 o Added patches from Yaakov Selkowitz
   http://cygwin.com/ml/cygwin/2008-04/msg00378.html
 
 Do you know why I'm getting this:
 
 *** Warning: linker path does not have real file for library -lwinmm.

  g I do!

 I think that libtool hasn't been told that LDFLAGS should include
 -L/usr/lib/w32api.  

  Nope, because as we know that's always in the default search path.  It's
nowt t'do wi' t'PATH setting.

 *** I have the capability to make that library automatically link in when
 *** you link to this library.  But I can only do this if you have a
 *** shared version of the library, which you do not appear to have
 *** because I did check the linker path looking for a file starting
 *** with libwinmm but no candidates were found. (...for file magic test)
 
 Is it the /usr/lib/w32api location that libtool is having a hard time
 with, the .a extension, or something else?
 
 No, it's not a file type or identification problem; libtool can't find
 libwinmm.a at all.

  Yep, that's correct.  You ever-so-nearly had it here:

 FWIW:
 
 $ ./func_win32_libid.sh /usr/lib/w32api/libwinmm.a
 x86 archive import
 
 So that's ok.  (func_win32_libid.sh is just func_win32_libid() from
 libtool-2.2.2-2, with the OBJDUMP/NM/etc variables set.

  Spot the missing gap in the logic?

1.  This works.
2.  This is just func_win32_libid with some variables set.
3.  Therefore func_win32_libid works.

  Given that we know the conclusion is wrong, there must be a problem with the
antecedents.  #1 can't be wrong, we saw it with our own eyes.  So it must be
#2.

  Yep, you've got it.  The problem is that OBJDUMP is not set to anything, and
so the regexes all fail pretty hard.  And the reason that OBJDUMP is not set
to anything is due to this very common idiom in GNU projects that exercise
recursive makes:

# Work around what appears to be a GNU make bug handling MAKEFLAGS
# values defined in terms of make variables, as is the case for CC and
# friends when we are called from the top level Makefile.
AM_MAKEFLAGS = \
AR_FLAGS=$(AR_FLAGS) \
CC_FOR_BUILD=$(CC_FOR_BUILD) \
CFLAGS=$(CFLAGS) \
CXXFLAGS=$(CXXFLAGS) \
CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD) \
CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET) \
INSTALL=$(INSTALL) \
  ... snip ... actual list may vary per instance ...
prefix=$(prefix) \
includedir=$(includedir) \
AR=$(AR) \
AS=$(AS) \
CC=$(CC) \
CXX=$(CXX) \
LD=$(LD) \
LIBCFLAGS=$(LIBCFLAGS) \
NM=$(NM) \
PICFLAG=$(PICFLAG) \
RANLIB=$(RANLIB) \
DESTDIR=$(DESTDIR)


  Notice anything missing?  :-)  The answer is simple enough: add a couple of
lines that read:

OBJDUMP=$(OBJDUMP) \
OBJDUMP_FOR_TARGET=$(OBJDUMP_FOR_TARGET) \

somewhere in there (I put them after NM myself but it's of no functional
relevance) in the Makefile.am, regenerate the Makefile.in, and you're away.

  Chuck, it's not a libtool bug, but there might be something worth doing
upstream: since this happens a lot in GNU software, it might be a courtesy to
replace the reference to $OBJDUMP in func_win32_libid with something else
roughly along the lines of ${OBJDUMP:-echo 'Objdump not defined'; false}
(which won't work as-is owing to the output redirections in place, but YKWIM:
something that emits an error and fails/bails).


cheers,
  DaveK
-- 
Can't think of a witty .sigline today


--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-05-05 Thread Yaakov (Cygwin Ports)

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

Yaakov (Cygwin Ports) wrote:
| This package had AM_GNU_GETTEXT in configure.ac without any arguments
| nor AM_GNU_GETTEXT_VERSION.  autoreconf decided not using Gettext[1]
| and didn't install config.rpath[2].  But AC_LIB_RPATH (from the included
| gettext-0.11.2 lib-link.m4) was called; while nothing happened due to
| the missing config.rpath, it then defined libext=$acl_cv_libext, which
| had never been defined.  This empty $libext clobbered that of libtool.

This is worse than I originally thought.  AM_ICONV also calls AC_LIB_RPATH.

I got yet another broken libtool, this time with a unsupported hardcode
properties error.  Here's why: a different package shipped with a
0-byte config.rpath, which obviously didn't do much.  But the real
problem is with AC_LIB_RPATH itself.  In 0.15, it defines the following:

wl=$acl_cv_wl
libext=$acl_cv_libext
shlibext=$acl_cv_shlibext
hardcode_libdir_flag_spec=$acl_cv_hardcode_libdir_flag_spec
hardcode_libdir_separator=$acl_cv_hardcode_libdir_separator
hardcode_direct=$acl_cv_hardcode_direct
hardcode_minus_L=$acl_cv_hardcode_minus_L

Except for shlibext, all of the above variables can conflict with
variables by the same name in libtool.  If the config.rpath call doesn't
succeed (usually because it's nonexistant), all of these variables are
blank, which then clobbers the variables previously set by libtool.

While each of these cases should be fixed within the package, I think
the only *safe* answer is that:
1) libtool MUST protect its variables;
2) AC_LIB_RPATH should check that there was actually a result from
config.rpath before proceeding.

(And I would still patch shrext=dll.a as you suggested.)

One thing I don't understand: if you call LT_OUTPUT (which generates an
unclobbered libtool), isn't 'config.status libtool' supposed to use
config.lt to generate libtool, which should avoid these problems?

| [2] lib-link.m4 0.15 adds a line telling automake = 1.10 that
| config.rpath is required, but this package was using 1.9.  In any case,
| this macro was from 0.11.2, which preceded automake-1.10.

Lots of good that did me here, as the file was present but blank. :-(


Yaakov

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEAREIAAYFAkgf6JcACgkQpiWmPGlmQSMolwCgiEIu5ZMjD1dulA+6uix60pTm
2j0An3ogNN7lFh0Sw8rvtmwJFrOtWO+I
=DHry
-END PGP SIGNATURE-

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-04-24 Thread Yaakov (Cygwin Ports)

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

Chuck,

Here's yet another interesting case with libtool-2.2:

/bin/sh ../../libtool --tag=CXX --mode=link g++  -O2 -pipe-o
libfoo-1.2.la -rpath /usr/lib -no-undefined sources.lo
libtool: link: rm -fr  .libs/libfoo-1.2.dll.a .libs/libfoo-1.2.la
.libs/libfoo-1.2.lai
libtool: link: g++ -shared -nostdlib   .libs/sources.o
- -L/usr/lib/gcc/i686-pc-cygwin/3.4.4
- -L/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../.. -lstdc++ -lgcc -lcygwin
- -luser32 -lkernel32 -ladvapi32 -lshell32 -lgcc -o
.libs/cygfoo-1.2-0.dll -Wl,--enable-auto-image-base -Xlinker
- --out-implib -Xlinker .libs/libfoo-1.2.dll.a
Creating library file: .libs/libfoo-1.2.dll.a
libtool: link: ar cru .libs/libfoo-1.2.  sources.o
libtool: link: ranlib .libs/libfoo-1.2.
libtool: link: ( cd .libs  rm -f libfoo-1.2.la  ln -s
../libfoo-1.2.la libfoo-1.2.la )

In this specific case, the static library is missing the .a extension
(Windows ignores the final dot, as usual).  Here's why:

This package had AM_GNU_GETTEXT in configure.ac without any arguments
nor AM_GNU_GETTEXT_VERSION.  autoreconf decided not using Gettext[1]
and didn't install config.rpath[2].  But AC_LIB_RPATH (from the included
gettext-0.11.2 lib-link.m4) was called; while nothing happened due to
the missing config.rpath, it then defined libext=$acl_cv_libext, which
had never been defined.  This empty $libext clobbered that of libtool.

In this case, the solution was simply to call AM_GNU_GETTEXT_VERSION.
But this is the second case where libtool's had its variables clobbered
by other parts of configure.  Could something be done to make sure that
that can't happen?


Yaakov


[1] autoreconf decided not using Gettext because it looks solely for
AM_GNU_GETTEXT_VERSION to make that determination.  (It only looks for
AM_GNU_GETTEXT to see if one of these two is used without the other, and
emits a warning if so.)

[2] lib-link.m4 0.15 adds a line telling automake = 1.10 that
config.rpath is required, but this package was using 1.9.  In any case,
this macro was from 0.11.2, which preceded automake-1.10.

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEAREIAAYFAkgRC2sACgkQpiWmPGlmQSPDkwCfdkU3rN1Ul1YYm6yhebClVyDg
Eu0AoO+O803peOIDxLD4RFEKNIWRHvyi
=mGuQ
-END PGP SIGNATURE-

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-04-24 Thread cygwin

Charles Wilson wrote:

Yaakov (Cygwin Ports) wrote:

./.libs/lt-foo.c:263: warning: string length `4368' is greater than the
length `4095' ISO C99 compilers are required to support


This one can be fixed by splitting the string into two pieces. I'm 
working on a patch for that.



./.libs/lt-foo.c: In function `main':
./.libs/lt-foo.c:288: warning: implicit declaration of function 
`_setmode'


This one is already fixed in current git.


./.libs/lt-foo.c: In function `chase_symlinks':
./.libs/lt-foo.c:577: warning: implicit declaration of function 
`realpath'

./.libs/lt-foo.c:577: warning: assignment makes pointer from integer
without a cast


These two are the same issue...
(1) realpath() is invoked in a section of code that is #ifdef __CYGWIN__
(2) the wrapper source code unconditionally #includes stdlib.h
(3) cygwin's stdlib.h declares realpath.

...but it does so inside a #ifndef __STRICT_ANSI__ block. And -std=c99 
turns on __STRICT_ANSI__, while -std=gnu99 does not.


Posix says that realpath() will be declared if #include stdlib.h
Ansi says nothing about realpath(), so STRICT_ANSI requires that 
realpath is NOT declared when #include stdlib.h


I guess the cwrapper should add a section like this, for __CYGWIN__

#if defined __CYGWIN__
# if defined __STRICT_ANSI__
char *realpath (const char *, char *);
# endif
#endif

NOTE: usually you *want* the cwrapper to be compiled with the same 
CFLAGS that your target application needs.  OTOH, if you explicitly set 
your compatibility flags (-c99, _POSIX_C_SOURCE=200112L, -ansi, etc) 
too low it is possible something's going to break.


Or some pathological project could put '-Dprintf=exit' into CFLAGS.  You 
can't guard against everything.


But we ought to be compatible with c99.

--
Chuck


--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-04-24 Thread Charles Wilson

Yaakov (Cygwin Ports) wrote:

* libtool should catch if the lt-foo.c compile fails;


Yes. I haven't tracked this one down yet.


I think I have also found a separate case of breakage when the CXX tag
is enabled, in which case LTCC is mysteriously undefined.  The results:

./libtool: line 7737: -O2: command not found
strip: './foo.exe': No such file
./libtool: line 7748: $func_ltwrapper_scriptname_result: ambiguous redirect


Well, that's not enough information at all. The c++ tests all pass, so 
I'm going to need a testcase or at least the actual project you're 
building that gives this error.


--
Chuck

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-04-24 Thread Charles Wilson

Yaakov (Cygwin Ports) wrote:

Here's yet another interesting case with libtool-2.2:


interesting, as in may you live in interesting times?


/bin/sh ../../libtool --tag=CXX --mode=link g++  -O2 -pipe-o
libfoo-1.2.la -rpath /usr/lib -no-undefined sources.lo
libtool: link: rm -fr  .libs/libfoo-1.2.dll.a .libs/libfoo-1.2.la
.libs/libfoo-1.2.lai
libtool: link: g++ -shared -nostdlib   .libs/sources.o
-L/usr/lib/gcc/i686-pc-cygwin/3.4.4
-L/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../.. -lstdc++ -lgcc -lcygwin
-luser32 -lkernel32 -ladvapi32 -lshell32 -lgcc -o
.libs/cygfoo-1.2-0.dll -Wl,--enable-auto-image-base -Xlinker
--out-implib -Xlinker .libs/libfoo-1.2.dll.a
Creating library file: .libs/libfoo-1.2.dll.a
libtool: link: ar cru .libs/libfoo-1.2.  sources.o
libtool: link: ranlib .libs/libfoo-1.2.
libtool: link: ( cd .libs  rm -f libfoo-1.2.la  ln -s
../libfoo-1.2.la libfoo-1.2.la )

In this specific case, the static library is missing the .a extension
(Windows ignores the final dot, as usual).  Here's why:

This package had AM_GNU_GETTEXT in configure.ac without any arguments
nor AM_GNU_GETTEXT_VERSION.  autoreconf decided not using Gettext[1]


 [1] autoreconf decided not using Gettext because it looks solely for
 AM_GNU_GETTEXT_VERSION to make that determination.  (It only looks for
 AM_GNU_GETTEXT to see if one of these two is used without the other,
 and emits a warning if so.)

Looks like a gettext bug to me. Might be fixed in 0.16+, but please 
report upstream.


and didn't install config.rpath[2]. 


 [2] lib-link.m4 0.15 adds a line telling automake = 1.10 that
 config.rpath is required, but this package was using 1.9.  In
 any case, this macro was from 0.11.2, which preceded automake-1.10.

That's bizarre.  Also, I believe that config.rpath may have a bug:

--- config.rpath2008-04-16 03:59:54.87500 -0400
+++ config.rpath2008-04-16 04:00:04.546875000 -0400
@@ -501,7 +501,7 @@
   bsdi[45]*)
 ;;
   cygwin* | mingw* | pw32*)
-shrext=.dll
+shrext=.dll.a
 ;;
   darwin* | rhapsody*)
 shrext=.dylib

because the result of config.rpath is used to probe /usr/lib, not 
/usr/bin...BUT shrext is a widely used variable, and is not namespaced. 
 No telling WHAT that change might break, which is why I haven't 
reported this as a bug.  But I did have to impose that patch in the 
alternatives cygport, because otherwise I was forced to link statically 
to libintl and libiconv.


Also, 'alternatives' is a wierd case -- I had to hack it to death since 
it's not actually a package of its own; it's really 'chkconfig'. So I 
decided not to draw any wide-ranging conclusions about config.rpath from 
any issues involving the alternative package.



But AC_LIB_RPATH (from the included
gettext-0.11.2 lib-link.m4) was called; while nothing happened due to
the missing config.rpath, it then defined libext=$acl_cv_libext, which
had never been defined.  This empty $libext clobbered that of libtool.

In this case, the solution was simply to call AM_GNU_GETTEXT_VERSION.
But this is the second case where libtool's had its variables clobbered
by other parts of configure.  Could something be done to make sure that
that can't happen?


You don't want much, do you?

This is a apparently not a libtool-2.2 issue; if gettext is broken or 
invoked incorrectly, AND shares some variables in the same namespace as 
libtool, AND clobbers them...the only thing that can be done there is to 
ensure that libtool never ever uses any variables outside the lt_ namespace.


There's been a lot of work done to try to make libtool namespace clean 
and insensitive to variables outside lt_ -- but there's still quite a 
bit to be done.  One of the problems is the .la file format is fixed, 
and the variables there are *not* in the lt_ namespace; there's no help 
for that, except a format change.


--
Chuck

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-04-24 Thread Yaakov (Cygwin Ports)

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

Charles Wilson wrote:
| Well, that's not enough information at all. The c++ tests all pass, so
| I'm going to need a testcase or at least the actual project you're
| building that gives this error.

.cygport attached, as well as the diff between the libtools generated by
config.lt and config.status.  Let me know if you need more info.


Yaakov
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEAREIAAYFAkgRVN8ACgkQpiWmPGlmQSMq/QCfRLGUBl4McJLhETHVo1tjIAxp
weMAoJ36OFitVIgZP2Bd2Qc8I3qAKNWS
=64qn
-END PGP SIGNATURE-
--- libtool-1   2008-04-24 22:42:28.046875000 -0500
+++ libtool-2   2008-04-24 22:41:52.609375000 -0500
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 # libtool - Provide generalized library-building support services.
-# Generated automatically by config.lt (xapian-core) 1.0.6
+# Generated automatically by config.status (xapian-core) 1.0.6
 # Libtool was configured on host YAAKOV03:
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 #
@@ -34,7 +34,7 @@
 
 
 # The names of the tagged configurations supported by this script.
-available_tags=
+available_tags=CXX 
 
 # ### BEGIN LIBTOOL CONFIG
 
@@ -129,7 +129,7 @@
 old_postuninstall_cmds=
 
 # A C compiler.
-LTCC=gcc
+LTCC=
 
 # LTCC compiler flags.
 LTCFLAGS=-O2 -pipe 
@@ -391,6 +391,20 @@
 # How to hardcode a shared library path into an executable.
 hardcode_action=immediate
 
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=
+postdep_objects=
+predeps=
+postdeps=
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=
+
 # ### END LIBTOOL CONFIG
 
 # Generated from ltmain.m4sh.
@@ -8276,3 +8290,158 @@
 # End:
 # vi:sw=2
 
+
+# ### BEGIN LIBTOOL TAG CONFIG: CXX
+
+# The linker used to build libraries.
+LD=/usr/i686-pc-cygwin/bin/ld.exe
+
+# Commands used to build an old-style archive.
+old_archive_cmds=\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib
+
+# A language specific compiler.
+CC=g++
+
+# Is the compiler the GNU compiler?
+with_gcc=yes
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag= -fno-builtin
+
+# How to pass a linker flag through the compiler.
+wl=-Wl,
+
+# Additional compiler flags for building library objects.
+pic_flag= -DDLL_EXPORT -DPIC
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=-static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=yes
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=no
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=yes
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=\${wl}--export-dynamic
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=\${wl}--whole-archive\$convenience 
\${wl}--no-whole-archive
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=no
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=
+
+# Commands used to build a shared archive.
+archive_cmds=\$CC -shared -nostdlib \$predep_objects \$libobjs \$deplibs 
\$postdep_objects \$compiler_flags -o \$output_objdir/\$soname 
\${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib
+archive_expsym_cmds=if test \\\x\\\`\$SED 1q \$export_symbols\\\`\\\ = 
xEXPORTS; then
+   cp \$export_symbols \$output_objdir/\$soname.def;
+  else
+   echo EXPORTS  \$output_objdir/\$soname.def;
+   cat \$export_symbols  \$output_objdir/\$soname.def;
+  fi~
+  \$CC -shared -nostdlib \$output_objdir/\$soname.def \$predep_objects 
\$libobjs \$deplibs \$postdep_objects \$compiler_flags -o 
\$output_objdir/\$soname \${wl}--enable-auto-image-base -Xlinker --out-implib 
-Xlinker \$lib
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=
+module_expsym_cmds=
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=yes
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=unsupported
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=
+
+# Flag to hardcode $libdir into a binary during linking.
+# This must work even if $libdir does not exist
+hardcode_libdir_flag_spec=-L\$libdir
+
+# If ld is used when linking, flag to hardcode $libdir into a binary
+# during linking.  This must work even if $libdir does not exist.
+hardcode_libdir_flag_spec_ld=
+
+# Whether we need a single -rpath flag with a separated argument.

Re: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-04-24 Thread Yaakov (Cygwin Ports)

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

Charles Wilson wrote:
| Looks like a gettext bug to me. Might be fixed in 0.16+, but please
| report upstream.

I'll admit I'm not that fluent in gettext internals.  Obviously both
macros are supposed to be present; is having only one just old
behaviour, or simply broken?

| That's bizarre.  Also, I believe that config.rpath may have a bug:
|
| -shrext=.dll
| +shrext=.dll.a
|
| because the result of config.rpath is used to probe /usr/lib, not
| /usr/bin...BUT shrext is a widely used variable, and is not namespaced.
|  No telling WHAT that change might break, which is why I haven't
| reported this as a bug.  But I did have to impose that patch in the
| alternatives cygport, because otherwise I was forced to link statically
| to libintl and libiconv.

Trust me, I've always found this extremely annoying.  The alternative
(no pun intended) is to use $(LTLIBINTL) instead of $(LIBINTL), but that
can require a lot of Makefile patching.  Fixing this would be a blessing.

AFAICS there shouldn't be any namespacing problems with shrext, because
config.rpath is run as a script, not sourced as a macro; the value is
exported as acl_cv_shlibext.  So I'd say, go for it.

| You don't want much, do you?

Of course I do. :-)

| This is a apparently not a libtool-2.2 issue; if gettext is broken or
| invoked incorrectly, AND shares some variables in the same namespace as
| libtool, AND clobbers them...the only thing that can be done there is to
| ensure that libtool never ever uses any variables outside the lt_
| namespace.
|
| There's been a lot of work done to try to make libtool namespace clean
| and insensitive to variables outside lt_ -- but there's still quite a
| bit to be done.  One of the problems is the .la file format is fixed,
| and the variables there are *not* in the lt_ namespace; there's no help
| for that, except a format change.

OK, but libext is not exported to the .la file.  Being that libext keeps
getting clobbered in different ways, I would look into namespacing it if
at all possible.


Yaakov
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEAREIAAYFAkgRXFwACgkQpiWmPGlmQSPCWwCfXDH5Fj5vN1h4dQU9X37O+Emr
YREAn3Zk+B7z+m9odHCxf7LWeT08UyyJ
=i2LD
-END PGP SIGNATURE-

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-04-23 Thread Yaakov (Cygwin Ports)

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

Charles Wilson wrote:
| That was fixed in libtool CVS after 2.2.2 was released:
| http://lists.gnu.org/archive/html/libtool-patches/2008-04/msg00019.html
| but this release is 'stock' libtool-2.2.2 with only your patches.

I'm not sure what's triggering this, but *sometimes* I'm getting more
than that:

./.libs/lt-foo.c:263: warning: string length `4368' is greater than the
length `4095' ISO C99 compilers are required to support
./.libs/lt-foo.c: In function `main':
./.libs/lt-foo.c:288: warning: implicit declaration of function `_setmode'
./.libs/lt-foo.c: In function `chase_symlinks':
./.libs/lt-foo.c:577: warning: implicit declaration of function `realpath'
./.libs/lt-foo.c:577: warning: assignment makes pointer from integer
without a cast
strip: './foo.exe': No such file

When this does happen, the libtool launchers 'foo' and 'foo.exe' are NOT
created in the build directory, but the real executable .libs/foo.exe is
built.


Yaakov
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEAREIAAYFAkgPsroACgkQpiWmPGlmQSOrRACdGr3iBUSF+KVg813/0M78viI2
2GYAoKVkVJnkhy641kx6uVQxYGvaO7VM
=OnNU
-END PGP SIGNATURE-

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-04-23 Thread Charles Wilson

Yaakov (Cygwin Ports) wrote:

I'm not sure what's triggering this, but *sometimes* I'm getting more
than that:

./.libs/lt-foo.c:263: warning: string length `4368' is greater than the
length `4095' ISO C99 compilers are required to support
./.libs/lt-foo.c: In function `main':
./.libs/lt-foo.c:288: warning: implicit declaration of function `_setmode'
./.libs/lt-foo.c: In function `chase_symlinks':
./.libs/lt-foo.c:577: warning: implicit declaration of function `realpath'
./.libs/lt-foo.c:577: warning: assignment makes pointer from integer
without a cast


What's puzzling is there is no *error* message from the compiler -- just 
warnings.



strip: './foo.exe': No such file


But obviously something went wrong.

I wonder of the string length warning is from the pre-processor, and 
then the compiler itself dies (dumps core?) without issuing an error 
message.


Does the problem -- missing wrappers -- *always* occur paired with the 
string length warning?  I can easily see the following;

  (1) the size of the wrapper script is very close to 4K
  (2) there are several embedded paths
  (3) sometimes, those paths are long enough to push the total script
  length over 4K -- and gcc-3.4.x is rude enough to fail silently.
If so, I could easily split the the script generation into two separate 
strings...


--
Chuck

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-04-23 Thread Yaakov (Cygwin Ports)

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

Charles Wilson wrote:
| What's puzzling is there is no *error* message from the compiler -- just
| warnings.
|
| strip: './foo.exe': No such file
|
| But obviously something went wrong.
|
| I wonder of the string length warning is from the pre-processor, and
| then the compiler itself dies (dumps core?) without issuing an error
| message.
|
| Does the problem -- missing wrappers -- *always* occur paired with the
| string length warning?  I can easily see the following;
|   (1) the size of the wrapper script is very close to 4K
|   (2) there are several embedded paths
|   (3) sometimes, those paths are long enough to push the total script
|   length over 4K -- and gcc-3.4.x is rude enough to fail silently.
| If so, I could easily split the the script generation into two separate
| strings...

OK, I figured it out: libtool-2.2 adds CFLAGS to LTCFLAGS, which it uses
to compile the lt-foo.c files.  Many configure scripts add to CFLAGS,
but usually after all the standard initializations.  With 1.5, or with
2.2 and LT_OUTPUT, libtool would be generated before CFLAGS is altered
beyond the default (-O2 -pipe with cygport).  But with 2.2 without
LT_OUTPUT, the package CFLAGS are added to LTCFLAGS, sometimes with
disastrous consequences.

The broken case was being compiled with the following CFLAGS:

CFLAGS = ... -Wall -Werror -pedantic -std=c99 -D_POSIX_C_SOURCE=200112L

* -Wall produces the _setmode warning;
* -std=c99 produces the realpath and ptr2int warnings;
* -pedantic produces the string length warning;
* -Werror makes sure that the build fails, but libtool doesn't catch it.

This is definitely a regression from 1.5, the problems being:

* libtool should generate lt-foo.c files without warnings, or at least
compile it with sane CFLAGS that work no matter what.
* libtool should catch if the lt-foo.c compile fails;

I think I have also found a separate case of breakage when the CXX tag
is enabled, in which case LTCC is mysteriously undefined.  The results:

./libtool: line 7737: -O2: command not found
strip: './foo.exe': No such file
./libtool: line 7748: $func_ltwrapper_scriptname_result: ambiguous redirect

Hopefully this gives you enough to figure out where these bugs really are.


Yaakov
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEAREIAAYFAkgQEz4ACgkQpiWmPGlmQSMlCACcCUE3QzUDDTl1cgpeRQOIPhMf
N4gAoNCWgSfvzFeCu7YqtqqYJROcy46L
=cdxV
-END PGP SIGNATURE-

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-04-15 Thread Yaakov (Cygwin Ports)

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

Charles Wilson wrote:
| Changes sine libtool2.2-2.2.2-1
| =

I'm also seeing these warnings (where 'foo' is the executable being
linked against a yet-uninstalled libtool library):

./.libs/lt-foo.c: In function `main':
./.libs/lt-foo.c:288: warning: implicit declaration of function `_setmode'
./.libs/lt-foo.c:288: warning: nested extern declaration of `_setmode'


Yaakov
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.5 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFIBEWspiWmPGlmQSMRCICoAKDfm4XnxQYfrtX5K33uGXe7/wRZWgCcCQeJ
uDgAASd1HHxPHP10WVa5K3c=
=OTul
-END PGP SIGNATURE-

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-04-15 Thread Charles Wilson

Yaakov (Cygwin Ports) wrote:

Charles Wilson wrote:
| I think that libtool hasn't been told that LDFLAGS should include
| -L/usr/lib/w32api.  I think this is something that should be passed on
| the invocation line in your makefile -- maybe AM_LDFLAGS needs to be set?

As I'm sure you're aware, /usr/lib/w32api is in ld's default library
path, so -L/usr/lib/w32api should never be necessary.


unless -nostdlib, right?  Which libtool uses. Besides, I don't know of a 
way to get ld to print its search path (which is why Brian grep'ed the 
binary) like gcc's -print-search-dirs. So libtool has no mechanism to 
obtain this info -- other than hardcoded variables like 
sys_lib_search_path_spec.


And libtool needs this info, obviously, because it does this 
'pre-screening' stuff on dependencies -- is it a static archive, is it 
this, is it that, etc -- so it has to know where to look.


But you're right: it IS hardcoded, so what ld or gcc thinks is immaterial.

 Nor was it

required with libtool-1.5; this is a regression, but I'm not sure what
the cause is.

In /usr/bin/libtool, I see the following:

sys_lib_search_path_spec=/usr/lib /lib/w32api /lib /usr/local/lib

which is hard-coded for cygwin in _LT_SYS_DYNAMIC_LINKER (prev.
AC_LIBTOOL_SYS_DYNAMIC_LINKER).  But with the libtool script in the
package I'm trying to build, I find:

sys_lib_search_path_spec=/lib /usr/lib /usr/local/lib


this is the default setting of sys_lib_search_path_spec, established at 
the beginning of _LT_SYS_DYNAMIC_LINKER.  However, as you point out, 
sys_lib_search_path_spec is a tagged variable...


I wonder if there is some interaction here between tag support/order of 
invocation of the tag declarators -- LT_LANG(lang) or AC_PROG_lang, 
compared to when LT_OUTPUT is called.


 Both of the following examples are therefore valid ways of adding
 C++ language support to Libtool.

  LT_INIT
  LT_LANG([C++])

  LT_INIT
  AC_PROG_CXX


This didn't happen in another package, so I dug a bit further.  If I run
./config.lt in this particular package, then the correct
$sys_lib_search_path_spec appears, but when I run './config.status
libtool', then I get the latter.


Well, ordinarily you don't GET a config.lt file -- that is produced only 
when you use LT_OUTPUT.  The bug is:


 Also, when `LT_OUTPUT' is used, for backwards compatibility with
 Automake regeneration rules, `config.status' will call `config.lt'
 to regenerate `libtool', rather than generating the file itself.

So, 'config.status libtool' ought to delegate to config.lt in your case, 
which should, in a sane world, generate the same libtool script as 
calling config.lt directly.


Either your config.status is NOT delegating to config.lt, or...the 
world's gone MAD. (Or maybe config.status is mucking up the environment 
before calling config.lt...)



Both packages use CC and CXX tags, and but the one that works correctly
had warnings during autoreconf:

configure.ac:169: warning: LT_OUTPUT was called before LT_LANG
/usr/share/aclocal/libtool.m4:775: LT_LANG is expanded from...
configure.ac:169: the top level
/usr/share/aclocal/libtool.m4:5282: _LT_PROG_CXX is expanded from...
/usr/share/aclocal/libtool.m4:5305: _LT_LANG_CXX_CONFIG is expanded from...
/usr/share/aclocal/libtool.m4:792: _LT_LANG is expanded from...
autoreconf-2.61: configure.ac: tracing
configure.ac:169: warning: LT_OUTPUT was called before LT_LANG
aclocal.m4:790: LT_LANG is expanded from...
configure.ac:169: the top level

where the package with the buggy libtool had no such warnings.


1) do both packages use LT_OUTPUT
2) does either package explicitly call AC_PROG_CXX/LT_LANG([C++])
3) if so, when? before LT_INIT, before LT_OUTPUT, or after?

Somehow, the buggy version is NOT initializing sys_lib_search_path_spec 
to the proper value for this arch+tag; instead, it's using the default 
value for all arch and all tags.



Any ideas?


 -- Macro: LT_OUTPUT
 ...  You
 can add `LT_OUTPUT' to your `configure.ac' any time after
 `LT_INIT' and any `LT_LANG' calls; that done, `libtool' will be
 created by a specially generated `config.lt' file, and available
 for use in later tests.

Make sure LT_LANG calls (*and* AC_PROG_lang ?) appear after LT_INIT but 
before LT_OUTPUT ?


--
Chuck

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-04-15 Thread Charles Wilson

Yaakov (Cygwin Ports) wrote:

Charles Wilson wrote:
| Changes sine libtool2.2-2.2.2-1
| =

I'm also seeing these warnings (where 'foo' is the executable being
linked against a yet-uninstalled libtool library):

./.libs/lt-foo.c: In function `main':
./.libs/lt-foo.c:288: warning: implicit declaration of function `_setmode'
./.libs/lt-foo.c:288: warning: nested extern declaration of `_setmode'


That was fixed in libtool CVS after 2.2.2 was released:
http://lists.gnu.org/archive/html/libtool-patches/2008-04/msg00019.html
but this release is 'stock' libtool-2.2.2 with only your patches.

--
Chuck

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-04-15 Thread Brian Dessent
Charles Wilson wrote:

 way to get ld to print its search path (which is why Brian grep'ed the
 binary) like gcc's -print-search-dirs. So libtool has no mechanism to

I grepped the default linker script which is a plain text file.  This
can be done programmatically by adding -Wl,-verbose to a test link which
prints the output of the linker script used.  Note that the linker
script used depends on the linker options, but I don't think libtool
supports relocatable links (-r) or anything exotic like that so it
shouldn't matter; and in any case all the stock PE linker scripts have
the same SEARCH_DIRs at the top.

Brian

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



[ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-04-14 Thread Charles Wilson

GNU libtool is a generic library support script. Libtool hides the
complexity of using shared libraries behind a consistent, portable
interface.

This update represents a name change from the previous 'libtool2.2' 
package, to the new 'libtool' package (the embedded version number '2.2' 
has been dropped).  This is a TEST release, and is only available by 
choosing the 'test' version from setup's chooser menu.


Normally, 'test' releases are not announced in this manner. However, 
this one replaces and obsoletes an existing, non-test package 
(libtool2.2), so the announcement is appropriate.


Both the (now obsolete) libtool2.2 package and the new libtool package 
(at least, the ones derived from libtool-2.2 source) provide a libltdl7 
subpackage, which is why that package is 'updated' and not 'new'.


Note that both libltdl3 (from the libtool-1.5.x series) and libltdl7 
(from this libtool-2.2.x series) can be installed at the same time, 
without conflict.


Changes sine libtool2.2-2.2.2-1
=
o changed base package name from 'libtool2.2' to 'libtool'
o Added patches from Yaakov Selkowitz
  http://cygwin.com/ml/cygwin/2008-04/msg00378.html

--
Chuck



To update your installation, click on the Install Cygwin now link on
the http://cygwin.com/ web page.  This downloads setup.exe to your
system.  Then, run setup and answer all of the questions.


*** CYGWIN-ANNOUNCE UNSUBSCRIBE INFO ***

If you want to unsubscribe from the cygwin-announce mailing list, look
at the List-Unsubscribe:  tag in the email header of this message.
Send email to the address specified there.  It will be in the format:


[EMAIL PROTECTED]

If you need more information on unsubscribing, start reading here:

http://sources.redhat.com/lists.html#unsubscribe-simple

Please read *all* of the information on unsubscribing that is available
starting at this URL.

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-04-14 Thread Yaakov (Cygwin Ports)

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

Charles Wilson wrote:
| Changes sine libtool2.2-2.2.2-1
| =
| o changed base package name from 'libtool2.2' to 'libtool'
| o Added patches from Yaakov Selkowitz
|   http://cygwin.com/ml/cygwin/2008-04/msg00378.html

Do you know why I'm getting this:

*** Warning: linker path does not have real file for library -lwinmm.
*** I have the capability to make that library automatically link in when
*** you link to this library.  But I can only do this if you have a
*** shared version of the library, which you do not appear to have
*** because I did check the linker path looking for a file starting
*** with libwinmm but no candidates were found. (...for file magic test)

Is it the /usr/lib/w32api location that libtool is having a hard time
with, the .a extension, or something else?


Yaakov

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.5 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFIA6pHpiWmPGlmQSMRCNhlAJ974LK/Ca4TnIYWNgq2bX2a9JVSZACcCMMf
5GycY0mZt9zNB/o3Us0DngU=
=Irvq
-END PGP SIGNATURE-

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-04-14 Thread Charles Wilson

Yaakov (Cygwin Ports) wrote:

Charles Wilson wrote:
| Changes sine libtool2.2-2.2.2-1
| =
| o changed base package name from 'libtool2.2' to 'libtool'
| o Added patches from Yaakov Selkowitz
|   http://cygwin.com/ml/cygwin/2008-04/msg00378.html

Do you know why I'm getting this:

*** Warning: linker path does not have real file for library -lwinmm.


I think that libtool hasn't been told that LDFLAGS should include 
-L/usr/lib/w32api.  I think this is something that should be passed on 
the invocation line in your makefile -- maybe AM_LDFLAGS needs to be set?



*** I have the capability to make that library automatically link in when
*** you link to this library.  But I can only do this if you have a
*** shared version of the library, which you do not appear to have
*** because I did check the linker path looking for a file starting
*** with libwinmm but no candidates were found. (...for file magic test)

Is it the /usr/lib/w32api location that libtool is having a hard time
with, the .a extension, or something else?


No, it's not a file type or identification problem; libtool can't find 
libwinmm.a at all.


FWIW:

$ ./func_win32_libid.sh /usr/lib/w32api/libwinmm.a
x86 archive import

So that's ok.  (func_win32_libid.sh is just func_win32_libid() from 
libtool-2.2.2-2, with the OBJDUMP/NM/etc variables set.


--
Chuck



#!/bin/bash

ECHO=echo
OBJDUMP=objdump
EGREP=grep -E
SED=sed
NM=nm

func_win32_libid ()
{
  $opt_debug
  win32_libid_type=unknown
  win32_fileres=`file -L $1 2/dev/null`
  case $win32_fileres in
  *ar\ archive\ import\ library*) # definitely import
win32_libid_type=x86 archive import
;;
  *ar\ archive*) # could be an import, or static
if eval $OBJDUMP -f $1 | $SED -e '10q' 2/dev/null |
   $EGREP 'file format pe-i386(.*architecture: i386)?' /dev/null ; then
  win32_nmres=`eval $NM -f posix -A $1 |
$SED -n -e '
1,100{
/ I /{
s,.*,import,
p
q
}
}'`
  case $win32_nmres in
  import*)  win32_libid_type=x86 archive import;;
  *)win32_libid_type=x86 archive static;;
  esac
fi
;;
  *DLL*)
win32_libid_type=x86 DLL
;;
  *executable*) # but shell scripts are executable too...
case $win32_fileres in
*MS\ Windows\ PE\ Intel*)
  win32_libid_type=x86 DLL
  ;;
esac
;;
  esac
  $ECHO $win32_libid_type
}

for fn in $@ ; do
  func_win32_libid $fn
done

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/

Re: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-04-14 Thread Yaakov (Cygwin Ports)

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

Charles Wilson wrote:
| I think that libtool hasn't been told that LDFLAGS should include
| -L/usr/lib/w32api.  I think this is something that should be passed on
| the invocation line in your makefile -- maybe AM_LDFLAGS needs to be set?

As I'm sure you're aware, /usr/lib/w32api is in ld's default library
path, so -L/usr/lib/w32api should never be necessary.  Nor was it
required with libtool-1.5; this is a regression, but I'm not sure what
the cause is.

In /usr/bin/libtool, I see the following:

sys_lib_search_path_spec=/usr/lib /lib/w32api /lib /usr/local/lib

which is hard-coded for cygwin in _LT_SYS_DYNAMIC_LINKER (prev.
AC_LIBTOOL_SYS_DYNAMIC_LINKER).  But with the libtool script in the
package I'm trying to build, I find:

sys_lib_search_path_spec=/lib /usr/lib /usr/local/lib

This didn't happen in another package, so I dug a bit further.  If I run
./config.lt in this particular package, then the correct
$sys_lib_search_path_spec appears, but when I run './config.status
libtool', then I get the latter.

Both packages use CC and CXX tags, and but the one that works correctly
had warnings during autoreconf:

configure.ac:169: warning: LT_OUTPUT was called before LT_LANG
/usr/share/aclocal/libtool.m4:775: LT_LANG is expanded from...
configure.ac:169: the top level
/usr/share/aclocal/libtool.m4:5282: _LT_PROG_CXX is expanded from...
/usr/share/aclocal/libtool.m4:5305: _LT_LANG_CXX_CONFIG is expanded from...
/usr/share/aclocal/libtool.m4:792: _LT_LANG is expanded from...
autoreconf-2.61: configure.ac: tracing
configure.ac:169: warning: LT_OUTPUT was called before LT_LANG
aclocal.m4:790: LT_LANG is expanded from...
configure.ac:169: the top level

where the package with the buggy libtool had no such warnings.

Any ideas?

| $ ./func_win32_libid.sh /usr/lib/w32api/libwinmm.a
| x86 archive import

That's good to know.


Yaakov

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.5 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFIBBTapiWmPGlmQSMRCKi1AKD3rbfJKHjtOEKwIaXCu4pajiMDKQCg7pG2
64NcQWMFaGoEb9t3V8dmFX4=
=79fv
-END PGP SIGNATURE-

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: [ANNOUNCEMENT] NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-04-14 Thread Brian Dessent
Charles Wilson wrote:

 I think that libtool hasn't been told that LDFLAGS should include
 -L/usr/lib/w32api.  I think this is something that should be passed on
 the invocation line in your makefile -- maybe AM_LDFLAGS needs to be set?

But the linker searches this location by default:

$ grep SEARCH_DIR /usr/lib/ldscripts/i386pe.x
SEARCH_DIR(/usr/i686-pc-cygwin/lib); SEARCH_DIR(/usr/local/lib);
SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/lib/w32api);

Shouldn't libtool be able to divine this information automatically? 
Likewise, having to specify -L/usr/lib/w32api anywhere in any *FLAGS
seems wrong since it's a system location, just like you'd never expect
to have to add -L/usr/lib to *FLAGS.

Brian

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



NEW: libtool-2.2.2-2 / Updated: libltdl7-2.2.2-2

2008-04-14 Thread Charles Wilson

GNU libtool is a generic library support script. Libtool hides the
complexity of using shared libraries behind a consistent, portable
interface.

This update represents a name change from the previous 'libtool2.2' 
package, to the new 'libtool' package (the embedded version number '2.2' 
has been dropped).  This is a TEST release, and is only available by 
choosing the 'test' version from setup's chooser menu.


Normally, 'test' releases are not announced in this manner. However, 
this one replaces and obsoletes an existing, non-test package 
(libtool2.2), so the announcement is appropriate.


Both the (now obsolete) libtool2.2 package and the new libtool package 
(at least, the ones derived from libtool-2.2 source) provide a libltdl7 
subpackage, which is why that package is 'updated' and not 'new'.


Note that both libltdl3 (from the libtool-1.5.x series) and libltdl7 
(from this libtool-2.2.x series) can be installed at the same time, 
without conflict.


Changes sine libtool2.2-2.2.2-1
=
o changed base package name from 'libtool2.2' to 'libtool'
o Added patches from Yaakov Selkowitz
  http://cygwin.com/ml/cygwin/2008-04/msg00378.html

--
Chuck



To update your installation, click on the Install Cygwin now link on
the http://cygwin.com/ web page.  This downloads setup.exe to your
system.  Then, run setup and answer all of the questions.


*** CYGWIN-ANNOUNCE UNSUBSCRIBE INFO ***

If you want to unsubscribe from the cygwin-announce mailing list, look
at the List-Unsubscribe:  tag in the email header of this message.
Send email to the address specified there.  It will be in the format:


[EMAIL PROTECTED]

If you need more information on unsubscribing, start reading here:

http://sources.redhat.com/lists.html#unsubscribe-simple

Please read *all* of the information on unsubscribing that is available
starting at this URL.


Re: Attn: cygport maintainer [was: Re: Libtool 2.2.2]

2008-04-13 Thread Yaakov (Cygwin Ports)

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

Charles Wilson wrote:
| Yaakov (Cygwin Ports) wrote:
| AU_DEFUN([AC_PROG_LIBTOOL],
| [LT_INIT
| LT_OUTPUT
| AC_DIAGNOSE([obsolete],
| [$0: Remove this warning and the call to LT_OUTPUT if you do not need
| libtool to exist before AC_OUTPUT.])
| ])
|
| AU_ALIAS([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL])
|
| That looks OK to me. I'll include something like this in the next
| version of libtool2.2 (or libtool test: 2.2).

One more patch will be required, namely, to define OBJDUMP where
necessary.  I've rolled these two patches together, as attached.

Explanation:

The AC_LIBTOOL_WIN32_DLL macro was supposed to be used in packages which
built on Win32 platforms, in order to create DLLs.  This macro tested
for as, dlltool, and objdump.  The latter is used in the file_magic test
to determine if a .a is a static or import library.

In 1.5 libtool worked anyway without it, because among other variables,
OBJDUMP was given a sane default near the beginning of libtool.m4 and
was always exported, and AS and DLLTOOL weren't needed.

But in 2.2, the sane defaults have been minimized, and OBJDUMP is no
longer defined by default, so without the win32-dll arg to LT_INIT (or
the AC_LIBTOOL_WIN32_DLL compat macro), libtool refuses to link shared
libs against non-libtoolized shared libs, because the file_magic test on
the implib fails due to an undefined OBJDUMP variable.  Assuring that
OBJDUMP is defined is therefore necessary for compatibility with
previous behaviour.

Not only that, but this may fix another possible bug on Linux ELF
systems, as there is a test on that platform (line 2461 after the patch)
which uses OBJDUMP, which I don't see where it would have been defined.



Yaakov

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.5 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFIAeHppiWmPGlmQSMRCLo1AKDx1ENwmwMhmKvL12avJ1RuVJfBHACg2g69
NKjvebLP38bbNdqP/cis8GI=
=Z4Tf
-END PGP SIGNATURE-
--- libltdl/m4/libtool.m4   2008-04-01 13:20:04.0 -0500
+++ /usr/share/aclocal/libtool.m4   2008-04-13 05:21:22.296875000 -0500
@@ -99,8 +99,15 @@
 ])# LT_INIT
 
 # Old names:
-AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
-AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
+AU_DEFUN([AC_PROG_LIBTOOL],
+[LT_INIT
+LT_OUTPUT
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to LT_OUTPUT if you do not need
+libtool to exist before AC_OUTPUT.])
+])
+
+AU_ALIAS([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL])
 dnl aclocal-1.4 backwards compatibility:
 dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
 dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
@@ -2026,6 +2033,7 @@
 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
 m4_require([_LT_DECL_EGREP])dnl
 m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_OBJDUMP])dnl
 m4_require([_LT_DECL_SED])dnl
 AC_MSG_CHECKING([dynamic linker characteristics])
 m4_if([$1],
@@ -2947,6 +2955,7 @@
 #  -- PORTME fill in with the dynamic library characteristics
 m4_defun([_LT_CHECK_MAGIC_METHOD],
 [m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
 AC_CACHE_CHECK([how to recognize dependent libraries],
 lt_cv_deplibs_check_method,
 [lt_cv_file_magic_cmd='$MAGIC_CMD'
@@ -6961,6 +6970,18 @@
 ])
 
 
+# _LT_DECL_OBJDUMP
+# --
+# If we don't have a new enough Autoconf to choose the best objdump
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_OBJDUMP],
+[AC_CHECK_TOOL(OBJDUMP, objdump, false)
+test -z $OBJDUMP  OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
+AC_SUBST([OBJDUMP])
+])
+
+
 # _LT_DECL_SED
 # 
 # Check for a fully-functional sed program, that truncates

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/

Re: Attn: cygport maintainer [was: Re: Libtool 2.2.2]

2008-04-13 Thread Charles Wilson

Yaakov (Cygwin Ports) wrote:

One more patch will be required, namely, to define OBJDUMP where
necessary.  I've rolled these two patches together, as attached.

Explanation:

The AC_LIBTOOL_WIN32_DLL macro was supposed to be used in packages which
built on Win32 platforms, in order to create DLLs.  This macro tested
for as, dlltool, and objdump.  The latter is used in the file_magic test
to determine if a .a is a static or import library.

In 1.5 libtool worked anyway without it, because among other variables,
OBJDUMP was given a sane default near the beginning of libtool.m4 and
was always exported, and AS and DLLTOOL weren't needed.



But in 2.2, the sane defaults have been minimized, and OBJDUMP is no
longer defined by default,


I believe this was an attempt at optimization: avoid testing for 
specific tools need only on one platform, unless libtool has been told 
that it is ON that platform.  Oddly, you'd think that libtool would 
figure that out from $build/$host/$target, and not [win32-dll].



so without the win32-dll arg to LT_INIT (or
the AC_LIBTOOL_WIN32_DLL compat macro), libtool refuses to link shared
libs against non-libtoolized shared libs, because the file_magic test on
the implib fails due to an undefined OBJDUMP variable.  Assuring that
OBJDUMP is defined is therefore necessary for compatibility with
previous behaviour.

Not only that, but this may fix another possible bug on Linux ELF
systems, as there is a test on that platform (line 2461 after the patch)
which uses OBJDUMP, which I don't see where it would have been defined.


Which is also odd.  I wonder why linux uses objdump...maybe this is a 
dead code path?


Oh, well: if it's necessary, it's necessary, and I'll push it upstream 
as well as including it in my next release of libtool2.2 (or libtool [*]).


Thanks for doing this, Yaakov.

--
Chuck

[*] Having heard no objections, and a few votes in favor, I'm leaning 
towards replacing both libtool1.5 and libtool2.2 with a single libtool 
package, with 1.5-derived versions remaining curr: for the near-term. 
In the medium term, I expect that prev: will be the latest-1.5 
derivative, and curr:/test: will both be 2.2-derived.  Long term, 
libtool-1.5 will disappear from the standard prev:/curr:/test: trio, but 
setup's chooser should still allow the determined user to find a 1.5 
variant if they click enough.


--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Attn: cygport maintainer [was: Re: Libtool 2.2.2]

2008-04-13 Thread Yaakov (Cygwin Ports)

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

Charles Wilson wrote:
| I believe this was an attempt at optimization: avoid testing for
| specific tools need only on one platform, unless libtool has been told
| that it is ON that platform.  Oddly, you'd think that libtool would
| figure that out from $build/$host/$target, and not [win32-dll].

More than that, is AC_LIBTOOL_WIN32_DLL (now [win32-dll]) actually
necessary anymore?  Cygwin doesn't need it, but I don't know about MinGW.

| Which is also odd.  I wonder why linux uses objdump...maybe this is a
| dead code path?

I'm not sure; AFAICS such a test didn't exist for linux in libtool 1.5.

| [*] Having heard no objections, and a few votes in favor, I'm leaning
| towards replacing both libtool1.5 and libtool2.2 with a single
| libtool package, with 1.5-derived versions remaining curr: for the
| near-term.

With my patch to libtool and some tweaking of cygport, libtool 2.2 seems
to be working pretty well.  I will need to know your final decision
before committing the cygport patches, and I'll try to push an update as
soon as possible thereafter.


Yaakov
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.5 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFIAtMzpiWmPGlmQSMRCE3eAJ9mQXitBbfqWUnLRFL7HmalQaG2fgCeLd/A
yA/G/Orc2yZcwB7GVikWUI4=
=N1Er
-END PGP SIGNATURE-

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Attn: cygport maintainer [was: Re: Libtool 2.2.2]

2008-04-08 Thread Charles Wilson

Yaakov (Cygwin Ports) wrote:

Charles Wilson wrote:
| That should be taken up with the libtool maintainers.  However, it has

[snip]

If I need to add LT_OUTPUT already, then I might as well switch entirely
to the LT_* macros.


True. But that is NOT required. libtool-emit-time is simply a new 
(possible backwards-incompatible) behavior change of the new libtool -- 
but one that hopefully impacts few clients.



The compatibility AC_PROG_LIBTOOL macro should be
just that: compatible with previous behaviour; otherwise, old packages
WILL break. 


A very very small number. The attitude of the libtool maintainers is, 
this extremely small minority is supported via the LT_OUTPUT macro. For 
everybody else, the vast majority, AC_PROG_LIBTOOL will Just Work(tm), 
and we (they) are not going to pessimize everybody else just to support 
that small minority -- who can use the LT_OUTPUT if they really need to.



This should not affect LT_INIT and the intended behaviour
for the future.


The change with regards to when, during the configure process, the 
libtool script itself is generated, is a separate and orthogonal issue 
from did you use the old A[CM]_PROG_LIBTOOL macro or the LT_INIT 
macro. Rather, the libtool-emit-time change is (one of the few) 
backwards-incompatiblities. Using the new libtool? Then the /default/ 
libtool-emit behavior has changed; simple as that.



~From the way you put it, it sounds like I shouldn't even waste my time
asking upstream.  If they won't accept this, can our libtool package be
patched accordingly, so that packages work after libtoolize as they did
with 1.5?


Anything CAN be done, with enough developer 'tuits. The question is, is 
that wise?  I don't know where to *automatically* insert a call to 
LT_OUTPUT in Q_RANDOM_PACKAGE's configure.ac; and I can't simply revert 
to the old way-- because the libtool-emission mechanisms are vastly 
different from 1.5.x.  You don't know what you're asking...



| You can continue to use
| AC_PROG_LIBTOOL exactly as you did with libtool1.5.

OK, that makes sense.

I'm not sure exactly how widely tested 2.2 is, so I understand the
logic.  But there are a few packages with some 2.x libtool included
(ImageMagick comes to mind), for which 1.5 is useless, and I don't want
to wait too long to switch.


Ack.

And Bob F. jumped to 2.2 prematurely, IMO...


I was looking more at the autoconf/automake side of libtool, but you
raise a good point.  Where are the ltdl changes outlined, and how many
packages break due to those changes?


Most of the removed interfaces were removed *because* they were not 
widely used (and were ugly; couldn't support the new features, etc). The 
changes are detailed in the new libtool's .info files. You can view them 
offline by unpacking libtool2.2 somewhere safe and using 'info -f 
/explicit/path/to/libtool2.2.info'.



If AC_PROG_LIBTOOL can be compatible, and the ltdl API changes are
indeed minor, than libtool should be a single package, especially if
they can't be installed in parallel (unlike ac/am).  It may be helpful
for 2.2 to be in testing for a little while.


Well, that's one of the possibilities I raised in my other 
email...however, it really doesn't solve the problem. It just makes 
switching between 1.5 and 2.2 a little easier given our setup.exe. 
Instead of explicitly uninstalling 2.2 and installing 1.5 (or vice 
versa), you just change the version of the single 'libtool' package from 
1.5 to 2.2 (or vice versa) -- which effectively does the same thing: 
uninstall one then install the other.



That's really too much trouble for those of us with hundreds (or
thousands) of packages.


Well, according to Ralf (hope he doesn't mind my paraphrase of his 
private email...)


 start Ralf 
LT_OUTPUT: I do not know how many packages are impacted by the LT_OUTPUT 
incompatibility issue, but was so far of the impression that it would be 
rather few.  If that impression is wrong, then it's certainly a good 
idea to let libtool at gnu dot org know about this.


LTDL API CHANGES: clients just need to cope.  If there are clients out 
there for which it would be an unduly amount of work or hassle, we'd 
like to know about it.  Actually, even more than with LT_OUTPUT, I 
believe that problems should be far and few between here.

 end Ralf 

The remainder of Ralf's email would tend to support this portion of your 
position: consolidate to a single 'libtool' package, make 2.2 the 'test' 
version, and leave it there until most of the maintainers have had a 
chance to see what issues arise with their packages. Then, and only 
then, bump the 2.2 version to current.


His suggestion was: hey, just install libtool2.2 and rip through all 
your packages (...er, all 1300 of them? ...) and most of them ought to 
be fine.  If more than a handful are not, then we (the libtool devs) 
need to know.



| But this sort of thing is only necessary for those (hopefully rare)
| packages where it actually MATTERS which 

Re: Attn: cygport maintainer [was: Re: Libtool 2.2.2]

2008-04-08 Thread Yaakov (Cygwin Ports)

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

Charles Wilson wrote:
| True. But that is NOT required. libtool-emit-time is simply a new
| (possible backwards-incompatible) behavior change of the new libtool --
| but one that hopefully impacts few clients.

I guess I'll be finding out exactly how many the hard way.

| Anything CAN be done, with enough developer 'tuits. The question is, is
| that wise?  I don't know where to *automatically* insert a call to
| LT_OUTPUT in Q_RANDOM_PACKAGE's configure.ac; and I can't simply revert
| to the old way-- because the libtool-emission mechanisms are vastly
| different from 1.5.x.  You don't know what you're asking...

I'm now looking at 2.2, what I mean is instead of (in libtool.m4):

AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])

Do something like the following:

AU_DEFUN([AC_PROG_LIBTOOL], [
LT_INIT
LT_OUTPUT
])
AU_DEFUN([AM_PROG_LIBTOOL], [
LT_INIT
LT_OUTPUT
])

AFAICS that would allow full compatibility with 1.5 behaviour after an
autoreconf.  But I see now that this would cause LT_OUTPUT to be added
by autoupdate, which would generally be unnecessary.  Is there another
way to do this?

| Well, that's one of the possibilities I raised in my other
| email...however, it really doesn't solve the problem. It just makes
| switching between 1.5 and 2.2 a little easier given our setup.exe.
| Instead of explicitly uninstalling 2.2 and installing 1.5 (or vice
| versa), you just change the version of the single 'libtool' package from
| 1.5 to 2.2 (or vice versa) -- which effectively does the same thing:
| uninstall one then install the other.

True, but I don't think that's the primary reason to have only one
libtool, and isn't the idea that it shouldn't be necessary to switch
back and forth?

| The remainder of Ralf's email would tend to support this portion of your
| position: consolidate to a single 'libtool' package, make 2.2 the 'test'
| version, and leave it there until most of the maintainers have had a
| chance to see what issues arise with their packages. Then, and only
| then, bump the 2.2 version to current.
|
| His suggestion was: hey, just install libtool2.2 and rip through all
| your packages (...er, all 1300 of them? ...) and most of them ought to
| be fine.  If more than a handful are not, then we (the libtool devs)
| need to know.

Time consuming, but fair enough.  (I just ran a count, it's 1500 source
packages total, but it's hard to say how many of those use libtool.)

| Yes it is. The problems would occur if the client needed a lot of work
| to come into compliance with the new LTDL API. The LT_OUTPUT thing is
| really very easy to fix for a given package. (And, according to Ralf,
| the LT_OUTPUT thing, while rarely needed, is much more probable to arise
| than LTDL API issues.  That's good.  I like my more common problems to
| be easy to fix. And I like ALL my problems to be rare. Like my steak.)

If the only real breakage is from LTDL API changes, then I agree it
should be quite rare.

| But it is not that simple.  The old way of generating/emitting libtool
| was not simply call some LT_OUTPUT-like macro at the end of
| AC_PROG_LIBTOOL; that's far too early.  And in almost all cases,
| waiting until AC_OUTPUT() is fine.
|
| Besides, libtool-2.2 compatibility patches are the sort of thing
| upstream maintainers like to see...

There is another case which might be tricky.  Some packages (namely
Berkeley DB and KDE3) ship with libtool.m4 and then cat(1) it into
aclocal.m4 (BDB) or acinclude.m4 (KDE3).  With 1.5, cygport simply
copies the libtool.m4 (and ltmain.sh) over the shipped copy in these cases.

With 2.2, besides the change in location (the /usr/share/libtool/config
subdir didn't exist in 1.5), there are now several libtool m4 macros.
Besides ltdl.m4 and argz.m4 (AFAICS required only by ltdl.m4), are they
all necessary for a working libtool.m4?

| Well, Ralf seems to agree.  I'd like to hear from a few other
| maintainers before taking that plunge though. (For now, just don't
| install the new libtool2.2 package, and you'll be fine).

Please do that ASAP so that I can make the necessary changes in cygport.

| So, please remove the libtool1.5 dep from cygport. Full stop.

I don't see another choice for now, but if there becomes only one
libtool package, I would add it back.


Yaakov
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.5 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFH+yXTpiWmPGlmQSMRCDTdAKCs78ea+ZzeUPcU3WCRDfe+RtA01QCg4oeG
gV+hAZBVVa0dv6tuOtyIeV4=
=FjH/
-END PGP SIGNATURE-

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Attn: cygport maintainer [was: Re: Libtool 2.2.2]

2008-04-08 Thread Charles Wilson

Yaakov (Cygwin Ports) wrote:

Charles Wilson wrote:
I'm now looking at 2.2, what I mean is instead of (in libtool.m4):

AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])

Do something like the following:

AU_DEFUN([AC_PROG_LIBTOOL], [
LT_INIT
LT_OUTPUT
])
AU_DEFUN([AM_PROG_LIBTOOL], [
LT_INIT
LT_OUTPUT
])

AFAICS that would allow full compatibility with 1.5 behaviour after an
autoreconf.


I'm not so sure. I still think that calling LT_OUTPUT immediately after 
LT_INIT is not exactly equivalent to 1.5 behavior. I think that is too 
early...but I don't know how to force a non-local insertion of 
LT_OUTPUT, and even if I did, I don't know how far down in 
configure.ac that non-local insertion should go.


Of course, if you KNOW of a package that needs libtool before configure 
is finished (I don't), you could easily test my assertion by manually 
inserting LT_OUTPUT immediately after A[CM]_PROG_LIBTOOL/LT_INIT, 
manually running autoreconf with libtool2.2, and see if it works...


But even so, this means that as part of cygport [*] you'd need to run 
autoupdate, which is not the current behavior.


[*] But again, my recommedation is that cygport should NOT run 
autoupdate in an automated way. Instead, the package maintainer should 
run it, inspect the results, and fold those changes into .src.patch.  In 
which case, manually adding LT_OUTPUT before generating .src.patch only 
when necessary rather than relying on autoupdate to do it automatically 
always even when unecessary, seems to be the better way to go.



 But I see now that this would cause LT_OUTPUT to be added
by autoupdate, which would generally be unnecessary. 


That's a drawback, all right.


Is there another
way to do this?


I don't know.


True, but I don't think that's the primary reason to have only one
libtool, and isn't the idea that it shouldn't be necessary to switch
back and forth?


Well, yeah -- in a perfect world.


| Besides, libtool-2.2 compatibility patches are the sort of thing
| upstream maintainers like to see...

There is another case which might be tricky.  Some packages (namely
Berkeley DB and KDE3) ship with libtool.m4 and then cat(1) it into
aclocal.m4 (BDB) or acinclude.m4 (KDE3).  With 1.5, cygport simply
copies the libtool.m4 (and ltmain.sh) over the shipped copy in these cases.

With 2.2, besides the change in location (the /usr/share/libtool/config
subdir didn't exist in 1.5), there are now several libtool m4 macros.
Besides ltdl.m4 and argz.m4 (AFAICS required only by ltdl.m4), are they
all necessary for a working libtool.m4?


Correct. The gcc folks ran into this. FWICT, you need each of: 
libtool.m4, ltoptions.m4, ltsugar.m4, ltversion.m4, lt-obsolete.m4,


It is recommeded, instead of copying those contents into aclocal.m4, 
that instead you do:


m4_include([libtool.m4])
m4_include([ltoptions.m4])
m4_include([ltversion.m4])
m4_include([ltsugar.m4])
m4_include([lt~obsolete.m4])


| Well, Ralf seems to agree.  I'd like to hear from a few other
| maintainers before taking that plunge though. (For now, just don't
| install the new libtool2.2 package, and you'll be fine).

Please do that ASAP so that I can make the necessary changes in cygport.


Sure...just waiting for more input.


| So, please remove the libtool1.5 dep from cygport. Full stop.

I don't see another choice for now, but if there becomes only one
libtool package, I would add it back.


I have modified cygport's setup.hint on sources.

--
Chuck

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Attn: cygport maintainer [was: Re: Libtool 2.2.2]

2008-04-08 Thread Yaakov (Cygwin Ports)

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

Charles Wilson wrote:
| I'm not so sure. I still think that calling LT_OUTPUT immediately after
| LT_INIT is not exactly equivalent to 1.5 behavior. I think that is too
| early...but I don't know how to force a non-local insertion of
| LT_OUTPUT, and even if I did, I don't know how far down in
| configure.ac that non-local insertion should go.

I think it is equivalent, seeing from a typical configure run with
libtool 1.5:

...
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
configure: creating libtool
appending configuration tag CXX to libtool
...
appending configuration tag F77 to libtool
...

| Of course, if you KNOW of a package that needs libtool before configure
| is finished (I don't), you could easily test my assertion by manually
| inserting LT_OUTPUT immediately after A[CM]_PROG_LIBTOOL/LT_INIT,
| manually running autoreconf with libtool2.2, and see if it works...

Some GNOME autoconf-based packages with python support run a
python-module compile and link test with the previously created libtool.

| That's a drawback, all right.

Looking at some of the other compatibility macros, how about the
following instead:

AU_DEFUN([AC_PROG_LIBTOOL],
[LT_INIT
LT_OUTPUT
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to LT_OUTPUT if you do not need
libtool to exist before AC_OUTPUT.])
])

AU_ALIAS([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL])

| But even so, this means that as part of cygport [*] you'd need to run
| autoupdate, which is not the current behavior.
|
| [*] But again, my recommedation is that cygport should NOT run
| autoupdate in an automated way. Instead, the package maintainer should
| run it, inspect the results, and fold those changes into .src.patch.  In
| which case, manually adding LT_OUTPUT before generating .src.patch only
| when necessary rather than relying on autoupdate to do it automatically
| always even when unecessary, seems to be the better way to go.

Agreed.

| Correct. The gcc folks ran into this. FWICT, you need each of:
| libtool.m4, ltoptions.m4, ltsugar.m4, ltversion.m4, lt-obsolete.m4,
|
| It is recommeded, instead of copying those contents into aclocal.m4,
| that instead you do:
|
| m4_include([libtool.m4])
| m4_include([ltoptions.m4])
| m4_include([ltversion.m4])
| m4_include([ltsugar.m4])
| m4_include([lt~obsolete.m4])

While that makes sense, I doubt that would work with the special build
systems that I'm discussing, at least not in an automated way without
patching those build systems more than necessary.  I have something else
in mind, but I'll need to try it out first.

| Sure...just waiting for more input.

Could you post the answer on cygwin-apps?

| I have modified cygport's setup.hint on sources.

Thank you.


Yaakov
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.5 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFH+/aMpiWmPGlmQSMRCLeqAJ42Na5Iyxr2C3Bzs7vnuVWinav3uQCgxWgw
K4mhjGWMeBAM1R92B3LsJQU=
=FHgr
-END PGP SIGNATURE-

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Attn: cygport maintainer [was: Re: Libtool 2.2.2]

2008-04-08 Thread Charles Wilson

Yaakov (Cygwin Ports) wrote:

Charles Wilson wrote:
| I'm not so sure. I still think that calling LT_OUTPUT immediately after
| LT_INIT is not exactly equivalent to 1.5 behavior.

I think it is equivalent, seeing from a typical configure run with
libtool 1.5:

Looking at some of the other compatibility macros, how about the
following instead:

AU_DEFUN([AC_PROG_LIBTOOL],
[LT_INIT
LT_OUTPUT
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to LT_OUTPUT if you do not need
libtool to exist before AC_OUTPUT.])
])

AU_ALIAS([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL])


That looks OK to me. I'll include something like this in the next 
version of libtool2.2 (or libtool test: 2.2).



| [*] But again, my recommedation is that cygport should NOT run
| autoupdate in an automated way. Instead, the package maintainer should
| run it, inspect the results, and fold those changes into .src.patch.

Agreed.

| m4_include([libtool.m4])
| m4_include([ltoptions.m4])
| m4_include([ltversion.m4])
| m4_include([ltsugar.m4])
| m4_include([lt~obsolete.m4])

While that makes sense, I doubt that would work with the special build
systems that I'm discussing, at least not in an automated way without
patching those build systems more than necessary.  I have something else
in mind, but I'll need to try it out first.


For your packages, do whatever makes your life easier. g


| Sure...just waiting for more input.

Could you post the answer on cygwin-apps?


Sure.

--
Chuck

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Libtool 2.2.2 problems

2008-04-08 Thread Rabbi Yaakov Selkowitz

Chuck,

Well, I tried libtool 2.2.2 on a 1.5 package with autoreconf. 
Unfortunately it wouldn't build any shared libraries:


/bin/sh ../libtool --tag=CC --mode=link gcc  -O2 -pipe-o 
libgdasql-3.0.la -rpath /usr/lib -version-info 3:0:0 -no-undefined 
parser.lo lexer.lo sql_parser.lo mem.lo sql_display.lo sql_tree.lo 
-Wl,--export-dynamic -lgobject-2.0 -lgthread-2.0 -lgmodule-2.0 
-lglib-2.0 -lintl -lxml2 -lz -liconv -lm


*** Warning: linker path does not have real file for library -lbz2.
*** I have the capability to make that library automatically link in when
*** you link to this library.  But I can only do this if you have a
*** shared version of the library, which you do not appear to have
*** because I did check the linker path looking for a file starting
*** with libbz2 and none of the candidates passed a file format test
*** using a file magic. Last file checked: /lib/libbz2.dll.a

[SNIP: Same message for libreadline, libz]

*** The inter-library dependencies that have been dropped here will be
*** automatically added whenever a program is linked with this library
*** or is declared to -dlopen it.

*** Since this library must not contain undefined symbols,
*** because either the platform does not support them or
*** it was explicitly requested with -no-undefined,
*** libtool will only create a static version of it.
libtool: link: ar cru .libs/libgdasql-3.0..dll.a .libs/parser.o 
.libs/lexer.o .libs/sql_parser.o .libs/mem.o .libs/sql_display.o 
.libs/sql_tree.o

libtool: link: ranlib .libs/libgdasql-3.0..dll.a
libtool: link: ( cd .libs  rm -f libgdasql-3.0.la  ln -s 
../libgdasql-3.0.la libgdasql-3.0.la )


I see a few problems:

1) libtool seems not to want to link against non-libtoolized libraries, 
claiming that the file magic test fail on the import libs.


2) Why is the static library name have an extra .dll in it?  This 
happens not only with a failed shared link, but also with a convenience lib:


/bin/sh ../../libtool --tag=CC --mode=link gcc  -O2 -pipe-o 
libgda_sql_delimiter-3.0.laparser.lo lexer.lo gda-sql-delimiter.lo 
gda-delimiter-tree.lo
libtool: link: ar cru .libs/libgda_sql_delimiter-3.0..dll.a 
.libs/parser.o .libs/lexer.o .libs/gda-sql-delimiter.o 
.libs/gda-delimiter-tree.o

libtool: link: ranlib .libs/libgda_sql_delimiter-3.0..dll.a
libtool: link: ( cd .libs  rm -f libgda_sql_delimiter-3.0.la  ln 
-s ../libgda_sql_delimiter-3.0.la libgda_sql_delimiter-3.0.la )


Any ideas?


Yaakov

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Attn: cygport maintainer [was: Re: Libtool 2.2.2]

2008-04-07 Thread Yaakov (Cygwin Ports)

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

Charles Wilson wrote:
| That should be taken up with the libtool maintainers.  However, it has
| been their position, even in the libtool-1.4 and -1.5 days, that relying
| on that behavior was not recommended.  Therefore they do not support it
| directly -- but instead provided the LT_OUTPUT macro for those
| packages that insist on ignoring their recommendations, or have really
| good reasons for doing so (such as running AC_COMPILE tests that need
| libtool).

If I need to add LT_OUTPUT already, then I might as well switch entirely
to the LT_* macros.  The compatibility AC_PROG_LIBTOOL macro should be
just that: compatible with previous behaviour; otherwise, old packages
WILL break.  This should not affect LT_INIT and the intended behaviour
for the future.

~From the way you put it, it sounds like I shouldn't even waste my time
asking upstream.  If they won't accept this, can our libtool package be
patched accordingly, so that packages work after libtoolize as they did
with 1.5?

| IMO, no. autoupdate is not something that should be blindly done in an
| automated fashion, because you really should verify the results
| manually.  I would recommend that, at least for now, maintainers
| approach it on a case-by-case basis -- but remember, except for this
| LT_OUTPUT thing (which can be added using foo-*.src.patch) you don't
| HAVE to use the new libtool2.2 interfaces; you don't HAVE to use
| autoupdate in order to use libtool2.2.  You can continue to use
| AC_PROG_LIBTOOL exactly as you did with libtool1.5.

OK, that makes sense.

| For folks like you and Dr. Zell who maintain a LOT of packages, I'd
| recommend keeping libtool1.5 installed for a while. Let the rest of us
| with fewer packages deal with any possible libtool2.2 ripple.

I'm not sure exactly how widely tested 2.2 is, so I understand the
logic.  But there are a few packages with some 2.x libtool included
(ImageMagick comes to mind), for which 1.5 is useless, and I don't want
to wait too long to switch.

| It's MOSTLY backwards compatible, with (AFAIK) the following exceptions:
|  1) the LT_OUTPUT thing
|  2) the libltdl library has had a few API changes -- some functions have
| been removed, others added. If your client uses those eliminated APIs,
| then you'll have to make actual code changes to use the libltdl from
| libtool-2.2.

I was looking more at the autoconf/automake side of libtool, but you
raise a good point.  Where are the ltdl changes outlined, and how many
packages break due to those changes?

| As much as the libtool developers tried to maintain complete backwards
| compatibility, this IS a major new release and reflects over four years
| of development.  It's impressive that the incompatibilities were kept as
| minor as they are.

I agree completely.

| Unfortunately, I think we are in for a certain amount of turbulence,
| just like back then.  However, ac-2.5 and ac-2.13 were REALLY
| incompatible. The changes here are much less visible; most packages
| should be able to use either version of libtool with no *required*
| changes.  Any autoupdate/code changes/configure.ac changes will be
| kinda-nice-but-not-really-necessary for most clients.

If AC_PROG_LIBTOOL can be compatible, and the ltdl API changes are
indeed minor, than libtool should be a single package, especially if
they can't be installed in parallel (unlike ac/am).  It may be helpful
for 2.2 to be in testing for a little while.

| I see a lot of uninstall-libtool1.5/install-libtool2.2
| uninstall-libtool2.2/install-libtool1.5 cycles in our future.

That's really too much trouble for those of us with hundreds (or
thousands) of packages.

| I haven't done any investigation along these lines, but for some of us
| cygwin package maintainers, we might think about self-compiling
| /opt/libtool-2.2/{bin|share|lib} and /opt/libtool-1.5/{bin|share|lib}
| [*], uninstalling BOTH libtool1.5 and libtool2.2, and using
| /usr/share/aclocal/dirlist and $PATH to switch between them (dirlist
| entries go AFTER the compiled-in -acdir paths used by aclocal, so you
| have to uninstall the normal libtool packages make sure libtool.m4 and
| friends won't be found in /usr/share/aclocal/)
|
| Alternatively, you can keep the normal libtool package installed, but
| instead patch client Makefile.am's to add ACLOCAL_AMFLAGS with
| -I/opt/libtool-2.2/share/aclocal or -I/opt/libtool-1.5/share/aclocal AND
| using $PATH (this works because -I paths go BEFORE the compiled-in
| -acdir paths used by aclocal)
|
| But this sort of thing is only necessary for those (hopefully rare)
| packages where it actually MATTERS which version of libtool you use.

That's also pretty complicated.  When would a package NOT work with 2.2?

| Even so, I hate to go back to the old libtool-stable/libtool-devel
| paradigm, but during this transition we -- cygwin package maintainers --
| might need to do so 'unofficially'.  However, this is a lot of trouble,
| and 

Attn: cygport maintainer [was: Re: Libtool 2.2.2]

2008-04-06 Thread Charles Wilson

Brian Dessent wrote:

Angelo Graziosi wrote:


and if cygport depend on libtool1.5, how can the user who needs
libtool2.2 install it without uninstalling libtool1.5+cygport+...?


I think cygport should remove its requires: libtoolx.y from its 
setup.hint.  It currently lists that because the default

  src_compile()
implementation calls
  cygautoreconf()
which itself checks the to-be-built packages' configure.[in|ac] and 
checks that various autotools are installed. It doesn't do anything 
special with regards to libtool, except:


  if WANT_AUTOCONF=2.1
if configure.[in|ac] contains A[CM]_PROG_LIBTOOL
  issue a warning that libtool1.5 is incompatible with autoconf-2.13

CYGPORT CODE CHANGE:
Now, with libtool2.2, that test needs to also check for LT_INIT, as well 
as the older A[CM]_PROG_LIBTOOL macros.  Furthermore, you can still use 
cygport even without libtoolx.y installed:


write your own src_compile() method that doesn't call cygautoreconf

export LIBTOOL=no before calling cygautoreconf (or before calling 
the default src_compile)


So, really, libtoolx.y is not a requirement of *cygport*, per se, but is 
a build-depends of whatever you are trying to use cygport to build.



They would have to manually override the warning of setup in order to
install libtool2.2+cygport.  


If one install libtool2.2 without removing anything, it overwrite
libtool1.5, and I think this is a little confusing.


And will break things, as the OP pointed out.


Yes, it's not great but it's the best we can do.  Feel free to suggest
something less confusing, subject to the following constraints:

- Both libtools can't exist on a system at once
- Setup cannot express a mutual exclusivity, nor can it cause any
package to be deselected

The only thing I can think of is to wrap both libtool packages in a
postinstall wrapper 


Ugh. No, thanks.


In the short term it would probably make more sense to simply drop
libtool from the cygport 'requires:' and instead document somewhere that
you need one or the other installed.


But you don't, really. See above.


Cygport could potentially drop
something in profile.d to do this check and alert the user if
something's wrong, however I dislike the idea of penalizing every
cygport user with yet another task at the start of every login shell. 


CYGPORT CODE CHANGE:
No, instead cygport itself, inside cygautoreconf(), could perform that 
check.  That is, if LIBTOOL != no, and configure.[ac|in] contains 
LT_INIT|A[CM]_PROG_LIBTOOL, then

  if ! check_prog libtool1.5  !check_prog libtool2.2
issue error message about missing libtool


It could also be possible for a cygport postinstall to check for libtool
and only if not found drop something in profile.d that displays a
warning.


No need to mess with profile.d; cygport itself can do the check. That 
way, only cygport users, when actually using cygport, are penalized by 
checking for libtool presence.



Yet another option would be to fix setup to allow more complex
dependencies to be expressed, but that's even more complicated as a)
SHTDI and b) there's always going to be users not using the latest
setup.exe even months/years after a new version is released.


Yep, to both.

In any case, there is no need to wait for the various modifications to 
cygport. We can (and should) remove the libtool1.5 require: from 
cygport's setup.hint immediately. (Where immediately means give 
Yaakov a decent interval to chime in on this thread...)


--
Chuck

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Attn: cygport maintainer [was: Re: Libtool 2.2.2]

2008-04-06 Thread Yaakov (Cygwin Ports)

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

Chuck,

I have yet to try libtool 2.2, but I'm sure that you have thoroughly
tested it.  Could you clarify a few things:

*) Most packages still use a 1.5 libtool, if not older.  Is LT_OUTPUT
the default if the old-style AC_PROG_LIBTOOL macro is called?  If it's
not, it should be, as I know of a number of packages which rely on the
libtool script during configure.

*) Is running autoupdate recommended or beneficial when building a
package using 1.5?

*) If 2.2 is backwards compatible with 1.5, but they can't be installed
in parallel, why not just rename all versions of the package to libtool?


Yaakov
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.5 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFH+aEUpiWmPGlmQSMRCNzZAKCwVUZSnCfNT40qbcKMmSZk+YG8yQCgkBH6
MaRdX7OWU/E8oxNtBwYJMhs=
=Jk2A
-END PGP SIGNATURE-

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Attn: cygport maintainer [was: Re: Libtool 2.2.2]

2008-04-06 Thread Charles Wilson

Yaakov (Cygwin Ports) wrote:

*) Most packages still use a 1.5 libtool, if not older.  Is LT_OUTPUT
the default if the old-style AC_PROG_LIBTOOL macro is called? 


No, it is not.


If it's
not, it should be, as I know of a number of packages which rely on the
libtool script during configure.


That should be taken up with the libtool maintainers.  However, it has 
been their position, even in the libtool-1.4 and -1.5 days, that relying 
on that behavior was not recommended.  Therefore they do not support it 
directly -- but instead provided the LT_OUTPUT macro for those 
packages that insist on ignoring their recommendations, or have really 
good reasons for doing so (such as running AC_COMPILE tests that need 
libtool).



*) Is running autoupdate recommended or beneficial when building a
package using 1.5?


IMO, no. autoupdate is not something that should be blindly done in an 
automated fashion, because you really should verify the results 
manually.  I would recommend that, at least for now, maintainers 
approach it on a case-by-case basis -- but remember, except for this 
LT_OUTPUT thing (which can be added using foo-*.src.patch) you don't 
HAVE to use the new libtool2.2 interfaces; you don't HAVE to use 
autoupdate in order to use libtool2.2.  You can continue to use 
AC_PROG_LIBTOOL exactly as you did with libtool1.5.


For folks like you and Dr. Zell who maintain a LOT of packages, I'd 
recommend keeping libtool1.5 installed for a while. Let the rest of us 
with fewer packages deal with any possible libtool2.2 ripple.


For instance, if I wanted to try to use libtool2.2 on a particular 
package, I might MANUALLY use autoupdate -- and then fold the (verified) 
results into my .src.patch.  I'd leave src_compile() and cygautoreconf 
as-is.


*) If 2.2 is backwards compatible with 1.5, 


It's MOSTLY backwards compatible, with (AFAIK) the following exceptions:
 1) the LT_OUTPUT thing
 2) the libltdl library has had a few API changes -- some functions 
have been removed, others added. If your client uses those eliminated 
APIs, then you'll have to make actual code changes to use the libltdl 
from libtool-2.2.


As much as the libtool developers tried to maintain complete backwards 
compatibility, this IS a major new release and reflects over four years 
of development.  It's impressive that the incompatibilities were kept as 
minor as they are.



but they can't be installed
in parallel, why not just rename all versions of the package to libtool?


Well, I addressed this in another post, but nobody responded. It's here:
http://www.cygwin.com/ml/cygwin-apps/2008-04/msg00050.html

The FOSS community went thru this whole issue back during the 
autoconf-2.13 to autoconf-2.5x transition.  For a long time, you could 
only have one or the other installed, until the distributions started 
including wrapper scripts and installing both tools into different 
locations/with different program names. (I believe cygwin was actually 
the first to do this).


Unfortunately, I think we are in for a certain amount of turbulence, 
just like back then.  However, ac-2.5 and ac-2.13 were REALLY 
incompatible. The changes here are much less visible; most packages 
should be able to use either version of libtool with no *required* 
changes.  Any autoupdate/code changes/configure.ac changes will be 
kinda-nice-but-not-really-necessary for most clients.


So for any particular client this transition is not a big deal. The real 
problem is that any particular developer -- or cygwin package maintainer 
-- probably works with a number of separate libtool client packages. And 
not all of those are going to transition at the same time; nor is any 
developer (cygwin package maintainer) going to want to brute force a 
transition for all of his packages all at the same time.


I see a lot of uninstall-libtool1.5/install-libtool2.2 
uninstall-libtool2.2/install-libtool1.5 cycles in our future.



=
I haven't done any investigation along these lines, but for some of us 
cygwin package maintainers, we might think about self-compiling 
/opt/libtool-2.2/{bin|share|lib} and /opt/libtool-1.5/{bin|share|lib} 
[*], uninstalling BOTH libtool1.5 and libtool2.2, and using 
/usr/share/aclocal/dirlist and $PATH to switch between them (dirlist 
entries go AFTER the compiled-in -acdir paths used by aclocal, so you 
have to uninstall the normal libtool packages make sure libtool.m4 and 
friends won't be found in /usr/share/aclocal/)


Alternatively, you can keep the normal libtool package installed, but 
instead patch client Makefile.am's to add ACLOCAL_AMFLAGS with 
-I/opt/libtool-2.2/share/aclocal or -I/opt/libtool-1.5/share/aclocal AND 
using $PATH (this works because -I paths go BEFORE the compiled-in 
-acdir paths used by aclocal)


But this sort of thing is only necessary for those (hopefully rare) 
packages where it actually MATTERS which version of libtool you use.


Even so, I hate to go back to the old libtool-stable/libtool-devel 

Re: Libtool 2.2.2

2008-04-05 Thread Angelo Graziosi

Brian Dessent wrote:


This shouldn't be too big of a problem as the libtool packages are

 only needed if you relibtoolize something -- which you normally do not
 when building from a tarball, only from a VCS checkout. Though
 building any cygport-ized package seems to force the issue since it
 likes to forcibly autoreconf -fvi.

Perhaps I am missing something, but if you say

 it is incompatible with the libtool1.5 package,
 which means you have to manually deselect all other libtool packages
 if you select libtool2.2

and if cygport depend on libtool1.5, how can the user who needs 
libtool2.2 install it without uninstalling libtool1.5+cygport+...?


If I try to uninstall libtool1.5, setup.exe says that cygport depend on 
it and stops the procedure at least one force it.


If one install libtool2.2 without removing anything, it overwrite 
libtool1.5, and I think this is a little confusing.


Suppose that an hypotetical user have not yet installed cygport and 
libtool* packages. Then this user install libtool2.2. Suppose now that 
the user needs also cygport: installing it, automatically libtool1.5 is 
chosen, overwriting libtool2.2! So the user thinks is using libtool2.2 
instead, since installing cygport, is using libtool1.5!


Cheers,
   Angelo.


--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Libtool 2.2.2

2008-04-05 Thread Brian Dessent
Angelo Graziosi wrote:

 and if cygport depend on libtool1.5, how can the user who needs
 libtool2.2 install it without uninstalling libtool1.5+cygport+...?

They would have to manually override the warning of setup in order to
install libtool2.2+cygport.  

 If one install libtool2.2 without removing anything, it overwrite
 libtool1.5, and I think this is a little confusing.

Yes, it's not great but it's the best we can do.  Feel free to suggest
something less confusing, subject to the following constraints:

- Both libtools can't exist on a system at once
- Setup cannot express a mutual exclusivity, nor can it cause any
package to be deselected

The only thing I can think of is to wrap both libtool packages in a
postinstall wrapper (as is currently done with the gcc-mingw-* packages)
that first checks if the other is installed before unpacking anything. 
Then it could choose to either uninstall the other package, or decline
to install itself.  This is messy in that a) cygcheck -c / cygcheck
-l / cygcheck -f cease to work as expected for the package and b)
it's a lot more work to maintain such a package.  (a) could be worked
around by rewriting the manifest so that after the postinstall is run it
looks like a normal package.

 Suppose that an hypotetical user have not yet installed cygport and
 libtool* packages. Then this user install libtool2.2. Suppose now that
 the user needs also cygport: installing it, automatically libtool1.5 is
 chosen, overwriting libtool2.2! So the user thinks is using libtool2.2
 instead, since installing cygport, is using libtool1.5!

In the short term it would probably make more sense to simply drop
libtool from the cygport 'requires:' and instead document somewhere that
you need one or the other installed.  Cygport could potentially drop
something in profile.d to do this check and alert the user if
something's wrong, however I dislike the idea of penalizing every
cygport user with yet another task at the start of every login shell. 
It could also be possible for a cygport postinstall to check for libtool
and only if not found drop something in profile.d that displays a
warning.

Yet another option would be to fix setup to allow more complex
dependencies to be expressed, but that's even more complicated as a)
SHTDI and b) there's always going to be users not using the latest
setup.exe even months/years after a new version is released.

Brian

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Libtool 2.2.2

2008-04-04 Thread Bobby McNulty

Last night, I updated my Cygwin installation and received libtool 2.2.2
This afternoon. I tried building subversion 1.5 branch.
I got to the first library, and libtool said it could not build a shared 
library.

That only static libraries could be built.
My exact configure went like this:
../configure --prefix=/usr --enable-shared
I am build the httpd server and then neon 2.8
I won't use shared now.
Not sure how I messed up
Bobby 



--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Libtool 2.2.2

2008-04-04 Thread Brian Dessent
Bobby McNulty wrote:

 Last night, I updated my Cygwin installation and received libtool 2.2.2

Seeing as how libtool2.2 is not listed in any 'requires:' line you must
have manually selected it in order for it to be installed.  Per the
release announcement, it is incompatible with the libtool1.5 package,
which means you have to manually deselect all other libtool packages if
you select libtool2.2.  You can only have one of the two at any time
installed, and there's no way for setup to enforce that which is why
it's not listed in any 'requires:'.

Brian

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Libtool 2.2.2

2008-04-04 Thread Angelo Graziosi

Brian Dessent wrote:

 Per the release announcement, it is incompatible with the libtool1.5
 package, which means you have to manually deselect all other libtool
 packages if you select libtool2.2.  You can only have one of the two
 at any time installed

If this is the case, perhaps, there is some problem in setup.ini.

cygport requires libtool1.5 and libguile17 requires libltdl3.

So it looks that the set libtool1.5+libltdl3 cannot be removed in favor 
of libtool2.2+libltdl7 (if one needs cygport, libguile17+ dependences).


Cheers,
   Angelo.

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: Libtool 2.2.2

2008-04-04 Thread Brian Dessent
Angelo Graziosi wrote:

 If this is the case, perhaps, there is some problem in setup.ini.
 
 cygport requires libtool1.5 and libguile17 requires libltdl3.
 
 So it looks that the set libtool1.5+libltdl3 cannot be removed in favor
 of libtool2.2+libltdl7 (if one needs cygport, libguile17+ dependences).

I may not have been clear.  The libltdl runtime packages should be fine
on their own, it's just the libtool developer packages that are
incompatible.  I don't think there should be a problem if you have
installed libltdl3+libltdl6+libltdl7+(one of libtool1.5 or libtool2.2). 
I'm not sure what libltdl6 is doing in the distro though as nothing
'requires:' it.

This shouldn't be too big of a problem as the libtool packages are only
needed if you relibtoolize something -- which you normally do not when
building from a tarball, only from a VCS checkout.  Though building any
cygport-ized package seems to force the issue since it likes to forcibly
autoreconf -fvi.

Brian

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/