Subject: AIX-NOTES FOR 1.4
From: Manus Hand <Manus.Hand@evolving.com>
To: guido@CNRI.Reston.VA.US
cc: Vladimir.Marangozov@imag.fr
Date: Fri, 25 Oct 1996 15:19:23 -0600 (MDT)

==============================================================================
                              COMPILER INFORMATION
------------------------------------------------------------------------------

(1) A problem has been reported with "make test" failing because of "weird
    indentation."  Searching the comp.lang.python newsgroup reveals several
    threads on this subject, and it seems to be a compiler bug in an old
    version of the AIX CC compiler.  However, the compiler/OS combination
    which has this problem is not identified.  In preparation for the 1.4
    release, Vladimir Marangozov (Vladimir.Marangozov@imag.fr) and Manus Hand
    (mhand@csn.net) reported no such troubles for the following compilers and
    operating system versions:
       AIX C compiler version 3.1.2 on AIX 4.1.3 and AIX 4.1.4
       AIX C compiler version 1.3.0 on AIX 3.2.5
    If you have this problem, please report the compiler/OS version.

(2) Stefan Esser (se@MI.Uni-Koeln.DE), in work done to compile Python
    1.0.0 on AIX 3.2.4, reports that AIX compilers don't like the LANG
    environment varaiable set to European locales.  This makes the compiler
    generate floating point constants using "," as the decimal seperator,
    which the assembler doesn't understand (or perhaps it is the other way
    around, with the assembler expecting, but not getting "," in float
    numbers).  "LANG=C; export LANG" solves the problem, as does
    "LANG=C $(MAKE) ..." in the master Makefile.

(3) The cc (or xlc) compiler considers "Python/ceval.c" too complex to
    optimize, except when invoked with "-qmaxmem=4000"

(4) Some problems (due to _AIX not being #defined) when python 1.0.0 was
    compiled using 'gcc -ansi' were reported by Stefan Esser, but were not
    investigated.

(5) The cc compiler has internal variables named "__abs" and "__div".  These
    names are reserved and may not be used as program variables in compiled
    source.  (As an anecdote in support of this, the implementation of
    Python/operator.c had this problem in the 1.4 beta releases, and the
    solution was to re#define some core-source variables having these names,
    to give these python variables different names if the build is being done
    on AIX.)

(6) As mentioned in the README, builds done immediately after previous builds
    (without "make clean" or "make clobber") sometimes fail for mysterious
    reasons.  There are some unpredictable results when the configuration
    is changed (that is, if you "configure" with different parameters) or if
    intermediate changes are made to some files.  Performing "make clean" or
    "make clobber" resolves the problems.

==============================================================================
                                THREAD SUPPORT
------------------------------------------------------------------------------

AIX uses pthreads.  However, as of AIX version 4, there are two (incompatible)
types of pthreads on AIX:
        a)  AIX DCE pthreads (on AIX 3.2.5)
        b)  AIX 4 pthreads (on AIX 4.1 and up)
Support has been added to Python to handle the distinction.

The cc and gcc compilers do not initialize pthreads properly. The only
compilers that can initialize pthreads properly are IBM *_r* compilers,
which use the crt0_r.o module, and which invoke ld with the reentrant
version of libc (libc_r).

In order to enable thread support, follow these steps:
   1.  Uncomment the thread module in Modules/Setup
   2.  configure --without-gcc --with-thread ...
   3.  make CC="cc_r" OPT="-O -qmaxmem=4000"

For example, to make with both threads and readline, use:
  ./configure --without-gcc --with-thread --with-readline=/usr/local/lib
  make CC=cc_r OPT="-O2 -qmaxmem=4000"

If the "make" which is used ignores the "CC=cc_r" directive, one could alias
the cc command to cc_r (for example, in C-shell, perform an "alias cc cc_r").

Vladimir Marangozov (Vladimir.Marangozov@imag.fr) provided this information,
and he reports that a cc_r build initializes threads properly and that all
demos on threads run okay with cc_r.

==============================================================================
                            SHARED LIBRARY SUPPORT
------------------------------------------------------------------------------

AIX shared library support was added to Python in the 1.4 release by Manus
Hand (mhand@csn.net) and Vladimir Marangozov (Vladimir.Marangozov@imag.fr).

Python modules may now be built as shared libraries on AIX using the normal
process of uncommenting the "*shared*" line in Modules/Setup.in before the
build.  There is one additional step required, and that is to also uncomment
the line in Modules/Setup.in which reads
    LINKCC= makexp_aix python.exp "" $(MYLIBS) $(ADDOBJS) ; $(CC)

AIX shared libraries require that an "export" and "import" file be provided
at compile time to list all extern symbols which may be shared between
modules.  The effect of uncommenting the LINKCC line in Modules/Setup.in is
to create the "export" file for the modules and the libraries that belong to
the Python core.  This is done by the "makexp_aix" script, which creates a
file named python.exp before performing the link of the python binary.

When shared library modules (.so files) are made, a second shell script
is invoked.  This script is named "ld_so_aix" and is also provided with
the distribution in the Modules subdirectory.  This script acts as an "ld"
wrapper which hides the explicit management of "export" and "import" files;
it adds the appropriate arguments (in the appropriate order) to the link
command that creates the shared module.  Among other things, it specifies
that the "python.exp" file is an "import" file for the shared module.

A default python.exp file is provided with the distribution.  It will be
overwritten (by the action of the makexp_aix script) if you build with shared
libraries.  The python.exp file which comes with the distribution contains
all extern symbols of a completely statically built python executable.
Any python.exp file which is created from a build of python with some of the
modules linked as shared modules will obviously not list symbols from the now
dynamic modules.  The distributed python.exp is provided so that, with
assistance from the ld_so_aix and makexp_aix scripts, shared extension
modules may be added to an otherwise completely static python build.

At the time of this writing, neither the python.exp file nor the makexp_aix
or ld_so_aix scripts are installed by the make procedure, so you should
remember to keep these and/or copy them to a different location for
safekeeping if you wish to use them to add shared extension modules to
python.  However, if the make process has been updated since this writing,
these files MAY have been installed for you during the make by the
LIBAINSTALL rule, in which case the need to make safe copies is obviated.

If you wish to add a shared extension module to the language, you would follow
the steps given in the example below (the example adds the shared extension
module "spam" to python):
    1.  Make sure that "ld_so_aix" and "makexp_aix" are in your path.
    2.  The "python.exp" file should be in the current directory.
    3.  Issue the following commands or include them in your Makefile:
            cc -c spammodule.c
            ld_so_aix cc spammodule.o -o spammodule.so

For more detailed information on the shared library support, examine the
contents of the "ld_so_aix" and "makexp_aix" scripts or refer to the AIX
documentation.

NOTE:  If the extension module is written in C++ and contains templates,
       an alternative to "ld_so_aix" is the /usr/lpp/xlC/bin/makeC++SharedLib
       script.  Chris Myers (myers@TC.Cornell.EDU) reports that ld_so_aix
       works well for some C++ (including the C++ that is generated
       automatically by the Python SWIG package [SWIG can be found at
       http://www.cs.utah.edu/~beazley/SWIG/swig.html]).  However, it is not
       known whether makeC++SharedLib can be used as a complete substitute
       for ld_so_aix.

==============================================================================
