Python

From CBLFS
Revision as of 16:41, 16 April 2007 by Jciccone (talk | contribs) (Non-Multilib)
Jump to navigationJump to search
Download Source: http://www.python.org/ftp/python/2.7.8/Python-2.7.8.tar.bz2
Required Patch: http://svn.cross-lfs.org/svn/repos/patches/Python/Python-2.7.8-gdbm-1.patch
Required Patch (For Multilib): http://svn.cross-lfs.org/svn/repos/patches/Python/Python-2.7.8-multilib-1.patch

Introduction to Python

Project Homepage: Unknown

Dependencies

Optional

Non-Multilib

Template:!Note

Template:!Note

Compile the package:

patch -Np1 -i ../Python-2.7.8-gdbm-1.patch &&
./configure --prefix=/usr --enable-shared &&
make EXTRA_CFLAGS="-fwrapv"

Install the package

make install

Command Explanations

--enable-shared: Enables the building of shared libraries.

-fwrapv: This flag is used to make it so that make test can find the python libraries and so that make install doesn't fail. Why this fixes the problem is unknown. According to GCC, -fwrapv "instructs the compiler to assume that signed arithmetic overflow of addition, subtraction and multiplication wraps around using twos-complement representation."

Multilib

32Bit

Compile the package:

patch -Np1 -i ../Python-2.7.8-gdbm-1.patch &&
CC="gcc ${BUILD32}" CXX="g++ ${BUILD32}" ./configure --prefix=/usr \
    --enable-shared &&
make EXTRA_CFLAGS="-fwrapv"

Install the package

make install &&
mv -v /usr/bin/python{,-32} &&
mv -v /usr/bin/python2.7{,-32} &&
mv -v /usr/include/python2.7/pyconfig{,-32}.h

N32

Change the libdir that Python is going to use to lib32:

patch -Np1 -i ../Python-2.7.8-multilib-1.patch
sed -i -e "s:@@MULTILIB_DIR@@:lib32:g" \
        Lib/distutils/command/install.py \
        Lib/distutils/sysconfig.py \
        Lib/site.py \
        Makefile.pre.in \
        Modules/Setup.dist \
        Modules/getpath.c \
        setup.py

Compile the package:

patch -Np1 -i ../Python-2.7.8-gdbm-1.patch &&
CC="gcc ${BUILDN32}" CXX="g++ ${BUILDN32}" ./configure --prefix=/usr \
    --libdir=/usr/lib32 --enable-shared &&
make EXTRA_CFLAGS="-fwrapv"

Install the package

make install &&
mv -v /usr/bin/python{,-n32} &&
mv -v /usr/bin/python2.7{,-n32} &&
mv -v /usr/include/python2.7/pyconfig{,-n32}.h

64Bit

Change the libdir that Python is going to use to lib64:

patch -Np1 -i ../Python-2.7.8-multilib-1.patch
sed -i -e "s:@@MULTILIB_DIR@@:lib64:g" \
        Lib/distutils/command/install.py \
        Lib/distutils/sysconfig.py \
        Lib/site.py \
        Makefile.pre.in \
        Modules/Setup.dist \
        Modules/getpath.c \
        setup.py

Compile the package:

patch -Np1 -i ../Python-2.7.8-gdbm-1.patch &&
CC="gcc ${BUILD64}" CXX="g++ ${BUILD64}" ./configure --prefix=/usr \
    --libdir=/usr/lib64 --enable-shared &&
make EXTRA_CFLAGS="-fwrapv"

Install the package

make install &&
mv -v /usr/bin/python{,-64} &&
mv -v /usr/bin/python2.7{,-64} &&
ln -sfv multiarch_wrapper /usr/bin/python &&
ln -sfv multiarch_wrapper /usr/bin/python2.7 &&
mv -v /usr/include/python2.7/pyconfig{,-64}.h

Creating a Stub Header (Multilib Only)

Creating a Generic Stub Header

cat > /usr/include/python2.7/pyconfig.h << "EOF"
/* pyconfig.h - Stub Header  */
#ifndef __STUB__PYCONFIG_H__
#define __STUB__PYCONFIG_H__

#if defined(__x86_64__) || \
    defined(__sparc64__) || \
    defined(__arch64__) || \
    defined(__powerpc64__) || \
    defined (__s390x__)
# include "pyconfig-64.h"
#else
# include "pyconfig-32.h"
#endif

#endif /* __STUB__PYCONFIG_H__ */
EOF

Creating a Stub Header For Mips

cat > /usr/include/python2.7/pyconfig.h << "EOF"
/* pyconfig.h - Stub Header  */
#ifndef __STUB__PYCONFIG_H__
#define __STUB__PYCONFIG_H__

#include <sgidefs.h>

#if (_MIPS_SIM == _ABIO32)
# include "pyconfig-32.h"
#elif (_MIPS_SIM == _ABIN32)
# include "pyconfig-n32.h"
#elif (_MIPS_SIM == _ABI64)
# include "pyconfig-64.h"
#endif

#endif /* __STUB__PYCONFIG_H__ */
EOF

Contents

Installed Programs: pydoc, python, python2.7, python-config, python2.7-config, smtpd.py, and (if Tk is installed) idle
Installed Libraries: libpython2.7.so and various modules in /usr/lib/lib-dynload
Installed Directories: /usr/include/python2.7, /usr/lib/python2.7

Short Descriptions

pydoc is a tool for reading python documentation.
python is an interpreted, interactive, object-oriented programming language.
python2.7 is a version-specific version of python.
python-config is a symlink to python2.7-config.
python2.7.8-config ???
smtpd.py is a Python implemention of the minimal SMTP protocol as defined in RFC 821.
idle is an Integrated DeveLopment Environment (IDLE) for Python. It's based on Tkinter, Python's bindings to the Tk widget set.
libpython2.7.so ???
Retrieved from "?title=Python&oldid=9565"