Implemented alternatives the same way as they're in python36 module

RHEL-23019
This commit is contained in:
Lumir Balhar 2024-01-29 20:50:44 +01:00
parent a1f8563d56
commit 4498b8dfe1

View File

@ -25,7 +25,7 @@
Name: python36
Version: %{pybasever}.6
Release: 13.buildroot%{?dist}
Release: 14.buildroot%{?dist}
Summary: Interpreter of the Python programming language
License: Python
@ -66,6 +66,11 @@ 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.\
@ -90,6 +95,12 @@ 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
@ -108,6 +119,12 @@ 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
@ -140,13 +157,9 @@ mkdir -p %{buildroot}%{_bindir}
# Symlink the executable to libexec
ln -s %{_libexecdir}/platform-python%{pybasever} %{buildroot}%{_bindir}/python%{pybasever}
# Additional symlink for buildroot
ln -s %{_bindir}/python%{pybasever} %{buildroot}%{_bindir}/python3
# Symlink the config executables
ln -s python%{LDVERSION_optimized}-config %{buildroot}%{_bindir}/python%{pybasever}-config
# Additional symlink for buildroot
ln -s %{_bindir}/python%{pybasever}-config %{buildroot}%{_bindir}/python3-config
# LDVERSION specific section
InstallPython() {
@ -165,20 +178,85 @@ 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
# Additional symlinks for buildroot
ln -s %{_bindir}/python%{pybasever}-debug-config %{buildroot}%{_bindir}/python3-debug-config
ln -s %{_bindir}/python%{pybasever}-debug %{buildroot}%{_bindir}/python3-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}
%{_bindir}/python3
%ghost %{_bindir}/python3
%files devel
%license LICENSE
@ -186,7 +264,7 @@ InstallPython %{LDVERSION_optimized}
%{_bindir}/python%{pybasever}-config
%{_bindir}/python%{LDVERSION_optimized}-config
%{_bindir}/python%{LDVERSION_optimized}-*-config
%{_bindir}/python3-config
%ghost %{_bindir}/python3-config
%files debug
%license LICENSE
@ -196,13 +274,17 @@ InstallPython %{LDVERSION_optimized}
%{_bindir}/python%{LDVERSION_debug}-*-config
%{_bindir}/python%{pybasever}-debug-config
%{_bindir}/python%{pybasever}-debug
%{_bindir}/python3-debug
%{_bindir}/python3-debug-config
%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: