Page MenuHomeFreeBSD

D25279.id73135.diff
No OneTemporary

D25279.id73135.diff

Index: devel/glib20/Makefile
===================================================================
--- devel/glib20/Makefile
+++ devel/glib20/Makefile
@@ -2,8 +2,7 @@
# $FreeBSD$
PORTNAME= glib
-PORTVERSION= 2.56.3
-PORTREVISION= 7
+PORTVERSION= 2.64.3
PORTEPOCH= 1
CATEGORIES= devel
MASTER_SITES= GNOME
@@ -22,24 +21,20 @@
LIB_DEPENDS+= libpcre.so:devel/pcre \
libffi.so:devel/libffi
-GNU_CONFIGURE= yes
USE_LDCONFIG= yes
# iconv:wchar_t - our iconv in base doesn't support utf-8 -> wchar_t (boooo)
# (wchar_t is used by glibmm, rawtherapee triggered this)
-USES+= compiler:c11 gettext gmake gnome iconv:wchar_t libtool \
- localbase pathfix perl5 pkgconfig python shebangfix
-USE_PYTHON= py3kplist
-USE_PERL5= build
-CONFIGURE_ARGS= --disable-gtk-doc --with-html-dir=${PREFIX}/share/doc \
- --enable-static=yes \
- --with-pcre=system \
- --disable-fam
-CONFIGURE_ENV= ac_cv_header_sys_inotify_h=
-INSTALL_TARGET= install-strip
+USES+= compiler:c11 gettext gnome iconv:wchar_t libtool \
+ localbase:ldflags meson pathfix pkgconfig python shebangfix
+MESON_ARGS= -Diconv=external
-SHEBANG_FILES= */*.pl
+MESON_ARGS+= -Dselinux=disabled \
+ -Dlibmount=disabled \
+ -Dgtk_doc=false \
+ -Dxattr=false \
+ -Dfam=false
-LIBVERSION= 0.5600.3
+LIBVERSION= 0.6400.3
PLIST_SUB+= LIBVERSION=${LIBVERSION}
glib_MAN= gtester.1 gtester-report.1 glib-gettextize.1
@@ -48,67 +43,47 @@
glib-compile-resources.1 gresource.1 gdbus-codegen.1
gobject_MAN= glib-genmarshal.1 glib-mkenums.1 gobject-query.1
-OPTIONS_DEFINE= DEBUG MANPAGES NLS
+OPTIONS_DEFINE= MANPAGES NLS
OPTIONS_DEFAULT= MANPAGES
OPTIONS_SUB= yes
-DEBUG_CONFIGURE_ON= --enable-debug=yes
-
MANPAGES_BUILD_DEPENDS= docbook-xml>4.1.2:textproc/docbook-xml \
docbook-xsl>0:textproc/docbook-xsl
MANPAGES_USE= GNOME=libxslt:build
-MANPAGES_CONFIGURE_ENABLE= man
-MANPAGES_CONFIGURE_ON= --with-xml-catalog=${LOCALBASE}/share/xml/catalog
+MANPAGES_MESON_TRUE= man
.include <bsd.port.pre.mk>
# doesn't build yet
-CONFIGURE_ARGS+=--disable-dtrace
+MESON_ARGS+= -Ddtrace=false
-.if empty(ICONV_LIB)
-CONFIGURE_ARGS+= --with-libiconv=no
-.else
-CONFIGURE_ARGS+= --with-libiconv=gnu
-.endif
-
.if ${ARCH} == powerpc64
EXTRA_PATCHES+= ${FILESDIR}/extra-arch-powerpc64
.endif
-# Let glib use asm code for implementing atomic ops on i386 and amd64.
-.if ${ARCH} == "i386"
-GLIB_ARCH= i486
-.elif ${ARCH} == "amd64"
-GLIB_ARCH= x86_64
-.else
-GLIB_ARCH= ${ARCH}
-.endif
-CONFIGURE_TARGET=${GLIB_ARCH}-portbld-freebsd${OSREL}
+# -Wl,--no-undefined seems to be causing issues: undefined reference to environ
+# both with lld and newer binutils
+#
+post-configure:
+ @${REINPLACE_CMD} -e 's/-Wl,--no-undefined//g' ${WRKSRC}/_build/build.ninja
post-patch:
- @${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g ; \
- s|/usr/share/locale/locale|${LOCALBASE}/share/locale/locale|g' \
- ${WRKSRC}/glib/gutils.c
- @${REINPLACE_CMD} -e 's|inotify_support=yes|inotify_support=no| ; \
- s|-Werror|| ; \
- s|#define HAVE_SYS_INOTIFY_H 1||' ${WRKSRC}/configure
+ @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
+ ${WRKSRC}/glib/gutils.c \
+ ${WRKSRC}/gio/xdgmime/xdgmime.c \
+ ${WRKSRC}/glib/gcharset.c \
+ ${WRKSRC}/gio/tests/desktop-app-info.c
+ @${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' \
+ ${WRKSRC}/docs/reference/gio/glib-compile-schemas.xml
+ @${REINPLACE_CMD} -e "s|'python3'|'${PYTHON_CMD}'|g" \
+ ${WRKSRC}/meson.build
-do-build-MANPAGES-on:
-.for m in glib gio gobject
-. for file in ${${m}_MAN}
- cd ${WRKSRC}/docs/reference/${m} && ${GMAKE} ${file}
-. endfor
-.endfor
-
post-install:
@${MKDIR} ${STAGEDIR}${PREFIX}/share/GConf/gsettings
@${MKDIR} ${STAGEDIR}${PREFIX}/lib/gio/modules
-
-post-install-MANPAGES-on:
-.for m in glib gio gobject
- ${INSTALL_MAN} ${${m}_MAN:S|^|${WRKSRC}/docs/reference/${m}/|} \
- ${STAGEDIR}${PREFIX}/man/man1
-.endfor
+ # Do not build depend on bash
+ @${MKDIR} ${STAGEDIR}${PREFIX}/share/bash-completion/completions
+ ${INSTALL_SCRIPT} ${WRKSRC}/gio/completion/* ${STAGEDIR}${PREFIX}/share/bash-completion/completions
.include <bsd.port.post.mk>
Index: devel/glib20/distinfo
===================================================================
--- devel/glib20/distinfo
+++ devel/glib20/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1538415400
-SHA256 (gnome2/glib-2.56.3.tar.xz) = a9a4c5b4c81b6c75bc140bdf5e32120ef3ce841b7413214ecf5f987acec74cb2
-SIZE (gnome2/glib-2.56.3.tar.xz) = 7009912
+TIMESTAMP = 1592207103
+SHA256 (gnome2/glib-2.64.3.tar.xz) = fe9cbc97925d14c804935f067a3ad77ef55c0bbe9befe68962318f5a767ceb22
+SIZE (gnome2/glib-2.64.3.tar.xz) = 4778964
Index: devel/glib20/files/extra-gobject_gdbscripts
===================================================================
--- devel/glib20/files/extra-gobject_gdbscripts
+++ /dev/null
@@ -1,22 +0,0 @@
---- gobject/Makefile.in.orig 2014-03-09 10:09:41.628312066 +0000
-+++ gobject/Makefile.in 2014-03-09 10:09:48.181311433 +0000
-@@ -2003,7 +2003,7 @@
-
- info-am:
-
--install-data-am: install-data-local install-dist_gdbSCRIPTS \
-+install-data-am: install-data-local \
- install-installed_testLTLIBRARIES \
- install-installed_testPROGRAMS install-installed_testSCRIPTS \
- install-installed_test_metaDATA \
-@@ -2230,9 +2230,7 @@
- uninstall-gdb:
- -rm -r $(DESTDIR)$(datadir)/gdb
-
--install-data-hook: libgobject-gdb.py
-- mkdir -p $(DESTDIR)$(datadir)/gdb/auto-load/$(ABS_GLIB_RUNTIME_LIBDIR)
-- $(INSTALL) $(builddir)/libgobject-gdb.py $(DESTDIR)$(datadir)/gdb/auto-load/$(ABS_GLIB_RUNTIME_LIBDIR)/libgobject-2.0.so.0.$(LT_CURRENT).$(LT_REVISION)-gdb.py
-+install-data-hook:
- @HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ mkdir -p $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
- @HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ mv $(DESTDIR)$(libdir)/libgobject-2.0.so.0 $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
- @HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ mv $(DESTDIR)$(libdir)/libgobject-2.0.so.0.$(LT_CURRENT).$(LT_REVISION) $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
Index: devel/glib20/files/patch-config.h.in
===================================================================
--- devel/glib20/files/patch-config.h.in
+++ /dev/null
@@ -1,12 +0,0 @@
---- config.h.in.orig 2008-03-18 18:24:24.000000000 -0400
-+++ config.h.in 2008-03-18 18:24:59.000000000 -0400
-@@ -197,6 +197,9 @@
- /* Define to 1 if you have the `getpwuid' function. */
- #undef HAVE_GETPWUID
-
-+/* Define to 1 if you have the `sysctlbyname' function. */
-+#undef HAVE_SYSCTLBYNAME
-+
- /* Define if the GNU gettext() function is already present or preinstalled. */
- #undef HAVE_GETTEXT
-
Index: devel/glib20/files/patch-configure
===================================================================
--- devel/glib20/files/patch-configure
+++ /dev/null
@@ -1,16 +0,0 @@
---- configure.orig 2014-09-28 09:31:41.079343419 +0200
-+++ configure 2014-09-28 09:31:41.243342071 +0200
-@@ -26730,9 +26728,12 @@
- *android*)
- G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS"
- ;;
-- *-*-freebsd*|*-*-linux*)
-+ *-*-linux*)
- G_THREAD_LIBS_FOR_GTHREAD="`echo $G_THREAD_LIBS | sed s/-pthread/-lpthread/`"
- ;;
-+ *-*-freebsd*)
-+ LDFLAGS="$LDFLAGS -pthread"
-+ ;;
- *)
- G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS"
- ;;
Index: devel/glib20/files/patch-docs_reference_Makefile.in
===================================================================
--- devel/glib20/files/patch-docs_reference_Makefile.in
+++ /dev/null
@@ -1,11 +0,0 @@
---- docs/reference/Makefile.in.orig 2013-09-26 18:08:36.000000000 +0200
-+++ docs/reference/Makefile.in 2013-09-26 18:08:53.000000000 +0200
-@@ -422,7 +422,7 @@
- top_build_prefix = @top_build_prefix@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
--SUBDIRS = glib gobject gio
-+SUBDIRS = #glib gobject gio
- all: all-recursive
-
- .SUFFIXES:
Index: devel/glib20/files/patch-docs_reference_gio_glib-compile-schemas.xml
===================================================================
--- /dev/null
+++ devel/glib20/files/patch-docs_reference_gio_glib-compile-schemas.xml
@@ -0,0 +1,11 @@
+--- docs/reference/gio/glib-compile-schemas.xml.orig 2020-05-20 10:46:43 UTC
++++ docs/reference/gio/glib-compile-schemas.xml
+@@ -45,7 +45,7 @@ At runtime, GSettings looks for schemas in the
+ <filename>glib-2.0/schemas</filename> subdirectories of all directories
+ specified in the <envar>XDG_DATA_DIRS</envar> environment variable. The
+ usual location to install schema files is
+-<filename>/usr/share/glib-2.0/schemas</filename>.
++<filename>%%PREFIX%%/share/glib-2.0/schemas</filename>.
+ </para>
+ <para>
+ In addition to schema files, glib-compile-schemas reads 'vendor override'
Index: devel/glib20/files/patch-gio_glib-compile-schemas.c
===================================================================
--- devel/glib20/files/patch-gio_glib-compile-schemas.c
+++ devel/glib20/files/patch-gio_glib-compile-schemas.c
@@ -1,6 +1,6 @@
---- gio/glib-compile-schemas.c.orig 2017-08-07 16:58:31.000000000 +0200
-+++ gio/glib-compile-schemas.c 2017-09-15 09:25:19.746310000 +0200
-@@ -1219,6 +1219,7 @@ parse_state_start_schema (ParseState *state,
+--- gio/glib-compile-schemas.c.orig 2020-05-20 10:46:43 UTC
++++ gio/glib-compile-schemas.c
+@@ -1232,6 +1232,7 @@ parse_state_start_schema (ParseState *state,
return;
}
@@ -8,7 +8,7 @@
if (path && (g_str_has_prefix (path, "/apps/") ||
g_str_has_prefix (path, "/desktop/") ||
g_str_has_prefix (path, "/system/")))
-@@ -1231,6 +1232,7 @@ parse_state_start_schema (ParseState *state,
+@@ -1244,6 +1245,7 @@ parse_state_start_schema (ParseState *state,
g_printerr ("%s\n", message);
g_free (message);
}
Index: devel/glib20/files/patch-gio_gthreadedresolver.c
===================================================================
--- devel/glib20/files/patch-gio_gthreadedresolver.c
+++ /dev/null
@@ -1,12 +0,0 @@
-Upstream bug: https://gitlab.gnome.org/GNOME/glib/issues/1697
-
---- gio/gthreadedresolver.c.orig
-+++ gio/gthreadedresolver.c
-@@ -836,6 +836,7 @@
- * worker thread. (Although the workers would get reused by the
- * #GThreadPool.) */
- struct __res_state res;
-+ memset( &res, 0, sizeof( res ));
- if (res_ninit (&res) != 0)
- {
- g_task_return_new_error (task, G_RESOLVER_ERROR, G_RESOLVER_ERROR_INTERNAL,
Index: devel/glib20/files/patch-gio_gunixmount.c
===================================================================
--- devel/glib20/files/patch-gio_gunixmount.c
+++ devel/glib20/files/patch-gio_gunixmount.c
@@ -1,19 +1,24 @@
---- gio/gunixmount.c.orig 2014-09-21 13:00:08.875162804 +0200
-+++ gio/gunixmount.c 2014-09-21 13:00:14.327163623 +0200
-@@ -353,12 +353,17 @@
+--- gio/gunixmount.c.orig 2020-05-20 10:46:43 UTC
++++ gio/gunixmount.c
+@@ -356,12 +356,22 @@ g_unix_mount_eject (GMount *mount,
gpointer user_data)
{
GUnixMount *unix_mount = G_UNIX_MOUNT (mount);
-+#ifndef __FreeBSD__
++#ifdef __FreeBSD__
++ char *argv[] = {"cdcontrol", "-f", NULL, "eject", NULL};
++
++ if (unix_mount->mount_path != NULL)
++ argv[2] = unix_mount->mount_path;
++ else
++ argv[2] = unix_mount->device_path;
++#else
++
char *argv[] = {"eject", NULL, NULL};
if (unix_mount->mount_path != NULL)
argv[1] = unix_mount->mount_path;
else
argv[1] = unix_mount->device_path;
-+#else
-+ char *argv[] = {"cdcontrol", "-f", NULL, "eject", NULL};
-+ argv[2] = unix_mount->device_path;
+#endif
eject_unmount_do (mount, cancellable, callback, user_data, argv);
Index: devel/glib20/files/patch-gio_gunixvolume.c
===================================================================
--- devel/glib20/files/patch-gio_gunixvolume.c
+++ devel/glib20/files/patch-gio_gunixvolume.c
@@ -1,11 +1,12 @@
---- gio/gunixvolume.c.orig 2014-03-20 04:50:45.000000000 +0100
-+++ gio/gunixvolume.c 2014-03-24 20:44:40.000000000 +0100
-@@ -356,9 +356,14 @@
+--- gio/gunixvolume.c.orig 2020-06-15 12:26:27 UTC
++++ gio/gunixvolume.c
+@@ -365,9 +365,15 @@ g_unix_volume_eject (GVolume *volume,
gpointer user_data)
{
GUnixVolume *unix_volume = G_UNIX_VOLUME (volume);
+#ifdef __FreeBSD__
-+ const gchar *argv[] = {"cdcontrol", "-f", NULL, "eject", NULL};
++ const gchar *argv[] = { "cdcontrol", "-f", NULL, NULL };
++
+ argv[2] = unix_volume->device_path;
+#else
const gchar *argv[] = { "eject", NULL, NULL };
Index: devel/glib20/files/patch-gio_kqueue-kqueue-missing.c
===================================================================
--- devel/glib20/files/patch-gio_kqueue-kqueue-missing.c
+++ /dev/null
@@ -1,93 +0,0 @@
---- gio/kqueue/kqueue-missing.c.orig 2018-04-09 22:48:45.637366000 +0200
-+++ gio/kqueue/kqueue-missing.c 2018-04-09 22:48:55.840341000 +0200
-@@ -23,12 +23,12 @@
- #include <glib.h>
-
- #include "kqueue-helper.h"
--#include "kqueue-sub.h"
--#include "kqueue-missing.h"
-
-
- #define SCAN_MISSING_TIME 4 /* 1/4 Hz */
-
-+void _kh_file_appeared_cb (kqueue_sub *sub);
-+
- static gboolean km_scan_missing (gpointer user_data);
-
- static gboolean km_debug_enabled = FALSE;
-@@ -38,24 +38,9 @@ static GSList *missing_subs_list = NULL;
- G_LOCK_DEFINE_STATIC (missing_lock);
-
- static volatile gboolean scan_missing_running = FALSE;
--static on_create_cb file_appeared_callback;
-
-
- /**
-- * _km_init:
-- * @cb: a callback function. It will be called when a watched file
-- * will appear.
-- *
-- * Initialize the kqueue-missing module (optional).
-- **/
--void
--_km_init (on_create_cb cb)
--{
-- file_appeared_callback = cb;
--}
--
--
--/**
- * _km_add_missing:
- * @sub: a #kqueue_sub
- *
-@@ -83,7 +68,36 @@ _km_add_missing (kqueue_sub *sub)
- }
- }
-
-+/**
-+ * _kh_file_appeared_cb:
-+ * @sub: a #kqueue_sub
-+ *
-+ * A callback function for kqueue-missing subsystem.
-+ *
-+ * Signals that a missing file has finally appeared in the filesystem.
-+ * Emits %G_FILE_MONITOR_EVENT_CREATED.
-+ **/
-+void
-+_kh_file_appeared_cb (kqueue_sub *sub)
-+{
-+ GFile *child;
-
-+ g_assert (sub != NULL);
-+ g_assert (sub->filename);
-+
-+ if (!g_file_test (sub->filename, G_FILE_TEST_EXISTS))
-+ return;
-+
-+ child = g_file_new_for_path (sub->filename);
-+
-+ g_file_monitor_emit_event (G_FILE_MONITOR (sub->mon),
-+ child,
-+ NULL,
-+ G_FILE_MONITOR_EVENT_CREATED);
-+
-+ g_object_unref (child);
-+}
-+
- /**
- * km_scan_missing:
- * @user_data: unused
-@@ -114,11 +128,10 @@ km_scan_missing (gpointer user_data)
- g_assert (sub != NULL);
- g_assert (sub->filename != NULL);
-
-- if (_kh_start_watching (sub))
-+ if (_kqsub_start_watching (sub))
- {
- KM_W ("file %s now exists, starting watching", sub->filename);
-- if (file_appeared_callback)
-- file_appeared_callback (sub);
-+ _kh_file_appeared_cb (sub);
- not_missing = g_slist_prepend (not_missing, head);
- }
- }
Index: devel/glib20/files/patch-gio_kqueue_Makefile.in
===================================================================
--- devel/glib20/files/patch-gio_kqueue_Makefile.in
+++ /dev/null
@@ -1,87 +0,0 @@
---- gio/kqueue/Makefile.in.orig 2018-10-01 19:39:31.421019000 +0200
-+++ gio/kqueue/Makefile.in 2018-10-01 19:43:01.841725000 +0200
-@@ -187,9 +187,7 @@ LTLIBRARIES = $(installed_test_LTLIBRARIES) $(noinst_L
- libkqueue_la_LIBADD =
- am__objects_1 =
- am_libkqueue_la_OBJECTS = libkqueue_la-gkqueuefilemonitor.lo \
-- libkqueue_la-kqueue-helper.lo libkqueue_la-kqueue-thread.lo \
-- libkqueue_la-kqueue-sub.lo libkqueue_la-kqueue-missing.lo \
-- libkqueue_la-kqueue-utils.lo libkqueue_la-kqueue-exclusions.lo \
-+ libkqueue_la-kqueue-helper.lo libkqueue_la-kqueue-missing.lo \
- libkqueue_la-dep-list.lo $(am__objects_1)
- libkqueue_la_OBJECTS = $(am_libkqueue_la_OBJECTS)
- AM_V_lt = $(am__v_lt_@AM_V@)
-@@ -785,19 +783,9 @@ all_test_ltlibs = $(test_ltlibraries) $(uninstalled_te
- @ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test)
- libkqueue_la_SOURCES = \
- gkqueuefilemonitor.c \
-- gkqueuefilemonitor.h \
- kqueue-helper.c \
- kqueue-helper.h \
-- kqueue-thread.c \
-- kqueue-thread.h \
-- kqueue-sub.c \
-- kqueue-sub.h \
- kqueue-missing.c \
-- kqueue-missing.h \
-- kqueue-utils.c \
-- kqueue-utils.h \
-- kqueue-exclusions.c \
-- kqueue-exclusions.h \
- dep-list.c \
- dep-list.h \
- $(NULL)
-@@ -1017,12 +1005,8 @@ distclean-compile:
-
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkqueue_la-dep-list.Plo@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkqueue_la-gkqueuefilemonitor.Plo@am__quote@ # am--include-marker
--@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkqueue_la-kqueue-exclusions.Plo@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkqueue_la-kqueue-helper.Plo@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkqueue_la-kqueue-missing.Plo@am__quote@ # am--include-marker
--@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkqueue_la-kqueue-sub.Plo@am__quote@ # am--include-marker
--@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkqueue_la-kqueue-thread.Plo@am__quote@ # am--include-marker
--@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkqueue_la-kqueue-utils.Plo@am__quote@ # am--include-marker
-
- $(am__depfiles_remade):
- @$(MKDIR_P) $(@D)
-@@ -1068,40 +1052,12 @@ libkqueue_la-kqueue-helper.lo: kqueue-helper.c
- @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -c -o libkqueue_la-kqueue-helper.lo `test -f 'kqueue-helper.c' || echo '$(srcdir)/'`kqueue-helper.c
-
--libkqueue_la-kqueue-thread.lo: kqueue-thread.c
--@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -MT libkqueue_la-kqueue-thread.lo -MD -MP -MF $(DEPDIR)/libkqueue_la-kqueue-thread.Tpo -c -o libkqueue_la-kqueue-thread.lo `test -f 'kqueue-thread.c' || echo '$(srcdir)/'`kqueue-thread.c
--@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkqueue_la-kqueue-thread.Tpo $(DEPDIR)/libkqueue_la-kqueue-thread.Plo
--@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kqueue-thread.c' object='libkqueue_la-kqueue-thread.lo' libtool=yes @AMDEPBACKSLASH@
--@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -c -o libkqueue_la-kqueue-thread.lo `test -f 'kqueue-thread.c' || echo '$(srcdir)/'`kqueue-thread.c
--
--libkqueue_la-kqueue-sub.lo: kqueue-sub.c
--@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -MT libkqueue_la-kqueue-sub.lo -MD -MP -MF $(DEPDIR)/libkqueue_la-kqueue-sub.Tpo -c -o libkqueue_la-kqueue-sub.lo `test -f 'kqueue-sub.c' || echo '$(srcdir)/'`kqueue-sub.c
--@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkqueue_la-kqueue-sub.Tpo $(DEPDIR)/libkqueue_la-kqueue-sub.Plo
--@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kqueue-sub.c' object='libkqueue_la-kqueue-sub.lo' libtool=yes @AMDEPBACKSLASH@
--@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -c -o libkqueue_la-kqueue-sub.lo `test -f 'kqueue-sub.c' || echo '$(srcdir)/'`kqueue-sub.c
--
- libkqueue_la-kqueue-missing.lo: kqueue-missing.c
- @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -MT libkqueue_la-kqueue-missing.lo -MD -MP -MF $(DEPDIR)/libkqueue_la-kqueue-missing.Tpo -c -o libkqueue_la-kqueue-missing.lo `test -f 'kqueue-missing.c' || echo '$(srcdir)/'`kqueue-missing.c
- @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkqueue_la-kqueue-missing.Tpo $(DEPDIR)/libkqueue_la-kqueue-missing.Plo
- @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kqueue-missing.c' object='libkqueue_la-kqueue-missing.lo' libtool=yes @AMDEPBACKSLASH@
- @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -c -o libkqueue_la-kqueue-missing.lo `test -f 'kqueue-missing.c' || echo '$(srcdir)/'`kqueue-missing.c
--
--libkqueue_la-kqueue-utils.lo: kqueue-utils.c
--@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -MT libkqueue_la-kqueue-utils.lo -MD -MP -MF $(DEPDIR)/libkqueue_la-kqueue-utils.Tpo -c -o libkqueue_la-kqueue-utils.lo `test -f 'kqueue-utils.c' || echo '$(srcdir)/'`kqueue-utils.c
--@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkqueue_la-kqueue-utils.Tpo $(DEPDIR)/libkqueue_la-kqueue-utils.Plo
--@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kqueue-utils.c' object='libkqueue_la-kqueue-utils.lo' libtool=yes @AMDEPBACKSLASH@
--@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -c -o libkqueue_la-kqueue-utils.lo `test -f 'kqueue-utils.c' || echo '$(srcdir)/'`kqueue-utils.c
--
--libkqueue_la-kqueue-exclusions.lo: kqueue-exclusions.c
--@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -MT libkqueue_la-kqueue-exclusions.lo -MD -MP -MF $(DEPDIR)/libkqueue_la-kqueue-exclusions.Tpo -c -o libkqueue_la-kqueue-exclusions.lo `test -f 'kqueue-exclusions.c' || echo '$(srcdir)/'`kqueue-exclusions.c
--@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkqueue_la-kqueue-exclusions.Tpo $(DEPDIR)/libkqueue_la-kqueue-exclusions.Plo
--@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kqueue-exclusions.c' object='libkqueue_la-kqueue-exclusions.lo' libtool=yes @AMDEPBACKSLASH@
--@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -c -o libkqueue_la-kqueue-exclusions.lo `test -f 'kqueue-exclusions.c' || echo '$(srcdir)/'`kqueue-exclusions.c
-
- libkqueue_la-dep-list.lo: dep-list.c
- @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -MT libkqueue_la-dep-list.lo -MD -MP -MF $(DEPDIR)/libkqueue_la-dep-list.Tpo -c -o libkqueue_la-dep-list.lo `test -f 'dep-list.c' || echo '$(srcdir)/'`dep-list.c
Index: devel/glib20/files/patch-gio_kqueue_gkqueuefilemonitor.c
===================================================================
--- devel/glib20/files/patch-gio_kqueue_gkqueuefilemonitor.c
+++ /dev/null
@@ -1,463 +0,0 @@
---- gio/kqueue/gkqueuefilemonitor.c.orig 2018-04-07 04:10:22.000000000 +0200
-+++ gio/kqueue/gkqueuefilemonitor.c 2018-05-03 20:21:55.830634000 +0200
-@@ -22,33 +22,73 @@
-
- #include "config.h"
-
--#include "gkqueuefilemonitor.h"
--#include "kqueue-helper.h"
--#include "kqueue-exclusions.h"
-+#include <sys/types.h>
-+#include <sys/event.h>
-+#include <sys/time.h>
-+#include <sys/socket.h>
-+#include <sys/stat.h>
-+
-+#include <errno.h>
-+#include <fcntl.h>
-+#include <string.h>
-+
-+#include <glib-object.h>
-+#include <gio/gfilemonitor.h>
-+#include <gio/glocalfilemonitor.h>
-+#include <gio/giomodule.h>
- #include <gio/gpollfilemonitor.h>
- #include <gio/gfile.h>
--#include <gio/giomodule.h>
-+#include <glib-unix.h>
-+#include "glib-private.h"
-
-+#include "kqueue-helper.h"
-+#include "dep-list.h"
-
--struct _GKqueueFileMonitor
-+G_LOCK_DEFINE_STATIC (kq_lock);
-+static GSource *kq_source;
-+static int kq_queue = -1;
-+
-+#define G_TYPE_KQUEUE_FILE_MONITOR (g_kqueue_file_monitor_get_type ())
-+#define G_KQUEUE_FILE_MONITOR(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \
-+ G_TYPE_KQUEUE_FILE_MONITOR, GKqueueFileMonitor))
-+
-+typedef GLocalFileMonitorClass GKqueueFileMonitorClass;
-+
-+typedef struct
- {
- GLocalFileMonitor parent_instance;
-
- kqueue_sub *sub;
--
-+#ifndef O_EVTONLY
- GFileMonitor *fallback;
- GFile *fbfile;
--};
-+#endif
-+} GKqueueFileMonitor;
-
-+GType g_kqueue_file_monitor_get_type (void);
-+G_DEFINE_TYPE_WITH_CODE (GKqueueFileMonitor, g_kqueue_file_monitor, G_TYPE_LOCAL_FILE_MONITOR,
-+ g_io_extension_point_implement (G_LOCAL_FILE_MONITOR_EXTENSION_POINT_NAME,
-+ g_define_type_id,
-+ "kqueue",
-+ 20))
-+
-+#ifndef O_EVTONLY
-+#define O_KQFLAG O_RDONLY
-+#else
-+#define O_KQFLAG O_EVTONLY
-+#endif
-+
-+#define NOTE_ALL (NOTE_DELETE|NOTE_WRITE|NOTE_EXTEND|NOTE_ATTRIB|NOTE_RENAME)
-+
- static gboolean g_kqueue_file_monitor_cancel (GFileMonitor* monitor);
-+static gboolean g_kqueue_file_monitor_is_supported (void);
-
--G_DEFINE_TYPE_WITH_CODE (GKqueueFileMonitor, g_kqueue_file_monitor, G_TYPE_LOCAL_FILE_MONITOR,
-- g_io_extension_point_implement (G_LOCAL_FILE_MONITOR_EXTENSION_POINT_NAME,
-- g_define_type_id,
-- "kqueue",
-- 20))
-+static kqueue_sub *_kqsub_new (const gchar *, GLocalFileMonitor *, GFileMonitorSource *);
-+static void _kqsub_free (kqueue_sub *);
-+static gboolean _kqsub_cancel (kqueue_sub *);
-
-
-+#ifndef O_EVTONLY
- static void
- _fallback_callback (GFileMonitor *unused,
- GFile *first,
-@@ -57,22 +97,42 @@ _fallback_callback (GFileMonitor *unused,
- gpointer udata)
- {
- GKqueueFileMonitor *kq_mon = G_KQUEUE_FILE_MONITOR (udata);
-- GFileMonitor *mon = G_FILE_MONITOR (kq_mon);
-- g_assert (kq_mon != NULL);
-- g_assert (mon != NULL);
-- (void) unused;
-
-- if (event == G_FILE_MONITOR_EVENT_CHANGED)
-- {
-- GLocalFileMonitor *local_monitor = G_LOCAL_FILE_MONITOR (kq_mon);
--
-- _kh_dir_diff (kq_mon->sub, local_monitor->source);
-- }
-- else
-- g_file_monitor_emit_event (mon, first, second, event);
-+ g_file_monitor_emit_event (G_FILE_MONITOR (kq_mon), first, second, event);
- }
-
-+/*
-+ * _ke_is_excluded:
-+ * @full_path - a path to file to check.
-+ *
-+ * Returns: TRUE if the file should be excluded from the kqueue-powered
-+ * monitoring, FALSE otherwise.
-+ **/
-+gboolean
-+_ke_is_excluded (const char *full_path)
-+{
-+ GFile *f = NULL;
-+ GMount *mount = NULL;
-
-+ f = g_file_new_for_path (full_path);
-+
-+ if (f != NULL) {
-+ mount = g_file_find_enclosing_mount (f, NULL, NULL);
-+ g_object_unref (f);
-+ }
-+
-+ if ((mount != NULL && (g_mount_can_unmount (mount))) || g_str_has_prefix (full_path, "/mnt/"))
-+ {
-+ g_warning ("Excluding %s from kernel notification, falling back to poll", full_path);
-+ if (mount)
-+ g_object_unref (mount);
-+ return TRUE;
-+ }
-+
-+ return FALSE;
-+}
-+#endif /* !O_EVTONLY */
-+
- static void
- g_kqueue_file_monitor_finalize (GObject *object)
- {
-@@ -80,16 +140,18 @@ g_kqueue_file_monitor_finalize (GObject *object)
-
- if (kqueue_monitor->sub)
- {
-- _kh_cancel_sub (kqueue_monitor->sub);
-- _kh_sub_free (kqueue_monitor->sub);
-+ _kqsub_cancel (kqueue_monitor->sub);
-+ _kqsub_free (kqueue_monitor->sub);
- kqueue_monitor->sub = NULL;
- }
-
-+#ifndef O_EVTONLY
- if (kqueue_monitor->fallback)
- g_object_unref (kqueue_monitor->fallback);
-
- if (kqueue_monitor->fbfile)
- g_object_unref (kqueue_monitor->fbfile);
-+#endif
-
- if (G_OBJECT_CLASS (g_kqueue_file_monitor_parent_class)->finalize)
- (*G_OBJECT_CLASS (g_kqueue_file_monitor_parent_class)->finalize) (object);
-@@ -103,21 +165,25 @@ g_kqueue_file_monitor_start (GLocalFileMonitor *local_
- GFileMonitorSource *source)
- {
- GKqueueFileMonitor *kqueue_monitor = G_KQUEUE_FILE_MONITOR (local_monitor);
-- GObject *obj;
-- GKqueueFileMonitorClass *klass;
-- GObjectClass *parent_class;
-- kqueue_sub *sub = NULL;
-- gboolean ret_kh_startup = FALSE;
-- const gchar *path = NULL;
-+ kqueue_sub *sub;
-+ const gchar *path;
-
--
-- ret_kh_startup = _kh_startup ();
-- g_assert (ret_kh_startup);
--
- path = filename;
-- if (!path)
-+ if (path == NULL)
- path = dirname;
-
-+#ifndef O_EVTONLY
-+ if (_ke_is_excluded (path))
-+ {
-+ GFile *file = g_file_new_for_path (path);
-+ kqueue_monitor->fbfile = file;
-+ kqueue_monitor->fallback = _g_poll_file_monitor_new (file);
-+ g_signal_connect (kqueue_monitor->fallback, "changed",
-+ G_CALLBACK (_fallback_callback), kqueue_monitor);
-+ return;
-+ }
-+#endif
-+
- /* For a directory monitor, create a subscription object anyway.
- * It will be used for directory diff calculation routines.
- * Wait, directory diff in a GKqueueFileMonitor?
-@@ -125,35 +191,15 @@ g_kqueue_file_monitor_start (GLocalFileMonitor *local_
- * file, GIO uses a GKqueueFileMonitor object for that. If a directory
- * will be created under that path, GKqueueFileMonitor will have to
- * handle the directory notifications. */
-+ sub = _kqsub_new (path, local_monitor, source);
-+ if (sub == NULL)
-+ return;
-
-- sub = _kh_sub_new (path, TRUE, source);
--
-- /* FIXME: what to do about errors here? we can't return NULL or another
-- * kind of error and an assertion is probably too hard (same issue as in
-- * the inotify backend) */
-- g_assert (sub != NULL);
- kqueue_monitor->sub = sub;
--
-- if (!_ke_is_excluded (path))
-- _kh_add_sub (sub);
-- else
-- {
-- GFile *file = g_file_new_for_path (path);
-- kqueue_monitor->fbfile = file;
-- kqueue_monitor->fallback = _g_poll_file_monitor_new (file);
-- g_signal_connect (kqueue_monitor->fallback,
-- "changed",
-- G_CALLBACK (_fallback_callback),
-- kqueue_monitor);
-- }
-+ if (!_kqsub_start_watching (sub))
-+ _km_add_missing (sub);
- }
-
--static gboolean
--g_kqueue_file_monitor_is_supported (void)
--{
-- return _kh_startup ();
--}
--
- static void
- g_kqueue_file_monitor_class_init (GKqueueFileMonitorClass *klass)
- {
-@@ -175,24 +221,218 @@ g_kqueue_file_monitor_init (GKqueueFileMonitor *monito
- }
-
- static gboolean
-+g_kqueue_file_monitor_callback (gint fd, GIOCondition condition, gpointer user_data)
-+{
-+ gint64 now = g_source_get_time (kq_source);
-+ kqueue_sub *sub;
-+ GFileMonitorSource *source;
-+ struct kevent ev;
-+ struct timespec ts;
-+
-+ memset (&ts, 0, sizeof(ts));
-+ while (kevent(fd, NULL, 0, &ev, 1, &ts) > 0)
-+ {
-+ GFileMonitorEvent mask = 0;
-+
-+ if (ev.filter != EVFILT_VNODE || ev.udata == NULL)
-+ continue;
-+
-+ sub = ev.udata;
-+ source = sub->source;
-+
-+ if (ev.flags & EV_ERROR)
-+ ev.fflags = NOTE_REVOKE;
-+
-+ if (ev.fflags & (NOTE_DELETE | NOTE_REVOKE))
-+ {
-+ _kqsub_cancel (sub);
-+ _km_add_missing (sub);
-+ }
-+
-+ if (sub->is_dir && ev.fflags & (NOTE_WRITE | NOTE_EXTEND))
-+ {
-+ _kh_dir_diff (sub);
-+ ev.fflags &= ~(NOTE_WRITE | NOTE_EXTEND);
-+ }
-+
-+ if (ev.fflags & NOTE_DELETE)
-+ {
-+ mask = G_FILE_MONITOR_EVENT_DELETED;
-+ }
-+ else if (ev.fflags & NOTE_ATTRIB)
-+ {
-+ mask = G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED;
-+ }
-+ else if (ev.fflags & (NOTE_WRITE | NOTE_EXTEND))
-+ {
-+ mask = G_FILE_MONITOR_EVENT_CHANGED;
-+ }
-+ else if (ev.fflags & NOTE_RENAME)
-+ {
-+ /* Since there’s apparently no way to get the new name of the
-+ * file out of kqueue(), all we can do is say that this one has
-+ * been deleted. */
-+ mask = G_FILE_MONITOR_EVENT_DELETED;
-+ }
-+ else if (ev.fflags & NOTE_REVOKE)
-+ {
-+ mask = G_FILE_MONITOR_EVENT_UNMOUNTED;
-+ }
-+
-+ if (mask)
-+ g_file_monitor_source_handle_event (source, mask, NULL, NULL, NULL, now);
-+ }
-+
-+ return TRUE;
-+}
-+
-+static gboolean
-+g_kqueue_file_monitor_is_supported (void)
-+{
-+ int errsv;
-+
-+ G_LOCK (kq_lock);
-+
-+ if (kq_queue == -1)
-+ {
-+ kq_queue = kqueue ();
-+ errsv = errno;
-+
-+ if (kq_queue == -1)
-+ {
-+ g_warning ("Unable to create a kqueue: %s", g_strerror (errsv));
-+ G_UNLOCK (kq_lock);
-+ return FALSE;
-+ }
-+
-+ kq_source = g_unix_fd_source_new (kq_queue, G_IO_IN);
-+ g_source_set_callback (kq_source, (GSourceFunc) g_kqueue_file_monitor_callback, NULL, NULL);
-+ g_source_attach (kq_source, GLIB_PRIVATE_CALL (g_get_worker_context) ());
-+ }
-+
-+ G_UNLOCK (kq_lock);
-+
-+ return TRUE;
-+}
-+
-+static gboolean
- g_kqueue_file_monitor_cancel (GFileMonitor *monitor)
- {
- GKqueueFileMonitor *kqueue_monitor = G_KQUEUE_FILE_MONITOR (monitor);
-
- if (kqueue_monitor->sub)
- {
-- _kh_cancel_sub (kqueue_monitor->sub);
-- _kh_sub_free (kqueue_monitor->sub);
-+ _kqsub_cancel (kqueue_monitor->sub);
-+ _kqsub_free (kqueue_monitor->sub);
- kqueue_monitor->sub = NULL;
- }
-+#ifndef O_EVTONLY
- else if (kqueue_monitor->fallback)
- {
- g_signal_handlers_disconnect_by_func (kqueue_monitor->fallback, _fallback_callback, kqueue_monitor);
- g_file_monitor_cancel (kqueue_monitor->fallback);
- }
-+#endif
-
- if (G_FILE_MONITOR_CLASS (g_kqueue_file_monitor_parent_class)->cancel)
- (*G_FILE_MONITOR_CLASS (g_kqueue_file_monitor_parent_class)->cancel) (monitor);
-+
-+ return TRUE;
-+}
-+
-+static kqueue_sub *
-+_kqsub_new (const gchar *filename, GLocalFileMonitor *mon, GFileMonitorSource *source)
-+{
-+ kqueue_sub *sub;
-+
-+ sub = g_slice_new (kqueue_sub);
-+ sub->filename = g_strdup (filename);
-+ sub->mon = mon;
-+ g_source_ref ((GSource *) source);
-+ sub->source = source;
-+ sub->fd = -1;
-+ sub->deps = NULL;
-+ sub->is_dir = 0;
-+
-+ return sub;
-+}
-+
-+static void
-+_kqsub_free (kqueue_sub *sub)
-+{
-+ g_assert (sub->deps == NULL);
-+ g_assert (sub->fd == -1);
-+
-+ g_source_unref ((GSource *) sub->source);
-+ g_free (sub->filename);
-+ g_slice_free (kqueue_sub, sub);
-+}
-+
-+static gboolean
-+_kqsub_cancel (kqueue_sub *sub)
-+{
-+ struct kevent ev;
-+
-+ /* Remove the event and close the file descriptor to automatically
-+ * delete pending events. */
-+ if (sub->fd != -1)
-+ {
-+ EV_SET (&ev, sub->fd, EVFILT_VNODE, EV_DELETE, NOTE_ALL, 0, sub);
-+ if (kevent (kq_queue, &ev, 1, NULL, 0, NULL) == -1)
-+ {
-+ g_warning ("Unable to remove event for %s: %s", sub->filename, g_strerror (errno));
-+ return FALSE;
-+ }
-+ close (sub->fd);
-+ sub->fd = -1;
-+ }
-+
-+ _km_remove (sub);
-+
-+ if (sub->deps)
-+ {
-+ dl_free (sub->deps);
-+ sub->deps = NULL;
-+ }
-+
-+ return TRUE;
-+}
-+
-+gboolean
-+_kqsub_start_watching (kqueue_sub *sub)
-+{
-+ struct stat st;
-+ struct kevent ev;
-+
-+ sub->fd = open (sub->filename, O_KQFLAG);
-+ if (sub->fd == -1)
-+ return FALSE;
-+
-+ if (fstat (sub->fd, &st) == -1)
-+ {
-+ g_warning ("fstat failed for %s: %s", sub->filename, g_strerror (errno));
-+ close (sub->fd);
-+ sub->fd = -1;
-+ return FALSE;
-+ }
-+
-+ sub->is_dir = (st.st_mode & S_IFDIR) ? 1 : 0;
-+ if (sub->is_dir)
-+ {
-+ if (sub->deps)
-+ dl_free (sub->deps);
-+
-+ sub->deps = dl_listing (sub->filename);
-+ }
-+
-+ EV_SET (&ev, sub->fd, EVFILT_VNODE, EV_ADD | EV_CLEAR, NOTE_ALL, 0, sub);
-+ if (kevent (kq_queue, &ev, 1, NULL, 0, NULL) == -1)
-+ {
-+ g_warning ("Unable to add event for %s: %s", sub->filename, g_strerror (errno));
-+ close (sub->fd);
-+ sub->fd = -1;
-+ return FALSE;
-+ }
-
- return TRUE;
- }
Index: devel/glib20/files/patch-gio_kqueue_kqueue-helper.h
===================================================================
--- devel/glib20/files/patch-gio_kqueue_kqueue-helper.h
+++ /dev/null
@@ -1,40 +0,0 @@
---- gio/kqueue/kqueue-helper.h.orig 2018-04-09 22:47:22.070991000 +0200
-+++ gio/kqueue/kqueue-helper.h 2018-04-09 22:47:44.329479000 +0200
-@@ -23,16 +23,31 @@
- #ifndef __KQUEUE_HELPER_H
- #define __KQUEUE_HELPER_H
-
--#include "kqueue-sub.h"
- #include <gio/glocalfilemonitor.h>
- #include <gio/gfilemonitor.h>
-
--gboolean _kh_startup (void);
--gboolean _kh_add_sub (kqueue_sub *sub);
--gboolean _kh_cancel_sub (kqueue_sub *sub);
-+#include "dep-list.h"
-
--gboolean _kh_start_watching (kqueue_sub *sub);
-+/**
-+ * kqueue_sub:
-+ * @filename: a name of the file to monitor
-+ * @fd: the associated file descriptor (used by kqueue)
-+ *
-+ * Represents a subscription on a file or directory.
-+ */
-+typedef struct
-+{
-+ GLocalFileMonitor *mon;
-+ GFileMonitorSource *source;
-+ gchar* filename;
-+ int fd;
-+ dep_list* deps;
-+ int is_dir;
-+} kqueue_sub;
-
--void _kh_dir_diff (kqueue_sub *sub, GFileMonitorSource *source);
-+gboolean _kqsub_start_watching (kqueue_sub *sub);
-+void _kh_dir_diff (kqueue_sub *sub);
-+void _km_add_missing (kqueue_sub *sub);
-+void _km_remove (kqueue_sub *sub);
-
- #endif /* __KQUEUE_HELPER_H */
Index: devel/glib20/files/patch-gio_kqueue_kqueue-helper.c
===================================================================
--- devel/glib20/files/patch-gio_kqueue_kqueue-helper.c
+++ /dev/null
@@ -1,409 +0,0 @@
---- gio/kqueue/kqueue-helper.c.orig 2018-01-08 21:00:49.000000000 +0100
-+++ gio/kqueue/kqueue-helper.c 2018-04-09 22:46:58.181986000 +0200
-@@ -34,84 +34,7 @@
- #include <errno.h>
- #include <pthread.h>
- #include "kqueue-helper.h"
--#include "kqueue-utils.h"
--#include "kqueue-thread.h"
--#include "kqueue-missing.h"
--#include "kqueue-exclusions.h"
-
--static gboolean kh_debug_enabled = FALSE;
--#define KH_W if (kh_debug_enabled) g_warning
--
--static GHashTable *subs_hash_table = NULL;
--G_LOCK_DEFINE_STATIC (hash_lock);
--
--static int kqueue_descriptor = -1;
--static int kqueue_socket_pair[] = {-1, -1};
--static pthread_t kqueue_thread;
--
--
--void _kh_file_appeared_cb (kqueue_sub *sub);
--
--/**
-- * accessor function for kqueue_descriptor
-- **/
--int
--get_kqueue_descriptor()
--{
-- return kqueue_descriptor;
--}
--
--/**
-- * convert_kqueue_events_to_gio:
-- * @flags: a set of kqueue filter flags
-- * @done: a pointer to #gboolean indicating that the
-- * conversion has been done (out)
-- *
-- * Translates kqueue filter flags into GIO event flags.
-- *
-- * Returns: a #GFileMonitorEvent
-- **/
--static GFileMonitorEvent
--convert_kqueue_events_to_gio (uint32_t flags, gboolean *done)
--{
-- g_assert (done != NULL);
-- *done = FALSE;
--
-- /* TODO: The following notifications should be emulated, if possible:
-- * - G_FILE_MONITOR_EVENT_PRE_UNMOUNT
-- */
-- if (flags & NOTE_DELETE)
-- {
-- *done = TRUE;
-- return G_FILE_MONITOR_EVENT_DELETED;
-- }
-- if (flags & NOTE_ATTRIB)
-- {
-- *done = TRUE;
-- return G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED;
-- }
-- if (flags & (NOTE_WRITE | NOTE_EXTEND))
-- {
-- *done = TRUE;
-- return G_FILE_MONITOR_EVENT_CHANGED;
-- }
-- if (flags & NOTE_RENAME)
-- {
-- /* Since there’s apparently no way to get the new name of the file out of
-- * kqueue(), all we can do is say that this one has been deleted. */
-- *done = TRUE;
-- return G_FILE_MONITOR_EVENT_DELETED;
-- }
-- if (flags & NOTE_REVOKE)
-- {
-- *done = TRUE;
-- return G_FILE_MONITOR_EVENT_UNMOUNTED;
-- }
--
-- /* done is FALSE */
-- return 0;
--}
--
- typedef struct {
- kqueue_sub *sub;
- GFileMonitorSource *source;
-@@ -238,318 +161,21 @@ static const traverse_cbs cbs = {
-
-
- void
--_kh_dir_diff (kqueue_sub *sub, GFileMonitorSource *source)
-+_kh_dir_diff (kqueue_sub *sub)
- {
- dep_list *was;
- handle_ctx ctx;
-
-- g_assert (sub != NULL);
-- g_assert (source != NULL);
--
- memset (&ctx, 0, sizeof (handle_ctx));
- ctx.sub = sub;
-- ctx.source = source;
-+ ctx.source = sub->source;
-
- was = sub->deps;
- sub->deps = dl_listing (sub->filename);
--
-+
- dl_calculate (was, sub->deps, &cbs, &ctx);
-
- dl_free (was);
- }
-
-
--/**
-- * process_kqueue_notifications:
-- * @gioc: unused.
-- * @cond: unused.
-- * @data: unused.
-- *
-- * Processes notifications, coming from the kqueue thread.
-- *
-- * Reads notifications from the command file descriptor, emits the
-- * "changed" event on the appropriate monitor.
-- *
-- * A typical GIO Channel callback function.
-- *
-- * Returns: %TRUE
-- **/
--static gboolean
--process_kqueue_notifications (GIOChannel *gioc,
-- GIOCondition cond,
-- gpointer data)
--{
-- struct kqueue_notification n;
-- kqueue_sub *sub = NULL;
-- GFileMonitorSource *source = NULL;
-- GFileMonitorEvent mask = 0;
--
-- g_assert (kqueue_socket_pair[0] != -1);
-- if (!_ku_read (kqueue_socket_pair[0], &n, sizeof (struct kqueue_notification)))
-- {
-- KH_W ("Failed to read a kqueue notification, error %d", errno);
-- return TRUE;
-- }
--
-- G_LOCK (hash_lock);
-- sub = (kqueue_sub *) g_hash_table_lookup (subs_hash_table, GINT_TO_POINTER (n.fd));
-- G_UNLOCK (hash_lock);
--
-- if (sub == NULL)
-- {
-- KH_W ("Got a notification for a deleted or non-existing subscription %d",
-- n.fd);
-- return TRUE;
-- }
--
-- source = sub->user_data;
-- g_assert (source != NULL);
--
-- if (n.flags & (NOTE_DELETE | NOTE_REVOKE))
-- {
-- if (sub->deps)
-- {
-- dl_free (sub->deps);
-- sub->deps = NULL;
-- }
-- _km_add_missing (sub);
--
-- if (!(n.flags & NOTE_REVOKE))
-- {
-- /* Note that NOTE_REVOKE is issued by the kqueue thread
-- * on EV_ERROR kevent. In this case, a file descriptor is
-- * already closed from the kqueue thread, no need to close
-- * it manually */
-- _kh_cancel_sub (sub);
-- }
-- }
--
-- if (sub->is_dir && n.flags & (NOTE_WRITE | NOTE_EXTEND))
-- {
-- _kh_dir_diff (sub, source);
-- n.flags &= ~(NOTE_WRITE | NOTE_EXTEND);
-- }
--
-- if (n.flags)
-- {
-- gboolean done = FALSE;
-- mask = convert_kqueue_events_to_gio (n.flags, &done);
-- if (done == TRUE)
-- g_file_monitor_source_handle_event (source, mask, NULL, NULL, NULL, g_get_monotonic_time ());
-- }
--
-- return TRUE;
--}
--
--
--/*
-- * _kh_startup_impl:
-- * @unused: unused
-- *
-- * Kqueue backend startup code. Should be called only once.
-- *
-- * Returns: %TRUE on success, %FALSE otherwise.
-- **/
--static gpointer
--_kh_startup_impl (gpointer unused)
--{
-- GIOChannel *channel = NULL;
-- gboolean result = FALSE;
--
-- kqueue_descriptor = kqueue ();
-- result = (kqueue_descriptor != -1);
-- if (!result)
-- {
-- KH_W ("Failed to initialize kqueue\n!");
-- return GINT_TO_POINTER (FALSE);
-- }
--
-- result = socketpair (AF_UNIX, SOCK_STREAM, 0, kqueue_socket_pair);
-- if (result != 0)
-- {
-- KH_W ("Failed to create socket pair\n!");
-- return GINT_TO_POINTER (FALSE) ;
-- }
--
-- result = pthread_create (&kqueue_thread,
-- NULL,
-- _kqueue_thread_func,
-- &kqueue_socket_pair[1]);
-- if (result != 0)
-- {
-- KH_W ("Failed to run kqueue thread\n!");
-- return GINT_TO_POINTER (FALSE);
-- }
--
-- _km_init (_kh_file_appeared_cb);
--
-- channel = g_io_channel_unix_new (kqueue_socket_pair[0]);
-- g_io_add_watch (channel, G_IO_IN, process_kqueue_notifications, NULL);
--
-- subs_hash_table = g_hash_table_new (g_direct_hash, g_direct_equal);
--
-- KH_W ("started gio kqueue backend\n");
-- return GINT_TO_POINTER (TRUE);
--}
--
--
--/*
-- * _kh_startup:
-- * Kqueue backend initialization.
-- *
-- * Returns: %TRUE on success, %FALSE otherwise.
-- **/
--gboolean
--_kh_startup (void)
--{
-- static GOnce init_once = G_ONCE_INIT;
-- g_once (&init_once, _kh_startup_impl, NULL);
-- return GPOINTER_TO_INT (init_once.retval);
--}
--
--
--/**
-- * _kh_start_watching:
-- * @sub: a #kqueue_sub
-- *
-- * Starts watching on a subscription.
-- *
-- * Returns: %TRUE on success, %FALSE otherwise.
-- **/
--gboolean
--_kh_start_watching (kqueue_sub *sub)
--{
-- g_assert (kqueue_socket_pair[0] != -1);
-- g_assert (sub != NULL);
-- g_assert (sub->filename != NULL);
--
-- /* kqueue requires a file descriptor to monitor. Sad but true */
--#if defined (O_EVTONLY)
-- sub->fd = open (sub->filename, O_EVTONLY);
--#else
-- sub->fd = open (sub->filename, O_RDONLY);
--#endif
--
-- if (sub->fd == -1)
-- {
-- KH_W ("failed to open file %s (error %d)", sub->filename, errno);
-- return FALSE;
-- }
--
-- _ku_file_information (sub->fd, &sub->is_dir, NULL);
-- if (sub->is_dir)
-- {
-- /* I know, it is very bad to make such decisions in this way and here.
-- * We already do have an user_data at the #kqueue_sub, and it may point to
-- * GKqueueFileMonitor or GKqueueDirectoryMonitor. For a directory case,
-- * we need to scan in contents for the further diffs. Ideally this process
-- * should be delegated to the GKqueueDirectoryMonitor, but for now I will
-- * do it in a dirty way right here. */
-- if (sub->deps)
-- dl_free (sub->deps);
--
-- sub->deps = dl_listing (sub->filename);
-- }
--
-- G_LOCK (hash_lock);
-- g_hash_table_insert (subs_hash_table, GINT_TO_POINTER (sub->fd), sub);
-- G_UNLOCK (hash_lock);
--
-- _kqueue_thread_push_fd (sub->fd);
--
-- /* Bump the kqueue thread. It will pick up a new sub entry to monitor */
-- if (!_ku_write (kqueue_socket_pair[0], "A", 1))
-- KH_W ("Failed to bump the kqueue thread (add fd, error %d)", errno);
-- return TRUE;
--}
--
--
--/**
-- * _kh_add_sub:
-- * @sub: a #kqueue_sub
-- *
-- * Adds a subscription for monitoring.
-- *
-- * This funciton tries to start watching a subscription with
-- * _kh_start_watching(). On failure, i.e. when a file does not exist yet,
-- * the subscription will be added to a list of missing files to continue
-- * watching when the file will appear.
-- *
-- * Returns: %TRUE
-- **/
--gboolean
--_kh_add_sub (kqueue_sub *sub)
--{
-- g_assert (sub != NULL);
--
-- if (!_kh_start_watching (sub))
-- _km_add_missing (sub);
--
-- return TRUE;
--}
--
--
--/**
-- * _kh_cancel_sub:
-- * @sub a #kqueue_sub
-- *
-- * Stops monitoring on a subscription.
-- *
-- * Returns: %TRUE
-- **/
--gboolean
--_kh_cancel_sub (kqueue_sub *sub)
--{
-- gboolean removed = FALSE;
-- g_assert (kqueue_socket_pair[0] != -1);
-- g_assert (sub != NULL);
--
-- _km_remove (sub);
--
-- G_LOCK (hash_lock);
-- removed = g_hash_table_remove (subs_hash_table, GINT_TO_POINTER (sub->fd));
-- G_UNLOCK (hash_lock);
--
-- if (removed)
-- {
-- /* fd will be closed in the kqueue thread */
-- _kqueue_thread_remove_fd (sub->fd);
--
-- /* Bump the kqueue thread. It will pick up a new sub entry to remove*/
-- if (!_ku_write (kqueue_socket_pair[0], "R", 1))
-- KH_W ("Failed to bump the kqueue thread (remove fd, error %d)", errno);
-- }
--
-- return TRUE;
--}
--
--
--/**
-- * _kh_file_appeared_cb:
-- * @sub: a #kqueue_sub
-- *
-- * A callback function for kqueue-missing subsystem.
-- *
-- * Signals that a missing file has finally appeared in the filesystem.
-- * Emits %G_FILE_MONITOR_EVENT_CREATED.
-- **/
--void
--_kh_file_appeared_cb (kqueue_sub *sub)
--{
-- GFile* child;
--
-- g_assert (sub != NULL);
-- g_assert (sub->filename);
--
-- if (!g_file_test (sub->filename, G_FILE_TEST_EXISTS))
-- return;
--
-- child = g_file_new_for_path (sub->filename);
--
-- g_file_monitor_emit_event (G_FILE_MONITOR (sub->user_data),
-- child,
-- NULL,
-- G_FILE_MONITOR_EVENT_CREATED);
--
-- g_object_unref (child);
--}
Index: devel/glib20/files/patch-gio_tests_desktop-app-info.c
===================================================================
--- /dev/null
+++ devel/glib20/files/patch-gio_tests_desktop-app-info.c
@@ -0,0 +1,14 @@
+--- gio/tests/desktop-app-info.c.orig 2020-05-20 10:46:43 UTC
++++ gio/tests/desktop-app-info.c
+@@ -80,9 +80,9 @@ test_delete (void)
+
+ g_object_unref (info);
+
+- if (g_file_test ("/usr/share/applications/gedit.desktop", G_FILE_TEST_EXISTS))
++ if (g_file_test ("%%LOCALBASE%%/applications/gedit.desktop", G_FILE_TEST_EXISTS))
+ {
+- info = (GAppInfo*)g_desktop_app_info_new_from_filename ("/usr/share/applications/gedit.desktop");
++ info = (GAppInfo*)g_desktop_app_info_new_from_filename ("%%LOCALBASE%%/share/applications/gedit.desktop");
+ g_assert_nonnull (info);
+
+ res = g_app_info_can_delete (info);
Index: devel/glib20/files/patch-gio_tests_include.c
===================================================================
--- devel/glib20/files/patch-gio_tests_include.c
+++ /dev/null
@@ -1,10 +0,0 @@
---- glib/tests/include.c.orig 2012-03-06 12:11:39.000000000 +0100
-+++ glib/tests/include.c 2012-03-06 12:13:17.000000000 +0100
-@@ -3,6 +3,7 @@
- #define _POSIX_C_SOURCE 0
- #undef _GNU_SOURCE
- #undef _XOPEN_SOURCE
-+#include <sys/types.h>
- #include <pthread.h>
- #include <glib.h>
-
Index: devel/glib20/files/patch-gio_xdgmime_xdgmime.c
===================================================================
--- devel/glib20/files/patch-gio_xdgmime_xdgmime.c
+++ devel/glib20/files/patch-gio_xdgmime_xdgmime.c
@@ -1,11 +1,11 @@
---- gio/xdgmime/xdgmime.c.orig Mon Nov 8 22:25:27 2004
-+++ gio/xdgmime/xdgmime.c Sat Nov 13 10:27:22 2004
-@@ -204,7 +204,7 @@
-
+--- gio/xdgmime/xdgmime.c.orig 2020-05-20 10:46:43 UTC
++++ gio/xdgmime/xdgmime.c
+@@ -235,7 +235,7 @@ xdg_init_dirs (void)
xdg_data_dirs = getenv ("XDG_DATA_DIRS");
+
if (xdg_data_dirs == NULL)
- xdg_data_dirs = "/usr/local/share/:/usr/share/";
-+ xdg_data_dirs = "/usr/local/share/";
++ xdg_data_dirs = "%%LOCALBASE%%/share/:/usr/share/";
- ptr = xdg_data_dirs;
-
+ /* Work out how many dirs we’re dealing with. */
+ if (xdg_data_home != NULL || home != NULL)
Index: devel/glib20/files/patch-gio_xdgmime_xdgmimecache.h
===================================================================
--- devel/glib20/files/patch-gio_xdgmime_xdgmimecache.h
+++ /dev/null
@@ -1,12 +0,0 @@
---- gio/xdgmime/xdgmimecache.h.orig 2008-06-12 10:25:40.000000000 -0400
-+++ gio/xdgmime/xdgmimecache.h 2008-06-14 00:49:59.000000000 -0400
-@@ -46,6 +46,9 @@ typedef struct _XdgMimeCache XdgMimeCach
- #define _xdg_mime_cache_get_icon XDG_RESERVED_ENTRY(cache_get_icon)
- #define _xdg_mime_cache_get_generic_icon XDG_RESERVED_ENTRY(cache_get_generic_icon)
- #define _xdg_mime_cache_glob_dump XDG_RESERVED_ENTRY(cache_glob_dump)
-+#define _xdg_mime_cache_is_valid_mime_type XDG_RESERVED_ENTRY(cache_is_valid_mime_type)
-+#define _xdg_mime_cache_mime_type_equal XDG_RESERVED_ENTRY(cache_mime_type_equal)
-+#define _xdg_mime_cache_media_type_equal XDG_RESERVED_ENTRY(cache_media_type_equal)
- #endif
-
- extern XdgMimeCache **_caches;
Index: devel/glib20/files/patch-glib_fix_hidden
===================================================================
--- devel/glib20/files/patch-glib_fix_hidden
+++ /dev/null
@@ -1,10 +0,0 @@
---- glib/gmem.c.orig 2011-02-10 00:31:42.000000000 +0100
-+++ glib/gmem.c 2011-12-07 00:21:38.000000000 +0100
-@@ -39,6 +39,7 @@
- #include "gbacktrace.h"
- #include "gtestutils.h"
- #include "gthread.h"
-+#include "gthreadprivate.h"
- #include "glib_trace.h"
-
-
Index: devel/glib20/files/patch-glib_gcharset.c
===================================================================
--- /dev/null
+++ devel/glib20/files/patch-glib_gcharset.c
@@ -0,0 +1,11 @@
+--- glib/gcharset.c.orig 2020-05-20 10:46:43 UTC
++++ glib/gcharset.c
+@@ -407,7 +407,7 @@ unalias_lang (char *lang)
+ if (g_once_init_enter (&alias_table))
+ {
+ GHashTable *table = g_hash_table_new (g_str_hash, g_str_equal);
+- read_aliases ("/usr/share/locale/locale.alias", table);
++ read_aliases ("%%LOCALBASE%%/share/locale/locale.alias", table);
+ g_once_init_leave (&alias_table, table);
+ }
+
Index: devel/glib20/files/patch-glib_gconvert.c
===================================================================
--- devel/glib20/files/patch-glib_gconvert.c
+++ /dev/null
@@ -1,14 +0,0 @@
-Work around our situation of having both libiconv in libc and libiconv from
-ports installed.
-
---- glib/gconvert.c.orig 2014-02-08 10:15:50.000000000 +0100
-+++ glib/gconvert.c 2014-02-08 10:16:52.000000000 +0100
-@@ -62,7 +62,7 @@
- #error GNU libiconv in use but included iconv.h not from libiconv
- #endif
- #if !defined(USE_LIBICONV_GNU) && defined (_LIBICONV_H) \
-- && !defined (__APPLE_CC__) && !defined (__LP_64__)
-+ && !defined (LIBICONV_PLUG) && !defined (__APPLE_CC__) && !defined (__LP_64__)
- #error GNU libiconv not in use but included iconv.h is from libiconv
- #endif
-
Index: devel/glib20/files/patch-glib_gfileutils_c
===================================================================
--- /dev/null
+++ devel/glib20/files/patch-glib_gfileutils_c
@@ -0,0 +1,14 @@
+https://gitlab.gnome.org/GNOME/glib/merge_requests/832
+
+Index: glib/gfileutils.c
+--- glib/gfileutils.c.orig
++++ glib/gfileutils.c
+@@ -259,7 +259,7 @@ g_mkdir_with_parents (const gchar *pathname,
+
+ if (!g_file_test (fn, G_FILE_TEST_EXISTS))
+ {
+- if (g_mkdir (fn, mode) == -1 && errno != EEXIST)
++ if (g_mkdir (fn, mode) == -1 && errno != EEXIST && (p ? (errno != ENOENT) : (-1)))
+ {
+ int errno_save = errno;
+ if (errno != ENOENT || !p)
Index: devel/glib20/files/patch-glib_gutils.c
===================================================================
--- devel/glib20/files/patch-glib_gutils.c
+++ devel/glib20/files/patch-glib_gutils.c
@@ -1,20 +1,20 @@
---- glib/gutils.c.orig Wed Mar 23 09:55:02 2005
-+++ glib/gutils.c Thu Apr 7 01:06:16 2005
-@@ -1929,7 +1929,7 @@ g_get_system_data_dirs (void)
- data_dirs = (gchar *) g_getenv ("XDG_DATA_DIRS");
+--- glib/gutils.c.orig 2020-05-20 10:46:43 UTC
++++ glib/gutils.c
+@@ -2497,7 +2497,7 @@ g_build_system_data_dirs (void)
+ */
+ #ifndef G_OS_WIN32
+ if (!data_dirs || !data_dirs[0])
+- data_dirs = "/usr/local/share/:/usr/share/";
++ data_dirs = "%%LOCALBASE%%/share/:/usr/share/";
- if (!data_dirs || !data_dirs[0])
-- data_dirs = "/usr/local/share/:/usr/share/";
-+ data_dirs = "/usr/local/share/";
+ data_dir_vector = g_strsplit (data_dirs, G_SEARCHPATH_SEPARATOR_S, 0);
+ #else
+@@ -2591,7 +2591,7 @@ g_build_system_config_dirs (void)
+ }
+ #else
+ if (!conf_dirs || !conf_dirs[0])
+- conf_dirs = "/etc/xdg";
++ conf_dirs = "%%LOCALBASE%%/etc/xdg";
- data_dir_vector = g_strsplit (data_dirs, G_SEARCHPATH_SEPARATOR_S, 0);
- #endif
-@@ -1983,7 +1983,7 @@ g_get_system_config_dirs (void)
- conf_dirs = (gchar *) g_getenv ("XDG_CONFIG_DIRS");
-
- if (!conf_dirs || !conf_dirs[0])
-- conf_dirs = "/etc/xdg";
-+ conf_dirs = "/usr/local/etc/xdg:/etc/xdg";
-
- conf_dir_vector = g_strsplit (conf_dirs, G_SEARCHPATH_SEPARATOR_S, 0);
+ conf_dir_vector = g_strsplit (conf_dirs, G_SEARCHPATH_SEPARATOR_S, 0);
#endif
Index: devel/glib20/files/patch-glib_libcharset_Makefile.in
===================================================================
--- devel/glib20/files/patch-glib_libcharset_Makefile.in
+++ /dev/null
@@ -1,11 +0,0 @@
---- glib/libcharset/Makefile.in.orig 2010-08-08 12:46:01.000000000 +0200
-+++ glib/libcharset/Makefile.in 2010-08-08 12:46:01.000000000 +0200
-@@ -566,7 +566,7 @@ install-dvi: install-dvi-am
-
- install-dvi-am:
-
--install-exec-am: install-exec-local
-+install-exec-am: # install-exec-local
-
- install-html: install-html-am
-
Index: devel/glib20/files/patch-glib_tests_gdatetime.c
===================================================================
--- devel/glib20/files/patch-glib_tests_gdatetime.c
+++ /dev/null
@@ -1,20 +0,0 @@
---- glib/tests/gdatetime.c.orig 2014-03-09 10:29:13.925231275 +0000
-+++ glib/tests/gdatetime.c 2014-03-09 10:30:18.235227107 +0000
-@@ -1322,7 +1322,7 @@
- gint i1, i2;
-
- #ifdef G_OS_UNIX
-- tz = g_time_zone_new ("America/Toronto");
-+ tz = g_time_zone_new ("America/Toronto Eastern");
- #elif defined G_OS_WIN32
- tz = g_time_zone_new ("Eastern Standard Time");
- #endif
-@@ -1355,7 +1355,7 @@
- gint i1, i2;
-
- #ifdef G_OS_UNIX
-- tz = g_time_zone_new ("America/Toronto");
-+ tz = g_time_zone_new ("America/Toronto Eastern");
- #elif defined G_OS_WIN32
- tz = g_time_zone_new ("Eastern Standard Time");
- #endif
Index: devel/glib20/files/patch-glib_tests_utils.c
===================================================================
--- devel/glib20/files/patch-glib_tests_utils.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- glib/tests/utils.c.orig 2012-09-24 02:19:54.000000000 +0000
-+++ glib/tests/utils.c 2012-09-24 02:20:48.000000000 +0000
-@@ -416,7 +416,7 @@
-
- xdg = (gchar *)g_getenv ("XDG_CONFIG_DIRS");
- if (!xdg)
-- xdg = "/etc/xdg";
-+ xdg = "/usr/local/etc/xdg:/etc/xdg";
-
- dirs = g_get_system_config_dirs ();
-
Index: devel/glib20/files/patch-gmodule_gmodule-dl.c
===================================================================
--- devel/glib20/files/patch-gmodule_gmodule-dl.c
+++ /dev/null
@@ -1,20 +0,0 @@
---- gmodule/gmodule-dl.c.orig Sat Feb 17 08:28:07 2001
-+++ gmodule/gmodule-dl.c Fri Jan 18 09:48:45 2002
-@@ -104,6 +104,7 @@
- static gpointer
- _g_module_self (void)
- {
-+#ifndef __FreeBSD__
- gpointer handle;
-
- /* to query symbols from the program itself, special link options
-@@ -115,6 +116,9 @@
- g_module_set_error (fetch_dlerror (TRUE));
-
- return handle;
-+#else
-+ return RTLD_DEFAULT;
-+#endif
- }
-
- static void
Index: devel/glib20/files/patch-revert-8abf3a0
===================================================================
--- devel/glib20/files/patch-revert-8abf3a0
+++ /dev/null
@@ -1,61 +0,0 @@
-Revert https://gitlab.gnome.org/GNOME/glib/commit/8abf3a04e699 for
-breaking at least graphics/inkscape as wchar_t is locale-dependent.
-
---- glib/gconvert.c.orig 2018-03-12 16:23:37 UTC
-+++ glib/gconvert.c
-@@ -264,13 +264,6 @@ g_iconv_open (const gchar *to_codeset,
- * GLib provides g_convert() and g_locale_to_utf8() which are likely
- * more convenient than the raw iconv wrappers.
- *
-- * Note that the behaviour of iconv() for characters which are valid in the
-- * input character set, but which have no representation in the output character
-- * set, is implementation defined. This function may return success (with a
-- * positive number of non-reversible conversions as replacement characters were
-- * used), or it may return -1 and set an error such as %EILSEQ, in such a
-- * situation.
-- *
- * Returns: count of non-reversible conversions, or -1 on error
- **/
- gsize
-@@ -379,14 +372,6 @@ close_converter (GIConv cd)
- * character until it knows that the next character is not a mark that
- * could combine with the base character.)
- *
-- * Characters which are valid in the input character set, but which have no
-- * representation in the output character set will result in a
-- * %G_CONVERT_ERROR_ILLEGAL_SEQUENCE error. This is in contrast to the iconv()
-- * specification, which leaves this behaviour implementation defined. Note that
-- * this is the same error code as is returned for an invalid byte sequence in
-- * the input character set. To get defined behaviour for conversion of
-- * unrepresentable characters, use g_convert_with_fallback().
-- *
- * Returns: (array length=bytes_written) (element-type guint8) (transfer full):
- * If the conversion was successful, a newly allocated buffer
- * containing the converted string, which must be freed with
-@@ -466,13 +451,6 @@ g_convert_with_iconv (const gchar *str,
- break;
- }
- }
-- else if (err > 0)
-- {
-- /* @err gives the number of replacement characters used. */
-- g_set_error_literal (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
-- _("Unrepresentable character in conversion input"));
-- have_error = TRUE;
-- }
- else
- {
- if (!reset)
---- glib/gconvert.h.orig 2018-02-06 15:44:20 UTC
-+++ glib/gconvert.h
-@@ -37,9 +37,7 @@ G_BEGIN_DECLS
- * GConvertError:
- * @G_CONVERT_ERROR_NO_CONVERSION: Conversion between the requested character
- * sets is not supported.
-- * @G_CONVERT_ERROR_ILLEGAL_SEQUENCE: Invalid byte sequence in conversion input;
-- * or the character sequence could not be represented in the target
-- * character set.
-+ * @G_CONVERT_ERROR_ILLEGAL_SEQUENCE: Invalid byte sequence in conversion input.
- * @G_CONVERT_ERROR_FAILED: Conversion failed for some reason.
- * @G_CONVERT_ERROR_PARTIAL_INPUT: Partial character sequence at end of input.
- * @G_CONVERT_ERROR_BAD_URI: URI is invalid.
Index: devel/glib20/pkg-plist
===================================================================
--- devel/glib20/pkg-plist
+++ devel/glib20/pkg-plist
@@ -23,6 +23,12 @@
include/gio-unix-2.0/gio/gunixmounts.h
include/gio-unix-2.0/gio/gunixoutputstream.h
include/gio-unix-2.0/gio/gunixsocketaddress.h
+include/glib-2.0/gio/gmemorymonitor.h
+include/glib-2.0/gio/gnativesocketaddress.h
+include/glib-2.0/glib/grcbox.h
+include/glib-2.0/glib/grefcount.h
+include/glib-2.0/glib/grefstring.h
+include/glib-2.0/gobject/glib-enumtypes.h
include/glib-2.0/gio/gaction.h
include/glib-2.0/gio/gactiongroup.h
include/glib-2.0/gio/gactiongroupexporter.h
@@ -276,23 +282,18 @@
include/glib-2.0/gobject/gvaluecollector.h
include/glib-2.0/gobject/gvaluetypes.h
lib/glib-2.0/include/glibconfig.h
-lib/libgio-2.0.a
lib/libgio-2.0.so
lib/libgio-2.0.so.0
lib/libgio-2.0.so.%%LIBVERSION%%
-lib/libglib-2.0.a
lib/libglib-2.0.so
lib/libglib-2.0.so.0
lib/libglib-2.0.so.%%LIBVERSION%%
-lib/libgmodule-2.0.a
lib/libgmodule-2.0.so
lib/libgmodule-2.0.so.0
lib/libgmodule-2.0.so.%%LIBVERSION%%
-lib/libgobject-2.0.a
lib/libgobject-2.0.so
lib/libgobject-2.0.so.0
lib/libgobject-2.0.so.%%LIBVERSION%%
-lib/libgthread-2.0.a
lib/libgthread-2.0.so
lib/libgthread-2.0.so.0
lib/libgthread-2.0.so.%%LIBVERSION%%
@@ -324,6 +325,7 @@
share/aclocal/gsettings.m4
share/bash-completion/completions/gapplication
share/bash-completion/completions/gdbus
+share/bash-completion/completions/gio
share/bash-completion/completions/gresource
share/bash-completion/completions/gsettings
share/gdb/auto-load%%RESETPREFIX%%/lib/libglib-2.0.so.%%LIBVERSION%%-gdb.py
@@ -331,29 +333,13 @@
share/gettext/its/gschema.its
share/gettext/its/gschema.loc
%%DATADIR%%-2.0/codegen/__init__.py
-%%DATADIR%%-2.0/codegen/__init__.pyc
-%%DATADIR%%-2.0/codegen/__init__.pyo
%%DATADIR%%-2.0/codegen/codegen.py
-%%DATADIR%%-2.0/codegen/codegen.pyc
-%%DATADIR%%-2.0/codegen/codegen.pyo
%%DATADIR%%-2.0/codegen/codegen_docbook.py
-%%DATADIR%%-2.0/codegen/codegen_docbook.pyc
-%%DATADIR%%-2.0/codegen/codegen_docbook.pyo
%%DATADIR%%-2.0/codegen/codegen_main.py
-%%DATADIR%%-2.0/codegen/codegen_main.pyc
-%%DATADIR%%-2.0/codegen/codegen_main.pyo
%%DATADIR%%-2.0/codegen/config.py
-%%DATADIR%%-2.0/codegen/config.pyc
-%%DATADIR%%-2.0/codegen/config.pyo
%%DATADIR%%-2.0/codegen/dbustypes.py
-%%DATADIR%%-2.0/codegen/dbustypes.pyc
-%%DATADIR%%-2.0/codegen/dbustypes.pyo
%%DATADIR%%-2.0/codegen/parser.py
-%%DATADIR%%-2.0/codegen/parser.pyc
-%%DATADIR%%-2.0/codegen/parser.pyo
%%DATADIR%%-2.0/codegen/utils.py
-%%DATADIR%%-2.0/codegen/utils.pyc
-%%DATADIR%%-2.0/codegen/utils.pyo
%%DATADIR%%-2.0/gdb/glib_gdb.py
%%DATADIR%%-2.0/gdb/gobject_gdb.py
%%DATADIR%%-2.0/gettext/po/Makefile.in.in

File Metadata

Mime Type
text/plain
Expires
Sun, Feb 1, 3:25 PM (5 h, 31 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28399802
Default Alt Text
D25279.id73135.diff (64 KB)

Event Timeline