* Updating glib2.0
@ 2020-05-22 23:18 Ken Brown
2020-05-23 18:08 ` Ken Brown
0 siblings, 1 reply; 5+ messages in thread
From: Ken Brown @ 2020-05-22 23:18 UTC (permalink / raw)
To: cygwin-apps
I've been planning to adopt gimp and some related build dependencies. My reason
is that I use gimp and would like to see it kept up to date.
I thought I had all the prerequisites I needed. But when I built gimp, I
discovered that it used two functions, g_set_weak_pointer and
g_date_time_new_from_iso8601, that were introduced in glib-2.56.
[gimp's configure.ac says that it only requires glib 2.54.2, but this seems to
be wrong. Cygwin's glib is at 2.54.3. Fedora's is at 2.64.3, which is the
latest upstream release.]
I'd appreciate some advice about how to proceed. I'm not interested in adopting
all of GNOME, and it probably doesn't make sense for different components of
GNOME to be adopted by different people.
A short-term solution (from my personal POV) would be for me to do a
non-maintainer update of glib to 2.56, assuming that's doable without messing up
other GNOME components.
A better solution (again from my personal POV) would be for someone to adopt
GNOME and update it to its latest release.
Ken
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Updating glib2.0
2020-05-22 23:18 Updating glib2.0 Ken Brown
@ 2020-05-23 18:08 ` Ken Brown
2020-05-27 14:15 ` Ken Brown
0 siblings, 1 reply; 5+ messages in thread
From: Ken Brown @ 2020-05-23 18:08 UTC (permalink / raw)
To: cygwin-apps
[-- Attachment #1: Type: text/plain, Size: 1338 bytes --]
On 5/22/2020 7:18 PM, Ken Brown via Cygwin-apps wrote:
> I've been planning to adopt gimp and some related build dependencies. My reason
> is that I use gimp and would like to see it kept up to date.
>
> I thought I had all the prerequisites I needed. But when I built gimp, I
> discovered that it used two functions, g_set_weak_pointer and
> g_date_time_new_from_iso8601, that were introduced in glib-2.56.
>
> [gimp's configure.ac says that it only requires glib 2.54.2, but this seems to
> be wrong. Cygwin's glib is at 2.54.3. Fedora's is at 2.64.3, which is the
> latest upstream release.]
>
> I'd appreciate some advice about how to proceed. I'm not interested in adopting
> all of GNOME, and it probably doesn't make sense for different components of
> GNOME to be adopted by different people.
>
> A short-term solution (from my personal POV) would be for me to do a
> non-maintainer update of glib to 2.56, assuming that's doable without messing up
> other GNOME components.
>
> A better solution (again from my personal POV) would be for someone to adopt
> GNOME and update it to its latest release.
To focus the discussion a little better, I've built and installed
glib2.0-2.56.4. My cygport file and patches are attached. I can now build
gimp-2.10.18, and it seems to run fine in limited testing.
Ken
[-- Attachment #2: 2.34.3-m4macros.patch --]
[-- Type: text/plain, Size: 627 bytes --]
Fix for -Werror=nested-externs
--- origsrc/glib-2.34.3/m4macros/glib-gettext.m4 2012-11-20 08:27:12.000000000 -0600
+++ src/glib-2.34.3/m4macros/glib-gettext.m4 2013-04-15 02:04:25.707401500 -0500
@@ -222,8 +222,8 @@ msgstr ""
AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
[test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
- AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
- return _nl_msg_cat_cntr],
+ AC_TRY_LINK([extern int _nl_msg_cat_cntr;],
+ [return _nl_msg_cat_cntr],
[CATOBJEXT=.gmo
DATADIRNAME=share],
[case $host in
[-- Attachment #3: 2.36.3-not-win32.patch --]
[-- Type: text/plain, Size: 12021 bytes --]
--- origsrc/glib-2.36.3/configure.ac 2013-08-04 20:21:20.808722600 -0500
+++ src/glib-2.36.3/configure.ac 2013-08-04 18:30:21.852852200 -0500
@@ -1880,7 +1880,7 @@ dnl ************************************
AC_MSG_CHECKING(for platform-dependent source)
case "$host" in
- *-*-cygwin*|*-*-mingw*)
+ *-*-mingw*)
PLATFORMDEP=gwin32.lo
;;
*)
@@ -2594,9 +2594,6 @@ dnl *** Win32 API libs ***
dnl **********************
case $host in
- *-*-cygwin*)
- G_LIBS_EXTRA="-luser32 -lkernel32"
- ;;
*-*-mingw*)
G_LIBS_EXTRA="-lws2_32 -lole32 -lwinmm -lshlwapi"
;;
--- origsrc/glib-2.36.3/docs/reference/gio/Makefile.am 2013-08-04 20:21:20.849725000 -0500
+++ src/glib-2.36.3/docs/reference/gio/Makefile.am 2013-08-04 18:11:14.000000000 -0500
@@ -77,6 +77,8 @@ IGNORE_HFILES = \
gunixvolume.h \
gunixvolumemonitor.h \
gwin32appinfo.h \
+ gwin32inputstream.h \
+ gwin32outputstream.h \
gwin32mount.h \
gwin32resolver.h \
gwin32volumemonitor.h
--- origsrc/glib-2.36.3/gio/giomodule-priv.h 2013-08-04 20:21:20.877726600 -0500
+++ src/glib-2.36.3/gio/giomodule-priv.h 2013-08-04 18:11:14.000000000 -0500
@@ -39,7 +39,7 @@ GType _g_io_module_get_default_type (
const gchar *envvar,
guint is_supported_offset);
-#ifdef G_PLATFORM_WIN32
+#ifdef G_OS_WIN32
void *_g_io_win32_get_module (void);
#endif
--- origsrc/glib-2.36.3/gio/giomodule.c 2013-08-04 20:21:20.886727100 -0500
+++ src/glib-2.36.3/gio/giomodule.c 2013-08-04 18:11:14.000000000 -0500
@@ -894,7 +894,7 @@ extern GType g_network_monitor_base_get_
extern GType _g_network_monitor_netlink_get_type (void);
#endif
-#ifdef G_PLATFORM_WIN32
+#ifdef G_OS_WIN32
#include <windows.h>
--- origsrc/glib-2.36.3/gio/tests/live-g-file.c 2013-08-04 20:21:20.898727800 -0500
+++ src/glib-2.36.3/gio/tests/live-g-file.c 2013-08-04 18:11:14.000000000 -0500
@@ -1282,7 +1282,7 @@ main (int argc, char *argv[])
write_test = TRUE;
only_create_struct = FALSE;
target_path = DEFAULT_TEST_DIR;
-#ifdef G_PLATFORM_WIN32
+#ifdef G_OS_WIN32
posix_compat = FALSE;
#else
posix_compat = TRUE;
--- origsrc/glib-2.36.3/glib/gatomic.c 2013-08-04 20:21:20.907728300 -0500
+++ src/glib-2.36.3/glib/gatomic.c 2013-08-04 18:11:14.000000000 -0500
@@ -464,7 +464,7 @@ gsize
return g_atomic_pointer_xor ((volatile gpointer *) atomic, val);
}
-#elif defined (G_PLATFORM_WIN32)
+#elif defined (G_OS_WIN32)
#include <windows.h>
#if !defined(_M_AMD64) && !defined (_M_IA64) && !defined(_M_X64) && !(defined _MSC_VER && _MSC_VER <= 1200)
--- origsrc/glib-2.36.3/glib/gcharset.c 2013-08-04 20:21:20.925729300 -0500
+++ src/glib-2.36.3/glib/gcharset.c 2013-08-04 18:11:14.000000000 -0500
@@ -496,7 +496,7 @@ guess_category_value (const gchar *categ
if ((retval != NULL) && (retval[0] != '\0'))
return retval;
-#ifdef G_PLATFORM_WIN32
+#ifdef G_OS_WIN32
/* g_win32_getlocale() first checks for LC_ALL, LC_MESSAGES and
* LANG, which we already did above. Oh well. The main point of
* calling g_win32_getlocale() is to get the thread's locale as used
--- origsrc/glib-2.36.3/glib/gconvert.c 2013-08-04 20:21:20.933729800 -0500
+++ src/glib-2.36.3/glib/gconvert.c 2013-08-04 18:11:14.000000000 -0500
@@ -33,9 +33,6 @@
#ifdef G_OS_WIN32
#include "win_iconv.c"
-#endif
-
-#ifdef G_PLATFORM_WIN32
#define STRICT
#include <windows.h>
#undef STRICT
@@ -1258,7 +1255,7 @@ g_locale_from_utf8 (const gchar *utf8str
charset, "UTF-8", bytes_read, bytes_written, error);
}
-#ifndef G_PLATFORM_WIN32
+#ifndef G_OS_WIN32
typedef struct _GFilenameCharsetCache GFilenameCharsetCache;
@@ -1374,7 +1371,7 @@ g_get_filename_charsets (const gchar ***
return cache->is_utf8;
}
-#else /* G_PLATFORM_WIN32 */
+#else /* G_OS_WIN32 */
gboolean
g_get_filename_charsets (const gchar ***filename_charsets)
@@ -1403,7 +1400,7 @@ g_get_filename_charsets (const gchar ***
#endif
}
-#endif /* G_PLATFORM_WIN32 */
+#endif /* G_OS_WIN32 */
static gboolean
get_filename_charset (const gchar **filename_charset)
--- origsrc/glib-2.36.3/glib/gfileutils.c 2013-08-04 20:21:20.942730300 -0500
+++ src/glib-2.36.3/glib/gfileutils.c 2013-08-04 18:11:14.000000000 -0500
@@ -2153,7 +2153,7 @@ g_path_skip_root (const gchar *file_name
{
g_return_val_if_fail (file_name != NULL, NULL);
-#ifdef G_PLATFORM_WIN32
+#ifdef G_OS_WIN32
/* Skip \\server\share or //server/share */
if (G_IS_DIR_SEPARATOR (file_name[0]) &&
G_IS_DIR_SEPARATOR (file_name[1]) &&
@@ -2163,7 +2163,6 @@ g_path_skip_root (const gchar *file_name
gchar *p;
p = strchr (file_name + 2, G_DIR_SEPARATOR);
-#ifdef G_OS_WIN32
{
gchar *q;
@@ -2171,7 +2170,6 @@ g_path_skip_root (const gchar *file_name
if (p == NULL || (q != NULL && q < p))
p = q;
}
-#endif
if (p && p > file_name + 2 && p[1])
{
--- origsrc/glib-2.36.3/glib/glib.h 2013-08-04 20:21:20.949730700 -0500
+++ src/glib-2.36.3/glib/glib.h 2013-08-04 18:11:14.000000000 -0500
@@ -96,7 +96,7 @@
#include <glib/gvariant.h>
#include <glib/gversion.h>
#include <glib/gversionmacros.h>
-#ifdef G_PLATFORM_WIN32
+#ifdef G_OS_WIN32
#include <glib/gwin32.h>
#endif
--- origsrc/glib-2.36.3/glib/gutf8.c 2013-08-04 20:21:20.984732700 -0500
+++ src/glib-2.36.3/glib/gutf8.c 2013-08-04 18:11:14.000000000 -0500
@@ -27,7 +27,7 @@
#endif
#include <string.h>
-#ifdef G_PLATFORM_WIN32
+#ifdef G_OS_WIN32
#include <stdio.h>
#define STRICT
#include <windows.h>
--- origsrc/glib-2.36.3/glib/gutils.c 2013-08-04 20:21:21.015734500 -0500
+++ src/glib-2.36.3/glib/gutils.c 2013-08-04 18:11:14.000000000 -0500
@@ -72,7 +72,7 @@
#include "garray.h"
#include "glibintl.h"
-#ifdef G_PLATFORM_WIN32
+#ifdef G_OS_WIN32
#include "gconvert.h"
#include "gwin32.h"
#endif
@@ -86,16 +86,13 @@
* These are portable utility functions.
*/
-#ifdef G_PLATFORM_WIN32
+#ifdef G_OS_WIN32
# include <windows.h>
# ifndef GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS
# define GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT 2
# define GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS 4
# endif
# include <lmcons.h> /* For UNLEN */
-#endif /* G_PLATFORM_WIN32 */
-
-#ifdef G_OS_WIN32
# include <direct.h>
# include <shlobj.h>
/* older SDK (e.g. msvc 5.0) does not have these*/
@@ -131,7 +128,7 @@
#include <langinfo.h>
#endif
-#ifdef G_PLATFORM_WIN32
+#ifdef G_OS_WIN32
gchar *
_glib_get_dll_directory (void)
--- origsrc/glib-2.36.3/glib/gutils.h 2013-08-04 20:21:21.067737500 -0500
+++ src/glib-2.36.3/glib/gutils.h 2013-08-04 18:11:14.000000000 -0500
@@ -350,7 +350,7 @@ g_bit_storage (gulong number)
* On non-Windows platforms, expands to nothing.
*/
-#ifndef G_PLATFORM_WIN32
+#ifndef G_OS_WIN32
# define G_WIN32_DLLMAIN_FOR_DLL_NAME(static, dll_name)
#else
# define G_WIN32_DLLMAIN_FOR_DLL_NAME(static, dll_name) \
@@ -378,7 +378,7 @@ DllMain (HINSTANCE hinstDLL, \
#endif /* !G_DISABLE_DEPRECATED */
-#endif /* G_PLATFORM_WIN32 */
+#endif /* G_OS_WIN32 */
G_END_DECLS
--- origsrc/glib-2.36.3/glib/gwin32.h 2013-08-04 20:21:21.081738300 -0500
+++ src/glib-2.36.3/glib/gwin32.h 2013-08-04 18:11:14.000000000 -0500
@@ -33,7 +33,7 @@
#include <glib/gtypes.h>
-#ifdef G_PLATFORM_WIN32
+#ifdef G_OS_WIN32
G_BEGIN_DECLS
@@ -41,8 +41,6 @@ G_BEGIN_DECLS
#define MAXPATHLEN 1024
#endif
-#ifdef G_OS_WIN32
-
/*
* To get prototypes for the following POSIXish functions, you have to
* include the indicated non-POSIX headers. The functions are defined
@@ -68,7 +66,6 @@ G_BEGIN_DECLS
GLIB_AVAILABLE_IN_ALL
gint g_win32_ftruncate (gint f,
guint size);
-#endif /* G_OS_WIN32 */
/* The MS setlocale uses locale names of the form "English_United
* States.1252" etc. We want the Unixish standard form "en", "zh_TW"
@@ -112,7 +109,7 @@ gchar* g_win32_locale_filename_
G_END_DECLS
-#endif /* G_PLATFORM_WIN32 */
+#endif /* G_OS_WIN32 */
#ifdef G_OS_WIN32
#ifdef _WIN64
--- origsrc/glib-2.36.3/glib/libcharset/localcharset.c 2013-08-04 20:21:21.095739100 -0500
+++ src/glib-2.36.3/glib/libcharset/localcharset.c 2013-08-04 18:11:14.000000000 -0500
@@ -46,10 +46,6 @@
# include <locale.h>
# endif
# endif
-# ifdef __CYGWIN__
-# define WIN32_LEAN_AND_MEAN
-# include <windows.h>
-# endif
#elif defined WIN32_NATIVE
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
@@ -111,7 +107,7 @@ _g_locale_get_charset_aliases (void)
cp = charset_aliases;
if (cp == NULL)
{
-#if !(defined VMS || defined WIN32_NATIVE || defined __CYGWIN__)
+#if !(defined VMS || defined WIN32_NATIVE)
FILE *fp;
const char *dir;
const char *base = "charset.alias";
@@ -237,7 +233,7 @@ _g_locale_get_charset_aliases (void)
"DECKOREAN" "\0" "EUC-KR" "\0";
# endif
-# if defined WIN32_NATIVE || defined __CYGWIN__
+# if defined WIN32_NATIVE
/* To avoid the troubles of installing a separate file in the same
directory as the DLL and of retrieving the DLL's directory at
runtime, simply inline the aliases here. */
@@ -292,53 +288,6 @@ _g_locale_charset_raw (void)
/* Most systems support nl_langinfo (CODESET) nowadays. */
codeset = nl_langinfo (CODESET);
-# ifdef __CYGWIN__
- /* Cygwin 2006 does not have locales. nl_langinfo (CODESET) always
- returns "US-ASCII". As long as this is not fixed, return the suffix
- of the locale name from the environment variables (if present) or
- the codepage as a number. */
- if (codeset != NULL && strcmp (codeset, "US-ASCII") == 0)
- {
- const char *locale;
- static char buf[2 + 10 + 1];
-
- locale = getenv ("LC_ALL");
- if (locale == NULL || locale[0] == '\0')
- {
- locale = getenv ("LC_CTYPE");
- if (locale == NULL || locale[0] == '\0')
- locale = getenv ("LANG");
- }
- if (locale != NULL && locale[0] != '\0')
- {
- /* If the locale name contains an encoding after the dot, return
- it. */
- const char *dot = strchr (locale, '.');
-
- if (dot != NULL)
- {
- const char *modifier;
-
- dot++;
- /* Look for the possible @... trailer and remove it, if any. */
- modifier = strchr (dot, '@');
- if (modifier == NULL)
- return dot;
- if (modifier - dot < sizeof (buf))
- {
- memcpy (buf, dot, modifier - dot);
- buf [modifier - dot] = '\0';
- return buf;
- }
- }
- }
-
- /* Woe32 has a function returning the locale's codepage as a number. */
- sprintf (buf, "CP%u", GetACP ());
- codeset = buf;
- }
-# endif
-
# else
/* On old systems which lack it, use setlocale or getenv. */
--- origsrc/glib-2.36.3/glib/tests/uri.c 2013-08-04 20:21:21.104739600 -0500
+++ src/glib-2.36.3/glib/tests/uri.c 2013-08-04 18:11:14.000000000 -0500
@@ -56,7 +56,7 @@ to_uri_tests[] = {
{ "c:\\windows", "otherhost", NULL, G_CONVERT_ERROR_NOT_ABSOLUTE_PATH},
#endif
{ "etc", "localhost", NULL, G_CONVERT_ERROR_NOT_ABSOLUTE_PATH},
-#ifndef G_PLATFORM_WIN32
+#ifndef G_OS_WIN32
{ "/etc/\xE5\xE4\xF6", NULL, "file:///etc/%E5%E4%F6" },
{ "/etc/\xC3\xB6\xC3\xA4\xC3\xA5", NULL, "file:///etc/%C3%B6%C3%A4%C3%A5"},
#endif
--- origsrc/glib-2.36.3/tests/Makefile.am 2013-08-04 20:21:21.109739900 -0500
+++ src/glib-2.36.3/tests/Makefile.am 2013-08-04 18:11:14.000000000 -0500
@@ -20,7 +20,9 @@ libadd_libgmodule = $(libgmodule)
libadd_libglib = $(libglib)
if PLATFORM_WIN32
no_undefined = -no-undefined
+endif
+if OS_WIN32
module_test_exp = module-test.exp
module-test.exp: module-test.o
--- origsrc/glib-2.36.3/tests/testglib.c 2013-08-04 20:21:21.118740400 -0500
+++ src/glib-2.36.3/tests/testglib.c 2013-08-04 18:11:14.000000000 -0500
@@ -776,7 +776,7 @@ test_info (void)
if (g_test_verbose())
{
-#ifdef G_PLATFORM_WIN32
+#ifdef G_OS_WIN32
g_printerr ("current locale: %s\n", g_win32_getlocale ());
g_printerr ("found more.com as %s\n", g_find_program_in_path ("more.com"));
[-- Attachment #4: 2.36.3-visibility.patch --]
[-- Type: text/plain, Size: 549 bytes --]
--- origsrc/glib-2.36.3/configure.ac 2013-08-04 18:11:14.140206800 -0500
+++ src/glib-2.36.3/configure.ac 2013-08-04 18:30:21.852852200 -0500
@@ -3584,7 +3584,7 @@ dnl visibility attributes for symbol exp
dnl
GLIB_HIDDEN_VISIBILITY_CFLAGS=""
case "$host" in
- *-*-mingw*)
+ *-*-cygwin*|*-*-mingw*)
dnl on mingw32 we do -fvisibility=hidden and __declspec(dllexport)
AC_DEFINE([_GLIB_EXTERN], [__attribute__((visibility("default"))) __declspec(dllexport) extern],
[defines how to decorate public symbols while building])
[-- Attachment #5: 2.36.4-gspawn-cygwin.patch --]
[-- Type: text/plain, Size: 359 bytes --]
--- 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"))) {
[-- Attachment #6: 2.36.4-gutf8-cygwin.patch --]
[-- Type: text/plain, Size: 802 bytes --]
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
[-- Attachment #7: 2.38.2-gconvert-cygwin.patch --]
[-- Type: text/plain, Size: 471 bytes --]
--- origsrc/glib-2.38.2/glib/gconvert.c 2014-04-02 01:48:25.505447200 -0500
+++ src/glib-2.38.2/glib/gconvert.c 2014-04-02 02:22:47.959345500 -0500
@@ -1583,7 +1583,9 @@ g_filename_from_uri (const gchar *uri,
return NULL;
}
- if (has_case_prefix (path_part, "///"))
+ if (has_case_prefix (path_part, "////"))
+ path_part += 1;
+ else if (has_case_prefix (path_part, "///"))
path_part += 2;
else if (has_case_prefix (path_part, "//"))
{
[-- Attachment #8: 2.42.1-goption-cygwin.patch --]
[-- Type: text/plain, Size: 1030 bytes --]
--- origsrc/glib-2.42.1/glib/goption.c 2014-11-09 15:54:26.000000000 -0600
+++ src/glib-2.42.1/glib/goption.c 2015-01-01 19:39:40.385456500 -0600
@@ -1740,7 +1740,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.42.1/glib/tests/option-argv0.c 2014-06-28 12:02:43.000000000 -0500
+++ src/glib-2.42.1/glib/tests/option-argv0.c 2015-01-01 19:39:34.848253300 -0600
@@ -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)
{
@@ -56,7 +56,7 @@ main (int argc,
{
g_test_init (&argc, &argv, "no_g_set_prgname", NULL);
-#if defined __linux || defined __OpenBSD__
+#if defined __linux || defined __OpenBSD__ || defined __CYGWIN__
g_test_add_func ("/option/argv0", test_platform_argv0);
#endif
[-- Attachment #9: 2.56.4-dont-print-null-strings.patch --]
[-- Type: text/plain, Size: 1779 bytes --]
--- origsrc/glib-2.56.4/gio/gdbusauth.c 2018-12-18 10:03:26.000000000 -0500
+++ src/glib-2.56.4/gio/gdbusauth.c 2020-05-23 08:58:55.003593200 -0400
@@ -1299,9 +1299,9 @@ _g_dbus_auth_run_server (GDBusAuth
&line_length,
cancellable,
error);
- debug_print ("SERVER: WaitingForBegin, read '%s'", line);
if (line == NULL)
goto out;
+ debug_print ("SERVER: WaitingForBegin, read '%s'", line);
if (g_strcmp0 (line, "BEGIN") == 0)
{
/* YAY, done! */
--- origsrc/glib-2.56.4/gio/gdbusmessage.c 2018-12-18 10:03:26.000000000 -0500
+++ src/glib-2.56.4/gio/gdbusmessage.c 2020-05-23 09:18:23.976547300 -0400
@@ -2727,7 +2727,6 @@ g_dbus_message_to_blob (GDBusMessage
if (message->body != NULL)
{
gchar *tupled_signature_str;
- tupled_signature_str = g_strdup_printf ("(%s)", signature_str);
if (signature == NULL)
{
g_set_error (error,
@@ -2735,10 +2734,10 @@ g_dbus_message_to_blob (GDBusMessage
G_IO_ERROR_INVALID_ARGUMENT,
_("Message body has signature “%s” but there is no signature header"),
signature_str);
- g_free (tupled_signature_str);
goto out;
}
- else if (g_strcmp0 (tupled_signature_str, g_variant_get_type_string (message->body)) != 0)
+ tupled_signature_str = g_strdup_printf ("(%s)", signature_str);
+ if (g_strcmp0 (tupled_signature_str, g_variant_get_type_string (message->body)) != 0)
{
g_set_error (error,
G_IO_ERROR,
[-- Attachment #10: 2.56-gmodule-cygwin.patch --]
[-- Type: text/plain, Size: 3397 bytes --]
--- origsrc/glib-2.56.4/gmodule/gmodule-win32.c 2018-08-15 12:22:08.000000000 -0400
+++ src/glib-2.56.4/gmodule/gmodule-win32.c 2020-05-23 08:29:18.332616700 -0400
@@ -37,7 +37,20 @@
#ifdef G_WITH_CYGWIN
#include <sys/cygwin.h>
-#endif
+#include <dlfcn.h>
+
+static gchar*
+fetch_dlerror (gboolean replace_null)
+{
+ gchar *msg = dlerror ();
+
+ if (!msg && replace_null)
+ return "unknown dl-error";
+
+ return msg;
+}
+
+#else
static void
set_error (const gchar *format,
@@ -62,22 +75,26 @@ set_error (const gchar *format,
g_free (error);
}
+#endif /* G_WITH_CYGWIN */
+
/* --- functions --- */
static gpointer
_g_module_open (const gchar *file_name,
gboolean bind_lazy,
gboolean bind_local)
{
- HINSTANCE handle;
- wchar_t *wfilename;
DWORD old_mode;
BOOL success;
#ifdef G_WITH_CYGWIN
- gchar tmp[MAX_PATH];
+ gpointer handle;
- cygwin_conv_to_win32_path(file_name, tmp);
- file_name = tmp;
-#endif
+ handle = dlopen (file_name,
+ (bind_local ? RTLD_LOCAL : RTLD_GLOBAL) | (bind_lazy ? RTLD_LAZY : RTLD_NOW));
+ if (!handle)
+ g_module_set_error (fetch_dlerror (TRUE));
+#else
+ HINSTANCE handle;
+ wchar_t *wfilename;
wfilename = g_utf8_to_utf16 (file_name, -1, NULL, NULL, NULL);
/* suppress error dialog */
@@ -91,26 +108,44 @@ _g_module_open (const gchar *file_name,
if (!handle)
set_error ("'%s': ", file_name);
+#endif
return handle;
}
+#ifndef G_WITH_CYGWIN
static gint dummy;
static gpointer null_module_handle = &dummy;
+#endif
static gpointer
_g_module_self (void)
{
+#ifdef G_WITH_CYGWIN
+ gpointer handle;
+
+ handle = dlopen (NULL, RTLD_GLOBAL | RTLD_LAZY);
+ if (!handle)
+ g_module_set_error (fetch_dlerror (TRUE));
+
+ return handle;
+#else
return null_module_handle;
+#endif
}
static void
_g_module_close (gpointer handle,
gboolean is_unref)
{
+#ifdef G_WITH_CYGWIN
+ if (dlclose (handle) != 0)
+ g_module_set_error (fetch_dlerror (TRUE));
+#else
if (handle != null_module_handle)
if (!FreeLibrary (handle))
set_error ("");
+#endif
}
static gpointer
@@ -129,8 +164,19 @@ find_in_any_module_using_toolhelp (const
if (Module32First (snapshot, &me32))
{
do {
- if ((p = GetProcAddress (me32.hModule, symbol_name)) != NULL)
- break;
+ if ((p = GetProcAddress (me32.hModule, symbol_name)) != NULL) {
+#ifdef G_WITH_CYGWIN
+ /* if symbol is found in another module, we probably do not want it */
+ ssize_t size = cygwin_conv_path (CCP_WIN_A_TO_POSIX, me32.szExePath, NULL, 0);
+ char *posix = (char *) alloca (size);
+ cygwin_conv_path (CCP_WIN_A_TO_POSIX, me32.szExePath, posix, size);
+ if (g_strstr_len (posix, size, "/usr/lib")
+ || g_strstr_len (posix, size, "/usr/local/lib"))
+ p = NULL;
+ else
+#endif
+ break;
+ }
} while (Module32Next (snapshot, &me32));
}
@@ -156,6 +202,13 @@ _g_module_symbol (gpointer handle,
{
gpointer p;
+#ifdef G_WITH_CYGWIN
+ p = dlsym (handle, symbol_name);
+ if (!p)
+ p = find_in_any_module (symbol_name);
+ if (!p)
+ g_module_set_error (fetch_dlerror (FALSE));
+#else
if (handle == null_module_handle)
{
if ((p = GetProcAddress (GetModuleHandle (NULL), symbol_name)) == NULL)
@@ -166,6 +219,7 @@ _g_module_symbol (gpointer handle,
if (!p)
set_error ("");
+#endif
return p;
}
[-- Attachment #11: glib2.0.cygport --]
[-- Type: text/plain, Size: 3731 bytes --]
ORIG_PN="glib"
inherit gnome2 python
NAME="glib2.0"
VERSION=2.56.4
RELEASE=1
CATEGORY="Libs"
SUMMARY="GNOME core C function library"
DESCRIPTION="GLib is the low-level core library that forms the basis for
projects such as GTK+ and GNOME. It provides data structure handling for C,
portability wrappers, and interfaces for such runtime functionality as
an event loop, threads, dynamic loading, and an object system."
HOMEPAGE="http://www.gtk.org/"
PATCH_URI="
2.56-gmodule-cygwin.patch
2.36.3-not-win32.patch
2.36.4-gspawn-cygwin.patch
2.42.1-goption-cygwin.patch
2.34.3-m4macros.patch
2.36.3-visibility.patch
2.36.4-gutf8-cygwin.patch
2.38.2-gconvert-cygwin.patch
2.56.4-dont-print-null-strings.patch
"
# 2.36.4-gsocket-cygwin.patch # requires abstract sockets
BUILD_REQUIRES="gnome-common \
gettext \
gettext-devel \
libfam-devel \
libiconv \
libpcre-devel \
zlib-devel"
DISTCLEANFILES="gmodule/gmodule-cygwin.c gio/gdbus-2.0/codegen/config.py"
# libelf: for gresource(1), only useful on ELF platforms
CYGCONF_ARGS="
--disable-visibility
--disable-libelf
--with-libiconv=gnu
--with-pcre=system
--with-threads=posix
ac_cv_header_winsock2_h=no
ac_cv_header_mswsock_h=no
"
PKG_NAMES="lib${NAME}_0 lib${NAME}-devel lib${NAME}-doc"
libglib2_0_0_SUMMARY="${SUMMARY} (runtime)"
libglib2_0_0_REQUIRES="desktop-file-utils gsettings-desktop-schemas shared-mime-info tzdata"
libglib2_0_0_CONTENTS="
etc/
usr/bin/cyg*-2.0-0.dll
usr/bin/gapplication.exe
usr/bin/gdbus.exe
usr/bin/gio.exe
usr/bin/gio-querymodules.exe
usr/bin/glib-compile-schemas.exe
usr/bin/gobject-query.exe
usr/bin/gsettings.exe
usr/lib/gio/
usr/share/doc/
usr/share/glib-2.0/schemas/
usr/share/locale/
usr/share/man/man1/gapplication.*
usr/share/man/man1/gdbus.*
usr/share/man/man1/gio*
usr/share/man/man1/glib-compile-schemas*
usr/share/man/man1/gobject*
usr/share/man/man1/gsettings.*
"
libglib2_0_devel_SUMMARY="${SUMMARY} (development)"
libglib2_0_devel_CONTENTS="
--exclude=glib-compile-schemas.[^html]*
usr/bin/gdbus-codegen
usr/bin/glib-*
usr/bin/gresource*
usr/bin/gtester*
usr/include/gio-unix-2.0/
usr/include/glib-2.0/
usr/lib/glib-2.0/include/
usr/lib/lib*-2.0.dll.a
usr/lib/pkgconfig/*
usr/share/aclocal/
usr/share/gettext/
usr/share/glib-2.0/codegen/
usr/share/glib-2.0/gettext/
usr/share/man/man1/gdbus-codegen*
usr/share/man/man1/glib-*
usr/share/man/man1/gresource*
usr/share/man/man1/gtester*
"
libglib2_0_doc_CATEGORY="Doc"
libglib2_0_doc_CONTENTS="usr/share/gtk-doc/"
glib2_0_debuginfo_CONTENTS+=" usr/share/glib-2.0/gdb/"
PKG_IGNORE="
usr/share/glib-2.0/valgrind/
"
src_install() {
local giomodule_cache=/usr/lib/gio/modules/giomodule.cache
local gschemas_compiled=/usr/share/glib-2.0/schemas/gschemas.compiled
cd ${B}
cyginstall completiondir=/etc/bash_completion.d
rm -f ${D}/usr/lib/charset.alias
pushd ${D}/usr/share/gdb/auto-load
mkdir -p usr/bin
mv libglib* usr/bin/cygglib-2.0-0.dll-gdb.py
mv libgobject* usr/bin/cyggobject-2.0-0.dll-gdb.py
popd
python_optimize /usr/share/glib-2.0/gdb
dodir /etc/postinstall /etc/preremove
cat > ${D}/etc/postinstall/zp_${NAME}.sh <<EOF
if [ ! -f $giomodule_cache ]
then
/usr/bin/gio-querymodules ${giomodule_cache%/*}
fi
find ${giomodule_cache%/*} -name '*.dll' -cnewer $giomodule_cache -exec /usr/bin/gio-querymodules ${giomodule_cache%/*} \;
if [ ! -f $gschemas_compiled ]
then
/usr/bin/glib-compile-schemas ${gschemas_compiled%/*}
fi
find ${gschemas_compiled%/*} -name '*.xml' -cnewer $gschemas_compiled -exec /usr/bin/glib-compile-schemas ${gschemas_compiled%/*} \;
EOF
cat > ${D}/etc/preremove/${NAME}.sh <<EOF
rm -f $giomodule_cache $gschemas_compiled
EOF
chmod +x ${D}/etc/{postinstall,preremove}/*.sh
}
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Updating glib2.0
2020-05-23 18:08 ` Ken Brown
@ 2020-05-27 14:15 ` Ken Brown
2020-05-28 11:20 ` Achim Gratz
0 siblings, 1 reply; 5+ messages in thread
From: Ken Brown @ 2020-05-27 14:15 UTC (permalink / raw)
To: cygwin-apps
On 5/23/2020 2:08 PM, Ken Brown via Cygwin-apps wrote:
> On 5/22/2020 7:18 PM, Ken Brown via Cygwin-apps wrote:
>> I've been planning to adopt gimp and some related build dependencies. My
>> reason is that I use gimp and would like to see it kept up to date.
>>
>> I thought I had all the prerequisites I needed. But when I built gimp, I
>> discovered that it used two functions, g_set_weak_pointer and
>> g_date_time_new_from_iso8601, that were introduced in glib-2.56.
>>
>> [gimp's configure.ac says that it only requires glib 2.54.2, but this seems to
>> be wrong. Cygwin's glib is at 2.54.3. Fedora's is at 2.64.3, which is the
>> latest upstream release.]
>>
>> I'd appreciate some advice about how to proceed. I'm not interested in
>> adopting all of GNOME, and it probably doesn't make sense for different
>> components of GNOME to be adopted by different people.
>>
>> A short-term solution (from my personal POV) would be for me to do a
>> non-maintainer update of glib to 2.56, assuming that's doable without messing
>> up other GNOME components.
>>
>> A better solution (again from my personal POV) would be for someone to adopt
>> GNOME and update it to its latest release.
>
> To focus the discussion a little better, I've built and installed
> glib2.0-2.56.4. My cygport file and patches are attached. I can now build
> gimp-2.10.18, and it seems to run fine in limited testing.
Sorry to keep replying to myself, but I have some further thoughts.
1. It's probably unrealistic to expect someone to adopt all the GNOME
components. If such a person existed, I think we would have heard from him/her
by now.
2. I'm willing to adopt various components on an as-needed basis. For example,
since I want to update gimp and it needs an updated glib2.0, I'm willing to
adopt the latter and update it to its latest release. I've just started working
on it and discovered that it needs an updated gtk-doc, so I'll plan on adopting
that too.
3. I don't use the GNOME desktop environment, so I am not going to adopt
packages like gnome-session, gnome-flashback, etc., which I can't easily test.
If no one objects, I'll continue sending ITAs and updating individual GNOME
components as I need them.
Ken
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Updating glib2.0
2020-05-27 14:15 ` Ken Brown
@ 2020-05-28 11:20 ` Achim Gratz
2020-05-29 2:29 ` Ken Brown
0 siblings, 1 reply; 5+ messages in thread
From: Achim Gratz @ 2020-05-28 11:20 UTC (permalink / raw)
To: cygwin-apps
> 1. It's probably unrealistic to expect someone to adopt all the GNOME
> components. If such a person existed, I think we would have heard from
> him/her by now.
Ideally that person would have some ties into the upstream development
community as well. It might be worth asking there directly if anybody
has any points of contact already (I don't).
> 2. I'm willing to adopt various components on an as-needed basis. For
> example, since I want to update gimp and it needs an updated glib2.0,
> I'm willing to adopt the latter and update it to its latest release.
> I've just started working on it and discovered that it needs an updated
> gtk-doc, so I'll plan on adopting that too.
I think the current way of adopting as needed and then immediately
letting it fall into orphaned status again is better than doing nothing,
but eventually we'll run into troublöe with that model.
--
Achim.
(on the road :-)
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Updating glib2.0
2020-05-28 11:20 ` Achim Gratz
@ 2020-05-29 2:29 ` Ken Brown
0 siblings, 0 replies; 5+ messages in thread
From: Ken Brown @ 2020-05-29 2:29 UTC (permalink / raw)
To: cygwin-apps
On 5/28/2020 7:20 AM, Achim Gratz wrote:
>> 1. It's probably unrealistic to expect someone to adopt all the GNOME
>> components. If such a person existed, I think we would have heard from
>> him/her by now.
>
> Ideally that person would have some ties into the upstream development community
> as well. It might be worth asking there directly if anybody has any points of
> contact already (I don't).
I'm pretty sure there's no one there (or at least no one who works on glib) who
understands Cygwin. For years, Yaakov has used a "Cygwin is not win32" patch in
his Cygwin build of glib2.0. About a year ago someone noticed this and patched
the glib sources in an effort to capture the intent of Yaakov's patch. (They
didn't just apply his patch!) They didn't get it quite right, but they made
progress, and the corresponding patch needed today is much smaller than the old one.
My point here is that whoever made this change had good intentions but is not
qualified to be a Cygwin maintainer, even if they wanted to be. And no one else
has touched that code.
>> 2. I'm willing to adopt various components on an as-needed basis. For
>> example, since I want to update gimp and it needs an updated glib2.0, I'm
>> willing to adopt the latter and update it to its latest release. I've just
>> started working on it and discovered that it needs an updated gtk-doc, so I'll
>> plan on adopting that too.
>
> I think the current way of adopting as needed and then immediately letting it
> fall into orphaned status again is better than doing nothing, but eventually
> we'll run into troublöe with that model.
If I were to adopt some of these packages, I would do it with the intention of
keeping them up to date. But I'll wait to hear from Yaakov. If he thinks it's
better to keep the GNOME components at their current state until someone is
willing to adopt all of them, I'll go along with that.
Ken
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-05-29 2:29 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-22 23:18 Updating glib2.0 Ken Brown
2020-05-23 18:08 ` Ken Brown
2020-05-27 14:15 ` Ken Brown
2020-05-28 11:20 ` Achim Gratz
2020-05-29 2:29 ` Ken Brown
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).