diff options
-rw-r--r-- | libre/glib2-static/PKGBUILD | 74 | ||||
-rw-r--r-- | libre/glib2-static/disable-dynamic-tests.patch | 211 |
2 files changed, 234 insertions, 51 deletions
diff --git a/libre/glib2-static/PKGBUILD b/libre/glib2-static/PKGBUILD index 4220009f2..f5a443408 100644 --- a/libre/glib2-static/PKGBUILD +++ b/libre/glib2-static/PKGBUILD @@ -3,29 +3,35 @@ # Contributor: Márcio Silva <coadde@hyperbola.info> pkgname=glib2-static -pkgver=2.56.1 -pkgrel=1.static1 +pkgver=2.58.3 +pkgrel=1 +pkgrel+=.static1 pkgdesc="Low level core library" +pkgdesc+=" (static libraries)" url="https://wiki.gnome.org/Projects/GLib" license=(LGPL2.1) arch=(x86_64) arch+=(i686 armv7h) depends=(pcre libffi libutil-linux zlib) +depends+=("glib2=$pkgver") _depends=(pcre-static libffi-static libutil-linux-static zlib) -makedepends=(gettext gtk-doc shared-mime-info python libelf git util-linux dbus) +makedepends=(gettext gtk-doc shared-mime-info python libelf git util-linux meson dbus) makedepends+=("${_depends[@]}") checkdepends=(desktop-file-utils) optdepends=('python: gdbus-codegen, glib-genmarshal, glib-mkenums, gtester-report' 'libelf: gresource inspection tool') options=(!emptydirs) -_commit=d0364b443805dcb832c200fcf8bf58a64fdf3e7d # tags/2.56.1^0 +options+=(staticlibs) +_commit=f2d1128ffae0de87680e411fb62ccfccafed6b1c # tags/2.58.3^0 source=("git+https://gitlab.gnome.org/GNOME/glib.git#commit=$_commit" noisy-glib-compile-schemas.diff glib-compile-schemas.hook gio-querymodules.hook) +source+=(disable-dynamic-tests.patch) sha256sums=('SKIP' '81a4df0b638730cffb7fa263c04841f7ca6b9c9578ee5045db6f30ff0c3fc531' 'e1123a5d85d2445faac33f6dae1085fdd620d83279a4e130a83fe38db52b62b3' - '5ba204a2686304b1454d401a39a9d27d09dd25e4529664e3fd565be3d439f8b6') + '5ba204a2686304b1454d401a39a9d27d09dd25e4529664e3fd565be3d439f8b6' + 'f4790fc845f2b4811ce5df5ef3a7dfcc23a1593ec4e19ae9173bb799a045d00f') pkgver() { cd glib @@ -38,66 +44,32 @@ prepare() { # Suppress noise from glib-compile-schemas.hook patch -Np1 -i ../noisy-glib-compile-schemas.diff - NOCONFIGURE=1 ./autogen.sh + # disable tests that fail on static builds + patch -Np1 -i ../disable-dynamic-tests.patch } build() { - local debug=minimum - check_option debug y && debug=yes - if [[ $CARCH = i686 ]]; then # GTimer has trouble with x87 math, force SSE2 (which is implied # on x86_64). CFLAGS+=' -msse2 -mfpmath=sse' fi - cd glib - ./configure \ - --prefix=/usr \ - --libdir=/usr/lib \ - --sysconfdir=/etc \ - --with-pcre=system \ - --enable-debug=$debug \ - --disable-gtk-doc \ - --disable-fam \ - --enable-static - sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool - make + arch-meson glib build \ + --default-library static \ + -D selinux=false \ + -D man=false \ + -D gtk_doc=false + ninja -C build } check() { - cd glib - rm -rf "$srcdir/test-home" - mkdir "$srcdir/test-home" - HOME="$srcdir/test-home" make -j1 check + meson test -C build } package() { - pkgdesc+=" (static libraries)" - depends=("glib2=$pkgver") - optdepends=() - options=(staticlibs) - - cd glib - make DESTDIR="$pkgdir" install - - rm -v -- "$pkgdir"/usr/lib/lib*.so* - rm -vr -- \ - "$pkgdir"/usr/bin/ \ - "$pkgdir"/usr/include/ \ - "$pkgdir"/usr/lib/glib-*/ \ - "$pkgdir"/usr/lib/pkgconfig/ \ - "$pkgdir"/usr/share/ -} - -package_glib2-docs() { - pkgdesc="Documentation for GLib" - depends=() - optdepends=() - license+=(custom) - - mkdir -p "$pkgdir/usr/share" - mv gtk-doc "$pkgdir/usr/share" + DESTDIR="$pkgdir" meson install -C build - install -Dt "$pkgdir/usr/share/licenses/glib2-docs" -m644 glib/docs/reference/COPYING + # remove conflicting files + rm -rf "$pkgdir/usr/"{bin,include,share,lib/glib-2.0,lib/pkgconfig} $pkgdir/usr/lib/*.so* } diff --git a/libre/glib2-static/disable-dynamic-tests.patch b/libre/glib2-static/disable-dynamic-tests.patch new file mode 100644 index 000000000..cde19b391 --- /dev/null +++ b/libre/glib2-static/disable-dynamic-tests.patch @@ -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); |