310 lines
10 KiB
RPMSpec
310 lines
10 KiB
RPMSpec
# ==================
|
|
# IMPORTANT
|
|
# ==================
|
|
|
|
# This package is intended only for the RHEL8 buildroot.
|
|
# The python36 package for the python36 module is on the git branch
|
|
# `stream-3.6`.
|
|
#
|
|
# You can build this package normally as you would any other package.
|
|
# Please keep the "buildroot" part of the "Release" tag so it can be
|
|
# easily distinguished.
|
|
#
|
|
# Relevant JIRA tickets:
|
|
# * https://projects.engineering.redhat.com/browse/RCM-42305
|
|
# * https://projects.engineering.redhat.com/browse/RCM-37705
|
|
# (superceded by the one above)
|
|
|
|
|
|
|
|
# ==================
|
|
# Top-level metadata
|
|
# ==================
|
|
|
|
%global pybasever 3.6
|
|
|
|
Name: python36
|
|
Version: %{pybasever}.6
|
|
Release: 14.buildroot%{?dist}
|
|
Summary: Interpreter of the Python programming language
|
|
|
|
License: Python
|
|
URL: https://www.python.org/
|
|
Source: https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tar.xz
|
|
%global debug_package %{nil}
|
|
|
|
# ==================================
|
|
# Conditionals controlling the build
|
|
# ==================================
|
|
|
|
# Extra build for debugging the interpreter or C-API extensions
|
|
# (the -debug subpackages)
|
|
%bcond_without debug_build
|
|
|
|
|
|
# ==============================================
|
|
# Metadata and macros from the python3 component
|
|
# ==============================================
|
|
|
|
# ABIFLAGS, LDVERSION and SOABI are in the upstream configure.ac
|
|
# See PEP 3149 for some background: http://www.python.org/dev/peps/pep-3149/
|
|
%global ABIFLAGS_optimized m
|
|
%global ABIFLAGS_debug dm
|
|
|
|
%global LDVERSION_optimized %{pybasever}%{ABIFLAGS_optimized}
|
|
%global LDVERSION_debug %{pybasever}%{ABIFLAGS_debug}
|
|
|
|
|
|
# =======================
|
|
# Package and subpackages
|
|
# =======================
|
|
|
|
# python36 package itself
|
|
Provides: python3 = %{version}-%{release}
|
|
Provides: python3%{?_isa} = %{version}-%{release}
|
|
Obsoletes: python3 < 3.6.6-13
|
|
|
|
Requires: %{_libexecdir}/platform-python
|
|
|
|
# Require alternatives version that implements the --keep-foreign flag
|
|
Requires: alternatives >= 1.19.2-1
|
|
Requires(post): alternatives >= 1.19.2-1
|
|
Requires(postun): alternatives >= 1.19.2-1
|
|
|
|
%global _description \
|
|
Python is an accessible, high-level, dynamically typed, interpreted programming\
|
|
language, designed with an emphasis on code readibility.\
|
|
It includes an extensive standard library, and has a vast ecosystem of\
|
|
third-party libraries.\
|
|
\
|
|
The python36 package provides the "python3.6" executable: the reference\
|
|
interpreter for the Python language, version 3.\
|
|
\
|
|
The python36-devel package contains files for dovelopment of Python application\
|
|
and the python36-debug is helpful for debugging.\
|
|
\
|
|
Packages containing additional libraries for Python 3.6 are generally named\
|
|
with the "python3-" prefix. Documentation for Python is provided in the\
|
|
python3-docs package.
|
|
|
|
%description %_description
|
|
|
|
|
|
%package devel
|
|
Summary: Libraries and header files needed for Python development
|
|
Requires: python36
|
|
Requires: platform-python-devel
|
|
|
|
# Require alternatives version that implements the --keep-foreign flag
|
|
Requires(postun): alternatives >= 1.19.2-1
|
|
# python36 installs the alternatives master symlink to which we attach a slave
|
|
Requires(post): python36
|
|
Requires(postun): python36
|
|
|
|
%description devel
|
|
This package contains the header files and configuration needed to compile
|
|
Python extension modules (typically written in C or C++), to embed Python
|
|
into other programs, and to make binary distributions for Python libraries.
|
|
|
|
It also contains the necessary macros to build RPM packages with Python modules.
|
|
|
|
|
|
%if %{with debug_build}
|
|
%package debug
|
|
Summary: Debug version of the Python runtime
|
|
Provides: python3-debug = %{version}-%{release}
|
|
Provides: python3-debug%{?_isa} = %{version}-%{release}
|
|
Obsoletes: python3-debug < 3.6.6-13
|
|
Requires: python36
|
|
Requires: python36-devel
|
|
Requires: platform-python-debug
|
|
|
|
# Require alternatives version that implements the --keep-foreign flag
|
|
Requires(postun): alternatives >= 1.19.2-1
|
|
# python36 installs the alternatives master symlink to which we attach a slave
|
|
Requires(post): python36
|
|
Requires(postun): python36
|
|
|
|
%description debug
|
|
python3-debug provides a version of the Python runtime with numerous debugging
|
|
features enabled, aimed at advanced Python users such as developers of Python
|
|
extension modules.
|
|
|
|
This version uses more memory and will be slower than the regular Python build,
|
|
but is useful for tracking down reference-counting issues and other bugs.
|
|
|
|
The bytecode format is unchanged, so that .pyc files are compatible between
|
|
this and the standard version of Python, but the debugging features mean that
|
|
C/C++ extension modules are ABI-incompatible and must be built for each version
|
|
separately.
|
|
|
|
The debug build shares installation directories with the standard Python
|
|
runtime, so that .py and .pyc files can be shared.
|
|
Compiled extension modules use a special ABI flag ("d") in the filename,
|
|
so extensions for both verisons can co-exist in the same directory.
|
|
%endif # with debug_build
|
|
|
|
|
|
%prep
|
|
%autosetup -n Python-3.6.3
|
|
|
|
|
|
%build
|
|
|
|
|
|
%install
|
|
mkdir -p %{buildroot}%{_bindir}
|
|
|
|
# Symlink the executable to libexec
|
|
ln -s %{_libexecdir}/platform-python%{pybasever} %{buildroot}%{_bindir}/python%{pybasever}
|
|
|
|
# Symlink the config executables
|
|
ln -s python%{LDVERSION_optimized}-config %{buildroot}%{_bindir}/python%{pybasever}-config
|
|
|
|
# LDVERSION specific section
|
|
InstallPython() {
|
|
LDVersion=$1
|
|
|
|
# Symlink python*-config to libexec
|
|
ln -s %{_libexecdir}/platform-python${LDVersion}-config %{buildroot}%{_bindir}/python${LDVersion}-config
|
|
ln -s %{_libexecdir}/platform-python${LDVersion}-`uname -m`-config %{buildroot}%{_bindir}/python${LDVersion}-`uname -m`-config
|
|
|
|
# Symlink optimized and debug executables
|
|
ln -s %{_libexecdir}/platform-python${LDVersion} %{buildroot}%{_bindir}/python${LDVersion}
|
|
}
|
|
|
|
%if %{with debug_build}
|
|
InstallPython %{LDVERSION_debug}
|
|
# General debug symlinks
|
|
ln -s python%{LDVERSION_debug}-config %{buildroot}%{_bindir}/python%{pybasever}-debug-config
|
|
ln -s python%{LDVERSION_debug} %{buildroot}%{_bindir}/python%{pybasever}-debug
|
|
%endif # with debug_build
|
|
|
|
InstallPython %{LDVERSION_optimized}
|
|
|
|
# All ghost files controlled by alternatives need to exist for the files
|
|
# section check to succeed
|
|
# - Don't list /usr/bin/python as a ghost file so `yum install /usr/bin/python`
|
|
# doesn't install this package
|
|
touch %{buildroot}%{_bindir}/python3
|
|
touch %{buildroot}%{_bindir}/python3-config
|
|
touch %{buildroot}%{_bindir}/python3-debug
|
|
touch %{buildroot}%{_bindir}/python3-debug-config
|
|
|
|
%post
|
|
# Alternative for /usr/bin/python3 -> /usr/bin/python3.6
|
|
# Create only if it doesn't exist already
|
|
EXISTS=`alternatives --display python3 | \
|
|
grep -c "^/usr/bin/python3.6 - priority [0-9]*"`
|
|
|
|
if [ $EXISTS -eq 0 ]; then
|
|
alternatives --install %{_bindir}/python3 \
|
|
python3 \
|
|
%{_bindir}/python3.6 \
|
|
1000000
|
|
fi
|
|
|
|
%postun
|
|
# Do this only during uninstall process (not during update)
|
|
if [ $1 -eq 0 ]; then
|
|
alternatives --keep-foreign --remove python3 \
|
|
%{_bindir}/python3.6
|
|
|
|
# Remove link python → python3 if no other python3.* exists
|
|
if ! alternatives --display python3 > /dev/null; then
|
|
alternatives --keep-foreign --remove python \
|
|
%{_bindir}/python3
|
|
fi
|
|
fi
|
|
|
|
|
|
%post -n python36-devel
|
|
alternatives --add-slave python3 %{_bindir}/python3.6 \
|
|
%{_bindir}/python3-config \
|
|
python3-config \
|
|
%{_bindir}/python3.6-config
|
|
|
|
%postun -n python36-devel
|
|
# Do this only during uninstall process (not during update)
|
|
if [ $1 -eq 0 ]; then
|
|
alternatives --keep-foreign --remove-slave python3 %{_bindir}/python3.6 \
|
|
python3-config
|
|
fi
|
|
|
|
|
|
%post -n python36-debug
|
|
alternatives --add-slave python3 %{_bindir}/python3.6 \
|
|
%{_bindir}/python3-debug \
|
|
python3-debug \
|
|
%{_bindir}/python3.6-debug
|
|
alternatives --add-slave python3 %{_bindir}/python3.6 \
|
|
%{_bindir}/python3-debug-config \
|
|
python3-debug-config \
|
|
%{_bindir}/python3.6-debug-config
|
|
|
|
%postun -n python36-debug
|
|
# Do this only during uninstall process (not during update)
|
|
if [ $1 -eq 0 ]; then
|
|
alternatives --keep-foreign --remove-slave python3 %{_bindir}/python3.6 \
|
|
python3-debug
|
|
alternatives --keep-foreign --remove-slave python3 %{_bindir}/python3.6 \
|
|
python3-debug-config
|
|
fi
|
|
|
|
%files
|
|
%license LICENSE
|
|
%doc README.rst
|
|
%{_bindir}/python%{pybasever}
|
|
%{_bindir}/python%{LDVERSION_optimized}
|
|
%ghost %{_bindir}/python3
|
|
|
|
%files devel
|
|
%license LICENSE
|
|
%doc README.rst
|
|
%{_bindir}/python%{pybasever}-config
|
|
%{_bindir}/python%{LDVERSION_optimized}-config
|
|
%{_bindir}/python%{LDVERSION_optimized}-*-config
|
|
%ghost %{_bindir}/python3-config
|
|
|
|
%files debug
|
|
%license LICENSE
|
|
%doc README.rst
|
|
%{_bindir}/python%{LDVERSION_debug}
|
|
%{_bindir}/python%{LDVERSION_debug}-config
|
|
%{_bindir}/python%{LDVERSION_debug}-*-config
|
|
%{_bindir}/python%{pybasever}-debug-config
|
|
%{_bindir}/python%{pybasever}-debug
|
|
%ghost %{_bindir}/python3-debug
|
|
%ghost %{_bindir}/python3-debug-config
|
|
|
|
|
|
# IMPORTANT #
|
|
# See note at the top of the spec file #
|
|
%changelog
|
|
* Mon Jan 29 2024 Lumír Balhar <lbalhar@redhat.com> - 3.6.6-14.buildroot
|
|
- Implemented alternatives the same way as they're in python36 module
|
|
Resolves: RHEL-23019
|
|
|
|
* Sat Sep 29 2018 Tomas Orsava <torsava@redhat.com> - 3.6.6-13.buildroot
|
|
- Merged `stream-3.6` branch into the `rhel-8.0` branch for the buildroot
|
|
- Differences:
|
|
- Don't provide `python3-devel` from the `python36-devel` package because
|
|
`python3-devel` itself is actually available in the buildroot
|
|
- Instead of using the `alternatives`, simply simplink the main executables
|
|
(python3, python3-config,...)
|
|
- Resolves: rhbz#1619153
|
|
|
|
* Tue Aug 07 2018 Tomas Orsava <torsava@redhat.com> - 3.6-5
|
|
- Bump
|
|
|
|
* Tue Jul 31 2018 Tomas Orsava <torsava@redhat.com> - 3.6-4
|
|
- Add python3{,-config,-debug} symlinks specially for the buildroot
|
|
|
|
* Tue Jul 31 2018 Tomas Orsava <torsava@redhat.com> - 3.6-3
|
|
- Bump release after revert of commits
|
|
|
|
* Wed Apr 04 2018 Tomas Orsava <torsava@redhat.com> - 3.6-1
|
|
- This new package python36 will belong to the python36 module that will house
|
|
symlinks from /usr/bin/python* to /usr/libexec/platform-python* et al.
|
|
|