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