[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