Bug 192342

Summary: libgcrypt doesn't install libgcrypt.la
Product: Ports & Packages Reporter: freebsd
Component: Individual Port(s)Assignee: freebsd-ports-bugs (Nobody) <ports-bugs>
Status: Closed FIXED    
Severity: Affects Many People CC: cjpm, pi, tijl
Priority: ---    
Version: Latest   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
libgcrypt.diff
none
log of py-gnome-extras not building without /usr/local/lib/libgcrypt.l none

Description freebsd 2014-08-02 17:40:04 UTC
The 1.6.1 port doesn't install the libtool file libgcrypt.la, which several other ports depend on, such as py-gnome-extras.

The build process creates work/libgcrypt-1.6.1/src/libgcrypt.la and I have checked that's a reasonable libtool file, and other ports build properly if I copy it into /usr/local/lib.

I think you just need to add it to pkg-plist but I don't understand the staging process well enough to be sure.
Comment 1 Carlos J Puga Medina 2014-08-02 19:23:18 UTC
Created attachment 145256 [details]
libgcrypt.diff

This patch add the missing libtool file.

Thanks for reporting :)
Comment 2 commit-hook freebsd_committer freebsd_triage 2014-08-02 21:57:19 UTC
A commit references this bug:

Author: pi
Date: Sat Aug  2 21:57:15 UTC 2014
New revision: 363841
URL: http://svnweb.freebsd.org/changeset/ports/363841

Log:
  devel/security: re-add .la file

  - py-gnome-extras (and others) depend on it

  PR:		192342
  Submitted by:	freebsd@johnlevine.com

Changes:
  head/security/libgcrypt/Makefile
  head/security/libgcrypt/pkg-plist
Comment 3 Kurt Jaeger freebsd_committer freebsd_triage 2014-08-02 21:58:30 UTC
Committed, thanks.

But I like to know how it would be possible to get
py-gnome-extras to build without the .la file.
Comment 4 Antoine Brodin freebsd_committer freebsd_triage 2014-08-02 22:03:41 UTC
(In reply to Kurt Jaeger from comment #3)
> Committed, thanks.
> 
> But I like to know how it would be possible to get
> py-gnome-extras to build without the .la file.

it does build ...

an error log from the reporter would have been helpful,  the change looks backwards,  probably a bump somewhere was missing....
Comment 5 freebsd 2014-08-03 01:24:28 UTC
Created attachment 145279 [details]
log of py-gnome-extras not building without /usr/local/lib/libgcrypt.l

per request, here's another port failing to build without the missing file
Comment 6 Tijl Coosemans freebsd_committer freebsd_triage 2014-08-04 09:30:45 UTC
Can you post the output of "pkg query '%o %B' | grep libgcrypt"
Comment 7 freebsd 2014-08-05 03:02:21 UTC
Nothing's supposed to depend on the libtool library, but as you saw in the last thing I uploaded, something does

$ pkg query '%o %B' | grep libgcrypt
www/chromium libgcrypt.so.20
security/gnome-keyring libgcrypt.so.20
security/gnupg libgcrypt.so.20
net/gtk-vnc libgcrypt.so.20
devel/gvfs libgcrypt.so.20
security/libgcrypt libgpg-error.so.0
security/libgcrypt libgcrypt.so.20
databases/libgda4 libgcrypt.so.20
games/libggz libgcrypt.so.20
security/libgnome-keyring libgcrypt.so.20
security/libotr libgcrypt.so.20
editors/libreoffice libgcrypt.so.20
textproc/libxslt libgcrypt.so.20
security/pidgin-otr libgcrypt.so.20
x11/yelp libgcrypt.so.20
Comment 8 Tijl Coosemans freebsd_committer freebsd_triage 2014-08-05 07:44:00 UTC
That looks ok.  What is the output of "grep -Rl libgcrypt /usr/local/lib"
Comment 9 freebsd 2014-08-05 16:06:43 UTC
This is a little nicer than grep.  I don't see how this will find ports that need the libtool archive in the build process, though.

$ ldd ./*.so*|awk '/:/ {l = $0 }
/libgcrypt/{ print l
print }'

./libbrasero-burn.so:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x80b20b000)
./libbrasero-burn.so.1:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x80b20b000)
./libbrasero-burn.so.1.2.0:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x80b20b000)
./libbrasero-utils.so:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x8097c0000)
./libbrasero-utils.so.1:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x8097c0000)
./libbrasero-utils.so.1.2.0:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x8097c0000)
./libecal-1.2.so:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x80a7f2000)
./libecal-1.2.so.8:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x80a7f2000)
./libecal-1.2.so.8.2.2:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x80a7f2000)
./libedata-cal-1.2.so:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x80aef5000)
./libedata-cal-1.2.so.10:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x80aef5000)
./libedata-cal-1.2.so.10.0.0:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x80aef5000)
./libedataserverui-1.2.so:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x809e09000)
./libedataserverui-1.2.so.11:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x809e09000)
./libedataserverui-1.2.so.11.0.0:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x809e09000)
./libexslt.so:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x801edf000)
./libexslt.so.8:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x801edf000)
./libgcr.so:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x80146a000)
./libgcr.so.0:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x80146a000)
./libgcr.so.0.0.0:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x80146a000)
./libgcrypt.so:
./libgcrypt.so:
./libgcrypt.so.20:
./libgcrypt.so.20:
./libgcrypt.so.20.0.1:
./libgcrypt.so.20.0.1:
./libgdata.so:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x804042000)
./libgdata.so.7:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x804042000)
./libgdata.so.7.2.2:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x804042000)
./libggz.so:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x80120f000)
./libggz.so.5:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x80120f000)
./libggzcore.so:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x801d7e000)
./libggzcore.so.9:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x801d7e000)
./libggzcore.so.9.0.0:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x801d7e000)
./libggzmod.so:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x801f83000)
./libggzmod.so.4:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x801f83000)
./libggzmod.so.4.1.0:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x801f83000)
./libgksu2.so:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x808e01000)
./libgksu2.so.0:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x808e01000)
./libgnome-keyring.so:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x801973000)
./libgnome-keyring.so.0:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x801973000)
./libgnome-keyring.so.0.1.1:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x801973000)
./libgnomeui-2.so:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x80bcbf000)
./libgnomeui-2.so.0:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x80bcbf000)
./libgnomeui-2.so.0.2400.4:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x80bcbf000)
./libgtk-vnc-1.0.so:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x805bc4000)
./libgtk-vnc-1.0.so.0:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x805bc4000)
./libgtk-vnc-1.0.so.0.0.1:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x805bc4000)
./libgweather.so:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x8090c9000)
./libgweather.so.1:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x8090c9000)
./libgweather.so.1.6.10:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x8090c9000)
./libotr.so:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x801218000)
./libotr.so.5:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x801218000)
./libotr.so.5.0.0:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x801218000)
./libsoup-gnome-2.4.so:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x80377f000)
./libsoup-gnome-2.4.so.1:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x80377f000)
./libsoup-gnome-2.4.so.1.5.0:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x80377f000)
./libtotem-plparser.so:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x804244000)
./libtotem-plparser.so.17:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x804244000)
./libtotem-plparser.so.17.0.1:
	libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x804244000)
Comment 10 Tijl Coosemans freebsd_committer freebsd_triage 2014-08-05 16:16:01 UTC
(In reply to freebsd from comment #9)
> This is a little nicer than grep.  I don't see how this will find ports that
> need the libtool archive in the build process, though.

That's why I asked for grep output, so please provide that.  There are more files there than *.so.  What I'm mostly interested in are *.la files so maybe the output of this command is shorter:

find -s /usr/local/lib -name '*.la' | xargs grep -l libgcrypt
Comment 11 freebsd 2014-08-05 16:41:02 UTC
Oh, OK. This found one port that refers to it. But then I rebuilt the port of libgksu2 and it doesn't need libgcrypt.la any more.  And then I rebuilt py-gnome-extras, and it didn't, either.  Double strange.

$  find . -name \*.la | xargs grep -H libgcrypt
./libgcrypt.la:# libgcrypt.la - a libtool library file
./libgcrypt.la:dlname='libgcrypt.so.20'
./libgcrypt.la:library_names='libgcrypt.so.20.0.1 libgcrypt.so.20 libgcrypt.so'
./libgcrypt.la:# Version information for libgcrypt.
./libgksu2.la:dependency_libs=' -R/usr/local/lib /usr/local/lib/libstartup-notification-1.la -L/usr/local/lib /usr/local/lib/libxcb-util.la /usr/local/lib/libX11-xcb.la /usr/local/lib/libgnome-keyring.la /usr/local/lib/libdbus-1.la -lpthread /usr/local/lib/libgcrypt.la /usr/local/lib/libgpg-error.la /usr/local/lib/libgtop-2.0.la -lkvm -lgeom -ldevstat -lutil /usr/local/lib/libgtk-x11-2.0.la /usr/local/lib/libgdk-x11-2.0.la /usr/local/lib/libpangocairo-1.0.la /usr/local/lib/libharfbuzz.la -lgraphite2 /usr/local/lib/libXinerama.la /usr/local/lib/libXi.la /usr/local/lib/libXrandr.la /usr/local/lib/libXext.la /usr/local/lib/libXcursor.la /usr/local/lib/libXcomposite.la /usr/local/lib/libXdamage.la /usr/local/lib/libXfixes.la /usr/local/lib/libatk-1.0.la /usr/local/lib/libcairo.la /usr/local/lib/libpixman-1.la /usr/local/lib/libxcb-shm.la /usr/local/lib/libxcb-render.la /usr/local/lib/libXrender.la /usr/local/lib/libX11.la /usr/local/lib/libxcb.la /usr/local/lib/libXau.la /usr/local/lib/libXdmcp.la /usr/local/lib/libpthread-stubs.la -lrpcsvc /usr/local/lib/libgdk_pixbuf-2.0.la -lpng15 /usr/local/lib/libpangoft2-1.0.la /usr/local/lib/libpango-1.0.la -lm /usr/local/lib/libfontconfig.la /usr/local/lib/libexpat.la /usr/local/lib/libfreetype.la -lbz2 /usr/local/lib/libgconf-2.la /usr/local/lib/libgio-2.0.la -lz /usr/local/lib/libORBit-2.la /usr/local/lib/libgmodule-2.0.la /usr/local/lib/libgthread-2.0.la /usr/local/lib/libgobject-2.0.la /usr/local/lib/libffi.la /usr/local/lib/libglib-2.0.la /usr/local/lib/libpcre.la /usr/local/lib/libintl.la /usr/local/lib/libiconv.la'
Comment 12 Tijl Coosemans freebsd_committer freebsd_triage 2014-08-05 17:02:48 UTC
Hmm, the libgcrypt update didn't bump all ports that depend on libgcrypt.  The original patch did, but it was committed a few weeks later and at that point some ports already had their PORTREVISION bumped and the patch wasn't updated for that.  The advice in UPDATING will still update all ports but I suspect it may do so in arbitrary order and that may cause build failures.  If all ports had been bumped correctly, then portmaster/portupgrade would have updated dependencies of a port before that port and there wouldn't have been a problem.  I'll see if I can track down those ports and bump their revision so that others don't run into this problem.  Then the libgcrypt.la file can be removed again.
Comment 13 commit-hook freebsd_committer freebsd_triage 2014-08-05 22:14:27 UTC
A commit references this bug:

Author: tijl
Date: Tue Aug  5 22:13:49 UTC 2014
New revision: 364143
URL: http://svnweb.freebsd.org/changeset/ports/364143

Log:
  Bump PORTREVISION on more ports that depend on libgcrypt after the update
  in r363436 and remove the UPDATING entry because it did not guarantee
  that all ports were updated nor that they were updated in the right order.
  Also remove libgcrypt.la again.

  PR:		192342
  Approved by:	portmgr (implicit, bump unstaged ports)

Changes:
  head/UPDATING
  head/archivers/freetar/Makefile
  head/archivers/zipper/Makefile
  head/audio/cddb-bundle/Makefile
  head/audio/gnustep-cdplayer/Makefile
  head/audio/mpdcon/Makefile
  head/databases/libgda4/Makefile
  head/databases/libgda5/Makefile
  head/databases/libgda5-ui/Makefile
  head/databases/sqlclient/Makefile
  head/deskutils/affiche/Makefile
  head/deskutils/appwrapper/Makefile
  head/deskutils/cartotheque/Makefile
  head/deskutils/charmap/Makefile
  head/deskutils/displaycalibrator/Makefile
  head/deskutils/gnustep-notebook/Makefile
  head/deskutils/gnustep-wrapper/Makefile
  head/deskutils/gworkspace/Makefile
  head/deskutils/gworkspace-gwmetadata/Makefile
  head/deskutils/helpviewer/Makefile
  head/deskutils/planner/Makefile
  head/deskutils/plopfolio/Makefile
  head/deskutils/preferences/Makefile
  head/deskutils/simpleagenda/Makefile
  head/deskutils/systempreferences/Makefile
  head/devel/gorm/Makefile
  head/devel/libopensync/Makefile
  head/devel/projectcenter/Makefile
  head/editors/abiword/Makefile
  head/editors/libreoffice/Makefile
  head/emulators/fuse-utils/Makefile
  head/finance/expense/Makefile
  head/ftp/gnustep-ftp/Makefile
  head/ftp/waiho/Makefile
  head/games/fortunate/Makefile
  head/games/gmastermind/Makefile
  head/games/gmines/Makefile
  head/games/gnustep-ladder/Makefile
  head/games/gnustep-sudoku/Makefile
  head/games/gomoku/Makefile
  head/games/grubik/Makefile
  head/games/gshisen/Makefile
  head/games/jigsaw/Makefile
  head/games/lapispuzzle/Makefile
  head/games/nextgo/Makefile
  head/graphics/camera/Makefile
  head/graphics/cenon/Makefile
  head/graphics/gnustep-slideshow/Makefile
  head/graphics/graphos/Makefile
  head/graphics/imageviewer/Makefile
  head/graphics/laternamagica/Makefile
  head/graphics/pixen/Makefile
  head/graphics/preview/Makefile
  head/graphics/price/Makefile
  head/graphics/swfmill/Makefile
  head/irc/inspircd/Makefile
  head/japanese/jishyo/Makefile
  head/lang/gscheme/Makefile
  head/mail/addresses/Makefile
  head/mail/addresses-goodies/Makefile
  head/mail/anubis/Makefile
  head/mail/claws-mail/Makefile
  head/mail/gnumail/Makefile
  head/math/edenmath/Makefile
  head/misc/gnustep-examples/Makefile
  head/multimedia/poe/Makefile
  head/multimedia/xbmc/Makefile
  head/net/csync2/Makefile
  head/net/gq/Makefile
  head/net/libvncserver/Makefile
  head/net/netatalk/Makefile
  head/net/netatalk3/Makefile
  head/net/remmina-plugin-vnc/Makefile
  head/net/remmina-plugins/Makefile
  head/net/remotedesk/Makefile
  head/net/tigervnc/Makefile
  head/net/vino/Makefile
  head/net/yaz/Makefile
  head/net/zillion/Makefile
  head/net-im/kmess-kde4/Makefile
  head/net-mgmt/collectd/Makefile
  head/net-mgmt/collectd5/Makefile
  head/news/lusernet/Makefile
  head/print/gspdf/Makefile
  head/science/fisicalab/Makefile
  head/science/gtamsanalyzer/Makefile
  head/science/paje/Makefile
  head/security/dirmngr/Makefile
  head/security/gnome-keyring/Makefile
  head/security/gnupg/Makefile
  head/security/keepassx2/Makefile
  head/security/libgcrypt/Makefile
  head/security/libgcrypt/pkg-plist
  head/security/libgnome-keyring/Makefile
  head/security/libssh/Makefile
  head/security/mate-keyring/Makefile
  head/security/openvas-libnasl/Makefile
  head/security/openvas-server/Makefile
  head/security/prelude-pflogger/Makefile
  head/security/seahorse/Makefile
  head/security/shishi/Makefile
  head/security/xmlsec1/Makefile
  head/sysutils/batmon/Makefile
  head/sysutils/timemon/Makefile
  head/textproc/duncan/Makefile
  head/textproc/easydiff/Makefile
  head/textproc/localize/Makefile
  head/textproc/p5-XML-LibXSLT/Makefile
  head/textproc/popup/Makefile
  head/textproc/rubygem-nokogiri/Makefile
  head/www/chromium/Makefile
  head/www/grr/Makefile
  head/x11/gskrab/Makefile
  head/x11/innerspace/Makefile
  head/x11/terminal.app/Makefile
  head/x11/yelp/Makefile
  head/x11-clocks/aclock/Makefile
  head/x11-toolkits/gnustep-back/Makefile
  head/x11-toolkits/gnustep-gui/Makefile