Date: 21 Jul 2012 02:18:57 -0000 From: Michael Gmelin <freebsd@grem.de> To: FreeBSD-gnats-submit@FreeBSD.org Cc: delphij@FreeBSD.org Subject: ports/170045: [PATCH] security/cryptopp: Optional build of shared library version Message-ID: <20120721021857.16560.qmail@mail.grem.de> Resent-Message-ID: <201207210230.q6L2UFtB080436@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 170045 >Category: ports >Synopsis: [PATCH] security/cryptopp: Optional build of shared library version >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Sat Jul 21 02:30:14 UTC 2012 >Closed-Date: >Last-Modified: >Originator: Michael Gmelin >Release: FreeBSD 8.2-RELEASE-p1 amd64 >Organization: Grem Equity GmbH >Environment: System: FreeBSD srv06 8.2-RELEASE-p1 FreeBSD 8.2-RELEASE-p1 #0 r221593: Sat May 7 15:12:25 >Description: Crypto++ includes a shared library target, which is helpful for certain use cases (including dlopen/dlclose and RTLD_GLOBAL). The FreeBSD port should allow to facilitate this. See also: http://www.cryptopp.com/wiki/Linux#Shared_objects Port maintainer (delphij@FreeBSD.org) is cc'd. Generated with FreeBSD Port Tools 0.99_6 (mode: change, diff: suffix) >How-To-Repeat: >Fix: This patch adds a STATIC option, which is enabled by default; future versions of the port might change the default to disabled, for the time being it seems more reasonable this way, so current users of cryptopp won't experience unpleasant surprises on update. In absence of an official dynamic library versioning scheme upstream the shared library interface version starts at 0 (so the shared libraries are installed as libcryptopp.so -> libcryptopp.so.0 -> libcryptopp.so.5.6.1). Building the dynamic library version adds -fPIC to CXXFLAGS. The port now uses new-style options and a new option THREADS has been added to allow thread-safe compilation. This is enabled by default, which - in practice - only affects the dynamic library version. The change to the patch to GNUMakefile allows passing of linker options to the shared library target. --- cryptopp-5.6.1_2.patch begins here --- diff -ruN --exclude=CVS ../cryptopp.orig/Makefile ./Makefile --- ../cryptopp.orig/Makefile 2011-11-10 05:38:32.000000000 +0000 +++ ./Makefile 2012-07-21 01:45:34.103056664 +0000 @@ -7,7 +7,7 @@ PORTNAME= cryptopp PORTVERSION= 5.6.1 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= security MASTER_SITES= SF \ http://www.cryptopp.com/ @@ -16,6 +16,12 @@ MAINTAINER= delphij@FreeBSD.org COMMENT= A free C++ class library of Cryptographic Primitives +OPTIONS_DEFINE= DEBUG DOCS STATIC THREADS +OPTIONS_DEFAULT= STATIC THREADS +STATIC_DESC= Build static version only (no shared libs) + +.include <bsd.port.options.mk> + NO_WRKSUBDIR= yes USE_ZIP= yes EXTRACT_BEFORE_ARGS= -aq @@ -23,8 +29,26 @@ MAKE_JOBS_SAFE= yes MAKEFILE= GNUmakefile -.if !defined(WITH_DEBUG) -CXXFLAGS+= -DNDEBUG +LIBVERSION= 0 +PLIST_SUB+= LIBVERSION=${LIBVERSION} +PLIST_SUB+= PORTVERSION=${PORTVERSION} + +.if ${PORT_OPTIONS:MDEBUG} +CXXFLAGS+= -DNDEBUG +.endif + +.if ${PORT_OPTIONS:MSTATIC} +PLIST_SUB+= DYNAMIC_ENABLED="@comment " +.else +PLIST_SUB+= DYNAMIC_ENABLED="" +MAKE_ARGS= all libcryptopp.so +CXXFLAGS+= -fPIC +USE_LDCONFIG= yes +.endif + +.if ${PORT_OPTIONS:MTHREADS} +CXXFLAGS+= ${PTHREAD_CFLAGS} +LDFLAGS+= ${PTHREAD_LIBS} .endif do-install: @@ -36,7 +60,12 @@ -and -not -name 'resource.h'`; do \ ${INSTALL_DATA} $$i ${PREFIX}/include/cryptopp; \ done) -.if !defined(NOPORTDOCS) +.if !${PORT_OPTIONS:MSTATIC} + ${INSTALL_LIB} ${WRKSRC}/libcryptopp.so ${PREFIX}/lib/libcryptopp.so.${PORTVERSION} + ${LN} -fs libcryptopp.so.${PORTVERSION} ${PREFIX}/lib/libcryptopp.so.${LIBVERSION} + ${LN} -fs libcryptopp.so.${LIBVERSION} ${PREFIX}/lib/libcryptopp.so +.endif +.if ${PORT_OPTIONS:MDOCS} ${MKDIR} ${PREFIX}/share/doc/cryptopp ${CP} ${WRKSRC}/Readme.txt ${PREFIX}/share/doc/cryptopp/README ${CP} ${WRKSRC}/License.txt ${PREFIX}/share/doc/cryptopp/License diff -ruN --exclude=CVS ../cryptopp.orig/files/patch-GNUmakefile ./files/patch-GNUmakefile --- ../cryptopp.orig/files/patch-GNUmakefile 2011-01-27 20:47:30.000000000 +0000 +++ ./files/patch-GNUmakefile 2012-07-21 01:35:28.726776901 +0000 @@ -1,5 +1,5 @@ --- ./GNUmakefile.orig 2010-08-09 14:22:42.000000000 -0700 -+++ ./GNUmakefile 2011-01-27 12:43:08.905856979 -0800 ++++ ./GNUmakefile 2012-07-21 03:14:01.000000000 +0200 @@ -1,4 +1,4 @@ -CXXFLAGS = -DNDEBUG -g -O2 +#CXXFLAGS = -DNDEBUG -g -O2 @@ -19,3 +19,12 @@ ISMINGW = $(shell $(CXX) --version 2>&1 | $(EGREP) -c "mingw") ifneq ($(GCC42_OR_LATER),0) +@@ -151,7 +151,7 @@ + $(RANLIB) $@ + + libcryptopp.so: $(LIBOBJS) +- $(CXX) -shared -o $@ $(LIBOBJS) ++ $(CXX) -shared -o $@ $(CXXFLAGS) $(LDFLAGS) $(LIBOBJS) + + cryptest.exe: libcryptopp.a $(TESTOBJS) + $(CXX) -o $@ $(CXXFLAGS) $(TESTOBJS) -L. -lcryptopp $(LDFLAGS) $(LDLIBS) diff -ruN --exclude=CVS ../cryptopp.orig/pkg-plist ./pkg-plist --- ../cryptopp.orig/pkg-plist 2009-03-27 00:02:32.000000000 +0000 +++ ./pkg-plist 2012-07-21 01:45:34.102055960 +0000 @@ -132,6 +132,9 @@ include/cryptopp/zinflate.h include/cryptopp/zlib.h lib/libcryptopp.a +%%DYNAMIC_ENABLED%%lib/libcryptopp.so +%%DYNAMIC_ENABLED%%lib/libcryptopp.so.%%LIBVERSION%% +%%DYNAMIC_ENABLED%%lib/libcryptopp.so.%%PORTVERSION%% @dirrm include/cryptopp %%PORTDOCS%%%%DOCSDIR%%/README %%PORTDOCS%%%%DOCSDIR%%/License --- cryptopp-5.6.1_2.patch ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120721021857.16560.qmail>