Problem with .so numbering on FreeBSD in contrast to Linux

Jeremy Messenger mezz7 at cox.net
Sat Feb 21 08:54:23 PST 2009


On Sat, 21 Feb 2009 01:08:07 -0600, Thomas Schmitt <scdbackup at gmx.net>  
wrote:

> Hi,
>
> Sam Lawrance wrote:
>> http://www.freebsd.org/doc/en/books/developers-handbook/policies-shlib.html
>
> That description is similar to what i experience
> on my Linux system but not to what i see on the
> FreeBSD server where i do my tests:
>  everest.free-shells.com.ar
>  FreeBSD 6.3-RELEASE-p5 (KEVEREST-6.3) #0: Thu Oct  9 13:54:44 ART 2008
> There is only one number after .so whereas
> policies-shlib.html talks of major.minor.
>
> So obviously my ./libtool resp. the programs used
> inside do not follow this convention.
> (autotools is not my personal choice. It was
>  already in use when i became upstream of libburn.
>  Its main advantage is its social standing in
>  the community of distro packagers.)
>
>
> Jeremy Messenger wrote:
>> http://people.freebsd.org/~mezz/libtool.txt
>
> That's hard to read but seems to be exactly about
> my problem.
> I'll explore that. "ltmain.sh" is mentioned.
> Maybe i can do a private hack in my copy of it.
> This code snippet looks promising:
>           case $version_type in
>           darwin|linux|osf|windows)
>             current=`expr $number_major + $number_minor`
>             age="$number_minor"
>             revision="$number_revision"
>             ;;
>           freebsd-aout|freebsd-elf|sunos)
>             current="$number_major"
>             revision="$number_minor"
>             age="0"
>             ;;
>
> Is "ltverhack" a piece of software ?
> (Can i have a look at it somewhere ?)

The ltverhack is a hack in ports/Mk/bsd.gnome.mk[1].

bsd.gnome.mk (693 line):
----------------------------------------------------
ltverhack_PRE_PATCH=	for file in gnome-ltmain.sh gnome-libtool; do \
							if [ -f ${WRKDIR}/$$file ]; then \
								${REINPLACE_CMD} -e \
									'/freebsd-elf)/,/;;/  
s|major="\.$$current"|${ltverhack_LIB_VERSION}|; \
									 /freebsd-elf)/,/;;/  
s|versuffix="\.$$current"|versuffix="$$major"|' \
									${WRKDIR}/$$file; \
							fi; \
						done
----------------------------------------------------

http://www.freebsd.org/cgi/cvsweb.cgi/ports/x11-toolkits/gtk20/pkg-plist.diff?r1=1.90;r2=1.91

This URL above is an example what looks like when x11-toolkits/gtk20  
started to use ltverhack.

----------------------------------------------------
  lib/libgdk-x11-2.0.a
  lib/libgdk-x11-2.0.so
-lib/libgdk-x11-2.0.so.600
+lib/libgdk-x11-2.0.so.0
  lib/libgdk_pixbuf-2.0.a
  lib/libgdk_pixbuf-2.0.so
-lib/libgdk_pixbuf-2.0.so.600
+lib/libgdk_pixbuf-2.0.so.0
  lib/libgdk_pixbuf_xlib-2.0.a
  lib/libgdk_pixbuf_xlib-2.0.so
-lib/libgdk_pixbuf_xlib-2.0.so.600
+lib/libgdk_pixbuf_xlib-2.0.so.0
  lib/libgtk-x11-2.0.a
  lib/libgtk-x11-2.0.so
-lib/libgtk-x11-2.0.so.600
+lib/libgtk-x11-2.0.so.0
----------------------------------------------------

[1] http://www.freebsd.org/cgi/cvsweb.cgi/ports/Mk/bsd.gnome.mk

Cheers,
Mezz

>> <mezz7> Why do libtool have to be weird? 600 - 600..
>> couldn't it be simple to just 0? :-)
>
> It is confusing that the libtool documentation
> talks about a .so numbering scheme which would
> allow to demand a upper and lower limits for LT_AGE
> at link time.
> Neither Linux nor FreeBSD seem to implement that
> scheme. It would be very convenient though.
>
> All in all, as upstream, i would love to trash .so
> in total. With my apps i take care to provide
> statically linked versions as alternative to the
> .so cripples.
> But, sigh, the world wants DLLs.
>
> Many thanks for your help.
>
> Have a nice day :)
>
> Thomas


-- 
mezz7 at cox.net  -  mezz at FreeBSD.org
FreeBSD GNOME Team
http://www.FreeBSD.org/gnome/  -  gnome at FreeBSD.org


More information about the freebsd-ports mailing list