From: Samuli Suominen Date: Sun, 7 Aug 2011 20:09:31 +0000 (+0000) Subject: Import Fedora patch to remove sysfsutils depend from arping.c wrt #377687 X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=50975491c6441c4daed67d74199ce0eed94c44ac;p=gentoo.git Import Fedora patch to remove sysfsutils depend from arping.c wrt #377687 Package-Manager: portage-2.2.0_alpha47/cvs/Linux x86_64 --- diff --git a/net-misc/iputils/ChangeLog b/net-misc/iputils/ChangeLog index 06ef82030b9f..04b21caa66f9 100644 --- a/net-misc/iputils/ChangeLog +++ b/net-misc/iputils/ChangeLog @@ -1,6 +1,14 @@ # ChangeLog for net-misc/iputils # Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/net-misc/iputils/ChangeLog,v 1.96 2011/02/19 18:09:48 vapier Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-misc/iputils/ChangeLog,v 1.97 2011/08/07 20:09:31 ssuominen Exp $ + +*iputils-20101006-r1 (07 Aug 2011) + + 07 Aug 2011; Samuli Suominen + +files/iputils-20071127-infiniband.patch, +iputils-20101006-r1.ebuild, + iputils-99999999.ebuild: + Import Fedora patch to remove sysfsutils depend from arping.c wrt #377687 by + Anthony Basile *iputils-20101006 (19 Feb 2011) diff --git a/net-misc/iputils/Manifest b/net-misc/iputils/Manifest index da41c71753b5..1c939b97f199 100644 --- a/net-misc/iputils/Manifest +++ b/net-misc/iputils/Manifest @@ -4,6 +4,7 @@ Hash: SHA256 AUX 021109-uclibc-no-ether_ntohost.patch 635 RMD160 234010cd5aadc5086beb638c19514659974939f8 SHA1 8e7fda98a1cc1fae5b8f75f9aec200fcb3afee49 SHA256 cf8135fd380918890a1da8de438d5283111f1e9ea0754b4f5c78bb703fcf617b AUX iputils-20070202-idn.patch 3303 RMD160 77cc510e77956cdb3b598297756998ed9728775d SHA1 aad5d04fbe861f049d58ecfc3d6efebb92b63f10 SHA256 449e356a14aee6ad27ac4581055d489da764403447df8f2a50ecb1c4ac71e533 AUX iputils-20070202-makefile.patch 982 RMD160 1b245b116eb9ede2698e7a37122cd1e6fb4c4dfd SHA1 aef3be153f43179c09289028ad945669bd19a0f5 SHA256 10da0ffbbf0d3df72f0a7218cd94a2668eff318e12f402ae3279fec090462b4a +AUX iputils-20071127-infiniband.patch 7748 RMD160 343761bf50becbab90a570a879a536f49b0bb6ab SHA1 03e58876fe4cced3a0a2fcbac2cdabf49245914b SHA256 98336a7656f2b0e1f080223395658ac57f545ef47644d68e989664a184c769d5 AUX iputils-20071127-kernel-ifaddr.patch 1467 RMD160 25082fb7976aaefdd6f4da753871d7d744fc171d SHA1 8ea5c4fe3aeed984bd6f6e377b4e304f38127c5d SHA256 24d24c86676c8d6febb52650e53f202051ec9f185932b87d8400eee0f77f569e AUX iputils-20071127-nonroot-floodping.patch 497 RMD160 7dddcb6e07c67620a83ff4a9d827270404e3fc32 SHA1 337b226525895f5b02463597d95efc7ea204f399 SHA256 f0c7c2d4843873da96f795fb766a65ed39b6d8ab74ae4aa5a47444c9a3db0e52 AUX iputils-20100418-aliasing.patch 2897 RMD160 210d763dbae8d31485a5bf1f1792cd9183e93c54 SHA1 de370b6fa6ff56c557741f4edbc4fb70c22f3c35 SHA256 8df8b1c510a1630d06d71f801d57c9182729f0308545026b999868ad55469914 @@ -20,14 +21,15 @@ DIST iputils-s20100418.tar.bz2 94237 RMD160 64ea24bb57ae2b8d666b4bf5d35c2d372368 DIST iputils-s20101006-manpages.tar.bz2 21638 RMD160 3568e7b294cd6dbe167745573b883f4ea83fe35f SHA1 63132b3c98cd76f72d2f2928f6f29ded420a410d SHA256 071b13a9154070168204ff49fa2564b56e4a1706020a2923ba9d3198f317d954 DIST iputils-s20101006.tar.bz2 94386 RMD160 d97c5c51f88db6e39d79812dfbc88efdc329305f SHA1 a08cc5423a7bf940205f2353fe3d129cd39ff242 SHA256 fd3af46c80ebb99607c2ca1f2a3608b6fe828e25bbec6e54f2afd25f6ddb6ee7 EBUILD iputils-20100418-r1.ebuild 2446 RMD160 a0e6a5e1cc293d18a21461f43d50e7a7164efa21 SHA1 f83389a256745b7cb38b0c7c70728f386e7aa61a SHA256 be5ba47a48829aba8776fb0069f28c5b21e308bf43161f09912adc997e0004a1 +EBUILD iputils-20101006-r1.ebuild 2819 RMD160 04836e2c79d036b61801a1ac2dfd6ad4f0c22b3f SHA1 1e7a72b14382305409a750191df1cfbab710242e SHA256 5d6bf64ed3e3847abb8bfa828bfa7be616748752ad3dd8c23b2573b730ea61b9 EBUILD iputils-20101006.ebuild 2835 RMD160 7ce7328b02e13bea6229d5932d44562eeaaca313 SHA1 d05172502a4a848cea6b3b99d327ebcd0baba387 SHA256 c7c8db63108aab90a72d221c35962dd6ef1d02a6d8618df522c70ed9672a060b -EBUILD iputils-99999999.ebuild 2835 RMD160 c14faad44a22af53995a4c10f0461e19ed6ee358 SHA1 d2ae56dd9feb8e825fc39987efd66c6cd0286c1e SHA256 175ffeb10a92ba622951d030f96d9ed03a1b66a3505edff331a60b6ce6c23b07 -MISC ChangeLog 14136 RMD160 4fe8ee5741420577e1c548809120ad3f7f9fc4e4 SHA1 8c94fb55c4e9f14e5ac80356dec7d80846fa2e21 SHA256 816152e197106f1c7b01666f34d27d20702896c44c8ba7c9c98184d5295ab518 +EBUILD iputils-99999999.ebuild 2816 RMD160 43783fd9b608149f30b566dd5334af3ea4589964 SHA1 93e93b02689efb3cde2c6666855a5db505a02144 SHA256 2ce6811b1857a258990572d4178e518750ed1b3f90bd61c524231515c1795e82 +MISC ChangeLog 14426 RMD160 8c9a692e04d6665203abecdd2d704f7fb4517cec SHA1 c48804ffe21ebe5663aaac015123bf9d2b975f8b SHA256 09db7f7f37e371078dce1920a00fbca389419aa2b870afb608a812299c9b4126 MISC metadata.xml 299 RMD160 44839875595bd58f9d7f5245d366eb3d0e1ffb1f SHA1 224a2c26c04621e6277b1d887902911e4a9bc2eb SHA256 d028d4ba25f3ed29afbbf77abd924a617098bff71e6a0c37b7d6c0a24cd65a78 -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.17 (GNU/Linux) -iF4EAREIAAYFAk1gB3IACgkQaC/OocHi7Ja8uwEAkmF5aVCBH2A0gYNc2B5rXUBS -6mHuUzoDf3F7hrL3yEkA/jqniioYUu6ZPujMnX3J2SfZRyhlKd8wKTVnYR/XM+BF -=/0b5 +iF4EAREIAAYFAk4+8DMACgkQXkR9YqOcLPFSaQD9GXZ45fvxffOvHQDr9PwZUnpS +3ioZPaIJxjOSx7qpY30A/0txn419OK6+mbK9V2NIYn5nYtsIWFJ3kcD9pdNYYUfY +=p/Ht -----END PGP SIGNATURE----- diff --git a/net-misc/iputils/files/iputils-20071127-infiniband.patch b/net-misc/iputils/files/iputils-20071127-infiniband.patch new file mode 100644 index 000000000000..2bf06a204565 --- /dev/null +++ b/net-misc/iputils/files/iputils-20071127-infiniband.patch @@ -0,0 +1,280 @@ +Otherwise same as Fedora patch except for the Makefile part + +http://bugs.gentoo.org/show_bug.cgi?id=377687 +http://pkgs.fedoraproject.org/gitweb/?p=iputils.git;a=blob_plain;f=iputils-20071127-infiniband.patch;hb=HEAD + +--- arping.c ++++ arping.c +@@ -32,8 +32,6 @@ + #include + #include + +-#include +- + #include "SNAPSHOT.h" + + static void usage(void) __attribute__((noreturn)); +@@ -52,14 +50,22 @@ int unicasting; + int s; + int broadcast_only; + +-struct sockaddr_storage me; +-struct sockaddr_storage he; ++struct sockaddr_ll *me=NULL; ++struct sockaddr_ll *he=NULL; + + struct timeval start, last; + + int sent, brd_sent; + int received, brd_recv, req_recv; + ++#define SYSFS_MNT_PATH "/sys" ++#define SYSFS_CLASS "class" ++#define SYSFS_NET "net" ++#define SYSFS_BROADCAST "broadcast" ++#define SYSFS_PATH_ENV "SYSFS_PATH" ++#define SYSFS_PATH_LEN 256 ++#define SOCKADDR_LEN (2 * sizeof(struct sockaddr_ll)) ++ + #define MS_TDIFF(tv1,tv2) ( ((tv1).tv_sec-(tv2).tv_sec)*1000 + \ + ((tv1).tv_usec-(tv2).tv_usec)/1000 ) + +@@ -166,6 +172,10 @@ void finish(void) + printf("\n"); + fflush(stdout); + } ++ ++ free(me); ++ free(he); ++ + if (dad) + exit(!!received); + if (unsolicited) +@@ -186,8 +196,7 @@ void catcher(void) + finish(); + + if (last.tv_sec==0 || MS_TDIFF(tv,last) > 500) { +- send_pack(s, src, dst, +- (struct sockaddr_ll *)&me, (struct sockaddr_ll *)&he); ++ send_pack(s, src, dst, me, he); + if (count == 0 && unsolicited) + finish(); + } +@@ -234,7 +243,7 @@ int recv_pack(unsigned char *buf, int le + return 0; + if (ah->ar_pln != 4) + return 0; +- if (ah->ar_hln != ((struct sockaddr_ll *)&me)->sll_halen) ++ if (ah->ar_hln != me->sll_halen) + return 0; + if (len < sizeof(*ah) + 2*(4 + ah->ar_hln)) + return 0; +@@ -245,7 +254,7 @@ int recv_pack(unsigned char *buf, int le + return 0; + if (src.s_addr != dst_ip.s_addr) + return 0; +- if (memcmp(p+ah->ar_hln+4, ((struct sockaddr_ll *)&me)->sll_addr, ah->ar_hln)) ++ if (memcmp(p+ah->ar_hln+4, me->sll_addr, ah->ar_hln)) + return 0; + } else { + /* DAD packet was: +@@ -263,7 +272,7 @@ int recv_pack(unsigned char *buf, int le + */ + if (src_ip.s_addr != dst.s_addr) + return 0; +- if (memcmp(p, ((struct sockaddr_ll *)&me)->sll_addr, ((struct sockaddr_ll *)&me)->sll_halen) == 0) ++ if (memcmp(p, me->sll_addr, me->sll_halen) == 0) + return 0; + if (src.s_addr && src.s_addr != dst_ip.s_addr) + return 0; +@@ -279,7 +288,7 @@ int recv_pack(unsigned char *buf, int le + printf("for %s ", inet_ntoa(dst_ip)); + s_printed = 1; + } +- if (memcmp(p+ah->ar_hln+4, ((struct sockaddr_ll *)&me)->sll_addr, ah->ar_hln)) { ++ if (memcmp(p+ah->ar_hln+4, me->sll_addr, ah->ar_hln)) { + if (!s_printed) + printf("for "); + printf("["); +@@ -305,40 +314,67 @@ int recv_pack(unsigned char *buf, int le + if (quit_on_reply) + finish(); + if(!broadcast_only) { +- memcpy(((struct sockaddr_ll *)&he)->sll_addr, p, ((struct sockaddr_ll *)&me)->sll_halen); ++ memcpy(he->sll_addr, p, me->sll_halen); + unicasting=1; + } + return 1; + } + +-void set_device_broadcast(char *device, unsigned char *ba, size_t balen) ++int get_sysfs_mnt_path(char *mnt_path, size_t len) + { +- struct sysfs_class_device *dev; +- struct sysfs_attribute *brdcast; +- unsigned char *p; +- int ch; ++ const char *sysfs_path_env; ++ int pth_len=0; + +- dev = sysfs_open_class_device("net", device); +- if (!dev) { +- perror("sysfs_open_class_device(net)"); +- exit(2); +- } ++ if (len == 0 || mnt_path == NULL) ++ return -1; + +- brdcast = sysfs_get_classdev_attr(dev, "broadcast"); +- if (!brdcast) { +- perror("sysfs_get_classdev_attr(broadcast)"); +- exit(2); +- } ++ /* possible overrride of real mount path */ ++ sysfs_path_env = getenv(SYSFS_PATH_ENV); ++ memset(mnt_path, 0, len); ++ strncpy(mnt_path, ++ sysfs_path_env != NULL ? sysfs_path_env : SYSFS_MNT_PATH, ++ len-1); + +- if (sysfs_read_attribute(brdcast)) { +- perror("sysfs_read_attribute"); +- exit(2); +- } ++ if ((pth_len = strlen(mnt_path)) > 0 && mnt_path[pth_len-1] == '/') ++ mnt_path[pth_len-1] = '\0'; ++ ++ return 0; ++} ++ ++int make_sysfs_broadcast_path(char *broadcast_path, size_t len) ++{ ++ char mnt_path[SYSFS_PATH_LEN]; ++ ++ if (get_sysfs_mnt_path(mnt_path, len) != 0) ++ return -1; + +- for (p = ba, ch = 0; p < ba + balen; p++, ch += 3) +- *p = strtoul(brdcast->value + ch, NULL, 16); ++ snprintf(broadcast_path, len, ++ "%s/" SYSFS_CLASS "/" SYSFS_NET "/%s/" SYSFS_BROADCAST, ++ mnt_path, device); + +- return; ++ return 0; ++} ++ ++char * read_sysfs_broadcast(char *brdcast_path) ++{ ++ int fd; ++ int len_to_read; ++ char *brdcast = NULL; ++ ++ if ((fd = open(brdcast_path, O_RDONLY)) > -1) { ++ len_to_read = lseek(fd, 0L, SEEK_END); ++ if ((brdcast = malloc(len_to_read+1)) != NULL) { ++ lseek(fd, 0L, SEEK_SET); ++ memset(brdcast, 0, len_to_read+1); ++ if (read(fd, brdcast, len_to_read) == -1) { ++ free(brdcast); ++ brdcast = NULL; ++ } ++ } ++ close(fd); ++ } ++ ++ return brdcast; + } + + int +@@ -356,6 +392,17 @@ main(int argc, char **argv) + exit(-1); + } + ++ me = malloc(SOCKADDR_LEN); ++ if (!me) { ++ fprintf(stderr, "arping: could not allocate memory\n"); ++ exit(1); ++ } ++ he = malloc(SOCKADDR_LEN); ++ if (!he) { ++ fprintf(stderr, "arping: could not allocate memory\n"); ++ exit(1); ++ } ++ + while ((ch = getopt(argc, argv, "h?bfDUAqc:w:s:I:V")) != EOF) { + switch(ch) { + case 'b': +@@ -504,34 +551,51 @@ main(int argc, char **argv) + close(probe_fd); + }; + +- ((struct sockaddr_ll *)&me)->sll_family = AF_PACKET; +- ((struct sockaddr_ll *)&me)->sll_ifindex = ifindex; +- ((struct sockaddr_ll *)&me)->sll_protocol = htons(ETH_P_ARP); +- if (bind(s, (struct sockaddr*)&me, sizeof(me)) == -1) { ++ me->sll_family = AF_PACKET; ++ me->sll_ifindex = ifindex; ++ me->sll_protocol = htons(ETH_P_ARP); ++ if (bind(s, (struct sockaddr*)me, SOCKADDR_LEN) == -1) { + perror("bind"); + exit(2); + } + + if (1) { +- socklen_t alen = sizeof(me); +- if (getsockname(s, (struct sockaddr*)&me, &alen) == -1) { ++ socklen_t alen = SOCKADDR_LEN; ++ if (getsockname(s, (struct sockaddr*)me, &alen) == -1) { + perror("getsockname"); + exit(2); + } + } +- if (((struct sockaddr_ll *)&me)->sll_halen == 0) { ++ if (me->sll_halen == 0) { + if (!quiet) + printf("Interface \"%s\" is not ARPable (no ll address)\n", device); + exit(dad?0:2); + } + +- he = me; ++ memcpy(he, me, SOCKADDR_LEN); + + #if 1 +- set_device_broadcast(device, ((struct sockaddr_ll *)&he)->sll_addr, +- ((struct sockaddr_ll *)&he)->sll_halen); ++ char brdcast_path[SYSFS_PATH_LEN]; ++ char *brdcast_val=NULL; ++ char *next_ch; ++ ++ if (make_sysfs_broadcast_path(brdcast_path, sizeof brdcast_path) != 0) { ++ perror("sysfs attribute broadcast"); ++ exit(2); ++ } ++ ++ if ((brdcast_val = read_sysfs_broadcast(brdcast_path)) == NULL) { ++ perror("sysfs read broadcast value"); ++ exit(2); ++ } ++ ++ for (ch=0; chsll_halen; ch++) { ++ he->sll_addr[ch] = strtol(brdcast_val + (ch*3), &next_ch, 16); ++ } ++ ++ free(brdcast_val); + #else +- memset(((struct sockaddr_ll *)&he)->sll_addr, -1, ((struct sockaddr_ll *)&he)->sll_halen); ++ memset(he->sll_addr, -1, he->sll_halen); + #endif + + if (!quiet) { +--- Makefile ++++ Makefile +@@ -28,7 +28,6 @@ + ping6: LDLIBS += -lidn + endif + +-arping: LDLIBS += -lsysfs + ping6: LDLIBS += -lresolv -lcrypto + + tftpd: tftpd.o tftpsubs.o diff --git a/net-misc/iputils/iputils-20101006-r1.ebuild b/net-misc/iputils/iputils-20101006-r1.ebuild new file mode 100644 index 000000000000..4a24f98ed06f --- /dev/null +++ b/net-misc/iputils/iputils-20101006-r1.ebuild @@ -0,0 +1,93 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/net-misc/iputils/iputils-20101006-r1.ebuild,v 1.1 2011/08/07 20:09:31 ssuominen Exp $ + +# For released versions, we precompile the man/html pages and store +# them in a tarball on our mirrors. This avoids ugly issues while +# building stages, and when the jade/sgml packages are broken (which +# seems to be more common than would be nice). + +EAPI="2" + +inherit flag-o-matic eutils toolchain-funcs +if [[ ${PV} == "99999999" ]] ; then + EGIT_REPO_URI="git://www.linux-ipv6.org/gitroot/iputils" + inherit git +else + SRC_URI="http://www.skbuff.net/iputils/iputils-s${PV}.tar.bz2 + mirror://gentoo/iputils-s${PV}-manpages.tar.bz2" + KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~amd64-linux ~x86-linux" +fi + +DESCRIPTION="Network monitoring tools including ping and ping6" +HOMEPAGE="http://www.linux-foundation.org/en/Net:Iputils" + +LICENSE="BSD" +SLOT="0" +IUSE="doc idn ipv6 SECURITY_HAZARD ssl static" + +RDEPEND="!net-misc/rarpd + ssl? ( dev-libs/openssl ) + idn? ( net-dns/libidn )" +DEPEND="${RDEPEND} + virtual/os-headers" +if [[ ${PV} == "99999999" ]] ; then + DEPEND+=" + app-text/openjade + dev-perl/SGMLSpm + app-text/docbook-sgml-dtd + app-text/docbook-sgml-utils + " +fi + +S=${WORKDIR}/${PN}-s${PV} + +src_prepare() { + epatch "${FILESDIR}"/021109-uclibc-no-ether_ntohost.patch + epatch "${FILESDIR}"/${PN}-20100418-openssl.patch #335436 + epatch "${FILESDIR}"/${PN}-20100418-so_mark.patch #335347 + epatch "${FILESDIR}"/${PN}-20100418-makefile.patch + epatch "${FILESDIR}"/${PN}-20100418-proper-libs.patch #332703 + epatch "${FILESDIR}"/${PN}-20100418-printf-size.patch + epatch "${FILESDIR}"/${PN}-20100418-aliasing.patch + epatch "${FILESDIR}"/${PN}-20071127-kernel-ifaddr.patch + epatch "${FILESDIR}"/${PN}-20070202-idn.patch #218638 + epatch "${FILESDIR}"/${PN}-20071127-infiniband.patch #377687 + use SECURITY_HAZARD && epatch "${FILESDIR}"/${PN}-20071127-nonroot-floodping.patch + use static && append-ldflags -static + use ssl && append-cppflags -DHAVE_OPENSSL + use ipv6 || sed -i -e 's:IPV6_TARGETS=:#IPV6_TARGETS=:' Makefile + export IDN=$(use idn && echo yes) +} + +src_compile() { + tc-export CC + emake || die + + if [[ ${PV} == "99999999" ]] ; then + emake -j1 html man || die + fi +} + +src_install() { + into / + dobin ping || die + use ipv6 && dobin ping6 + dosbin arping || die + into /usr + dosbin tracepath || die + use ipv6 && dosbin trace{path,route}6 + dosbin clockdiff rarpd rdisc ipg tftpd || die + + fperms 4711 /bin/ping + use ipv6 && fperms 4711 /bin/ping6 /usr/sbin/traceroute6 + + dodoc INSTALL RELNOTES + use ipv6 \ + && dosym ping.8 /usr/share/man/man8/ping6.8 \ + || rm -f doc/*6.8 + rm -f doc/setkey.8 + doman doc/*.8 + + use doc && dohtml doc/*.html +} diff --git a/net-misc/iputils/iputils-99999999.ebuild b/net-misc/iputils/iputils-99999999.ebuild index 7a153577ce29..833aef7c9023 100644 --- a/net-misc/iputils/iputils-99999999.ebuild +++ b/net-misc/iputils/iputils-99999999.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/net-misc/iputils/iputils-99999999.ebuild,v 1.3 2011/02/19 18:09:49 vapier Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-misc/iputils/iputils-99999999.ebuild,v 1.4 2011/08/07 20:09:31 ssuominen Exp $ # For released versions, we precompile the man/html pages and store # them in a tarball on our mirrors. This avoids ugly issues while @@ -26,11 +26,9 @@ LICENSE="BSD" SLOT="0" IUSE="doc idn ipv6 SECURITY_HAZARD ssl static" -# sysfsutils is needed for libsysfs which is used by arping only RDEPEND="!net-misc/rarpd ssl? ( dev-libs/openssl ) - idn? ( net-dns/libidn ) - sys-fs/sysfsutils" + idn? ( net-dns/libidn )" DEPEND="${RDEPEND} virtual/os-headers" if [[ ${PV} == "99999999" ]] ; then @@ -54,6 +52,7 @@ src_prepare() { epatch "${FILESDIR}"/${PN}-20100418-aliasing.patch epatch "${FILESDIR}"/${PN}-20071127-kernel-ifaddr.patch epatch "${FILESDIR}"/${PN}-20070202-idn.patch #218638 + epatch "${FILESDIR}"/${PN}-20071127-infiniband.patch #377687 use SECURITY_HAZARD && epatch "${FILESDIR}"/${PN}-20071127-nonroot-floodping.patch use static && append-ldflags -static use ssl && append-cppflags -DHAVE_OPENSSL