diff --git a/glib2/mingw-w64-autotools/0001-Use-CreateFile-on-Win32-to-make-sure-g_unlink-always.patch b/glib2/mingw-w64-autotools/0001-Use-CreateFile-on-Win32-to-make-sure-g_unlink-always.patch new file mode 100644 index 00000000..c3c4c756 --- /dev/null +++ b/glib2/mingw-w64-autotools/0001-Use-CreateFile-on-Win32-to-make-sure-g_unlink-always.patch @@ -0,0 +1,338 @@ +From 7f4f4354540440c0a8a37beaccbec8bc7fc15ec7 Mon Sep 17 00:00:00 2001 +From: Erik van Pienbroek +Date: Mon, 27 Aug 2012 23:28:54 +0200 +Subject: [PATCH] Use CreateFile on Win32 to make sure g_unlink always works + +The functions g_open(), g_creat() and g_fopen() defer to _wopen(), +_wcreat() and _wfopen() respectively. This is very similar to +the corresponding arrangement for Linux. However, those Windows +functions do not support renaming a file whilst it's open. As a +result, g_rename() behaves differently on the Windows platform +compared to its Linux behaviour, where files can be renamed even +while there are file handles still open. Resolved this by using +the Win32 API function CreateFile() instead of _wopen(), _wcreat() +and _wfopen() + +Patch initially created by John Emmas +--- + glib/gstdio.c | 259 ++++++++++++++++++++++++++++++++++++++++++++++++++++------ + 1 file changed, 233 insertions(+), 26 deletions(-) + +diff --git a/glib/gstdio.c b/glib/gstdio.c +index 6d763e1..c1d072f 100644 +--- a/glib/gstdio.c ++++ b/glib/gstdio.c +@@ -758,6 +758,11 @@ + int mode) + { + #ifdef G_OS_WIN32 ++ HANDLE hFile; ++ DWORD dwDesiredAccess = 0; ++ DWORD dwFlagsAndAttributes = 0; ++ DWORD dwDisposition = OPEN_EXISTING; ++ DWORD dwSharedAccess = FILE_SHARE_READ | FILE_SHARE_DELETE; + wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL); + int retval; + int save_errno; +@@ -768,12 +773,114 @@ + return -1; + } + +- retval = _wopen (wfilename, flags, mode); +- save_errno = errno; ++ /* Set up the access modes and other attributes */ ++ if ((flags & _O_CREAT) && (mode & _S_IREAD)) ++ { ++ if (! (mode & _S_IWRITE)) ++ dwFlagsAndAttributes = FILE_ATTRIBUTE_READONLY; /* Sets file to 'read only' after the file gets closed */ ++ } ++ if ( !(flags & _O_ACCMODE)) ++ { ++ /* Equates to _O_RDONLY */ ++ if (flags & _O_TRUNC) ++ { ++ errno = EINVAL; ++ g_free (wfilename); ++ return -1; ++ } + +- g_free (wfilename); ++ dwDesiredAccess |= GENERIC_READ; ++ dwSharedAccess |= FILE_SHARE_WRITE; ++ } ++ if (flags & _O_WRONLY) ++ { ++ if (flags & _O_RDWR) ++ { ++ errno = EINVAL; ++ g_free (wfilename); ++ return -1; ++ } ++ ++ dwDesiredAccess |= GENERIC_WRITE; ++ } ++ if (flags & _O_RDWR) ++ { ++ dwDesiredAccess |= GENERIC_READ; ++ dwDesiredAccess |= GENERIC_WRITE; ++ } ++ if (flags & _O_TRUNC) ++ { ++ if (flags & _O_CREAT) ++ dwDisposition = CREATE_ALWAYS; ++ else ++ dwDisposition = TRUNCATE_EXISTING; ++ } ++ if ((flags & _O_CREAT) && !(flags & _O_TRUNC)) ++ { ++ if (flags & _O_EXCL) ++ dwDisposition = CREATE_NEW; ++ else ++ dwDisposition = OPEN_ALWAYS; ++ } ++ if (flags & _O_CREAT) ++ { ++ /* Handle the other flags that can be attached to _O_CREAT */ ++ if ((flags & _O_TEMPORARY) || (flags & _O_SHORT_LIVED)) ++ dwFlagsAndAttributes |= FILE_ATTRIBUTE_TEMPORARY; ++ ++ if (flags & _O_TEMPORARY) ++ dwFlagsAndAttributes |= FILE_FLAG_DELETE_ON_CLOSE; ++ } ++ if ((flags & _O_SEQUENTIAL) || (flags & _O_APPEND)) ++ { ++ dwFlagsAndAttributes |= FILE_FLAG_SEQUENTIAL_SCAN; ++ } ++ else if (flags & _O_RANDOM) ++ { ++ dwFlagsAndAttributes |= FILE_FLAG_RANDOM_ACCESS; ++ } ++ ++ if (0 == dwFlagsAndAttributes) ++ dwFlagsAndAttributes = FILE_ATTRIBUTE_NORMAL; ++ hFile = CreateFileW(wfilename, dwDesiredAccess, dwSharedAccess, NULL, dwDisposition, dwFlagsAndAttributes, NULL); ++ ++ if (INVALID_HANDLE_VALUE == hFile) ++ { ++ retval = (-1); ++ ++ switch (GetLastError ()) ++ { ++#define CASE(a,b) case ERROR_##a: errno = b; break ++ CASE (FILE_NOT_FOUND, ENOENT); ++ CASE (PATH_NOT_FOUND, ENOENT); ++ CASE (ACCESS_DENIED, EACCES); ++ CASE (NOT_SAME_DEVICE, EXDEV); ++ CASE (LOCK_VIOLATION, EACCES); ++ CASE (SHARING_VIOLATION, EACCES); ++ CASE (FILE_EXISTS, EEXIST); ++ CASE (ALREADY_EXISTS, EEXIST); ++#undef CASE ++ default: errno = EIO; ++ } ++ } ++ else ++ retval = _open_osfhandle((long)hFile, flags); + ++ if ((-1) != retval) ++ { ++ /* We have a valid file handle. Set its translation mode to text or binary, as appropriate */ ++ if ((!(flags & _O_TEXT)) && (_fmode == _O_BINARY)) ++ _setmode(retval, _O_BINARY); ++ else if ((flags & _O_TEXT) || (_fmode == _O_TEXT)) ++ _setmode(retval, _O_TEXT); ++ else ++ _setmode(retval, _O_BINARY); ++ } ++ ++ save_errno = errno; ++ g_free (wfilename); + errno = save_errno; ++ + return retval; + #else + int fd; +@@ -821,6 +928,8 @@ + int mode) + { + #ifdef G_OS_WIN32 ++ HANDLE hFile; ++ DWORD dwFlagsAndAttributes = FILE_ATTRIBUTE_NORMAL; + wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL); + int retval; + int save_errno; +@@ -831,12 +940,41 @@ + return -1; + } + +- retval = _wcreat (wfilename, mode); +- save_errno = errno; ++ if (mode & _S_IREAD) ++ { ++ if (! (mode & _S_IWRITE)) ++ dwFlagsAndAttributes = FILE_ATTRIBUTE_READONLY; /* Sets file to 'read only' after the file gets closed */ ++ } ++ ++ hFile = CreateFileW(wfilename, (GENERIC_READ | GENERIC_WRITE), (FILE_SHARE_READ | FILE_SHARE_DELETE), ++ NULL, CREATE_ALWAYS, dwFlagsAndAttributes, NULL); ++ ++ if (INVALID_HANDLE_VALUE == hFile) ++ { ++ retval = (-1); ++ ++ switch (GetLastError ()) ++ { ++#define CASE(a,b) case ERROR_##a: errno = b; break ++ CASE (FILE_NOT_FOUND, ENOENT); ++ CASE (PATH_NOT_FOUND, ENOENT); ++ CASE (ACCESS_DENIED, EACCES); ++ CASE (NOT_SAME_DEVICE, EXDEV); ++ CASE (LOCK_VIOLATION, EACCES); ++ CASE (SHARING_VIOLATION, EACCES); ++ CASE (FILE_EXISTS, EEXIST); ++ CASE (ALREADY_EXISTS, EEXIST); ++#undef CASE ++ default: errno = EIO; ++ } ++ } ++ else ++ retval = _open_osfhandle((long)hFile, _O_RDWR); + ++ save_errno = errno; + g_free (wfilename); +- + errno = save_errno; ++ + return retval; + #else + return creat (filename, mode); +@@ -1286,36 +1424,102 @@ + const gchar *mode) + { + #ifdef G_OS_WIN32 +- wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL); +- wchar_t *wmode; +- gchar *mode2; +- FILE *retval; +- int save_errno; +- +- if (wfilename == NULL) +- { +- errno = EINVAL; +- return NULL; +- } +- +- mode2 = _g_win32_get_mode_alias (mode); +- wmode = g_utf8_to_utf16 (mode2, -1, NULL, NULL, NULL); +- g_free (mode2); +- +- if (wmode == NULL) +- { +- g_free (wfilename); +- errno = EINVAL; +- return NULL; +- } ++ int hFile; ++ int flags = 0; ++ gchar priv_mode[4]; ++ FILE *retval = NULL; ++ ++ if ((NULL == filename) || (NULL == mode)) ++ { ++ errno = EINVAL; ++ goto out; ++ } ++ if ((strlen(mode) < 1) || (strlen(mode) > 3)) ++ { ++ errno - EINVAL; ++ goto out; ++ } ++ ++ strncpy(priv_mode, mode, 3); ++ priv_mode[3] = '\0'; ++ ++ /* Set up any flags to pass to 'g_open()' */ ++ if (3 == strlen(priv_mode)) ++ { ++ if (('c' == priv_mode[2]) || ('n' == priv_mode[2])) ++ priv_mode[2] = '\0'; ++ else ++ { ++ if (0 == strcmp(priv_mode, "a+b")) ++ flags = _O_RDWR | _O_CREAT | _O_APPEND | _O_BINARY; ++ else if (0 == strcmp(priv_mode, "a+t")) ++ flags = _O_RDWR | _O_CREAT | _O_APPEND | _O_TEXT; ++ else if (0 == strcmp(priv_mode, "r+b")) ++ flags = _O_RDWR | _O_BINARY; ++ else if (0 == strcmp(priv_mode, "r+t")) ++ flags = _O_RDWR | _O_TEXT; ++ else if (0 == strcmp(priv_mode, "w+b")) ++ flags = _O_RDWR | _O_CREAT |_O_TRUNC | _O_BINARY; ++ else if (0 == strcmp(priv_mode, "w+t")) ++ flags = _O_RDWR | _O_CREAT |_O_TRUNC | _O_TEXT; ++ else ++ { ++ errno = EINVAL; ++ goto out; ++ } ++ } ++ } ++ if (2 == strlen(priv_mode)) ++ { ++ if (('c' == priv_mode[1]) || ('n' == priv_mode[1])) ++ priv_mode[1] = '\0'; ++ else ++ { ++ if (0 == strcmp(priv_mode, "a+")) ++ flags = _O_RDWR | _O_CREAT | _O_APPEND; ++ else if (0 == strcmp(priv_mode, "ab")) ++ flags = _O_WRONLY | _O_CREAT | _O_APPEND | _O_BINARY; ++ else if (0 == strcmp(priv_mode, "at")) ++ flags = _O_WRONLY | _O_CREAT | _O_APPEND | _O_TEXT; ++ else if (0 == strcmp(priv_mode, "rb")) ++ flags = _O_RDONLY | _O_BINARY; ++ else if (0 == strcmp(priv_mode, "rt")) ++ flags = _O_RDONLY | _O_TEXT; ++ else if (0 == strcmp(priv_mode, "wb")) ++ flags = _O_WRONLY | _O_CREAT | _O_TRUNC | _O_BINARY; ++ else if (0 == strcmp(priv_mode, "wt")) ++ flags = _O_WRONLY | _O_CREAT | _O_TRUNC | _O_TEXT; ++ else ++ { ++ errno = EINVAL; ++ goto out; ++ } ++ } ++ } ++ if (1 == strlen(priv_mode)) ++ { ++ if (0 == strcmp(priv_mode, "a")) ++ flags = _O_WRONLY | _O_CREAT | _O_APPEND; ++ else if (0 == strcmp(priv_mode, "r")) ++ flags = _O_RDONLY; ++ else if (0 == strcmp(priv_mode, "w")) ++ flags = _O_WRONLY | _O_CREAT | _O_TRUNC; ++ else if ( !((0 == strcmp(priv_mode, "c")) || (0 == strcmp(priv_mode, "n")))) ++ { ++ errno = EINVAL; ++ goto out; ++ } ++ } + +- retval = _wfopen (wfilename, wmode); +- save_errno = errno; ++ hFile = g_open (filename, flags, (_S_IREAD | _S_IWRITE)); + +- g_free (wfilename); +- g_free (wmode); ++ if (INVALID_HANDLE_VALUE == (HANDLE)hFile) ++ /* 'errno' will have already been set by 'g_open()' */ ++ retval = NULL; ++ else ++ retval = _fdopen(hFile, mode); + +- errno = save_errno; ++out: + return retval; + #else + return fopen (filename, mode); diff --git a/glib2/mingw-w64-autotools/0001-gsocket-fix-cross-compilation.patch b/glib2/mingw-w64-autotools/0001-gsocket-fix-cross-compilation.patch new file mode 100644 index 00000000..5ad7ed78 --- /dev/null +++ b/glib2/mingw-w64-autotools/0001-gsocket-fix-cross-compilation.patch @@ -0,0 +1,26 @@ +From b7789bb144ff4545021fbd95ee93c98ec706891a Mon Sep 17 00:00:00 2001 +From: Nicola Murino +Date: Fri, 17 Aug 2018 17:04:07 +0200 +Subject: [PATCH] gsocket: fix cross compilation + +for some reason when cross compiling for windows BROKEN_IP_MREQ_SOURCE_STRUCT is defined but should not +--- + gio/gsocket.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gio/gsocket.c b/gio/gsocket.c +index 859e807cb..71a97b8cf 100644 +--- a/gio/gsocket.c ++++ b/gio/gsocket.c +@@ -2404,7 +2404,7 @@ g_socket_multicast_group_operation_ssm (GSocket *socket, + memset (&mc_req_src, 0, sizeof (mc_req_src)); + + /* By default use the default IPv4 multicast interface. */ +- S_ADDR_FIELD(mc_req_src) = g_htonl (INADDR_ANY); ++ mc_req_src.imr_interface.s_addr = g_htonl (INADDR_ANY); + + if (iface) + { +-- +2.18.0 + diff --git a/glib2/mingw-w64-autotools/PKGBUILD b/glib2/mingw-w64-autotools/PKGBUILD new file mode 100644 index 00000000..4acfe3e4 --- /dev/null +++ b/glib2/mingw-w64-autotools/PKGBUILD @@ -0,0 +1,79 @@ +# Maintainer: drakkan +# Contributor: Filip Brcic +# Contributor: ant32 +# Contributor: Renato Silva +pkgname=mingw-w64-glib2 +pkgver=2.58.0 +pkgrel=1 +_commit=f0b57dd7a80425264e318f85c331a039a3cddd87 # tags/2.58.0 +arch=(any) +pkgdesc="Low level core library (mingw-w64)" +depends=(mingw-w64-libffi mingw-w64-pcre mingw-w64-gettext mingw-w64-zlib) +makedepends=(mingw-w64-configure git python2) +license=("LGPL2.1") +options=(!strip !buildflags staticlibs !emptydirs) +url="https://wiki.gnome.org/Projects/GLib" +source=("git+https://gitlab.gnome.org/GNOME/glib.git#commit=$_commit" + "0001-gsocket-fix-cross-compilation.patch" + "0001-Use-CreateFile-on-Win32-to-make-sure-g_unlink-always.patch" + "glib-formaterror.patch" + "glib-include-time-h-for-localtime_r.patch" + "glib-prefer-constructors-over-DllMain.patch") +sha256sums=('SKIP' + '44c8c6b4ca376177a8c333a00c3485d638f8641967503e15364606d4c4292ff3' + 'afd62a852a0b6aed4ce86eb97297e5080b26055cc878413b89d482c184b826b3' + 'ea529d5cbf8cf7ca66467664a3ead37473a1c009ac973d5694b06cc9d0b23df3' + 'ac567f7a9cad51ab97dba70bcdd6c0c16f93d2451c43fde380e4fdb20b2d4b31' + '8a02502069fa88c667a4fd1599280f927cb1bcf61e9fcd369fec5bdb5440d480') + +_architectures="i686-w64-mingw32 x86_64-w64-mingw32" + +pkgver() { + cd glib + git describe --tags | sed 's/-/+/g' +} + +prepare() { + cd glib + patch -Np1 -i ../0001-Use-CreateFile-on-Win32-to-make-sure-g_unlink-always.patch + patch -Np1 -i ../glib-prefer-constructors-over-DllMain.patch + patch -Np1 -i ../glib-formaterror.patch + patch -Np1 -i ../glib-include-time-h-for-localtime_r.patch + patch -Np1 -i ../0001-gsocket-fix-cross-compilation.patch + NOCONFIGURE=1 ./autogen.sh +} + + +build() { + cd glib + conf="--with-pcre=system --with-threads=win32 --disable-fam" + for _arch in ${_architectures}; do + mkdir -p build-${_arch}-static && pushd build-${_arch}-static + ${_arch}-configure \ + --disable-shared $conf + make + popd + + mkdir -p build-${_arch}-shared && pushd build-${_arch}-shared + ${_arch}-configure \ + --disable-static $conf + make + popd + done +} + +package() { + for _arch in ${_architectures}; do + cd "$srcdir/glib/build-${_arch}-shared" + make DESTDIR="$pkgdir" install + make -C "$srcdir/glib/build-${_arch}-static" DESTDIR="$pkgdir/static" install + mv "$pkgdir/static/usr/${_arch}/lib/"*.a "$pkgdir/usr/${_arch}/lib/" + find "$pkgdir/usr/${_arch}" -name '*.exe' -exec ${_arch}-strip {} \; + find "$pkgdir/usr/${_arch}" -name '*.dll' -exec ${_arch}-strip --strip-unneeded {} \; + find "$pkgdir/usr/${_arch}" -name '*.a' -o -name '*.dll' | xargs ${_arch}-strip -g + rm -r "$pkgdir/usr/${_arch}/lib/charset.alias" + rm -r "$pkgdir/static" + done +} + +# vim: ts=2 sw=2 et: diff --git a/glib2/mingw-w64-autotools/glib-formaterror.patch b/glib2/mingw-w64-autotools/glib-formaterror.patch new file mode 100644 index 00000000..53590667 --- /dev/null +++ b/glib2/mingw-w64-autotools/glib-formaterror.patch @@ -0,0 +1,13 @@ +--- glib-2.57.2/configure.ac 2018-07-31 20:31:07.000000000 +0200 ++++ glib-2.57.2/configure.ac 2018-08-02 19:09:02.569368144 +0200 +@@ -3398,8 +3398,8 @@ + -Wno-bad-function-cast \ + -Werror=declaration-after-statement \ + -Werror=missing-prototypes -Werror=implicit-function-declaration \ +- -Werror=pointer-arith -Werror=init-self -Werror=format-security \ +- -Werror=format=2 -Werror=missing-include-dirs]) ++ -Werror=pointer-arith -Werror=init-self -Wno-error=format-security \ ++ -Wno-error=format=2 -Werror=missing-include-dirs]) + ]) + AC_SUBST(GLIB_WARN_CFLAGS) + diff --git a/glib2/mingw-w64-autotools/glib-include-time-h-for-localtime_r.patch b/glib2/mingw-w64-autotools/glib-include-time-h-for-localtime_r.patch new file mode 100644 index 00000000..c23d26a0 --- /dev/null +++ b/glib2/mingw-w64-autotools/glib-include-time-h-for-localtime_r.patch @@ -0,0 +1,10 @@ +--- glib-2.43.2/glib/gdate.c.orig 2015-01-01 23:50:04.203252143 +0100 ++++ glib-2.43.2/glib/gdate.c 2015-01-01 23:50:28.329647373 +0100 +@@ -41,6 +41,7 @@ + + #ifdef G_OS_WIN32 + #include ++#include + #endif + + #include "gdate.h" diff --git a/glib2/mingw-w64/0004-glib-prefer-constructors-over-DllMain.patch b/glib2/mingw-w64-autotools/glib-prefer-constructors-over-DllMain.patch similarity index 52% rename from glib2/mingw-w64/0004-glib-prefer-constructors-over-DllMain.patch rename to glib2/mingw-w64-autotools/glib-prefer-constructors-over-DllMain.patch index 7cc925a8..2edec2b1 100644 --- a/glib2/mingw-w64/0004-glib-prefer-constructors-over-DllMain.patch +++ b/glib2/mingw-w64-autotools/glib-prefer-constructors-over-DllMain.patch @@ -1,7 +1,21 @@ -diff -Naur glib-2.46.0-orig/glib/glib-init.c glib-2.46.0/glib/glib-init.c ---- glib-2.46.0-orig/glib/glib-init.c 2015-09-12 18:13:45.000000000 +0300 -+++ glib-2.46.0/glib/glib-init.c 2015-09-22 09:09:00.512195800 +0300 -@@ -238,12 +238,14 @@ +From bc90511c1eb333e26e0bc0eaee62375d0e788db6 Mon Sep 17 00:00:00 2001 +From: Erik van Pienbroek +Date: Tue, 16 Apr 2013 11:42:11 +0200 +Subject: [PATCH] win32: Prefer the use of constructors over DllMain + +This prevents having to depend on DllMain in static libraries + +Constructors are available in both the GCC build (GCC 2.7 and later) +and the MSVC build (MSVC 2008 and later using _Pragma, earlier +versions using #pragma) +--- + glib/glib-init.c | 22 ++++++++++++++-------- + 1 file changed, 14 insertions(+), 8 deletions(-) + +diff --git a/glib/glib-init.c b/glib/glib-init.c +--- a/glib/glib-init.c 2018-08-02 16:09:46.277047195 +0200 ++++ b/glib/glib-init.c 2018-08-02 16:10:23.617387056 +0200 +@@ -272,12 +272,14 @@ #if defined (G_OS_WIN32) @@ -18,7 +32,7 @@ diff -Naur glib-2.46.0-orig/glib/glib-init.c glib-2.46.0/glib/glib-init.c BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, -@@ -253,11 +255,6 @@ +@@ -287,13 +289,6 @@ { case DLL_PROCESS_ATTACH: glib_dll = hinstDLL; @@ -27,10 +41,12 @@ diff -Naur glib-2.46.0-orig/glib/glib-init.c glib-2.46.0/glib/glib-init.c - g_thread_win32_init (); -#endif - glib_init (); +- /* must go after glib_init */ +- g_console_win32_init (); break; case DLL_THREAD_DETACH: -@@ -274,7 +271,10 @@ +@@ -317,7 +312,10 @@ return TRUE; } @@ -42,7 +58,7 @@ diff -Naur glib-2.46.0-orig/glib/glib-init.c glib-2.46.0/glib/glib-init.c #ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA #pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(glib_init_ctor) -@@ -284,6 +284,12 @@ +@@ -327,7 +325,15 @@ static void glib_init_ctor (void) { @@ -53,5 +69,8 @@ diff -Naur glib-2.46.0-orig/glib/glib-init.c glib-2.46.0/glib/glib-init.c +#endif /* defined (THREADS_WIN32) */ +#endif /* defined (G_OS_WIN32) */ glib_init (); ++ /* must go after glib_init */ ++ g_console_win32_init (); } + #else diff --git a/glib2/mingw-w64/0001-Use-CreateFile-on-Win32-to-make-sure-g_unlink-always.patch b/glib2/mingw-w64/0001-Use-CreateFile-on-Win32-to-make-sure-g_unlink-always.patch index e53fd8d1..c3c4c756 100644 --- a/glib2/mingw-w64/0001-Use-CreateFile-on-Win32-to-make-sure-g_unlink-always.patch +++ b/glib2/mingw-w64/0001-Use-CreateFile-on-Win32-to-make-sure-g_unlink-always.patch @@ -1,7 +1,28 @@ -diff -Naur glib-2.46.0-orig/glib/gstdio.c glib-2.46.0/glib/gstdio.c ---- glib-2.46.0-orig/glib/gstdio.c 2015-02-26 15:57:09.000000000 +0300 -+++ glib-2.46.0/glib/gstdio.c 2015-09-22 09:08:58.032066100 +0300 -@@ -192,6 +192,11 @@ +From 7f4f4354540440c0a8a37beaccbec8bc7fc15ec7 Mon Sep 17 00:00:00 2001 +From: Erik van Pienbroek +Date: Mon, 27 Aug 2012 23:28:54 +0200 +Subject: [PATCH] Use CreateFile on Win32 to make sure g_unlink always works + +The functions g_open(), g_creat() and g_fopen() defer to _wopen(), +_wcreat() and _wfopen() respectively. This is very similar to +the corresponding arrangement for Linux. However, those Windows +functions do not support renaming a file whilst it's open. As a +result, g_rename() behaves differently on the Windows platform +compared to its Linux behaviour, where files can be renamed even +while there are file handles still open. Resolved this by using +the Win32 API function CreateFile() instead of _wopen(), _wcreat() +and _wfopen() + +Patch initially created by John Emmas +--- + glib/gstdio.c | 259 ++++++++++++++++++++++++++++++++++++++++++++++++++++------ + 1 file changed, 233 insertions(+), 26 deletions(-) + +diff --git a/glib/gstdio.c b/glib/gstdio.c +index 6d763e1..c1d072f 100644 +--- a/glib/gstdio.c ++++ b/glib/gstdio.c +@@ -758,6 +758,11 @@ int mode) { #ifdef G_OS_WIN32 @@ -9,11 +30,11 @@ diff -Naur glib-2.46.0-orig/glib/gstdio.c glib-2.46.0/glib/gstdio.c + DWORD dwDesiredAccess = 0; + DWORD dwFlagsAndAttributes = 0; + DWORD dwDisposition = OPEN_EXISTING; -+ DWORD dwSharedAccess = FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE; ++ DWORD dwSharedAccess = FILE_SHARE_READ | FILE_SHARE_DELETE; wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL); int retval; int save_errno; -@@ -202,12 +207,114 @@ +@@ -768,12 +773,114 @@ return -1; } @@ -29,45 +50,45 @@ diff -Naur glib-2.46.0-orig/glib/gstdio.c glib-2.46.0/glib/gstdio.c + { + /* Equates to _O_RDONLY */ + if (flags & _O_TRUNC) -+ { -+ errno = EINVAL; -+ g_free (wfilename); -+ return -1; -+ } ++ { ++ errno = EINVAL; ++ g_free (wfilename); ++ return -1; ++ } - g_free (wfilename); -+ dwDesiredAccess |= GENERIC_READ; -+ dwSharedAccess |= FILE_SHARE_WRITE; ++ dwDesiredAccess |= GENERIC_READ; ++ dwSharedAccess |= FILE_SHARE_WRITE; + } + if (flags & _O_WRONLY) + { + if (flags & _O_RDWR) -+ { -+ errno = EINVAL; -+ g_free (wfilename); -+ return -1; -+ } - -+ dwDesiredAccess |= GENERIC_WRITE; ++ { ++ errno = EINVAL; ++ g_free (wfilename); ++ return -1; ++ } ++ ++ dwDesiredAccess |= GENERIC_WRITE; + } + if (flags & _O_RDWR) + { -+ dwDesiredAccess |= GENERIC_READ; -+ dwDesiredAccess |= GENERIC_WRITE; ++ dwDesiredAccess |= GENERIC_READ; ++ dwDesiredAccess |= GENERIC_WRITE; + } + if (flags & _O_TRUNC) + { + if (flags & _O_CREAT) -+ dwDisposition = CREATE_ALWAYS; -+ else -+ dwDisposition = TRUNCATE_EXISTING; ++ dwDisposition = CREATE_ALWAYS; ++ else ++ dwDisposition = TRUNCATE_EXISTING; + } + if ((flags & _O_CREAT) && !(flags & _O_TRUNC)) + { + if (flags & _O_EXCL) -+ dwDisposition = CREATE_NEW; -+ else -+ dwDisposition = OPEN_ALWAYS; ++ dwDisposition = CREATE_NEW; ++ else ++ dwDisposition = OPEN_ALWAYS; + } + if (flags & _O_CREAT) + { @@ -112,7 +133,7 @@ diff -Naur glib-2.46.0-orig/glib/gstdio.c glib-2.46.0/glib/gstdio.c + } + else + retval = _open_osfhandle((long)hFile, flags); -+ + + if ((-1) != retval) + { + /* We have a valid file handle. Set its translation mode to text or binary, as appropriate */ @@ -131,7 +152,7 @@ diff -Naur glib-2.46.0-orig/glib/gstdio.c glib-2.46.0/glib/gstdio.c return retval; #else int fd; -@@ -254,6 +361,8 @@ +@@ -821,6 +928,8 @@ int mode) { #ifdef G_OS_WIN32 @@ -140,7 +161,7 @@ diff -Naur glib-2.46.0-orig/glib/gstdio.c glib-2.46.0/glib/gstdio.c wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL); int retval; int save_errno; -@@ -264,12 +373,41 @@ +@@ -831,12 +940,41 @@ return -1; } @@ -185,12 +206,13 @@ diff -Naur glib-2.46.0-orig/glib/gstdio.c glib-2.46.0/glib/gstdio.c return retval; #else return creat (filename, mode); -@@ -702,33 +840,102 @@ +@@ -1286,36 +1424,102 @@ const gchar *mode) { #ifdef G_OS_WIN32 - wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL); - wchar_t *wmode; +- gchar *mode2; - FILE *retval; - int save_errno; - @@ -200,7 +222,9 @@ diff -Naur glib-2.46.0-orig/glib/gstdio.c glib-2.46.0/glib/gstdio.c - return NULL; - } - -- wmode = g_utf8_to_utf16 (mode, -1, NULL, NULL, NULL); +- mode2 = _g_win32_get_mode_alias (mode); +- wmode = g_utf8_to_utf16 (mode2, -1, NULL, NULL, NULL); +- g_free (mode2); - - if (wmode == NULL) - { @@ -208,12 +232,6 @@ diff -Naur glib-2.46.0-orig/glib/gstdio.c glib-2.46.0/glib/gstdio.c - errno = EINVAL; - return NULL; - } -- -- retval = _wfopen (wfilename, wmode); -- save_errno = errno; -- -- g_free (wfilename); -- g_free (wmode); + int hFile; + int flags = 0; + gchar priv_mode[4]; @@ -226,7 +244,7 @@ diff -Naur glib-2.46.0-orig/glib/gstdio.c glib-2.46.0/glib/gstdio.c + } + if ((strlen(mode) < 1) || (strlen(mode) > 3)) + { -+ errno = EINVAL; ++ errno - EINVAL; + goto out; + } + @@ -253,10 +271,10 @@ diff -Naur glib-2.46.0-orig/glib/gstdio.c glib-2.46.0/glib/gstdio.c + else if (0 == strcmp(priv_mode, "w+t")) + flags = _O_RDWR | _O_CREAT |_O_TRUNC | _O_TEXT; + else -+ { -+ errno = EINVAL; ++ { ++ errno = EINVAL; + goto out; -+ } ++ } + } + } + if (2 == strlen(priv_mode)) @@ -280,10 +298,10 @@ diff -Naur glib-2.46.0-orig/glib/gstdio.c glib-2.46.0/glib/gstdio.c + else if (0 == strcmp(priv_mode, "wt")) + flags = _O_WRONLY | _O_CREAT | _O_TRUNC | _O_TEXT; + else -+ { -+ errno = EINVAL; ++ { ++ errno = EINVAL; + goto out; -+ } ++ } + } + } + if (1 == strlen(priv_mode)) @@ -295,14 +313,18 @@ diff -Naur glib-2.46.0-orig/glib/gstdio.c glib-2.46.0/glib/gstdio.c + else if (0 == strcmp(priv_mode, "w")) + flags = _O_WRONLY | _O_CREAT | _O_TRUNC; + else if ( !((0 == strcmp(priv_mode, "c")) || (0 == strcmp(priv_mode, "n")))) -+ { -+ errno = EINVAL; ++ { ++ errno = EINVAL; + goto out; -+ } ++ } + } -+ + +- retval = _wfopen (wfilename, wmode); +- save_errno = errno; + hFile = g_open (filename, flags, (_S_IREAD | _S_IWRITE)); -+ + +- g_free (wfilename); +- g_free (wmode); + if (INVALID_HANDLE_VALUE == (HANDLE)hFile) + /* 'errno' will have already been set by 'g_open()' */ + retval = NULL; diff --git a/glib2/mingw-w64/0001-gsocket-fix-cross-compilation.patch b/glib2/mingw-w64/0001-gsocket-fix-cross-compilation.patch new file mode 100644 index 00000000..5ad7ed78 --- /dev/null +++ b/glib2/mingw-w64/0001-gsocket-fix-cross-compilation.patch @@ -0,0 +1,26 @@ +From b7789bb144ff4545021fbd95ee93c98ec706891a Mon Sep 17 00:00:00 2001 +From: Nicola Murino +Date: Fri, 17 Aug 2018 17:04:07 +0200 +Subject: [PATCH] gsocket: fix cross compilation + +for some reason when cross compiling for windows BROKEN_IP_MREQ_SOURCE_STRUCT is defined but should not +--- + gio/gsocket.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gio/gsocket.c b/gio/gsocket.c +index 859e807cb..71a97b8cf 100644 +--- a/gio/gsocket.c ++++ b/gio/gsocket.c +@@ -2404,7 +2404,7 @@ g_socket_multicast_group_operation_ssm (GSocket *socket, + memset (&mc_req_src, 0, sizeof (mc_req_src)); + + /* By default use the default IPv4 multicast interface. */ +- S_ADDR_FIELD(mc_req_src) = g_htonl (INADDR_ANY); ++ mc_req_src.imr_interface.s_addr = g_htonl (INADDR_ANY); + + if (iface) + { +-- +2.18.0 + diff --git a/glib2/mingw-w64/0003-g_abort.all.patch b/glib2/mingw-w64/0003-g_abort.all.patch deleted file mode 100644 index 7e286db3..00000000 --- a/glib2/mingw-w64/0003-g_abort.all.patch +++ /dev/null @@ -1,253 +0,0 @@ -diff -Naur glib-2.46.0-orig/glib/gbacktrace.c glib-2.46.0/glib/gbacktrace.c ---- glib-2.46.0-orig/glib/gbacktrace.c 2014-12-20 00:49:48.000000000 +0300 -+++ glib-2.46.0/glib/gbacktrace.c 2015-09-22 09:08:59.311126700 +0300 -@@ -254,7 +254,7 @@ - if (IsDebuggerPresent ()) - G_BREAKPOINT (); - else -- abort (); -+ g_abort (); - #endif - } - -diff -Naur glib-2.46.0-orig/glib/giowin32.c glib-2.46.0/glib/giowin32.c ---- glib-2.46.0-orig/glib/giowin32.c 2014-12-20 00:49:48.000000000 +0300 -+++ glib-2.46.0/glib/giowin32.c 2015-09-22 09:08:59.357921600 +0300 -@@ -798,7 +798,7 @@ - - default: - g_assert_not_reached (); -- abort (); -+ g_abort (); - } - if (channel->debug) - g_print ("\n"); -@@ -945,7 +945,7 @@ - - default: - g_assert_not_reached (); -- abort (); -+ g_abort (); - } - } - -@@ -1010,7 +1010,7 @@ - - default: - g_assert_not_reached (); -- abort (); -+ g_abort (); - } - if (channel->debug) - g_print ("\n"); -@@ -1295,7 +1295,7 @@ - default: - whence = -1; /* Keep the compiler quiet */ - g_assert_not_reached (); -- abort (); -+ g_abort (); - } - - tmp_offset = offset; -@@ -1690,7 +1690,7 @@ - break; - default: - g_assert_not_reached (); -- abort (); -+ g_abort (); - } - - /* always open 'untranslated' */ -@@ -1736,7 +1736,7 @@ - break; - default: - g_assert_not_reached (); -- abort (); -+ g_abort (); - } - - return channel; -@@ -2225,7 +2225,7 @@ - - default: - g_assert_not_reached (); -- abort (); -+ g_abort (); - } - - fd->events = condition; -diff -Naur glib-2.46.0-orig/glib/gmessages.c glib-2.46.0/glib/gmessages.c ---- glib-2.46.0-orig/glib/gmessages.c 2015-09-21 06:33:23.000000000 +0300 -+++ glib-2.46.0/glib/gmessages.c 2015-09-22 09:08:59.373519900 +0300 -@@ -323,7 +323,7 @@ - if (breakpoint) - G_BREAKPOINT (); - else -- abort (); -+ g_abort (); - } - - #ifdef G_OS_WIN32 -@@ -1176,7 +1176,7 @@ - line, - pretty_function); - _g_log_abort (FALSE); -- abort (); -+ g_abort (); - } - - /** -diff -Naur glib-2.46.0-orig/glib/gslice.c glib-2.46.0/glib/gslice.c ---- glib-2.46.0-orig/glib/gslice.c 2015-09-08 20:40:27.000000000 +0300 -+++ glib-2.46.0/glib/gslice.c 2015-09-22 09:08:59.404716500 +0300 -@@ -1082,7 +1082,7 @@ - return; - if (G_UNLIKELY (allocator->config.debug_blocks) && - !smc_notify_free (mem_block, mem_size)) -- abort(); -+ g_abort(); - if (G_LIKELY (acat == 1)) /* allocate through magazine layer */ - { - ThreadMemory *tmem = thread_memory_from_self(); -@@ -1165,7 +1165,7 @@ - slice = *(gpointer*) (current + next_offset); - if (G_UNLIKELY (allocator->config.debug_blocks) && - !smc_notify_free (current, mem_size)) -- abort(); -+ g_abort(); - if (G_UNLIKELY (thread_memory_magazine2_is_full (tmem, ix))) - { - thread_memory_swap_magazines (tmem, ix); -@@ -1186,7 +1186,7 @@ - slice = *(gpointer*) (current + next_offset); - if (G_UNLIKELY (allocator->config.debug_blocks) && - !smc_notify_free (current, mem_size)) -- abort(); -+ g_abort(); - if (G_UNLIKELY (g_mem_gc_friendly)) - memset (current, 0, chunk_size); - slab_allocator_free_chunk (chunk_size, current); -@@ -1200,7 +1200,7 @@ - slice = *(gpointer*) (current + next_offset); - if (G_UNLIKELY (allocator->config.debug_blocks) && - !smc_notify_free (current, mem_size)) -- abort(); -+ g_abort(); - if (G_UNLIKELY (g_mem_gc_friendly)) - memset (current, 0, mem_size); - g_free (current); -@@ -1436,7 +1436,7 @@ - vfprintf (stderr, format, args); - va_end (args); - fputs ("\n", stderr); -- abort(); -+ g_abort(); - _exit (1); - } - -diff -Naur glib-2.46.0-orig/glib/gtester.c glib-2.46.0/glib/gtester.c ---- glib-2.46.0-orig/glib/gtester.c 2014-12-20 00:49:48.000000000 +0300 -+++ glib-2.46.0/glib/gtester.c 2015-09-22 09:08:59.420314800 +0300 -@@ -94,7 +94,7 @@ - terminate (void) - { - kill (getpid(), SIGTERM); -- abort(); -+ g_abort(); - } - - static void -diff -Naur glib-2.46.0-orig/glib/gtestutils.c glib-2.46.0/glib/gtestutils.c ---- glib-2.46.0-orig/glib/gtestutils.c 2015-09-01 06:34:13.000000000 +0300 -+++ glib-2.46.0/glib/gtestutils.c 2015-09-22 09:08:59.576297800 +0300 -@@ -846,7 +846,7 @@ - { - if (test_tap_log) - g_print ("Bail out!\n"); -- abort(); -+ g_abort(); - } - if (result == G_TEST_RUN_SKIPPED) - test_skipped_count++; -@@ -2426,7 +2426,7 @@ - _exit (1); - } - else -- abort (); -+ g_abort (); - } - - void -@@ -2451,7 +2451,7 @@ - if (test_in_subprocess) - _exit (1); - else -- abort (); -+ g_abort (); - } - - void -diff -Naur glib-2.46.0-orig/glib/gthread-posix.c glib-2.46.0/glib/gthread-posix.c ---- glib-2.46.0-orig/glib/gthread-posix.c 2015-08-19 06:35:30.000000000 +0300 -+++ glib-2.46.0/glib/gthread-posix.c 2015-09-22 09:08:59.560699500 +0300 -@@ -46,6 +46,7 @@ - #include "gmessages.h" - #include "gstrfuncs.h" - #include "gmain.h" -+#include "gutils.h" - - #include - #include -@@ -77,7 +78,7 @@ - { - fprintf (stderr, "GLib (gthread-posix.c): Unexpected error from C library during '%s': %s. Aborting.\n", - function, strerror (status)); -- abort (); -+ g_abort (); - } - - /* {{{1 GMutex */ -diff -Naur glib-2.46.0-orig/glib/gthread-win32.c glib-2.46.0/glib/gthread-win32.c ---- glib-2.46.0-orig/glib/gthread-win32.c 2014-12-20 00:49:48.000000000 +0300 -+++ glib-2.46.0/glib/gthread-win32.c 2015-09-22 09:08:59.467109700 +0300 -@@ -58,7 +58,7 @@ - { - fprintf (stderr, "GLib (gthread-win32.c): Unexpected error from C library during '%s': %s. Aborting.\n", - strerror (status), function); -- abort (); -+ g_abort (); - } - - /* Starting with Vista and Windows 2008, we have access to the -diff -Naur glib-2.46.0-orig/glib/gutils.c glib-2.46.0/glib/gutils.c ---- glib-2.46.0-orig/glib/gutils.c 2015-08-28 21:15:54.000000000 +0300 -+++ glib-2.46.0/glib/gutils.c 2015-09-22 09:08:59.498306300 +0300 -@@ -2375,3 +2375,15 @@ - return FALSE; - #endif - } -+ -+/* Crashes the program. */ -+void -+g_abort (void) -+{ -+#ifdef G_OS_WIN32 -+ DebugBreak (); -+ ExitProcess (127); -+#else -+ abort (); -+#endif -+} -diff -Naur glib-2.46.0-orig/glib/gutils.h glib-2.46.0/glib/gutils.h ---- glib-2.46.0-orig/glib/gutils.h 2015-08-21 03:20:48.000000000 +0300 -+++ glib-2.46.0/glib/gutils.h 2015-09-22 09:08:59.529502900 +0300 -@@ -228,6 +228,9 @@ - GLIB_DEPRECATED_FOR(g_format_size) - gchar *g_format_size_for_display (goffset size); - -+GLIB_AVAILABLE_IN_2_30 -+void g_abort (void); -+ - #ifndef G_DISABLE_DEPRECATED - /** - * GVoidFunc: diff --git a/glib2/mingw-w64/0024-return-actually-written-data-in-printf.all.patch b/glib2/mingw-w64/0024-return-actually-written-data-in-printf.all.patch deleted file mode 100644 index 478b2be2..00000000 --- a/glib2/mingw-w64/0024-return-actually-written-data-in-printf.all.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff -Naur glib-2.46.0-orig/glib/gnulib/printf.c glib-2.46.0/glib/gnulib/printf.c ---- glib-2.46.0-orig/glib/gnulib/printf.c 2014-12-20 00:49:48.000000000 +0300 -+++ glib-2.46.0/glib/gnulib/printf.c 2015-09-22 09:09:03.834633700 +0300 -@@ -88,16 +88,16 @@ - int _g_gnulib_vfprintf (FILE *file, char const *format, va_list args) - { - char *result; -- size_t length; -+ size_t length, rlength; - - result = vasnprintf (NULL, &length, format, args); - if (result == NULL) - return -1; - -- fwrite (result, 1, length, file); -+ rlength = fwrite (result, 1, length, file); - free (result); - -- return length; -+ return rlength; - } - - int _g_gnulib_vsprintf (char *string, char const *format, va_list args) diff --git a/glib2/mingw-w64/0027-no_sys_if_nametoindex.patch b/glib2/mingw-w64/0027-no_sys_if_nametoindex.patch deleted file mode 100644 index 45694979..00000000 --- a/glib2/mingw-w64/0027-no_sys_if_nametoindex.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff -Naur glib-2.46.0-orig/gio/gsocket.c glib-2.46.0/gio/gsocket.c ---- glib-2.46.0-orig/gio/gsocket.c 2015-08-31 16:08:34.000000000 +0300 -+++ glib-2.46.0/gio/gsocket.c 2015-09-22 09:09:04.614548700 +0300 -@@ -1951,7 +1951,7 @@ - - #if !defined(HAVE_IF_NAMETOINDEX) && defined(G_OS_WIN32) - static guint --if_nametoindex (const gchar *iface) -+w32_if_nametoindex (const gchar *iface) - { - PIP_ADAPTER_ADDRESSES addresses = NULL, p; - gulong addresses_len = 0; -@@ -2004,6 +2004,7 @@ - } - - #define HAVE_IF_NAMETOINDEX 1 -+#define if_nametoindex w32_if_nametoindex - #endif - - static gboolean diff --git a/glib2/mingw-w64/0028-inode_directory.patch b/glib2/mingw-w64/0028-inode_directory.patch deleted file mode 100644 index fdb8048b..00000000 --- a/glib2/mingw-w64/0028-inode_directory.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Naur glib-2.46.0-orig/gio/glocalfileinfo.c glib-2.46.0/gio/glocalfileinfo.c ---- glib-2.46.0-orig/gio/glocalfileinfo.c 2015-08-21 08:00:49.000000000 +0300 -+++ glib-2.46.0/gio/glocalfileinfo.c 2015-09-22 09:09:05.410062000 +0300 -@@ -1232,7 +1232,7 @@ - (symlink_broken || (flags & G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS))) - return g_content_type_from_mime_type ("inode/symlink"); - else if (statbuf != NULL && S_ISDIR(statbuf->st_mode)) -- return g_content_type_from_mime_type ("inode/directory"); -+ return g_strdup ("inode/directory"); - #ifndef G_OS_WIN32 - else if (statbuf != NULL && S_ISCHR(statbuf->st_mode)) - return g_content_type_from_mime_type ("inode/chardevice"); diff --git a/glib2/mingw-w64/PKGBUILD b/glib2/mingw-w64/PKGBUILD index e90f2316..04ce7d56 100644 --- a/glib2/mingw-w64/PKGBUILD +++ b/glib2/mingw-w64/PKGBUILD @@ -1,81 +1,63 @@ +# Maintainer: drakkan # Contributor: Filip Brcic # Contributor: ant32 # Contributor: Renato Silva -# Contributor: Martchus - pkgname=mingw-w64-glib2 -pkgver=2.48.2 +pkgver=2.58.0 pkgrel=1 +_commit=f0b57dd7a80425264e318f85c331a039a3cddd87 # tags/2.58.0 arch=(any) -pkgdesc="Common C routines used by GTK+ and other libs (mingw-w64)" -depends=(mingw-w64-gettext mingw-w64-zlib mingw-w64-libffi mingw-w64-pcre mingw-w64-freetype2) -makedepends=(mingw-w64-configure python) -license=("LGPL") +pkgdesc="Low level core library (mingw-w64)" +depends=(mingw-w64-libffi mingw-w64-pcre mingw-w64-gettext mingw-w64-zlib) +makedepends=(mingw-w64-meson git) +license=("LGPL2.1") options=(!strip !buildflags staticlibs !emptydirs) -url="http://www.gtk.org/" -source=("http://ftp.gnome.org/pub/GNOME/sources/glib/${pkgver%.*}/glib-$pkgver.tar.xz" - "0001-Use-CreateFile-on-Win32-to-make-sure-g_unlink-always.patch" - "0003-g_abort.all.patch" - "0004-glib-prefer-constructors-over-DllMain.patch" - "0027-no_sys_if_nametoindex.patch" - "0028-inode_directory.patch" - "revert-warn-glib-compile-schemas.patch" - "use-pkgconfig-file-for-intl.patch") -sha256sums=('f25e751589cb1a58826eac24fbd4186cda4518af772806b666a3f91f66e6d3f4' - 'ef81e82e15fb3a71bad770be17fe4fea3f4d9cdee238d6caa39807eeea5da3e3' - '1b24cc928f69f73599f83269a7b3eb7bf7efbe114109251e6765053a1e1f4cd6' - '7b099af0c562f397458542482d6d1debe437f220762aa2ed94b2e6c4d43dd8a6' - '5cb481295ff86c2802030984d8b2bf6a3b1dcd5e5fe7b0be68b22d9116305837' - 'f7f06a90156fe0a308412512c359072922f7f0d19dd4bed30d863db18e48940b' - '049240975cd2f1c88fbe7deb28af14d4ec7d2640495f7ca8980d873bb710cc97' - '1991eaa0471ff8d0b3dd3bccccd560ca6cc8c0995c6145b9bc93d5e90755e3f4') +url="https://wiki.gnome.org/Projects/GLib" +source=("git+https://gitlab.gnome.org/GNOME/glib.git#commit=$_commit" + "0001-gsocket-fix-cross-compilation.patch" + "0001-Use-CreateFile-on-Win32-to-make-sure-g_unlink-always.patch" + "glib-formaterror.patch" + "glib-include-time-h-for-localtime_r.patch" + "glib-prefer-constructors-over-DllMain.patch") +sha256sums=('SKIP' + '44c8c6b4ca376177a8c333a00c3485d638f8641967503e15364606d4c4292ff3' + 'afd62a852a0b6aed4ce86eb97297e5080b26055cc878413b89d482c184b826b3' + 'ea529d5cbf8cf7ca66467664a3ead37473a1c009ac973d5694b06cc9d0b23df3' + 'ac567f7a9cad51ab97dba70bcdd6c0c16f93d2451c43fde380e4fdb20b2d4b31' + '8a02502069fa88c667a4fd1599280f927cb1bcf61e9fcd369fec5bdb5440d480') _architectures="i686-w64-mingw32 x86_64-w64-mingw32" +pkgver() { + cd glib + git describe --tags | sed 's/-/+/g' +} + prepare() { - cd glib-$pkgver - patch -Np1 -i .."/0001-Use-CreateFile-on-Win32-to-make-sure-g_unlink-always.patch" - patch -Np1 -i .."/0003-g_abort.all.patch" - patch -Np1 -i ../0004-glib-prefer-constructors-over-DllMain.patch - patch -Np1 -i ../"0027-no_sys_if_nametoindex.patch" - patch -Np1 -i ../"0028-inode_directory.patch" - patch -Rp1 -i ../revert-warn-glib-compile-schemas.patch - # Use pkgconfig file for intl dependency, otherwise transitive dependency - # iconv is not added correctly when using pkgconfig --static flag - patch -p0 -i ../use-pkgconfig-file-for-intl.patch - NOCONFIGURE=1 ./autogen.sh + cd glib + patch -Np1 -i ../0001-Use-CreateFile-on-Win32-to-make-sure-g_unlink-always.patch + patch -Np1 -i ../glib-prefer-constructors-over-DllMain.patch + patch -Np1 -i ../glib-formaterror.patch + patch -Np1 -i ../glib-include-time-h-for-localtime_r.patch + patch -Np1 -i ../0001-gsocket-fix-cross-compilation.patch } build() { - cd glib-$pkgver - conf="--with-pcre=system --with-threads=win32 --disable-fam" for _arch in ${_architectures}; do - mkdir -p build-${_arch}-static && pushd build-${_arch}-static - ${_arch}-configure \ - --disable-shared $conf - make - popd - - mkdir -p build-${_arch}-shared && pushd build-${_arch}-shared - ${_arch}-configure \ - --disable-static $conf - make - popd + mkdir -p "${srcdir}/glib/build-${_arch}" + cd "${srcdir}/glib/build-${_arch}" + ${_arch}-meson \ + --default-library both .. + ninja done + } package() { for _arch in ${_architectures}; do - cd "$srcdir/glib-$pkgver/build-${_arch}-shared" - make DESTDIR="$pkgdir" install - make -C "$srcdir/glib-$pkgver/build-${_arch}-static" DESTDIR="$pkgdir/static" install - mv "$pkgdir/static/usr/${_arch}/lib/"*.a "$pkgdir/usr/${_arch}/lib/" - find "$pkgdir/usr/${_arch}" -name '*.exe' -exec ${_arch}-strip {} \; - find "$pkgdir/usr/${_arch}" -name '*.dll' -exec ${_arch}-strip --strip-unneeded {} \; - find "$pkgdir/usr/${_arch}" -name '*.a' -o -name '*.dll' | xargs ${_arch}-strip -g - rm "$pkgdir/usr/${_arch}/bin/"{glib-{gettextize,mkenums},gdbus-codegen} - rm -r "$pkgdir/usr/${_arch}/lib/charset.alias" - rm -r "$pkgdir/static" + DESTDIR="${pkgdir}" ninja -C "${srcdir}/glib/build-${_arch}" install done } + +# vim: ts=2 sw=2 et: diff --git a/glib2/mingw-w64/glib-formaterror.patch b/glib2/mingw-w64/glib-formaterror.patch new file mode 100644 index 00000000..53590667 --- /dev/null +++ b/glib2/mingw-w64/glib-formaterror.patch @@ -0,0 +1,13 @@ +--- glib-2.57.2/configure.ac 2018-07-31 20:31:07.000000000 +0200 ++++ glib-2.57.2/configure.ac 2018-08-02 19:09:02.569368144 +0200 +@@ -3398,8 +3398,8 @@ + -Wno-bad-function-cast \ + -Werror=declaration-after-statement \ + -Werror=missing-prototypes -Werror=implicit-function-declaration \ +- -Werror=pointer-arith -Werror=init-self -Werror=format-security \ +- -Werror=format=2 -Werror=missing-include-dirs]) ++ -Werror=pointer-arith -Werror=init-self -Wno-error=format-security \ ++ -Wno-error=format=2 -Werror=missing-include-dirs]) + ]) + AC_SUBST(GLIB_WARN_CFLAGS) + diff --git a/glib2/mingw-w64/glib-include-time-h-for-localtime_r.patch b/glib2/mingw-w64/glib-include-time-h-for-localtime_r.patch new file mode 100644 index 00000000..c23d26a0 --- /dev/null +++ b/glib2/mingw-w64/glib-include-time-h-for-localtime_r.patch @@ -0,0 +1,10 @@ +--- glib-2.43.2/glib/gdate.c.orig 2015-01-01 23:50:04.203252143 +0100 ++++ glib-2.43.2/glib/gdate.c 2015-01-01 23:50:28.329647373 +0100 +@@ -41,6 +41,7 @@ + + #ifdef G_OS_WIN32 + #include ++#include + #endif + + #include "gdate.h" diff --git a/glib2/mingw-w64/glib-prefer-constructors-over-DllMain.patch b/glib2/mingw-w64/glib-prefer-constructors-over-DllMain.patch new file mode 100644 index 00000000..2edec2b1 --- /dev/null +++ b/glib2/mingw-w64/glib-prefer-constructors-over-DllMain.patch @@ -0,0 +1,76 @@ +From bc90511c1eb333e26e0bc0eaee62375d0e788db6 Mon Sep 17 00:00:00 2001 +From: Erik van Pienbroek +Date: Tue, 16 Apr 2013 11:42:11 +0200 +Subject: [PATCH] win32: Prefer the use of constructors over DllMain + +This prevents having to depend on DllMain in static libraries + +Constructors are available in both the GCC build (GCC 2.7 and later) +and the MSVC build (MSVC 2008 and later using _Pragma, earlier +versions using #pragma) +--- + glib/glib-init.c | 22 ++++++++++++++-------- + 1 file changed, 14 insertions(+), 8 deletions(-) + +diff --git a/glib/glib-init.c b/glib/glib-init.c +--- a/glib/glib-init.c 2018-08-02 16:09:46.277047195 +0200 ++++ b/glib/glib-init.c 2018-08-02 16:10:23.617387056 +0200 +@@ -272,12 +272,14 @@ + + #if defined (G_OS_WIN32) + ++HMODULE glib_dll = NULL; ++ ++#if defined (DLL_EXPORT) ++ + BOOL WINAPI DllMain (HINSTANCE hinstDLL, + DWORD fdwReason, + LPVOID lpvReserved); + +-HMODULE glib_dll; +- + BOOL WINAPI + DllMain (HINSTANCE hinstDLL, + DWORD fdwReason, +@@ -287,13 +289,6 @@ + { + case DLL_PROCESS_ATTACH: + glib_dll = hinstDLL; +- g_clock_win32_init (); +-#ifdef THREADS_WIN32 +- g_thread_win32_init (); +-#endif +- glib_init (); +- /* must go after glib_init */ +- g_console_win32_init (); + break; + + case DLL_THREAD_DETACH: +@@ -317,7 +312,10 @@ + return TRUE; + } + +-#elif defined (G_HAS_CONSTRUCTORS) ++#endif /* defined (DLL_EXPORT) */ ++#endif /* defined (G_OS_WIN32) */ ++ ++#if defined (G_HAS_CONSTRUCTORS) + + #ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA + #pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(glib_init_ctor) +@@ -327,7 +325,15 @@ + static void + glib_init_ctor (void) + { ++#if defined (G_OS_WIN32) ++ g_clock_win32_init (); ++#ifdef THREADS_WIN32 ++ g_thread_win32_init (); ++#endif /* defined (THREADS_WIN32) */ ++#endif /* defined (G_OS_WIN32) */ + glib_init (); ++ /* must go after glib_init */ ++ g_console_win32_init (); + } + + #else diff --git a/glib2/mingw-w64/revert-warn-glib-compile-schemas.patch b/glib2/mingw-w64/revert-warn-glib-compile-schemas.patch deleted file mode 100644 index 75b05103..00000000 --- a/glib2/mingw-w64/revert-warn-glib-compile-schemas.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 6560b37450cd19c4a7c7b690e279fe97b7bfdcaa Mon Sep 17 00:00:00 2001 -From: Ryan Lortie -Date: Thu, 12 Apr 2012 23:55:34 +0000 -Subject: glib-compile-schemas: warn about bad dconf paths - -For quite some time the recommended usage of GSettings and dconf has -been to use paths like /org/gnome/example/. Use of /apps/ has spilled -over from GConf and is continuing to make its way into a number of -applications as they port. - -glib-compile-schemas will now warn about these types of paths being -used. This generates a lot of noise, but hopefully it will reduce the -number of ported applications making this mistake. ---- -diff --git a/gio/glib-compile-schemas.c b/gio/glib-compile-schemas.c -index cf02389..27d0181 100644 ---- a/gio/glib-compile-schemas.c -+++ b/gio/glib-compile-schemas.c -@@ -1204,6 +1204,12 @@ parse_state_start_schema (ParseState *state, - return; - } - -+ if (path && (g_str_has_prefix (path, "/apps/") || -+ g_str_has_prefix (path, "/desktop/") || -+ g_str_has_prefix (path, "/system/"))) -+ g_printerr ("warning: Schema '%s' has path '%s'. Paths starting with " -+ "'/apps/', '/desktop/' or '/system/' are deprecated.\n", id, path); -+ - state->schema_state = schema_state_new (path, gettext_domain, - extends, extends_name, list_of); - --- -cgit v0.9.0.2 diff --git a/glib2/mingw-w64/use-pkgconfig-file-for-intl.patch b/glib2/mingw-w64/use-pkgconfig-file-for-intl.patch deleted file mode 100644 index 7ef25451..00000000 --- a/glib2/mingw-w64/use-pkgconfig-file-for-intl.patch +++ /dev/null @@ -1,23 +0,0 @@ ---- glib-2.0.pc.in.orig 2015-03-23 04:22:18.000000000 +0100 -+++ glib-2.0.pc.in 2016-08-12 21:31:44.654422794 +0200 -@@ -10,7 +10,8 @@ - Name: GLib - Description: C Utility Library - Version: @VERSION@ --Requires.private: @PCRE_REQUIRES@ -+Requires: @INTL_REQUIRES@ -+Requires.private: @PCRE_REQUIRES@ @INTL_REQUIRES@ - Libs: -L${libdir} -lglib-2.0 @INTLLIBS@ - Libs.private: @G_THREAD_LIBS@ @G_LIBS_EXTRA@ @PCRE_LIBS@ @INTLLIBS@ @ICONV_LIBS@ @CARBON_LIBS@ @COCOA_LIBS@ - Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib-2.0/include @GLIB_EXTRA_CFLAGS@ ---- configure.ac.orig 2016-05-10 11:05:39.000000000 +0200 -+++ configure.ac 2016-08-12 21:39:53.980926453 +0200 -@@ -472,6 +472,8 @@ - fi - - LIBS="$INTLLIBS $LIBS" -+INTL_REQUIRES=intl -+AC_SUBST(INTL_REQUIRES) - - GETTEXT_PACKAGE=glib20 - AC_SUBST(GETTEXT_PACKAGE)