This is the mail archive of the
mailing list for the Cygwin project.
libtool problem when installing packages with modules
- From: Corinna Vinschen <corinna-cygwin at cygwin dot com>
- To: cygwin-apps at cygwin dot com
- Date: Fri, 10 Dec 2010 16:11:43 +0100
- Subject: libtool problem when installing packages with modules
- Reply-to: cygwin-apps at cygwin dot com
as you may have noticed, I updated syslog-ng to 3.2.1 yesterday. While
I prepared it for packaging, I came across the following problem.
Syslog-ng introduced modules, which are shared libs, dynamically loaded
at runtime. The modules are stored in $(libexecdir)/syslog-ng.
Building the modules required to re-libtoolize with libtool 2.4, since
the libtool version used in the upstream source package (2.2.6b) didn't
handle DLL dependencies in *.la files correctly.
Now, when installing the package, something strange happened. The
modules get installed via `libtool --mode=install <list of .la files>'
The *.dll.a and *.la files got installed into $(libexecdir)/syslog-ng,
but the DLLs got installed into $(libexecdir)/syslog-ng/../bin ==
$(libexecdir)/bin. So the DLLs got installed into a parallel directory
I was a bit surprised at first, but after a few seconds it occured to me
that there's some Cygwin-specific magic at work. This magic makes a lot
of sense for the default case of libraries which get installed into
/usr/lib, so the DLLs are installed into /usr/bin. However, for obvious
reasons it doesn't make sense for a modules directory. So, here are two
- Is there an option to libtool so that it installs the DLLs into
$(libexecdir)/syslog-ng instead of $(libexecdir)/syslog-ng/../bin in
this syslog-ng scenario?
- What is the "official", blessed way to handle this situation? What I
do right now is to move the DLLs to the correct directory in a
post-install/pre-create-package script, which also removes the extra
bin directory and the .dll.a files.
Obviously it would be nice if libtool had an option to do it right in
`make install'. For instance, some '-install-as-module' option which
results in copying only the DLLs to $(libexecdir)/syslog-ng, but which
omits the .dll.a and .la files since they are note required anyway.
Something like that doesn't exist, I assume. WOuld it be an option
to implement this?
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com