Difference between revisions of "Python"
Line 46: | Line 46: | ||
installed python libraries it needs for the installation and is able | installed python libraries it needs for the installation and is able | ||
to complete it. | to complete it. | ||
− | |||
− | |||
− | |||
Compile the package: | Compile the package: |
Revision as of 13:59, 5 January 2007
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 |
Contents
Introduction to Python
Python is an interpreted, interactive, object-oriented programming language that combines remarkable power with very clear syntax. For an introduction to programming in Python you are referred to the Python Tutorial. The Python Library Reference documents built-in and standard types, constants, functions and modules. Finally, the Python Reference Manual describes the syntax and semantics of the core language in (perhaps too) much detail. (These documents may be located via http://www.python.org; they may be installed on your system as well.)
Python's basic power can be extended with your own modules written in C or C++. On most systems such modules may be dynamically loaded. Python is also adaptable as an extension language for existing applications. See the internal documentation for hints.
Documentation for installed Python modules and packages can be viewed by running the pydoc program.
Dependencies
Optional
Non-Multilib
Note: If the test suite (make test) fails because it cannot find python's math library, then you will need to install python before you can run the tests.
Note: If the installation of python fails, rebuild python. It appears to be somewhat inconsistant with regards to whether it works or not. The -fwrapv flag used with make attempts to fixes this. If it still doesn't complete make install without failing, then use make -i install instead (-i tells make to ignore errors). It's less desirable, but it should work. The other option is to run make install twice. The second time around it locates the installed python libraries it needs for the installation and is able to complete it.
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.h << "EOF" /* pyconfig.h.h - Stub Header */ #ifndef __STUB__PYCONFIG.H_H__ #define __STUB__PYCONFIG.H_H__ #if defined(__x86_64__) || \ defined(__sparc64__) || \ defined(__arch64__) || \ defined(__powerpc64__) || \ defined (__s390x__) # include "pyconfig.h-64.h" #else # include "pyconfig.h-32.h" #endif #endif /* __STUB__PYCONFIG.H_H__ */ EOF
Creating a Stub Header For Mips
cat > /usr/include/python2.7/pyconfig.h.h << "EOF" /* pyconfig.h.h - Stub Header */ #ifndef __STUB__PYCONFIG.H_H__ #define __STUB__PYCONFIG.H_H__ #include <sgidefs.h> #if (_MIPS_SIM == _ABIO32) # include "pyconfig.h-32.h" #elif (_MIPS_SIM == _ABIN32) # include "pyconfig.h-n32.h" #elif (_MIPS_SIM == _ABI64) # include "pyconfig.h-64.h" #endif #endif /* __STUB__PYCONFIG.H_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 | ??? |