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);