summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorryoon <ryoon@pkgsrc.org>2014-05-05 21:19:40 +0000
committerryoon <ryoon@pkgsrc.org>2014-05-05 21:19:40 +0000
commite533c793ebacdcd1e631993a6d50290935245c5e (patch)
treea4fd3e1312ad63a02caf82b151e79d3cef772c51
parent26c987bdf69babe8e51f34a41bf8120f01d4d6ac (diff)
downloadpkgsrc-e533c793ebacdcd1e631993a6d50290935245c5e.tar.gz
Support OpenBSD
* Borrow code from OpenBSD Ports
-rw-r--r--sysutils/consolekit/Makefile3
-rw-r--r--sysutils/consolekit/distinfo10
-rw-r--r--sysutils/consolekit/files/ck-sysdeps-openbsd.c471
-rw-r--r--sysutils/consolekit/patches/patch-aa22
-rw-r--r--sysutils/consolekit/patches/patch-ab13
-rw-r--r--sysutils/consolekit/patches/patch-ac10
-rw-r--r--sysutils/consolekit/patches/patch-ae26
7 files changed, 530 insertions, 25 deletions
diff --git a/sysutils/consolekit/Makefile b/sysutils/consolekit/Makefile
index d85227d2f46..d6fc5d5f550 100644
--- a/sysutils/consolekit/Makefile
+++ b/sysutils/consolekit/Makefile
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.21 2013/05/31 12:41:59 wiz Exp $
+# $NetBSD: Makefile,v 1.22 2014/05/05 21:19:40 ryoon Exp $
#
CONSOLEKIT_VER= 0.3.0
@@ -40,6 +40,7 @@ CONFIGURE_ARGS+= --localstatedir=${VARBASE}
post-extract:
${CP} ${FILESDIR}/ck-sysdeps-netbsd.c ${WRKSRC}/src/
+ ${CP} ${FILESDIR}/ck-sysdeps-openbsd.c ${WRKSRC}/src/
pre-configure:
cd ${WRKSRC} && autoreconf -vi ${AUTORECONF_ARGS}
diff --git a/sysutils/consolekit/distinfo b/sysutils/consolekit/distinfo
index ba22e29a7ff..7084f4146b1 100644
--- a/sysutils/consolekit/distinfo
+++ b/sysutils/consolekit/distinfo
@@ -1,13 +1,13 @@
-$NetBSD: distinfo,v 1.8 2010/12/26 20:53:14 markd Exp $
+$NetBSD: distinfo,v 1.9 2014/05/05 21:19:40 ryoon Exp $
SHA1 (ConsoleKit-0.3.0.tar.bz2) = e3b6156622cc14ebca7382a55b8ed15f2f2bad98
RMD160 (ConsoleKit-0.3.0.tar.bz2) = 7a1ebd2f4bfb65690e70138c9923c3fd2fcaf671
Size (ConsoleKit-0.3.0.tar.bz2) = 393694 bytes
-SHA1 (patch-aa) = a1589faf05d5358a0820da6d7da20f09ce4cec1b
-SHA1 (patch-ab) = 2e9fe9de1f27c635a4eefa77af8322cb8a02ab35
-SHA1 (patch-ac) = 0595a9cd1c4013eb4761e044b4b4b01b613f7d2b
+SHA1 (patch-aa) = f6b56bcb12d89ad794feaf345bef04e8a2edbfb0
+SHA1 (patch-ab) = 9ba984009ee9424b35fcb2c3454df4063dbbd953
+SHA1 (patch-ac) = 42a098a1210ad17f992713b03b834ea355c9b06d
SHA1 (patch-ad) = a1c1a1d0452945550065da3eac2390318c1eb7be
-SHA1 (patch-ae) = 8a9612cd35d1ec86240fd17dfa6963c20edc0ad0
+SHA1 (patch-ae) = 775a3b460db0f2cd305882fcb782d666b8670d8a
SHA1 (patch-af) = e86c63147798d61f7560cfe7547b0d06d18d5583
SHA1 (patch-ag) = 724e2eb95f7ca78c5659fde1eec2f2c5c6bc5002
SHA1 (patch-ah) = f62d8c661732a4ea47e29b99f883b539fb5c7468
diff --git a/sysutils/consolekit/files/ck-sysdeps-openbsd.c b/sysutils/consolekit/files/ck-sysdeps-openbsd.c
new file mode 100644
index 00000000000..067e0f0b859
--- /dev/null
+++ b/sysutils/consolekit/files/ck-sysdeps-openbsd.c
@@ -0,0 +1,471 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2006 William Jon McCann <mccann@jhu.edu>
+ * Copyright (C) 2007 Joe Marcus Clarke <marcus@FreeBSD.org>
+ * Copyright (C) 2008 Jared D. McNeill <jmcneill@NetBSD.org>
+ * Copyright (C) 2009 Robert Nagy <robert@openbsd.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+#include <paths.h>
+#include <ttyent.h>
+#include <kvm.h>
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/sysctl.h>
+#include <sys/user.h>
+#include <sys/ioctl.h>
+
+#ifdef __OpenBSD__
+#include <sys/stdint.h>
+#endif
+
+#include <dev/wscons/wsdisplay_usl_io.h>
+
+#define DEV_ENCODE(M,m) ( \
+ ( (M&0xfff) << 8) | ( (m&0xfff00) << 12) | (m&0xff) \
+)
+
+#include "ck-sysdeps.h"
+
+#ifndef ERROR
+#define ERROR -1
+#endif
+
+/* adapted from procps */
+struct _CkProcessStat
+{
+ int pid;
+ int ppid; /* stat,status pid of parent process */
+ char state; /* stat,status single-char code for process state (S=sleeping) */
+ char cmd[16]; /* stat,status basename of executable file in call to exec(2) */
+ unsigned long long utime; /* stat user-mode CPU time accumulated by process */
+ unsigned long long stime; /* stat kernel-mode CPU time accumulated by process */
+ unsigned long long cutime; /* stat cumulative utime of process and reaped children */
+ unsigned long long cstime; /* stat cumulative stime of process and reaped children */
+ unsigned long long start_time; /* stat start time of process -- seconds since 1-1-70 */
+ unsigned long start_code; /* stat address of beginning of code segment */
+ unsigned long end_code; /* stat address of end of code segment */
+ unsigned long start_stack; /* stat address of the bottom of stack for the process */
+ unsigned long kstk_esp; /* stat kernel stack pointer */
+ unsigned long kstk_eip; /* stat kernel instruction pointer */
+ unsigned long wchan; /* stat (special) address of kernel wait channel proc is sleeping in */
+ long priority; /* stat kernel scheduling priority */
+ long nice; /* stat standard unix nice level of process */
+ long rss; /* stat resident set size from /proc/#/stat (pages) */
+ long alarm; /* stat ? */
+ unsigned long rtprio; /* stat real-time priority */
+ unsigned long sched; /* stat scheduling class */
+ unsigned long vsize; /* stat number of pages of virtual memory ... */
+ unsigned long rss_rlim; /* stat resident set size limit? */
+ unsigned long flags; /* stat kernel flags for the process */
+ unsigned long min_flt; /* stat number of minor page faults since process start */
+ unsigned long maj_flt; /* stat number of major page faults since process start */
+ unsigned long cmin_flt; /* stat cumulative min_flt of process and child processes */
+ unsigned long cmaj_flt; /* stat cumulative maj_flt of process and child processes */
+ int pgrp; /* stat process group id */
+ int session; /* stat session id */
+ int nlwp; /* stat number of threads, or 0 if no clue */
+ int tty; /* stat full device number of controlling terminal */
+ int tpgid; /* stat terminal process group id */
+ int exit_signal; /* stat might not be SIGCHLD */
+ int processor; /* stat current (or most recent?) CPU */
+ uintptr_t penv; /* stat address of initial environment vector */
+ char tty_text[11]; /* stat device name */
+
+};
+
+pid_t
+ck_process_stat_get_ppid (CkProcessStat *stat)
+{
+ g_return_val_if_fail (stat != NULL, -1);
+
+ return stat->ppid;
+}
+
+char *
+ck_process_stat_get_cmd (CkProcessStat *stat)
+{
+ g_return_val_if_fail (stat != NULL, NULL);
+
+ return g_strdup (stat->cmd);
+}
+
+char *
+ck_process_stat_get_tty (CkProcessStat *stat)
+{
+ g_return_val_if_fail (stat != NULL, NULL);
+
+ return g_strdup (stat->tty_text);
+}
+
+static gboolean
+get_kinfo_proc (pid_t pid,
+ struct kinfo_proc *p)
+{
+ size_t len;
+
+ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, pid,
+ sizeof(struct kinfo_proc), 0 };
+
+#ifndef nitems
+#define nitems(_a) (sizeof((_a)) / sizeof((_a)[0]))
+#endif
+
+ if (sysctl(mib, nitems(mib), NULL, &len, NULL, 0) < 0)
+ return FALSE;
+
+ mib[5] = (len / sizeof(struct kinfo_proc));
+
+ if (sysctl(mib, nitems(mib), p, &len, NULL, 0) < 0)
+ return FALSE;
+
+ return TRUE;
+}
+
+/* return 1 if it works, or 0 for failure */
+static gboolean
+stat2proc (pid_t pid,
+ CkProcessStat *P)
+{
+ struct kinfo_proc p;
+ char *ttname;
+ int num;
+ int tty_maj;
+ int tty_min;
+
+ if (! get_kinfo_proc (pid, &p)) {
+ return FALSE;
+ }
+
+ num = KI_MAXCOMLEN;
+ if (num >= sizeof P->cmd) {
+ num = sizeof P->cmd - 1;
+ }
+
+ memcpy (P->cmd, p.p_comm, num);
+
+ P->cmd[num] = '\0';
+ P->pid = p.p_pid;
+ P->ppid = p.p_ppid;
+ P->pgrp = p.p__pgid;
+ P->session = p.p_sid;
+ P->rss = p.p_vm_rssize;
+ P->vsize = p.p_vm_dsize + p.p_vm_dsize + p.p_vm_ssize; /* XXX */
+ P->start_time = p.p_ustart_sec;
+ P->wchan = (unsigned long) p.p_wchan;
+ P->state = p.p_stat;
+ P->nice = p.p_nice;
+ P->flags = p.p_psflags;
+ P->tpgid = p.p_tpgid;
+ P->processor = p.p_cpuid;
+
+ /* we like it Linux-encoded :-) */
+ tty_maj = major (p.p_tdev);
+ tty_min = minor (p.p_tdev);
+ P->tty = DEV_ENCODE (tty_maj,tty_min);
+
+ snprintf (P->tty_text, sizeof P->tty_text, "%3d,%-3d", tty_maj, tty_min);
+
+ if (p.p_tdev != NODEV && (ttname = devname (p.p_tdev, S_IFCHR)) != NULL) {
+ memcpy (P->tty_text, ttname, sizeof P->tty_text);
+ }
+
+ if (p.p_tdev == NODEV) {
+ /* XXX how do we associate X with its tty? */
+#if defined(__i386__) || defined(__amd64__) || defined(__powerpc__)
+ memcpy (P->tty_text, "/dev/ttyC4", sizeof P->tty_text);
+#else
+ memcpy (P->tty_text, "/dev/ttyC0", sizeof P->tty_text);
+#endif
+ }
+
+ if (P->pid != pid) {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+gboolean
+ck_process_stat_new_for_unix_pid (pid_t pid,
+ CkProcessStat **stat,
+ GError **error)
+{
+ gboolean res;
+ CkProcessStat *proc;
+
+ g_return_val_if_fail (pid > 1, FALSE);
+
+ if (stat == NULL) {
+ return FALSE;
+ }
+
+ proc = g_new0 (CkProcessStat, 1);
+ proc->pid = pid;
+ res = stat2proc (pid, proc);
+ if (res) {
+ *stat = proc;
+ } else {
+ *stat = NULL;
+ }
+
+ return res;
+}
+
+void
+ck_process_stat_free (CkProcessStat *stat)
+{
+ g_free (stat);
+}
+
+GHashTable *
+ck_unix_pid_get_env_hash (pid_t pid)
+{
+ GHashTable *hash = NULL;
+ char **penv;
+ char errbuf[_POSIX2_LINE_MAX];
+ kvm_t *kd;
+ struct kinfo_proc p;
+ int i;
+
+ kd = kvm_openfiles (NULL, NULL, NULL, O_RDONLY, errbuf);
+ if (kd == NULL) {
+ g_warning ("kvm_openfiles failed: %s", errbuf);
+ return NULL;
+ }
+
+ if (! get_kinfo_proc (pid, &p)) {
+ g_warning ("get_kinfo_proc failed: %s", g_strerror (errno));
+ goto fail;
+ }
+
+ penv = kvm_getenvv (kd, &p, 0);
+ if (penv == NULL) {
+ g_warning ("kvm_getenvv failed: %s", kvm_geterr (kd));
+ goto fail;
+ }
+
+ hash = g_hash_table_new_full (g_str_hash,
+ g_str_equal,
+ g_free,
+ g_free);
+
+ for (i = 0; penv[i] != NULL; i++) {
+ char **vals;
+
+ if (!penv[i][0]) continue;
+
+ vals = g_strsplit (penv[i], "=", 2);
+ if (vals != NULL) {
+ g_hash_table_insert (hash,
+ g_strdup (vals[0]),
+ g_strdup (vals[1]));
+ g_strfreev (vals);
+ }
+ }
+
+fail:
+ kvm_close (kd);
+
+ return hash;
+}
+
+char *
+ck_unix_pid_get_env (pid_t pid,
+ const char *var)
+{
+ GHashTable *hash;
+ char *val = NULL;
+
+ /*
+ * Would probably be more efficient to just loop through the
+ * environment and return the value, avoiding building the hash
+ * table, but this works for now.
+ */
+ hash = ck_unix_pid_get_env_hash (pid);
+ if (hash == NULL)
+ return val;
+ val = g_strdup (g_hash_table_lookup (hash, var));
+ g_hash_table_destroy (hash);
+
+ return val;
+}
+
+uid_t
+ck_unix_pid_get_uid (pid_t pid)
+{
+ uid_t uid;
+ gboolean res;
+ struct kinfo_proc p;
+
+ g_return_val_if_fail (pid > 1, 0);
+
+ uid = -1;
+
+ res = get_kinfo_proc (pid, &p);
+
+ if (res) {
+ uid = p.p_uid;
+ }
+
+ return uid;
+}
+
+gboolean
+ck_unix_pid_get_login_session_id (pid_t pid,
+ char **idp)
+{
+ g_return_val_if_fail (pid > 1, FALSE);
+
+ return FALSE;
+}
+
+gboolean
+ck_get_max_num_consoles (guint *num)
+{
+ int max_consoles;
+ int res;
+ gboolean ret;
+ struct ttyent *t;
+
+ ret = FALSE;
+ max_consoles = 0;
+
+ res = setttyent ();
+ if (res == 0) {
+ goto done;
+ }
+
+ while ((t = getttyent ()) != NULL) {
+ if (t->ty_status & TTY_ON && strncmp (t->ty_name, "ttyC", 4) == 0)
+ max_consoles++;
+ }
+
+ /* Increment one more so that all consoles are properly counted
+ * this is arguable a bug in vt_add_watches().
+ */
+ max_consoles++;
+
+ ret = TRUE;
+
+ endttyent ();
+
+done:
+ if (num != NULL) {
+ *num = max_consoles;
+ }
+
+ return ret;
+}
+
+gboolean
+ck_supports_activatable_consoles (void)
+{
+ return TRUE;
+}
+
+char *
+ck_get_console_device_for_num (guint num)
+{
+ char *device;
+
+/* VT are only available on i386, amd64 and macppc */
+#if defined(__i386__) || defined(__amd64__) || defined(__powerpc__)
+ /* The device number is always one less than the VT number. */
+ num--;
+#endif
+
+ device = g_strdup_printf ("/dev/ttyC%u", num);
+
+ return device;
+}
+
+gboolean
+ck_get_console_num_from_device (const char *device,
+ guint *num)
+{
+ guint n;
+ gboolean ret;
+
+ n = 0;
+ ret = FALSE;
+
+ if (device == NULL) {
+ return FALSE;
+ }
+
+ if (sscanf (device, "/dev/ttyC%u", &n) == 1) {
+/* VT are only available on i386, amd64 and macppc */
+#if defined(__i386__) || defined(__amd64__) || defined(__powerpc__)
+ /* The VT number is always one more than the device number. */
+ n++;
+#endif
+ ret = TRUE;
+ }
+
+ if (num != NULL) {
+ *num = n;
+ }
+
+ return ret;
+}
+
+gboolean
+ck_get_active_console_num (int console_fd,
+ guint *num)
+{
+ gboolean ret;
+ int res;
+ int active;
+
+ g_assert (console_fd != -1);
+
+ active = 0;
+ ret = FALSE;
+
+/* VT are only available on i386, amd64 and macppc */
+#if defined(__i386__) || defined(__amd64__) || defined(__powerpc__)
+ res = ioctl (console_fd, VT_GETACTIVE, &active);
+ if (res == ERROR) {
+ perror ("ioctl VT_GETACTIVE");
+ goto out;
+ }
+
+ g_debug ("Active VT is: %d (ttyC%d)", active, active - 1);
+#else
+ res = 0;
+ g_debug ("Active console is: ttyC%d", active);
+#endif
+ ret = TRUE;
+
+ out:
+ if (num != NULL) {
+ *num = active;
+ }
+
+ return ret;
+}
diff --git a/sysutils/consolekit/patches/patch-aa b/sysutils/consolekit/patches/patch-aa
index 2e8cbc0433b..2ed0796bb07 100644
--- a/sysutils/consolekit/patches/patch-aa
+++ b/sysutils/consolekit/patches/patch-aa
@@ -1,8 +1,8 @@
-$NetBSD: patch-aa,v 1.3 2008/12/23 21:46:14 jmcneill Exp $
+$NetBSD: patch-aa,v 1.4 2014/05/05 21:19:40 ryoon Exp $
---- configure.ac.orig 2008-07-30 20:35:53.000000000 -0400
-+++ configure.ac 2008-12-23 16:40:06.000000000 -0500
-@@ -68,10 +68,21 @@
+--- configure.ac.orig 2008-07-31 00:35:53.000000000 +0000
++++ configure.ac
+@@ -68,10 +68,21 @@ AC_SUBST(HAVE_POLKIT)
PKG_CHECK_MODULES(LIBDBUS,
dbus-1 >= $DBUS_REQUIRED_VERSION
)
@@ -25,7 +25,7 @@ $NetBSD: patch-aa,v 1.3 2008/12/23 21:46:14 jmcneill Exp $
PKG_CHECK_MODULES(HISTORY,
glib-2.0 >= $GLIB_REQUIRED_VERSION
-@@ -190,12 +201,20 @@
+@@ -190,13 +201,30 @@ case "$host" in
*-*-solaris*)
CK_BACKEND="solaris"
;;
@@ -36,6 +36,14 @@ $NetBSD: patch-aa,v 1.3 2008/12/23 21:46:14 jmcneill Exp $
+ CK_BACKEND="freebsd"
+ KVM_LIBS="-lkvm"
+ ;;
++ *-*-openbsd*)
++ CK_BACKEND="openbsd"
++ AC_CHECK_LIB(kvm, kvm_openfiles, have_kvm=yes,
++ AC_MSG_ERROR([Unable to find libkvm which is needed on OpenBSD]))
++ if test "x$have_kvm" = "xyes"; then
++ KVM_LIBS="-lkvm"
++ fi
++ ;;
esac
AC_SUBST(KVM_LIBS)
@@ -44,9 +52,11 @@ $NetBSD: patch-aa,v 1.3 2008/12/23 21:46:14 jmcneill Exp $
AM_CONDITIONAL(CK_COMPILE_FREEBSD, test x$CK_BACKEND = xfreebsd, [Compiling for FreeBSD])
+AM_CONDITIONAL(CK_COMPILE_NETBSD, test x$CK_BACKEND = xnetbsd, [Compiling for NetBSD])
AM_CONDITIONAL(CK_COMPILE_SOLARIS, test x$CK_BACKEND = xsolaris, [Compiling for Solaris])
++AM_CONDITIONAL(CK_COMPILE_OPENBSD, test x$CK_BACKEND = xopenbsd, [Compiling for OpenBSD])
AC_SUBST(CK_BACKEND)
-@@ -441,4 +460,4 @@
+ dnl ---------------------------------------------------------------------------
+@@ -441,4 +469,4 @@ if test x${have_polkit} = xno -a x${msg_
echo " a huge SECURITY HOLE. I repeat: YOU NEED TO EDIT THE FILE"
echo " ConsoleKit.conf to match your distro/site to avoid NASTY SECURITY HOLES."
echo ""
diff --git a/sysutils/consolekit/patches/patch-ab b/sysutils/consolekit/patches/patch-ab
index 28ac7f767ba..bc578b59b99 100644
--- a/sysutils/consolekit/patches/patch-ab
+++ b/sysutils/consolekit/patches/patch-ab
@@ -1,8 +1,8 @@
-$NetBSD: patch-ab,v 1.1.1.1 2008/11/22 03:32:22 jmcneill Exp $
+$NetBSD: patch-ab,v 1.2 2014/05/05 21:19:40 ryoon Exp $
---- src/Makefile.am.orig 2008-07-25 14:38:56.000000000 -0400
+--- src/Makefile.am.orig 2008-07-25 18:38:56.000000000 +0000
+++ src/Makefile.am
-@@ -56,11 +56,18 @@ libck_la_SOURCES += \
+@@ -56,11 +56,25 @@ libck_la_SOURCES += \
$(NULL)
libck_la_LIBADD = $(KVM_LIBS)
endif
@@ -12,12 +12,19 @@ $NetBSD: patch-ab,v 1.1.1.1 2008/11/22 03:32:22 jmcneill Exp $
+ $(NULL)
+libck_la_LIBADD = -lkvm
+endif
++if CK_COMPILE_OPENBSD
++libck_la_SOURCES += \
++ ck-sysdeps-openbsd.c \
++ $(NULL)
++libck_la_LIBADD = $(KVM_LIBS)
++endif
EXTRA_libck_la_SOURCES = \
ck-sysdeps-linux.c \
ck-sysdeps-solaris.c \
ck-sysdeps-freebsd.c \
+ ck-sysdeps-netbsd.c \
++ ck-sysdeps-openbsd.c \
$(NULL)
sbin_PROGRAMS = \
diff --git a/sysutils/consolekit/patches/patch-ac b/sysutils/consolekit/patches/patch-ac
index eba4b802a2c..318799f7dfa 100644
--- a/sysutils/consolekit/patches/patch-ac
+++ b/sysutils/consolekit/patches/patch-ac
@@ -1,8 +1,8 @@
-$NetBSD: patch-ac,v 1.1.1.1 2008/11/22 03:32:22 jmcneill Exp $
+$NetBSD: patch-ac,v 1.2 2014/05/05 21:19:40 ryoon Exp $
---- tools/Makefile.am.orig 2008-02-12 22:46:39.000000000 -0500
+--- tools/Makefile.am.orig 2008-02-13 03:46:39.000000000 +0000
+++ tools/Makefile.am
-@@ -18,6 +18,10 @@ if CK_COMPILE_SOLARIS
+@@ -18,6 +18,14 @@ if CK_COMPILE_SOLARIS
SUBDIRS += solaris
endif
@@ -10,6 +10,10 @@ $NetBSD: patch-ac,v 1.1.1.1 2008/11/22 03:32:22 jmcneill Exp $
+SUBDIRS += freebsd
+endif
+
++if CK_COMPILE_OPENBSD
++SUBDIRS += freebsd
++endif
++
DIST_SUBDIRS = \
linux \
freebsd \
diff --git a/sysutils/consolekit/patches/patch-ae b/sysutils/consolekit/patches/patch-ae
index 6f74bf54d0d..0c3d08c03cf 100644
--- a/sysutils/consolekit/patches/patch-ae
+++ b/sysutils/consolekit/patches/patch-ae
@@ -1,7 +1,7 @@
-$NetBSD: patch-ae,v 1.5 2008/12/26 20:05:56 hasso Exp $
+$NetBSD: patch-ae,v 1.6 2014/05/05 21:19:40 ryoon Exp $
---- src/ck-sysdeps-unix.c.orig 2008-11-27 05:10:25 +0200
-+++ src/ck-sysdeps-unix.c 2008-11-27 05:09:59 +0200
+--- src/ck-sysdeps-unix.c.orig 2008-01-23 14:30:44.000000000 +0000
++++ src/ck-sysdeps-unix.c
@@ -35,6 +35,11 @@
#include <linux/kd.h>
#endif
@@ -40,7 +40,19 @@ $NetBSD: patch-ae,v 1.5 2008/12/26 20:05:56 hasso Exp $
/* Adapted from dbus-sysdeps-unix.c:_dbus_read_credentials_socket() */
gboolean
ck_get_socket_peer_credentials (int socket_fd,
-@@ -99,7 +123,16 @@ ck_get_socket_peer_credentials (int
+@@ -69,7 +93,11 @@ ck_get_socket_peer_credentials (int
+ ret = FALSE;
+
+ #ifdef SO_PEERCRED
++#if !defined(__OpenBSD__)
+ struct ucred cr;
++#else
++ struct sockpeercred cr;
++#endif
+ socklen_t cr_len;
+
+ cr_len = sizeof (cr);
+@@ -99,7 +127,16 @@ ck_get_socket_peer_credentials (int
if (ucred != NULL) {
ucred_free (ucred);
}
@@ -58,7 +70,7 @@ $NetBSD: patch-ae,v 1.5 2008/12/26 20:05:56 hasso Exp $
g_warning ("Socket credentials not supported on this OS\n");
#endif
-@@ -126,17 +159,17 @@ ck_get_socket_peer_credentials (int
+@@ -126,17 +163,17 @@ ck_get_socket_peer_credentials (int
gboolean
ck_fd_is_a_console (int fd)
{
@@ -80,7 +92,7 @@ $NetBSD: patch-ae,v 1.5 2008/12/26 20:05:56 hasso Exp $
kb_ok = (ioctl (fd, CONS_GETVERS, &vers) == 0);
#else
kb_ok = 1;
-@@ -172,6 +205,15 @@ ck_get_a_console_fd (void)
+@@ -172,6 +209,15 @@ ck_get_a_console_fd (void)
fd = -1;
@@ -96,7 +108,7 @@ $NetBSD: patch-ae,v 1.5 2008/12/26 20:05:56 hasso Exp $
#ifdef __sun
/* On Solaris, first try Sun VT device. */
fd = open_a_console ("/dev/vt/active");
-@@ -184,6 +226,14 @@ ck_get_a_console_fd (void)
+@@ -184,6 +230,14 @@ ck_get_a_console_fd (void)
}
#endif