########################## # User-modifiable configs ########################## # Build tkinter? #WARNING: Commenting out doesn't work. Last line is what's used. %define config_tkinter no %define config_tkinter yes %define osplat aix6 %define libdir64 %{_prefix}/lib64 ################################# # End of user-modifiable configs ################################# %define name python %define version 2.7.5 %define BASE_VERSION 2.7 %define release 1 # kludge to get around rpm define weirdness %define include_tkinter %(if [ "%{config_tkinter}" = yes ]; then echo 1; else echo 0; fi) Summary: An interpreted, interactive, object-oriented programming language. Name: %{name} Version: %{version} Release: %{release} License: Modified CNRI Open Source License Group: Development/Languages Source0: ftp://ftp.python.org/pub/python/%{version}/Python-%{version}.tar.bz2 Source1: ftp://ftp.python.org/pub/python/doc/%{version}/html-%{version}.tar.bz2 Source2: pyconfig.h Patch0: python-%{version}-aixsetup.patch Patch1: python-%{version}-pypath.patch Patch2: python-%{version}-disable-tkinter.patch Patch3: python-%{version}-64bit-pypath.patch Patch4: python-%{version}-64bit.patch URL: http://www.python.org BuildRoot: /var/tmp/%{name}-%{version}-root Provides: /opt/freeware/bin/python BuildPrereq: expat-devel >= 1.95.2 BuildPrereq: gdbm-devel BuildRequires: readline >= 4.2a Prefix: %{_prefix} %ifos aix5.3 %define buildhost powerpc-ibm-aix5.3.0.0 %endif %ifos aix6.1 %define buildhost powerpc-ibm-aix6.1.0.0 %endif %description Python is an interpreted, interactive, object-oriented programming language. It incorporates modules, exceptions, dynamic typing, very high level dynamic data types, and classes. Python combines remarkable power with very clear syntax. It has interfaces to many system calls and libraries, as well as to various window systems, and is extensible in C or C++. It is also usable as an extension language for applications that need a programmable interface. Finally, Python is portable: it runs on many brands of UNIX, on PCs under Windows, MS-DOS, and OS/2, and on the Mac. %package devel Summary: The libraries and header files needed for Python extension development. Requires: python = %{PACKAGE_VERSION} Group: Development/Libraries %description devel The Python programming language's interpreter can be extended with dynamically loaded extensions and can be embedded in other programs. This package contains the header files and libraries needed to do these types of tasks. Install python-devel if you want to develop Python extensions. The python package will also need to be installed. You'll probably also want to install the python-docs package, which contains Python documentation. %package docs Summary: Documentation for the Python programming language. Group: Documentation Conflicts: python < %{PACKAGE_VERSION} %description docs The python-docs package contains documentation on the Python programming language and interpreter. The documentation is provided in ASCII text files and in LaTeX source files. Install the python-docs package if you'd like to use the documentation for the Python language. %if %{include_tkinter} %package -n tkinter Summary: A graphical user interface for the Python scripting language. Group: Development/Languages Requires: python = %{PACKAGE_VERSION} %description -n tkinter The Tkinter (Tk interface) program is an graphical user interface for the Python scripting language. You should install the tkinter package if you'd like to use a graphical user interface for Python programming. %endif %package tools Summary: A collection of development tools included with Python. Group: Development/Tools Requires: python = %{PACKAGE_VERSION} %description tools The Python package includes several development tools that are used to build python programs. This package contains a selection of those tools, including the IDLE Python IDE. Install python-tools if you want to use these tools to develop Python programs. You will also need to install the python and tkinter packages. %prep %setup -q -n Python-%{version} #cp Modules/Setup.dist Modules/Setup #/opt/freeware/bin/patch -p2 -s < %{_sourcedir}/Python-%{version}.patch #exit la bite a toto # A couple of one-liner patches, on the fly. #perl -pi -e "s|/usr/include/load.h|/usr/vacpp/include/load.h|;" \ # Python/dynload_aix.c configure.in configure #perl -pi -e "s|yperr_string|(const char*)yperr_string|g;" \ # Modules/nismodule.c %patch0 mkdir ../32bit mv * ../32bit mv ../32bit . mkdir 64bit cp -r 32bit/* 64bit/ cd 32bit %patch1 cd ../64bit %patch2 %patch3 %patch4 %build # setup environment for 32-bit and 64-bit builds export AR="/usr/bin/ar -X32_64" export NM="/usr/bin/nm -X32_64" export CONFIG_SHELL=/usr/bin/bash export CONFIG_ENV_ARGS=/usr/bin/bash export OBJECT_MODE=64 export LDFLAGS="-L%{libdir64} -L%{_libdir} -lbsd -lXext" export CPPFLAGS="-I/usr/include" cd 64bit ./configure \ --prefix=%{prefix} \ --libdir=%{libdir64} \ --mandir=%{_mandir} \ --with-gcc="xlc_r -ma -I/opt/freeware/include -DAIX_GENUINE_CPLUSCPLUS -Wl,-brtl" \ --with-cxx-main="xlC_r -ma -I/opt/freeware/include -DAIX_GENUINE_CPLUSCPLUS -Wl,-brtl" \ --disable-ipv6 \ --with-threads \ --with-system-ffi \ --without-pymalloc \ --with-system-expat \ OPT="-O2" gmake %{?_smp_mflags} libpython%{BASE_VERSION}.a CreateExportList -X64 libpython.exp libpython%{BASE_VERSION}.a xlc_r -q64 -qmkshrobj libpython%{BASE_VERSION}.a -o libpython%{BASE_VERSION}.so -bE:libpython.exp -lm rm -f libpython.exp libpython%{BASE_VERSION}.a ${AR} -rv libpython%{BASE_VERSION}.a libpython%{BASE_VERSION}.so LIBPATH=`pwd`:/usr/lib/threads:/usr/lib:/usr/lib64 gmake LDFLAGS="$LDFLAGS -blibpath:%{prefix}/lib64:%{prefix}/lib:/usr/lib/threads:/usr/lib:/usr/lib64" # build 32-bit version export OBJECT_MODE=32 export LDFLAGS="-L%{_libdir} -lbsd -lXext" cd ../32bit ./configure \ --prefix=%{prefix} \ --mandir=%{_mandir} \ --with-gcc="xlc_r -ma -I/opt/freeware/include -DAIX_GENUINE_CPLUSCPLUS -Wl,-brtl" \ --with-cxx-main="xlC_r -ma -I/opt/freeware/include -DAIX_GENUINE_CPLUSCPLUS -Wl,-brtl" \ --disable-ipv6 \ --with-threads \ --with-system-ffi \ --without-pymalloc \ --with-system-expat \ OPT="-O2" gmake %{?_smp_mflags} libpython%{BASE_VERSION}.a CreateExportList -X32 libpython.exp libpython%{BASE_VERSION}.a xlc_r -q32 -qmkshrobj libpython%{BASE_VERSION}.a -o libpython%{BASE_VERSION}.so -bE:libpython.exp -lm rm -f libpython.exp libpython%{BASE_VERSION}.a ${AR} -rv libpython%{BASE_VERSION}.a libpython%{BASE_VERSION}.so LIBPATH=`pwd`:/usr/lib/threads:/usr/lib gmake LDFLAGS="$LDFLAGS -blibpath:%{prefix}/lib:/usr/lib/threads:/usr/lib" %install # set the install path [ -d "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT cd 64bit export OBJECT_MODE=64 LIBPATH=`pwd`:/usr/lib/threads:/usr/lib:/usr/lib64 gmake install DESTDIR=$RPM_BUILD_ROOT LIBPATH=`pwd`:/usr/lib/threads:/usr/lib:/usr/lib64 gmake maninstall DESTDIR=$RPM_BUILD_ROOT cp ${RPM_BUILD_ROOT}%{_includedir}/%{name}%{BASE_VERSION}/pyconfig.h ${RPM_BUILD_ROOT}%{_includedir}/%{name}%{BASE_VERSION}/pyconfig-ppc64.h cp libpython%{BASE_VERSION}.a ${RPM_BUILD_ROOT}/%{prefix}/lib64 strip -X32_64 $RPM_BUILD_ROOT%{prefix}/bin/python || : ( cd ${RPM_BUILD_ROOT}%{_bindir} for f in * ; do mv ${f} ${f}_64 done ln -sf python2.7-config_64 python2-config_64 ln -sf python2-config_64 python-config_64 ln -sf python2.7_64 python2_64 ln -sf python2_64 python_64 mv smtpd.py_64 smtpd_64.py mv %{name}%{BASE_VERSION}-config_64 %{name}%{BASE_VERSION}_64-config rm -f %{name}-config_64 ln -sf %{name}%{BASE_VERSION}_64-config %{name}_64-config for f in 2to3_64 idle_64 pydoc_64 python2.7_64-config ; do cat ${f} | \ sed 's|\/opt\/freeware\/bin\/python2.7 |\/opt\/freeware\/bin\/python2.7_64|' \ > tmpfile.tmp mv -f tmpfile.tmp ${f} done rm -f tmpfile.tmp ) cd ../32bit export OBJECT_MODE=32 LIBPATH=`pwd`:/usr/lib/threads:/usr/lib gmake install DESTDIR=$RPM_BUILD_ROOT LIBPATH=`pwd`:/usr/lib/threads:/usr/lib gmake maninstall DESTDIR=$RPM_BUILD_ROOT cp ${RPM_BUILD_ROOT}%{_includedir}/%{name}%{BASE_VERSION}/pyconfig.h ${RPM_BUILD_ROOT}%{_includedir}/%{name}%{BASE_VERSION}/pyconfig-ppc32.h cp libpython%{BASE_VERSION}.a ${RPM_BUILD_ROOT}/%{prefix}/lib /usr/bin/strip -X32_64 ${RPM_BUILD_ROOT}%{_bindir}/* || : cd .. ######## # Tools #32 echo '#!/bin/ksh' >${RPM_BUILD_ROOT}%{_bindir}/idle echo 'exec %{_prefix}/bin/python /opt/freeware/lib/python%{BASE_VERSION}/idlelib/idle.py' >>${RPM_BUILD_ROOT}%{_bindir}/idle chmod 755 ${RPM_BUILD_ROOT}%{_bindir}/idle cp -R /opt/freeware/src/packages/BUILD/Python-2.7.5/32bit/Tools ${RPM_BUILD_ROOT}%{prefix}/lib/python%{BASE_VERSION} #64 echo '#!/bin/ksh' >${RPM_BUILD_ROOT}%{_bindir}/idle_64 echo 'exec %{_prefix}/bin/python_64 /opt/freeware/lib64/python%{BASE_VERSION}/idlelib/idle.py' >>${RPM_BUILD_ROOT}%{_bindir}/idle_64 chmod 755 ${RPM_BUILD_ROOT}%{_bindir}/idle_64 chmod 755 ${RPM_BUILD_ROOT}%{_bindir}/pydoc_64 chmod 755 ${RPM_BUILD_ROOT}%{_bindir}/python2.7_64-config chmod 755 ${RPM_BUILD_ROOT}%{_bindir}/2to3_64 chmod 755 ${RPM_BUILD_ROOT}%{_bindir}/smtpd_64.py cp -R /opt/freeware/src/packages/BUILD/Python-2.7.5/64bit/Tools ${RPM_BUILD_ROOT}%{prefix}/lib64/python%{BASE_VERSION} # MAKE FILE LISTS rm -f mainpkg.files find "$RPM_BUILD_ROOT""%{prefix}"/lib/python%{BASE_VERSION}/lib-dynload -type f | sed "s|^${RPM_BUILD_ROOT}|/|" | grep -v -e '_tkinter.so$' >mainpkg.files find "$RPM_BUILD_ROOT""%{prefix}"/lib64/python%{BASE_VERSION}/lib-dynload -type f | sed "s|^${RPM_BUILD_ROOT}|/|" | grep -v -e '_tkinter.so$' >> mainpkg.files find "$RPM_BUILD_ROOT""%{prefix}"/bin | sed "s|^${RPM_BUILD_ROOT}|/|" | grep -v -e '/bin/idle$' -v -e '2to3' -v -e '2to3_64' \ -v -e 'idle_64' -v -e 'smtpd.py' -v -e 'smtpd_64.py'>>mainpkg.files rm -f tools.files find "$RPM_BUILD_ROOT""%{prefix}"/lib/python%{BASE_VERSION}/Tools -type f | sed "s|^${RPM_BUILD_ROOT}|/|" > tools.files #echo "%{prefix}"/bin/idle >>tools.files find "$RPM_BUILD_ROOT""%{prefix}"/lib64/python%{BASE_VERSION}/Tools -type f | sed "s|^${RPM_BUILD_ROOT}|/|" >> tools.files #echo "%{prefix}"/bin/idle_64 >>tools.files ( cd ${RPM_BUILD_ROOT} for dir in bin include lib lib64 man do mkdir -p usr/$dir cd usr/$dir ln -sf ../..%{_prefix}/$dir/* . cd - done # cd ${RPM_BUILD_ROOT} # ln -sf ../../opt/freeware/bin/python2.7 /opt/freeware/bin/python # cd - ) %clean rm -fr $RPM_BUILD_ROOT rm -f mainpkg.files tools.files #%files -f mainpkg.files %files -n python %defattr(-,root,system) %doc 32bit/LICENSE #%{prefix}/man/man1/python.1 %dir %{prefix}/include/python%{BASE_VERSION} %dir %{prefix}/lib/python%{BASE_VERSION}/ %{prefix}/lib/python%{BASE_VERSION}/lib-dynload/* %{prefix}/lib/libpython%{BASE_VERSION}.a %{prefix}/lib/python%{BASE_VERSION}/*.py* %{prefix}/lib/python%{BASE_VERSION}/pdb.doc %{prefix}/lib/python%{BASE_VERSION}/compiler %{prefix}/lib/python%{BASE_VERSION}/ctypes #%{prefix}/lib/python%{BASE_VERSION}/html #%{prefix}/lib/python%{BASE_VERSION}/urllib #%{prefix}/lib/python%{BASE_VERSION}/http #%{prefix}/lib/python%{BASE_VERSION}/dbm %{prefix}/lib/python%{BASE_VERSION}/wsgiref %{prefix}/lib/python%{BASE_VERSION}/importlib %{prefix}/lib/python%{BASE_VERSION}/pydoc_data %{prefix}/lib/python%{BASE_VERSION}/curses %{prefix}/lib/python%{BASE_VERSION}/distutils %{prefix}/lib/python%{BASE_VERSION}/email %{prefix}/lib/python%{BASE_VERSION}/encodings %{prefix}/lib/python%{BASE_VERSION}/hotshot %{prefix}/lib/python%{BASE_VERSION}/idlelib %{prefix}/lib/python%{BASE_VERSION}/plat-%{osplat} %{prefix}/lib/python%{BASE_VERSION}/site-packages %{prefix}/lib/python%{BASE_VERSION}/xml %{prefix}/lib/python%{BASE_VERSION}/json %{prefix}/lib/python%{BASE_VERSION}/multiprocessing %{prefix}/lib/python%{BASE_VERSION}/logging %{prefix}/lib/python%{BASE_VERSION}/lib2to3 /usr/include/python%{BASE_VERSION} /usr/lib/libpython%{BASE_VERSION}.a /usr/lib/python%{BASE_VERSION} /opt/freeware/bin/py* /usr/bin/python* /usr/bin/pydoc* %dir %{prefix}/lib64/python%{BASE_VERSION}/ %{prefix}/lib64/libpython%{BASE_VERSION}.a %{prefix}/lib64/python%{BASE_VERSION}/lib-dynload/* %{prefix}/lib64/python%{BASE_VERSION}/*.py* %{prefix}/lib64/python%{BASE_VERSION}/pdb.doc %{prefix}/lib64/python%{BASE_VERSION}/compiler %{prefix}/lib64/python%{BASE_VERSION}/ctypes #%{prefix}/lib64/python%{BASE_VERSION}/html #%{prefix}/lib64/python%{BASE_VERSION}/urllib #%{prefix}/lib64/python%{BASE_VERSION}/http #%{prefix}/lib64/python%{BASE_VERSION}/dbm %{prefix}/lib64/python%{BASE_VERSION}/wsgiref %{prefix}/lib64/python%{BASE_VERSION}/importlib %{prefix}/lib64/python%{BASE_VERSION}/pydoc_data %{prefix}/lib64/python%{BASE_VERSION}/curses %{prefix}/lib64/python%{BASE_VERSION}/distutils %{prefix}/lib64/python%{BASE_VERSION}/email %{prefix}/lib64/python%{BASE_VERSION}/encodings %{prefix}/lib64/python%{BASE_VERSION}/idlelib %{prefix}/lib64/python%{BASE_VERSION}/plat-%{osplat} %{prefix}/lib64/python%{BASE_VERSION}/site-packages %{prefix}/lib64/python%{BASE_VERSION}/xml %{prefix}/lib64/python%{BASE_VERSION}/json %{prefix}/lib64/python%{BASE_VERSION}/multiprocessing %{prefix}/lib64/python%{BASE_VERSION}/logging %{prefix}/lib64/python%{BASE_VERSION}/lib2to3 /usr/lib64/libpython%{BASE_VERSION}.a /usr/lib64/python%{BASE_VERSION} %files devel %defattr(-,root,system) %{prefix}/include/python%{BASE_VERSION}/*.h %{prefix}/lib/python%{BASE_VERSION}/config %{prefix}/lib/python%{BASE_VERSION}/test %{prefix}/lib64/python%{BASE_VERSION}/config %{prefix}/lib64/python%{BASE_VERSION}/test %files docs %defattr(-,root,system) %doc 32bit/Misc/README 32bit/Misc/cheatsheet 32bit/Misc/Porting %doc 32bit/Misc/ACKS 32bit/Misc/HISTORY 32bit/Misc/NEWS %if %{include_tkinter} %files -n tkinter %defattr(-,root,system) %{prefix}/lib/python%{BASE_VERSION}/lib-tk %{prefix}/lib/python%{BASE_VERSION}/lib-dynload/_tkinter.so* #%{prefix}/lib64/python%{BASE_VERSION}/tkinter #%{prefix}/lib64/python%{BASE_VERSION}/lib-dynload/_tkinter.so %endif %files -f %{_builddir}/Python-%{version}/tools.files tools %defattr(-,root,system) %{_bindir}/2to3* %{_bindir}/idle* %{_bindir}/smtpd*.py* /usr/bin/2to3* /usr/bin/idle* /usr/bin/smtpd*.py* %changelog * Thu Jul 18 2013 Sangamesh Mallayya 2.7.5-1 - Update to 2.7.5 - Add wsgiref module to files list. * Thu May 31 2012 2.6.2-2 - Add 64-bit support * Thu Aug 26 2010 2.6.2-1 - Update to 2.6.2 - Add json, multiprocessing, logging modules which are available in 2.6.2 * Wed Nov 5 2008 2.5.2 - Update to version 2.5.2. * Thu Jul 13 2006 Reza Arbab 2.3.4-3 - Rebuild so tkinter can link to our latest libtk8.4.so. * Mon Aug 08 2005 Philip K. Warren 2.3.4-2 - Include patch for PSF-2005-001. - Build with large files support. * Thu Aug 05 2004 David Clissold 2.3.4-1 - Update to version 2.3.4. * Wed Jul 28 2004 David Clissold 2.3.2-1 - Update to version 2.3.2. (but 2.3.4 is latest). * Mon Feb 17 2003 David Clissold - Build with IBM C++ compiler; --with-threads and --enable-shared - (as per tzy@us.ibm.com). Also added BuildRequires. * Fri Feb 15 2002 David Clissold - Remove the old libpython2.1.a image. * Thu Feb 14 2002 Marc Stephenson - Include compiler, email, and hotshot - Move test to devel * Sun Feb 10 2002 David Clissold - Updated to version 2.2 * Tue Oct 09 2001 David Clissold - Updated to version 2.1.1 * Wed Jun 27 2001 Marc Stephenson - Adapted for AIX Toolbox * Thu Jun 7 2001 Sean Reifschneider [Release 2.1-5] - Added entry to disable building tkinter. (Mentioned by Msquared) - Added gdbm-devel build pre-req. (Thanks to Pat Callahan) - Added db1-devel build pre-req. (Thanks to Pat Callahan) - Changed expat build pre-req to expat-devel. (Thanks to Pat Callahan) - Ugh, can't have spaces in defattr. (Thanks to Pat Callahan) * Sat Apr 21 2001 Sean Reifschneider [Release 2.1-4] - Added more "defattr" entries for the files sections. - Ugh, the .so files were lost in the last package. - Fixed IDLE. * Sat Apr 21 2001 Sean Reifschneider [Release 2.1-3] - pymalloc wasn't properly getting disabled. Not sure how rpm is picking up commented-out %define directives, but that's what it was doing. Ugh. - Made a similar change for binsuffix. - Adding a "tools" sub-package. * Tue Apr 17 2001 Sean Reifschneider [Release 2.1-2tummy] - Removed --with-pymalloc in configure. Apparently threaded programs like Zope have problems with this. Thanks for pointing that out, Guido. * Tue Apr 17 2001 Sean Reifschneider [Release 2.1-1tummy] - Updated to the 2.1 final release. * Mon Apr 16 2001 Sean Reifschneider [Release 2.1c1-2tummy] - Fixed naming to "python2" instead of "python2.1". - Fixing up path in pydoc if binsuffix is set. * Sun Apr 15 2001 Sean Reifschneider [Release 2.1c1-1tummy] - Upgraded to 2.1c1 - Changed package name to "python2" if building /usr/bin/python2 - Changed binary suffix to "2" instead of "2.1", in preperation for final release. * Fri Mar 23 2001 Sean Reifschneider [Release 2.1b2-1tummy] - Upgraded to 2.1b2 - Enabled --with-pymalloc * Tue Mar 6 2001 Sean Reifschneider [Release 2.1b1-1tummy] - Upgraded to 2.1b1 * Thu Feb 15 2001 Sean Reifschneider [Release 2.1a2-2tummy] - Tony Seward sent a patch to fix the expat module's header path in setup.py. * Sat Feb 3 2001 Sean Reifschneider [Release 2.1a2-1tummy] - Updated to 2.1a2. * Wed Jan 25 2001 Sean Reifschneider [Release 2.1a1-1tummy] - Release for 2.1a1 - Splitting out devel and tk packages.