Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: exim: users

Exim 4.8 build issue

 

 

First page Previous page 1 2 Next page Last page  View All exim users RSS feed   Index | Next | Previous | View Threaded


georgek at netwrx1

Jun 3, 2012, 4:52 AM

Post #1 of 28 (1119 views)
Permalink
Exim 4.8 build issue

Trying to build Exim-4.8 here from the tar.gz and am getting the
following error on make:

expand.c: In function 'eval_op_mult':
expand.c:3196:25: error: 'LLONG_MIN' undeclared (first use in this
function)
expand.c:3196:25: note: each undeclared identifier is reported only
once for each function it appears in
expand.c:3200:28: error: 'LLONG_MAX' undeclared (first use in this
function)
expand.c: In function 'expand_string_integer':
expand.c:6178:17: error: 'LLONG_MAX' undeclared (first use in this
function)
expand.c:6178:43: error: 'LLONG_MIN' undeclared (first use in this
function)
make[1]: *** [expand.o] Error 1
make[1]: Leaving directory
`/mnt/scsi-1/Linux/exim-4.80/build-Linux-i386'
make: *** [all] Error 2


I have sucessfully built MANY oter previous versions before 4.8 for
many years. Any ideas on how to clear this up to move to 4.80??

Thanks,

Gerge
--
===[George R. Kasica]=== +1 262 677 0766
President +1 206 374 6482 FAX
Netwrx Consulting Jackson, WI USA
http://www.netwrx1.com
georgek [at] netwrx1
ICQ #12862186

--
## 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/


georgek at netwrx1

Jun 3, 2012, 5:33 AM

Post #2 of 28 (1136 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

Did a little more looking here and see that a fix was found for some
by
apparently setting

CC=gcc -std=gnu99

but when I try that here with gcc 4.6.2 I get an error

#gcc -v
gcc version 4.6.2 (GCC)

# CC=gcc -std=gnu99
-bash: -std=gnu99: command not found

and doing with " gets me the value set

CC='gcc -std=gnu99'

but sadly the error is still there:

expand.c: In function 'eval_op_mult':
expand.c:3196:25: error: 'LLONG_MIN' undeclared (first use in this
function)
expand.c:3196:25: note: each undeclared identifier is reported only
once for each function it appears in
expand.c:3200:28: error: 'LLONG_MAX' undeclared (first use in this
function)
expand.c: In function 'expand_string_integer':
expand.c:6178:17: error: 'LLONG_MAX' undeclared (first use in this
function)
expand.c:6178:43: error: 'LLONG_MIN' undeclared (first use in this
function)
make[1]: *** [expand.o] Error 1
make[1]: Leaving directory
`/mnt/scsi-1/Linux/exim-4.80/build-Linux-i386'
make: *** [all] Error 2





>On Sun, 03 Jun 2012 06:52:37 -0500, you wrote:

>Trying to build Exim-4.8 here from the tar.gz and am getting the
>following error on make:
>
>expand.c: In function 'eval_op_mult':
>expand.c:3196:25: error: 'LLONG_MIN' undeclared (first use in this
>function)
>expand.c:3196:25: note: each undeclared identifier is reported only
>once for each function it appears in
>expand.c:3200:28: error: 'LLONG_MAX' undeclared (first use in this
>function)
>expand.c: In function 'expand_string_integer':
>expand.c:6178:17: error: 'LLONG_MAX' undeclared (first use in this
>function)
>expand.c:6178:43: error: 'LLONG_MIN' undeclared (first use in this
>function)
>make[1]: *** [expand.o] Error 1
>make[1]: Leaving directory
>`/mnt/scsi-1/Linux/exim-4.80/build-Linux-i386'
>make: *** [all] Error 2
>
>
>I have sucessfully built MANY oter previous versions before 4.8 for
>many years. Any ideas on how to clear this up to move to 4.80??
>
>Thanks,
>
>Gerge
>--
>===[George R. Kasica]=== +1 262 677 0766
>President +1 206 374 6482 FAX
>Netwrx Consulting Jackson, WI USA
>http://www.netwrx1.com
>georgek [at] netwrx1
>ICQ #12862186
--
George, Ginger/The Beast Kasica(8/1/88-3/19/01, 1/17/02- ), Rosie(9/1/07- ), Merlin/MR. Tibbs(8/1/90-5/24/06, 2/10/08- ), Nazarene(6/1/99-1/28/08)
Jackson, WI USA
georgek [at] netwrx1
http://www.netwrx1.com/georgek
ICQ #12862186

("`-''-/").___..--''"`-._
`6_ 6 ) `-. ( ).`-.__.`)
(_Y_.)' ._ ) `._ `. ``-..-'
_..`--'_..-_/ /--'_.' ,'
(il),-'' (li),' ((!.-'

--
## 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/


exim-users at spodhuis

Jun 3, 2012, 6:25 AM

Post #3 of 28 (1100 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

On 2012-06-03 at 06:52 -0500, George R. Kasica wrote:
> Trying to build Exim-4.8 here from the tar.gz and am getting the
> following error on make:

Which operating system, which release?

If a Linux variant, which libc, which version?

Thanks,
-Phil

--
## 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/


georgek at netwrx1

Jun 3, 2012, 7:02 AM

Post #4 of 28 (1097 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

>On Sun, 3 Jun 2012 09:25:38 -0400, you wrote:

>On 2012-06-03 at 06:52 -0500, George R. Kasica wrote:
>> Trying to build Exim-4.8 here from the tar.gz and am getting the
>> following error on make:
>
>Which operating system, which release?
Kernel is now 3.3.7

>
>If a Linux variant, which libc, which version?

Its a generic linux from scratch system more or less...startd out as a
Caldera Open Linux way back in 1995 but with the demise of that it was
converted over to a build from scratch on a new set of disks and the
data copies over around 2001 and maintained and able to compile every
version of exim up to now with no major issues.

]# /lib/libc.so.6
GNU C Library stable release version 2.2.4, by Roland McGrath et al.
Copyright (C) 1992-1999, 2000, 2001 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 2.95.3 20010315 (release).
Compiled on a Linux 2.4.13 system on 2001-12-29.
Available extensions:
GNU libio by Per Bothner
crypt add-on version 2.1 by Michael Glad and others
linuxthreads-0.9 by Xavier Leroy
BIND-8.2.3-T5B
libthread_db work sponsored by Alpha Processor Inc
NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
Report bugs using the `glibcbug' script to <bugs [at] gnu>.

--
## 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/


exim-users at spodhuis

Jun 3, 2012, 7:45 AM

Post #5 of 28 (1097 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

On 2012-06-03 at 09:02 -0500, George R. Kasica wrote:
> >On Sun, 3 Jun 2012 09:25:38 -0400, you wrote:
>
> >On 2012-06-03 at 06:52 -0500, George R. Kasica wrote:
> >> Trying to build Exim-4.8 here from the tar.gz and am getting the
> >> following error on make:
> >
> >Which operating system, which release?
> Kernel is now 3.3.7
>
> >
> >If a Linux variant, which libc, which version?
>
> Its a generic linux from scratch system more or less...startd out as a
> Caldera Open Linux way back in 1995 but with the demise of that it was
> converted over to a build from scratch on a new set of disks and the
> data copies over around 2001 and maintained and able to compile every
> version of exim up to now with no major issues.

Okay, so what's happened is that we've added support for 64-bit
arithmetic for ${eval...} on platforms which support it.

We define _GNU_SOURCE to be 1 before pulling in OS headers, which on
Linux includes <features.h>. On Linux, that enables _ISOC99_SOURCE
which enables __USE_ISOC99 and then in <limits.h> that, together with
__GNUC__, defines LLONG_MIN, LLONG_MAX and ULLONG_MAX.

That's what *should* happen on Linux, to get basic 64-bit arithmetic.

If you edit OS/os.h-Linux and add these:

/* -------------------------8< cut here >8--------------------------- */
#define int_eximarith_t int32_t
#define PR_EXIM_ARITH "%" PRId32
#define SC_EXIM_ARITH "%" SCNi32
#define SC_EXIM_DEC "%" SCNd32
/* -------------------------8< cut here >8--------------------------- */

then you *should* get 32-bit arithmetic back. If you do this, I advise
against using $tod_epoch_l in ${eval...} as you'll likely overflow; it's
the epoch time in microseconds since the epoch (as a string), which
arithmetic in 32-bits will not handle meaningfully.

Somewhere, you've diverged from the rest of Linux. If you can figure
out a decent *safe* way to detect what's different, we can try to handle
this automatically for you.

-Phil

--
## 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/


sven at svenhartge

Jun 3, 2012, 9:31 AM

Post #6 of 28 (1092 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

George R. Kasica <georgek [at] netwrx1> wrote:
>On Sun, 3 Jun 2012 09:25:38 -0400, you wrote:
>> On 2012-06-03 at 06:52 -0500, George R. Kasica wrote:

>>> Trying to build Exim-4.8 here from the tar.gz and am getting the
>>> following error on make:
>>
>> Which operating system, which release?
> Kernel is now 3.3.7

> ]# /lib/libc.so.6
> GNU C Library stable release version 2.2.4, by Roland McGrath et al.
> Compiled by GNU CC version 2.95.3 20010315 (release).
> Compiled on a Linux 2.4.13 system on 2001-12-29.

Really?

Are you really able to run a system with todays kernel and such an
outdated libc? (For reference: current libc is 2.15)
This really works with programs from today without problems?

This one even lacks NPTL support and will carry numerous security flaws.

I would not blame any Exim dev if such a "Frankenstein"-type system is
not deteceted and automatically supported by the build-system.

Grüße,
Sven.

--
Sigmentation fault. Core dumped.


--
## 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/


georgek at netwrx1

Jun 4, 2012, 4:36 AM

Post #7 of 28 (1087 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

Phil:

I've added the supplied items below as shown and still get this error
(doesn't look any different than previously) but I'm by no means a
programmer etc. What am I missing here?

expand.c: In function 'eval_op_mult':
expand.c:3196:25: error: 'LLONG_MIN' undeclared (first use in this
function)
expand.c:3196:25: note: each undeclared identifier is reported only
once for each function it appears in
expand.c:3200:28: error: 'LLONG_MAX' undeclared (first use in this
function)
expand.c: In function 'expand_string_integer':
expand.c:6178:17: error: 'LLONG_MAX' undeclared (first use in this
function)
expand.c:6178:43: error: 'LLONG_MIN' undeclared (first use in this
function)
make[1]: *** [expand.o] Error 1
make[1]: Leaving directory
`/mnt/scsi-1/Linux/exim-4.80/build-Linux-i386'
make: *** [all] Error 2


vi os.h-Linux


/* Exim: OS-specific C header file for Linux */

/* Some old systems we've received bug-reports for have a <limits.h>
which
does not pull in <features.h>. Best to just pull it in now and have
done
with the issue. */

#include <features.h>


#define CRYPT_H
#define GLIBC_IP_OPTIONS
#define HAVE_MMAP
#define HAVE_BSD_GETLOADAVG
#define HAVE_SYS_STATVFS_H
#define NO_IP_VAR_H
#define SIG_IGN_WORKS

#define int_eximarith_t int32_t
#define PR_EXIM_ARITH "%" PRId32
#define SC_EXIM_ARITH "%" SCNi32
#define SC_EXIM_DEC "%" SCNd32



>On Sun, 3 Jun 2012 10:45:50 -0400, you wrote:

>On 2012-06-03 at 09:02 -0500, George R. Kasica wrote:
>> >On Sun, 3 Jun 2012 09:25:38 -0400, you wrote:
>>
>> >On 2012-06-03 at 06:52 -0500, George R. Kasica wrote:
>> >> Trying to build Exim-4.8 here from the tar.gz and am getting the
>> >> following error on make:
>> >
>> >Which operating system, which release?
>> Kernel is now 3.3.7
>>
>> >
>> >If a Linux variant, which libc, which version?
>>
>> Its a generic linux from scratch system more or less...startd out as a
>> Caldera Open Linux way back in 1995 but with the demise of that it was
>> converted over to a build from scratch on a new set of disks and the
>> data copies over around 2001 and maintained and able to compile every
>> version of exim up to now with no major issues.
>
>Okay, so what's happened is that we've added support for 64-bit
>arithmetic for ${eval...} on platforms which support it.
>
>We define _GNU_SOURCE to be 1 before pulling in OS headers, which on
>Linux includes <features.h>. On Linux, that enables _ISOC99_SOURCE
>which enables __USE_ISOC99 and then in <limits.h> that, together with
>__GNUC__, defines LLONG_MIN, LLONG_MAX and ULLONG_MAX.
>
>That's what *should* happen on Linux, to get basic 64-bit arithmetic.
>
>If you edit OS/os.h-Linux and add these:
>
>/* -------------------------8< cut here >8--------------------------- */
>#define int_eximarith_t int32_t
>#define PR_EXIM_ARITH "%" PRId32
>#define SC_EXIM_ARITH "%" SCNi32
>#define SC_EXIM_DEC "%" SCNd32
>/* -------------------------8< cut here >8--------------------------- */
>
>then you *should* get 32-bit arithmetic back. If you do this, I advise
>against using $tod_epoch_l in ${eval...} as you'll likely overflow; it's
>the epoch time in microseconds since the epoch (as a string), which
>arithmetic in 32-bits will not handle meaningfully.
>
>Somewhere, you've diverged from the rest of Linux. If you can figure
>out a decent *safe* way to detect what's different, we can try to handle
>this automatically for you.
>
>-Phil

--
## 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/


jgh at wizmail

Jun 4, 2012, 5:23 AM

Post #8 of 28 (1091 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

On 2012-06-04 12:36, George R. Kasica wrote:
> Phil:
>
> I've added the supplied items below as shown and still get this error
> (doesn't look any different than previously) but I'm by no means a
> programmer etc. What am I missing here?
>
> expand.c: In function 'eval_op_mult':
> expand.c:3196:25: error: 'LLONG_MIN' undeclared (first use in this
> function)

Have a look at your limits.h (possibly in /usr/include/).
Is it, or anything like it, there?
--
Jeremy



--
## 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/


georgek at netwrx1

Jun 4, 2012, 5:52 AM

Post #9 of 28 (1092 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

>On Mon, 04 Jun 2012 13:23:29 +0100, you wrote:

>On 2012-06-04 12:36, George R. Kasica wrote:
>> Phil:
>>
>> I've added the supplied items below as shown and still get this error
>> (doesn't look any different than previously) but I'm by no means a
>> programmer etc. What am I missing here?
>>
>> expand.c: In function 'eval_op_mult':
>> expand.c:3196:25: error: 'LLONG_MIN' undeclared (first use in this
>> function)
>
>Have a look at your limits.h (possibly in /usr/include/).
>Is it, or anything like it, there?

Yes, its out there...here is the contents as well:

# cd /usr/include/

# ll limits.h
-rw-r--r-- 1 root root 4550 Jun 24 2005 limits.h

# more limits.h
/* Copyright (C) 1991, 92, 96, 97, 98, 99, 2000 Free Software
Foundation, Inc.
This file is part of the GNU C Library.

The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

The GNU C Library is distributed in the hope that it will be
useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */

/*
* ISO C99 Standard: 7.10/5.2.4.2.1 Sizes of integer types
<limits.h>
*/

#ifndef _LIBC_LIMITS_H_
#define _LIBC_LIMITS_H_ 1

#include <features.h>


/* Maximum length of any multibyte character in any locale.
We define this value here since the gcc header does not define
the correct value. */
#define MB_LEN_MAX 16


/* If we are not using GNU CC we have to define all the symbols
ourself.
Otherwise use gcc's definitions (see below). */
#if !defined __GNUC__ || __GNUC__ < 2

/* We only protect from multiple inclusion here, because all the other
#include's protect themselves, and in GCC 2 we may #include_next
through
multiple copies of this file before we get to GCC's. */
# ifndef _LIMITS_H
# define _LIMITS_H 1

#include <bits/wordsize.h>

/* We don't have #include_next.
Define ANSI <limits.h> for standard 32-bit words. */

/* These assume 8-bit `char's, 16-bit `short int's,
and 32-bit `int's and `long int's. */

/* Number of bits in a `char'. */
# define CHAR_BIT 8

/* Minimum and maximum values a `signed char' can hold. */
# define SCHAR_MIN (-128)
# define SCHAR_MAX 127

/* Maximum value an `unsigned char' can hold. (Minimum is 0.) */
# define UCHAR_MAX 255

/* Minimum and maximum values a `char' can hold. */
# ifdef __CHAR_UNSIGNED__
# define CHAR_MIN 0
# define CHAR_MAX UCHAR_MAX
# else
# define CHAR_MIN SCHAR_MIN
# define CHAR_MAX SCHAR_MAX
# endif

/* Minimum and maximum values a `signed short int' can hold. */
# define SHRT_MIN (-32768)
# define SHRT_MAX 32767

/* Maximum value an `unsigned short int' can hold. (Minimum is 0.) */
# define USHRT_MAX 65535

/* Minimum and maximum values a `signed int' can hold. */
# define INT_MIN (-INT_MAX - 1)
# define INT_MAX 2147483647

/* Maximum value an `unsigned int' can hold. (Minimum is 0.) */
# define UINT_MAX 4294967295U

/* Minimum and maximum values a `signed long int' can hold. */
# if __WORDSIZE == 64
# define LONG_MAX 9223372036854775807L
# else
# define LONG_MAX 2147483647L
# endif
# define LONG_MIN (-LONG_MAX - 1L)

/* Maximum value an `unsigned long int' can hold. (Minimum is 0.) */
# if __WORDSIZE == 64
# define ULONG_MAX 18446744073709551615UL
# else
# define ULONG_MAX 4294967295UL
# endif

# ifdef __USE_ISOC99

/* Minimum and maximum values a `signed long long int' can hold. */
# define LLONG_MAX 9223372036854775807LL
# define LLONG_MIN (-LLONG_MAX - 1LL)

/* Maximum value an `unsigned long long int' can hold. (Minimum is
0.) */
# define ULLONG_MAX 18446744073709551615ULL

# endif /* ISO C99 */

# endif /* limits.h */
#endif /* GCC 2. */

#endif /* !_LIBC_LIMITS_H_ */

/* Get the compiler's limits.h, which defines almost all the ISO
constants.

We put this #include_next outside the double inclusion check
because
it should be possible to include this file more than once and
still get
the definitions from gcc's header. */
#if defined __GNUC__ && !defined _GCC_LIMITS_H_
/* `_GCC_LIMITS_H_' is what GCC's file defines. */
# include_next <limits.h>

/* The <limits.h> files in some gcc versions don't define LLONG_MIN,
LLONG_MAX, and ULLONG_MAX. Instead only the values gcc defined for
ages are available. */
# ifdef __USE_ISOC99
# ifndef LLONG_MIN
# define LLONG_MIN LONG_LONG_MIN
# endif
# ifndef LLONG_MAX
# define LLONG_MAX LONG_LONG_MAX
# endif
# ifndef ULLONG_MAX
# define ULLONG_MAX ULONG_LONG_MAX
# endif
# endif
#endif

#ifdef __USE_POSIX
/* POSIX adds things to <limits.h>. */
# include <bits/posix1_lim.h>
#endif

#ifdef __USE_POSIX2
# include <bits/posix2_lim.h>
#endif

#ifdef __USE_XOPEN
# include <bits/xopen_lim.h>
#endif

--
## 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/


exim-users at spodhuis

Jun 4, 2012, 1:24 PM

Post #10 of 28 (1090 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

On 2012-06-04 at 07:52 -0500, George R. Kasica wrote:
> Yes, its out there...here is the contents as well:

> # ifdef __USE_ISOC99
>
> /* Minimum and maximum values a `signed long long int' can hold. */
> # define LLONG_MAX 9223372036854775807LL
> # define LLONG_MIN (-LLONG_MAX - 1LL)
>
> /* Maximum value an `unsigned long long int' can hold. (Minimum is
> 0.) */
> # define ULLONG_MAX 18446744073709551615ULL
>
> # endif /* ISO C99 */

Remove the four lines which you added. Instead add:

#define __USE_ISOC99

That *should* happen automatically in a GNU libc environment when
_GNU_SOURCE is defined. That it's not happening is a symptom of some
issues. You've probably reached the point where it's worth designing
what you want your next OS build to look like and starting from more
current versions of software.

We discarded the idea of defining __USE_ISOC99 in Exim, because it's a
double-underbar constant and not the sort of thing we're supposed to be
touching in an application. _GNU_SOURCE is the documented interface
which we use.

-Phil

--
## 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/


georgek at netwrx1

Jun 4, 2012, 2:21 PM

Post #11 of 28 (1089 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

>On Mon, 4 Jun 2012 16:24:10 -0400, you wrote:

>On 2012-06-04 at 07:52 -0500, George R. Kasica wrote:
>> Yes, its out there...here is the contents as well:
>
>> # ifdef __USE_ISOC99
>>
>> /* Minimum and maximum values a `signed long long int' can hold. */
>> # define LLONG_MAX 9223372036854775807LL
>> # define LLONG_MIN (-LLONG_MAX - 1LL)
>>
>> /* Maximum value an `unsigned long long int' can hold. (Minimum is
>> 0.) */
>> # define ULLONG_MAX 18446744073709551615ULL
>>
>> # endif /* ISO C99 */
>
>Remove the four lines which you added. Instead add:
>
>#define __USE_ISOC99
>
>That *should* happen automatically in a GNU libc environment when
>_GNU_SOURCE is defined. That it's not happening is a symptom of some
>issues. You've probably reached the point where it's worth designing
>what you want your next OS build to look like and starting from more
>current versions of software.
>
>We discarded the idea of defining __USE_ISOC99 in Exim, because it's a
>double-underbar constant and not the sort of thing we're supposed to be
>touching in an application. _GNU_SOURCE is the documented interface
>which we use.
>
OK...Here is what is in OS/os.h-Linux

# vi os.h-Linux

/* Exim: OS-specific C header file for Linux */

/* Some old systems we've received bug-reports for have a <limits.h>
which
does not pull in <features.h>. Best to just pull it in now and have
done
with the issue. */

#include <features.h>


#define CRYPT_H
#define GLIBC_IP_OPTIONS
#define HAVE_MMAP
#define HAVE_BSD_GETLOADAVG
#define HAVE_SYS_STATVFS_H
#define NO_IP_VAR_H
#define SIG_IGN_WORKS

#define __USE_ISOC99


running a

make clean
and then

make gets me

expand.c: In function 'eval_op_mult':
expand.c:3196:25: error: 'LLONG_MIN' undeclared (first use in this
function)
expand.c:3196:25: note: each undeclared identifier is reported only
once for each function it appears in
expand.c:3200:28: error: 'LLONG_MAX' undeclared (first use in this
function)
expand.c: In function 'expand_string_integer':
expand.c:6178:17: error: 'LLONG_MAX' undeclared (first use in this
function)
expand.c:6178:43: error: 'LLONG_MIN' undeclared (first use in this
function)
make[1]: *** [expand.o] Error 1
make[1]: Leaving directory
`/mnt/scsi-1/Linux/exim-4.80/build-Linux-i386'
make: *** [all] Error 2


which looks to my very unskilled eyes to be the same as earlier
attempts. What'snext to try??

As to planning a new system yes, at some point I'd like to get the
whole thing on Fedora Core-16/whatever is current but right now the
box is supporting several things that I have yet to port over to the
other box...guess I'll need to start figuring those out or tell users
that some functions are simply going away....which isn't really an
option as the major three users of the box which keep it running (ie
pay the bills) need those features.

:(

--
## 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/


r.berber at computer

Jun 4, 2012, 2:49 PM

Post #12 of 28 (1087 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

George R. Kasica:

Nobody pointed the obvious error on your 2nd message... have you tried
the correct command:

make CC="gcc -fgnu89-inline -std=gnu99"

Quotes and everything.

This was needed on systems using an old libc. But is no longer needed,
so your problem might be different.
--
René Berber


--
## 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/


dave at lists

Jun 4, 2012, 3:30 PM

Post #13 of 28 (1084 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

George R. Kasica wrote:

> OK...Here is what is in OS/os.h-Linux
>
> # vi os.h-Linux
>
> /* Exim: OS-specific C header file for Linux */
>
> /* Some old systems we've received bug-reports for have a <limits.h>
> which
> does not pull in <features.h>. Best to just pull it in now and have
> done
> with the issue. */
>
> #include <features.h>
>
>
> #define CRYPT_H
> #define GLIBC_IP_OPTIONS
> #define HAVE_MMAP
> #define HAVE_BSD_GETLOADAVG
> #define HAVE_SYS_STATVFS_H
> #define NO_IP_VAR_H
> #define SIG_IGN_WORKS
>
> #define __USE_ISOC99
>
>
> running a
>
> make clean
> and then
>
> make gets me
>
> expand.c: In function 'eval_op_mult':
> expand.c:3196:25: error: 'LLONG_MIN' undeclared (first use in this
> function)
> expand.c:3196:25: note: each undeclared identifier is reported only
> once for each function it appears in
> expand.c:3200:28: error: 'LLONG_MAX' undeclared (first use in this
> function)
> expand.c: In function 'expand_string_integer':
> expand.c:6178:17: error: 'LLONG_MAX' undeclared (first use in this
> function)
> expand.c:6178:43: error: 'LLONG_MIN' undeclared (first use in this
> function)
> make[1]: *** [expand.o] Error 1
> make[1]: Leaving directory
> `/mnt/scsi-1/Linux/exim-4.80/build-Linux-i386'
> make: *** [all] Error 2
>
>
> which looks to my very unskilled eyes to be the same as earlier
> attempts. What'snext to try??
>
> As to planning a new system yes, at some point I'd like to get the
> whole thing on Fedora Core-16/whatever is current but right now the
> box is supporting several things that I have yet to port over to the
> other box...guess I'll need to start figuring those out or tell users
> that some functions are simply going away....which isn't really an
> option as the major three users of the box which keep it running (ie
> pay the bills) need those features.
>
> :(
>

I've hit the same compilation problem on a hand-crafted system running
glibc-2.2 and linux-2.6.7 kernel. Everything up to 4.77 compiled OK.

I noticed that OS/os.h-HP-UX contains:
#define LLONG_MIN LONG_LONG_MIN
#define LLONG_MAX LONG_LONG_MAX

so I patched expand.c with:
--- src/expand.c 2012-05-31 01:40:15.000000000 +0100
+++ src/expand.c.new 2012-06-03 18:09:01.000000000 +0100
@@ -11,6 +11,12 @@

#include "exim.h"

+/* dcg fix 3/6/2012 */
+#ifndef LLONG_MIN
+#define LLONG_MIN LONG_LONG_MIN
+#define LLONG_MAX LONG_LONG_MAX
+#endif
+
/* Recursively called function */

static uschar *expand_string_internal(uschar *, BOOL, uschar **, BOOL, BOOL);


This compiled OK. Will it work?

Regards
--
Dave Godfrey
dave [at] lists

--
## 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/


exim-users at spodhuis

Jun 4, 2012, 7:39 PM

Post #14 of 28 (1091 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

On 2012-06-04 at 16:21 -0500, George R. Kasica wrote:
> make clean
> and then
>
> make gets me

----------------------------8< cut here >8------------------------------
% make clean

*** "make clean" just removes all .o and .a files
*** Use "make makefile" to force a rebuild of the makefile

[...]
----------------------------8< cut here >8------------------------------

You need to remove the build directory, and/or "make makefile" after
making changes to how Exim is built.

-Phil

--
## 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/


tlyons at ivenue

Jun 4, 2012, 8:02 PM

Post #15 of 28 (1089 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

On Mon, Jun 4, 2012 at 7:39 PM, Phil Pennock <exim-users [at] spodhuis> wrote:

> You need to remove the build directory, and/or "make makefile" after
> making changes to how Exim is built.

George, you can do 'make distclean' which does 'rm -rf build*'. The
'make makefile' won't fix every compile-oriented problem, but it fixes
most things that don't involve compile/link cli args. The 'make
distclean' wipes the build directory (the staging ground for the build
process) and starts the whole build process with a blank slate.

...Todd

--
Always code as if the guy who ends up maintaining your code will be a
violent psychopath who knows where you live. -- Martin Golding

--
## 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/


georgek at netwrx1

Jun 4, 2012, 8:40 PM

Post #16 of 28 (1093 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

>On Mon, 4 Jun 2012 20:02:03 -0700, you wrote:

>On Mon, Jun 4, 2012 at 7:39 PM, Phil Pennock <exim-users [at] spodhuis> wrote:
>
>> You need to remove the build directory, and/or "make makefile" after
>> making changes to how Exim is built.
>
>George, you can do 'make distclean' which does 'rm -rf build*'. The
>'make makefile' won't fix every compile-oriented problem, but it fixes
>most things that don't involve compile/link cli args. The 'make
>distclean' wipes the build directory (the staging ground for the build
>process) and starts the whole build process with a blank slate.
>
>...Todd
>

OK...did the make distclean and make makefile after the edits here and
then make.

Results of each below - sadly not successful:

And the same regardless of whether or not I redefine CC as below or
leave it unredefined.


With the following edit to OS/os-h.Linux


#define int_eximarith_t int32_t
#define PR_EXIM_ARITH "%" PRId32
#define SC_EXIM_ARITH "%" SCNi32
#define SC_EXIM_DEC "%" SCNd32


#CC="gcc -std=gnu99"

# make distclean
/bin/rm -rf build-*

# make makefile

>>> Creating links to source files...
>>> New Makefile & lookups/Makefile.predynamic installed
>>> Use "make makefile" if you need to force rebuilding of the makefile

#make
expand.c: In function 'eval_op_mult':
expand.c:3196:25: error: 'LLONG_MIN' undeclared (first use in this
function)
expand.c:3196:25: note: each undeclared identifier is reported only
once for each function it appears in
expand.c:3200:28: error: 'LLONG_MAX' undeclared (first use in this
function)
expand.c: In function 'expand_string_integer':
expand.c:6178:17: error: 'LLONG_MAX' undeclared (first use in this
function)
expand.c:6178:43: error: 'LLONG_MIN' undeclared (first use in this
function)
make[1]: *** [expand.o] Error 1
make[1]: Leaving directory
`/mnt/scsi-1/Linux/exim-4.80/build-Linux-i386'
make: *** [all] Error 2


With the following edit to OS/os-h.Linux

#define __USE_ISOC99

#CC="gcc -std=gnu99"

# make distclean
/bin/rm -rf build-*

# make makefile

>>> Creating links to source files...
>>> New Makefile & lookups/Makefile.predynamic installed
>>> Use "make makefile" if you need to force rebuilding of the makefile

gcc exim_dbmbuild.c
In file included from exim.h:33:0,
from exim_dbmbuild.c:31:
os.h:18:0: warning: "__USE_ISOC99" redefined [enabled by default]
/usr/local/include/features.h:201:0: note: this is the location of the
previous definition
In file included from exim.h:67:0,
from exim_dbmbuild.c:31:
/usr/local/include/math.h:118:17: error: #if with no expression
In file included from exim.h:67:0,
from exim_dbmbuild.c:31:
/usr/local/include/math.h:354:17: error: #if with no expression
In file included from /usr/local/include/asm/sigcontext.h:5:0,
from /usr/local/include/bits/sigcontext.h:28,
from /usr/local/include/signal.h:307,
from exim.h:68,
from exim_dbmbuild.c:31:
make[1]: *** [exim_dbmbuild.o] Error 1



WITHOUT the CC exported I get the same results

gcc exim_dbmbuild.c
In file included from exim.h:33:0,
from exim_dbmbuild.c:31:
os.h:18:0: warning: "__USE_ISOC99" redefined [enabled by default]
/usr/local/include/features.h:201:0: note: this is the location of the
previous definition
In file included from exim.h:67:0,
from exim_dbmbuild.c:31:
/usr/local/include/math.h:118:17: error: #if with no expression
In file included from exim.h:67:0,
from exim_dbmbuild.c:31:
/usr/local/include/math.h:354:17: error: #if with no expression
In file included from /usr/local/include/asm/sigcontext.h:5:0,
from /usr/local/include/bits/sigcontext.h:28,
from /usr/local/include/signal.h:307,
from exim.h:68,
from exim_dbmbuild.c:31:
/usr/local/include/linux/types.h:13:2: warning: #warning "Attempt to
use kernel headers from user space, see
http://kernelnewbies.org/KernelHeaders" [-Wcpp]
make[1]: *** [exim_dbmbuild.o] Error 1

--
## 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/


wbh at conducive

Jun 4, 2012, 8:54 PM

Post #17 of 28 (1093 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

George R. Kasica wrote:
>> On Mon, 4 Jun 2012 20:02:03 -0700, you wrote:
>
>> On Mon, Jun 4, 2012 at 7:39 PM, Phil Pennock<exim-users [at] spodhuis> wrote:
>>
>>> You need to remove the build directory, and/or "make makefile" after
>>> making changes to how Exim is built.
>>
>> George, you can do 'make distclean' which does 'rm -rf build*'. The
>> 'make makefile' won't fix every compile-oriented problem, but it fixes
>> most things that don't involve compile/link cli args. The 'make
>> distclean' wipes the build directory (the staging ground for the build
>> process) and starts the whole build process with a blank slate.
>>
>> ...Todd
>>
>
> OK...did the make distclean and make makefile after the edits here and
> then make.
>
> Results of each below - sadly not successful:

George,

It really, really, is not an Exim issue....

===
> > Its a generic linux from scratch system more or less...startd out as a
> Caldera Open Linux way back in 1995 but with the demise of that it was
> converted over to a build from scratch on a new set of disks and the
> data copies over around 2001 and maintained and able to compile every
> version of exim up to now with no major issues.

===

Eleven years ago?

Fossil that I am, even I had moved on from FreeBSD 4.X by the FOUR year
mark. And it had not BEEN a kludge of the above sort to begin with...

Trying to keep archeo-coprolytes going by piecemeal measures is giving
rise to a collective headache. Or maybe I have the wrong end of the anatomy.

Put the latest and best onto another box, focus on upgrading those apps
that supposedly don't have modern equivalents (which I do not believe),
and prep for the classical 'parallel cutover' .. to carry you the NEXT
fifteen years if you must.

Nothing lasts forever, least of all rapidly evolving F/LOSS software..

Otherwise, the museum - or troll parking lot - is down the hall somewhere...

Bill
--
韓家標

--
## 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/


georgek at netwrx1

Jun 4, 2012, 9:36 PM

Post #18 of 28 (1086 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

>George,
>
>It really, really, is not an Exim issue....
I'm not going to argue if it is or isn't other applications of current
vintage and exim 4.77 work just fine here 4.80 does not.

>Eleven years ago?
The system has current sets of all utilities, bind, exim, etc. except
for 2 program sets that are the once needed. Don't let he way it was
phrased confuse you. It's current in all respects but the libc areas
since its not a development box and was never meant to be. I don't
claim to be a programmer so I've never worried about upgrading glibc
etc. as I'm told that doing such is not a trivial process and best
left alone unless needed.

>
>Fossil that I am, even I had moved on from FreeBSD 4.X by the FOUR year
>mark. And it had not BEEN a kludge of the above sort to begin with...
Just because its a linux from scratch system doesn't make it a kludge.
If you search for Linux from scratch you'll see that there is actually
a quite well documented and supported community to build
distro-independent systems and at the time there was noting else
available but that.

>Trying to keep archeo-coprolytes going by piecemeal measures is giving
>rise to a collective headache. Or maybe I have the wrong end of the anatomy.
I don't think trying to make an upgrade of a mal program work is
hardly in the class you're making this out to be when all other
aspects of the mail system (SA, clam, majordomo, etc. are current and
running)

>Put the latest and best onto another box, focus on upgrading those apps
>that supposedly don't have modern equivalents (which I do not believe),
>and prep for the classical 'parallel cutover' .. to carry you the NEXT
>fifteen years if you must.
DO you have the $$$ to donate for another box? I run this as a
non-profit/volunteer effort which gets funds as folks deem worthy to
donate...I don't have a spare $1-2000 lying around to buy/build a new
box and then transfer port over the apps some of which are critical
but no longer supported. If you'd like to volunteer time and or
resources we'd really appreciate it....not everyone has a corporate
parent/checkbook to dig money out of as needed.

>Nothing lasts forever, least of all rapidly evolving F/LOSS software..
I have no idea why you consider exim "rapidly evolving" FLOSS
software...its basic structure and functions are not greatly changed
since V 2-3x with exception of the scripting language changes in I
think it was the start of the 3.6x series. And even then unless you
did some very fancy functions the majority ported right over
unchanged.

>Otherwise, the museum - or troll parking lot - is down the hall somewhere...
Bill, I'm hardly a troll, I've been working with Unix/Linux since 1992
and Exim since Version 3.15 or so in June 2000 so please don't treat
someone looking for assistance as such.

I can remember when this list was helpful to all users not just a
place for some to show how much you knew vs. others or how
fast/big/shiny your servers are.

--
===[George R. Kasica]=== +1 262 677 0766
President +1 206 374 6482 FAX
Netwrx Consulting Jackson, WI USA
http://www.netwrx1.com
georgek [at] netwrx1
ICQ #12862186

--
## 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/


wbh at conducive

Jun 4, 2012, 9:41 PM

Post #19 of 28 (1090 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

George R. Kasica wrote:

*rationalizations snipped*

Fer hem's sake, George, why fight it?

- just install a virtualizer. They're free.

Keep yer old gnarly 'cannot be upgraded' stuff in the image of wot you
have now, and put a new, clean, cohesive - and also free - install onto
another image so you can get on with life.

Or make it the 'host'.

Any half-way modern hardware - and I'm talking about roughly $70 - $120
for an AMD Fusion or low-end Intel dual-core econ-board, even a
single-core with hyerthreading - not two thousand bucks - will run the
old software faster than it originally did on bare metal ... and save
back its cost on air-con and power bills even before it wears out its
CPU fan.

End of problem.

Bill
--
韓家標

--
## 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/


wbh at conducive

Jun 4, 2012, 10:46 PM

Post #20 of 28 (1090 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

George R. Kasica wrote:

> I have no idea why you consider exim "rapidly evolving" FLOSS
> software...its basic structure and functions are not greatly changed
> since V 2-3x with exception of the scripting language changes in I
> think it was the start of the 3.6x series. And even then unless you
> did some very fancy functions the majority ported right over
> unchanged.

If you truly didn't notice any more change than that between 3.X and 4.X
Exim, and cannot - or will not - understand how crucial current and
*matching* libs are to Linux when used as a build-platform.... then I
doubt anyone here can help you, no matter how much they would like to do.

Pragmatic does not equate to unhelpful.

You are simply crippling any potential helpers.

Bill
--
韓家標

--
## 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/


exim-users at spodhuis

Jun 4, 2012, 10:56 PM

Post #21 of 28 (1088 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

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/


snabb at epipe

Jun 4, 2012, 11:05 PM

Post #22 of 28 (1089 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

On 2012-06-05 11:36, George R. Kasica wrote:
> Just because its a linux from scratch system doesn't make it a kludge.

I apologize if the following sounds harsh, but it is not intended that
way and I think it is the reality of things:

If you are unable troubleshoot simple compilation problems yourself, you
would be much better off running some common Linux distribution and not
insist on running this ancient kludge which you can not manage. Pick
some distribution which has a long release lifetime, such as
RHEL/SL/CentOS or Ubuntu LTS release. You will have much less problems
in future that way. People will be also able to help you much more
(because other people will have systems running the same setup unlike in
your "from scratch" case).

The problems which you are just now experiencing will only increase over
time as new software versions begin to expect modern features from the
surrounding infrastructure. If you still insist on hitting your head
against the wall, here is one free clue:

Add the missing defines in the Exim linux header file and it will
probably just work. You can just cut and paste them from the header
files of some non-ancient Linux distro. Repeat until you have everything
covered and the compilation succeeds.

You can not expect other people to hand-hold you for free in a situation
like this.

--
Janne Snabb / EPIPE Communications
snabb [at] epipe - http://epipe.com/

--
## 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/


georgek at netwrx1

Jun 5, 2012, 4:35 AM

Post #23 of 28 (1087 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

David:

You win the virtual beer (or whatever you'd like)

Your patch fixed this issue and we're running on 4.8.0


# pwd
/Linux/exim-4.80

# patch -p0 < expand.c.patch
patching file `src/expand.c'

#cp OS/os-h.Linux.orig OS/os-h.Linux

#make distclean
#make makefile

#make

#killall exim

#make install

#/usr/local/exim/sbin/exim -bd -q15m

#tail /var/log/exim/mainlog

2012-06-05 06:23:26 exim 4.80 daemon started: pid=17223, -q15m,
listening for SMTP on port 25 (IPv4) port 465 (IPv4) port 587 (IPv4)
port 8100 (IPv4)


>I've hit the same compilation problem on a hand-crafted system running
>glibc-2.2 and linux-2.6.7 kernel. Everything up to 4.77 compiled OK.
>
>I noticed that OS/os.h-HP-UX contains:
>#define LLONG_MIN LONG_LONG_MIN
>#define LLONG_MAX LONG_LONG_MAX
>
>so I patched expand.c with:
>--- src/expand.c 2012-05-31 01:40:15.000000000 +0100
>+++ src/expand.c.new 2012-06-03 18:09:01.000000000 +0100
>@@ -11,6 +11,12 @@
>
> #include "exim.h"
>
>+/* dcg fix 3/6/2012 */
>+#ifndef LLONG_MIN
>+#define LLONG_MIN LONG_LONG_MIN
>+#define LLONG_MAX LONG_LONG_MAX
>+#endif
>+
> /* Recursively called function */
>
> static uschar *expand_string_internal(uschar *, BOOL, uschar **, BOOL, BOOL);
>
>




>On Mon, 4 Jun 2012 23:30:29 +0100, you wrote:

>George R. Kasica wrote:
>
>> OK...Here is what is in OS/os.h-Linux
>>
>> # vi os.h-Linux
>>
>> /* Exim: OS-specific C header file for Linux */
>>
>> /* Some old systems we've received bug-reports for have a <limits.h>
>> which
>> does not pull in <features.h>. Best to just pull it in now and have
>> done
>> with the issue. */
>>
>> #include <features.h>
>>
>>
>> #define CRYPT_H
>> #define GLIBC_IP_OPTIONS
>> #define HAVE_MMAP
>> #define HAVE_BSD_GETLOADAVG
>> #define HAVE_SYS_STATVFS_H
>> #define NO_IP_VAR_H
>> #define SIG_IGN_WORKS
>>
>> #define __USE_ISOC99
>>
>>
>> running a
>>
>> make clean
>> and then
>>
>> make gets me
>>
>> expand.c: In function 'eval_op_mult':
>> expand.c:3196:25: error: 'LLONG_MIN' undeclared (first use in this
>> function)
>> expand.c:3196:25: note: each undeclared identifier is reported only
>> once for each function it appears in
>> expand.c:3200:28: error: 'LLONG_MAX' undeclared (first use in this
>> function)
>> expand.c: In function 'expand_string_integer':
>> expand.c:6178:17: error: 'LLONG_MAX' undeclared (first use in this
>> function)
>> expand.c:6178:43: error: 'LLONG_MIN' undeclared (first use in this
>> function)
>> make[1]: *** [expand.o] Error 1
>> make[1]: Leaving directory
>> `/mnt/scsi-1/Linux/exim-4.80/build-Linux-i386'
>> make: *** [all] Error 2
>>
>>
>> which looks to my very unskilled eyes to be the same as earlier
>> attempts. What'snext to try??
>>
>> As to planning a new system yes, at some point I'd like to get the
>> whole thing on Fedora Core-16/whatever is current but right now the
>> box is supporting several things that I have yet to port over to the
>> other box...guess I'll need to start figuring those out or tell users
>> that some functions are simply going away....which isn't really an
>> option as the major three users of the box which keep it running (ie
>> pay the bills) need those features.
>>
>> :(
>>
>
>I've hit the same compilation problem on a hand-crafted system running
>glibc-2.2 and linux-2.6.7 kernel. Everything up to 4.77 compiled OK.
>
>I noticed that OS/os.h-HP-UX contains:
>#define LLONG_MIN LONG_LONG_MIN
>#define LLONG_MAX LONG_LONG_MAX
>
>so I patched expand.c with:
>--- src/expand.c 2012-05-31 01:40:15.000000000 +0100
>+++ src/expand.c.new 2012-06-03 18:09:01.000000000 +0100
>@@ -11,6 +11,12 @@
>
> #include "exim.h"
>
>+/* dcg fix 3/6/2012 */
>+#ifndef LLONG_MIN
>+#define LLONG_MIN LONG_LONG_MIN
>+#define LLONG_MAX LONG_LONG_MAX
>+#endif
>+
> /* Recursively called function */
>
> static uschar *expand_string_internal(uschar *, BOOL, uschar **, BOOL, BOOL);
>
>
>This compiled OK. Will it work?
>
>Regards
>--
>Dave Godfrey
>dave [at] lists
--
George, Ginger/The Beast Kasica(8/1/88-3/19/01, 1/17/02- ), Rosie(9/1/07- ), Merlin/MR. Tibbs(8/1/90-5/24/06, 2/10/08- ), Nazarene(6/1/99-1/28/08)
Jackson, WI USA
georgek [at] netwrx1
http://www.netwrx1.com/georgek
ICQ #12862186

("`-''-/").___..--''"`-._
`6_ 6 ) `-. ( ).`-.__.`)
(_Y_.)' ._ ) `._ `. ``-..-'
_..`--'_..-_/ /--'_.' ,'
(il),-'' (li),' ((!.-'

--
## 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/


tlyons at ivenue

Jun 5, 2012, 9:13 AM

Post #24 of 28 (1061 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

On Tue, Jun 5, 2012 at 4:35 AM, George R. Kasica <georgek [at] netwrx1> wrote:
>>I've hit the same compilation problem on a hand-crafted system running
>>glibc-2.2 and linux-2.6.7 kernel. Everything up to 4.77 compiled OK.
>>
>>I noticed that OS/os.h-HP-UX contains:
>>#define LLONG_MIN LONG_LONG_MIN
>>#define LLONG_MAX LONG_LONG_MAX
>>
>>so I patched expand.c with:
>>--- src/expand.c 2012-05-31 01:40:15.000000000 +0100
>>+++ src/expand.c.new 2012-06-03 18:09:01.000000000 +0100
>>@@ -11,6 +11,12 @@
>>
>> #include "exim.h"
>>
>>+/* dcg fix 3/6/2012 */
>>+#ifndef LLONG_MIN
>>+#define LLONG_MIN LONG_LONG_MIN
>>+#define LLONG_MAX LONG_LONG_MAX
>>+#endif
>>+
> David:
>
> You win the virtual beer (or whatever you'd like)
> Your patch fixed this issue and we're running on 4.8.0

Note that this is basically what Phil told you to do in your
os.h-Linux :-) David defined it in the file that he needed it to be
in, whereas putting it in os.h-Linux would just make it globally
visible. I quote Phil:

> 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------------------------------


...Todd
--
Always code as if the guy who ends up maintaining your code will be a
violent psychopath who knows where you live. -- Martin Golding

--
## 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/


georgek at netwrx1

Jun 5, 2012, 9:26 AM

Post #25 of 28 (1060 views)
Permalink
Re: Exim 4.8 build issue [In reply to]

work >On Tue, 5 Jun 2012 09:13:51 -0700, you wrote:

>On Tue, Jun 5, 2012 at 4:35 AM, George R. Kasica <georgek [at] netwrx1> wrote:
>>>I've hit the same compilation problem on a hand-crafted system running
>>>glibc-2.2 and linux-2.6.7 kernel. Everything up to 4.77 compiled OK.
>>>
>>>I noticed that OS/os.h-HP-UX contains:
>>>#define LLONG_MIN LONG_LONG_MIN
>>>#define LLONG_MAX LONG_LONG_MAX
>>>
>>>so I patched expand.c with:
>>>--- src/expand.c 2012-05-31 01:40:15.000000000 +0100
>>>+++ src/expand.c.new 2012-06-03 18:09:01.000000000 +0100
>>>@@ -11,6 +11,12 @@
>>>
>>> #include "exim.h"
>>>
>>>+/* dcg fix 3/6/2012 */
>>>+#ifndef LLONG_MIN
>>>+#define LLONG_MIN LONG_LONG_MIN
>>>+#define LLONG_MAX LONG_LONG_MAX
>>>+#endif
>>>+
>> David:
>>
>> You win the virtual beer (or whatever you'd like)
>> Your patch fixed this issue and we're running on 4.8.0
>
>Note that this is basically what Phil told you to do in your
>os.h-Linux :-) David defined it in the file that he needed it to be
>in, whereas putting it in os.h-Linux would just make it globally
>visible. I quote Phil:
Thought I did the below but actually his earlier steps of 4
lines...which failed.

What change do you recommend making your patch or his edit....I
totally missed that one here too many things flying back & forth.


>
>> 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------------------------------
>
>
>...Todd

--
## 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/

First page Previous page 1 2 Next page Last page  View All exim users RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.