Sisyphus repository
Last update: 1 october 2023 | SRPMs: 18631 | Visits: 37537048
en ru br
ALT Linux repos
S:2.7.18-alt11
5.0: 2.5.4-alt5
4.1: 2.5.4-alt0.M41.1
4.0: 2.4.5-alt0.M40.1
3.0: 2.4.1-alt5

Group :: Development/Python
RPM: python

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs and FR  Repocop 

# -*- rpm-spec -*-

%define real_name               python
Name: %real_name

Version: 2.5.4
Release: alt0.M41.1

%define package_name %real_name
%define weight 1001
%define suffix_ver 2.5
%define require_ver 2.5
%define python_name %real_name%suffix_ver
%define __python_version %suffix_ver
%define __python %_builddir/Python-%version/python
%define nodot_ver 25
# When suffix_ver was removed from real_name
%define noversion_from %suffix_ver-alt1

Summary: An interpreted, interactive object-oriented programming language
License: PSF
Group: Development/Python
URL: http://www.python.org/
Packager: Python Development Team <python at packages.altlinux.org>

Source: ftp://ftp.python.org/pub/python/%version/Python-%version.tar.bz2
#Source1: http://www.python.org/ftp/python/doc/%version/info-%version.tar.bz2
Source2: koi8_u.py
Source3: modules-list-%version.tar.gz
Source4: http://rgruet.free.fr/PQR%nodot_ver/PQR%suffix_ver.html.zip
Source5: PQR%{suffix_ver}_classic_a4.pdf
Source6: libffi.tar
Source8: pythonstart.py
Source9: python.sh
Source10: python.csh
Source11: pythonrc.py

Patch1: python-2.5.1-deb-setup.patch
Patch2: python-2.5.1-deb-distutils-link.patch

Patch3: python-2.5.1-alt-TextTools.patch
# non-standard /usr/doc dehack
Patch4: python-2.5.1-alt-sharedoc.patch
# use system libexpat library
Patch5: python-2.5.1-alt-expat.patch
# raise fatal error when extension fails to load
Patch6: python-2.5.1-alt-setup-PyBuildExt-raise.patch
# dbm.so module should be linked with -lgdbm_compat
Patch7: python-2.5.1-alt-dbm-gdbm_compat.patch
# x64 build patches
Patch8: python-2.5.1-alt-lib64.patch
# fix CVE-2007-4965
Patch9: python-2.5-CVE-2007-4965.patch
# add alt to the list of supported distribution
Patch10: python-2.5.1-detect-alt.patch
# security fix, from Python SVN, already applied for versions post 2.5.2
Patch11: python-2.5-CVE-2008-1721.patch
# set max_db_version to 4.7
Patch12: python-2.5.2-db4.7.patch
# security fix for hashlib overflow
Patch13: python-2.5-CVE-2008-2316.patch
# fix marshalling of objects in xmlrpclib
Patch14: python-2.5-xmlrpclib-marshal-objects.patch
# fix sporadic listdir problem
Patch15: python-2.5.1-listdir.patch
# add more constants to socketmodule
Patch16: python-2.5.1-socketmodule-constants.patch
Patch17: python-2.5.1-socketmodule-constants2.patch
# add new API from 2.6, set_wakeup_fd
Patch18: python-2.5.2-set_wakeup_fd4.patch

# XXX ignore pydoc dependencies for now

%add_findreq_skiplist %_bindir/pydoc*
%add_python_req_skip msilib

# this package python = %version-%release requires all standard python modules

# package python = %require_ver is provided by python-strict and python-relaxed
Requires: %name-base = %version-%release
Requires: %name-modules %name-modules-encodings
Requires: %name-modules-curses %name-modules-xml %name-modules-compiler
Requires: %name-modules-email %name-modules-hotshot %name-modules-bsddb
Requires: %name-modules-logging

BuildPreReq: rpm >= 4.0.4-alt36.d8, rpm-build-python >= 0.29-alt3
BuildPreReq: emacs-nox
# Automatically added by buildreq on Sun Apr 08 2007
BuildRequires: bzlib-devel gcc-c++ libdb4-devel libexpat-devel libgdbm-devel libncursesw-devel libreadline-devel libssl-devel tk-devel zlib-devel libsqlite3-devel

%description
Python is an interpreted, interactive, object-oriented programming
language often compared to Tcl, Perl, Scheme or Java. Python includes
modules, classes, exceptions, very high level dynamic data types and
dynamic typing. Python supports interfaces to many system calls and
libraries, as well as to various windowing systems (X11, Motif, Tk,
Mac and MFC).

Programmers can write new built-in modules for Python in C or C++.
Python can be used as an extension language for applications that
need a programmable interface. This package contains most of the
standard Python modules, as well as modules for interfacing to the
Tix widget set for Tk and RPM.

Note that documentation for Python is provided in the python-docs
package.

%package strict
Summary: Python with strict conflicts: using other pythons are prohibited
Group: Development/Python
Requires: %name = %version-%release
Provides: %real_name = %require_ver
Provides: %name-strict = %version-%release
Conflicts: %name-relaxed
Conflicts: python24
Conflicts: python = 2.4
Conflicts: python23
Conflicts: python = 2.3
Obsoletes: %python_name-strict <= %noversion_from

%description strict
Python is an interpreted, interactive, object-oriented programming
language often compared to Tcl, Perl, Scheme or Java. Python includes
modules, classes, exceptions, very high level dynamic data types and
dynamic typing. Python supports interfaces to many system calls and
libraries, as well as to various windowing systems (X11, Motif, Tk,
Mac and MFC).

This is a python with strict conflicts: using other pythons are prohibited.

%package relaxed
Summary: Python with relaxed conflicts: using with python24 are allowed
Group: Development/Python
PreReq: alternatives >= 0.2.0
Requires: %name = %version-%release
Provides: %real_name = %require_ver
Provides: %name-relaxed = %version-%release
Conflicts: %name-strict
Obsoletes: %python_name-relaxed <= %noversion_from

%description relaxed
Python is an interpreted, interactive, object-oriented programming
language often compared to Tcl, Perl, Scheme or Java. Python includes
modules, classes, exceptions, very high level dynamic data types and
dynamic typing. Python supports interfaces to many system calls and
libraries, as well as to various windowing systems (X11, Motif, Tk,
Mac and MFC).

This is a python with relaxed conflicts: using with python24 are allowed.

%package base
Summary: Base python modules and executables
Group: Development/Python
Provides: /usr/bin/python
Provides: %python_name(os.path)
Provides: %python_name(pwd)
Obsoletes: %python_name-base <= %noversion_from
%description base
Python is an interpreted, interactive, object-oriented programming
language often compared to Tcl, Perl, Scheme or Java. Python includes
modules, classes, exceptions, very high level dynamic data types and
dynamic typing. Python supports interfaces to many system calls and
libraries, as well as to various windowing systems (X11, Motif, Tk,
Mac and MFC).

This package contains base python modules and executables.

%package modules
Summary: Standard python modules
Group: Development/Python
Requires: %name-base = %version-%release
Obsoletes: %python_name-modules <= %noversion_from

%description modules
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 this package if you want to develop Python extensions.  The
%name package will also need to be installed.  You'll probably also
want to install the python-docs package, which contains Python
documentation.

%package user-scripts
Summary: Python scripts for user improvements
Group: Development/Python
BuildArch: noarch

%description user-scripts
Python scripts for user improvements. Current release includes console
autocompletion based on readline for command line interface.

%package modules-encodings
Summary: Python "encodings" module
Group: Development/Python
Requires: %name-base = %version-%release
Obsoletes: %python_name-modules-encodings <= %noversion_from

%description modules-encodings
Standard Python encoding modules are provided by this package.

Codec modules have names corresponding to normalized encoding
names, e.g. 'utf-8' is implemented by the module 'utf_8.py'.

#%package obsolete

#Summary: Obsoleted python modules
#Group: Development/Python
#Requires: %name-base = %version-%release
#Obsoletes: %python_name-obsolete  <= %noversion_from
#
#%description obsolete
#Python is an interpreted, interactive, object-oriented programming
#language often compared to Tcl, Perl, Scheme or Java. Python includes
#modules, classes, exceptions, very high level dynamic data types and
#dynamic typing. Python supports interfaces to many system calls and
#libraries, as well as to various windowing systems (X11, Motif, Tk,
#Mac and MFC).
#
#This package contains obsolete python modules.

%package modules-curses
Summary: Python "curses" module
Group: Development/Python
Requires: %name-base = %version-%release
Obsoletes: %python_name-modules-curses

%description modules-curses
An interface to the curses library, providing portable terminal
handling. The Curses module provides an interface to the curses library, the
de-facto standard for portable advanced terminal handling.
This extension module is designed to match the API of ncurses, an
open-source curses library hosted on Linux and the BSD variants of UNIX.

%package modules-xml
Summary: Core XML support for Python
Group: Development/Python
Requires: %name-base = %version-%release
Obsoletes: %python_name-modules-xml <= %noversion_from

%description modules-xml
This package contains three sub-packages:

dom -- The W3C Document Object Model.  This supports DOM Level 1 +
      Namespaces.

parsers -- Python wrappers for XML parsers (currently only supports Expat).

sax -- The Simple API for XML, developed by XML-Dev, led by David Megginson
      and ported to Python by Lars Marius Garshol.  This supports the SAX 2
      API.

%package modules-compiler
Summary: Package for parsing and compiling Python source code
Group: Development/Python
Requires: %name-base = %version-%release
Obsoletes: %python_name-modules-compiler <= %noversion_from

%description modules-compiler
Python is an interpreted, interactive, object-oriented programming
language often compared to Tcl, Perl, Scheme or Java. Python includes
modules, classes, exceptions, very high level dynamic data types and
dynamic typing. Python supports interfaces to many system calls and
libraries, as well as to various windowing systems (X11, Motif, Tk,
Mac and MFC).

This is a package for parsing and compiling Python source code.

%package modules-email
Summary: A package for parsing, handling, and generating email messages
Group: Development/Python
Requires: %name-base = %version-%release
Obsoletes: %python_name-modules-email <= %noversion_from

%description modules-email
Python is an interpreted, interactive, object-oriented programming
language often compared to Tcl, Perl, Scheme or Java. Python includes
modules, classes, exceptions, very high level dynamic data types and
dynamic typing. Python supports interfaces to many system calls and
libraries, as well as to various windowing systems (X11, Motif, Tk,
Mac and MFC).

This is a package for parsing, handling, and generating email messages.

%package modules-hotshot
Summary: High-perfomance logging profiler, mostly written in C
Group: Development/Python
Requires: %name-base = %version-%release
Obsoletes: %python_name-modules-hotshot <= %noversion_from

%description modules-hotshot
Python is an interpreted, interactive, object-oriented programming
language often compared to Tcl, Perl, Scheme or Java. Python includes
modules, classes, exceptions, very high level dynamic data types and
dynamic typing. Python supports interfaces to many system calls and
libraries, as well as to various windowing systems (X11, Motif, Tk,
Mac and MFC).

This package contains high-perfomance logging profiler.

%package modules-bsddb
Summary: Support for BerkeleyDB 3.2 through 4.2
Group: Development/Python
Requires: %name-base = %version-%release
Obsoletes: %python_name-modules-bsddb <= %noversion_from

%description modules-bsddb
Python is an interpreted, interactive, object-oriented programming
language often compared to Tcl, Perl, Scheme or Java. Python includes
modules, classes, exceptions, very high level dynamic data types and
dynamic typing. Python supports interfaces to many system calls and
libraries, as well as to various windowing systems (X11, Motif, Tk,
Mac and MFC).

This package contains BerkeleyDB support modules.

%package modules-ctypes
Summary: C libraries and data types wrapper helper for Python
Group: Development/Python
Requires: %name-base = %version-%release
Obsoletes: %python_name-modules-ctypes <= %noversion_from, %python_name-module-ctypes <= %noversion_from

%description modules-ctypes
ctypes is an advanced ffi (Foreign Function Interface) package for
Python 2.3 and higher.

ctypes allows to call functions exposed from dlls/shared libraries and
has extensive facilities to create, access and manipulate simple and
complicated C data types in Python - in other words: wrap libraries in
pure Python. It is even possible to implement C callback functions in
pure Python.

ctypes now includes a code generator toolchain which allows automatic
creation of library wrappers from C header files.

%package modules-wsgiref
Summary: WSGI Utilities and Reference Implementation
Group: Development/Python
Requires: %name-base = %version-%release
Obsoletes: %python_name-modules-logging <= %noversion_from

%description modules-wsgiref
The Web Server Gateway Interface (WSGI) is a standard interface
between web server software and web applications written in Python.
Having a standard interface makes it easy to use an application
that supports WSGI with a number of different web servers.

Wsgiref is a reference implementation of the WSGI specification
that can be used to add WSGI support to a web server or framework.  It
provides utilities for manipulating WSGI environment variables and
response headers, base classes for implementing WSGI servers, a demo
HTTP server that serves WSGI applications, and a validation tool that
checks WSGI servers and applications for conformance to the
WSGI specification PEP 333.

%package modules-sqlite3
Summary: DB-API 2.0 interface for SQLite databases
Group: Development/Python
Requires: %name-base = %version-%release
Obsoletes: %python_name-modules-logging <= %noversion_from

%description modules-sqlite3
SQLite is a C library that provides a lightweight disk-based database
that doesn't require a separate server process and allows accessing
the database using a nonstandard variant of the SQL query language.
Some applications can use SQLite for internal data storage.  It's also
possible to prototype an application using SQLite and then port the
code to a larger database such as PostgreSQL or Oracle.

pysqlite was written by Gerhard Ha:ring and provides a SQL interface
compliant with the DB-API 2.0 specification described by PEP 249.

%package modules-logging
Summary: Logging package for Python
Group: Development/Python
Requires: %name-base = %version-%release
Obsoletes: %python_name-modules-logging <= %noversion_from

%description modules-logging
Logging package for Python. Based on PEP 282 and comments thereto in
comp.lang.python, and influenced by Apache's log4j system.

%package dev
Summary: The libraries and header files needed for Python development
Group: Development/Python
Requires: %name = %version-%release
Provides: %real_name-devel = %require_ver
Obsoletes: %python_name-modules-dev <= %noversion_from

%description dev
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 this package if you want to develop Python extensions.  The
%name package will also need to be installed.  You'll probably also
want to install the python-docs package, which contains Python
documentation.

%package test
Summary: Test suite for standard python modules
Group: Development/Python
Requires: %name-base = %version-%release
AutoReqProv: yes, nopython
Obsoletes: %python_name-test <= %noversion_from

%description test
Python is an interpreted, interactive, object-oriented programming
language often compared to Tcl, Perl, Scheme or Java. Python includes
modules, classes, exceptions, very high level dynamic data types and
dynamic typing. Python supports interfaces to many system calls and
libraries, as well as to various windowing systems (X11, Motif, Tk,
Mac and MFC).

This package contains test suite for standard python modules.

%package tools-i18n
Summary: Scripts to provide i18n support for developers
Group: Development/Python
Obsoletes: %python_name-tools-i18n <= %noversion_from

%description tools-i18n
Package provide pygettext and pymsgfmt scripts.
pygettext uses Python's standard tokenize module to scan
Python source code, generating .pot files identical to what GNU xgettext
generates for C and C++ code.

%package tools-webchecker
Summary: This is a simple web tree checker
Group: Development/Python
Obsoletes: %python_name-tools-webchecker <= %noversion_from

%description tools-webchecker
This is a simple web tree checker, useful to find bad links in a web
tree.  It currently checks links pointing within the same subweb for
validity.  The main program is "webchecker.py".  Invoke it with the
option "-?") for more defails.

%package tools-modulator
Summary: The modulator script
Group: Development/Python
Obsoletes: %python_name-tools-modulator <= %noversion_from

%description tools-modulator
The modulator script provides a simple graphical user interface for declaring the
functions and objects which a module should implement, and can generate a
template which can be filled in.

%package tools-pynche
Summary: The PYthonically Natural Color and Hue Editor
Group: Development/Python

Obsoletes: %python_name-tools-pynche <= %noversion_from

%description tools-pynche
Pynche is a color editor based largely on a similar program that I
originally wrote back in 1987 for the Sunview window system.  That editor
was called ICE, the Interactive Color Editor.  I'd always wanted to port
this program to X but didn't feel like hacking X and C code to do it.  Fast
forward many years, to where Python + Tkinter provides such a nice
programming environment, with enough power, that I finally buckled down and
re-implemented it.  I changed the name because these days, too many other
systems have the acronym CE'.

%package tools-idle
Summary: An Integrated Development Environment for Python
Group: Development/Python

Obsoletes: %python_name-tools-idle <= %noversion_from

%description tools-idle
IDLE is a basic editor and interpreter environment that ships with the
standard distribution of Python.  Good for beginners, it also serves as
clear example code for those wanting to implement a moderately
sophisticated, multi-platform GUI application.

%package tools-scripts
Summary: A collection of executable Python scripts from main distribution
Group: Development/Python

Obsoletes: %python_name-scripts-idle <= %noversion_from

%description tools-scripts
This package contains a collection of executable Python scripts that
are useful while building, extending or managing Python.  Some (e.g.,
dutree or lll) are also generally useful UNIX tools.

%package modules-tkinter
Summary: A graphical user interface for the Python scripting language
Group: Development/Python
Requires: %name-base = %version-%release
Requires: tk
PreReq: alternatives >= 0.2.0
Provides: tkinter = %require_ver

Obsoletes: %python_name-modules-tkinter <= %noversion_from

%description modules-tkinter
The Tkinter (Tk interface) program is an graphical user interface for
the Python scripting language.

You should install this package if you'd like to use a graphical
user interface for Python programming.

#%package info

#Summary: Info documentation for the Python scripting language
#Group: Development/Python
#
#Obsoletes: %python_name-info <= %noversion_from
#
#%description info
#This archive contains the standard Python documentation in GNU info
#format.  Thanks go to Milan Zamazal <pdm at zamazal.org> for providing this
#conversion to the info format.
#
#Questions and comments on these documents should be directed to
#docs at python.org.

%package devel-static
Summary: Static python library for products with embeded python
Group: Development/Python

Obsoletes: %python_name-devel-static <= %noversion_from

%description devel-static
Python provides two kind of python-library to build application with
embedded-python capability. Using of shared library is preffered and
static library is obsoleted. This package are content static library and
intend only for some stupid application (configure scripts?) that can't
be linked with shared library.

%prep
%setup -q -n Python-%version
%undefine _python_compile_skip_x
#mkdir info
#tar -C info -xf #SOURCE1
tar -xf %SOURCE3

cp %SOURCE5 PQR%suffix_ver.pdf

mkdir PQR%suffix_ver
#tar -C PQR%suffix_ver -xf %SOURCE4
( cd PQR%suffix_ver; unzp %SOURCE4 )

rm -r Modules/expat

pushd Modules/_ctypes/
rm -r libffi
tar -xf %SOURCE6
popd

%patch1 -p2
%patch2 -p2
%patch3 -p2
%patch4 -p2
%patch5 -p2
%patch6 -p2
%patch7 -p2

%if "lib" != "%_lib"
%patch8 -p2
%endif

#patch9 -p1

%patch10 -p0
#patch11 -p0
%patch12 -p1
#patch13 -p0
%patch14 -p1
%patch15 -p1
%patch16 -p1
%patch17 -p1
%patch18 -p1

find -type f \( -name \*~ -o -name \*.orig \) -print0 |
xargs -r0 rm -f --

find -type f -print0 |
   xargs -r0 grep -FZl -- /usr/local/bin/python |
   xargs -r0 sed -i 's at /usr/local/bin/python at /usr/bin/python at ' --

%build
%add_optflags %optflags_shared -D_GNU_SOURCE
export OPT="$RPM_OPT_FLAGS"
libtoolize --copy --force
autoconf
%configure --with-threads --with-cycle-gc --with-libdb --enable-shared

%make_build LDFLAGS=-L$PWD
%if_with test
make test
%endif
#bzip2 info/python*info*
#cat > info/python%nodot_ver.dir <<EOF
#INFO-DIR-SECTION Development/Python
#START-INFO-DIR-ENTRY
#EOF
#cat info/python.dir >> info/python%nodot_ver.dir
#cat >> info/python%nodot_ver.dir <<EOF
#END-INFO-DIR-ENTRY
#EOF

%install
%__mkdir_p %buildroot%_mandir
#%__mkdir_p %buildroot%_infodir
%__mkdir_p %buildroot%prefix/lib/%python_name/site-packages
#install info/python*bz2 info/python%nodot_ver.dir %buildroot%_infodir

#  set the install path

echo '[install_scripts]' >setup.cfg
echo 'install_dir='"%buildroot%_bindir" >>setup.cfg

export LD_LIBRARY_PATH=%buildroot%_libexecdir:$LD_LIBRARY_PATH
%makeinstall MANDIR=%buildroot%_mandir INCLUDEDIR=%buildroot%_includedir
install %SOURCE2 %buildroot%_libdir/%python_name/encodings

# cray : hack for hotshot

rm %buildroot%_libdir/%python_name/hotshot/stones.py*
# cray : hack for distutils
rm %buildroot%_libdir/%python_name/distutils/mwerkscompiler.py*

# hack for pydoc

mv %buildroot%_bindir/pydoc %buildroot%_bindir/pydoc%suffix_ver

# emacs, I use it, I want it

install -pD -m644 Misc/python-mode.el %buildroot%_emacslispdir/python-mode%suffix_ver.el
emacs -batch --no-site-file -f batch-byte-compile %buildroot%_emacslispdir/python-mode%suffix_ver.el
%__mkdir_p %buildroot%_sysconfdir/emacs/site-start.d
cat <<EOF >%buildroot%_sysconfdir/emacs/site-start.d/python.el-%suffix_ver
(setq auto-mode-alist (cons '("\\\\.py$" . python-mode) auto-mode-alist))
(autoload 'python-mode "python-mode%suffix_ver" "Mode for python files." t)
EOF

# idle

cat <<EOF >%buildroot%python_libdir/idlelib/idle - %buildroot%python_libdir/idlelib/idle.py
#! /usr/bin/%python_name
EOF

ln -sf %python_libdir/idlelib/idle %buildroot%_bindir/idle%suffix_ver
chmod +x %buildroot%python_libdir/idlelib/idle

%__mkdir_p %buildroot%python_tooldir
# modulator
cp -r Tools/modulator %buildroot%_libdir/%python_name/tools/
ln -sf %_libdir/%python_name/tools/modulator/modulator.py %buildroot%_bindir/modulator%suffix_ver

# pynche

rm -f Tools/pynche/*.pyw
cp -r Tools/pynche %buildroot%_libdir/%python_name/tools/
ln -sf %_libdir/%python_name/tools/pynche/pynche %buildroot%_bindir/pynche%suffix_ver

cp Tools/i18n/*.py %buildroot%_libdir/%python_name/tools/
ln -sf %_libdir/%python_name/tools/pygettext.py %buildroot%_bindir/pygettext
ln -sf %_libdir/%python_name/tools/msgfmt.py %buildroot%_bindir/pymsgfmt

cp -r Tools/webchecker/ %buildroot%_libdir/%python_name/tools/
for item in wcgui.py webchecker.py  websucker.py  wsgui.py; do
  ln -sf %_libdir/%python_name/tools/webchecker/$item %buildroot%_bindir/$(basename $item .py) #%%dirver
done

ln -f Tools/modulator/README Tools/modulator/README.modulator
ln -f Tools/pynche/README Tools/pynche/README.pynche

# Tools/scripts

install -m 755 Tools/scripts/*.py %buildroot%_libdir/%python_name/tools/
( cd Tools/scripts; ls *.py ) | sed 's at ^ at %_libdir/%python_name/tools/ at ;p;s/$/o/p;s/o$/c/' > .TOOLS_SCRIPTS

rm -f modules-list.full
for n in %buildroot%_libdir/%python_name/*; do
 [ -d "$n" ] || echo "$n"
done >> modules-list.full

echo >modules-exclude
for list in modules-list/*-list modules-list/base-list; do
   name=$(basename $list).tmp
   cat $list >$name
   grep "py$" $list|sed -e "s|.*|&c|g" >>$name
   grep "py$" $list|sed -e "s|.*|&o|g" >>$name
   sed <$name -e "s|^|%_libdir/%python_name/|g"|tee $(basename $list)
done | sort  > modules-exclude

for mod in %buildroot%_libdir/%python_name/lib-dynload/*; do
 [ `basename $mod` = _tkinter.so ] || echo "$mod"
done >> modules-list.full
sed -e "s|%buildroot||g" <modules-list.full |sort|comm -23 - modules-exclude >other-list

# menu support

%__mkdir_p %buildroot%_menudir
cat > %buildroot%_menudir/idle%version << EOF
#?package(%real_name): needs=text section="Applications/Development/Interpreters" title=Python command=python
#?package(%name-tools-idle): needs="gnome" section="Applications/Development/Development environments" title="IDLE" \
longtitle="IDE for Python %version" command="NO_XALF %_bindir/idle" icon="development_section.xpm"
?package(%name-tools-idle): needs=x11 section="Applications/Development/Development environments" title="IDLE" \
longtitle="IDE for Python %version" command="%_bindir/idle" icon="development_section.xpm"
EOF

#alternatives support

install -d %buildroot%_altdir
#main package
cat > %buildroot%_altdir/%python_name <<EOF
%_bindir/%real_name %_bindir/%python_name %weight
%_bindir/pydoc %_bindir/pydoc%suffix_ver %_bindir/%python_name
%_sysconfdir/emacs/site-start.d/python.el %_sysconfdir/emacs/site-start.d/python.el-%suffix_ver %_bindir/%python_name
EOF

#tkinter package

>%buildroot%_altdir/%python_name-modules-tkinter
for n in idle modulator pynche
do
cat <<EOF
%_bindir/$n %_bindir/${n}%suffix_ver %weight
EOF
done > %buildroot%_altdir/%python_name-modules-tkinter

chmod -x %buildroot%_libdir/%python_name/test/*.py*

find %buildroot -type f -print0 |
xargs -r0 %__grep -FZl -- %buildroot |
xargs -r0 %__subst -- "s|%buildroot||g"

%__mkdir_p %buildroot%_sysconfdir/buildreqs/packages/substitute.d
echo %real_name >%buildroot%_sysconfdir/buildreqs/packages/substitute.d/%name
echo %real_name-devel >%buildroot%_sysconfdir/buildreqs/packages/substitute.d/%name-devel
echo %real_name-devel >%buildroot%_sysconfdir/buildreqs/packages/substitute.d/%name-dev
echo tkinter >%buildroot%_sysconfdir/buildreqs/packages/substitute.d/%python_name-modules-tkinter
chmod 644 %buildroot%_sysconfdir/buildreqs/packages/substitute.d/*

%__mkdir_p %buildroot%_sysconfdir/buildreqs/files/ignore.d
cat > %buildroot%_sysconfdir/buildreqs/files/ignore.d/%name << EOF
^%_libdir/python[^/]*/site-packages(/.+\.pth)?$
EOF

cat >> python.sh <<EOF
#! /bin/bash
export LD_LIBRARY_PATH=%_builddir/Python-%version
%_builddir/Python-%version/python "\$ at "
EOF
chmod +x python.sh

%define __python %_builddir/Python-%version/python.sh
%define _python_lib_path %(RPM_BUILD_ROOT=%buildroot LD_LIBRARY_PATH=%buildroot%_libdir %buildroot%_bindir/python -c "import sys,os; path=os.path.normpath(os.environ['RPM_BUILD_ROOT']) ; print ' '.join([ x[len(path):] for x in [ os.path.normpath(x) for x in sys.path] if x[0:len(path)]==path])")
%add_python_req_skip bundlebuilder
mv %buildroot{%_libdir/%python_name/config/lib%python_name.a,%_libdir/lib%python_name.a}
mv %buildroot{%_mandir/man1/python.1,%_mandir/man1/%python_name.1}

# startup user script

install -m 644 %SOURCE8 %buildroot%_sysconfdir
install -d -m 755 %buildroot%_sysconfdir/profile.d
install -m 755 %SOURCE9 %SOURCE10 %buildroot%_sysconfdir/profile.d
install -d -m 755 %buildroot%_sysconfdir/skel
install -m 644 %SOURCE11 %buildroot%_sysconfdir/skel/.pythonrc.py

%post base
[ -e /usr/bin/python ] || ln -snf %python_name /usr/bin/python
[ -e /usr/bin/pydoc ] || ln -snf pydoc%suffix_ver /usr/bin/pydoc

%post strict
ln -sf %python_name /usr/bin/python
ln -sf pydoc%suffix_ver /usr/bin/pydoc
ln -sf python.el-%suffix_ver %_sysconfdir/emacs/site-start.d/python.el

%post relaxed
%register_alternatives %python_name -- python pydoc

%triggerpostun strict -- python24, python23, python-relaxed, %python_name-relaxed, python2.3, python2.3-relaxed
ln -sf pydoc%suffix_ver /usr/bin/pydoc
ln -sf %python_name /usr/bin/python
ln -sf python.el-%suffix_ver %_sysconfdir/emacs/site-start.d/python.el
for n in idle modulator pynche; do
 ln -sf ${n}%suffix_ver %_bindir/$n
done

%preun relaxed
%unregister_alternatives %python_name

%post modules-tkinter
%register_alternatives %python_name-modules-tkinter -- idle modulator pynche

%post tools-idle
%update_menus

%preun modules-tkinter
%unregister_alternatives %python_name-modules-tkinter

%postun tools-idle
%clean_menus

%postun relaxed
#%post info
#/usr/sbin/install_info python%nodot_ver.dir

#%preun info

#/usr/sbin/uninstall_info python-dist
#/usr/sbin/uninstall_info python-api
#/usr/sbin/uninstall_info python-ext
#/usr/sbin/uninstall_info python-lib
#/usr/sbin/uninstall_info python-mac
#/usr/sbin/uninstall_info python-ref
#/usr/sbin/uninstall_info python-tut
#/usr/sbin/uninstall_info python-whatsnew%nodot_ver

%files

%files strict

%files relaxed
# should not provide /usr/bin/python
%add_findprov_skiplist %_altdir/%python_name
%_altdir/%python_name

%files base -f base-list
%_emacslispdir/python-mode%suffix_ver.el*
%config(noreplace) %_sysconfdir/emacs/site-start.d/python.el-%suffix_ver
%_mandir/man?/*
%config %_sysconfdir/buildreqs/packages/substitute.d/%name
%config %_sysconfdir/buildreqs/files/ignore.d/%name
%_bindir/%python_name
%_bindir/pydoc%suffix_ver
%dir %_libdir/%python_name
%dir %_libdir/%python_name/lib-dynload
%dir %_libdir/%python_name/site-packages
%_libdir/lib%python_name.so.*
%doc LICENSE
%doc Misc/{HISTORY,NEWS,cheatsheet}
%if "lib" != "%_lib"
%prefix/lib/%python_name
%endif

%files user-scripts
%_sysconfdir/pythonstart.py
%_sysconfdir/skel/.pythonrc.py
%_sysconfdir/profile.d/*

%files modules -f other-list
%_libdir/%python_name/plat-linux2

%files modules-curses -f modules-curses-list
%_libdir/%python_name/curses

%files modules-xml -f modules-xml-list
%_libdir/%python_name/xml

%files modules-compiler -f modules-compiler-list
%_libdir/%python_name/compiler

%files modules-email -f modules-email-list
%dir %_libdir/%python_name/email
%_libdir/%python_name/email/*py
%_libdir/%python_name/email/*pyc
%_libdir/%python_name/email/*pyo
%_libdir/%python_name/email/mime

%files modules-hotshot -f modules-hotshot-list
%_libdir/%python_name/hotshot

%files modules-bsddb -f modules-bsddb-list
%dir %_libdir/%python_name/bsddb
%_libdir/%python_name/bsddb/*py
%_libdir/%python_name/bsddb/*pyc
%_libdir/%python_name/bsddb/*pyo

%files modules-ctypes -f modules-ctypes-list
%dir %_libdir/%python_name/ctypes
%_libdir/%python_name/ctypes/*.py
%_libdir/%python_name/ctypes/*.py?
%_libdir/%python_name/ctypes/macholib

%files modules-wsgiref
%_libdir/%python_name/wsgiref

%files modules-sqlite3 -f modules-sqlite3-list
%dir %_libdir/%python_name/sqlite3
%_libdir/%python_name/sqlite3/*.py
%_libdir/%python_name/sqlite3/*.py?

%files modules-logging -f modules-logging-list
%_libdir/%python_name/logging

%files modules-encodings -f modules-encodings-list
%_libdir/%python_name/encodings

#%files obsolete

#%_libdir/%python_name/lib-old

%files tools-idle
%_libdir/%python_name/idlelib
%_bindir/idle%suffix_ver
%doc Lib/idlelib/README.txt Lib/idlelib/NEWS.txt Lib/idlelib/HISTORY.txt Lib/idlelib/CREDITS.txt
%_menudir/idle%version

%files tools-pynche
%_libdir/%python_name/tools/pynche
%_bindir/pynche%suffix_ver
%doc Tools/pynche/README

%files tools-modulator
%_libdir/%python_name/tools/modulator
%_bindir/modulator%suffix_ver
%doc Tools/modulator/README Tools/modulator/EXAMPLE.py

%files tools-i18n
%_libdir/%python_name/tools/pygettext.py
%_libdir/%python_name/tools/msgfmt.py
%_libdir/%python_name/tools/makelocalealias.py
%_bindir/pygettext
%_bindir/pymsgfmt

%files tools-webchecker
%_libdir/%python_name/tools/webchecker/*.py*
%_bindir/wcgui
%_bindir/webchecker
%_bindir/websucker
%_bindir/wsgui
%doc Tools/webchecker/README

%files tools-scripts -f .TOOLS_SCRIPTS
%doc Tools/scripts/README Tools/scripts/dutree.doc

%files dev
%config %_sysconfdir/buildreqs/packages/substitute.d/%name-devel
%config %_sysconfdir/buildreqs/packages/substitute.d/%name-dev
%_includedir/%python_name
%_libdir/%python_name/config
%_libdir/%python_name/distutils
%exclude %_libdir/%python_name/distutils/tests
%_libdir/lib%python_name.so

%files test
%_libdir/%python_name/test
%_libdir/%python_name/ctypes/test
%_libdir/%python_name/sqlite3/test
%_libdir/%python_name/email/test
%_libdir/%python_name/bsddb/test
%_libdir/%python_name/distutils/tests

#%files info

#/usr/share/info/*
#%doc Lib/*.doc
#%doc PQR%suffix_ver.pdf PQR%suffix_ver/*

%files devel-static
%_libdir/lib%python_name.a

%files modules-tkinter
%config %_sysconfdir/buildreqs/packages/substitute.d/%python_name-modules-tkinter
%_altdir/%python_name-modules-tkinter
%_libdir/%python_name/lib-tk
%_libdir/%python_name/lib-dynload/_tkinter.so

%changelog

Full changelog you can see here

 
design & coding: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
current maintainer: Michael Shigorin