delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2003/01/03/07:41:41

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/ml/#faqs>
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 <cwilson AT ece DOT gatech DOT edu>
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

--------------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 < <path to>/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=<path to>/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)
  <passed>:
  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--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019