aboutsummaryrefslogtreecommitdiffstats
path: root/main/glib
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2015-10-02 08:14:36 +0200
committerNatanael Copa <ncopa@alpinelinux.org>2015-10-02 09:10:12 +0200
commitffda174b5508f59adbe44547cc97e7a1c436671e (patch)
tree7257fc8a3549f006830ad46e73bb57538fa643c0 /main/glib
parente6a76917b3439ee7837f07cd680a8a8d1ba3c179 (diff)
downloadaports-ffda174b5508f59adbe44547cc97e7a1c436671e.tar.bz2
aports-ffda174b5508f59adbe44547cc97e7a1c436671e.tar.xz
main/glib: revert move quark initialization to a contructor
building gobject-introspection fails without this fix: (process:31102): GLib-CRITICAL **: g_hash_table_lookup: assertion 'hash_table != NULL' failed GLib-GObject:ERROR:gtype.c:2747:g_type_register_static: assertion failed: (static_quark_type_flags)
Diffstat (limited to 'main/glib')
-rw-r--r--main/glib/0001-Revert-Move-quark-initialization-to-a-constructor.patch110
-rw-r--r--main/glib/APKBUILD15
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"