Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Message-ID: <3E158476.9080703@ece.gatech.edu> Date: Fri, 03 Jan 2003 07:39:18 -0500 From: Charles Wilson User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0 X-Accept-Language: en-us, en MIME-Version: 1.0 To: cygwin AT cygwin DOT com Subject: glib-2.2.0 on cygwin Content-Type: multipart/mixed; boundary="------------020707090905080404050300" --------------020707090905080404050300 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit I finally got the 2.0.7 patches forward-ported to 2.2.0 -- they went thru quite a metamorphosis. But, by applying the attached patch and following the instructions below, glib-2.2.0 will 1) build as shared libs 2) pass 27 of 29 tests (yep, regressions...see NOTES below for analysis) Please read the attached NOTES file thoroughly -- it is quite different from the one included with the glib-2.0.7 message. It is especially useful if you're thinking about turning this simple patch into a full-blown set of cygwin packages -- or if you want to help fix the two test regressions. [Note that the attached patch affects only the primary sources; after running the bootstrap script the patch grows to almost 1.9MB] --Chuck --------------020707090905080404050300 Content-Type: text/plain; name="glib-2.2.0.NOTES" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="glib-2.2.0.NOTES" build requirements: ================================== pkgconfig 0.14.0 or newer libtool libtool-devel 20021227-1 or newer (*) autoconf autoconf-devel 2.57-1 or newer automake automake-devel 1.7.2-1 or newer gcc 3.2-3 or newer binutils 20021117-1 or newer libiconv 1.8-2 libiconv2 1.8-2 libintl2 0.11.5-1 gettext 0.11.5-1 gettext-devel 0.11.5-1 (*) if using 20021227-1, you need to apply the following patch to /usr/autotools/devel/share/aclocal/libtool.m4 BEFORE running bootstrap, below. I'll release a new libtool that includes this fix soon. --- libtool.m4.orig 2002-12-30 00:16:43.000000000 -0500 +++ libtool.m4 2002-12-30 00:16:56.000000000 -0500 @@ -2342,7 +2342,7 @@ # -------------- # enable support for Windows resource files AC_DEFUN([AC_LIBTOOL_RC], -[AC_REQUIRE([AC_PROG_RC]) +[AC_REQUIRE([LT_AC_PROG_RC]) _LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,RC" | sed 's/^,//'`]) ])# AC_LIBTOOL_RC build instructions: ================================== This is what I did, but you might want different CFLAGS or configure options. 1) unpack glib-2.2.0.tar.bz2 2) cd glib-2.2.0 3) patch -p1 < /glib-2.2.0.patch 4) chmod +x ./bootstrap 5) ./bootstrap 6) mkdir .build && cd .build 7) CFLAGS='-g -O0' ../configure \ --prefix=/usr/local --srcdir=/glib-2.2.0 --enable-maintainer-mode 8) make test results: ================================== failed 2 of 29 tests -- see below packaging notes: ================================== I don't intend to package glib for cygwin, or to support it. I just viewed it as an interesting application/testcase for libtool. If anyone wants to take these patches and use them to provide an official glib package for cygwin, I wouldn't mind -- but be warned, the packaging will be tricky, since the import libs and headers are versioned, as well as the dll. See Nicholas Wourm's packaging structure for db2 libdb2 libdb2-devel db3.1 libdb3.1 libdb3.1-devel I'd suggest [NOTE: glib20 NOT glib22, libglib20_0 NOT libglib22_0. This is because glib-2.2 is backward compatible with glib-2.0] glib20-devel-2.2.0-1 (include files, import libs, locale files, static libs, pkg-config files (.pc), glib-2.0.m4, but not glib-gettext.m4) libglib20_0-2.2.0-1 (contains only the dlls) glib-docs-2.2.0-1 (html docs, but not the man pages) glib-2.2.0-1 (everything else, incl. glib-gettext.m4, .exe's, man pages) Oh -- and don't "ship" usr/lib/charset.alias. That's part of the gettext package on cygwin. submitting "upstream" ================================== These patches are probably large enough that I'd need to fill out a copyright assignment for glib. I wouldn't mind doing that, if someone else wants to push them into glib-2.2.1. (Also, Steven O'Brien would need to fill out a copyright assignment too). But.... These patches depend on reautotoolizing the whole tree using CVS versions of libtool. There might be resistance to that -- at least until libtool-1.5 is released officially. porting notes: ================================== My "solution" for the earlier string-test failures is cheezy. The problem is actually in newlib's routines that format floating point numbers; hopefully they will be fixed soon. However, I just reduced the %10000.10000f down to the maximum that newlib can handle: %42.42f. There are a number of places where I blithely replaced G_PLATFORM_WIN32 with G_OS_WIN32 (thus skipping various win32-isms on cygwin, and using the unix-isms instead). I tried to only do this where it made sense -- and I kept some win32-isms. However, it is entirely possible that SOME of the win32-isms that I killed in the cygwin build are actually needed, especially as it relates to g_convert_filename functions dealing with internationalization. ----- module-test will fail unless you use a very very new ld. There was a patch posted recently to binutils mailing list that enables .exe's to have exports, without going thru the gyrations that were necessary previously. It is likely that the patch will be accepted soon, and that there will be included in an official cygwin binutils release somewhat later. For an executable to dlsym() symbols from itself, the executable must have an exports table. Older (and current) ld's do not create export tables, even if some objects used to build the exe have __declspec() decorated symbols. Nor did --export-all-symbols have any effect. Instead, the old method (as used in glib-2.0.7, and by G_OS_WIN32 in 2.2.0) was the following: 1) use dlltool to create an .exp file from the object files (which already contains "decorated" symbols). An .exp file is a binary block that is incorporated directly into the .exe itself. dlltool --output-exp my.exp one.o two.o three.o 2) add the .exp file to the list of dependencies for the executable, so that it is incorporated into the binary. gcc -o foo.exe one.o two.o three.o my.exp The new method, assuming you have a very very new ld, is just gcc -o foo.exe one.o two.o three.o Since the desired symbols in one.o/two.o/three.o should already be decorated with __declspec(dllexport) or G_MODULE_EXPORT, the new ld will take care of building the export table behind the scenes. No need for dlltool. This port is forward-looking. Rather than keep the old, kludgy dlltool-based method, we assume that you have a newer ld (even if it isn't really available quite yet). We use the new method to build module-test.exe. ----- Tip Of Hat: Many of these changes originated with Steven O'Brien http://homepage.ntlworld.com/steven.obrien2/ Also, the basic port to window-ish platforms is due to TONS of work by Tor Lilqvist and his elves on the gimpwin-dev AT yahoogroups DOT com list. NOTES ON TEST RESULTS: FAILED-- ================================================= strtod-test type-test The actual failures are the real problem. But there's another problem: WHEN a test fails, we get a kernel message "wait for sig_complete..." Worse, the test will then spin at 100% CPU, making it very difficult to kill the executable. IMO, the *first* thing to do is track down why the tests behave so poorly on failure. Is it something in glib's atexit handler? Is there (another) bug in cygwin? answer (maybe): --------------- I had the following in my CYGWIN variable: error_start:d:/cygwin/bin/dumper.exe Once I removed it, the tests still failed, but at least I didn't get the 100% CPU and 'wait for sig-complete event failed' thing, I got a simple (old-style) .stackdump file and returned to the command prompt. So is this a dumper bug? Or maybe yesterday's cygwin snapshot fixes it? --------------- Once that's been tracked down and fixed, then worry about what causes the specific failures in these three tests. ************** OLD, WITH DUMPER OUTPUT ********************** ** ERROR **: file /usr/local/src/glib/glib-2.2.0/glib-2.2.0/tests/strtod-test.c: line 46 (main): assertion failed: (d == g_ascii_strtod (g_ascii_dtostr (buffer, sizeof (buffer), d), NULL)) aborting... 4005742 [main] lt-strtod-test 712 sig_send: wait for sig_complete event failed, signal 6, rc 258, Win32 error 0 64051451 [main] lt-strtod-test 712 sig_send: wait for sig_complete event failed, signal -2, rc 258, Win32 error 0 128043819 [main] lt-strtod-test 712 sig_send: wait for sig_complete event failed, signal -2, rc 258, Win32 error 0 192055605 [main] lt-strtod-test 712 sig_send: wait for sig_complete event failed, signal -2, rc 258, Win32 error 0 252112186 [main] lt-strtod-test 712 sig_send: wait for sig_complete event failed, signal -2, rc 258, Win32 error 0 FAIL: strtod-test ** ERROR **: file /usr/local/src/glib/glib-2.2.0/glib-2.2.0/tests/type-test.c: line 118 (main): assertion failed: (gi64t1 == gi64t2) aborting... 4007311 [main] lt-type-test 448 sig_send: wait for sig_complete event failed, signal 6, rc 258, Win32 error 0 67056172 [main] lt-type-test 448 sig_send: wait for sig_complete event failed, signal -2, rc 258, Win32 error 0 FAIL: type-test ************** NEW, NO DUMPER OUTPUT ********************** strtod-test: ** ERROR **: file /usr/local/src/glib/glib-2.2.0/glib-2.2.0/tests/strtod-test.c: line 46 (main): assertion failed: (d == g_ascii_strtod (g_ascii_dtostr (buffer, sizeof (buffer), d), NULL)) aborting... Aborted (core dumped) type-test: ** ERROR **: file /usr/local/src/glib/glib-2.2.0/glib-2.2.0/tests/type-test.c: line 118 (main): assertion failed: (gi64t1 == gi64t2) aborting... Aborted (core dumped) ************** ANALYSIS ********************** strtod-test The glib folks wanted to guarantee that "positional parameters" in printf format strings would be supported. Of course, newlib as provided by cygwin does not -- you must compile newlib with WANT_IO_POS_ARGS for that. By default, the following special defines are used when cygwin is built: -DMB_CAPABLE -DHAVE_OPENDIR -DHAVE_RENAME -DSIGNAL_PROVIDED -DWANT_IO_LONG_DBL -DWANT_PRINTF_LONG_LONG -D_COMPILING_NEWLIB -DHAVE_FCNTL -DMALLOC_PROVIDED So, our newlib supports printing long longs (64 bits). But, it doesn't do sscanf for 64bit entries, and it doesn't do positional parameters. On systems that do not provide positional parameter support, glib will use the included trio library to replace printf functions. So here's the problem: g_ascii_dtostr (buffer, sizeof (buffer), d) dies in three of the four tests: d = a really really big negative floating point constant d = pow (2.0, -1024.1) d = -pow (2.0, -1024.1) : d = a really really big positive floating point constant but all 4 tests passed in 2.0.7! Well, in 2.0.7, g_ascii_dtostr() eventually calls the system printf (newlib). However, in 2.2.0, it calls the trio printf. Which seems to be broken on cygwin. So that's where I'd look when tracking down this problem. type-test: It fails the following test: string = g_strdup_printf (FORMAT64, gi64t1, gu64t1); sscanf (string, FORMAT64, &gi64t2, &gu64t2); g_free (string); g_assert (gi64t1 == gi64t2); g_assert (gu64t1 == gu64t2);a That is, it writes out 64 bit ints, but doesn't accurately read them in. That's because newlib's sscanf will happily accept a "%llu" type specifier -- but gets it hopeless wrong reading in the data. Two solutions: (Assuming the above problem with trio printf is fixed), follow the same pattern and use trio's sscanf functions to replace the system ones. The code is in the glib/trio directory, but for some reason is unused. or Fix newlib to accurately sscanf 64 bit values. --------------020707090905080404050300 Content-Type: application/x-gzip; name="glib-2.2.0-cygwin.patch.gz" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="glib-2.2.0-cygwin.patch.gz" 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 vTm2dOQAAA== --------------020707090905080404050300 Content-Type: text/plain; charset=us-ascii -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/ --------------020707090905080404050300--