diff options
-rw-r--r-- | main/glib/0001-Revert-Move-quark-initialization-to-a-constructor.patch | 110 | ||||
-rw-r--r-- | main/glib/APKBUILD | 15 |
2 files changed, 120 insertions, 5 deletions
diff --git a/main/glib/0001-Revert-Move-quark-initialization-to-a-constructor.patch b/main/glib/0001-Revert-Move-quark-initialization-to-a-constructor.patch new file mode 100644 index 0000000000..70ccc350bc --- /dev/null +++ b/main/glib/0001-Revert-Move-quark-initialization-to-a-constructor.patch @@ -0,0 +1,110 @@ +From ca32c60a815f91a28e63993e9b53a2cfa0764240 Mon Sep 17 00:00:00 2001 +From: Natanael Copa <ncopa@alpinelinux.org> +Date: Fri, 2 Oct 2015 08:11:53 +0200 +Subject: [PATCH] Revert "Move quark initialization to a constructor" + +musl's does not run ctors in the assumed order that glib-2.46 expects: + +- glib_init() should be called before gobject_init_ctor(). + +This reverts commit 2fe992b099bfd3fb121a71b7af43e116b2142b5d. +--- + glib/glib-init.c | 1 - + glib/glib-init.h | 2 -- + glib/gquark.c | 26 ++++++++++++-------------- + 3 files changed, 12 insertions(+), 17 deletions(-) + +diff --git a/glib/glib-init.c b/glib/glib-init.c +index e7002e6..24efe9d 100644 +--- a/glib/glib-init.c ++++ b/glib/glib-init.c +@@ -233,7 +233,6 @@ glib_init (void) + { + g_messages_prefixed_init (); + g_debug_init (); +- g_quark_init (); + } + + #if defined (G_OS_WIN32) +diff --git a/glib/glib-init.h b/glib/glib-init.h +index b56f7e2..de6be78 100644 +--- a/glib/glib-init.h ++++ b/glib/glib-init.h +@@ -25,8 +25,6 @@ + extern GLogLevelFlags g_log_always_fatal; + extern GLogLevelFlags g_log_msg_prefix; + +-void g_quark_init (void); +- + #ifdef G_OS_WIN32 + #include <windows.h> + +diff --git a/glib/gquark.c b/glib/gquark.c +index 9e51a92..d620533 100644 +--- a/glib/gquark.c ++++ b/glib/gquark.c +@@ -40,7 +40,6 @@ + #include "gthread.h" + #include "gtestutils.h" + #include "glib_trace.h" +-#include "glib-init.h" + + #define QUARK_BLOCK_SIZE 2048 + #define QUARK_STRING_BLOCK_SIZE (4096 - sizeof (gsize)) +@@ -54,16 +53,6 @@ static gint quark_seq_id = 0; + static gchar *quark_block = NULL; + static gint quark_block_offset = 0; + +-void +-g_quark_init (void) +-{ +- g_assert (quark_seq_id == 0); +- quark_ht = g_hash_table_new (g_str_hash, g_str_equal); +- quarks = g_new (gchar*, QUARK_BLOCK_SIZE); +- quarks[0] = NULL; +- quark_seq_id = 1; +-} +- + /** + * SECTION:quarks + * @title: Quarks +@@ -138,9 +127,10 @@ g_quark_try_string (const gchar *string) + return 0; + + G_LOCK (quark_global); +- quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string)); ++ if (quark_ht) ++ quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string)); + G_UNLOCK (quark_global); +- ++ + return quark; + } + +@@ -179,7 +169,8 @@ quark_from_string (const gchar *string, + { + GQuark quark = 0; + +- quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string)); ++ if (quark_ht) ++ quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string)); + + if (!quark) + { +@@ -292,6 +283,13 @@ quark_new (gchar *string) + */ + g_atomic_pointer_set (&quarks, quarks_new); + } ++ if (!quark_ht) ++ { ++ g_assert (quark_seq_id == 0); ++ quark_ht = g_hash_table_new (g_str_hash, g_str_equal); ++ quarks[quark_seq_id] = NULL; ++ g_atomic_int_inc (&quark_seq_id); ++ } + + quark = quark_seq_id; + g_atomic_pointer_set (&quarks[quark], string); +-- +2.6.0 + diff --git a/main/glib/APKBUILD b/main/glib/APKBUILD index 0f6e7c677f..d2e16517cf 100644 --- a/main/glib/APKBUILD +++ b/main/glib/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: Natanael Copa <ncopa@alpinelinux.org> pkgname=glib pkgver=2.46.0 -pkgrel=0 +pkgrel=1 pkgdesc="Common C routines used by Gtk+ and other libs" url="http://www.gtk.org" arch="all" @@ -10,7 +10,9 @@ depends= triggers="$pkgname.trigger=/usr/share/glib-2.0/schemas:/usr/lib/gio/modules" depends_dev="perl python gettext-dev zlib-dev bzip2-dev libffi-dev" makedepends="$depends_dev" -source="http://ftp.gnome.org/pub/gnome/sources/glib/${pkgver%.*}/glib-$pkgver.tar.xz" +source="http://ftp.gnome.org/pub/gnome/sources/glib/${pkgver%.*}/glib-$pkgver.tar.xz + 0001-Revert-Move-quark-initialization-to-a-constructor.patch + " subpackages="$pkgname-dbg $pkgname-doc $pkgname-dev $pkgname-lang" @@ -75,6 +77,9 @@ dev() { || return 1 } -md5sums="6d58f9d70893a63e75c2b7df79375ee7 glib-2.46.0.tar.xz" -sha256sums="b1cee83469ae7d80f17c267c37f090414e93960bd62d2b254a5a96fbc5baacb4 glib-2.46.0.tar.xz" -sha512sums="70c86c6e9ee08c5cb807a511c736264fb99df3c4c5b6a885b77948d8b62a6f6318218589338a1af19143e6aded76c11ec2b2cc290f33626821052508a86b41b1 glib-2.46.0.tar.xz" +md5sums="6d58f9d70893a63e75c2b7df79375ee7 glib-2.46.0.tar.xz +1d9c4fbfadc2e358e3bb9fbec1646711 0001-Revert-Move-quark-initialization-to-a-constructor.patch" +sha256sums="b1cee83469ae7d80f17c267c37f090414e93960bd62d2b254a5a96fbc5baacb4 glib-2.46.0.tar.xz +c3dfaf69a627033d28552342e79ccbcfb7cae8dfbe8e3a2272ce2c25f76b9844 0001-Revert-Move-quark-initialization-to-a-constructor.patch" +sha512sums="70c86c6e9ee08c5cb807a511c736264fb99df3c4c5b6a885b77948d8b62a6f6318218589338a1af19143e6aded76c11ec2b2cc290f33626821052508a86b41b1 glib-2.46.0.tar.xz +c034c60e87b6fea82d1eddd6ccd849425dd9be10af552491d82398f04ec1691d6d386dc99333a917b1b5fa905526a4553cef37ab0967ff857864f95fe7a52edf 0001-Revert-Move-quark-initialization-to-a-constructor.patch" |