summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO4
-rw-r--r--PKGBUILD9
-rw-r--r--fix-static-build-589.diff211
3 files changed, 220 insertions, 4 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 6de65864e2aa..13d530ec2fd3 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = glib2-static
pkgdesc = Low level core library. Static library.
pkgver = 2.58.2
- pkgrel = 2
+ pkgrel = 3
url = https://wiki.gnome.org/Projects/GLib
arch = x86_64
license = LGPL2.1
@@ -29,8 +29,10 @@ pkgbase = glib2-static
options = staticlibs
source = git+https://gitlab.gnome.org/GNOME/glib.git#commit=97bcbcb8c2aa0aeee5afd9939efbadbae0c8a8fa
source = noisy-glib-compile-schemas.diff
+ source = fix-static-build-589.diff
sha256sums = SKIP
sha256sums = 81a4df0b638730cffb7fa263c04841f7ca6b9c9578ee5045db6f30ff0c3fc531
+ sha256sums = f4790fc845f2b4811ce5df5ef3a7dfcc23a1593ec4e19ae9173bb799a045d00f
pkgname = glib2-static
diff --git a/PKGBUILD b/PKGBUILD
index 969e4c921503..adb4b765ba28 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,6 +1,6 @@
pkgname=glib2-static
pkgver=2.58.2
-pkgrel=2
+pkgrel=3
pkgdesc="Low level core library. Static library."
url="https://wiki.gnome.org/Projects/GLib"
license=(LGPL2.1)
@@ -13,9 +13,11 @@ optdepends=('python: gdbus-codegen, glib-genmarshal, glib-mkenums, gtester-repor
options=('!docs' '!libtool' '!emptydirs' '!strip' 'staticlibs')
_commit=97bcbcb8c2aa0aeee5afd9939efbadbae0c8a8fa # tags/2.58.2^0
source=("git+https://gitlab.gnome.org/GNOME/glib.git#commit=$_commit"
- noisy-glib-compile-schemas.diff)
+ noisy-glib-compile-schemas.diff
+ fix-static-build-589.diff)
sha256sums=('SKIP'
- '81a4df0b638730cffb7fa263c04841f7ca6b9c9578ee5045db6f30ff0c3fc531')
+ '81a4df0b638730cffb7fa263c04841f7ca6b9c9578ee5045db6f30ff0c3fc531'
+ 'f4790fc845f2b4811ce5df5ef3a7dfcc23a1593ec4e19ae9173bb799a045d00f')
pkgver() {
cd glib
@@ -27,6 +29,7 @@ prepare() {
# Suppress noise from glib-compile-schemas.hook
patch -Np1 -i ../noisy-glib-compile-schemas.diff
+ patch -Np1 -i ../fix-static-build-589.diff
}
build() {
diff --git a/fix-static-build-589.diff b/fix-static-build-589.diff
new file mode 100644
index 000000000000..cde19b391ea1
--- /dev/null
+++ b/fix-static-build-589.diff
@@ -0,0 +1,211 @@
+diff --git a/gio/tests/giomodule.c b/gio/tests/giomodule.c
+index e832e95d37b6c19c9a7fce2adbc6eb47aced4256..893357110e0d74e94fd7f40b5f3172964b545daa 100644
+--- a/gio/tests/giomodule.c
++++ b/gio/tests/giomodule.c
+@@ -76,51 +76,57 @@ test_extension_point (void)
+ static void
+ test_module_scan_all (void)
+ {
+- if (g_test_subprocess ())
++ if (g_module_supported ())
+ {
+- GIOExtensionPoint *ep;
+- GIOExtension *ext;
+- GList *list;
+- ep = g_io_extension_point_register ("test-extension-point");
+- g_io_modules_scan_all_in_directory (g_test_get_filename (G_TEST_BUILT, "modules", NULL));
+- g_io_modules_scan_all_in_directory (g_test_get_filename (G_TEST_BUILT, "modules/.libs", NULL));
+- list = g_io_extension_point_get_extensions (ep);
+- g_assert_cmpint (g_list_length (list), ==, 2);
+- ext = list->data;
+- g_assert_cmpstr (g_io_extension_get_name (ext), ==, "test-b");
+- ext = list->next->data;
+- g_assert_cmpstr (g_io_extension_get_name (ext), ==, "test-a");
+- return;
++ if (g_test_subprocess ())
++ {
++ GIOExtensionPoint *ep;
++ GIOExtension *ext;
++ GList *list;
++ ep = g_io_extension_point_register ("test-extension-point");
++ g_io_modules_scan_all_in_directory (g_test_get_filename (G_TEST_BUILT, "modules", NULL));
++ g_io_modules_scan_all_in_directory (g_test_get_filename (G_TEST_BUILT, "modules/.libs", NULL));
++ list = g_io_extension_point_get_extensions (ep);
++ g_assert_cmpint (g_list_length (list), ==, 2);
++ ext = list->data;
++ g_assert_cmpstr (g_io_extension_get_name (ext), ==, "test-b");
++ ext = list->next->data;
++ g_assert_cmpstr (g_io_extension_get_name (ext), ==, "test-a");
++ return;
++ }
++ g_test_trap_subprocess (NULL, 0, 7);
++ g_test_trap_assert_passed ();
+ }
+- g_test_trap_subprocess (NULL, 0, 7);
+- g_test_trap_assert_passed ();
+ }
+
+ static void
+ test_module_scan_all_with_scope (void)
+ {
+- if (g_test_subprocess ())
++ if (g_module_supported ())
+ {
+- GIOExtensionPoint *ep;
+- GIOModuleScope *scope;
+- GIOExtension *ext;
+- GList *list;
++ if (g_test_subprocess ())
++ {
++ GIOExtensionPoint *ep;
++ GIOModuleScope *scope;
++ GIOExtension *ext;
++ GList *list;
+
+- ep = g_io_extension_point_register ("test-extension-point");
+- scope = g_io_module_scope_new (G_IO_MODULE_SCOPE_BLOCK_DUPLICATES);
+- g_io_module_scope_block (scope, "libtestmoduleb." G_MODULE_SUFFIX);
+- g_io_modules_scan_all_in_directory_with_scope (g_test_get_filename (G_TEST_BUILT, "modules", NULL), scope);
+- list = g_io_extension_point_get_extensions (ep);
+- g_io_modules_scan_all_in_directory_with_scope (g_test_get_filename (G_TEST_BUILT, "modules/.libs", NULL), scope);
+- list = g_io_extension_point_get_extensions (ep);
+- g_assert_cmpint (g_list_length (list), ==, 1);
+- ext = list->data;
+- g_assert_cmpstr (g_io_extension_get_name (ext), ==, "test-a");
+- g_io_module_scope_free (scope);
+- return;
++ ep = g_io_extension_point_register ("test-extension-point");
++ scope = g_io_module_scope_new (G_IO_MODULE_SCOPE_BLOCK_DUPLICATES);
++ g_io_module_scope_block (scope, "libtestmoduleb." G_MODULE_SUFFIX);
++ g_io_modules_scan_all_in_directory_with_scope (g_test_get_filename (G_TEST_BUILT, "modules", NULL), scope);
++ list = g_io_extension_point_get_extensions (ep);
++ g_io_modules_scan_all_in_directory_with_scope (g_test_get_filename (G_TEST_BUILT, "modules/.libs", NULL), scope);
++ list = g_io_extension_point_get_extensions (ep);
++ g_assert_cmpint (g_list_length (list), ==, 1);
++ ext = list->data;
++ g_assert_cmpstr (g_io_extension_get_name (ext), ==, "test-a");
++ g_io_module_scope_free (scope);
++ return;
++ }
++ g_test_trap_subprocess (NULL, 0, 7);
++ g_test_trap_assert_passed ();
+ }
+- g_test_trap_subprocess (NULL, 0, 7);
+- g_test_trap_assert_passed ();
+ }
+
+ int
+diff --git a/gmodule/meson.build b/gmodule/meson.build
+index e4a6a1c811c97ea32e27c79a766dd31205e7789b..77ffdc476a631eed8403a88b08006e6fb4b16494 100644
+--- a/gmodule/meson.build
++++ b/gmodule/meson.build
+@@ -8,7 +8,8 @@ libdl_dep = [ ]
+ g_module_lib_args = [ ]
+ g_module_impl = ''
+
+-dlopen_dlsym_test_code = '''
++if get_option('default_library') != 'static'
++ dlopen_dlsym_test_code = '''
+ #include <dlfcn.h>
+ int glib_underscore_test (void) { return 42; }
+ int main (int argc, char ** argv) {
+@@ -21,48 +22,49 @@ int main (int argc, char ** argv) {
+ return (!f2 || f1);
+ }'''
+
+-# On Windows force native WIN32 shared lib loader
+-if host_system == 'windows'
+- g_module_impl = 'G_MODULE_IMPL_WIN32'
+-# Force native AIX library loader
+-# dlopen() filepath must be of the form /path/libname.a(libname.so)
+-elif host_system == 'aix'
+- g_module_impl = 'G_MODULE_IMPL_AR'
+-elif cc.links(dlopen_dlsym_test_code, name : 'dlopen() and dlsym() in system libraries')
+- g_module_impl = 'G_MODULE_IMPL_DL'
+-# NSLinkModule (dyld) in system libraries (Darwin)
+-elif cc.has_function('NSLinkModule')
+- g_module_impl = 'G_MODULE_IMPL_DYLD'
+- g_module_need_uscore = 1
+-elif cc.links(dlopen_dlsym_test_code, args : '-ldl', name : 'dlopen() and dlsym() in libdl')
+- g_module_impl = 'G_MODULE_IMPL_DL'
+- libdl_dep = cc.find_library('dl')
+- g_module_lib_args = '-ldl'
+-endif
++ # On Windows force native WIN32 shared lib loader
++ if host_system == 'windows'
++ g_module_impl = 'G_MODULE_IMPL_WIN32'
++ # Force native AIX library loader
++ # dlopen() filepath must be of the form /path/libname.a(libname.so)
++ elif host_system == 'aix'
++ g_module_impl = 'G_MODULE_IMPL_AR'
++ elif cc.links(dlopen_dlsym_test_code, name : 'dlopen() and dlsym() in system libraries')
++ g_module_impl = 'G_MODULE_IMPL_DL'
++ # NSLinkModule (dyld) in system libraries (Darwin)
++ elif cc.has_function('NSLinkModule')
++ g_module_impl = 'G_MODULE_IMPL_DYLD'
++ g_module_need_uscore = 1
++ elif cc.links(dlopen_dlsym_test_code, args : '-ldl', name : 'dlopen() and dlsym() in libdl')
++ g_module_impl = 'G_MODULE_IMPL_DL'
++ libdl_dep = cc.find_library('dl')
++ g_module_lib_args = '-ldl'
++ endif
+
+-# additional checks for G_MODULE_IMPL_DL
+-if g_module_impl == 'G_MODULE_IMPL_DL'
+- # FIXME: check for OSF1/5.0 RTLD_GLOBAL brokenness (is this still relevant?)
++ # additional checks for G_MODULE_IMPL_DL
++ if g_module_impl == 'G_MODULE_IMPL_DL'
++ # FIXME: check for OSF1/5.0 RTLD_GLOBAL brokenness (is this still relevant?)
+
+- # Check whether we need preceding underscores
+- if cc.get_id() == 'msvc'
+- message('Building for MSVC: assuming that symbols are prefixed with underscore')
+- g_module_need_uscore = 1
+- elif meson.has_exe_wrapper()
+- # FIXME: communicate result via stdout instead of return value, so non-0 return is not printed in bold red
+- rres = cc.run(dlopen_dlsym_test_code,
+- args : g_module_lib_args,
+- name : 'dlsym() preceding underscores')
+- if host_system == 'windows' or rres.returncode() == 0
++ # Check whether we need preceding underscores
++ if cc.get_id() == 'msvc'
++ message('Building for MSVC: assuming that symbols are prefixed with underscore')
+ g_module_need_uscore = 1
++ elif meson.has_exe_wrapper()
++ # FIXME: communicate result via stdout instead of return value, so non-0 return is not printed in bold red
++ rres = cc.run(dlopen_dlsym_test_code,
++ args : g_module_lib_args,
++ name : 'dlsym() preceding underscores')
++ if host_system == 'windows' or rres.returncode() == 0
++ g_module_need_uscore = 1
++ endif
++ else
++ message('Cross-compiling: assuming that symbols aren\'t prefixed with underscore')
++ g_module_need_uscore = 0
+ endif
+- else
+- message('Cross-compiling: assuming that symbols aren\'t prefixed with underscore')
+- g_module_need_uscore = 0
+- endif
+
+- if cc.has_function('dlerror', args : g_module_lib_args)
+- g_module_have_dlerror = 1
++ if cc.has_function('dlerror', args : g_module_lib_args)
++ g_module_have_dlerror = 1
++ endif
+ endif
+ endif
+
+diff --git a/tests/module-test.c b/tests/module-test.c
+index fbf23169f730f3ecf2f24c1071f6ee1869fdc2fe..04a12128923258fe0ab0b37e618fe89b11cb0327 100644
+--- a/tests/module-test.c
++++ b/tests/module-test.c
+@@ -82,7 +82,7 @@ main (int argc,
+ g_test_init (&argc, &argv, NULL);
+
+ if (!g_module_supported ())
+- g_error ("dynamic modules not supported");
++ return 0;
+
+ plugin_a = g_test_build_filename (G_TEST_BUILT, "libmoduletestplugin_a", NULL);
+ plugin_b = g_test_build_filename (G_TEST_BUILT, "libmoduletestplugin_b", NULL);