-# TODO:
-# - conflicts with python.spec
-# - %files
+#
# Conditional build:
%bcond_with info # info pages (requires emacs)
%bcond_without tkinter # disables tkinter module building
-%bcond_without tests # disables Python testing
+%bcond_with tests # disables Python testing
%bcond_with verbose_tests # runs tests in verbose mode
-%bcond_with openssl097
#
# tests which will not work on 64-bit platforms
%define no64bit_tests test_audioop test_rgbimg test_imageop
# tests which may fail because of builder environment limitations (no /proc or /dev/pts)
%define nobuilder_tests test_resource test_openpty test_socket test_nis test_posix test_locale test_pty
-# tests which fail because of some unknown/unresolved reason (this list should be empty)
-%define broken_tests test_anydbm test_bsddb test_re test_shelve test_whichdb test_zipimport test_distutils
-%define beta a1
+# tests which fail because of some unknown/unresolved reason (this list should be empty)
+# test_site: fails because our site.py is patched to include both /usr/share/... and /usr/lib...
+# test_gdb: fails, as the gdb uses old python version
+%define broken_tests test_httpservers test_distutils test_cmd_line test_pydoc test_telnetlib test_zlib test_gdb test_site
-%define py_ver 3.0
+%define py_ver 3.2
+%define py_abi %{py_ver}mu
%define py_prefix %{_prefix}
%define py_libdir %{py_prefix}/%{_lib}/python%{py_ver}
-%define py_incdir %{_includedir}/python%{py_ver}
+%define py_incdir %{_includedir}/python%{py_abi}
%define py_sitedir %{py_libdir}/site-packages
%define py_dyndir %{py_libdir}/lib-dynload
Summary(ru.UTF-8): Язык программирования очень высокого уровня с X-интерфейсом
Summary(tr.UTF-8): X arayüzlü, yüksek düzeyli, kabuk yorumlayıcı dili
Summary(uk.UTF-8): Мова програмування дуже високого рівня з X-інтерфейсом
-Name: python30
-Version: %{py_ver}
-Release: 0.1
+Name: python3
+Version: %{py_ver}.2
+Release: 3
Epoch: 1
License: PSF
Group: Applications
-Source0: http://www.python.org/ftp/python/%{version}/Python-%{version}%{beta}.tgz
-# Source0-md5: 89356ece9bd276e78a9e63cfe4a83a23
-Patch1: %{name}-pythonpath.patch
-Patch2: %{name}-no_ndbm.patch
-Patch3: %{name}-ac_fixes.patch
-Patch4: %{name}-noarch_to_datadir.patch
-Patch5: %{name}-lib64.patch
-Patch6: %{name}-doc_path.patch
-Patch7: %{name}-db4.6.patch
+Source0: http://www.python.org/ftp/python/%{version}/Python-%{version}.tar.xz
+# Source0-md5: 3720ce9460597e49264bbb63b48b946d
+Patch0: %{name}-pythonpath.patch
+Patch1: %{name}-ac_fixes.patch
+Patch2: %{name}-lib64.patch
+Patch3: %{name}-noarch_to_datadir.patch
+Patch4: %{name}-bug11254.patch
+Patch5: %{name}-no_cmdline_tests.patch
URL: http://www.python.org/
-BuildRequires: autoconf
+BuildRequires: autoconf >= 2.65
BuildRequires: bluez-libs-devel
BuildRequires: bzip2-devel
BuildRequires: db-devel >= 4
BuildRequires: file
BuildRequires: gdbm-devel >= 1.8.3
BuildRequires: gmp-devel >= 4.0
+BuildRequires: libffi-devel
BuildRequires: libstdc++-devel
BuildRequires: ncurses-ext-devel >= 5.2
-%if %{with openssl097}
-BuildRequires: openssl-devel < 0.9.8
-%else
BuildRequires: openssl-devel >= 0.9.8
-%endif
BuildRequires: readline-devel >= 5.0
BuildRequires: rpm-pythonprov
BuildRequires: sed >= 4.0
BuildRequires: sqlite3-devel >= 3.3.5
+BuildRequires: tar >= 1:1.22
%{?with_info:BuildRequires: tetex-makeindex}
%{?with_tkinter:BuildRequires: tix-devel >= 1:8.1.4-4}
%{?with_tkinter:BuildRequires: tk-devel >= 8.4.3}
Requires: %{name}-libs = %{epoch}:%{version}-%{release}
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+%define specflags_ppc -D__ppc__=1
+%define specflags_ppc64 -D__ppc64__=1
+
%if %{with verbose_tests}
%define test_flags -v -l -x
%else
-%define test_flags -l -x
+%define test_flags -w -l -x
%endif
%ifarch alpha ia64 ppc64 sparc64 ppc64 %{x8664}
Provides: python(abi) = %{py_ver}
# for compatibility with existing Ac packages
Provides: python(bytecode) = %{py_ver}
-%{!?with_info:Obsoletes: python30-doc-info}
+%{!?with_info:Obsoletes: python3-doc-info}
%description libs
Python shared library and very essental modules for Python binary.
Summary(pl.UTF-8): Moduły języka Python
Group: Libraries/Python
Requires: %{name}-libs = %{epoch}:%{version}-%{release}
+Obsoletes: python3-modules-sqlite
%description modules
Python officially distributed modules.
%description modules -l pl.UTF-8
Oficjalnie rozprowadzane moduły języka Python.
-%package modules-sqlite
-Summary: Python SQLite modules
-Summary(pl.UTF-8): Moduły SQLite języka Python
-Group: Libraries/Python
-Requires: %{name}-modules = %{epoch}:%{version}-%{release}
-
-%description modules-sqlite
-Python officially distributed sqlite module.
-
-%description modules-sqlite -l pl.UTF-8
-Oficjalnie rozprowadzany moduł sqlite języka Python.
-
-%package -n pydoc
+%package -n pydoc3
Summary: Python interactive module documentation access support
Summary(pl.UTF-8): Interaktywne korzystanie z dokumentacji modułów języka Python
Group: Applications
Requires: %{name}-modules = %{epoch}:%{version}-%{release}
-%description -n pydoc
+%description -n pydoc3
Python interactive module documentation access support.
-%description -n pydoc -l pl.UTF-8
+%description -n pydoc3 -l pl.UTF-8
Interaktywne korzystanie z dokumentacji modułów języka Python.
-%package -n idle
+%package -n idle3
Summary: IDE for Python language
Summary(pl.UTF-8): IDE dla języka Python
Group: Applications
Requires: %{name}-tkinter = %{epoch}:%{version}-%{release}
-%description -n idle
+%description -n idle3
IDE for Python language.
-%description -n idle -l pl.UTF-8
+%description -n idle3 -l pl.UTF-8
IDE dla języka Python.
%package devel
Narzędzia programistyczne języka Python takie jak profiler oraz
debugger.
+%package 2to3
+Summary: Automated Python 2 to 3 code translation
+Summary(pl.UTF-8): Automatyczne tłumaczenie kodu Pythona 2 do 3
+Group: Development/Languages/Pythona
+
+%description 2to3
+2to3 is a Python program that reads Python 2.x source code and applies
+a series of fixers to transform it into valid Python 3.x code. The
+standard library contains a rich set of fixers that will handle almost
+all code. 2to3 supporting library lib2to3 is, however, a flexible and
+generic library, so it is possible to write your own fixers for 2to3.
+lib2to3 could also be adapted to custom applications in which Python
+code needs to be edited automatically.
+
+%description 2to3 -l pl.UTF-8
+2to3 to program w Pythonie czytający od źródłowy w Pythonie 2.x i
+aplikujący serię poprawek przekształcających go w poprawny kod w
+Pythonie 3.x. Biblioteka standardowa zawiera duży zbiór poprawek
+obsługujących większość kodu. Biblioteka wspierająca 2to3 (lib2to3)
+jest jednak elastyczną i ogólną biblioteką, więc można pisać własne
+poprawki dla 2to3. lib2to3 można także zaadaptować na potrzeby
+własnych zastosowań, w których kod w Pythonie musi być modyfikowany
+automatycznie.
+
%package static
Summary: Static python library
Summary(pl.UTF-8): Statyczna biblioteka Pythona
%description static -l pl.UTF-8
Statyczna biblioteka Pythona.
-%package doc
-Summary: Documentation on Python
-Summary(de.UTF-8): Dokumentation zu Python
-Summary(es.UTF-8): Documentación para Python
-Summary(fr.UTF-8): Documentation sur Python
-Summary(pl.UTF-8): Dokumentacja do Pythona
-Summary(pt_BR.UTF-8): Documentação para a linguagem de programação Python
-Summary(ru.UTF-8): Документация по языку Python
-Summary(tr.UTF-8): Python belgeleri
-Summary(uk.UTF-8): Документація по мові Python
-Group: Documentation
-
-%description doc
-This package contains documentation on the Python language and
-interpretor as a mix of plain ASCII files and LaTeX sources.
-
-%description doc -l de.UTF-8
-Dieses Paket enthält Dokumentationen zu Python (Sprache und
-Interpreter) in Form von einfachen ASCII-Dateien und LaTeX-Quellen.
-
-%description doc -l es.UTF-8
-Documentación para Python. Contiene archivos en texto y PostScript.
-
-%description doc -l fr.UTF-8
-Ce paquetage contient la documentation sur le langage python et sur
-son interpréteur sous forme de fichiers ASCII et LaTeX.
-
-%description doc -l pl.UTF-8
-Oficjalna dokumentacja do Pythona. Zawiera przykładowe programy,
-narzędzia i dokumentację. Strony podręcznika man znajdują się w
-głównym pakiecie. Ten pakiet nie zawiera źródeł dokumentacji
-napisanych w LaTeXu, tylko gotowe do wykorzystania pliki postscriptowe
-i HTML.
-
-%description doc -l pt_BR.UTF-8
-O pacote python-doc contém documentação para a linguagem de
-programação e para o interpretador Python. Fornecida em arquivos texto
-e Postcript.
-
-%description doc -l ru.UTF-8
-Этот пакет содержит документацию по собственно языку Python и по
-исполняющему его интерпретатору в виде набора текстовых файлов и
-исходных текстов в формате LaTeX.
-
-%description doc -l tr.UTF-8
-Bu paket, Python dili ile ilgili belgeleri ve düz ASCII dosyaları ve
-LaTeX kaynaklarının bir karışımı olan yorumlayıcıyı içerir.
-
-%description doc -l uk.UTF-8
-Цей пакет містить документацію по власне мові Python та по виконуючому
-її інтерпретатору у вигляді набора текстових файлів та вихідних
-текстів у форматі LaTeX.
-
%package doc-info
Summary: Documentation on Python in texinfo format
Summary(pl.UTF-8): Dokumentacja do Pythona w formacie texinfo
Przykłady te są dla Pythona 2.3.4, nie %{version}.
%prep
-%setup -q -n Python-%{version}%{beta}
+%setup -q -n Python-%{version}
+%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
-%patch5 -p1
%patch4 -p1
-%patch6 -p1
-%patch7 -p1
+%patch5 -p1
%build
-sed -i -e 's#-ltermcap#-ltinfo#g' configure*
%{__autoconf}
-CPPFLAGS="-I/usr/include/ncurses"; export CPPFLAGS
+CPPFLAGS="-I/usr/include/ncursesw %{rpmcppflags}"; export CPPFLAGS
%configure \
- --with-cxx="%{__cxx}" \
+ --with-cxx-main="%{__cxx}" \
--enable-shared \
--enable-ipv6 \
- --enable-unicode=ucs4 \
+ --with-dbmliborder=gdbm:bdb \
+ --with-wide-unicode \
--with-signal-module \
--with-tsc \
--with-threads \
--with-doc-strings \
- --with-wctype-functions \
--with-fpectl \
+ --with-system-ffi \
+ --with-computed-gotos \
LINKCC='$(PURIFY) $(CXX)' \
LDSHARED='$(CC) $(CFLAGS) -shared' \
BLDSHARED='$(CC) $(CFLAGS) -shared' \
LDFLAGS="%{rpmcflags} %{rpmldflags}"
%{__make} \
- OPT="%{rpmcflags}" 2>&1 | awk '
+ OPT="%{rpmcflags} -fno-caller-saves" 2>&1 | awk '
BEGIN { fail = 0; logmsg = ""; }
{
if ($0 ~ /\*\*\* WARNING:/) {
binlibdir=`echo build/lib.*`
%{__make} test \
TESTOPTS="%{test_flags} %{test_list}" \
- TESTPYTHON="LD_LIBRARY_PATH=`pwd` PYTHONHOME=`pwd` PYTHONPATH=`pwd`/Lib:$binlibdir ./python -tt"
+ TESTPYTHON="LD_LIBRARY_PATH=`pwd` PYTHONHOME=`pwd` PYTHONPATH=`pwd`/Lib:`pwd`/$binlibdir ./python -tt"
%endif
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT{%{_bindir},%{_libdir}} \
- $RPM_BUILD_ROOT{%{py_sitedir},%{_mandir}/man1} \
+ $RPM_BUILD_ROOT{%{py_sitedir},%{py_sitescriptdir}}/__pycache__ \
$RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} \
- $RPM_BUILD_ROOT%{_infodir} \
+ $RPM_BUILD_ROOT{%{_infodir},%{_mandir}/man1} \
$RPM_BUILD_ROOT/etc/shrc.d
%{__make} install \
install Doc/info/python*info* $RPM_BUILD_ROOT%{_infodir}
%endif
-install Makefile.pre.in $RPM_BUILD_ROOT%{py_libdir}/config
-
-mv $RPM_BUILD_ROOT{%{py_libdir}/config,%{_libdir}}/libpython%{py_ver}.a
-ln -sf libpython%{py_ver}.a $RPM_BUILD_ROOT%{_libdir}/libpython.a
-ln -sf libpython%{py_ver}.so.1.0 $RPM_BUILD_ROOT%{_libdir}/libpython.so
-ln -sf libpython%{py_ver}.so.1.0 $RPM_BUILD_ROOT%{_libdir}/libpython%{py_ver}.so
-
-rm -f $RPM_BUILD_ROOT%{_bindir}/python%{py_ver}
-
install -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
-cp -a Tools Demo $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
+cp -a Tools $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
+
+# make libpython3.so simply symlink to real lib
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/libpython3.so
+ln -s libpython%{py_abi}.so $RPM_BUILD_ROOT%{_libdir}/libpython3.so
#
# create several useful aliases, such as timeit.py, profile.py, pdb.py, smtpd.py
# for python devel tools
for script in timeit profile pdb pstats; do
- echo alias $script.py=\"python -m ${script}\"
-done > $RPM_BUILD_ROOT/etc/shrc.d/python-devel.sh
+ echo alias ${script}%{py_ver}.py=\"python%{py_ver} -m ${script}\"
+done > $RPM_BUILD_ROOT/etc/shrc.d/python%{py_ver}-devel.sh
-echo alias pygettext.py='"pygettext"' \
- >> $RPM_BUILD_ROOT/etc/shrc.d/python-devel.sh
+echo alias pygettext%{py_ver}.py='"pygettext%{py_ver}"' \
+ >> $RPM_BUILD_ROOT/etc/shrc.d/python%{py_ver}-devel.sh
sed 's/=/ /' \
- < $RPM_BUILD_ROOT/etc/shrc.d/python-devel.sh \
- > $RPM_BUILD_ROOT/etc/shrc.d/python-devel.csh
+ < $RPM_BUILD_ROOT/etc/shrc.d/python%{py_ver}-devel.sh \
+ > $RPM_BUILD_ROOT/etc/shrc.d/python%{py_ver}-devel.csh
# for python modules
for script in smtpd webbrowser; do
- echo alias $script.py=\"python -m ${script}\"
-done > $RPM_BUILD_ROOT/etc/shrc.d/python-modules.sh
+ echo alias ${script}%{py_ver}.py=\"python%{py_ver} -m ${script}\"
+done > $RPM_BUILD_ROOT/etc/shrc.d/python%{py_ver}-modules.sh
sed 's/=/ /' \
- < $RPM_BUILD_ROOT/etc/shrc.d/python-modules.sh \
- > $RPM_BUILD_ROOT/etc/shrc.d/python-modules.csh
+ < $RPM_BUILD_ROOT/etc/shrc.d/python%{py_ver}-modules.sh \
+ > $RPM_BUILD_ROOT/etc/shrc.d/python%{py_ver}-modules.csh
# xgettext specific for Python code
#
# we will have two commands: pygettext.py (an alias) and pygettext;
# this way there are no import (which is impossible now) conflicts and
# pygettext.py is provided for compatibility
-install Tools/i18n/pygettext.py $RPM_BUILD_ROOT%{_bindir}/pygettext
+install Tools/i18n/pygettext.py $RPM_BUILD_ROOT%{_bindir}/pygettext%{py_ver}
# just to cut the noise, as they are not packaged (now)
-# first tests
-rm -rf $RPM_BUILD_ROOT%{py_scriptdir}/test
-rm -rf $RPM_BUILD_ROOT%{py_scriptdir}/bsddb/test
-rm -rf $RPM_BUILD_ROOT%{py_scriptdir}/ctypes/test
-rm -rf $RPM_BUILD_ROOT%{py_scriptdir}/distutils/tests
-rm -rf $RPM_BUILD_ROOT%{py_scriptdir}/email/test
-rm -rf $RPM_BUILD_ROOT%{py_scriptdir}/sqlite3/test
+# first tests (probably could be packaged)
+%{__rm} -r $RPM_BUILD_ROOT%{py_scriptdir}/test
+%{__rm} -r $RPM_BUILD_ROOT%{py_scriptdir}/ctypes/test
+%{__rm} -r $RPM_BUILD_ROOT%{py_scriptdir}/distutils/tests
+%{__rm} -r $RPM_BUILD_ROOT%{py_scriptdir}/email/test
+%{__rm} -r $RPM_BUILD_ROOT%{py_scriptdir}/importlib/test
+%{__rm} -r $RPM_BUILD_ROOT%{py_scriptdir}/lib2to3/tests
+%{__rm} -r $RPM_BUILD_ROOT%{py_scriptdir}/sqlite3/test
+%{__rm} -r $RPM_BUILD_ROOT%{py_scriptdir}/tkinter/test
+%{__rm} -r $RPM_BUILD_ROOT%{py_scriptdir}/unittest/test
# other files
-rm -rf $RPM_BUILD_ROOT%{py_scriptdir}/plat-*/regen
-find $RPM_BUILD_ROOT%{py_scriptdir} -name \*.egg-info -exec rm {} \;
-find $RPM_BUILD_ROOT%{py_scriptdir} -name \*.bat -exec rm {} \;
-find $RPM_BUILD_ROOT%{py_scriptdir} -name \*.txt -exec rm {} \;
-find $RPM_BUILD_ROOT%{py_scriptdir} -name README\* -exec rm {} \;
+%{__rm} $RPM_BUILD_ROOT%{py_scriptdir}/plat-*/regen
+%{__rm} $RPM_BUILD_ROOT%{py_scriptdir}/ctypes/macholib/fetch_macholib*
+%{__rm} $RPM_BUILD_ROOT%{py_scriptdir}/site-packages/README
+%{__rm} $RPM_BUILD_ROOT%{py_scriptdir}/distutils/command/wininst*.exe
+%{__rm} $RPM_BUILD_ROOT%{py_scriptdir}/idlelib/*.bat
+%{__rm} $RPM_BUILD_ROOT%{py_scriptdir}/idlelib/*.pyw
+
+# currently provided by python-2to3, consider switching to this one
+%{__rm} $RPM_BUILD_ROOT%{_bindir}/2to3
+
+# that seems to be only an empty extension template,
+# which seems to be built only {with tests}
+%{__rm} -f $RPM_BUILD_ROOT%{py_dyndir}/xxlimited.*.so
+
+# already in %%doc
+%{__rm} $RPM_BUILD_ROOT%{py_scriptdir}/LICENSE.txt
%clean
rm -rf $RPM_BUILD_ROOT
%post libs -p /sbin/ldconfig
%postun libs -p /sbin/ldconfig
-%post doc-info
-[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
+%post doc-info -p /sbin/postshell
+-/usr/sbin/fix-info-dir -c %{_infodir}
-%postun doc-info
-[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
+%postun doc-info -p /sbin/postshell
+-/usr/sbin/fix-info-dir -c %{_infodir}
%files
%defattr(644,root,root,755)
-%attr(755,root,root) %{_bindir}/python
-%{_mandir}/man1/*
+%attr(755,root,root) %{_bindir}/python%{py_ver}
+%attr(755,root,root) %{_bindir}/python%{py_abi}
+%attr(755,root,root) %{_bindir}/python3
+%{_mandir}/man1/python%{py_ver}.1*
+
+%files libs
+%defattr(644,root,root,755)
+%doc LICENSE
+%attr(755,root,root) %{_libdir}/libpython%{py_abi}.so.*.*
+
+%dir %{py_incdir}
+%{py_incdir}/pyconfig.h
+
+%dir %{py_libdir}
+%dir %{py_dyndir}
+%dir %{py_sitedir}
+%dir %{py_sitedir}/__pycache__
+%dir %{py_scriptdir}
+%dir %{py_scriptdir}/__pycache__
+%dir %{py_sitescriptdir}
+%dir %{py_sitescriptdir}/__pycache__
+
+# shared modules required by python library
+%attr(755,root,root) %{py_dyndir}/_struct.cpython-*.so
+
+# modules required by python library
+%{py_scriptdir}/_abcoll.py
+%{py_scriptdir}/_weakrefset.py
+%{py_scriptdir}/abc.py
+%{py_scriptdir}/bisect.py
+%{py_scriptdir}/codecs.py
+%{py_scriptdir}/collections.py
+%{py_scriptdir}/copyreg.py
+%{py_scriptdir}/functools.py
+%{py_scriptdir}/genericpath.py
+%{py_scriptdir}/heapq.py
+%{py_scriptdir}/keyword.py
+%{py_scriptdir}/linecache.py
+%{py_scriptdir}/locale.py
+%{py_scriptdir}/io.py
+%{py_scriptdir}/posixpath.py
+%{py_scriptdir}/re.py
+%{py_scriptdir}/reprlib.py
+%{py_scriptdir}/site.py
+%{py_scriptdir}/sre_*.py
+%{py_scriptdir}/stat.py
+%{py_scriptdir}/sysconfig.py
+%{py_scriptdir}/token.py
+%{py_scriptdir}/tokenize.py
+%{py_scriptdir}/traceback.py
+%{py_scriptdir}/weakref.py
+%{py_scriptdir}/os.py
+# needed by the dynamic sys.lib patch
+%{py_scriptdir}/types.py
+%{py_scriptdir}/__pycache__/_abcoll.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/_weakrefset.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/abc.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/bisect.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/codecs.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/collections.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/copyreg.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/functools.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/genericpath.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/heapq.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/keyword.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/linecache.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/locale.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/io.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/posixpath.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/re.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/reprlib.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/site.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/sre_*.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/stat.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/sysconfig.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/token.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/tokenize.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/traceback.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/weakref.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/os.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/types.cpython-*.py[co]
+
+# encodings required by python library
+%dir %{py_scriptdir}/encodings
+%{py_scriptdir}/encodings/__pycache__
+%{py_scriptdir}/encodings/*.py
+
+%dir %{py_libdir}/config-%{py_abi}
+%{py_libdir}/config-%{py_abi}/Makefile
+%{py_libdir}/config-%{py_abi}/Setup
+%{py_libdir}/config-%{py_abi}/Setup.config
+%{py_libdir}/config-%{py_abi}/Setup.local
%files modules
%defattr(644,root,root,755)
-/etc/shrc.d/python-modules*
-%exclude %{py_scriptdir}/UserDict.py[co]
-%exclude %{py_scriptdir}/codecs.py[co]
-%exclude %{py_scriptdir}/copy_reg.py[co]
-%exclude %{py_scriptdir}/locale.py[co]
-%exclude %{py_scriptdir}/posixpath.py[co]
-%exclude %{py_scriptdir}/pdb.py[co]
-%exclude %{py_scriptdir}/profile.py[co]
-%exclude %{py_scriptdir}/pstats.py[co]
-%exclude %{py_scriptdir}/pydoc.py[co]
-%exclude %{py_scriptdir}/site.py[co]
-%exclude %{py_scriptdir}/stat.py[co]
-%exclude %{py_scriptdir}/timeit.py[co]
-%exclude %{py_scriptdir}/os.py[co]
-%exclude %{py_scriptdir}/encodings/*.py[co]
-%exclude %{py_scriptdir}/types.py[co]
-
-%{py_scriptdir}/*.py[co]
-
-%{py_dyndir}/*.egg-info
+/etc/shrc.d/python*-modules*
+%{py_scriptdir}/__future__.py
+%{py_scriptdir}/__phello__.foo.py
+%{py_scriptdir}/_compat_pickle.py
+%{py_scriptdir}/_dummy_thread.py
+%{py_scriptdir}/_markupbase.py
+%{py_scriptdir}/_pyio.py
+%{py_scriptdir}/_strptime.py
+%{py_scriptdir}/_threading_local.py
+%{py_scriptdir}/aifc.py
+%{py_scriptdir}/antigravity.py
+%{py_scriptdir}/argparse.py
+%{py_scriptdir}/ast.py
+%{py_scriptdir}/asynchat.py
+%{py_scriptdir}/asyncore.py
+%{py_scriptdir}/base64.py
+%{py_scriptdir}/bdb.py
+%{py_scriptdir}/binhex.py
+%{py_scriptdir}/cProfile.py
+%{py_scriptdir}/calendar.py
+%{py_scriptdir}/cgi.py
+%{py_scriptdir}/cgitb.py
+%{py_scriptdir}/chunk.py
+%{py_scriptdir}/cmd.py
+%{py_scriptdir}/code.py
+%{py_scriptdir}/codeop.py
+%{py_scriptdir}/colorsys.py
+%{py_scriptdir}/compileall.py
+%{py_scriptdir}/configparser.py
+%{py_scriptdir}/contextlib.py
+%{py_scriptdir}/copy.py
+%{py_scriptdir}/csv.py
+%{py_scriptdir}/datetime.py
+%{py_scriptdir}/decimal.py
+%{py_scriptdir}/difflib.py
+%{py_scriptdir}/dis.py
+%{py_scriptdir}/doctest.py
+%{py_scriptdir}/dummy_threading.py
+%{py_scriptdir}/filecmp.py
+%{py_scriptdir}/fileinput.py
+%{py_scriptdir}/fnmatch.py
+%{py_scriptdir}/formatter.py
+%{py_scriptdir}/fractions.py
+%{py_scriptdir}/ftplib.py
+%{py_scriptdir}/getopt.py
+%{py_scriptdir}/getpass.py
+%{py_scriptdir}/gettext.py
+%{py_scriptdir}/glob.py
+%{py_scriptdir}/gzip.py
+%{py_scriptdir}/hashlib.py
+%{py_scriptdir}/hmac.py
+%{py_scriptdir}/imaplib.py
+%{py_scriptdir}/imghdr.py
+%{py_scriptdir}/inspect.py
+%{py_scriptdir}/macpath.py
+%{py_scriptdir}/macurl2path.py
+%{py_scriptdir}/mailbox.py
+%{py_scriptdir}/mailcap.py
+%{py_scriptdir}/mimetypes.py
+%{py_scriptdir}/modulefinder.py
+%{py_scriptdir}/netrc.py
+%{py_scriptdir}/nntplib.py
+%{py_scriptdir}/ntpath.py
+%{py_scriptdir}/nturl2path.py
+%{py_scriptdir}/numbers.py
+%{py_scriptdir}/opcode.py
+%{py_scriptdir}/optparse.py
+%{py_scriptdir}/os2emxpath.py
+%{py_scriptdir}/pickle.py
+%{py_scriptdir}/pickletools.py
+%{py_scriptdir}/pipes.py
+%{py_scriptdir}/pkgutil.py
+%{py_scriptdir}/platform.py
+%{py_scriptdir}/plistlib.py
+%{py_scriptdir}/poplib.py
+%{py_scriptdir}/pprint.py
+%{py_scriptdir}/pty.py
+%{py_scriptdir}/py_compile.py
+%{py_scriptdir}/pyclbr.py
+%{py_scriptdir}/queue.py
+%{py_scriptdir}/quopri.py
+%{py_scriptdir}/random.py
+%{py_scriptdir}/rlcompleter.py
+%{py_scriptdir}/runpy.py
+%{py_scriptdir}/sched.py
+%{py_scriptdir}/shelve.py
+%{py_scriptdir}/shlex.py
+%{py_scriptdir}/shutil.py
+%{py_scriptdir}/smtpd.py
+%{py_scriptdir}/smtplib.py
+%{py_scriptdir}/sndhdr.py
+%{py_scriptdir}/socket.py
+%{py_scriptdir}/socketserver.py
+%{py_scriptdir}/ssl.py
+%{py_scriptdir}/string.py
+%{py_scriptdir}/stringprep.py
+%{py_scriptdir}/struct.py
+%{py_scriptdir}/subprocess.py
+%{py_scriptdir}/sunau.py
+%{py_scriptdir}/symbol.py
+%{py_scriptdir}/symtable.py
+%{py_scriptdir}/tabnanny.py
+%{py_scriptdir}/tarfile.py
+%{py_scriptdir}/telnetlib.py
+%{py_scriptdir}/tempfile.py
+%{py_scriptdir}/textwrap.py
+%{py_scriptdir}/this.py
+%{py_scriptdir}/threading.py
+%{py_scriptdir}/trace.py
+%{py_scriptdir}/tty.py
+%{py_scriptdir}/turtle.py
+%{py_scriptdir}/uu.py
+%{py_scriptdir}/uuid.py
+%{py_scriptdir}/warnings.py
+%{py_scriptdir}/wave.py
+%{py_scriptdir}/webbrowser.py
+%{py_scriptdir}/xdrlib.py
+%{py_scriptdir}/zipfile.py
+%{py_scriptdir}/__pycache__/__future__.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/__phello__.foo.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/_compat_pickle.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/_dummy_thread.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/_markupbase.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/_pyio.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/_strptime.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/_threading_local.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/aifc.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/antigravity.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/argparse.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/ast.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/asynchat.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/asyncore.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/base64.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/bdb.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/binhex.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/cProfile.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/calendar.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/cgi.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/cgitb.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/chunk.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/cmd.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/code.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/codeop.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/colorsys.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/compileall.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/configparser.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/contextlib.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/copy.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/csv.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/datetime.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/decimal.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/difflib.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/dis.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/doctest.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/dummy_threading.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/filecmp.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/fileinput.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/fnmatch.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/formatter.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/fractions.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/ftplib.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/getopt.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/getpass.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/gettext.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/glob.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/gzip.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/hashlib.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/hmac.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/imaplib.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/imghdr.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/inspect.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/macpath.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/macurl2path.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/mailbox.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/mailcap.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/mimetypes.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/modulefinder.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/netrc.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/nntplib.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/ntpath.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/nturl2path.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/numbers.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/opcode.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/optparse.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/os2emxpath.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/pickle.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/pickletools.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/pipes.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/pkgutil.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/platform.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/plistlib.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/poplib.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/pprint.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/pty.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/py_compile.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/pyclbr.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/queue.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/quopri.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/random.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/rlcompleter.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/runpy.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/sched.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/shelve.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/shlex.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/shutil.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/smtpd.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/smtplib.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/sndhdr.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/socket.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/socketserver.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/ssl.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/string.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/stringprep.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/struct.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/subprocess.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/sunau.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/symbol.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/symtable.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/tabnanny.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/tarfile.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/telnetlib.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/tempfile.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/textwrap.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/this.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/threading.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/trace.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/tty.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/turtle.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/uu.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/uuid.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/warnings.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/wave.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/webbrowser.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/xdrlib.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/zipfile.cpython-*.py[co]
+%{py_dyndir}/Python-%{version}-py*.egg-info
#
# list .so modules to be sure that all of them are built
#
-# three modules below do not work on 64-bit architectures
-# see Python README file for explanation
-%ifnarch alpha ia64 ppc64 sparc64 %{x8664}
-%attr(755,root,root) %{py_dyndir}/audioop.so
-%attr(755,root,root) %{py_dyndir}/rgbimg.so
-%attr(755,root,root) %{py_dyndir}/imageop.so
-# sizeof(long) != sizeof(int), so dl module will not be built on 64-bit
-# platforms
-%attr(755,root,root) %{py_dyndir}/dl.so
-%endif
-
-%attr(755,root,root) %{py_dyndir}/array.so
-%attr(755,root,root) %{py_dyndir}/atexit.so
-%attr(755,root,root) %{py_dyndir}/audioop.so
-%attr(755,root,root) %{py_dyndir}/binascii.so
-%attr(755,root,root) %{py_dyndir}/_bisect.so
-%attr(755,root,root) %{py_dyndir}/_bsddb.so
-%attr(755,root,root) %{py_dyndir}/bz2.so
-%attr(755,root,root) %{py_dyndir}/cmath.so
-%attr(755,root,root) %{py_dyndir}/_codecs_cn.so
-%attr(755,root,root) %{py_dyndir}/_codecs_hk.so
-%attr(755,root,root) %{py_dyndir}/_codecs_iso2022.so
-%attr(755,root,root) %{py_dyndir}/_codecs_jp.so
-%attr(755,root,root) %{py_dyndir}/_codecs_kr.so
-%attr(755,root,root) %{py_dyndir}/_codecs_tw.so
-%attr(755,root,root) %{py_dyndir}/_collections.so
-#%attr(755,root,root) %{py_dyndir}/cPickle.so
-%attr(755,root,root) %{py_dyndir}/crypt.so
-#%attr(755,root,root) %{py_dyndir}/cStringIO.so
-%attr(755,root,root) %{py_dyndir}/_csv.so
-%attr(755,root,root) %{py_dyndir}/_ctypes*.so
-%attr(755,root,root) %{py_dyndir}/_curses_panel.so
-%attr(755,root,root) %{py_dyndir}/_curses.so
-%attr(755,root,root) %{py_dyndir}/datetime.so
-%attr(755,root,root) %{py_dyndir}/_elementtree.so
-%attr(755,root,root) %{py_dyndir}/_functools.so
-%attr(755,root,root) %{py_dyndir}/_hashlib.so
-%attr(755,root,root) %{py_dyndir}/_heapq.so
-%attr(755,root,root) %{py_dyndir}/_locale.so
-%attr(755,root,root) %{py_dyndir}/_lsprof.so
-%attr(755,root,root) %{py_dyndir}/_multibytecodec.so
-%attr(755,root,root) %{py_dyndir}/_random.so
-%{?with_openssl097:%attr(755,root,root) %{py_dyndir}/_sha*.so}
-%attr(755,root,root) %{py_dyndir}/_socket.so
-%attr(755,root,root) %{py_dyndir}/_ssl.so
-%attr(755,root,root) %{py_dyndir}/_testcapi.so
-%attr(755,root,root) %{py_dyndir}/_weakref.so
+%attr(755,root,root) %{py_dyndir}/_bisect.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_codecs_cn.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_codecs_hk.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_codecs_iso2022.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_codecs_jp.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_codecs_kr.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_codecs_tw.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_csv.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_ctypes*.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_curses_panel.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_curses.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_datetime.cpython-*.so
%ifnarch sparc64
-%attr(755,root,root) %{py_dyndir}/dbm.so
+%attr(755,root,root) %{py_dyndir}/_dbm.cpython-*.so
%endif
-%attr(755,root,root) %{py_dyndir}/fcntl.so
-%attr(755,root,root) %{py_dyndir}/gdbm.so
-%attr(755,root,root) %{py_dyndir}/grp.so
-%attr(755,root,root) %{py_dyndir}/itertools.so
-#%attr(755,root,root) %{py_dyndir}/linuxaudiodev.so
-%attr(755,root,root) %{py_dyndir}/math.so
-%attr(755,root,root) %{py_dyndir}/mmap.so
-%attr(755,root,root) %{py_dyndir}/nis.so
-%attr(755,root,root) %{py_dyndir}/operator.so
-%attr(755,root,root) %{py_dyndir}/ossaudiodev.so
-%attr(755,root,root) %{py_dyndir}/parser.so
-%attr(755,root,root) %{py_dyndir}/pyexpat.so
-%attr(755,root,root) %{py_dyndir}/readline.so
-%attr(755,root,root) %{py_dyndir}/resource.so
-%attr(755,root,root) %{py_dyndir}/select.so
-#%attr(755,root,root) %{py_dyndir}/strop.so
-%attr(755,root,root) %{py_dyndir}/syslog.so
-%attr(755,root,root) %{py_dyndir}/termios.so
-%attr(755,root,root) %{py_dyndir}/time.so
-%attr(755,root,root) %{py_dyndir}/spwd.so
-%attr(755,root,root) %{py_dyndir}/unicodedata.so
-%attr(755,root,root) %{py_dyndir}/zlib.so
+%attr(755,root,root) %{py_dyndir}/_elementtree.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_gdbm.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_hashlib.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_heapq.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_json.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_lsprof.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_multibytecodec.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_multiprocessing.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_pickle.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_posixsubprocess.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_random.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_socket.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_ssl.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_testcapi.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/array.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/atexit.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/audioop.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/binascii.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/bz2.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/cmath.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/crypt.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/fcntl.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/grp.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/math.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/mmap.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/nis.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/ossaudiodev.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/parser.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/pyexpat.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/readline.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/resource.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/select.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/syslog.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/termios.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/time.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/spwd.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/unicodedata.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/zlib.cpython-*.so
%dir %{py_scriptdir}/plat-*
-%{py_scriptdir}/plat-*/*.py[co]
-
-%dir %{py_scriptdir}/bsddb
-%{py_scriptdir}/bsddb/*.py[co]
+%{py_scriptdir}/plat-*/__pycache__
+%{py_scriptdir}/plat-*/*.py
-#%dir %{py_scriptdir}/compiler
-#%{py_scriptdir}/compiler/*.py[co]
+%{py_scriptdir}/concurrent
%dir %{py_scriptdir}/ctypes
%dir %{py_scriptdir}/ctypes/macholib
+%{py_scriptdir}/ctypes/__pycache__
+%{py_scriptdir}/ctypes/macholib/__pycache__
-%{py_scriptdir}/ctypes/*.py[co]
-%{py_scriptdir}/ctypes/macholib/*.py[co]
+%{py_scriptdir}/ctypes/*.py
+%{py_scriptdir}/ctypes/macholib/*.py
+%doc %{py_scriptdir}/ctypes/macholib/README.ctypes
%dir %{py_scriptdir}/curses
-%{py_scriptdir}/curses/*.py[co]
+%{py_scriptdir}/curses/__pycache__
+%{py_scriptdir}/curses/*.py
+
+%dir %{py_scriptdir}/dbm
+%{py_scriptdir}/dbm/__pycache__
+%{py_scriptdir}/dbm/*.py
%dir %{py_scriptdir}/distutils
%dir %{py_scriptdir}/distutils/command
-%{py_scriptdir}/distutils/*.py[co]
-%{py_scriptdir}/distutils/command/*.py[co]
+%doc %{py_scriptdir}/distutils/README
+%{py_scriptdir}/distutils/__pycache__
+%{py_scriptdir}/distutils/command/__pycache__
+%{py_scriptdir}/distutils/*.py
+%{py_scriptdir}/distutils/command/*.py
+%{py_scriptdir}/distutils/command/command_template
%dir %{py_scriptdir}/email
%dir %{py_scriptdir}/email/mime
-%{py_scriptdir}/email/*.py[co]
-%{py_scriptdir}/email/mime/*.py[co]
+%{py_scriptdir}/email/__pycache__
+%{py_scriptdir}/email/mime/__pycache__
+%{py_scriptdir}/email/*.py
+%{py_scriptdir}/email/mime/*.py
+
+%dir %{py_scriptdir}/html
+%{py_scriptdir}/html/*.py
+%{py_scriptdir}/html/__pycache__
+
+%dir %{py_scriptdir}/http
+%{py_scriptdir}/http/__pycache__
+%{py_scriptdir}/http/*.py
+
+%dir %{py_scriptdir}/importlib
+%{py_scriptdir}/importlib/__pycache__
+%{py_scriptdir}/importlib/*.py
+
+%dir %{py_scriptdir}/json
+%{py_scriptdir}/json/__pycache__
+%{py_scriptdir}/json/*.py
%dir %{py_scriptdir}/logging
-%{py_scriptdir}/logging/*.py[co]
+%{py_scriptdir}/logging/__pycache__
+%{py_scriptdir}/logging/*.py
+
+%dir %{py_scriptdir}/multiprocessing
+%{py_scriptdir}/multiprocessing/__pycache__
+%{py_scriptdir}/multiprocessing/*.py
+%dir %{py_scriptdir}/multiprocessing/dummy
+%{py_scriptdir}/multiprocessing/dummy/__pycache__
+%{py_scriptdir}/multiprocessing/dummy/*.py
+
+%{py_scriptdir}/turtledemo
+%{py_scriptdir}/unittest
+
+%dir %{py_scriptdir}/urllib
+%{py_scriptdir}/urllib/__pycache__
+%{py_scriptdir}/urllib/*.py
%dir %{py_scriptdir}/wsgiref
-%{py_scriptdir}/wsgiref/*.py[co]
+%{py_scriptdir}/wsgiref/__pycache__
+%{py_scriptdir}/wsgiref/*.py
+%{py_scriptdir}/wsgiref.egg-info
%dir %{py_scriptdir}/xml
%dir %{py_scriptdir}/xml/dom
%dir %{py_scriptdir}/xml/etree
%dir %{py_scriptdir}/xml/parsers
%dir %{py_scriptdir}/xml/sax
-%{py_scriptdir}/xml/*.py[co]
-%{py_scriptdir}/xml/dom/*.py[co]
-%{py_scriptdir}/xml/etree/*.py[co]
-%{py_scriptdir}/xml/parsers/*.py[co]
-%{py_scriptdir}/xml/sax/*.py[co]
-
-%files modules-sqlite
-%defattr(644,root,root,755)
-%attr(755,root,root) %{py_dyndir}/_sqlite3.so
-%dir %{py_scriptdir}/sqlite3
-%{py_scriptdir}/sqlite3/*.py[co]
-
-%files libs
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libpython*.so.*
-
-%dir %{py_dyndir}
-%dir %{py_scriptdir}
-%dir %{py_libdir}
-%dir %{py_sitescriptdir}
-%dir %{py_sitedir}
-
-# shared modules required by python library
-%attr(755,root,root) %{py_dyndir}/_struct.so
+%{py_scriptdir}/xml/__pycache__
+%{py_scriptdir}/xml/dom/__pycache__
+%{py_scriptdir}/xml/etree/__pycache__
+%{py_scriptdir}/xml/parsers/__pycache__
+%{py_scriptdir}/xml/sax/__pycache__
+%{py_scriptdir}/xml/*.py
+%{py_scriptdir}/xml/dom/*.py
+%{py_scriptdir}/xml/etree/*.py
+%{py_scriptdir}/xml/parsers/*.py
+%{py_scriptdir}/xml/sax/*.py
-# modules required by python library
-%{py_scriptdir}/UserDict.py[co]
-%{py_scriptdir}/codecs.py[co]
-%{py_scriptdir}/copy_reg.py[co]
-%{py_scriptdir}/locale.py[co]
-%{py_scriptdir}/posixpath.py[co]
-%{py_scriptdir}/site.py[co]
-%{py_scriptdir}/stat.py[co]
-%{py_scriptdir}/os.py[co]
-# needed by the dynamic sys.lib patch
-%{py_scriptdir}/types.py[co]
+%dir %{py_scriptdir}/xmlrpc
+%{py_scriptdir}/xmlrpc/__pycache__
+%{py_scriptdir}/xmlrpc/*.py
-# encodings required by python library
-%dir %{py_scriptdir}/encodings
-%{py_scriptdir}/encodings/*.py[co]
+%attr(755,root,root) %{py_dyndir}/_sqlite3.cpython-*.so
+%dir %{py_scriptdir}/sqlite3
+%{py_scriptdir}/sqlite3/__pycache__
+%{py_scriptdir}/sqlite3/*.py
-%files -n pydoc
+%files -n pydoc3
%defattr(644,root,root,755)
-%attr(755,root,root) %{_bindir}/pydoc
-%{py_scriptdir}/pydoc.py[co]
-
-%files -n idle
+%attr(755,root,root) %{_bindir}/pydoc3
+%attr(755,root,root) %{_bindir}/pydoc3.2
+%{py_scriptdir}/pydoc.py
+%{py_scriptdir}/__pycache__/pydoc.cpython-*.py[co]
+%dir %{py_scriptdir}/pydoc_data
+%{py_scriptdir}/pydoc_data/__pycache__
+%{py_scriptdir}/pydoc_data/*.py
+%{py_scriptdir}/pydoc_data/*.css
+
+%files -n idle3
%defattr(644,root,root,755)
-%attr(755,root,root) %{_bindir}/idle
+%attr(755,root,root) %{_bindir}/idle3
+%attr(755,root,root) %{_bindir}/idle3.2
%dir %{py_scriptdir}/idlelib
%dir %{py_scriptdir}/idlelib/Icons
-%{py_scriptdir}/idlelib/*.py[co]
+%{py_scriptdir}/idlelib/__pycache__
+%{py_scriptdir}/idlelib/*.py
+%doc %{py_scriptdir}/idlelib/*.txt
+%doc %{py_scriptdir}/idlelib/ChangeLog
%{py_scriptdir}/idlelib/Icons/*
%{py_scriptdir}/idlelib/*.def
%files devel
%defattr(644,root,root,755)
%doc Misc/{ACKS,NEWS,README,README.valgrind,valgrind-python.supp}
-%attr(755,root,root) %{_bindir}/python-config
%attr(755,root,root) %{_bindir}/python%{py_ver}-config
-%attr(755,root,root) %{_libdir}/lib*.so
-%dir %{py_incdir}
+%attr(755,root,root) %{_bindir}/python%{py_abi}-config
+%attr(755,root,root) %{_bindir}/python3-config
+%attr(755,root,root) %{_libdir}/libpython%{py_abi}.so
+%attr(755,root,root) %{_libdir}/libpython3.so
%{py_incdir}/*.h
-
-%dir %{py_libdir}/config
-%attr(755,root,root) %{py_libdir}/config/makesetup
-%attr(755,root,root) %{py_libdir}/config/install-sh
-%{py_libdir}/config/Makefile
-%{py_libdir}/config/Makefile.pre.in
-%{py_libdir}/config/Setup
-%{py_libdir}/config/Setup.config
-%{py_libdir}/config/Setup.local
-%{py_libdir}/config/config.c
-%{py_libdir}/config/config.c.in
-%{py_libdir}/config/python.o
-
-%files devel-src
-%defattr(644,root,root,755)
-%attr(-,root,root) %{py_scriptdir}/*.py
-%{py_scriptdir}/plat-*/*.py
-%{py_scriptdir}/bsddb/*.py
-%{py_scriptdir}/ctypes/*.py
-%{py_scriptdir}/ctypes/macholib/*.py
-#%{py_scriptdir}/compiler/*.py
-%{py_scriptdir}/curses/*.py
-%{py_scriptdir}/distutils/*.py
-%{py_scriptdir}/distutils/command/*.py
-%{py_scriptdir}/email/*.py
-%{py_scriptdir}/email/mime/*.py
-%{py_scriptdir}/hotshot/*.py
-%{py_scriptdir}/logging/*.py
-%{py_scriptdir}/sqlite3/*.py
-%{py_scriptdir}/wsgiref/*.py
-%{py_scriptdir}/xml/*.py
-%{py_scriptdir}/xml/dom/*.py
-%{py_scriptdir}/xml/etree/*.py
-%{py_scriptdir}/xml/parsers/*.py
-%{py_scriptdir}/xml/sax/*.py
-%{py_scriptdir}/encodings/*.py
-%{py_scriptdir}/idlelib/*.py
+%exclude %{py_incdir}/pyconfig.h
+%attr(755,root,root) %{py_libdir}/config-%{py_abi}/makesetup
+%attr(755,root,root) %{py_libdir}/config-%{py_abi}/install-sh
+%{py_libdir}/config-%{py_abi}/config.c
+%{py_libdir}/config-%{py_abi}/config.c.in
+%{py_libdir}/config-%{py_abi}/python.o
+%{_pkgconfigdir}/python-%{py_ver}.pc
%files devel-tools
%defattr(644,root,root,755)
-%doc Lib/pdb.doc
-/etc/shrc.d/python-devel*
-
-%attr(755,root,root) %{_bindir}/pygettext
-
-%attr(755,root,root) %{py_dyndir}/_hotshot.so
-%dir %{py_scriptdir}/hotshot
-%{py_scriptdir}/hotshot/*.py[co]
-%{py_scriptdir}/pdb.py[co]
-%{py_scriptdir}/profile.py[co]
-%{py_scriptdir}/pstats.py[co]
-%{py_scriptdir}/timeit.py[co]
+/etc/shrc.d/python*-devel*
+%attr(755,root,root) %{_bindir}/pygettext%{py_ver}
+%{py_scriptdir}/pdb.py
+%{py_scriptdir}/profile.py
+%{py_scriptdir}/pstats.py
+%{py_scriptdir}/timeit.py
+%{py_scriptdir}/__pycache__/pdb.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/profile.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/pstats.cpython-*.py[co]
+%{py_scriptdir}/__pycache__/timeit.cpython-*.py[co]
+
+%files 2to3
+%attr(755,root,root) %{_bindir}/2to3-%{py_ver}
+%dir %{py_scriptdir}/lib2to3
+%{py_scriptdir}/lib2to3/__pycache__
+%{py_scriptdir}/lib2to3/*.txt
+%{py_scriptdir}/lib2to3/*.pickle
+%{py_scriptdir}/lib2to3/*.py
+%dir %{py_scriptdir}/lib2to3/fixes
+%{py_scriptdir}/lib2to3/fixes/__pycache__
+%{py_scriptdir}/lib2to3/fixes/*.py
+%dir %{py_scriptdir}/lib2to3/pgen2
+%{py_scriptdir}/lib2to3/pgen2/__pycache__
+%{py_scriptdir}/lib2to3/pgen2/*.py
%files static
%defattr(644,root,root,755)
-%{_libdir}/lib*.a
+%{_libdir}/libpython%{py_abi}.a
%files examples
%defattr(644,root,root,755)
%{_examplesdir}/%{name}-%{version}
-
-%files doc
-%defattr(644,root,root,755)
-%doc Python-Docs-%{version}%{beta}/*
-
%if %{with info}
%files doc-info
%defattr(644,root,root,755)
%if %{with tkinter}
%files tkinter
%defattr(644,root,root,755)
-%{py_scriptdir}/lib-tk
-%attr(755,root,root) %{py_dyndir}/_tkinter.so
+%dir %{py_scriptdir}/tkinter
+%{py_scriptdir}/tkinter/__pycache__
+%{py_scriptdir}/tkinter/*.py
+%attr(755,root,root) %{py_dyndir}/_tkinter.cpython-*.so
%endif