Index: devel/glib20/Makefile =================================================================== --- devel/glib20/Makefile +++ devel/glib20/Makefile @@ -2,13 +2,15 @@ # $FreeBSD$ PORTNAME= glib -PORTVERSION= 2.56.3 -PORTREVISION= 7 +PORTVERSION= 2.64.3 PORTEPOCH= 1 CATEGORIES= devel MASTER_SITES= GNOME -DIST_SUBDIR= gnome2 +DIST_SUBDIR= gnome +PATCH_SITES= https://gitlab.gnome.org/GNOME/glib/commit/ +PATCHFILES+= 5f38ae5ffca3213addc5b279a46d537792d031db.diff:-p1 + MAINTAINER= gnome@FreeBSD.org COMMENT= Some useful routines of C programming (current stable version) @@ -22,25 +24,31 @@ 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 localbase:ldflags \ + meson pkgconfig python:3.4+ shebangfix +MESON_ARGS= -Diconv=external -SHEBANG_FILES= */*.pl +MESON_ARGS+= -Ddefault_library=both \ + -Dselinux=disabled \ + -Dlibmount=disabled \ + -Dgtk_doc=false \ + -Dxattr=false \ + -Dfam=false \ + -Dinstalled_tests=false -LIBVERSION= 0.5600.3 +BINARY_ALIAS= python3=${PYTHON_CMD} +python_OLD_CMD= "/usr/bin/env @PYTHON@" +SHEBANG_FILES= gio/gdbus-2.0/codegen/gdbus-codegen.in \ + glib/gtester-report.in \ + gobject/glib-genmarshal.in \ + gobject/glib-mkenums.in + +LIBVERSION= 0.6400.3 PLIST_SUB+= LIBVERSION=${LIBVERSION} +CODEGENDIR= ${PREFIX}/share/glib-2.0/codegen glib_MAN= gtester.1 gtester-report.1 glib-gettextize.1 gio_MAN= gdbus.1 gsettings.1 gio-querymodules.1 gio.1 \ @@ -48,67 +56,59 @@ 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 # 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|/usr/local|${LOCALBASE}|' \ + ${WRKSRC}/gio/xdgmime/xdgmime.c + @${REINPLACE_CMD} -e 's|/usr|${LOCALBASE}|g' \ + ${WRKSRC}/gio/tests/desktop-app-info.c \ + ${WRKSRC}/glib/gcharset.c + @${REINPLACE_CMD} -e 's|:/usr/bin|:${LOCALBASE}/bin:/usr/bin|' \ + -e 's|/etc/xdg|${LOCALBASE}/etc/xdg|' \ + ${WRKSRC}/glib/gspawn.c \ + ${WRKSRC}/glib/gutils.c + @${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' \ + ${WRKSRC}/docs/reference/gio/glib-compile-schemas.xml -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 + # generates .py[co] files for installed modules + # if that's not done, ${PYTHON_SITELIBDIR}/gps will be polluted + # with these files when module is imported from root user + @${FIND} ${STAGEDIR}${PREFIX} -name \*.pyc -delete + (cd ${STAGEDIR}${PREFIX} && \ + ${PYTHON_CMD} ${PYTHON_LIBDIR}/compileall.py \ + -d ${CODEGENDIR} -f ${CODEGENDIR:S;${PREFIX}/;;} && \ + ${PYTHON_CMD} -O ${PYTHON_LIBDIR}/compileall.py \ + -d ${CODEGENDIR} -f ${CODEGENDIR:S;${PREFIX}/;;}) + # nstall bash completion regardless if bash is present + @${MKDIR} ${STAGEDIR}${PREFIX}/share/bash-completion/completions + ${INSTALL_SCRIPT} ${WRKSRC}/gio/completion/* ${STAGEDIR}${PREFIX}/share/bash-completion/completions -post-install-MANPAGES-on: -.for m in glib gio gobject - ${INSTALL_MAN} ${${m}_MAN:S|^|${WRKSRC}/docs/reference/${m}/|} \ - ${STAGEDIR}${PREFIX}/man/man1 -.endfor .include Index: devel/glib20/distinfo =================================================================== --- devel/glib20/distinfo +++ devel/glib20/distinfo @@ -1,3 +1,5 @@ -TIMESTAMP = 1538415400 -SHA256 (gnome2/glib-2.56.3.tar.xz) = a9a4c5b4c81b6c75bc140bdf5e32120ef3ce841b7413214ecf5f987acec74cb2 -SIZE (gnome2/glib-2.56.3.tar.xz) = 7009912 +TIMESTAMP = 1592256515 +SHA256 (gnome/glib-2.64.3.tar.xz) = fe9cbc97925d14c804935f067a3ad77ef55c0bbe9befe68962318f5a767ceb22 +SIZE (gnome/glib-2.64.3.tar.xz) = 4778964 +SHA256 (gnome/5f38ae5ffca3213addc5b279a46d537792d031db.diff) = 6871a7d655cd1ff5851ac0553bdc887f4958bf791237239be66605c7af034459 +SIZE (gnome/5f38ae5ffca3213addc5b279a46d537792d031db.diff) = 840 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 + glib-2.0/schemas subdirectories of all directories + specified in the XDG_DATA_DIRS environment variable. The + usual location to install schema files is +-/usr/share/glib-2.0/schemas. ++%%PREFIX%%/share/glib-2.0/schemas. + + + 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 - - #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 -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include - #include - #include --#include -+#include -+#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 - #include - --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 - #include - #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_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 - #include - #include - Index: devel/glib20/files/patch-gio_xdgmime_xdgmime.c =================================================================== --- devel/glib20/files/patch-gio_xdgmime_xdgmime.c +++ /dev/null @@ -1,11 +0,0 @@ ---- 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 @@ - - 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/"; - - ptr = xdg_data_dirs; - 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_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 +++ /dev/null @@ -1,20 +0,0 @@ ---- 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"); - - 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); - #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); - #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 @@ -278,24 +284,24 @@ 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/libgio-2.0.so.0 lib/libglib-2.0.a lib/libglib-2.0.so -lib/libglib-2.0.so.0 lib/libglib-2.0.so.%%LIBVERSION%% +lib/libglib-2.0.so.0 lib/libgmodule-2.0.a lib/libgmodule-2.0.so -lib/libgmodule-2.0.so.0 lib/libgmodule-2.0.so.%%LIBVERSION%% +lib/libgmodule-2.0.so.0 lib/libgobject-2.0.a lib/libgobject-2.0.so -lib/libgobject-2.0.so.0 lib/libgobject-2.0.so.%%LIBVERSION%% +lib/libgobject-2.0.so.0 lib/libgthread-2.0.a lib/libgthread-2.0.so -lib/libgthread-2.0.so.0 lib/libgthread-2.0.so.%%LIBVERSION%% +lib/libgthread-2.0.so.0 libdata/pkgconfig/gio-2.0.pc libdata/pkgconfig/gio-unix-2.0.pc libdata/pkgconfig/glib-2.0.pc @@ -324,6 +330,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,34 +338,34 @@ 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 %%DATADIR%%-2.0/schemas/gschema.dtd %%DATADIR%%-2.0/valgrind/glib.supp +%%DATADIR%%-2.0/codegen/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc +%%DATADIR%%-2.0/codegen/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.pyc +%%DATADIR%%-2.0/codegen/__pycache__/codegen.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc +%%DATADIR%%-2.0/codegen/__pycache__/codegen.cpython-%%PYTHON_SUFFIX%%.pyc +%%DATADIR%%-2.0/codegen/__pycache__/codegen_docbook.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc +%%DATADIR%%-2.0/codegen/__pycache__/codegen_docbook.cpython-%%PYTHON_SUFFIX%%.pyc +%%DATADIR%%-2.0/codegen/__pycache__/codegen_main.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc +%%DATADIR%%-2.0/codegen/__pycache__/codegen_main.cpython-%%PYTHON_SUFFIX%%.pyc +%%DATADIR%%-2.0/codegen/__pycache__/config.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc +%%DATADIR%%-2.0/codegen/__pycache__/config.cpython-%%PYTHON_SUFFIX%%.pyc +%%DATADIR%%-2.0/codegen/__pycache__/dbustypes.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc +%%DATADIR%%-2.0/codegen/__pycache__/dbustypes.cpython-%%PYTHON_SUFFIX%%.pyc +%%DATADIR%%-2.0/codegen/__pycache__/parser.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc +%%DATADIR%%-2.0/codegen/__pycache__/parser.cpython-%%PYTHON_SUFFIX%%.pyc +%%DATADIR%%-2.0/codegen/__pycache__/utils.cpython-%%PYTHON_SUFFIX%%.opt-1.pyc +%%DATADIR%%-2.0/codegen/__pycache__/utils.cpython-%%PYTHON_SUFFIX%%.pyc %%NLS%%share/locale/af/LC_MESSAGES/glib20.mo %%NLS%%share/locale/am/LC_MESSAGES/glib20.mo %%NLS%%share/locale/an/LC_MESSAGES/glib20.mo