This is the mail archive of the cygwin-apps mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

libtool problem when installing packages with modules

Hi Chuck,

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
called "bin".

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
Red Hat

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]