pkgsrc-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
pkg/60822: pkgsrc: devel/glib2 does not build on DragonFly
>Number: 60822
>Category: pkg
>Synopsis: pkgsrc: devel/glib2 does not build on DragonFly
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: pkg-manager
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Sep 29 07:40:00 +0000 2026
>Originator: Showta Ishizaki
>Release: pkgsrc as of 2026-09-29, devel/glib2 at glib2-2.90.0nb1
>Organization:
>Environment:
System: DragonFly 6.4.2 x86_64
>Description:
g_unix_fd_query_path() in glib/glib-unix.c puts DragonFly in the
same branch as FreeBSD, which uses fcntl(F_KINFO) and struct
kinfo_file. DragonFly has neither, so the file does not compile:
../glib/glib-unix.c:972:10: error: variable 'kf' has initializer but incomplete type
../glib/glib-unix.c:975:18: error: 'F_KINFO' undeclared (first use in this function); did you mean 'SIGINFO'?
DragonFly has had fcntl(F_GETPATH) since 6.0 (kernel commit
36f3145a09, "kernel - Add fcntl(F_GETPATH)"). It fills a
MAXPATHLEN buffer the same way as on macOS, NetBSD and OpenBSD, so
DragonFly belongs in that branch. Upstream main still has the same
code.
>How-To-Repeat:
Build devel/glib2 on DragonFly.
>Fix:
The diff below extends the tree's patch-glib_glib-unix.c and keeps
its NetBSD hunks as they are. It applies to today's pkgsrc-current
without fuzz, and the new patch applies to the pristine 2.90.0
source without fuzz as well.
With it, devel/glib2 and security/polkit build and install on
DragonFly 6.4.2. The change only moves __DragonFly__ from one
#elif to the other, so every other system compiles the same code
as before.
Diff against pkgsrc-current of 2026-09-29:
Index: devel/glib2/distinfo
--- devel/glib2/distinfo 2026-09-29 16:03:09
+++ devel/glib2/distinfo 2026-09-29 16:03:09
@@ -17,7 +17,7 @@
SHA1 (patch-glib_gatomic.c) = 5d08e19cc1c2557a5c007af8b368968217ce65b0
SHA1 (patch-glib_gatomic.h) = d1c39c3594a5c89d196349e5eafb5512795f55f8
SHA1 (patch-glib_genviron.c) = 45e382a4b5412c69b310fd26482eff6faffa2c0d
-SHA1 (patch-glib_glib-unix.c) = 1c7ef6437680317f5e28c3e75bca26cfec48351f
+SHA1 (patch-glib_glib-unix.c) = c5c247cdc39b46ce550eb9c98b2d59dde65f3154
SHA1 (patch-glib_gspawn-posix.c) = cc5789c94aaaa3b0c586f882bd948610912019d1
SHA1 (patch-glib_gthread.c) = 52cedcf40ad82af9b9f45315aacf63a8abd93fd5
SHA1 (patch-glib_tests_hash.c) = a7e19ca55fcbbc0b188c34755cae5b6b65b67f1a
Index: devel/glib2/patches/patch-glib_glib-unix.c
--- devel/glib2/patches/patch-glib_glib-unix.c 2026-09-29 16:03:09
+++ devel/glib2/patches/patch-glib_glib-unix.c 2026-09-29 16:03:09
@@ -1,7 +1,13 @@
$NetBSD: patch-glib_glib-unix.c,v 1.2 2026/04/24 08:02:58 mrg Exp $
-Fix build on NetBSD.
+Fix build on NetBSD and DragonFly.
+g_unix_fd_query_path() sends DragonFly down the FreeBSD branch, which
+uses fcntl(F_KINFO) and struct kinfo_file. DragonFly has neither, so
+glib-unix.c does not compile there. DragonFly has had fcntl(F_GETPATH)
+since 6.0, used the same way as on macOS, NetBSD and OpenBSD, so move
+it to that branch.
+
--- glib/glib-unix.c.orig 2026-03-16 06:53:50.000000000 -0700
+++ glib/glib-unix.c 2026-04-24 00:41:49.040268939 -0700
@@ -49,6 +49,7 @@
@@ -12,15 +18,27 @@
#include <sys/types.h>
#include <pwd.h>
#include <unistd.h>
-@@ -983,6 +984,7 @@ g_unix_fd_query_path (int fd,
+@@ -967,7 +968,7 @@
+ g_free (proc_path);
+ return g_steal_pointer (&path);
+-#elif defined (__FreeBSD__) || defined(__DragonFly__)
++#elif defined (__FreeBSD__)
+ struct kinfo_file kf = {0};
+
+ kf.kf_structsize = sizeof (kf);
+@@ -982,7 +983,9 @@
+ }
+
return g_strdup (kf.kf_path);
- #elif defined (__APPLE__) || defined (__NetBSD__) || defined (__OpenBSD__)
+-#elif defined (__APPLE__) || defined (__NetBSD__) || defined (__OpenBSD__)
++#elif defined (__APPLE__) || defined (__NetBSD__) || defined (__OpenBSD__) || \
++ defined (__DragonFly__)
+# ifdef F_GETPATH
char file_path[MAXPATHLEN] = {0};
if (fcntl (fd, F_GETPATH, file_path) < 0)
-@@ -996,6 +998,11 @@ g_unix_fd_query_path (int fd,
+@@ -996,6 +999,11 @@
}
return g_strdup (file_path);
Home |
Main Index |
Thread Index |
Old Index