forked from pool/python
Exclude /usr/bin/2to3 to prevent conflicts with python3-2to3 Without this change, it is impossible to have both python-base and python3-2to3 as buildrequires in the same spec file (OBS will return an error). This makes it impossible to build both python2 and python3 versions of many packages in the same spec file. This should really not be in python-base anyway, since it is used by software that is going to be running on python3, not by software running on python2. This will only fix builds on opensuse-factory, I don't know the best way to fix this for earlier versions of openSUSE. OBS-URL: https://build.opensuse.org/request/show/96388 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python?expand=0&rev=111
371 lines
15 KiB
RPMSpec
371 lines
15 KiB
RPMSpec
#
|
|
# spec file for package python-base
|
|
#
|
|
# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# upon. The license for this file, and modifications and additions to the
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
# license for the pristine package is not an Open Source License, in which
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
# published by the Open Source Initiative.
|
|
|
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
|
|
Name: python-base
|
|
Version: 2.7.2
|
|
Release: 0
|
|
License: Python-2.0
|
|
Summary: Python Interpreter base package
|
|
Url: http://www.python.org/
|
|
Group: Development/Languages/Python
|
|
%define tarversion %{version}
|
|
%define tarname Python-%{tarversion}
|
|
Source0: %{tarname}.tar.bz2
|
|
Source1: macros.python
|
|
Source2: baselibs.conf
|
|
Source3: README.SUSE
|
|
Source4: distutils.cfg
|
|
Source5: _local.pth
|
|
# COMMON-PATCH-BEGIN
|
|
Patch1: python-2.7-dirs.patch
|
|
Patch2: python-distutils-rpm-8.patch
|
|
Patch3: python-2.7.2-multilib.patch
|
|
Patch4: python-2.5.1-sqlite.patch
|
|
Patch5: python-2.7rc2-canonicalize2.patch
|
|
Patch6: python-2.7rc2-configure.patch
|
|
Patch7: python-2.6-gettext-plurals.patch
|
|
Patch8: python-2.6b3-curses-panel.patch
|
|
Patch9: python-2.7.1-distutils_test_path.patch
|
|
Patch10: sparc_longdouble.patch
|
|
Patch11: python-2.7.2-linux3.patch
|
|
Patch12: http://psf.upfronthosting.co.za/roundup/tracker/file19029/python-test_structmembers.patch
|
|
Patch13: python-2.7.2-fix_date_time_compiler.patch
|
|
Patch14: python-2.7.1-urllib-noproxy.patch
|
|
# COMMON-PATCH-END
|
|
%define python_version %(echo %{tarversion} | head -c 3)
|
|
BuildRequires: automake
|
|
BuildRequires: fdupes
|
|
BuildRequires: pkg-config
|
|
BuildRequires: zlib-devel
|
|
# explicitly, see bnc#697251:
|
|
Requires: libpython2_7-1_0 = %{version}
|
|
Provides: %{name} = %{python_version}
|
|
# bug437293
|
|
%ifarch ppc64
|
|
Obsoletes: python-64bit
|
|
%endif
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|
|
|
%description
|
|
Python is an interpreted, object-oriented programming language, and is
|
|
often compared to Tcl, Perl, Scheme, or Java. You can find an overview
|
|
of Python in the documentation and tutorials included in the python-doc
|
|
(HTML) or python-doc-pdf (PDF) packages.
|
|
|
|
This package contains all of stand-alone Python files, minus binary
|
|
modules that would pull in extra dependencies.
|
|
|
|
%package -n python-devel
|
|
Summary: Include Files and Libraries Mandatory for Building Python Modules
|
|
Group: Development/Languages/Python
|
|
Requires: glibc-devel
|
|
Requires: python-base = %{version}
|
|
|
|
%description -n python-devel
|
|
The Python programming language's interpreter can be extended with
|
|
dynamically loaded extensions and can be embedded in other programs.
|
|
|
|
This package contains header files, a static library, and development
|
|
tools for building Python modules, extending the Python interpreter or
|
|
embedding Python in applications.
|
|
|
|
%package -n python-xml
|
|
Summary: A Python XML Interface
|
|
Group: Development/Libraries/Python
|
|
Requires: python-base = %{version}
|
|
# pyxml used to live out of tree
|
|
Provides: pyxml = 0.8.5
|
|
Obsoletes: pyxml < 0.8.5
|
|
|
|
%description -n python-xml
|
|
The expat module is a Python interface to the expat XML parser. Since
|
|
Python2.x, it is part of the core Python distribution.
|
|
|
|
%package -n libpython2_7-1_0
|
|
Summary: Python Interpreter shared library
|
|
Group: Development/Languages/Python
|
|
|
|
%description -n libpython2_7-1_0
|
|
Python is an interpreted, object-oriented programming language, and is
|
|
often compared to Tcl, Perl, Scheme, or Java. You can find an overview
|
|
of Python in the documentation and tutorials included in the python-doc
|
|
(HTML) or python-doc-pdf (PDF) packages.
|
|
|
|
This package contains libpython2.6 shared library for embedding in
|
|
other applications.
|
|
|
|
%prep
|
|
%setup -q -n %{tarname}
|
|
# patching
|
|
# COMMON-PREP-BEGIN
|
|
%patch1 -p1
|
|
%patch2 -p1
|
|
%patch3
|
|
%patch4
|
|
%patch5
|
|
%patch6
|
|
%patch7
|
|
%patch8
|
|
%patch9 -p1
|
|
%patch10 -p1
|
|
%patch11
|
|
%patch12
|
|
%patch13
|
|
%patch14 -p1
|
|
# COMMON-PREP-END
|
|
|
|
# drop Autoconf version requirement
|
|
sed -i 's/^version_required/dnl version_required/' configure.in
|
|
|
|
%build
|
|
export OPT="%{optflags}"
|
|
|
|
autoreconf -f -i . # Modules/_ctypes/libffi
|
|
|
|
# provide a stable timestamp
|
|
touch -r %{SOURCE0} Makefile.pre.in
|
|
|
|
# prevent make from trying to rebuild asdl stuff, which requires existing
|
|
# python installation
|
|
touch Parser/asdl* Python/Python-ast.c Include/Python-ast.h
|
|
|
|
%configure \
|
|
--docdir=%{_docdir}/python \
|
|
--with-fpectl \
|
|
--enable-ipv6 \
|
|
--enable-shared \
|
|
--enable-unicode=ucs4
|
|
|
|
LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH \
|
|
make %{?_smp_mflags} profile-opt
|
|
|
|
%check
|
|
# on hppa, the threading of glibc is quite broken. The tests just stop
|
|
# at some point, and the machine does not build anything more until a
|
|
# timeout several hours later.
|
|
%ifnarch hppa %arm
|
|
# test_file(2k) fails in autobuild env - "stdin.seek(-1)" wrongly succeeds. probably an issue with autobuild's stdin
|
|
# test_urllib2 relies on being able to resolve local address, which is notoriously impossible in autobuild
|
|
EXCLUDE="-x test_urllib2 -x test_file -x test_file2k"
|
|
# test_nis and test_threading are AWFULLY slow.
|
|
EXCLUDE="$EXCLUDE -x test_nis -x test_threading"
|
|
# test_gdb fails if gdb with (different) python support is part of the buildsystem
|
|
EXCLUDE="$EXCLUDE -x test_gdb"
|
|
%ifarch ia64
|
|
# test_smtplib's testSend is known to be broken and on ia64 it actually fails most of the time, preventing the build.
|
|
EXCLUDE="$EXCLUDE -x test_smtplib"
|
|
%endif
|
|
# test_subprocess and test_unittest and test_threaded_import fail in Factory
|
|
EXCLUDE="$EXCLUDE -x test_subprocess -x test_unittest -xtest_threaded_import"
|
|
# Limit virtual memory to avoid spurious failures
|
|
if test $(ulimit -v) = unlimited || test $(ulimit -v) -gt 10000000; then
|
|
ulimit -v 10000000 || :
|
|
fi
|
|
make test TESTOPTS="-l $EXCLUDE"
|
|
# use network, be verbose:
|
|
#make test TESTOPTS="-l -u network -v"
|
|
%endif
|
|
|
|
%install
|
|
# replace rest of /usr/local/bin/python or /usr/bin/python2.5 with /usr/bin/python
|
|
find . -wholename "./Parser" -prune -o -name '*.py' -type f -print0 | xargs -0 grep -lE '^#! *(/usr/.*bin/(env +)?)?python' | xargs sed -r -i -e '1s@^#![[:space:]]*(/usr/(local/)?bin/(env +)?)?python([0-9]+\.[0-9]+)?@#!/usr/bin/python@'
|
|
# the grep inbetween makes it much faster
|
|
########################################
|
|
# install it
|
|
########################################
|
|
%make_install OPT="%{optflags} -fPIC"
|
|
# install site-specific tweaks
|
|
ln -s python%{python_version} %{buildroot}%{_bindir}/python2
|
|
install -m 644 %{SOURCE4} %{buildroot}%{_libdir}/python%{python_version}/distutils
|
|
install -m 644 %{SOURCE5} %{buildroot}%{_libdir}/python%{python_version}/site-packages
|
|
install -d -m 755 %{buildroot}%{_sysconfdir}/rpm
|
|
install -m 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/rpm
|
|
# make sure /usr/lib/python/site-packages exists even on lib64 machines
|
|
mkdir -p %{buildroot}%{_prefix}/lib/python%{python_version}/site-packages
|
|
########################################
|
|
# some cleanups
|
|
########################################
|
|
# remove hard links and replace them with symlinks
|
|
for dir in bin include %{_lib} ; do
|
|
rm -f %{buildroot}/%{_prefix}/$dir/python
|
|
ln -s python%{python_version} %{buildroot}/%{_prefix}/$dir/python
|
|
done
|
|
CLEANUP_DIR="%{buildroot}%{_libdir}/python%{python_version}"
|
|
# don't distribute precompiled windows installers (duh)
|
|
rm -f $CLEANUP_DIR/distutils/command/*.exe
|
|
# kill imageop.so and audioop.so, they are rarely used and insecure
|
|
rm -f $CLEANUP_DIR/lib-dynload/imageop.so
|
|
rm -f $CLEANUP_DIR/lib-dynload/audioop.so
|
|
# remove various things that don't need to be in python-base
|
|
rm %{buildroot}%{_bindir}/idle
|
|
rm -rf $CLEANUP_DIR/{curses,bsddb,idlelib,lib-tk,sqlite3}
|
|
rm $CLEANUP_DIR/ssl.py*
|
|
# does not work without _ssl.so anyway
|
|
# replace duplicate .pyo/.pyc with hardlinks
|
|
%fdupes %{buildroot}/%{_libdir}/python%{python_version}
|
|
########################################
|
|
# documentation
|
|
########################################
|
|
export PDOCS=%{buildroot}%{_docdir}/%{name}
|
|
install -d -m 755 $PDOCS
|
|
install -c -m 644 %{SOURCE3} $PDOCS/
|
|
install -c -m 644 LICENSE $PDOCS/
|
|
install -c -m 644 README $PDOCS/
|
|
ln -s python%{python_version}.1.gz %{buildroot}%{_mandir}/man1/python.1.gz
|
|
########################################
|
|
# devel
|
|
########################################
|
|
# install Makefile.pre.in and Makefile.pre
|
|
cp Makefile Makefile.pre.in Makefile.pre %{buildroot}%{_libdir}/python%{python_version}/config/
|
|
|
|
%post -n libpython2_7-1_0 -p %{run_ldconfig}
|
|
%postun -n libpython2_7-1_0 -p %{run_ldconfig}
|
|
|
|
%files -n python-devel
|
|
%defattr(-, root, root)
|
|
%{_libdir}/python%{python_version}/config/*
|
|
%exclude %{_libdir}/python%{python_version}/config/Setup
|
|
%exclude %{_libdir}/python%{python_version}/config/Makefile
|
|
%defattr(644, root, root, 755)
|
|
%{_libdir}/libpython*.so
|
|
%{_libdir}/pkgconfig/python-%{python_version}.pc
|
|
%{_libdir}/pkgconfig/python.pc
|
|
%{_includedir}/python*
|
|
%exclude %{_includedir}/python%{python_version}/pyconfig.h
|
|
%{_libdir}/python%{python_version}/test
|
|
%defattr(755, root, root)
|
|
%{_bindir}/python-config
|
|
%{_bindir}/python%{python_version}-config
|
|
|
|
%files -n python-xml
|
|
%defattr(644, root, root, 755)
|
|
%{_libdir}/python%{python_version}/xml
|
|
%{_libdir}/python%{python_version}/lib-dynload/pyexpat.so
|
|
|
|
%files -n libpython2_7-1_0
|
|
%defattr(644, root, root)
|
|
%{_libdir}/libpython*.so.*
|
|
|
|
%files
|
|
%defattr(644, root, root, 755)
|
|
%config %{_sysconfdir}/rpm/macros.python
|
|
%dir %{_docdir}/%{name}
|
|
%doc %{_docdir}/%{name}/README
|
|
%doc %{_docdir}/%{name}/LICENSE
|
|
%doc %{_docdir}/%{name}/README.SUSE
|
|
%doc %{_mandir}/man1/python.1*
|
|
%doc %{_mandir}/man1/python%{python_version}.1*
|
|
%dir %{_includedir}/python%{python_version}
|
|
%{_includedir}/python%{python_version}/pyconfig.h
|
|
%{_libdir}/python
|
|
%dir %{_prefix}/lib/python%{python_version}
|
|
%dir %{_prefix}/lib/python%{python_version}/site-packages
|
|
%dir %{_libdir}/python%{python_version}
|
|
%dir %{_libdir}/python%{python_version}/config
|
|
%{_libdir}/python%{python_version}/config/Setup
|
|
%{_libdir}/python%{python_version}/config/Makefile
|
|
%{_libdir}/python%{python_version}/*.*
|
|
%{_libdir}/python%{python_version}/compiler
|
|
%{_libdir}/python%{python_version}/ctypes
|
|
%{_libdir}/python%{python_version}/distutils
|
|
%{_libdir}/python%{python_version}/email
|
|
%{_libdir}/python%{python_version}/encodings
|
|
%{_libdir}/python%{python_version}/hotshot
|
|
%{_libdir}/python%{python_version}/importlib
|
|
%{_libdir}/python%{python_version}/json
|
|
%{_libdir}/python%{python_version}/lib2to3
|
|
%{_libdir}/python%{python_version}/logging
|
|
%{_libdir}/python%{python_version}/multiprocessing
|
|
%{_libdir}/python%{python_version}/plat-*
|
|
%{_libdir}/python%{python_version}/pydoc_data
|
|
%{_libdir}/python%{python_version}/unittest
|
|
%{_libdir}/python%{python_version}/wsgiref
|
|
%dir %{_libdir}/python%{python_version}/site-packages
|
|
%{_libdir}/python%{python_version}/site-packages/README
|
|
%{_libdir}/python%{python_version}/site-packages/_local.pth
|
|
%dir %{_libdir}/python%{python_version}/lib-dynload
|
|
%{_libdir}/python%{python_version}/lib-dynload/_bisect.so
|
|
#%%{_libdir}/python%%{python_version}/lib-dynload/_bytesio.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_csv.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_collections.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_ctypes.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_ctypes_test.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_elementtree.so
|
|
#%%{_libdir}/python%%{python_version}/lib-dynload/_fileio.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_functools.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_heapq.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_hotshot.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_io.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_json.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_locale.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_lsprof.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_md5.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_multiprocessing.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_random.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_sha.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_sha256.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_sha512.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_socket.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_struct.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_testcapi.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/array.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/binascii.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/bz2.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/cPickle.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/cStringIO.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/cmath.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/crypt.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/datetime.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/fcntl.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/future_builtins.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/grp.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/itertools.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/linuxaudiodev.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/math.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/mmap.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/nis.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/operator.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/ossaudiodev.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/parser.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/resource.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/select.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/spwd.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/strop.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/syslog.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/termios.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/time.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/unicodedata.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/zlib.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_codecs*.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/_multibytecodec.so
|
|
%{_libdir}/python%{python_version}/lib-dynload/Python-%{version}-py%{python_version}.egg-info
|
|
# these modules don't support 64-bit arches (disabled by setup.py)
|
|
%ifnarch alpha ia64 x86_64 s390x ppc64 sparc64
|
|
# requires sizeof(int) == sizeof(long) == sizeof(char*)
|
|
%{_libdir}/python%{python_version}/lib-dynload/dl.so
|
|
%endif
|
|
%attr(755, root, root) %{_bindir}/pydoc
|
|
%attr(755, root, root) %{_bindir}/python
|
|
%attr(755, root, root) %{_bindir}/python%{python_version}
|
|
%attr(755, root, root) %{_bindir}/smtpd.py
|
|
%{_bindir}/python2
|
|
%exclude %{_bindir}/2to3
|
|
|
|
%changelog
|