Rebuild python3.4 with new openssl

This commit is contained in:
Denis Silakov 2016-03-31 16:42:53 +03:00
parent cb09b23491
commit 69cc35aad3
7 changed files with 706 additions and 294 deletions

View file

@ -7,6 +7,7 @@ removed_sources:
Python-3.4.1.tar.xz: 143e098efe7ee7bec8a4904ec4b322f28a067a03
Python-3.4.2.tar.xz: 0727d8a8498733baabe6f51632b9bab0cbaa9ada
Python-3.4.3.tar.xz: 7ca5cd664598bea96eec105aa6453223bb6b4456
Python-3.5.1.tar.xz: 0186da436db76776196612b98bb9c2f76acfe90e
python-3.3.0-docs-html.tar.bz2: 5299b1523ede931767199a5b13388a5bf35351d5
python-3.3.1-docs-html.tar.bz2: 55c3b3f3453346835b0df2b3b0ad7fe20833a7f7
python-3.3.2-docs-html.tar.bz2: 514e1a0810fa9e6433f4bc64bdc0ad407d49ebc5
@ -15,5 +16,5 @@ removed_sources:
python-3.4.0-docs-html.tar.bz2: d6e8f45219353b128f002f3a7311ec4e08c0ca49
python-3.4.1-docs-html.tar.bz2: acc5911f0e41774788121064e004941e6090542a
sources:
Python-3.5.1.tar.xz: 0186da436db76776196612b98bb9c2f76acfe90e
Python-3.4.3.tar.xz: 7ca5cd664598bea96eec105aa6453223bb6b4456
python-3.4.2-docs-html.tar.bz2: 29fd43d785d545959b744ba44c9cbe314c12804b

View file

@ -0,0 +1,51 @@
--- setup.py.link 2012-09-30 00:58:45.000000000 +0800
+++ setup.py 2012-09-30 00:59:06.000000000 +0800
@@ -579,7 +579,7 @@
libraries=math_libs) )
# time libraries: librt may be needed for clock_gettime()
- time_libs = []
+ time_libs = ['m']
lib = sysconfig.get_config_var('TIMEMODULE_LIB')
if lib:
time_libs.append(lib)
@@ -587,7 +587,7 @@
# time operations and variables
exts.append( Extension('time', ['timemodule.c'],
libraries=time_libs) )
- exts.append( Extension('_datetime', ['_datetimemodule.c']) )
+ exts.append( Extension('_datetime', ['_datetimemodule.c'], libraries=time_libs) )
# random number generator implemented in C
exts.append( Extension("_random", ["_randommodule.c"]) )
# bisect
@@ -656,7 +656,7 @@
# Operations on audio samples
# According to #993173, this one should actually work fine on
# 64-bit platforms.
- exts.append( Extension('audioop', ['audioop.c']) )
+ exts.append( Extension('audioop', ['audioop.c'], libraries=math_libs) )
# readline
do_readline = self.compiler.find_library_file(lib_dirs, 'readline')
@@ -1855,10 +1855,11 @@
include_dirs=include_dirs,
extra_compile_args=extra_compile_args,
extra_link_args=extra_link_args,
- libraries=[],
+ libraries=['m', 'dl'],
sources=sources,
depends=depends)
ext_test = Extension('_ctypes_test',
+ libraries=['m'],
sources=['_ctypes/_ctypes_test.c'])
self.extensions.extend([ext, ext_test])
@@ -1909,7 +1910,7 @@
'Modules',
'_decimal',
'libmpdec'))]
- libraries = []
+ libraries = ['m']
sources = [
'_decimal/_decimal.c',
'_decimal/libmpdec/basearith.c',

View file

@ -0,0 +1,68 @@
diff -up Python-3.2.2/Lib/unittest/case.py.add-rpmbuild-hooks-to-unittest Python-3.2.2/Lib/unittest/case.py
--- Python-3.2.2/Lib/unittest/case.py.add-rpmbuild-hooks-to-unittest 2011-09-03 12:16:44.000000000 -0400
+++ Python-3.2.2/Lib/unittest/case.py 2011-09-09 06:35:16.365568382 -0400
@@ -3,6 +3,7 @@
import sys
import functools
import difflib
+import os
import logging
import pprint
import re
@@ -101,6 +102,43 @@ def expectedFailure(func):
raise self.test_case.failureException(msg)
+# Non-standard/downstream-only hooks for handling issues with specific test
+# cases:
+
+def _skipInRpmBuild(reason):
+ """
+ Non-standard/downstream-only decorator for marking a specific unit test
+ to be skipped when run within the %check of an rpmbuild.
+
+ Specifically, this takes effect when WITHIN_PYTHON_RPM_BUILD is set within
+ the environment, and has no effect otherwise.
+ """
+ if 'WITHIN_PYTHON_RPM_BUILD' in os.environ:
+ return skip(reason)
+ else:
+ return _id
+
+def _expectedFailureInRpmBuild(func):
+ """
+ Non-standard/downstream-only decorator for marking a specific unit test
+ as expected to fail within the %check of an rpmbuild.
+
+ Specifically, this takes effect when WITHIN_PYTHON_RPM_BUILD is set within
+ the environment, and has no effect otherwise.
+ """
+ @functools.wraps(func)
+ def wrapper(*args, **kwargs):
+ if 'WITHIN_PYTHON_RPM_BUILD' in os.environ:
+ try:
+ func(*args, **kwargs)
+ except Exception:
+ raise _ExpectedFailure(sys.exc_info())
+ raise _UnexpectedSuccess
+ else:
+ # Call directly:
+ func(*args, **kwargs)
+ return wrapper
+
class _AssertRaisesBaseContext(_BaseTestCaseContext):
def __init__(self, expected, test_case, callable_obj=None,
diff -up Python-3.2.2/Lib/unittest/__init__.py.add-rpmbuild-hooks-to-unittest Python-3.2.2/Lib/unittest/__init__.py
--- Python-3.2.2/Lib/unittest/__init__.py.add-rpmbuild-hooks-to-unittest 2011-09-03 12:16:44.000000000 -0400
+++ Python-3.2.2/Lib/unittest/__init__.py 2011-09-09 06:35:16.366568382 -0400
@@ -57,7 +57,8 @@ __unittest = True
from .result import TestResult
from .case import (TestCase, FunctionTestCase, SkipTest, skip, skipIf,
- skipUnless, expectedFailure)
+ skipUnless, expectedFailure,
+ _skipInRpmBuild, _expectedFailureInRpmBuild)
from .suite import BaseTestSuite, TestSuite
from .loader import (TestLoader, defaultTestLoader, makeSuite, getTestCaseNames,
findTestCases)

View file

@ -0,0 +1,13 @@
--- Python-2.7.2/Lib/distutils/tests/test_install.py.lib64 2011-09-08 17:51:57.851405376 -0400
+++ Python-2.7.2/Lib/distutils/tests/test_install.py 2011-09-08 18:40:46.754205096 -0400
@@ -41,8 +41,9 @@ class InstallTestCase(support.TempdirMan
self.assertEqual(got, expected)
libdir = os.path.join(destination, "lib", "python")
+ platlibdir = os.path.join(destination, "lib64", "python")
check_path(cmd.install_lib, libdir)
- check_path(cmd.install_platlib, libdir)
+ check_path(cmd.install_platlib, platlibdir)
check_path(cmd.install_purelib, libdir)
check_path(cmd.install_headers,
os.path.join(destination, "include", "python", "foopkg"))

View file

@ -0,0 +1,192 @@
--- Python-3.4.0b1/Lib/distutils/command/install.py.lib64 2013-11-24 21:36:54.000000000 +0100
+++ Python-3.4.0b1/Lib/distutils/command/install.py 2013-11-27 11:10:43.821150774 +0100
@@ -45,14 +45,14 @@ else:
INSTALL_SCHEMES = {
'unix_prefix': {
'purelib': '$base/lib/python$py_version_short/site-packages',
- 'platlib': '$platbase/lib/python$py_version_short/site-packages',
+ 'platlib': '$platbase/lib64/python$py_version_short/site-packages',
'headers': '$base/include/python$py_version_short$abiflags/$dist_name',
'scripts': '$base/bin',
'data' : '$base',
},
'unix_home': {
'purelib': '$base/lib/python',
- 'platlib': '$base/lib/python',
+ 'platlib': '$base/lib64/python',
'headers': '$base/include/python/$dist_name',
'scripts': '$base/bin',
'data' : '$base',
--- Python-3.4.0b1/Lib/distutils/sysconfig.py.lib64 2013-11-24 21:36:54.000000000 +0100
+++ Python-3.4.0b1/Lib/distutils/sysconfig.py 2013-11-27 11:10:43.821150774 +0100
@@ -141,8 +141,12 @@
prefix = plat_specific and EXEC_PREFIX or PREFIX
if os.name == "posix":
+ if plat_specific or standard_lib:
+ lib = "lib64"
+ else:
+ lib = "lib"
libpython = os.path.join(prefix,
- "lib", "python" + get_python_version())
+ lib, "python" + get_python_version())
if standard_lib:
return libpython
else:
--- Python-3.4.0b1/Lib/site.py.lib64 2013-11-24 21:36:54.000000000 +0100
+++ Python-3.4.0b1/Lib/site.py 2013-11-27 11:10:43.822150773 +0100
@@ -304,12 +304,16 @@
seen.add(prefix)
if os.sep == '/':
+ sitepackages.append(os.path.join(prefix, "lib64",
+ "python" + sys.version[:3],
+ "site-packages"))
sitepackages.append(os.path.join(prefix, "lib",
"python" + sys.version[:3],
"site-packages"))
sitepackages.append(os.path.join(prefix, "lib", "site-python"))
else:
sitepackages.append(prefix)
+ sitepackages.append(os.path.join(prefix, "lib64", "site-packages"))
sitepackages.append(os.path.join(prefix, "lib", "site-packages"))
if sys.platform == "darwin":
# for framework builds *only* we add the standard Apple
--- Python-3.4.0b1/Lib/sysconfig.py.lib64 2013-11-24 21:36:54.000000000 +0100
+++ Python-3.4.0b1/Lib/sysconfig.py 2013-11-27 11:10:43.822150773 +0100
@@ -20,10 +20,10 @@
_INSTALL_SCHEMES = {
'posix_prefix': {
- 'stdlib': '{installed_base}/lib/python{py_version_short}',
- 'platstdlib': '{platbase}/lib/python{py_version_short}',
+ 'stdlib': '{installed_base}/lib64/python{py_version_short}',
+ 'platstdlib': '{platbase}/lib64/python{py_version_short}',
'purelib': '{base}/lib/python{py_version_short}/site-packages',
- 'platlib': '{platbase}/lib/python{py_version_short}/site-packages',
+ 'platlib': '{platbase}/lib64/python{py_version_short}/site-packages',
'include':
'{installed_base}/include/python{py_version_short}{abiflags}',
'platinclude':
@@ -61,10 +61,10 @@
'data': '{userbase}',
},
'posix_user': {
- 'stdlib': '{userbase}/lib/python{py_version_short}',
- 'platstdlib': '{userbase}/lib/python{py_version_short}',
+ 'stdlib': '{userbase}/lib64/python{py_version_short}',
+ 'platstdlib': '{userbase}/lib64/python{py_version_short}',
'purelib': '{userbase}/lib/python{py_version_short}/site-packages',
- 'platlib': '{userbase}/lib/python{py_version_short}/site-packages',
+ 'platlib': '{userbase}/lib64/python{py_version_short}/site-packages',
'include': '{userbase}/include/python{py_version_short}',
'scripts': '{userbase}/bin',
'data': '{userbase}',
--- Python-3.4.0b1/Lib/test/test_site.py.lib64 2013-11-24 21:36:55.000000000 +0100
+++ Python-3.4.0b1/Lib/test/test_site.py 2013-11-27 11:10:43.822150773 +0100
@@ -244,12 +244,15 @@
self.assertEqual(dirs[2], wanted)
elif os.sep == '/':
# OS X non-framwework builds, Linux, FreeBSD, etc
- self.assertEqual(len(dirs), 2)
- wanted = os.path.join('xoxo', 'lib', 'python' + sys.version[:3],
+ self.assertEqual(len(dirs), 3)
+ wanted = os.path.join('xoxo', 'lib64', 'python' + sys.version[:3],
'site-packages')
self.assertEqual(dirs[0], wanted)
- wanted = os.path.join('xoxo', 'lib', 'site-python')
+ wanted = os.path.join('xoxo', 'lib', 'python' + sys.version[:3],
+ 'site-packages')
self.assertEqual(dirs[1], wanted)
+ wanted = os.path.join('xoxo', 'lib', 'site-python')
+ self.assertEqual(dirs[2], wanted)
else:
# other platforms
self.assertEqual(len(dirs), 2)
--- Python-3.4.0b1/Makefile.pre.in.lib64 2013-11-27 11:10:43.814150786 +0100
+++ Python-3.4.0b1/Makefile.pre.in 2013-11-27 11:10:43.823150771 +0100
@@ -115,7 +115,7 @@
MANDIR= @mandir@
INCLUDEDIR= @includedir@
CONFINCLUDEDIR= $(exec_prefix)/include
-SCRIPTDIR= $(prefix)/lib
+SCRIPTDIR= $(prefix)/lib64
ABIFLAGS= @ABIFLAGS@
# Detailed destination directories
--- Python-3.4.0b1/Modules/getpath.c.lib64 2013-11-24 21:36:56.000000000 +0100
+++ Python-3.4.0b1/Modules/getpath.c 2013-11-27 11:17:33.619449704 +0100
@@ -122,8 +122,8 @@
#endif
#ifndef PYTHONPATH
-#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \
- EXEC_PREFIX "/lib/python" VERSION "/lib-dynload"
+#define PYTHONPATH PREFIX "/lib64/python" VERSION ":" \
+ EXEC_PREFIX "/lib64/python" VERSION "/lib-dynload"
#endif
#ifndef LANDMARK
@@ -498,7 +498,7 @@
_pythonpath = _Py_char2wchar(PYTHONPATH, NULL);
_prefix = _Py_char2wchar(PREFIX, NULL);
_exec_prefix = _Py_char2wchar(EXEC_PREFIX, NULL);
- lib_python = _Py_char2wchar("lib/python" VERSION, NULL);
+ lib_python = _Py_char2wchar("lib64/python" VERSION, NULL);
if (!_pythonpath || !_prefix || !_exec_prefix || !lib_python) {
Py_FatalError(
@@ -687,7 +687,7 @@
}
else
wcsncpy(zip_path, _prefix, MAXPATHLEN);
- joinpath(zip_path, L"lib/python00.zip");
+ joinpath(zip_path, L"lib64/python00.zip");
bufsz = wcslen(zip_path); /* Replace "00" with version */
zip_path[bufsz - 6] = VERSION[0];
zip_path[bufsz - 5] = VERSION[2];
@@ -699,7 +699,7 @@
fprintf(stderr,
"Could not find platform dependent libraries <exec_prefix>\n");
wcsncpy(exec_prefix, _exec_prefix, MAXPATHLEN);
- joinpath(exec_prefix, L"lib/lib-dynload");
+ joinpath(exec_prefix, L"lib64/lib-dynload");
}
/* If we found EXEC_PREFIX do *not* reduce it! (Yet.) */
--- Python-3.4.0b1/setup.py.lib64 2013-11-24 21:36:56.000000000 +0100
+++ Python-3.4.0b1/setup.py 2013-11-27 11:10:43.824150769 +0100
@@ -441,7 +441,7 @@
# directories (i.e. '.' and 'Include') must be first. See issue
# 10520.
if not cross_compiling:
- add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
+ add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib64')
add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
# only change this for cross builds for 3.3, issues on Mageia
if cross_compiling:
@@ -718,11 +718,11 @@
elif curses_library:
readline_libs.append(curses_library)
elif self.compiler.find_library_file(lib_dirs +
- ['/usr/lib/termcap'],
+ ['/usr/lib64/termcap'],
'termcap'):
readline_libs.append('termcap')
exts.append( Extension('readline', ['readline.c'],
- library_dirs=['/usr/lib/termcap'],
+ library_dirs=['/usr/lib64/termcap'],
extra_link_args=readline_extra_link_args,
libraries=readline_libs) )
else:
@@ -759,8 +759,8 @@
if krb5_h:
ssl_incs += krb5_h
ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
- ['/usr/local/ssl/lib',
- '/usr/contrib/ssl/lib/'
+ ['/usr/local/ssl/lib64',
+ '/usr/contrib/ssl/lib64/'
] )
if (ssl_incs is not None and

View file

@ -0,0 +1,59 @@
diff -up cpython-59223da36dec/Makefile.pre.in.no-static-lib cpython-59223da36dec/Makefile.pre.in
--- cpython-59223da36dec/Makefile.pre.in.no-static-lib 2012-08-07 16:43:43.296466422 -0400
+++ cpython-59223da36dec/Makefile.pre.in 2012-08-07 16:44:13.299464371 -0400
@@ -464,7 +464,7 @@ coverage:
$(RUNSHARED) $(PYTHON_FOR_BUILD) ./Tools/clinic/clinic.py --make
# Build the interpreter
-$(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY)
+$(BUILDPYTHON): Modules/python.o $(LDLIBRARY) $(PY3LIBRARY)
$(LINKCC) $(PY_LDFLAGS) $(LINKFORSHARED) -o $@ Modules/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
platform: $(BUILDPYTHON) pybuilddir.txt
@@ -480,18 +480,6 @@ sharedmods: $(BUILDPYTHON) $(SYSCONFIGDA
_TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' \
$(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build
-# Build static library
-# avoid long command lines, same as LIBRARY_OBJS
-$(LIBRARY): $(LIBRARY_OBJS)
- -rm -f $@
- $(AR) $(ARFLAGS) $@ Modules/getbuildinfo.o
- $(AR) $(ARFLAGS) $@ $(PARSER_OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJECT_OBJS)
- $(AR) $(ARFLAGS) $@ $(PYTHON_OBJS) Python/frozen.o
- $(AR) $(ARFLAGS) $@ $(MODULE_OBJS) $(SIGNAL_OBJS)
- $(AR) $(ARFLAGS) $@ $(MODOBJS)
- $(RANLIB) $@
-
libpython$(LDVERSION).so: $(LIBRARY_OBJS)
if test $(INSTSONAME) != $(LDLIBRARY); then \
$(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \
@@ -581,7 +569,7 @@ Modules/Setup: $(srcdir)/Modules/Setup.d
echo "-----------------------------------------------"; \
fi
-Modules/_testembed: Modules/_testembed.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY)
+Modules/_testembed: Modules/_testembed.o $(LDLIBRARY) $(PY3LIBRARY)
$(LINKCC) $(PY_LDFLAGS) $(LINKFORSHARED) -o $@ Modules/_testembed.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
############################################################################
@@ -1155,18 +1143,6 @@ libainstall: all python-config
else true; \
fi; \
done
- @if test -d $(LIBRARY); then :; else \
- if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
- if test "$(SHLIB_SUFFIX)" = .dll; then \
- $(INSTALL_DATA) $(LDLIBRARY) $(DESTDIR)$(LIBPL) ; \
- else \
- $(INSTALL_DATA) $(LIBRARY) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \
- $(RANLIB) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \
- fi; \
- else \
- echo Skip install of $(LIBRARY) - use make frameworkinstall; \
- fi; \
- fi
$(INSTALL_DATA) Modules/config.c $(DESTDIR)$(LIBPL)/config.c
$(INSTALL_DATA) Modules/python.o $(DESTDIR)$(LIBPL)/python.o
$(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(DESTDIR)$(LIBPL)/config.c.in

View file

@ -1,5 +1,5 @@
%define docver 3.5.1
%define dirver 3.5
%define docver 3.4.2
%define dirver 3.4
%define familyver 3
%define lib_major %{dirver}
@ -20,7 +20,7 @@
#
# Unfortunately, rpmbuild's infrastructure requires us to jump through some
# hoops to avoid byte-compiling with the system python 2 version:
# /usr/lib/rpm/mandriva/macros sets up build policy that (amongst other things)
# /usr/lib/rpm/mageia/macros sets up build policy that (amongst other things)
# defines __os_install_post. In particular, "brp-python-bytecompile" is
# invoked without an argument thus using the wrong version of python
# (/usr/bin/python, rather than the freshly built python), thus leading to
@ -33,8 +33,8 @@
Summary: An interpreted, interactive object-oriented programming language
Name: python3
Version: 3.5.1
Release: 2
Version: 3.4.3
Release: 4
License: Modified CNRI Open Source License
Group: Development/Python
@ -44,13 +44,13 @@ Source2: python3.macros
Source3: pybytecompile.macros
Source100: %{name}.rpmlintrc
Patch0: python3-3.5.0-module-linkage.patch
Patch1: python3-3.5.0-fdr-lib64.patch
Patch2: python3-3.5.0-fdr-lib64-fix-for-test_install.patch
Patch3: python3-3.5.0-no-static-lib.patch
Patch0: python-3.3.0-module-linkage.patch
Patch1: python3-3.4.0-fdr-lib64.patch
Patch2: python3-3.4.0-fdr-lib64-fix-for-test_install.patch
Patch3: python3-3.4.0-no-static-lib.patch
Patch4: python3-3.4.0-more-configuration-flags.patch
Patch5: python3-3.4.0-disable-tests-in-test_io.patch
Patch6: python3-3.5.0-add-rpmbuild-hooks-to-unittest.patch
Patch6: python3-3.4.0-add-rpmbuild-hooks-to-unittest.patch
Patch7: python3-3.4.3-skip-distutils-tests-that-fail-in-rpmbuild.patch
Patch8: python3-3.4.0-hashlib-fips.patch
Patch9: python3-3.4.3-fix-test_gdb-noise.patch
@ -66,8 +66,6 @@ Patch16: python3-3.4.0-add-rewheel-module.patch
Patch18: python3-3.4.0-disable-tests-in-test_urllib2_localnet.patch
Patch19: Python-nis-requires-tirpc.patch
Patch20: Python-select-requires-libm.patch
Patch21: python3-3.4.2-distutils-init.patch
Patch22: python3-3.5.0-make-libpl-respect-lib64.patch
URL: http://www.python.org/
Conflicts: tkinter3 < %{version}
@ -121,6 +119,249 @@ Tix widget set for Tk and RPM.
Note that documentation for Python is provided in the python-docs
package.
%package -n %{lib_name}
Summary: Shared libraries for Python %{version}
Group: System/Libraries
%description -n %{lib_name}
This packages contains Python shared object library. Python is an
interpreted, interactive, object-oriented programming language often
compared to Tcl, Perl, Scheme or Java.
%package -n %{develname}
Summary: The libraries and header files needed for Python development
Group: Development/Python
Requires: %{name} = %{version}
Requires: %{lib_name} = %{version}
Provides: %{name}-devel = %{version}-%{release}
Provides: %{lib_name_orig}-devel = %{version}-%{release}
Obsoletes: %{_lib}python3.1-devel < %{version}
Obsoletes: %{_lib}python3.2-devel < %{version}-%{release}
%description -n %{develname}
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 %{develname} if you want to develop Python extensions. The
python package will also need to be installed. You'll probably also
want to install the python-docs package, which contains Python
documentation.
%package docs
Summary: Documentation for the Python programming language
Requires: %{name} = %{version}
Requires: xdg-utils
Group: Development/Python
BuildArch: noarch
%description docs
The python-docs package contains documentation on the Python
programming language and interpreter. The documentation is provided
in ASCII text files and in LaTeX source files.
Install the python-docs package if you'd like to use the documentation
for the Python language.
%package -n tkinter3
Summary: A graphical user interface for the Python scripting language
Group: Development/Python
Requires: %{name} = %{version}
Requires: tcl tk
Provides: python3-tkinter
%description -n tkinter3
The Tkinter (Tk interface) program is an graphical user interface for
the Python scripting language.
You should install the tkinter package if you'd like to use a graphical
user interface for Python programming.
%package -n tkinter3-apps
Summary: Various applications written using tkinter
Group: Development/Python
Requires: tkinter3
%description -n tkinter3-apps
Various applications written using tkinter
%prep
%setup -qn Python-%{version}
%patch0 -p0 -b .link
%if "%{_lib}" == "lib64"
%patch1 -p1 -b .lib64
%patch2 -p1
%endif
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
%if %{with rewheel}
%patch16 -p1
%endif
%patch18 -p0
%patch19 -p1 -b .tirpc~
%patch20 -p1 -b .lm~
# drop Autoconf version requirement
sed -i 's/^AC_PREREQ/dnl AC_PREREQ/' configure.ac
# docs
mkdir html
bzcat %{SOURCE1} | tar x -C html
find . -type f -print0 | xargs -0 perl -p -i -e 's@/usr/local/bin/python@/usr/bin/python3@'
cat > README.urpmi << EOF
Python interpreter support readline completion by default.
This is only used with the interpreter. In order to remove it,
you can :
1) unset PYTHONSTARTUP when you login
2) create a empty file \$HOME/.pythonrc.py
3) change %{_sysconfdir}/pythonrc.py
EOF
%build
rm -f Modules/Setup.local
export OPT="%{optflags} -g"
# to fix curses module build
# https://bugs.mageia.org/show_bug.cgi?id=6702
export CFLAGS="%{optflags} -I/usr/include/ncursesw"
export CPPFLAGS="%{optflags} -I/usr/include/ncursesw"
autoreconf -vfi
# Remove -Wl,--no-undefined in accordance with MGA #9395 :
# https://bugs.mageia.org/show_bug.cgi?id=9395
%define _disable_ld_no_undefined 1
%configure2_5x --with-threads \
--enable-ipv6 \
--with-dbmliborder=gdbm \
--with-system-expat \
--with-system-ffi \
--enable-shared \
--without-ensurepip \
%if %{with valgrind}
--with-valgrind
%endif
# fix build
#perl -pi -e 's/^(LDFLAGS=.*)/$1 -lstdc++/' Makefile
# (misc) if the home is nfs mounted, rmdir fails due to delay
export TMP="/tmp" TMPDIR="/tmp"
#%make LN="ln -sf"
make EXTRA_CFLAGS="$CFLAGS" LN="ln -sf"
%install
mkdir -p %{buildroot}%{_prefix}/lib/python%{dirver}
# fix Makefile to get rid of reference to distcc
perl -pi -e "/^CC=/ and s/distcc/gcc/" Makefile
# set the install path
echo '[install_scripts]' >setup.cfg
echo 'install_dir='"${RPM_BUILD_ROOT}/usr/bin" >>setup.cfg
# python is not GNU and does not know fsstd
mkdir -p %{buildroot}%{_mandir}
%makeinstall_std LN="ln -sf"
# overwrite the copied binary with a link
pushd %{buildroot}%{_bindir}
ln -sf python%{dirver}m python%{dirver}
ln -sf python%{dirver} python%{familyver}
popd
(cd %{buildroot}%{_libdir}; ln -sf `ls libpython%{lib_major}*.so.*` libpython%{lib_major}.so)
# fix files conflicting with python2.6
mv %{buildroot}/%{_bindir}/2to3 %{buildroot}/%{_bindir}/python3-2to3
# install pynche as pynche3
cat << EOF > %{buildroot}%{_bindir}/pynche3
#!/bin/bash
exec %{_libdir}/python%{dirver}/site-packages/pynche/pynche
EOF
rm -f Tools/pynche/*.pyw
cp -r Tools/pynche %{buildroot}%{_libdir}/python%{dirver}/site-packages/
chmod 755 %{buildroot}%{_bindir}/{idle3,pynche3}
ln -f Tools/pynche/README Tools/pynche/README.pynche
%if %{with valgrind}
install Misc/valgrind-python.supp -D %{buildroot}%{_libdir}/valgrind/valgrind-python3.supp
%endif
mkdir -p %{buildroot}%{_datadir}/applications
cat > %{buildroot}%{_datadir}/applications/rosa-tkinter3.desktop << EOF
[Desktop Entry]
Name=IDLE
Name[ru]=IDLE
Comment=IDE for Python3
Comment[ru]=IDE для Python3
Exec=%{_bindir}/idle3
Icon=development_environment_section
Terminal=false
Type=Application
Categories=Development;IDE;
EOF
cat > %{buildroot}%{_datadir}/applications/rosa-%{name}-docs.desktop << EOF
[Desktop Entry]
Name=Python documentation
Name[ru]=Документация Python
Comment=Python complete reference
Comment[ru]=Полное руководство по языку Python
Exec=%{_bindir}/xdg-open %{_defaultdocdir}/%{name}-docs/index.html
Icon=documentation_section
Terminal=false
Type=Application
Categories=Documentation;
EOF
# fix non real scripts
#chmod 644 %{buildroot}%{_libdir}/python*/test/test_{binascii,grp,htmlparser}.py*
find %{buildroot} -type f \( -name "test_binascii.py*" -o -name "test_grp.py*" -o -name "test_htmlparser.py*" \) -exec chmod 644 {} \;
# fix python library not stripped
chmod u+w %{buildroot}%{_libdir}/libpython%{lib_major}*.so.1.0 %{buildroot}%{_libdir}/libpython3.so
%multiarch_includes %{buildroot}/usr/include/python*/pyconfig.h
mkdir -p %{buildroot}%{_sysconfdir}/rpm/macros.d
install -m644 %{SOURCE2} %{buildroot}%{_sysconfdir}/rpm/macros.d/
install -m 644 %{SOURCE3} %{buildroot}/%{_sysconfdir}/rpm/macros.d/
%check
# (misc) if the home is nfs mounted, rmdir fails
export TMP="/tmp" TMPDIR="/tmp"
# all tests must pass
# but we disable network on BS
#WITHIN_PYTHON_RPM_BUILD= make test TESTOPTS="-u none -x $EXCLUDE"
# consider use network on local build
#WITHIN_PYTHON_RPM_BUILD= make test TESTOPTS="-u network -x $EXCLUDE"
%files
%doc README.urpmi
%{_sysconfdir}/rpm/macros.d/*.macros
@ -175,45 +416,10 @@ package.
%{_libdir}/valgrind/valgrind-python3.supp
%endif
#----------------------------------------------------------------------------
%package -n %{lib_name}
Summary: Shared libraries for Python %{version}
Group: System/Libraries
%description -n %{lib_name}
This packages contains Python shared object library. Python is an
interpreted, interactive, object-oriented programming language often
compared to Tcl, Perl, Scheme or Java.
%files -n %{lib_name}
%files -n %{lib_name}
%{_libdir}/libpython*.so.1*
#----------------------------------------------------------------------------
%package -n %{develname}
Summary: The libraries and header files needed for Python development
Group: Development/Python
Requires: %{name} = %{version}
Requires: %{lib_name} = %{version}
Provides: %{name}-devel = %{version}-%{release}
Provides: %{lib_name_orig}-devel = %{version}-%{release}
Obsoletes: %{_lib}python3.1-devel < %{version}
Obsoletes: %{_lib}python3.2-devel < %{version}-%{release}
%description -n %{develname}
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 %{develname} if you want to develop Python extensions. The
python package will also need to be installed. You'll probably also
want to install the python-docs package, which contains Python
documentation.
%files -n %{develname}
%files -n %{develname}
%{_libdir}/libpython*.so
%{_includedir}/python*
%{_libdir}/python*/config-%{dirver}*
@ -224,267 +430,89 @@ documentation.
%exclude %{_includedir}/python*/pyconfig.h
%exclude %{_libdir}/python*/config*/Makefile
#----------------------------------------------------------------------------
%package docs
Summary: Documentation for the Python programming language
Requires: %{name} = %{version}
Requires: xdg-utils
Group: Development/Python
BuildArch: noarch
%description docs
The python-docs package contains documentation on the Python
programming language and interpreter. The documentation is provided
in ASCII text files and in LaTeX source files.
Install the python-docs package if you'd like to use the documentation
for the Python language.
%files docs
%files docs
%doc html/*/*
%{_datadir}/applications/rosa-%{name}-docs.desktop
#----------------------------------------------------------------------------
%package -n tkinter3
Summary: A graphical user interface for the Python scripting language
Group: Development/Python
Requires: %{name} = %{version}
Requires: tcl tk
Provides: python3-tkinter
Obsoletes: tkinter3-apps < %{EVRD}
%description -n tkinter3
The Tkinter (Tk interface) program is an graphical user interface for
the Python scripting language.
You should install the tkinter package if you'd like to use a graphical
user interface for Python programming.
%files -n tkinter3
%files -n tkinter3
%{_libdir}/python*/tkinter/
%{_libdir}/python*/idlelib
%{_libdir}/python*/site-packages/pynche
%{_libdir}/python*/lib-dynload/_tkinter.*.so
#----------------------------------------------------------------------------
%package -n idle3
Summary: Python3 IDE
Group: Development/Python
Requires: tkinter3
Conflicts: tkinter3-apps < %{EVRD}
%description -n idle3
Python3 IDE.
%files -n idle3
%files -n tkinter3-apps
%{_bindir}/idle3*
%{_datadir}/applications/idle3.desktop
%{_libdir}/python*/idlelib
#----------------------------------------------------------------------------
%package -n pynche3
Summary: Color and Hue editor
Group: Development/Python
Requires: tkinter3
Conflicts: tkinter3-apps < %{EVRD}
%description -n pynche3
Color and Hue editor.
%files -n pynche3
%{_bindir}/pynche3
%{_datadir}/applications/pynche3.desktop
%{_libdir}/python*/site-packages/pynche
%{_datadir}/applications/rosa-tkinter3.desktop
#----------------------------------------------------------------------------
%changelog
%prep
%setup -qn Python-%{version}
%patch0 -p0 -b .link
* Tue Aug 25 2015 Denis Silakov <denis.silakov@rosalab.ru> 3.4.3-3
- (95db9cb) Added rewheel module (https://github.com/fedora-python/rewheel/issues/2)
%if "%{_lib}" == "lib64"
%patch1 -p1 -b .lib64
%patch2 -p1
%endif
* Wed Apr 08 2015 Tigro <ashejn@yandex-team.ru> 3.4.3-2
- (fb9cc91) rebuilt with ncurses depend
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
* Wed Apr 08 2015 Tigro <ashejn@yandex-team.ru> 3.4.3-1
- (9fcfd82) drop termcap-devel depend
- (Denis Silakov: e2bc6ce) Updated to 3.4.3
%if %{with rewheel}
%patch16 -p1
%endif
* Sun Feb 22 2015 Alexander Lakhin <a.lahin@ntcit-rosa.ru> 3.4.2-2
- (693af99) MassBuild#656: Increase release tag
%patch18 -p0
%patch19 -p1 -b .tirpc~
%patch20 -p1 -b .lm~
%patch21 -p1
%patch22 -p1
* Thu Oct 09 2014 Denis Silakov <denis.silakov@rosalab.ru> 3.4.2-1
- (57ee39c) Clean .abf.yml
- (Denis Silakov: bb940a1) Updated to 3.4.2
# drop Autoconf version requirement
sed -i 's/^AC_PREREQ/dnl AC_PREREQ/' configure.ac
* Fri Jun 27 2014 Alex Burmashev <alex.burmashev@rosalab.ru> 3.4.1-6
- (1bfdf5e) MassBuild#440: Increase release tag
# docs
mkdir html
bzcat %{SOURCE1} | tar x -C html
* Thu Jun 26 2014 Denis Silakov <denis.silakov@rosalab.ru> 3.4.1-5
- (a4149c4) Drop files conflicting with python
find . -type f -print0 | xargs -0 perl -p -i -e 's@/usr/local/bin/python@/usr/bin/python3@'
* Thu Jun 26 2014 Denis Silakov <denis.silakov@rosalab.ru> 3.4.1-4
- (5002108) Fix files
- (Denis Silakov: 00abc50) Minor cleanup
- (Denis Silakov: 3dd3726) Drop py3ver
- (Denis Silakov: afa1305) Turn back autocompletion, prepare for the 'wheel' module support
cat > README.urpmi << EOF
Python interpreter support readline completion by default.
This is only used with the interpreter. In order to remove it,
you can :
1) unset PYTHONSTARTUP when you login
2) create a empty file \$HOME/.pythonrc.py
3) change %{_sysconfdir}/pythonrc.py
EOF
* Wed Jun 25 2014 Denis Silakov <denis.silakov@rosalab.ru> 3.4.1-3
- (e11ee70) Bootstrap build
* Tue Jun 24 2014 Denis Silakov <denis.silakov@rosalab.ru> 3.4.1-2
- (f5332f3) Added Russian l10n for desktop files
* Sun Jun 22 2014 Denis Silakov <denis.silakov@rosalab.ru> 3.4.1-1
- (9f2027e) Updated to 3.4.1
* Tue May 06 2014 Denis Silakov <denis.silakov@rosalab.ru> 3.3.4-1
- (653c588) Try non-parallel make
- (Denis Silakov: 2992bf0) Clean .abf.yml
- (Denis Silakov: 9f2d2a7) Updated to 3.3.4
* Thu Jan 16 2014 Denis Silakov <denis.silakov@rosalab.ru> 3.3.3-1
- (e192f53) Fix file lists
- (Denis Silakov: 24bcc4a) Updated to 3.3.3, added bdist_rpm5
* Wed Oct 09 2013 Ilya Khokhryakov <ilyahohryakov@gmail.com> 3.3.2-1
- (13cebd0) Updated to 3.3.2
* Mon Apr 08 2013 Denis Silakov <denis.silakov@rosalab.ru> 3.3.1-1
- (5f41e05) Fix .abf.yml
- (Denis Silakov: 5468ec3) LOG Updated to 3.3.1
* Thu Mar 28 2013 Anton Kirilenko <anton.kirilenko@rosalab.ru> 3.3.0-2
- (7c760db) Fix for multiarch dir discovering
- (Anton Kirilenko: 7576343) Patch for distutils. It can now find pyconfig.h correctly
* Tue Mar 05 2013 akdengi <kazancas@gmail.com> 3.3.0-1
- (159a93e) LOG -new version 3.3.0
- (root: 0d694db) update to 3.3
* Fri Oct 05 2012 Andrey Bondrov <andrey.bondrov@rosalab.ru> 3.2.3-6
- (a554f24) LOG New version 3.2.3 (sync with Mageia), do some cleanups
* Wed Feb 01 2012 Rosa <rosa@rosa-build.rosalab.ru> 3.2.1-2
- (4cd24e3) Automatic import for version 3.2.1
%build
rm -f Modules/Setup.local
export OPT="%{optflags} -g"
# to fix curses module build
export CFLAGS="%{optflags} -I/usr/include/ncursesw"
export CPPFLAGS="%{optflags} -I/usr/include/ncursesw"
autoreconf -vfi
# Remove -Wl,--no-undefined
%define _disable_ld_no_undefined 1
%configure2_5x --with-threads \
--enable-ipv6 \
--with-dbmliborder=gdbm \
--with-system-expat \
--with-system-ffi \
--enable-shared \
--without-ensurepip \
%if %{with valgrind}
--with-valgrind
%endif
# fix build
#perl -pi -e 's/^(LDFLAGS=.*)/$1 -lstdc++/' Makefile
# (misc) if the home is nfs mounted, rmdir fails due to delay
export TMP="/tmp" TMPDIR="/tmp"
#%make LN="ln -sf"
make EXTRA_CFLAGS="$CFLAGS" LN="ln -sf"
%install
mkdir -p %{buildroot}%{_prefix}/lib/python%{dirver}
# fix Makefile to get rid of reference to distcc
perl -pi -e "/^CC=/ and s/distcc/gcc/" Makefile
# set the install path
echo '[install_scripts]' >setup.cfg
echo 'install_dir='"${RPM_BUILD_ROOT}/usr/bin" >>setup.cfg
# python is not GNU and does not know fsstd
mkdir -p %{buildroot}%{_mandir}
%makeinstall_std LN="ln -sf"
# overwrite the copied binary with a link
pushd %{buildroot}%{_bindir}
ln -sf python%{dirver}m python%{dirver}
ln -sf python%{dirver} python%{familyver}
popd
(cd %{buildroot}%{_libdir}; ln -sf `ls libpython%{lib_major}*.so.*` libpython%{lib_major}.so)
# fix files conflicting with python2.6
mv %{buildroot}/%{_bindir}/2to3 %{buildroot}/%{_bindir}/python3-2to3
# install pynche as pynche3
cat << EOF > %{buildroot}%{_bindir}/pynche3
#!/bin/bash
exec %{_libdir}/python%{dirver}/site-packages/pynche/pynche
EOF
rm -f Tools/pynche/*.pyw
cp -r Tools/pynche %{buildroot}%{_libdir}/python%{dirver}/site-packages/
chmod 755 %{buildroot}%{_bindir}/{idle3,pynche3}
ln -f Tools/pynche/README Tools/pynche/README.pynche
%if %{with valgrind}
install Misc/valgrind-python.supp -D %{buildroot}%{_libdir}/valgrind/valgrind-python3.supp
%endif
mkdir -p %{buildroot}%{_datadir}/applications
cat > %{buildroot}%{_datadir}/applications/idle3.desktop << EOF
[Desktop Entry]
Name=IDLE
Name[ru]=IDLE
Comment=IDE for Python3
Comment[ru]=IDE для Python3
Exec=%{_bindir}/idle3
Icon=development_environment_section
Terminal=false
Type=Application
Categories=Development;IDE;
EOF
cat > %{buildroot}%{_datadir}/applications/pynche3.desktop << EOF
[Desktop Entry]
Name=Pynche
Name[ru]=Pynche
Comment=Color and Hue editor
Comment[ru]=Редактор цветов
Exec=%{_bindir}/pynche3
Icon=development_environment_section
Terminal=false
Type=Application
Categories=Development;
EOF
cat > %{buildroot}%{_datadir}/applications/rosa-%{name}-docs.desktop << EOF
[Desktop Entry]
Name=Python documentation
Name[ru]=Документация Python
Comment=Python complete reference
Comment[ru]=Полное руководство по языку Python
Exec=%{_bindir}/xdg-open %{_defaultdocdir}/%{name}-docs/index.html
Icon=documentation_section
Terminal=false
Type=Application
Categories=Documentation;
EOF
# fix non real scripts
#chmod 644 %{buildroot}%{_libdir}/python*/test/test_{binascii,grp,htmlparser}.py*
find %{buildroot} -type f \( -name "test_binascii.py*" -o -name "test_grp.py*" -o -name "test_htmlparser.py*" \) -exec chmod 644 {} \;
# fix python library not stripped
chmod u+w %{buildroot}%{_libdir}/libpython%{lib_major}*.so.1.0 %{buildroot}%{_libdir}/libpython3.so
%multiarch_includes %{buildroot}/usr/include/python*/pyconfig.h
mkdir -p %{buildroot}%{_sysconfdir}/rpm/macros.d
install -m644 %{SOURCE2} %{buildroot}%{_sysconfdir}/rpm/macros.d/
install -m 644 %{SOURCE3} %{buildroot}/%{_sysconfdir}/rpm/macros.d/
%check
# (misc) if the home is nfs mounted, rmdir fails
export TMP="/tmp" TMPDIR="/tmp"
# all tests must pass
# but we disable network on BS
#WITHIN_PYTHON_RPM_BUILD= make test TESTOPTS="-u none -x $EXCLUDE"
# consider use network on local build
#WITHIN_PYTHON_RPM_BUILD= make test TESTOPTS="-u network -x $EXCLUDE"