glib2: Add patches from cygwin. Install missing files in glib2-devel.

This commit is contained in:
Alexpux
2014-01-23 10:29:53 +04:00
parent 2fd050209b
commit 08968f7b94
6 changed files with 244 additions and 98 deletions

View File

@@ -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;
}

View File

@@ -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 <stdio.h>
#include <string.h>
-#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");

View File

@@ -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"))) {

View File

@@ -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 = \

View File

@@ -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

View File

@@ -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"
}