Building Python 2.2.1 for HP Tru64 UNIX V4.0F

Narendra Raavi narendra at att.com
Wed Oct 9 20:27:31 EDT 2002


All, Thanks for the several suggestions.

1.a: I am using the --with-pydebug option for configure.
1.b: I have the same problem with gcc3.1.
1.c: Using "-std1 -msg_disable longlongtype" did not work for Python2.2.1 or
Python2.2.2b1.
1.d: For Python2.2.2b1 the error occurs even earlier:

cc -c -O -Olimit 1500 -I. -I./Include -DHAVE_CONFIG_H  -o
Objects/unicodeobject.
o Objects/unicodeobject.c
cc: Error: Objects/unicodeobject.c, line 1235: Invalid expression. (badexpr)
        nallocated = Py_SAFE_DOWNCAST(sizeof(stackbuf), size_t, int);
---------------------^
cc: Error: Objects/unicodeobject.c, line 1235: Invalid statement. (badstmt)
        nallocated = Py_SAFE_DOWNCAST(sizeof(stackbuf), size_t, int);
---------------------^
cc: Error: Objects/unicodeobject.c, line 1293: Invalid expression. (badexpr)
        nneeded = Py_SAFE_DOWNCAST(p - stackbuf, long, int);
------------------^
cc: Error: Objects/unicodeobject.c, line 1293: Invalid statement. (badstmt)
        nneeded = Py_SAFE_DOWNCAST(p - stackbuf, long, int);
------------------^
cc: Error: Objects/unicodeobject.c, line 1299: Invalid expression. (badexpr)
        nneeded = Py_SAFE_DOWNCAST(p - PyString_AS_STRING(v), long, int);
------------------^
cc: Error: Objects/unicodeobject.c, line 1299: Invalid statement. (badstmt)
        nneeded = Py_SAFE_DOWNCAST(p - PyString_AS_STRING(v), long, int);
------------------^
*** Exit 1
Stop.

2. The problem seems to be (a) the cpp translation of  this macro OR (b) the
__assert implementation (i'm using the example I provided):

 p = (VALUE, WIDE, NARROW) (if ((int) ((WIDE)(NARROW)(VALUE) == (VALUE))) ;
else __assert("(WIDE)(NARROW)(VALUE) == (VALUE)", "x.c", 17),
(NARROW)(VALUE))(c, int, char) ;


3. My main motivation in using the --with-pydebug option is to be able to
dump internals to inspect them. Just learning.

4. BTW, I love the way the code (that I have looked at - about 35%) is
written. Clean, easily understood, uncluttered. The Python developers
deserve kudos for this.

5. It appears that there is a bug report that has not been fixed. One fix is
to replace the assert with a function that actually returns something. I'll
try to get this working and see if the Python folks would like a fix.

"Holden Caulfield" <phoebe_1 at att.net> wrote in message
news:c2595393.0210091225.3a3d4d at posting.google.com...
> "change" <changeme at changeme> wrote in message
news:<ao18ke$1tn11 at kcweb01.netnews.att.com>...
> > Hi,
> >
> > I'm trying to build Python 2.2.1 for HP (COMPAQ) Tru64 UNIX V4.0F with
the
> > debug option.
> >
> > The build fails in Python/marshal.c:
> >
> > cc -c -O -Olimit 1500 -I. -I./Include -DHAVE_CONFIG_H  -o
Python/marshal.o
> > Python/marshal.c
> > cc: Error: Python/marshal.c, line 64: Invalid expression. (badexpr)
> >                 *p->ptr++ = Py_SAFE_DOWNCAST(c, int, char);
> > ----------------------------^
> > cc: Error: Python/marshal.c, line 64: Invalid statement. (badstmt)
> >                 *p->ptr++ = Py_SAFE_DOWNCAST(c, int, char);
> > ----------------------------^
> > *** Exit 1
> > Stop.
> >
> >
> > The problem seems to be the definition of Py_SAFE_DOWNCAST in
> > Include/pyport.h
> >
> > #ifdef Py_DEBUG
> > #define Py_SAFE_DOWNCAST(VALUE, WIDE, NARROW) \
> >         (assert((WIDE)(NARROW)(VALUE) == (VALUE)), (NARROW)(VALUE))
> > #else
> > #define Py_SAFE_DOWNCAST(VALUE, WIDE, NARROW) (NARROW)(VALUE)
> > #endif
> >
> >
> > I also wrote a simple c program mimicking this behavior:
> >
> > #include <stdio.h>
> > #include <assert.h>
> >
> >
> > #define SAFE_DOWNCAST(VALUE, WIDE, NARROW)  (assert
((WIDE)(NARROW)(VALUE)
> > == (VALUE)), (NARROW)(VALUE))
> >
> > main () {
> >
> >   char p ;
> >   int c ;
> >
> >   c = 65 ;
> >   p = SAFE_DOWNCAST(c, int, char) ;
> >
> >   printf ("INT is: %d  and CHAR is: %c\n", c, p) ;
> >
> > }
> >
> >
> > This program does not seem to compile with the cc or the gcc compilers.
Is
> > there a problem with my C compilers or the switches I use with them?
> >
> > Thanks,
> >
> > Narendra
>
>
> All right do this:
>
> CC="cc -std1 -msg_disable longlongtype"
> export CC
> ( I am assuming you are bourne/Korn shell)
> Then run configure again. It will compile fine with or w/o the Debug
> option
> enabled.
> Explanation of the options:
>  -std1 : This enforces strict compliance with ANSI C standard. Python
> seems to be one of the few apps that I have had success using the
> flag. Anyways, it is good thing to be compliant with the standard :) I
> guess
>  -msg_disable longlongtype:
>     All this does is reduce the noise on the long long type being a
> language extension (it is Informational and *not* warning btw).
>
> Now, as to why '-std1' would work. I have not had the time to shift
> through this. What it does do is define the macro __STDC__ = 1.
>
> cheers





More information about the Python-list mailing list