Package: dpkg
Version: 1.17.5
Severity: wishlist
Tags: patch

Dear Maintainer,
I've have ported dpkg to DragonFly BSD, the patch is attached.


-- System Information:
Debian Release: jessie/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.12-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=be_BY.UTF-8, LC_CTYPE=be_BY.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages dpkg depends on:
ii  libbz2-1.0   1.0.6-5
ii  libc6        2.17-97
ii  liblzma5     5.1.1alpha+20120614-2
ii  libselinux1  2.2.1-1
ii  tar          1.27-4
ii  zlib1g       1:1.2.8.dfsg-1

dpkg recommends no packages.

Versions of packages dpkg suggests:
ii  apt  0.9.14.2

-- no debconf information
diff -uNr dpkg-1.17.5~/ostable dpkg-1.17.5/ostable
--- dpkg-1.17.5~/ostable	2013-12-04 02:48:11.000000000 +0000
+++ dpkg-1.17.5/ostable	2014-01-04 10:53:37.000000000 +0000
@@ -36,3 +36,4 @@
 uclibceabi-uclinux	uclinux-uclibceabi	uclinux[^-]*-uclibceabi
 uclibc-uclinux		uclinux-uclibc		uclinux[^-]*(-uclibc.*)?
 tos-mint		mint			mint[^-]*
+bsd-dragonflybsd	dragonflybsd		dragonfly[^-]*
diff -uNr dpkg-1.17.5~/triplettable dpkg-1.17.5/triplettable
--- dpkg-1.17.5~/triplettable	2013-12-04 02:48:11.000000000 +0000
+++ dpkg-1.17.5/triplettable	2014-01-04 10:53:37.000000000 +0000
@@ -29,3 +29,4 @@
 uclibceabi-uclinux-arm	uclinux-armel
 uclibc-uclinux-<cpu>	uclinux-<cpu>
 tos-mint-m68k		mint-m68k
+bsd-dragonflybsd-<cpu>  dragonflybsd-<cpu>
diff -uNr dpkg-1.17.5~/utils/start-stop-daemon.c dpkg-1.17.5/utils/start-stop-daemon.c
--- dpkg-1.17.5~/utils/start-stop-daemon.c	2013-12-10 06:14:22.000000000 +0000
+++ dpkg-1.17.5/utils/start-stop-daemon.c	2014-01-04 10:56:17.000000000 +0000
@@ -39,6 +39,8 @@
 #  define OSFreeBSD
 #elif defined(__NetBSD__)
 #  define OSNetBSD
+#elif defined(__DragonFly__)
+#  define OSDragonflyBSD
 #else
 #  error Unknown architecture - cannot build start-stop-daemon
 #endif
@@ -59,6 +61,13 @@
 #include <err.h>
 #endif
 
+#if defined(OSDragonflyBSD)
+#include <sys/param.h>
+#include <sys/user.h>
+
+#include <err.h>
+#endif
+
 #ifdef HAVE_KVM_H
 #include <sys/sysctl.h>
 #include <sys/user.h>
@@ -122,6 +131,8 @@
 #define PROCESS_NAME_SIZE 16
 #elif defined(OSFreeBSD)
 #define PROCESS_NAME_SIZE 19
+#elif defined (OSDragonflyBSD)
+#define PROCESS_NAME_SIZE MAXCOMLEN
 #endif
 
 #define MIN_POLL_INTERVAL 20000 /* µs */
@@ -1231,11 +1242,15 @@
 	kp = kvm_getprocs(kd, KERN_PROC_PID, pid, &nentries);
 	if (kp == NULL)
 		errx(1, "%s", kvm_geterr(kd));
+#  if defined (OSDragonflyBSD)
+	kvm_read(kd, (u_long)&(kp->kp_ruid), &proc_uid, sizeof(uid_t));
+#  else
 	if (kp->kp_proc.p_cred)
 		kvm_read(kd, (u_long)&(kp->kp_proc.p_cred->p_ruid),
 		         &proc_uid, sizeof(uid_t));
 	else
 		return false;
+#  endif
 	return (proc_uid == (uid_t)uid);
 }
 #endif
@@ -1320,7 +1335,11 @@
 	kp = kvm_getprocs(kd, KERN_PROC_PID, pid, &nentries);
 	if (kp == NULL)
 		errx(1, "%s", kvm_geterr(kd));
+#  if defined (OSDragonflyBSD)
+	process_name = kp->kp_comm;
+#  else
 	process_name = (&kp->kp_proc)->p_comm;
+#  endif
 	if (strlen(name) != strlen(process_name))
 		return false;
 	return (strcmp(name, process_name) == 0);

Reply via email to