[104139] trunk/dports/sysutils/rpm54

afb at macports.org afb at macports.org
Sun Mar 17 06:34:47 PDT 2013


Revision: 104139
          https://trac.macports.org/changeset/104139
Author:   afb at macports.org
Date:     2013-03-17 06:34:47 -0700 (Sun, 17 Mar 2013)
Log Message:
-----------
rpm54: fix build with clang/mountain lion

Modified Paths:
--------------
    trunk/dports/sysutils/rpm54/Portfile

Added Paths:
-----------
    trunk/dports/sysutils/rpm54/files/patch-no-nested-functions.diff
    trunk/dports/sysutils/rpm54/files/patch-syck-lib-bison.diff
    trunk/dports/sysutils/rpm54/files/patch-system-unistd-uuid.diff

Modified: trunk/dports/sysutils/rpm54/Portfile
===================================================================
--- trunk/dports/sysutils/rpm54/Portfile	2013-03-17 11:46:08 UTC (rev 104138)
+++ trunk/dports/sysutils/rpm54/Portfile	2013-03-17 13:34:47 UTC (rev 104139)
@@ -4,6 +4,7 @@
 
 name			rpm54
 version			5.4.9
+revision		1
 set date		20120508
 set branch		[join [lrange [split ${version} .] 0 1] .]
 platforms		darwin freebsd linux
@@ -46,6 +47,10 @@
 extract.pre_args	""
 extract.post_args	"| cpio -dvim"
 
+			# clang doesn't support nested functions
+patchfiles		patch-no-nested-functions.diff
+patch.pre_args		-p1
+
 build.type		gnu
 
 configure.args		--disable-nls --without-javaglue --without-included-gettext \
@@ -97,7 +102,11 @@
 	configure.args-append --disable-optimized --disable-aio \
 			      --with-glob --enable-broken-chown \
 			      --disable-rpath
+			# avoid bison-2.7 problems
+	configure.env	YACC='/usr/bin/bison -y'
 
+	patchfiles-append	patch-syck-lib-bison.diff patch-system-unistd-uuid.diff
+
 	post-destroot {
 		# Mac OS X specific changes
 	}

Added: trunk/dports/sysutils/rpm54/files/patch-no-nested-functions.diff
===================================================================
--- trunk/dports/sysutils/rpm54/files/patch-no-nested-functions.diff	                        (rev 0)
+++ trunk/dports/sysutils/rpm54/files/patch-no-nested-functions.diff	2013-03-17 13:34:47 UTC (rev 104139)
@@ -0,0 +1,252 @@
+--- rpm-5.4.10/rpmio/set.c.orig	2012-07-06 17:39:19.000000000 +0200
++++ rpm-5.4.10/rpmio/set.c	2012-07-30 23:36:16.000000000 +0200
+@@ -9,10 +9,6 @@
+ /* XXX FIXME: avoid <fcntl.h> borkage on RHEL for now. */
+ #define _FCNTL_H        1
+ 
+-/* XXX nested functions in GCC --std=c99 spew mucho here if not */
+-#pragma GCC diagnostic ignored "-Wmissing-prototypes"
+-#pragma GCC diagnostic ignored "-Woverride-init"
+-
+ #include "system.h"
+ 
+ #include <rpmio.h>
+@@ -54,12 +50,8 @@
+     return bitc / 5 + 2;
+ }
+ 
+-/* Main base62 encoding routine: pack bitv into base62 string. */
+-static
+-int encode_base62(int bitc, const char *bitv, char *base62)
+-{
+-    char *base62_start = base62;
+-    void put_digit(int c)
++    static
++    void put_digit(char *base62, int c)
+     {
+ 	assert(c >= 0 && c <= 61);
+ 	if (c < 10)
+@@ -69,6 +61,12 @@
+ 	else if (c < 62)
+ 	    *base62++ = c - 36 + 'A';
+     }
++
++/* Main base62 encoding routine: pack bitv into base62 string. */
++static
++int encode_base62(int bitc, const char *bitv, char *base62)
++{
++    char *base62_start = base62;
+     int bits2 = 0; /* number of high bits set */
+     int bits6 = 0; /* number of regular bits set */
+     int num6b = 0; /* pending 6-bit number */
+@@ -79,21 +77,21 @@
+ 	switch (num6b) {
+ 	case 61:
+ 	    /* escape */
+-	    put_digit(61);
++	    put_digit(base62, 61);
+ 	    /* extra "00...." high bits (in the next character) */
+ 	    bits2 = 2;
+ 	    bits6 = 0;
+ 	    num6b = 0;
+ 	    break;
+ 	case 62:
+-	    put_digit(61);
++	    put_digit(base62, 61);
+ 	    /* extra "01...." high bits */
+ 	    bits2 = 2;
+ 	    bits6 = 0;
+ 	    num6b = 16;
+ 	    break;
+ 	case 63:
+-	    put_digit(61);
++	    put_digit(base62, 61);
+ 	    /* extra "10...." high bits */
+ 	    bits2 = 2;
+ 	    bits6 = 0;
+@@ -101,7 +99,7 @@
+ 	    break;
+ 	default:
+ 	    assert(num6b < 61);
+-	    put_digit(num6b);
++	    put_digit(base62, num6b);
+ 	    bits2 = 0;
+ 	    bits6 = 0;
+ 	    num6b = 0;
+@@ -110,7 +108,7 @@
+     }
+     if (bits6 + bits2) {
+ 	assert(num6b < 61);
+-	put_digit(num6b);
++	put_digit(base62, num6b);
+     }
+     *base62 = '\0';
+     return base62 - base62_start;
+@@ -139,13 +137,8 @@
+     C26('A', 'A' + 36),
+ };
+ 
+-/* Main base62 decoding routine: unpack base62 string into bitv[]. */
+-static
+-int decode_base62(const char *base62, char *bitv)
+-{
+-    char *bitv_start = bitv;
+-    inline
+-    void put6bits(int c)
++    static inline
++    void put6bits(char *bitv, int c)
+     {
+ 	*bitv++ = (c >> 0) & 1;
+ 	*bitv++ = (c >> 1) & 1;
+@@ -154,19 +147,25 @@
+ 	*bitv++ = (c >> 4) & 1;
+ 	*bitv++ = (c >> 5) & 1;
+     }
+-    inline
+-    void put4bits(int c)
++    static inline
++    void put4bits(char *bitv, int c)
+     {
+ 	*bitv++ = (c >> 0) & 1;
+ 	*bitv++ = (c >> 1) & 1;
+ 	*bitv++ = (c >> 2) & 1;
+ 	*bitv++ = (c >> 3) & 1;
+     }
++
++/* Main base62 decoding routine: unpack base62 string into bitv[]. */
++static
++int decode_base62(const char *base62, char *bitv)
++{
++    char *bitv_start = bitv;
+     while (1) {
+ 	long c = (unsigned char) *base62++;
+ 	int num6b = char_to_num[c];
+ 	while (num6b < 61) {
+-	    put6bits(num6b);
++	    put6bits(bitv, num6b);
+ 	    c = (unsigned char) *base62++;
+ 	    num6b = char_to_num[c];
+ 	}
+@@ -195,8 +194,8 @@
+ 	default:
+ 	    return -4;
+ 	}
+-	put6bits(num6b);
+-	put4bits(num4b);
++	put6bits(bitv, num6b);
++	put4bits(bitv, num4b);
+     }
+     return bitv - bitv_start;
+ }
+@@ -260,10 +259,7 @@
+  * http://algo2.iti.uni-karlsruhe.de/singler/publications/cacheefficientbloomfilters-wea2007.pdf
+  */
+ 
+-/* Calculate Mshift paramter for encoding. */
+-static
+-int encode_golomb_Mshift(int c, int bpp)
+-{
++    static
+     int log2i(int n)
+     {
+ 	int m = 0;
+@@ -271,6 +267,11 @@
+ 	    m++;
+ 	return m;
+     }
++
++/* Calculate Mshift paramter for encoding. */
++static
++int encode_golomb_Mshift(int c, int bpp)
++{
+     /*
+      * XXX Slightly better Mshift estimations are probably possible.
+      * Recheck "Compression and coding algorithms" by Moffat & Turpin.
+@@ -1340,18 +1341,8 @@
+     set->c++;
+ }
+ 
+-/* This routine does the whole job. */
+-const char * rpmsetFinish(rpmset set, int bpp)
+-{
+-    char * t = NULL;
+-
+-    if (set->c < 1 || bpp < 10 || bpp > 32) {
+-if (_rpmset_debug)
+-fprintf(stderr, "<-- %s(%p,%d) rc %s\n", __FUNCTION__, set, bpp, t);
+-    }
+-
+-    unsigned mask = (bpp < 32) ? (1u << bpp) - 1 : ~0u;
+     /* Jenkins' one-at-a-time hash */
++    static
+     unsigned int hash(const char *str)
+     {
+ 	unsigned int hash = 0x9e3779b9;
+@@ -1367,12 +1358,8 @@
+ 	return hash;
+     }
+ 
+-    /* hash sv strings */
+-    int i;
+-    for (i = 0; i < set->c; i++)
+-	set->sv[i].v = hash(set->sv[i].s) & mask;
+-
+     /* sort by hash value */
++    static
+     int cmp(const void *arg1, const void *arg2)
+     {
+ 	struct sv *sv1 = (struct sv *) arg1;
+@@ -1383,6 +1370,36 @@
+ 	    return -1;
+ 	return 0;
+     }
++
++    static
++    int uniqv(int c, unsigned *v)
++    {
++	int i, j;
++	for (i = 0, j = 0; i < c; i++) {
++	    while (i + 1 < c && v[i] == v[i+1])
++		i++;
++	    v[j++] = v[i];
++	}
++	return j;
++    }
++
++/* This routine does the whole job. */
++const char * rpmsetFinish(rpmset set, int bpp)
++{
++    char * t = NULL;
++
++    if (set->c < 1 || bpp < 10 || bpp > 32) {
++if (_rpmset_debug)
++fprintf(stderr, "<-- %s(%p,%d) rc %s\n", __FUNCTION__, set, bpp, t);
++    }
++
++    unsigned mask = (bpp < 32) ? (1u << bpp) - 1 : ~0u;
++
++    /* hash sv strings */
++    int i;
++    for (i = 0; i < set->c; i++)
++	set->sv[i].v = hash(set->sv[i].s) & mask;
++
+     qsort(set->sv, set->c, sizeof *set->sv, cmp);
+ 
+     /* warn on hash collisions */
+@@ -1399,16 +1416,6 @@
+     unsigned v[set->c];
+     for (i = 0; i < set->c; i++)
+ 	v[i] = set->sv[i].v;
+-    int uniqv(int c, unsigned *v)
+-    {
+-	int i, j;
+-	for (i = 0, j = 0; i < c; i++) {
+-	    while (i + 1 < c && v[i] == v[i+1])
+-		i++;
+-	    v[j++] = v[i];
+-	}
+-	return j;
+-    }
+     int c = uniqv(set->c, v);
+     char base62[encode_set_size(c, bpp)];
+     int len = encode_set(c, v, bpp, base62);

Added: trunk/dports/sysutils/rpm54/files/patch-syck-lib-bison.diff
===================================================================
--- trunk/dports/sysutils/rpm54/files/patch-syck-lib-bison.diff	                        (rev 0)
+++ trunk/dports/sysutils/rpm54/files/patch-syck-lib-bison.diff	2013-03-17 13:34:47 UTC (rev 104139)
@@ -0,0 +1,22 @@
+--- rpm-5.4.9/syck/lib/Makefile.am.orig	2009-04-01 22:43:58.000000000 +0200
++++ rpm-5.4.9/syck/lib/Makefile.am	2013-03-17 13:57:08.000000000 +0100
+@@ -4,7 +4,7 @@
+ 
+ LEXLIB = @LEXLIB@
+ 
+-YACC = bison
++YACC = @YACC@ 
+ AM_YFLAGS = -d -t -v -p syck
+ 
+ #lib_LTLIBRARIES = libsyck.la
+--- rpm-5.4.9/syck/lib/Makefile.in.orig	2012-05-08 05:23:47.000000000 +0200
++++ rpm-5.4.9/syck/lib/Makefile.in	2013-03-17 13:57:21.000000000 +0100
+@@ -164,7 +164,7 @@
+ SHELL = @SHELL@
+ STRIP = @STRIP@
+ VERSION = @VERSION@
+-YACC = bison
++YACC = @YACC@ 
+ YFLAGS = @YFLAGS@
+ abs_builddir = @abs_builddir@
+ abs_srcdir = @abs_srcdir@

Added: trunk/dports/sysutils/rpm54/files/patch-system-unistd-uuid.diff
===================================================================
--- trunk/dports/sysutils/rpm54/files/patch-system-unistd-uuid.diff	                        (rev 0)
+++ trunk/dports/sysutils/rpm54/files/patch-system-unistd-uuid.diff	2013-03-17 13:34:47 UTC (rev 104139)
@@ -0,0 +1,24 @@
+--- rpm-5.4.9/system.h.orig	2012-04-26 19:46:49.000000000 +0200
++++ rpm-5.4.9/system.h	2013-03-17 14:10:04.000000000 +0100
+@@ -317,7 +317,9 @@
+ #endif
+ 
+ #if defined(HAVE_GRP_H)
++#define	uuid_t	unistd_uuid_t	/* XXX Mac OS X dares to be different. */
+ #include <grp.h>
++#undef	unistd_uuid_t		/* XXX Mac OS X dares to be different. */
+ #endif
+ 
+ #if defined(HAVE_LIMITS_H)
+--- rpm-5.4.9/python/system.h.orig	2010-12-03 19:29:22.000000000 +0100
++++ rpm-5.4.9/python/system.h	2013-03-17 14:20:14.000000000 +0100
+@@ -9,7 +9,9 @@
+ #include <sys/types.h>
+ #endif
+ 
++#define	uuid_t	unistd_uuid_t	/* XXX Mac OS X dares to be different. */
+ #include "Python.h"
++#undef	unistd_uuid_t		/* XXX Mac OS X dares to be different. */
+ 
+ #if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION < 4
+ #define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20130317/b29626fb/attachment.html>


More information about the macports-changes mailing list