Thanks for your bug report. I added an #include <stdint.h> to get WORDSIZE defined on etch libc. I also applied your fallback to upstream wordsize/endian selection. A new version should be uploaded shortly.
Is your backport of zeroc-ice33 and related packages available to anyone? Regards, Paco On Thu, Oct 15, 2009 at 2:37 PM, Siim Põder <s...@p6drad-teel.net> wrote: > Package: zeroc-ice > Version: 3.3.1-6 > > Although bug #539930 has been closed, I recently tried building > zeroc-ice on 64bit etch system. This time it fails more consistently - > the build works fine but resulting IceUtil libraries use "long long" for > 64bit integres. I checked the Config.h and sure enough, it was defining > ICE_32 where the endian&limits patch adds the __WORDSIZE detection. > > This seems to be the problem: > $ nm -CD /usr/lib/libIceUtil.so | grep seconds > 000000000002c770 T IceUtil::Time::seconds(long long) > > Resulting in at least this: > $ python > Python 2.4.4 (#2, Oct 22 2008, 20:20:22) > [GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2 > Type "help", "copyright", "credits" or "license" for more information. > >>> import Ice > Traceback (most recent call last): > File "<stdin>", line 1, in ? > File "/var/lib/python-support/python2.4/Ice.py", line 19, in ? > import IcePy > ImportError: /var/lib/python-support/python2.4/IcePy.so: undefined > symbol: _ZN7IceUtil4Time12microSecondsEl > >>> > > But probably other stuff is likely to be broken as well. > > For now I'm building with your endian&limits patch changed to check if > __WORDSIZE is even defined and fall back to upstream wordsize detection: > // > // 32 or 64 bit mode? > // > +#if defined(HAVE_LIMITS_H) > +# ifndef __USE_XOPEN > +# define __USE_XOPEN > +# endif > +# include <limits.h> > +# if defined(__WORDSIZE) > +# if __WORDSIZE == 32 > +# define ICE_32 > +# else > +# define ICE_64 > +# endif > +# endif > +#endif > + > +#if !defined(ICE_32) && !defined(ICE_64) > #if defined(__linux) && defined(__sparc__) > // > // We are a linux sparc, which forces 32 bit usr land, no matter > ... > #else > # define ICE_32 > #endif > +#endif > > I understand that failing __WORDSIZE detection, the upstream one will > not work on all platforms supported by Debian. However, at least on > 64bit etch, it works: > > $ nm -CD libIceUtil.so.33 | grep seconds > 000000000002c720 T IceUtil::Time::seconds(long) > > I don't think this bug is particularily important and will not take it > as a personal offence should you decide to wontfix it ;) > > Siim > > > -- Computer Architecture and Networks Group University of Castilla-La Mancha http://arco.esi.uclm.es/~francisco.moya/<http://arco.esi.uclm.es/%7Efrancisco.moya/> Tel:(+34) 926 295 483, Fax:(+34) 926 295 354