From 08968f7b94150de01366bda4c025eb4ebb9e774d Mon Sep 17 00:00:00 2001 From: Alexpux Date: Thu, 23 Jan 2014 10:29:53 +0400 Subject: [PATCH] glib2: Add patches from cygwin. Install missing files in glib2-devel. --- glib2/2.36.4-gmutex-cygwin.patch | 41 ++++++ glib2/2.36.4-goption-cygwin.patch | 31 +++++ glib2/2.36.4-gspawn-cygwin.patch | 11 ++ glib2/2.36.4-gtk-doc-vpath.patch | 16 +++ glib2/2.36.4-gutf8-cygwin.patch | 24 ++++ glib2/PKGBUILD | 219 +++++++++++++++++------------- 6 files changed, 244 insertions(+), 98 deletions(-) create mode 100644 glib2/2.36.4-gmutex-cygwin.patch create mode 100644 glib2/2.36.4-goption-cygwin.patch create mode 100644 glib2/2.36.4-gspawn-cygwin.patch create mode 100644 glib2/2.36.4-gtk-doc-vpath.patch create mode 100644 glib2/2.36.4-gutf8-cygwin.patch diff --git a/glib2/2.36.4-gmutex-cygwin.patch b/glib2/2.36.4-gmutex-cygwin.patch new file mode 100644 index 00000000..a4971fe3 --- /dev/null +++ b/glib2/2.36.4-gmutex-cygwin.patch @@ -0,0 +1,41 @@ +pthread_mutex_init(&mutex, NULL) uses PTHREAD_MUTEX_ERRORCHECK, even though +PTHREAD_MUTEX_DEFAULT == PTHREAD_MUTEX_NORMAL. + +--- origsrc/glib-2.36.4/glib/gthread-posix.c 2013-08-07 09:34:32.000000000 -0500 ++++ src/glib-2.36.4/glib/gthread-posix.c 2013-10-24 22:00:57.631593400 -0500 +@@ -81,7 +81,7 @@ g_thread_abort (gint status, + static pthread_mutex_t * + g_mutex_impl_new (void) + { +- pthread_mutexattr_t *pattr = NULL; ++ static pthread_mutexattr_t attr = NULL; + pthread_mutex_t *mutex; + gint status; + +@@ -89,21 +89,18 @@ g_mutex_impl_new (void) + if G_UNLIKELY (mutex == NULL) + g_thread_abort (errno, "malloc"); + +-#ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP +- { +- pthread_mutexattr_t attr; ++ if (!attr) + pthread_mutexattr_init (&attr); ++#ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP + pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_ADAPTIVE_NP); +- pattr = &attr; +- } ++#else ++ pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_DEFAULT); + #endif + +- if G_UNLIKELY ((status = pthread_mutex_init (mutex, pattr)) != 0) ++ if G_UNLIKELY ((status = pthread_mutex_init (mutex, &attr)) != 0) + g_thread_abort (status, "pthread_mutex_init"); + +-#ifdef PTHREAD_ADAPTIVE_MUTEX_NP + pthread_mutexattr_destroy (&attr); +-#endif + + return mutex; + } diff --git a/glib2/2.36.4-goption-cygwin.patch b/glib2/2.36.4-goption-cygwin.patch new file mode 100644 index 00000000..34d94081 --- /dev/null +++ b/glib2/2.36.4-goption-cygwin.patch @@ -0,0 +1,31 @@ +--- origsrc/glib-2.36.4/glib/goption.c 2013-08-07 09:36:32.000000000 -0500 ++++ src/glib-2.36.4/glib/goption.c 2013-10-21 13:25:01.242539100 -0500 +@@ -1671,7 +1671,7 @@ free_pending_nulls (GOptionContext *cont + static char * + platform_get_argv0 (void) + { +-#if defined __linux ++#if defined __linux || defined(__CYGWIN__) + char *cmdline; + char *base_arg0; + gsize len; +--- origsrc/glib-2.36.4/glib/tests/option-argv0.c 2013-05-07 13:26:07.000000000 -0500 ++++ src/glib-2.36.4/glib/tests/option-argv0.c 2013-10-21 13:26:28.800547100 -0500 +@@ -27,7 +27,7 @@ + #include + #include + +-#if defined __linux || defined __OpenBSD__ ++#if defined __linux || defined __OpenBSD__ || defined __CYGWIN__ + static void + test_platform_argv0 (void) + { +@@ -57,7 +57,7 @@ main (int argc, + /* Note - we can't actually use g_test_* because g_test_init mutates + * g_get_prgname() which is exactly what we wanted to test =/ + */ +-#if defined __linux || defined __OpenBSD__ ++#if defined __linux || defined __OpenBSD__ || defined __CYGWIN__ + g_print ("/option/argv0: "); + test_platform_argv0 (); + g_print ("OK\n"); diff --git a/glib2/2.36.4-gspawn-cygwin.patch b/glib2/2.36.4-gspawn-cygwin.patch new file mode 100644 index 00000000..5783b2a5 --- /dev/null +++ b/glib2/2.36.4-gspawn-cygwin.patch @@ -0,0 +1,11 @@ +--- origsrc/glib-2.36.4/glib/gspawn.c 2013-08-07 09:36:32.000000000 -0500 ++++ src/glib-2.36.4/glib/gspawn.c 2013-10-21 13:25:34.502441400 -0500 +@@ -1040,7 +1040,7 @@ fdwalk (int (*cb)(void *data, int fd), v + struct rlimit rl; + #endif + +-#ifdef __linux__ ++#if defined(__linux__) || defined(__CYGWIN__) + DIR *d; + + if ((d = opendir("/proc/self/fd"))) { diff --git a/glib2/2.36.4-gtk-doc-vpath.patch b/glib2/2.36.4-gtk-doc-vpath.patch new file mode 100644 index 00000000..5a4dffba --- /dev/null +++ b/glib2/2.36.4-gtk-doc-vpath.patch @@ -0,0 +1,16 @@ +--- origsrc/glib-2.36.4/docs/reference/gio/gdbus-object-manager-example/Makefile.am 2013-08-07 09:34:32.000000000 -0500 ++++ src/glib-2.36.4/docs/reference/gio/gdbus-object-manager-example/Makefile.am 2013-10-22 00:54:44.900548900 -0500 +@@ -11,10 +11,10 @@ DOC_MAIN_SGML_FILE=gdbus-object-manager- + SCAN_OPTIONS=--deprecated-guards="G_DISABLE_DEPRECATED" + + # The directory containing the source code. Relative to $(srcdir) +-DOC_SOURCE_DIR=$(top_builddir)/gio/tests/gdbus-object-manager-example ++DOC_SOURCE_DIR=$(top_srcdir)/gio/tests/gdbus-object-manager-example + +-HFILE_GLOB=$(top_builddir)/gio/tests/gdbus-object-manager-example/*.h +-CFILE_GLOB=$(top_builddir)/gio/tests/gdbus-object-manager-example/*.c ++HFILE_GLOB=$(top_srcdir)/gio/tests/gdbus-object-manager-example/*.h ++CFILE_GLOB=$(top_srcdir)/gio/tests/gdbus-object-manager-example/*.c + + # Headers to ignore + IGNORE_HFILES = \ diff --git a/glib2/2.36.4-gutf8-cygwin.patch b/glib2/2.36.4-gutf8-cygwin.patch new file mode 100644 index 00000000..a0940428 --- /dev/null +++ b/glib2/2.36.4-gutf8-cygwin.patch @@ -0,0 +1,24 @@ +Cygwin defines this since 1.7.8, but our wchar_t is only 16-bit while +this code seems to assume 32-bit wchar_t. So, either some incorrect +assumptions need to be fixed in the __STDC_ISO_10646__ code paths, or +the conditionals need to also be guarded && (__SIZEOF_WCHAR_T__ == 4). + +Reported by SLao: +http://article.gmane.org/gmane.os.cygwin.ports.general/1330 + +--- origsrc/glib-2.36.4/glib/gunicollate.c 2013-05-07 13:26:07.000000000 -0500 ++++ src/glib-2.36.4/glib/gunicollate.c 2013-11-30 21:36:27.710188300 -0600 +@@ -37,9 +37,12 @@ + #include "gstrfuncs.h" + #include "gtestutils.h" + #include "gcharset.h" +-#ifndef __STDC_ISO_10646__ ++#if !defined(__STDC_ISO_10646__) || defined(G_WITH_CYGWIN) + #include "gconvert.h" + #endif ++#ifdef G_WITH_CYGWIN ++#undef __STDC_ISO_10646__ ++#endif + + + #ifdef _MSC_VER diff --git a/glib2/PKGBUILD b/glib2/PKGBUILD index bb5a4123..e76306a7 100644 --- a/glib2/PKGBUILD +++ b/glib2/PKGBUILD @@ -3,7 +3,7 @@ pkgbase=glib2 pkgname=(glib2 glib2-devel glib2-docs) pkgver=2.38.2 -pkgrel=1 +pkgrel=2 pkgdesc="Common C routines used by GTK+ and other libs" url="http://www.gtk.org/" arch=('i686' 'x86_64') @@ -16,6 +16,11 @@ source=(http://ftp.gnome.org/pub/GNOME/sources/glib/${pkgver%.*}/glib-$pkgver.ta 2.36.3-gcredentials-cygwin.patch 2.36.3-not-win32.patch 2.36.3-visibility.patch + 2.36.4-gmutex-cygwin.patch + 2.36.4-goption-cygwin.patch + 2.36.4-gspawn-cygwin.patch + 2.36.4-gtk-doc-vpath.patch + 2.36.4-gutf8-cygwin.patch glib-2.38.1-msys2.patch) sha256sums=('056a9854c0966a0945e16146b3345b7a82562a5ba4d5516fd10398732aea5734' '049240975cd2f1c88fbe7deb28af14d4ec7d2640495f7ca8980d873bb710cc97' @@ -25,125 +30,143 @@ sha256sums=('056a9854c0966a0945e16146b3345b7a82562a5ba4d5516fd10398732aea5734' '2c6a6dd89501ec4cf653ad19c2f751de56b62b2228f8729578d2afda9dc02d33' '6a0dd9bb6cddf8a6b811a3509582f46ad15bbbfa15150bee85aed74b5ef57f76' '23a544c39a8596dfcd59b0226a3228d04c288c2023f6069942c3a76b8397e93b' + 'affc358cab65230e0722d9c541ae52896f1f63cdabd2379bceb28a92c9a6ea68' + 'a1e7ed7ebcfe9980b020cea6c736f6673bfcb84c39f85d222b2862c0be6bacfb' + '5a5df4d7ca0ae2be859a80731041fd9cfe6e1a338a882702d1e7d820816d8866' + '8d5e710b57be0527c34afb0894fefe9ca8aec1007e424a303a15889985227e05' + '5016c0af3a21a03fc1a979a5de21f2116edc75c88f2980e0f2ab816eff98680b' '34050b0a2ac2ed82572e32c0103d2ebd1f468a80a94917667f57edef5d0f62ad') prepare() { - cd glib-$pkgver - patch -Rp1 -i ../revert-warn-glib-compile-schemas.patch - - patch -p2 -i ${srcdir}/2.16-tests.patch - patch -p2 -i ${srcdir}/2.24.1-gmodule.patch - patch -p2 -i ${srcdir}/2.34.3-m4macros.patch - patch -p2 -i ${srcdir}/2.36.3-gcredentials-cygwin.patch - patch -p2 -i ${srcdir}/2.36.3-not-win32.patch - patch -p2 -i ${srcdir}/2.36.3-visibility.patch - patch -p1 -i ${srcdir}/glib-2.38.1-msys2.patch - - autoreconf -fi + cd glib-$pkgver + patch -Rp1 -i ../revert-warn-glib-compile-schemas.patch + + patch -p2 -i ${srcdir}/2.16-tests.patch + patch -p2 -i ${srcdir}/2.24.1-gmodule.patch + patch -p2 -i ${srcdir}/2.34.3-m4macros.patch + patch -p2 -i ${srcdir}/2.36.3-gcredentials-cygwin.patch + patch -p2 -i ${srcdir}/2.36.3-not-win32.patch + patch -p2 -i ${srcdir}/2.36.3-visibility.patch + patch -p2 -i ${srcdir}/2.36.4-gmutex-cygwin.patch + patch -p2 -i ${srcdir}/2.36.4-goption-cygwin.patch + patch -p2 -i ${srcdir}/2.36.4-gspawn-cygwin.patch + patch -p2 -i ${srcdir}/2.36.4-gtk-doc-vpath.patch + patch -p2 -i ${srcdir}/2.36.4-gutf8-cygwin.patch + patch -p1 -i ${srcdir}/glib-2.38.1-msys2.patch + + libtoolize --force --copy + autoreconf -fi } build() { - cd glib-$pkgver - ./configure --build=${CHOST} \ - --prefix=/usr \ - --disable-libelf \ - --with-libiconv=gnu \ - --with-pcre=system \ - --with-threads=posix \ - ac_cv_header_winsock2_h=no \ - ac_cv_header_mswsock_h=no - make - - make completiondir=/usr/share/bash-completion/completions DESTDIR="$srcdir/dest" install - pushd $srcdir/dest/usr/share/gdb/auto-load > /dev/null + export lt_cv_deplibs_check_method='pass_all' + cd glib-$pkgver + ./configure \ + --build=${CHOST} \ + --host=${CHOST} \ + --prefix=/usr \ + --disable-libelf \ + --with-pcre=system \ + --with-threads=posix \ + --enable-shared \ + --disable-static \ + --disable-silent-rules \ + ac_cv_header_winsock2_h=no \ + ac_cv_header_mswsock_h=no + make VERBOSE=1 + + make completiondir=/usr/share/bash-completion/completions DESTDIR="$srcdir/dest" install + pushd $srcdir/dest/usr/share/gdb/auto-load > /dev/null mv libglib* msys-glib-2.0-0.dll-gdb.py mv libgobject* msys-gobject-2.0-0.dll-gdb.py - popd > /dev/null + popd > /dev/null } check() { - cd glib-$pkgver - #make -k check || : + cd glib-$pkgver + #make -k check || : } package_glib2() { - depends=('pcre' 'libffi') - optdepends=('python2: for gdbus-codegen and gtester-report') - options=('!docs' '!emptydirs') - license=('LGPL') + depends=('pcre' 'libffi') + optdepends=('python2: for gdbus-codegen and gtester-report') + options=('!docs' '!emptydirs') + license=('LGPL') - #cd glib-$pkgver - #make completiondir=/usr/share/bash-completion/completions DESTDIR="$pkgdir" install + #cd glib-$pkgver + #make completiondir=/usr/share/bash-completion/completions DESTDIR="$pkgdir" install - mkdir -p $pkgdir/usr/{bin,lib,share} - cp -f $srcdir/dest/usr/bin/*.dll $pkgdir/usr/bin/ - for file in gdbus gio-querymodules glib-compile-schemas gobject-query gsettings; do - cp -f $srcdir/dest/usr/bin/${file}.exe $pkgdir/usr/bin/ - done - - cp -rf $srcdir/dest/usr/lib/gio $pkgdir/usr/lib/ - #cp -rf $srcdir/dest/usr/share/doc $pkgdir/usr/share/ - cp -rf $srcdir/dest/usr/share/gdb $pkgdir/usr/share/ - - mkdir -p $pkgdir/usr/share/{man,glib-2.0} - cp -rf $srcdir/dest/usr/share/glib-2.0/gdb $pkgdir/usr/share/glib-2.0/ - cp -rf $srcdir/dest/usr/share/glib-2.0/schemas $pkgdir/usr/share/glib-2.0/ - cp -rf $srcdir/dest/usr/share/locale $pkgdir/usr/share/ - mkdir -p $pkgdir/usr/share/man/man1 - cp -rf $srcdir/dest/usr/share/man/man1/gdbus.* $pkgdir/usr/share/man/man1/ - cp -rf $srcdir/dest/usr/share/man/man1/gio* $pkgdir/usr/share/man/man1/ - cp -rf $srcdir/dest/usr/share/man/man1/glib-compile-schemas* $pkgdir/usr/share/man/man1/ - cp -rf $srcdir/dest/usr/share/man/man1/gobject* $pkgdir/usr/share/man/man1/ - cp -rf $srcdir/dest/usr/share/man/man1/gsettings.* $pkgdir/usr/share/man/man1/ - - cp -rf $srcdir/dest/usr/share/bash-completion $pkgdir/usr/share/ - - for _i in "$pkgdir/usr/share/bash-completion/completions/"*; do - chmod -x "$_i" - done + mkdir -p $pkgdir/usr/{bin,lib,share} + cp -f $srcdir/dest/usr/bin/*.dll $pkgdir/usr/bin/ + for file in gdbus gio-querymodules glib-compile-schemas gobject-query gsettings; do + cp -f $srcdir/dest/usr/bin/${file}.exe $pkgdir/usr/bin/ + done + + cp -rf $srcdir/dest/usr/lib/gio $pkgdir/usr/lib/ + #cp -rf $srcdir/dest/usr/share/doc $pkgdir/usr/share/ + cp -rf $srcdir/dest/usr/share/gdb $pkgdir/usr/share/ + + mkdir -p $pkgdir/usr/share/{man,glib-2.0} + cp -rf $srcdir/dest/usr/share/glib-2.0/gdb $pkgdir/usr/share/glib-2.0/ + cp -rf $srcdir/dest/usr/share/glib-2.0/schemas $pkgdir/usr/share/glib-2.0/ + cp -rf $srcdir/dest/usr/share/locale $pkgdir/usr/share/ + mkdir -p $pkgdir/usr/share/man/man1 + cp -rf $srcdir/dest/usr/share/man/man1/gdbus.* $pkgdir/usr/share/man/man1/ + cp -rf $srcdir/dest/usr/share/man/man1/gio* $pkgdir/usr/share/man/man1/ + cp -rf $srcdir/dest/usr/share/man/man1/glib-compile-schemas* $pkgdir/usr/share/man/man1/ + cp -rf $srcdir/dest/usr/share/man/man1/gobject* $pkgdir/usr/share/man/man1/ + cp -rf $srcdir/dest/usr/share/man/man1/gsettings.* $pkgdir/usr/share/man/man1/ + + cp -rf $srcdir/dest/usr/share/bash-completion $pkgdir/usr/share/ + + for _i in "$pkgdir/usr/share/bash-completion/completions/"*; do + chmod -x "$_i" + done } package_glib2-devel() { - pkgdesc="glib2 headers and libraries" - groups=('development') - depends=("glib2=${pkgver}") - - mkdir -p $pkgdir/usr/{bin,lib,share} - cp -f $srcdir/dest/usr/bin/gdbus-codegen $pkgdir/usr/bin/ - cp -f $srcdir/dest/usr/bin/glib-* $pkgdir/usr/bin/ - rm -f $pkgdir/usr/bin/glib-compile-schemas* - cp -f $srcdir/dest/usr/bin/gresource* $pkgdir/usr/bin/ - cp -f $srcdir/dest/usr/bin/gtester* $pkgdir/usr/bin/ - - cp -rf $srcdir/dest/usr/lib/pkgconfig $pkgdir/usr/lib/ - cp -f $srcdir/dest/usr/lib/*.a $pkgdir/usr/lib/ - - cp -rf $srcdir/dest/usr/include $pkgdir/usr/ - cp -rf $srcdir/dest/usr/share/aclocal $pkgdir/usr/share/ - cp -rf $srcdir/dest/usr/share/glib-2.0 $pkgdir/usr/share/ - rm -rf $pkgdir/usr/share/glib-2.0/gdb - rm -rf $pkgdir/usr/share/glib-2.0/schemas - - mkdir -p $pkgdir/usr/share/man/man1 - cp -rf $srcdir/dest/usr/share/man/man1/gdbus-codegen* $pkgdir/usr/share/man/man1/ - cp -rf $srcdir/dest/usr/share/man/man1/glib-* $pkgdir/usr/share/man/man1/ - rm -f $pkgdir/usr/share/man/man1/glib-compile-schemas* - cp -rf $srcdir/dest/usr/share/man/man1/gresource* $pkgdir/usr/share/man/man1/ - cp -rf $srcdir/dest/usr/share/man/man1/gtester* $pkgdir/usr/share/man/man1/ + pkgdesc="glib2 headers and libraries" + groups=('development') + depends=("glib2=${pkgver}") + options=('emptydirs') + mkdir -p $pkgdir/usr/{bin,lib,share} + cp -f $srcdir/dest/usr/bin/gdbus-codegen $pkgdir/usr/bin/ + cp -f $srcdir/dest/usr/bin/glib-* $pkgdir/usr/bin/ + rm -f $pkgdir/usr/bin/glib-compile-schemas* + cp -f $srcdir/dest/usr/bin/gresource* $pkgdir/usr/bin/ + cp -f $srcdir/dest/usr/bin/gtester* $pkgdir/usr/bin/ + + cp -rf $srcdir/dest/usr/lib/pkgconfig $pkgdir/usr/lib/ + cp -f $srcdir/dest/usr/lib/*.a $pkgdir/usr/lib/ + cp -rf $srcdir/dest/usr/lib/gio* $pkgdir/usr/lib/ + cp -rf $srcdir/dest/usr/lib/glib* $pkgdir/usr/lib/ + + cp -rf $srcdir/dest/usr/include $pkgdir/usr/ + cp -rf $srcdir/dest/usr/share/aclocal $pkgdir/usr/share/ + cp -rf $srcdir/dest/usr/share/glib-2.0 $pkgdir/usr/share/ + rm -rf $pkgdir/usr/share/glib-2.0/gdb + rm -rf $pkgdir/usr/share/glib-2.0/schemas + + mkdir -p $pkgdir/usr/share/man/man1 + cp -rf $srcdir/dest/usr/share/man/man1/gdbus-codegen* $pkgdir/usr/share/man/man1/ + cp -rf $srcdir/dest/usr/share/man/man1/glib-* $pkgdir/usr/share/man/man1/ + rm -f $pkgdir/usr/share/man/man1/glib-compile-schemas* + cp -rf $srcdir/dest/usr/share/man/man1/gresource* $pkgdir/usr/share/man/man1/ + cp -rf $srcdir/dest/usr/share/man/man1/gtester* $pkgdir/usr/share/man/man1/ } package_glib2-docs() { - pkgdesc="Documentation for glib2" - conflicts=('gobject2-docs') - replaces=('gobject2-docs') - license=('custom') - options=('docs' '!emptydirs') - - cd glib-$pkgver/docs - make DESTDIR="${pkgdir}" install - install -m755 -d "${pkgdir}/usr/share/licenses/glib2-docs" - install -m644 reference/COPYING "${pkgdir}/usr/share/licenses/glib2-docs/" + pkgdesc="Documentation for glib2" + conflicts=('gobject2-docs') + replaces=('gobject2-docs') + license=('custom') + options=('docs' '!emptydirs') - rm -rf "${pkgdir}/usr/share/man" + cd glib-$pkgver/docs + make DESTDIR="${pkgdir}" install + install -m755 -d "${pkgdir}/usr/share/licenses/glib2-docs" + install -m644 reference/COPYING "${pkgdir}/usr/share/licenses/glib2-docs/" + + rm -rf "${pkgdir}/usr/share/man" }