From 679efdbb2182ccd9d04e2927616dcbbf8c9bf1a1 Mon Sep 17 00:00:00 2001 From: oreo639 Date: Tue, 21 Mar 2023 19:30:06 -0700 Subject: [PATCH 1/2] glib: update to 2.76.0. --- ...2f81cc59751fcc689731dcd60af5da5723ba.patch | 138 ++++++++++++++++++ .../glib/patches/disable-broken-tests.patch | 23 ++- .../fix-segfault-g_param_value_is_valid.patch | 35 ----- srcpkgs/glib/patches/fix-test-cxxcpp.patch | 26 ++++ .../glib/patches/gnome-console-support.patch | 62 -------- srcpkgs/glib/patches/test-error-musl.patch | 50 ------- srcpkgs/glib/template | 15 +- 7 files changed, 186 insertions(+), 163 deletions(-) create mode 100644 srcpkgs/glib/patches/cc7f2f81cc59751fcc689731dcd60af5da5723ba.patch delete mode 100644 srcpkgs/glib/patches/fix-segfault-g_param_value_is_valid.patch create mode 100644 srcpkgs/glib/patches/fix-test-cxxcpp.patch delete mode 100644 srcpkgs/glib/patches/gnome-console-support.patch delete mode 100644 srcpkgs/glib/patches/test-error-musl.patch diff --git a/srcpkgs/glib/patches/cc7f2f81cc59751fcc689731dcd60af5da5723ba.patch b/srcpkgs/glib/patches/cc7f2f81cc59751fcc689731dcd60af5da5723ba.patch new file mode 100644 index 000000000000..8a7c6e60c5b6 --- /dev/null +++ b/srcpkgs/glib/patches/cc7f2f81cc59751fcc689731dcd60af5da5723ba.patch @@ -0,0 +1,138 @@ +From cc7f2f81cc59751fcc689731dcd60af5da5723ba Mon Sep 17 00:00:00 2001 +From: Xi Ruoyao +Date: Mon, 13 Mar 2023 16:23:37 +0800 +Subject: [PATCH] gstrfuncs: Improve inline version of g_strdup() to avoid + breaking C++ code + +Wrap the logic into a G_ALWAYS_INLINE function, instead of using a +complex statement-expression which is not allowed in braced initializer +lists and expanded into some bad thing when it's used as +`::g_strdup(...)`. + +We cannot use `__builtin_constant_p (str)` because GCC documentation +clearly states that it always produces 0 when str is a const char * +argument of an inline function. But `__builtin_constant_p (!str)`, +`__builtin_constant_p (!!str)`, and +`__builtin_constant_p (strlen (str))` functions properly with `-O1` or +above enabled. + +Fixes #2936. +--- + glib/gstrfuncs.h | 43 ++++++++++++++++++++++++++----------------- + glib/tests/cxx.cpp | 32 ++++++++++++++++++++++++++++++++ + 2 files changed, 58 insertions(+), 17 deletions(-) + +diff --git a/glib/gstrfuncs.h b/glib/gstrfuncs.h +index 8a6830294f..cb021b658d 100644 +--- a/glib/gstrfuncs.h ++++ b/glib/gstrfuncs.h +@@ -204,23 +204,6 @@ gboolean (g_str_has_prefix) (const gchar *str, + (g_str_has_suffix) (STR, SUFFIX) \ + ) + +-#define g_strdup(STR) \ +- (__builtin_constant_p ((STR)) ? \ +- (G_LIKELY ((STR) != NULL) ? \ +- G_GNUC_EXTENSION ({ \ +- const char *const ___str = ((STR)); \ +- const char *const __str = _G_STR_NONNULL (___str); \ +- const size_t __str_len = strlen (__str) + 1; \ +- char *__dup_str = (char *) g_malloc (__str_len); \ +- (char *) memcpy (__dup_str, __str, __str_len); \ +- }) \ +- : \ +- (char *) (NULL) \ +- ) \ +- : \ +- (g_strdup) ((STR)) \ +- ) +- + #endif /* !defined (__GI_SCANNER__) */ + #endif /* !defined (__GTK_DOC_IGNORE__) */ + #endif /* G_GNUC_CHECK_VERSION (2, 0) */ +@@ -318,6 +301,32 @@ GLIB_AVAILABLE_IN_ALL + gchar* g_strjoin (const gchar *separator, + ...) G_GNUC_MALLOC G_GNUC_NULL_TERMINATED; + ++#if G_GNUC_CHECK_VERSION(2, 0) ++#ifndef __GTK_DOC_IGNORE__ ++#ifndef __GI_SCANNER__ ++ ++G_ALWAYS_INLINE static inline char * ++g_strdup_inline (const char *str) ++{ ++ if (__builtin_constant_p (!str) && !str) ++ return NULL; ++ ++ if (__builtin_constant_p (!!str) && !!str && __builtin_constant_p (strlen (str))) ++ { ++ const size_t len = strlen (str) + 1; ++ char *dup_str = (char *) g_malloc (len); ++ return (char *) memcpy (dup_str, str, len); ++ } ++ ++ return g_strdup (str); ++} ++ ++#define g_strdup(x) g_strdup_inline (x) ++ ++#endif /* !defined (__GI_SCANNER__) */ ++#endif /* !defined (__GTK_DOC_IGNORE__) */ ++#endif /* G_GNUC_CHECK_VERSION (2, 0) */ ++ + /* Make a copy of a string interpreting C string -style escape + * sequences. Inverse of g_strescape. The recognized sequences are \b + * \f \n \r \t \\ \" and the octal format. +diff --git a/glib/tests/cxx.cpp b/glib/tests/cxx.cpp +index 2431340092..bc7967ccee 100644 +--- a/glib/tests/cxx.cpp ++++ b/glib/tests/cxx.cpp +@@ -349,6 +349,36 @@ test_strdup_macro (void) + g_free (str); + } + ++static void ++test_strdup_macro_qualified (void) ++{ ++ gchar *str; ++ ++ g_assert_null (::g_strdup (NULL)); ++ ++ str = ::g_strdup ("C++ is cool too!"); ++ g_assert_nonnull (str); ++ g_assert_cmpstr (str, ==, "C++ is cool too!"); ++ g_free (str); ++} ++ ++static void ++test_strdup_macro_nested_initializer (void) ++{ ++ struct ++ { ++ char *p, *q; ++ } strings = { ++ g_strdup (NULL), ++ g_strdup ("C++ is cool too!"), ++ }; ++ ++ g_assert_null (strings.p); ++ g_assert_nonnull (strings.q); ++ g_assert_cmpstr (strings.q, ==, "C++ is cool too!"); ++ g_free (strings.q); ++} ++ + static void + test_str_has_prefix (void) + { +@@ -527,6 +557,8 @@ main (int argc, char *argv[]) + g_test_add_func ("/C++/str-equal", test_str_equal); + g_test_add_func ("/C++/strdup", test_strdup); + g_test_add_func ("/C++/strdup/macro", test_strdup_macro); ++ g_test_add_func ("/C++/strdup/macro/qualified", test_strdup_macro_qualified); ++ g_test_add_func ("/C++/strdup/macro/nested-initializer", test_strdup_macro_nested_initializer); + g_test_add_func ("/C++/str-has-prefix", test_str_has_prefix); + g_test_add_func ("/C++/str-has-prefix/macro", test_str_has_prefix_macro); + g_test_add_func ("/C++/str-has-suffix", test_str_has_suffix); +-- +GitLab + diff --git a/srcpkgs/glib/patches/disable-broken-tests.patch b/srcpkgs/glib/patches/disable-broken-tests.patch index 91345d2b1d26..f6e0328b214e 100644 --- a/srcpkgs/glib/patches/disable-broken-tests.patch +++ b/srcpkgs/glib/patches/disable-broken-tests.patch @@ -1,14 +1,14 @@ --- a/gio/tests/meson.build +++ b/gio/tests/meson.build -@@ -56,7 +56,6 @@ gio_tests = { +@@ -63,7 +63,6 @@ gio_tests = { # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/1392 / https://gitlab.gnome.org/GNOME/glib/-/issues/1251 - 'should_fail' : host_system == 'darwin', + 'can_fail' : host_system == 'darwin', }, - 'converter-stream' : {}, 'credentials' : {}, 'data-input-stream' : {}, 'data-output-stream' : {}, -@@ -198,7 +197,6 @@ endif +@@ -227,7 +226,6 @@ endif # Test programs buildable on UNIX only if host_machine.system() != 'windows' gio_tests += { @@ -16,7 +16,7 @@ 'gdbus-peer-object-manager' : {}, 'gdbus-sasl' : {}, 'live-g-file' : {}, -@@ -814,14 +812,6 @@ if meson.can_run_host_binaries() +@@ -951,13 +949,6 @@ if not meson.is_cross_build() test_resources_binary2, ] endif @@ -24,18 +24,17 @@ - gio_tests += { - 'resources' : { - 'extra_sources' : resources_extra_sources, -- # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/1392 -- 'should_fail' : host_system == 'darwin', +- 'depends' : resource_plugin, - }, - } endif - foreach test_name, extra_args : gio_tests + test_extra_programs_targets = {} diff --git a/glib/tests/meson.build b/glib/tests/meson.build index d74617823..1de81a825 100644 --- a/glib/tests/meson.build +++ b/glib/tests/meson.build -@@ -11,22 +11,14 @@ glib_tests = { +@@ -12,22 +12,14 @@ glib_tests = { 'cache' : {}, 'charset' : {}, 'checksum' : {}, @@ -46,19 +45,19 @@ index d74617823..1de81a825 100644 'dataset' : {}, - 'date' : { - # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/1392 -- 'should_fail' : host_system == 'darwin', +- 'can_fail' : host_system == 'darwin', - }, 'dir' : {}, 'environment' : { # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/1392 - 'should_fail' : host_system == 'darwin', + 'can_fail' : host_system == 'darwin', }, - 'error' : {}, - 'fileutils' : {}, 'gdatetime' : { 'suite' : ['slow'], - }, -@@ -65,7 +57,6 @@ glib_tests = { + 'can_fail' : host_system == 'windows', +@@ -70,7 +62,6 @@ glib_tests = { 'node' : {}, 'once' : {}, 'onceinit' : {}, diff --git a/srcpkgs/glib/patches/fix-segfault-g_param_value_is_valid.patch b/srcpkgs/glib/patches/fix-segfault-g_param_value_is_valid.patch deleted file mode 100644 index cacaecb695d0..000000000000 --- a/srcpkgs/glib/patches/fix-segfault-g_param_value_is_valid.patch +++ /dev/null @@ -1,35 +0,0 @@ -This fixes segfault when editing color of text in gimp. - -From ea3f17d598d550345e94e4571130e429443e91cb Mon Sep 17 00:00:00 2001 -From: Emmanuele Bassi -Date: Sun, 25 Sep 2022 14:20:24 +0100 -Subject: [PATCH] Empty values are not valid GParamSpec - -The validate() vfunc for GParamSpecParam returns FALSE for empty GValue, -which means the is_valid() vfunc should do the same. - -This avoids a segfault when calling g_param_value_is_valid() on a -GParamSpecParam. - -Fixes: #2770 ---- - gobject/gparamspecs.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/gobject/gparamspecs.c b/gobject/gparamspecs.c -index f17b3488b9..17b8606572 100644 ---- a/gobject/gparamspecs.c -+++ b/gobject/gparamspecs.c -@@ -894,6 +894,9 @@ param_param_is_valid (GParamSpec *pspec, - { - GParamSpec *param = value->data[0].v_pointer; - -+ if (param == NULL) -+ return FALSE; -+ - return g_value_type_compatible (G_PARAM_SPEC_TYPE (param), G_PARAM_SPEC_VALUE_TYPE (pspec)); - } - --- -GitLab - diff --git a/srcpkgs/glib/patches/fix-test-cxxcpp.patch b/srcpkgs/glib/patches/fix-test-cxxcpp.patch new file mode 100644 index 000000000000..2b1ad5b4e6ad --- /dev/null +++ b/srcpkgs/glib/patches/fix-test-cxxcpp.patch @@ -0,0 +1,26 @@ +Fails to build on musl. +../glib/tests/cxx.cpp:509:15: error: missing sentinel in function call [-Werror=format=] +g_test_init (&argc, &argv, NULL); + +--- a/glib/tests/cxx.cpp ++++ a/glib/tests/cxx.cpp +@@ -505,7 +505,7 @@ test_string_free (void) + int + main (int argc, char *argv[]) + { + #if G_CXX_STD_CHECK_VERSION (11) +- g_test_init (&argc, &argv, NULL); ++ g_test_init (&argc, &argv, nullptr); + #else + g_test_init (&argc, &argv, static_cast(NULL)); +--- a/gio/tests/cxx.cpp ++++ a/gio/tests/cxx.cpp +@@ -59,7 +59,7 @@ int + main (int argc, char **argv) + { + #if G_CXX_STD_CHECK_VERSION (11) +- g_test_init (&argc, &argv, NULL); ++ g_test_init (&argc, &argv, nullptr); + #else + g_test_init (&argc, &argv, static_cast(NULL)); + #endif diff --git a/srcpkgs/glib/patches/gnome-console-support.patch b/srcpkgs/glib/patches/gnome-console-support.patch deleted file mode 100644 index b142aa0b7514..000000000000 --- a/srcpkgs/glib/patches/gnome-console-support.patch +++ /dev/null @@ -1,62 +0,0 @@ -Currently glib hardcodes a list of terminals and that list will not be expanding. -The hope being that it will eventually be replaced with some kind of api. -Until then, we might as well add gnome-console/kgx to the list - -See: https://gitlab.gnome.org/GNOME/gnome-build-meta/-/merge_requests/1404#note_1331262 -Source: https://github.com/NixOS/nixpkgs/commit/c987121acf5c87436a0b05ca75cd70bf38c452ca - -diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c -index 60d6debb2..a441bfec9 100644 ---- a/gio/gdesktopappinfo.c -+++ b/gio/gdesktopappinfo.c -@@ -2627,6 +2627,7 @@ prepend_terminal_to_vector (int *argc, - int i, j; - char **term_argv = NULL; - int term_argc = 0; -+ gboolean pass_cmd_as_single_arg = FALSE; - char *check; - char **the_argv; - -@@ -2672,6 +2673,11 @@ prepend_terminal_to_vector (int *argc, - } - else - { -+ if (check == NULL) { -+ check = g_find_program_in_path ("kgx"); -+ if (check != NULL) -+ pass_cmd_as_single_arg = TRUE; -+ } - if (check == NULL) - check = g_find_program_in_path ("tilix"); - if (check == NULL) -@@ -2697,14 +2703,27 @@ prepend_terminal_to_vector (int *argc, - } - } - -- real_argc = term_argc + *argc; -+ real_argc = term_argc + (pass_cmd_as_single_arg ? 1 : *argc); - real_argv = g_new (char *, real_argc + 1); - - for (i = 0; i < term_argc; i++) - real_argv[i] = term_argv[i]; - -- for (j = 0; j < *argc; j++, i++) -- real_argv[i] = (char *)the_argv[j]; -+ if (pass_cmd_as_single_arg) { -+ char **quoted_argv = g_new (char *, *argc + 1); -+ -+ for (j = 0; j < *argc; j++) { -+ quoted_argv[j] = g_shell_quote (the_argv[j]); -+ g_free (the_argv[j]); -+ } -+ quoted_argv[j] = NULL; -+ -+ real_argv[i++] = g_strjoinv (" ", quoted_argv); -+ g_strfreev (quoted_argv); -+ } else { -+ for (j = 0; j < *argc; j++, i++) -+ real_argv[i] = (char *)the_argv[j]; -+ } - - real_argv[i] = NULL; - diff --git a/srcpkgs/glib/patches/test-error-musl.patch b/srcpkgs/glib/patches/test-error-musl.patch deleted file mode 100644 index 427df3de13c7..000000000000 --- a/srcpkgs/glib/patches/test-error-musl.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 902ba0bc0db50ede3473af576bddd2b6a2f9e326 Mon Sep 17 00:00:00 2001 -From: Michal Vasilek -Date: Sun, 18 Sep 2022 17:30:41 +0200 -Subject: [PATCH] tests: Only run g_error_new_valist() programmer error test on - glibc - -The musl implementation of vasprintf segfaults with NULL ---- - glib/tests/error.c | 18 +++++++++--------- - 1 file changed, 9 insertions(+), 9 deletions(-) - -diff --git a/glib/tests/error.c b/glib/tests/error.c -index 7ea04ea3ce..fa3a25969d 100644 ---- a/glib/tests/error.c -+++ b/glib/tests/error.c -@@ -123,12 +123,12 @@ static void - test_new_valist_invalid_va (gpointer dummy, - ...) - { --#ifdef __linux__ -- /* Only worth testing this on Linux; if other platforms regress on this legacy -- * behaviour, we don’t care. In particular, calling g_error_new_valist() with -- * a %NULL format will crash on FreeBSD as its implementation of vasprintf() -- * is less forgiving than Linux’s. That’s fine: it’s a programmer error in -- * either case. */ -+#if defined(__linux__) && defined(__GLIBC__) -+ /* Only worth testing this on Linux with glibc; if other platforms regress on -+ * this legacy behaviour, we don’t care. In particular, calling -+ * g_error_new_valist() with a %NULL format will crash on FreeBSD as its -+ * implementation of vasprintf() is less forgiving than Linux’s. That’s -+ * fine: it’s a programmer error in either case. */ - const struct - { - GQuark domain; -@@ -182,9 +182,9 @@ test_new_valist_invalid_va (gpointer dummy, - - va_end (ap); - } --#else /* if !__linux__ */ -- g_test_skip ("g_error_new_valist() programmer error handling is only relevant on Linux"); --#endif /* !__linux__ */ -+#else /* if !__linux__ || !__GLIBC__ */ -+ g_test_skip ("g_error_new_valist() programmer error handling is only relevant on Linux with glibc"); -+#endif /* !__linux__ || ! __GLIBC__ */ - } - - static void --- -GitLab - diff --git a/srcpkgs/glib/template b/srcpkgs/glib/template index e250af446b0b..027d0cbea53d 100644 --- a/srcpkgs/glib/template +++ b/srcpkgs/glib/template @@ -1,7 +1,7 @@ # Template file for 'glib' pkgname=glib -version=2.74.0 -revision=3 +version=2.76.0 +revision=1 build_style=meson # static version is necessary for qemu-user-static; # also disable LTO, otherwise there are multiple failures when linking qemu @@ -14,10 +14,10 @@ short_desc="GNU library of C routines" maintainer="Michal Vasilek " license="LGPL-2.1-or-later" homepage="https://wiki.gnome.org/Projects/GLib" -#changelog="https://gitlab.gnome.org/GNOME/glib/raw/glib-2-74/NEWS" +#changelog="https://gitlab.gnome.org/GNOME/glib/raw/glib-2-76/NEWS" changelog="https://gitlab.gnome.org/GNOME/glib/raw/main/NEWS" distfiles="${GNOME_SITE}/glib/${version%.*}/glib-${version}.tar.xz" -checksum=3652c7f072d7b031a6b5edd623f77ebc5dcd2ae698598abcc89ff39ca75add30 +checksum=525bb703b807142e1aee5ccf222c344e8064b21c0c45677ef594e587874c6797 make_check_pre="dbus-run-session" build_options="gtk_doc" @@ -27,6 +27,13 @@ if [ -z "$CROSS_BUILD" ]; then build_options_default+=" gtk_doc" fi +post_patch() { + # Timer test is flaky on 32 bit (does float comparisons) + if [ "${XBPS_TARGET_WORDSIZE}" = "32" ]; then + vsed -e "s/'timer' : {},//" -i glib/tests/meson.build + fi +} + pre_check() { # machine-id is a random, non-zero value echo 'dcb30309cd6c8b7cc20383d85a5c7012' > /etc/machine-id From e035462446c3ef6f5569c57d153be8e66fe4ae1e Mon Sep 17 00:00:00 2001 From: oreo639 Date: Tue, 21 Mar 2023 19:45:08 -0700 Subject: [PATCH 2/2] glib-networking: update to 2.76.0. --- srcpkgs/glib-networking/template | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/srcpkgs/glib-networking/template b/srcpkgs/glib-networking/template index 50328d0e9ac4..680a064ffec5 100644 --- a/srcpkgs/glib-networking/template +++ b/srcpkgs/glib-networking/template @@ -1,6 +1,6 @@ # Template file for 'glib-networking' pkgname=glib-networking -version=2.74.0 +version=2.76.0 revision=1 build_style=meson configure_args="-Dinstalled_tests=false -Dgnutls=enabled -Dlibproxy=enabled @@ -13,8 +13,8 @@ short_desc="Network-related giomodules for glib" maintainer="Enno Boland " license="LGPL-2.1-or-later" homepage="https://gitlab.gnome.org/GNOME/glib-networking/" -#changelog="https://gitlab.gnome.org/GNOME/glib-networking/-/raw/master/NEWS" -changelog="https://gitlab.gnome.org/GNOME/glib-networking/-/raw/glib-2-74/NEWS" +changelog="https://gitlab.gnome.org/GNOME/glib-networking/-/raw/master/NEWS" +#changelog="https://gitlab.gnome.org/GNOME/glib-networking/-/raw/glib-2-76/NEWS" distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz" -checksum=1f185aaef094123f8e25d8fa55661b3fd71020163a0174adb35a37685cda613b +checksum=149a05a179e629a538be25662aa324b499d7c4549c5151db5373e780a1bf1b9a lib32disabled=yes