Tue Jan 6 19:00:50 2009 UTC ()
Make dbus really work on DragonFly and FreeBSD. The patch obtained from
FreeBSD ports. Bump PKGREVISION.


(hasso)
diff -r1.38 -r1.39 pkgsrc/sysutils/dbus/Makefile
diff -r1.30 -r1.31 pkgsrc/sysutils/dbus/distinfo
diff -r1.15 -r1.16 pkgsrc/sysutils/dbus/patches/patch-ab

cvs diff -r1.38 -r1.39 pkgsrc/sysutils/dbus/Makefile (expand / switch to unified diff)

--- pkgsrc/sysutils/dbus/Makefile 2008/11/23 01:40:26 1.38
+++ pkgsrc/sysutils/dbus/Makefile 2009/01/06 19:00:50 1.39
@@ -1,17 +1,17 @@ @@ -1,17 +1,17 @@
1# $NetBSD: Makefile,v 1.38 2008/11/23 01:40:26 jmcneill Exp $ 1# $NetBSD: Makefile,v 1.39 2009/01/06 19:00:50 hasso Exp $
2 2
3DISTNAME= dbus-1.2.4 3DISTNAME= dbus-1.2.4
4PKGREVISION= 3 4PKGREVISION= 4
5CATEGORIES= sysutils 5CATEGORIES= sysutils
6MASTER_SITES= http://dbus.freedesktop.org/releases/dbus/ 6MASTER_SITES= http://dbus.freedesktop.org/releases/dbus/
7 7
8MAINTAINER= pkgsrc-users@NetBSD.org 8MAINTAINER= pkgsrc-users@NetBSD.org
9HOMEPAGE= http://www.freedesktop.org/Software/dbus 9HOMEPAGE= http://www.freedesktop.org/Software/dbus
10COMMENT= Message bus system 10COMMENT= Message bus system
11 11
12PKG_DESTDIR_SUPPORT= user-destdir 12PKG_DESTDIR_SUPPORT= user-destdir
13 13
14CONFLICTS+= dbus-glib<0.71 14CONFLICTS+= dbus-glib<0.71
15CONFLICTS+= py*-dbus<0.71 15CONFLICTS+= py*-dbus<0.71
16 16
17GNU_CONFIGURE= YES 17GNU_CONFIGURE= YES

cvs diff -r1.30 -r1.31 pkgsrc/sysutils/dbus/distinfo (expand / switch to unified diff)

--- pkgsrc/sysutils/dbus/distinfo 2008/11/23 01:40:26 1.30
+++ pkgsrc/sysutils/dbus/distinfo 2009/01/06 19:00:50 1.31
@@ -1,13 +1,13 @@ @@ -1,13 +1,13 @@
1$NetBSD: distinfo,v 1.30 2008/11/23 01:40:26 jmcneill Exp $ 1$NetBSD: distinfo,v 1.31 2009/01/06 19:00:50 hasso Exp $
2 2
3SHA1 (dbus-1.2.4.tar.gz) = 913d796b79802b6ee6ca2b0ef59c670f3fd79774 3SHA1 (dbus-1.2.4.tar.gz) = 913d796b79802b6ee6ca2b0ef59c670f3fd79774
4RMD160 (dbus-1.2.4.tar.gz) = 0441eb8b668ed70250e484b02fe6a83c05c9a088 4RMD160 (dbus-1.2.4.tar.gz) = 0441eb8b668ed70250e484b02fe6a83c05c9a088
5Size (dbus-1.2.4.tar.gz) = 1564370 bytes 5Size (dbus-1.2.4.tar.gz) = 1564370 bytes
6SHA1 (patch-aa) = 2486dfe8a9c80cf10e099ce20f60d14de84e8adb 6SHA1 (patch-aa) = 2486dfe8a9c80cf10e099ce20f60d14de84e8adb
7SHA1 (patch-ab) = c6718fa46bf4befab0d7cd1c7d698b81922f7021 7SHA1 (patch-ab) = c05559aa0a473d2009f44dd5b65955a9b37e3ab7
8SHA1 (patch-ac) = afec419973f339e846dc109866148529f80998b3 8SHA1 (patch-ac) = afec419973f339e846dc109866148529f80998b3
9SHA1 (patch-ag) = 999071b782982c12329025ea8e393bfed940b654 9SHA1 (patch-ag) = 999071b782982c12329025ea8e393bfed940b654
10SHA1 (patch-ai) = a45bd8d29955e9c14a4d8b3f44b42242d70c1cd8 10SHA1 (patch-ai) = a45bd8d29955e9c14a4d8b3f44b42242d70c1cd8
11SHA1 (patch-ak) = 56c0a917e770b8d6ffc37ec7ab8beb631dd8ef72 11SHA1 (patch-ak) = 56c0a917e770b8d6ffc37ec7ab8beb631dd8ef72
12SHA1 (patch-al) = fad2f4df4537b2a3e21aaef29138060724ba8286 12SHA1 (patch-al) = fad2f4df4537b2a3e21aaef29138060724ba8286
13SHA1 (patch-am) = 8c794ff8b0981e90243ee20c26ae1ecc72e68de8 13SHA1 (patch-am) = 8c794ff8b0981e90243ee20c26ae1ecc72e68de8

cvs diff -r1.15 -r1.16 pkgsrc/sysutils/dbus/patches/Attic/patch-ab (expand / switch to unified diff)

--- pkgsrc/sysutils/dbus/patches/Attic/patch-ab 2008/11/23 01:40:26 1.15
+++ pkgsrc/sysutils/dbus/patches/Attic/patch-ab 2009/01/06 19:00:50 1.16
@@ -1,17 +1,17 @@ @@ -1,17 +1,17 @@
1$NetBSD: patch-ab,v 1.15 2008/11/23 01:40:26 jmcneill Exp $ 1$NetBSD: patch-ab,v 1.16 2009/01/06 19:00:50 hasso Exp $
2 2
3--- dbus/dbus-sysdeps-unix.c.orig 2008-10-06 17:14:50.000000000 -0400 3--- dbus/dbus-sysdeps-unix.c.orig 2008-10-07 00:14:50 +0300
4+++ dbus/dbus-sysdeps-unix.c 4+++ dbus/dbus-sysdeps-unix.c 2009-01-06 16:17:35 +0200
5@@ -23,6 +23,7 @@ 5@@ -23,6 +23,7 @@
6 */ 6 */
7  7
8 #define _GNU_SOURCE  8 #define _GNU_SOURCE
9+#define _NETBSD_SOURCE 9+#define _NETBSD_SOURCE
10  10
11 #include "dbus-internals.h" 11 #include "dbus-internals.h"
12 #include "dbus-sysdeps.h" 12 #include "dbus-sysdeps.h"
13@@ -35,6 +36,9 @@ 13@@ -35,6 +36,9 @@
14 #include "dbus-list.h" 14 #include "dbus-list.h"
15 #include "dbus-credentials.h" 15 #include "dbus-credentials.h"
16  16
17+#ifdef HAVE_NETBSD_ATOMIC_OPS 17+#ifdef HAVE_NETBSD_ATOMIC_OPS
@@ -63,116 +63,177 @@ $NetBSD: patch-ab,v 1.15 2008/11/23 01:4 @@ -63,116 +63,177 @@ $NetBSD: patch-ab,v 1.15 2008/11/23 01:4
63+ 63+
64 static dbus_bool_t 64 static dbus_bool_t
65 _dbus_open_socket (int *fd_p, 65 _dbus_open_socket (int *fd_p,
66 int domain, 66 int domain,
67@@ -581,7 +615,7 @@ _dbus_set_local_creds (int fd, dbus_bool 67@@ -581,7 +615,7 @@ _dbus_set_local_creds (int fd, dbus_bool
68 { 68 {
69 dbus_bool_t retval = TRUE; 69 dbus_bool_t retval = TRUE;
70  70
71-#if defined(HAVE_CMSGCRED) 71-#if defined(HAVE_CMSGCRED)
72+#if defined(HAVE_CMSGCRED) || defined(LOCAL_PEEREID) 72+#if defined(HAVE_CMSGCRED) || defined(LOCAL_PEEREID)
73 /* NOOP just to make sure only one codepath is used  73 /* NOOP just to make sure only one codepath is used
74 * and to prefer CMSGCRED 74 * and to prefer CMSGCRED
75 */ 75 */
76@@ -1138,6 +1172,9 @@ _dbus_read_credentials_socket (int  76@@ -1041,9 +1075,9 @@ write_credentials_byte (int
77 struct cmsgcred cred; 77 int bytes_written;
 78 char buf[1] = { '\0' };
 79 #if defined(HAVE_CMSGCRED)
 80- struct {
 81+ union {
 82 struct cmsghdr hdr;
 83- struct cmsgcred cred;
 84+ char cred[CMSG_SPACE (sizeof (struct cmsgcred))];
 85 } cmsg;
 86 struct iovec iov;
 87 struct msghdr msg;
 88@@ -1054,10 +1088,10 @@ write_credentials_byte (int
 89 msg.msg_iov = &iov;
 90 msg.msg_iovlen = 1;
 91
 92- msg.msg_control = &cmsg;
 93- msg.msg_controllen = sizeof (cmsg);
 94+ msg.msg_control = (caddr_t) &cmsg;
 95+ msg.msg_controllen = CMSG_SPACE (sizeof (struct cmsgcred));
 96 memset (&cmsg, 0, sizeof (cmsg));
 97- cmsg.hdr.cmsg_len = sizeof (cmsg);
 98+ cmsg.hdr.cmsg_len = CMSG_LEN (sizeof (struct cmsgcred));
 99 cmsg.hdr.cmsg_level = SOL_SOCKET;
 100 cmsg.hdr.cmsg_type = SCM_CREDS;
 101 #endif
 102@@ -1129,15 +1163,15 @@ _dbus_read_credentials_socket (int
 103 dbus_pid_t pid_read;
 104 int bytes_read;
 105
 106- uid_read = DBUS_UID_UNSET;
 107- pid_read = DBUS_PID_UNSET;
 108-
 109 #ifdef HAVE_CMSGCRED
 110- struct {
 111+ union {
 112 struct cmsghdr hdr;
 113- struct cmsgcred cred;
 114+ char cred[CMSG_SPACE (sizeof (struct cmsgcred))];
78 } cmsg; 115 } cmsg;
79  116
80+#elif defined(LOCAL_PEEREID) 117+#elif defined(LOCAL_PEEREID)
81+ pid_t sockpid, sockuid, sockgid; 118+ pid_t sockpid, sockuid, sockgid;
82+ 119+
83 #elif defined(LOCAL_CREDS) 120 #elif defined(LOCAL_CREDS)
84 struct { 121 struct {
85 struct cmsghdr hdr; 122 struct cmsghdr hdr;
86@@ -1170,7 +1207,7 @@ _dbus_read_credentials_socket (int  123@@ -1145,6 +1179,9 @@ _dbus_read_credentials_socket (int
 124 } cmsg;
 125 #endif
 126
 127+ uid_read = DBUS_UID_UNSET;
 128+ pid_read = DBUS_PID_UNSET;
 129+
 130 _DBUS_ASSERT_ERROR_IS_CLEAR (error);
 131
 132 /* The POSIX spec certainly doesn't promise this, but
 133@@ -1170,10 +1207,10 @@ _dbus_read_credentials_socket (int
87 msg.msg_iov = &iov; 134 msg.msg_iov = &iov;
88 msg.msg_iovlen = 1; 135 msg.msg_iovlen = 1;
89  136
90-#if defined(HAVE_CMSGCRED) || defined(LOCAL_CREDS) 137-#if defined(HAVE_CMSGCRED) || defined(LOCAL_CREDS)
91+#if (defined(HAVE_CMSGCRED) || defined(LOCAL_CREDS)) && !defined(LOCAL_PEEREID) 138+#if (defined(HAVE_CMSGCRED) || defined(LOCAL_CREDS)) && !defined(LOCAL_PEEREID)
92 memset (&cmsg, 0, sizeof (cmsg)); 139 memset (&cmsg, 0, sizeof (cmsg));
93 msg.msg_control = &cmsg; 140- msg.msg_control = &cmsg;
94 msg.msg_controllen = sizeof (cmsg); 141- msg.msg_controllen = sizeof (cmsg);
95@@ -1210,7 +1247,7 @@ _dbus_read_credentials_socket (int  142+ msg.msg_control = (caddr_t) &cmsg;
 143+ msg.msg_controllen = CMSG_SPACE (sizeof (struct cmsgcred));
 144 #endif
 145
 146 again:
 147@@ -1210,8 +1247,8 @@ _dbus_read_credentials_socket (int
96 return FALSE; 148 return FALSE;
97 } 149 }
98  150
99-#if defined(HAVE_CMSGCRED) || defined(LOCAL_CREDS) 151-#if defined(HAVE_CMSGCRED) || defined(LOCAL_CREDS)
 152- if (cmsg.hdr.cmsg_len < sizeof (cmsg) || cmsg.hdr.cmsg_type != SCM_CREDS)
100+#if (defined(HAVE_CMSGCRED) || defined(LOCAL_CREDS)) && !defined(LOCAL_PEEREID) 153+#if (defined(HAVE_CMSGCRED) || defined(LOCAL_CREDS)) && !defined(LOCAL_PEEREID)
101 if (cmsg.hdr.cmsg_len < sizeof (cmsg) || cmsg.hdr.cmsg_type != SCM_CREDS) 154+ if (cmsg.hdr.cmsg_len < CMSG_LEN (sizeof (struct cmsgcred)) || cmsg.hdr.cmsg_type != SCM_CREDS)
102 { 155 {
103 dbus_set_error (error, DBUS_ERROR_FAILED, 156 dbus_set_error (error, DBUS_ERROR_FAILED,
104@@ -1240,6 +1277,16 @@ _dbus_read_credentials_socket (int  157 "Message from recvmsg() was not SCM_CREDS");
 158@@ -1238,8 +1275,21 @@ _dbus_read_credentials_socket (int
 159 cr_len, (int) sizeof (cr), _dbus_strerror (errno));
 160 }
105 #elif defined(HAVE_CMSGCRED) 161 #elif defined(HAVE_CMSGCRED)
106 pid_read = cmsg.cred.cmcred_pid; 162- pid_read = cmsg.cred.cmcred_pid;
107 uid_read = cmsg.cred.cmcred_euid; 163- uid_read = cmsg.cred.cmcred_euid;
 164+ struct cmsgcred *cred;
 165+
 166+ cred = (struct cmsgcred *) CMSG_DATA (&cmsg);
 167+ pid_read = cred->cmcred_pid;
 168+ uid_read = cred->cmcred_euid;
108+#elif defined(LOCAL_PEEREID) 169+#elif defined(LOCAL_PEEREID)
109+ if (dbus_nb_getpeereid(client_fd, &sockpid, &sockuid, &sockgid) == TRUE) 170+ if (dbus_nb_getpeereid(client_fd, &sockpid, &sockuid, &sockgid) == TRUE)
110+ { 171+ {
111+ pid_read = sockpid; 172+ pid_read = sockpid;
112+ uid_read = sockuid; 173+ uid_read = sockuid;
113+ } 174+ }
114+ else 175+ else
115+ { 176+ {
116+ _dbus_verbose ("Failed to dbus_nb_getpeereid() credentials: %s\n", _dbus_strerror (errno)); 177+ _dbus_verbose ("Failed to dbus_nb_getpeereid() credentials: %s\n", _dbus_strerror (errno));
117+ } 178+ }
118 #elif defined(LOCAL_CREDS) 179 #elif defined(LOCAL_CREDS)
119 pid_read = DBUS_PID_UNSET; 180 pid_read = DBUS_PID_UNSET;
120 uid_read = cmsg.cred.sc_uid; 181 uid_read = cmsg.cred.sc_uid;
121@@ -1301,7 +1348,7 @@ _dbus_read_credentials_socket (int  182@@ -1301,7 +1351,7 @@ _dbus_read_credentials_socket (int
122 } 183 }
123 if (ucred != NULL) 184 if (ucred != NULL)
124 ucred_free (ucred); 185 ucred_free (ucred);
125-#else /* !SO_PEERCRED && !HAVE_CMSGCRED && !HAVE_GETPEEREID && !HAVE_GETPEERUCRED */ 186-#else /* !SO_PEERCRED && !HAVE_CMSGCRED && !HAVE_GETPEEREID && !HAVE_GETPEERUCRED */
126+#else /* !SO_PEERCRED && !HAVE_CMSGCRED && !HAVE_GETPEEREID && !HAVE_GETPEERUCRED && !LOCAL_PEEREID*/ 187+#else /* !SO_PEERCRED && !HAVE_CMSGCRED && !HAVE_GETPEEREID && !HAVE_GETPEERUCRED && !LOCAL_PEEREID*/
127 _dbus_verbose ("Socket credentials not supported on this OS\n"); 188 _dbus_verbose ("Socket credentials not supported on this OS\n");
128 #endif 189 #endif
129 } 190 }
130@@ -1826,7 +1873,26 @@ _dbus_parse_uid (const DBusString * 191@@ -1826,7 +1876,26 @@ _dbus_parse_uid (const DBusString *
131 return TRUE; 192 return TRUE;
132 } 193 }
133  194
134+#ifdef HAVE_NETBSD_ATOMIC_OPS 195+#ifdef HAVE_NETBSD_ATOMIC_OPS
135+dbus_int32_t 196+dbus_int32_t
136+_dbus_atomic_inc (DBusAtomic *atomic) 197+_dbus_atomic_inc (DBusAtomic *atomic)
137+{ 198+{
138+ register dbus_int32_t old = atomic->value; 199+ register dbus_int32_t old = atomic->value;
139+ 200+
140+ atomic_inc_uint((unsigned *)&atomic->value); 201+ atomic_inc_uint((unsigned *)&atomic->value);
141+ return old; 202+ return old;
142+} 203+}
143+ 204+
144+dbus_int32_t 205+dbus_int32_t
145+_dbus_atomic_dec (DBusAtomic *atomic) 206+_dbus_atomic_dec (DBusAtomic *atomic)
146+{ 207+{
147+ register dbus_int32_t old = atomic->value; 208+ register dbus_int32_t old = atomic->value;
148  209
149+ atomic_dec_uint((unsigned *)&atomic->value); 210+ atomic_dec_uint((unsigned *)&atomic->value);
150+ return old; 211+ return old;
151+} 212+}
152+_DBUS_DEFINE_GLOBAL_LOCK (atomic); 213+_DBUS_DEFINE_GLOBAL_LOCK (atomic);
153+#else 214+#else
154 _DBUS_DEFINE_GLOBAL_LOCK (atomic); 215 _DBUS_DEFINE_GLOBAL_LOCK (atomic);
155  216
156 #if DBUS_USE_ATOMIC_INT_486_COND 217 #if DBUS_USE_ATOMIC_INT_486_COND
157@@ -1891,6 +1957,7 @@ _dbus_atomic_dec (DBusAtomic *atomic) 218@@ -1891,6 +1960,7 @@ _dbus_atomic_dec (DBusAtomic *atomic)
158 return res; 219 return res;
159 #endif 220 #endif
160 } 221 }
161+#endif /* HAVE_NETBSD_ATOMIC_OPS */ 222+#endif /* HAVE_NETBSD_ATOMIC_OPS */
162  223
163 #ifdef DBUS_BUILD_TESTS 224 #ifdef DBUS_BUILD_TESTS
164 /** Gets our GID 225 /** Gets our GID
165@@ -2793,8 +2860,18 @@ int 226@@ -2793,8 +2863,18 @@ int
166 _dbus_printf_string_upper_bound (const char *format, 227 _dbus_printf_string_upper_bound (const char *format,
167 va_list args) 228 va_list args)
168 { 229 {
169+#if defined(__hpux) || defined(__sgi) 230+#if defined(__hpux) || defined(__sgi)
170+/* this code from libnbcompat's vsnprintf */ 231+/* this code from libnbcompat's vsnprintf */
171+ static FILE *devnull = 0; 232+ static FILE *devnull = 0;
172+ if (!devnull) { 233+ if (!devnull) {
173+ devnull = fopen("/dev/null", "w"); 234+ devnull = fopen("/dev/null", "w");
174+ if (!devnull) return -1; 235+ if (!devnull) return -1;
175+ } 236+ }
176+ return vfprintf(devnull, format, args); 237+ return vfprintf(devnull, format, args);
177+#else 238+#else
178 char c; 239 char c;