This is the mail archive of the cygwin 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]

Re: [ANNOUNCEMENT] Updated: cygport-0.11.0-1


On Tue, 2012-08-28 at 22:58 +0200, Dr. Volker Zell wrote:
> When doing the packaging step with your latest cygport release on gnutls I get the following:
>     
> which: no KERNEL32.dll in (/misc/src/release/gnutls-2.12.20-1/inst/usr/bin:/usr/local/bin:/usr/bin:/usr/local/scripts:/usr/local/sbin:/usr/sbin:/usr/lib/lapack)
> >>> gnutls requires: libgnutls26 libreadline7
> which: no KERNEL32.dll in (/misc/src/release/gnutls-2.12.20-1/inst/usr/bin:/usr/local/bin:/usr/bin:/usr/local/scripts:/usr/local/sbin:/usr/sbin:/usr/lib/lapack)
> >>> libgnutls26 requires: libgcc1 libgcrypt11 libintl8 liblzo2_2 libp11-kit0 libstdc++6 libtasn1_3 zlib0
> >>> gnutls-devel requires: gettext libgcrypt-devel libgnutls26 libiconv liblzo2-devel libp11-kit-devel libtasn1-devel
> >>> gnutls-doc requires:
> 
> 
> When I call cygcheck directly on cyggnutls-26.dll I get the following:
[snip]
> So in the above requires line for libgnutls26, libggc1 and libintl8
> shouldn't be included at all because libgcrypt11 already depends on
> them. I'm I wrong here ?

cygport uses objdump to find binary dependencies, which unlike cygcheck,
lists direct dependencies only and doesn't worry about subdependencies:

$ objdump -p /usr/bin/cyggnutls-26.dll | grep "DLL Name"
	DLL Name: cygwin1.dll
	DLL Name: cyggcrypt-11.dll
	DLL Name: cygintl-8.dll
	DLL Name: cygtasn1-3.dll
	DLL Name: cygz.dll
	DLL Name: KERNEL32.dll

So libgnutls26 has a hard direct dependency on libintl8.  To understand
why this is done, let's say that a future release of gettext changes the
ABI version again, and then soon thereafter libgcrypt was rebuilt
against that new libintlX.  libgnutls26 would *still* require libintl8,
and can't rely on libgcrypt11 to provide that dep.

OTOH, note that libiconv2 is *not* listed as a dep, even though libintl8
depends on it.  That's because if in the future libiconv would get an
ABI version bump and the same gettext were rebuilt against that, even
though libintl8 would now depend on libiconvX, libgnutls would NOT need
to be rebuilt, and libiconv2 would no longer be necessary.

So for these purposes, objdump is a more precise means of dependency
detection than cygcheck.

> And what about the "which: no KERNEL32.dll" stuff above ? Can it be
> suppressed without adding C:\WINDOWS\system32\ to the PATH ?

Fixed in git master, commit a268dc3.


Yaakov



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


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