Date: Wed, 29 Mar 2006 03:00:26 +0200 From: Roman Neuhauser <neuhauser@sigpipe.cz> To: bms@freebsd.org Cc: freebsd-ports@FreeBSD.org, Kris Kennaway <kris@obsecurity.org> Subject: Re: amd64 and -fPIC Message-ID: <20060329010026.GA42066@isis.sigpipe.cz> In-Reply-To: <20060220043813.GA82552@xor.obsecurity.org> References: <20060220041815.3229.qmail@web32907.mail.mud.yahoo.com> <20060220043813.GA82552@xor.obsecurity.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--2fHTh5uZTiUOsy+g Content-Type: text/plain; charset=us-ascii Content-Disposition: inline # kris@obsecurity.org / 2006-02-19 23:38:13 -0500: > On Mon, Feb 20, 2006 at 05:18:15AM +0100, pfgshield-freebsd@yahoo.com wrote: (relocation errors in -fPIC-less static libraries on amd64) > The best solution is to make the port also build a shared version; > it's usually not that difficult to modify the makefile. That way you > don't have to add nasty hacks. > > Kris Bruce, net/libpcap port installs libpcap.so and libpcap.so.2 only with -DLIBPCAP_OVERWRITE_BASE, and has CFLAGS+=-fPIC on amd64. - Should the -fPIC be dropped? - Should the port install the .so even without the LIBPCAP_OVERWRITE_BASE flag? - If yes, what about the (upstream) /usr/local/lib/libpcap.so.0.9.4 vs /usr/lib/libpcap.so.2 that's in files/patchbase-Makefile.in? Please see the attached patch. It - replaces files/patchbase-Makefile.in with an INSTALL_TARGET - installs libpcap.so{,.2} unconditionally. I'm not sure the LIBPCAP_SOVER handling is correct, but can fix the patch according to your instructions (The code is broken at least when ${LIBPCAP_SOVER} equals ${PORTVERSION}). - drops -fPIC -- How many Vietnam vets does it take to screw in a light bulb? You don't know, man. You don't KNOW. Cause you weren't THERE. http://bash.org/?255991 --2fHTh5uZTiUOsy+g Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="net::libpcap-libpcap.so,0.patch" Index: Makefile =================================================================== RCS file: /home/ncvs/ports/net/libpcap/Makefile,v retrieving revision 1.7 diff -u -r1.7 Makefile --- Makefile 13 Dec 2005 00:13:50 -0000 1.7 +++ Makefile 29 Mar 2006 00:47:54 -0000 @@ -16,26 +16,25 @@ COMMENT= Ubiquitous network traffic capture library WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION} +INSTALL_TARGET= install install-shared MAN3= pcap.3 GNU_CONFIGURE= yes USE_BISON= yes +INSTALLS_SHLIB= yes .if defined(LIBPCAP_OVERWRITE_BASE) PREFIX= /usr PKGNAMESUFFIX= -overwrite-base MANPREFIX= ${PREFIX}/share CONFIGURE_ARGS+=--mandir=${MANPREFIX}/man -PLIST_SUB+= NOTBASE="@comment " -PLIST_SUB+= BASE="" -EXTRA_PATCHES+= ${FILESDIR}/patchbase-Makefile.in PKGMESSAGE= ${FILESDIR}/pkg-message-base -.else -PLIST_SUB+= BASE="@comment " -PLIST_SUB+= NOTBASE="" .endif +LIBPCAP_SOVER= 2 +PLIST_SUB+= LIBPCAP_SOVER="${LIBPCAP_SOVER}" + .if !defined(WITHOUT_IPV6) CONFIGURE_ARGS+= --enable-ipv6 .endif @@ -44,15 +43,14 @@ CONFIGURE_ARGS+= --without-dag .endif +display-pkg-message: .USE .if defined(LIBPCAP_OVERWRITE_BASE) -post-install: ${CAT} ${PKGMESSAGE} .endif -.include <bsd.port.pre.mk> - -.if ${ARCH} == "amd64" -CFLAGS+= -fPIC -.endif +post-install: display-pkg-message + cd ${PREFIX}/lib/ && \ + ${MV} libpcap.so.${PORTVERSION} libpcap.so.${LIBPCAP_SOVER} && \ + ${LN} -sf libpcap.so.${LIBPCAP_SOVER} libpcap.so -.include <bsd.port.post.mk> +.include <bsd.port.mk> Index: pkg-plist =================================================================== RCS file: /home/ncvs/ports/net/libpcap/pkg-plist,v retrieving revision 1.2 diff -u -r1.2 pkg-plist --- pkg-plist 13 Jan 2004 18:04:51 -0000 1.2 +++ pkg-plist 29 Mar 2006 00:47:54 -0000 @@ -1,6 +1,6 @@ lib/libpcap.a -%%BASE%%lib/libpcap.so.2 -%%BASE%%lib/libpcap.so +lib/libpcap.so.%%LIBPCAP_SOVER%% +lib/libpcap.so include/pcap.h include/pcap-namedb.h include/pcap-bpf.h Index: files/patchbase-Makefile.in =================================================================== RCS file: files/patchbase-Makefile.in diff -N files/patchbase-Makefile.in --- files/patchbase-Makefile.in 13 Jan 2004 18:04:51 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,30 +0,0 @@ ---- Makefile.in.orig Thu Jan 8 16:38:30 2004 -+++ Makefile.in Thu Jan 8 16:41:40 2004 -@@ -96,13 +96,17 @@ - - CLEANFILES = $(OBJ) libpcap.a $(GENSRC) $(GENHDR) lex.yy.c - --all: libpcap.a -+all: libpcap.a libpcap.so.2 - - libpcap.a: $(OBJ) - @rm -f $@ - ar rc $@ $(OBJ) $(LIBS) - $(RANLIB) $@ - -+libpcap.so.2: $(OBJ) -+ @rm -f $@ -+ $(CC) -shared -Wl,-x -o libpcap.so.2 -Wl,-soname,libpcap.so.2 `lorder *.o | tsort -q` -+ - scanner.c: $(srcdir)/scanner.l - @rm -f $@ - $(LEX) -t $< > $$$$.$@; mv $$$$.$@ $@ -@@ -154,6 +158,8 @@ - install: - [ -d $(DESTDIR)$(libdir) ] || \ - (mkdir -p $(DESTDIR)$(libdir); chmod 755 $(DESTDIR)$(libdir)) -+ $(INSTALL_DATA) libpcap.so.2 $(DESTDIR)$(libdir)/libpcap.so.2 -+ ln -fs $(DESTDIR)$(libdir)/libpcap.so.2 $(DESTDIR)$(libdir)/libpcap.so - $(INSTALL_DATA) libpcap.a $(DESTDIR)$(libdir)/libpcap.a - $(RANLIB) $(DESTDIR)$(libdir)/libpcap.a - [ -d $(DESTDIR)$(includedir) ] || \ --2fHTh5uZTiUOsy+g--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060329010026.GA42066>