From owner-freebsd-ports@FreeBSD.ORG Wed Mar 29 01:00:28 2006 Return-Path: <owner-freebsd-ports@FreeBSD.ORG> X-Original-To: freebsd-ports@FreeBSD.org Delivered-To: freebsd-ports@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id AF99316A401; Wed, 29 Mar 2006 01:00:28 +0000 (UTC) (envelope-from neuhauser@sigpipe.cz) Received: from isis.sigpipe.cz (fw.sigpipe.cz [62.245.70.224]) by mx1.FreeBSD.org (Postfix) with ESMTP id BFFB043D48; Wed, 29 Mar 2006 01:00:27 +0000 (GMT) (envelope-from neuhauser@sigpipe.cz) Received: by isis.sigpipe.cz (Postfix, from userid 1001) id 7FF221F87BEE; Wed, 29 Mar 2006 03:00:26 +0200 (CEST) Date: Wed, 29 Mar 2006 03:00:26 +0200 From: Roman Neuhauser <neuhauser@sigpipe.cz> To: bms@freebsd.org Message-ID: <20060329010026.GA42066@isis.sigpipe.cz> Mail-Followup-To: bms@freebsd.org, Kris Kennaway <kris@obsecurity.org>, freebsd-ports@FreeBSD.org References: <20060220041815.3229.qmail@web32907.mail.mud.yahoo.com> <20060220043813.GA82552@xor.obsecurity.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="2fHTh5uZTiUOsy+g" Content-Disposition: inline In-Reply-To: <20060220043813.GA82552@xor.obsecurity.org> User-Agent: Mutt/1.5.9i Cc: freebsd-ports@FreeBSD.org, Kris Kennaway <kris@obsecurity.org> Subject: Re: amd64 and -fPIC X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD <freebsd-ports.freebsd.org> List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/freebsd-ports>, <mailto:freebsd-ports-request@freebsd.org?subject=unsubscribe> List-Archive: <http://lists.freebsd.org/pipermail/freebsd-ports> List-Post: <mailto:freebsd-ports@freebsd.org> List-Help: <mailto:freebsd-ports-request@freebsd.org?subject=help> List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/freebsd-ports>, <mailto:freebsd-ports-request@freebsd.org?subject=subscribe> X-List-Received-Date: Wed, 29 Mar 2006 01:00:29 -0000 --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--