
exim-users at spodhuis
Jun 4, 2012, 10:56 PM
Post #21 of 28
(1088 views)
Permalink
|
On 2012-06-04 at 22:40 -0500, George R. Kasica wrote: > OK...did the make distclean and make makefile after the edits here and > then make. > > Results of each below - sadly not successful: So, without knowing how things fit together on a system using libc from 12 years ago, in 2000, just after C99 came out and before the GNU folks settled on how to make 64-bit arithmetic available, I can't say exactly what your system needs. I can walk through what is supposed to happen. We need the 64-bit types available. On BSD systems, the types are just available. The GNU libc guards it behind __USE_ISOC99, but <features.h> will undef that and then redefine it, based upon which _SINGLE_LEADING_UNDERSCORE options it sees at the time it is invoked. You need to analyse your /usr/include/features.h carefully. On current Linux, defining _GNU_SOURCE is sufficient to enable both __USE_ISOC99 and the other features which Exim (and most software) assumes to be available. This is the comment in the file: ----------------------------8< cut here >8------------------------------ __STRICT_ANSI__ ISO Standard C. _ISOC99_SOURCE Extensions to ISO C89 from ISO C99. _POSIX_SOURCE IEEE Std 1003.1. _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2; if >=199309L, add IEEE Std 1003.1b-1993; if >=199506L, add IEEE Std 1003.1c-1995; if >=200112L, all of IEEE 1003.1-2004 if >=200809L, all of IEEE 1003.1-2008 _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if Single Unix conformance is wanted, to 600 for the sixth revision, to 700 for the seventh revision. _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions. _LARGEFILE_SOURCE Some more functions for correct standard I/O. _LARGEFILE64_SOURCE Additional functionality from LFS for large files. _FILE_OFFSET_BITS=N Select default filesystem interface. _BSD_SOURCE ISO C, POSIX, and 4.3BSD things. _SVID_SOURCE ISO C, POSIX, and SVID things. _ATFILE_SOURCE Additional *at interfaces. _GNU_SOURCE All of the above, plus GNU extensions. _REENTRANT Select additionally reentrant object. _THREAD_SAFE Same as _REENTRANT, often used by other systems. _FORTIFY_SOURCE If set to numeric value > 0 additional security measures are defined, according to level. ----------------------------8< cut here >8------------------------------ So, in os.h, *before* the line which pulls in <features.h>, you need to define whichever macros will cause <features.h> to enable the magic juju flags which GNU libc requires to do what pretty much every other libc just does by default. I don't know what things were like in that first year after C99 on Linux: at the time, I was working for a company which used FreeBSD and Solaris for the production systems. Clearly, things have changed since then. Alternatively, you might be able to rip the <features.h> line out of os.h-Linux and replace it with the sort of thing which os.h-HP-UX has: ----------------------------8< cut here >8------------------------------ #define LLONG_MIN LONG_LONG_MIN #define LLONG_MAX LONG_LONG_MAX ----------------------------8< cut here >8------------------------------ It won't be the same, but perhaps whatever it is in /usr/include/limits.h that is being guarded by the flags which we're not setting by default for that system. We provide lots of ways for folks to adjust Exim to run on various systems. But the further you are from a mainstream environment, the more likely it is that you'll need to be able to pick apart the C include files which your environment has. As I said before, if it's something sane we can set to enable this to work by default for you, which isn't likely to break other Linux setups, we'll set it. We want Exim to work as well as possible for everyone. We don't break arbitrarily. But we are going to change things as time goes by, and whenever something changes, there is the risk of breakage. The lack of 64-bit arithmetic was beginning to affect some users and we felt it was worth the risk of issues to add support. We did it in such a way as to have escape hatches, multiple escape hatches, to deal with systems other than the main ones. That might be redefining the types, it might be providing missing constants, but the options are there. Yes, Exim 4.77 worked for you. Exim 4.77 had 32-bit arithmetic which was not enough for some reasonable use-cases. We're not going to freeze unchanging, never daring to support what our current users need, for fear that it will break ancient systems, but we'll continue to work to support those systems too, if the people who run them can work with us to achieve that. We have Exim building on environments which are not POSIX by default; we introduce some POSIX assumption, it's caught during Release Candidate testing, we provide workarounds to get things working again. -Phil managing to get -- ## List details at https://lists.exim.org/mailman/listinfo/exim-users ## Exim details at http://www.exim.org/ ## Please use the Wiki with this list - http://wiki.exim.org/
|