Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Feb 2015 16:02:43 +0000 (UTC)
From:      Tilman Keskinoz <arved@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r379170 - in head/net-im: . libstrophe libstrophe/files
Message-ID:  <201502171602.t1HG2hag090942@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: arved
Date: Tue Feb 17 16:02:43 2015
New Revision: 379170
URL: https://svnweb.freebsd.org/changeset/ports/379170
QAT: https://qat.redports.org/buildarchive/r379170/

Log:
  Add port for libstrophe, an XMPP library for C
  
  Parts of this port is based on work by fabianfreyer@github

Added:
  head/net-im/libstrophe/
  head/net-im/libstrophe/Makefile   (contents, props changed)
  head/net-im/libstrophe/distinfo   (contents, props changed)
  head/net-im/libstrophe/files/
  head/net-im/libstrophe/files/patch-configure.ac   (contents, props changed)
  head/net-im/libstrophe/files/patch-use-openssl-sha1   (contents, props changed)
  head/net-im/libstrophe/pkg-descr   (contents, props changed)
  head/net-im/libstrophe/pkg-plist   (contents, props changed)
Modified:
  head/net-im/Makefile

Modified: head/net-im/Makefile
==============================================================================
--- head/net-im/Makefile	Tue Feb 17 16:01:08 2015	(r379169)
+++ head/net-im/Makefile	Tue Feb 17 16:02:43 2015	(r379170)
@@ -58,6 +58,7 @@
     SUBDIR += libnice-gst010
     SUBDIR += libnice-gst1
     SUBDIR += libpurple
+    SUBDIR += libstrophe
     SUBDIR += libtelepathy
     SUBDIR += libyahoo2
     SUBDIR += licq

Added: head/net-im/libstrophe/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net-im/libstrophe/Makefile	Tue Feb 17 16:02:43 2015	(r379170)
@@ -0,0 +1,30 @@
+# $FreeBSD$
+
+PORTNAME=	libstrophe
+PORTVERSION=	0.8.7
+CATEGORIES=	net-im
+
+MAINTAINER=	arved@FreeBSD.org
+COMMENT=	Lightweight XMPP library
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/MIT-LICENSE.txt
+
+LIB_DEPENDS=	libexpat.so:${PORTSDIR}/textproc/expat2
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	strophe
+GH_PROJECT=	libstrophe
+GH_COMMIT=	2093aac
+GH_TAGNAME=	${GH_COMMIT}
+USE_AUTOTOOLS=	autoconf:env automake:env libtoolize:env
+USES=		libtool pkgconfig
+GNU_CONFIGURE=	yes
+CONFIGURE_ARGS+=	--with-pkgconfigdir=${PREFIX}/libdata/pkgconfig
+USE_OPENSSL=	yes
+USE_LDCONFIG=	yes
+
+pre-configure:
+	cd ${WRKSRC}; ./bootstrap.sh
+
+.include <bsd.port.mk>

Added: head/net-im/libstrophe/distinfo
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net-im/libstrophe/distinfo	Tue Feb 17 16:02:43 2015	(r379170)
@@ -0,0 +1,2 @@
+SHA256 (libstrophe-0.8.7.tar.gz) = 455ee68951a1460d71676ce1e4d50f21a0af07bdca3e3a1c44fd149e5a375bed
+SIZE (libstrophe-0.8.7.tar.gz) = 125960

Added: head/net-im/libstrophe/files/patch-configure.ac
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net-im/libstrophe/files/patch-configure.ac	Tue Feb 17 16:02:43 2015	(r379170)
@@ -0,0 +1,72 @@
+--- configure.ac.orig   2015-01-27 23:23:08 UTC
++++ configure.ac
+@@ -12,11 +12,11 @@ AS_CASE([$host_os],
+   [freebsd*], [PLATFORM="freebsd"],
+   [PLATFORM="nix"])
+
+-PKG_CHECK_MODULES([openssl], [openssl], [PC_REQUIRES+=(openssl)],
++PKG_CHECK_MODULES([openssl], [openssl], [PC_REQUIRES="openssl ${PC_REQUIRES}"],
+             [AC_CHECK_HEADER([openssl/ssl.h],
+                              [
+                               openssl_LIBS="-lssl -lcrypto"
+-                              PC_LIBS+=($openssl_LIBS)
++                              PC_LIBS="${openssl_LIBS} ${PC_LIBS}"
+                              ],
+                              [AC_MSG_ERROR([openssl not found; openssl required])]
+                             )])
+@@ -32,7 +32,7 @@ if test "x$with_libxml2" != xno; then
+   PKG_CHECK_MODULES([libxml2], [libxml-2.0 >= 2.7],
+                     [
+                      with_libxml2=yes
+-                     PC_REQUIRES+=(libxml-2.0)
++                     PC_REQUIRES="libxml-2.0 ${PC_REQUIRES}"
+                     ],
+                     [
+                      old_CFLAGS=$CFLAGS
+@@ -42,19 +42,19 @@ if test "x$with_libxml2" != xno; then
+                                       with_libxml2=yes
+                                       libxml2_CFLAGS="-I${includedir}/libxml2"
+                                       libxml2_LIBS="-lxml2"
+-                                      PC_LIBS+=($libxml2_LIBS)
+-                                      PC_CFLAGS+=($libxml2_CFLAGS)
++                                      PC_LIBS="${libxml2_LIBS} ${PC_LIBS}"
++                                      PC_CFLAGS="${libxml2_CFLAGS} ${PC_CFLAGS}"
+                                      ],
+                                      [AC_MSG_ERROR([libxml2 not found.])])
+                      CFLAGS=$old_CFLAGS
+                     ])
+ else
+   PKG_CHECK_MODULES([expat], [expat >= 2.0.0],
+-                    [PC_REQUIRES+=(expat)],
++                    [PC_REQUIRES="expat ${PC_REQUIRES}"],
+                     [AC_CHECK_HEADER([expat.h],
+                                      [
+                                       expat_LIBS="-lexpat"
+-                                      PC_LIBS+=($expat_LIBS)
++                                      PC_LIBS="${expat_LIBS} ${PC_LIBS}"
+                                      ],
+                                      [AC_MSG_ERROR([expat not found; expat required.])]
+                                     )
+@@ -80,7 +80,7 @@ if test "x$PLATFORM" != xfreebsd; then
+         AC_CHECK_LIB([resolv], [res_query], [],
+             [AC_CHECK_LIB([resolv], [__res_query], [],
+                 [AC_MSG_ERROR([libresolv not found; libresolv required.])])])
+-        PC_LIBS+=(-lresolv)
++        PC_LIBS="-lresolv ${PC_LIBS}"
+ else
+         AC_MSG_NOTICE([skipping libresolv checks for freebsd])
+ fi
+@@ -97,9 +97,10 @@ m4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLD
+
+ AM_CONDITIONAL([PARSER_EXPAT], [test x$with_parser != xlibxml2])
+
+-AC_SUBST([PC_REQUIRES], [${PC_REQUIRES[[@]]}])
+-AC_SUBST([PC_CFLAGS], [${PC_CFLAGS[[@]]}])
+-AC_SUBST([PC_LIBS], [${PC_LIBS[[@]]}])
++AC_SUBST([PC_REQUIRES], [${PC_REQUIRES}])
++AC_SUBST([PC_CFLAGS], [${PC_CFLAGS}])
++AC_SUBST([PC_LIBS], [${PC_LIBS}])
++AC_SUBST([LIB_VERSION], [0:0:0])
+
+ AC_SUBST(PARSER_NAME)
+ AC_SUBST(PARSER_CFLAGS)

Added: head/net-im/libstrophe/files/patch-use-openssl-sha1
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net-im/libstrophe/files/patch-use-openssl-sha1	Tue Feb 17 16:02:43 2015	(r379170)
@@ -0,0 +1,241 @@
+diff --git a/Makefile.am b/Makefile.am
+index dadce55..6c63974 100644
+--- Makefile.am
++++ Makefile.am
+@@ -21,11 +21,11 @@ libstrophe_la_LDFLAGS = $(SSL_LIBS) $(PARSER_LIBS)
+ libstrophe_la_LDFLAGS += -export-symbols-regex '^xmpp_'
+ libstrophe_la_SOURCES = src/auth.c src/conn.c src/ctx.c \
+ 	src/event.c src/handler.c src/hash.c \
+-	src/jid.c src/md5.c src/sasl.c src/scram.c src/sha1.c \
++	src/jid.c src/md5.c src/sasl.c src/scram.c \
+ 	src/snprintf.c src/sock.c src/stanza.c src/thread.c \
+ 	src/tls_openssl.c src/util.c \
+ 	src/common.h src/hash.h src/md5.h src/ostypes.h src/parser.h \
+-	src/sasl.h src/scram.h src/sha1.h src/sock.h src/thread.h src/tls.h \
++	src/sasl.h src/scram.h src/sock.h src/thread.h src/tls.h \
+ 	src/util.h
+ 
+ if PARSER_EXPAT
+diff --git a/src/sasl.c b/src/sasl.c
+index 3d83fd0..9e1b40b 100644
+--- src/sasl.c
++++ src/sasl.c
+@@ -21,7 +21,7 @@
+ #include "ostypes.h"
+ #include "sasl.h"
+ #include "md5.h"
+-#include "sha1.h"
++#include <openssl/sha.h>
+ #include "scram.h"
+ 
+ #ifdef _WIN32
+@@ -355,8 +355,8 @@ char *sasl_scram_sha1(xmpp_ctx_t *ctx, const char *challenge,
+                       const char *first_bare, const char *jid,
+                       const char *password)
+ {
+-    uint8_t key[SHA1_DIGEST_SIZE];
+-    uint8_t sign[SHA1_DIGEST_SIZE];
++    uint8_t key[SHA_DIGEST_LENGTH];
++    uint8_t sign[SHA_DIGEST_LENGTH];
+     char *r = NULL;
+     char *s = NULL;
+     char *i = NULL;
+@@ -422,7 +422,7 @@ char *sasl_scram_sha1(xmpp_ctx_t *ctx, const char *challenge,
+     SCRAM_SHA1_ClientKey((uint8_t *)password, strlen(password),
+                          (uint8_t *)sval, sval_len, (uint32_t)ival, key);
+     SCRAM_SHA1_ClientSignature(key, (uint8_t *)auth, strlen(auth), sign);
+-    for (j = 0; j < SHA1_DIGEST_SIZE; j++) {
++    for (j = 0; j < SHA_DIGEST_LENGTH; j++) {
+         sign[j] ^= key[j];
+     }
+ 
+diff --git a/src/scram.c b/src/scram.c
+index 5cce168..688028f 100644
+--- src/scram.c
++++ src/scram.c
+@@ -19,46 +19,46 @@
+ #include <assert.h>
+ #include <string.h>
+ 
+-#include "sha1.h"
++#include <openssl/sha.h>
+ #include "ostypes.h"
+ 
+ #include "scram.h"
+ 
+ /* block size for HMAC */
+ #define BLOCK_SIZE 64
+-#if BLOCK_SIZE < SHA1_DIGEST_SIZE
+-#error BLOCK_SIZE must not be less than SHA1_DIGEST_SIZE
++#if BLOCK_SIZE < SHA_DIGEST_LENGTH
++#error BLOCK_SIZE must not be less than SHA_DIGEST_LENGTH
+ #endif
+ 
+ static const uint8_t ipad = 0x36;
+ static const uint8_t opad = 0x5C;
+ 
+-static void SHA1(const uint8_t* data, size_t len,
+-                 uint8_t digest[SHA1_DIGEST_SIZE])
++static void _SHA1(const uint8_t* data, size_t len,
++                 uint8_t digest[SHA_DIGEST_LENGTH])
+ {
+-    SHA1_CTX ctx;
++    SHA_CTX ctx;
+     SHA1_Init(&ctx);
+-    SHA1_Update(&ctx, data, len);
+-    SHA1_Final(&ctx, digest);
++    SHA1_Update(&ctx, (const void*) data, len);
++    SHA1_Final(digest, &ctx);
+ }
+ 
+ static void HMAC_SHA1(const uint8_t *key, size_t key_len,
+                       const uint8_t *text, size_t len,
+-                      uint8_t digest[SHA1_DIGEST_SIZE])
++                      uint8_t digest[SHA_DIGEST_LENGTH])
+ {
+     uint8_t key_pad[BLOCK_SIZE];
+     uint8_t key_ipad[BLOCK_SIZE];
+     uint8_t key_opad[BLOCK_SIZE];
+-    uint8_t sha_digest[SHA1_DIGEST_SIZE];
++    uint8_t sha_digest[SHA_DIGEST_LENGTH];
+     int i;
+-    SHA1_CTX ctx;
++    SHA_CTX ctx;
+ 
+     memset(key_pad, 0, sizeof(key_pad));
+     if (key_len <= BLOCK_SIZE) {
+         memcpy(key_pad, key, key_len);
+     } else {
+         /* according to RFC2104 */
+-        SHA1(key, key_len, key_pad);
++        _SHA1(key, key_len, key_pad);
+     }
+ 
+     for (i = 0; i < BLOCK_SIZE; i++) {
+@@ -67,19 +67,19 @@ static void HMAC_SHA1(const uint8_t *key, size_t key_len,
+     }
+ 
+     SHA1_Init(&ctx);
+-    SHA1_Update(&ctx, key_ipad, BLOCK_SIZE);
+-    SHA1_Update(&ctx, text, len);
+-    SHA1_Final(&ctx, sha_digest);
++    SHA1_Update(&ctx, (const void*) key_ipad, BLOCK_SIZE);
++    SHA1_Update(&ctx, (const void*) text, len);
++    SHA1_Final(sha_digest, &ctx);
+ 
+     SHA1_Init(&ctx);
+-    SHA1_Update(&ctx, key_opad, BLOCK_SIZE);
+-    SHA1_Update(&ctx, sha_digest, SHA1_DIGEST_SIZE);
+-    SHA1_Final(&ctx, digest);
++    SHA1_Update(&ctx, (const void*) key_opad, BLOCK_SIZE);
++    SHA1_Update(&ctx, (const void*) sha_digest, SHA_DIGEST_LENGTH);
++    SHA1_Final(digest, &ctx);
+ }
+ 
+ static void SCRAM_SHA1_Hi(const uint8_t *text, size_t len,
+                           const uint8_t *salt, size_t salt_len, uint32_t i,
+-                          uint8_t digest[SHA1_DIGEST_SIZE])
++                          uint8_t digest[SHA_DIGEST_LENGTH])
+ {
+     int j, k;
+     uint8_t tmp[128];
+@@ -89,7 +89,7 @@ static void SCRAM_SHA1_Hi(const uint8_t *text, size_t len,
+     /* assume salt + INT(1) isn't longer than sizeof(tmp) */
+     assert(salt_len <= sizeof(tmp) - sizeof(int1));
+ 
+-    memset(digest, 0, SHA1_DIGEST_SIZE);
++    memset(digest, 0, SHA_DIGEST_LENGTH);
+     if (i == 0) {
+         return;
+     }
+@@ -99,11 +99,11 @@ static void SCRAM_SHA1_Hi(const uint8_t *text, size_t len,
+ 
+     /* 'text' for Hi is a 'key' for HMAC */
+     HMAC_SHA1(text, len, tmp, salt_len + sizeof(int1), digest);
+-    memcpy(tmp, digest, SHA1_DIGEST_SIZE);
++    memcpy(tmp, digest, SHA_DIGEST_LENGTH);
+ 
+     for (j = 1; j < i; j++) {
+-        HMAC_SHA1(text, len, tmp, SHA1_DIGEST_SIZE, tmp);
+-        for (k = 0; k < SHA1_DIGEST_SIZE; k++) {
++        HMAC_SHA1(text, len, tmp, SHA_DIGEST_LENGTH, tmp);
++        for (k = 0; k < SHA_DIGEST_LENGTH; k++) {
+             digest[k] ^= tmp[k];
+         }
+     }
+@@ -111,33 +111,33 @@ static void SCRAM_SHA1_Hi(const uint8_t *text, size_t len,
+ 
+ void SCRAM_SHA1_ClientKey(const uint8_t *password, size_t len,
+                           const uint8_t *salt, size_t salt_len, uint32_t i,
+-                          uint8_t key[SHA1_DIGEST_SIZE])
++                          uint8_t key[SHA_DIGEST_LENGTH])
+ {
+-    uint8_t salted[SHA1_DIGEST_SIZE];
++    uint8_t salted[SHA_DIGEST_LENGTH];
+ 
+     /* XXX: Normalize(password) is omitted */
+ 
+     SCRAM_SHA1_Hi(password, len, salt, salt_len, i, salted);
+-    HMAC_SHA1(salted, SHA1_DIGEST_SIZE, (uint8_t *)"Client Key",
++    HMAC_SHA1(salted, SHA_DIGEST_LENGTH, (uint8_t *)"Client Key",
+               strlen("Client Key"), key);
+ }
+ 
+-void SCRAM_SHA1_ClientSignature(const uint8_t ClientKey[SHA1_DIGEST_SIZE],
++void SCRAM_SHA1_ClientSignature(const uint8_t ClientKey[SHA_DIGEST_LENGTH],
+                                 const uint8_t *AuthMessage, size_t len,
+-                                uint8_t sign[SHA1_DIGEST_SIZE])
++                                uint8_t sign[SHA_DIGEST_LENGTH])
+ {
+-    uint8_t stored[SHA1_DIGEST_SIZE];
++    uint8_t stored[SHA_DIGEST_LENGTH];
+ 
+-    SHA1(ClientKey, SHA1_DIGEST_SIZE, stored);
+-    HMAC_SHA1(stored, SHA1_DIGEST_SIZE, AuthMessage, len, sign);
++    SHA1(ClientKey, SHA_DIGEST_LENGTH, stored);
++    HMAC_SHA1(stored, SHA_DIGEST_LENGTH, AuthMessage, len, sign);
+ }
+ 
+-void SCRAM_SHA1_ClientProof(const uint8_t ClientKey[SHA1_DIGEST_SIZE],
+-                            const uint8_t ClientSignature[SHA1_DIGEST_SIZE],
+-                            uint8_t proof[SHA1_DIGEST_SIZE])
++void SCRAM_SHA1_ClientProof(const uint8_t ClientKey[SHA_DIGEST_LENGTH],
++                            const uint8_t ClientSignature[SHA_DIGEST_LENGTH],
++                            uint8_t proof[SHA_DIGEST_LENGTH])
+ {
+     int i;
+-    for (i = 0; i < SHA1_DIGEST_SIZE; i++) {
++    for (i = 0; i < SHA_DIGEST_LENGTH; i++) {
+         proof[i] = ClientKey[i] ^ ClientSignature[i];
+     }
+ }
+diff --git a/src/scram.h b/src/scram.h
+index a0b996b..f81a5b6 100644
+--- src/scram.h
++++ src/scram.h
+@@ -19,18 +19,18 @@
+ /* make sure the stdint.h types are available */
+ #include "ostypes.h"
+ 
+-#include "sha1.h"
++#include<openssl/sha.h>
+ 
+ void SCRAM_SHA1_ClientKey(const uint8_t *password, size_t len,
+                           const uint8_t *salt, size_t salt_len, uint32_t i,
+-                          uint8_t key[SHA1_DIGEST_SIZE]);
++                          uint8_t key[SHA_DIGEST_LENGTH]);
+ 
+-void SCRAM_SHA1_ClientSignature(const uint8_t ClientKey[SHA1_DIGEST_SIZE],
++void SCRAM_SHA1_ClientSignature(const uint8_t ClientKey[SHA_DIGEST_LENGTH],
+                                 const uint8_t *AuthMessage, size_t len,
+-                                uint8_t sign[SHA1_DIGEST_SIZE]);
++                                uint8_t sign[SHA_DIGEST_LENGTH]);
+ 
+-void SCRAM_SHA1_ClientProof(const uint8_t ClientKey[SHA1_DIGEST_SIZE],
+-                            const uint8_t ClientSignature[SHA1_DIGEST_SIZE],
+-                            uint8_t proof[SHA1_DIGEST_SIZE]);
++void SCRAM_SHA1_ClientProof(const uint8_t ClientKey[SHA_DIGEST_LENGTH],
++                            const uint8_t ClientSignature[SHA_DIGEST_LENGTH],
++                            uint8_t proof[SHA_DIGEST_LENGTH]);
+ 
+ #endif /* __LIBSTROPHE_SCRAM_H__ */

Added: head/net-im/libstrophe/pkg-descr
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net-im/libstrophe/pkg-descr	Tue Feb 17 16:02:43 2015	(r379170)
@@ -0,0 +1,4 @@
+libstrophe is a minimal XMPP library written in C. It has almost no external
+dependencies, only an XML parsing library (expat or libxml are both supported).
+
+WWW: http://strophe.im/libstrophe/

Added: head/net-im/libstrophe/pkg-plist
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net-im/libstrophe/pkg-plist	Tue Feb 17 16:02:43 2015	(r379170)
@@ -0,0 +1,6 @@
+include/strophe.h
+lib/libstrophe.so.0.0.0
+lib/libstrophe.so.0
+lib/libstrophe.so
+lib/libstrophe.a
+libdata/pkgconfig/libstrophe.pc



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201502171602.t1HG2hag090942>