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 Name: python36
Version: %{pybasever}.6 Version: %{pybasever}.6
Release: 13.buildroot%{?dist} Release: 14.buildroot%{?dist}
Summary: Interpreter of the Python programming language Summary: Interpreter of the Python programming language
License: Python License: Python
@ -66,6 +66,11 @@ Obsoletes: python3 < 3.6.6-13
Requires: %{_libexecdir}/platform-python 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 \ %global _description \
Python is an accessible, high-level, dynamically typed, interpreted programming\ Python is an accessible, high-level, dynamically typed, interpreted programming\
language, designed with an emphasis on code readibility.\ language, designed with an emphasis on code readibility.\
@ -90,6 +95,12 @@ Summary: Libraries and header files needed for Python development
Requires: python36 Requires: python36
Requires: platform-python-devel 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 %description devel
This package contains the header files and configuration needed to compile This package contains the header files and configuration needed to compile
Python extension modules (typically written in C or C++), to embed Python Python extension modules (typically written in C or C++), to embed Python
@ -108,6 +119,12 @@ Requires: python36
Requires: python36-devel Requires: python36-devel
Requires: platform-python-debug 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 %description debug
python3-debug provides a version of the Python runtime with numerous debugging python3-debug provides a version of the Python runtime with numerous debugging
features enabled, aimed at advanced Python users such as developers of Python 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 # Symlink the executable to libexec
ln -s %{_libexecdir}/platform-python%{pybasever} %{buildroot}%{_bindir}/python%{pybasever} 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 # Symlink the config executables
ln -s python%{LDVERSION_optimized}-config %{buildroot}%{_bindir}/python%{pybasever}-config 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 # LDVERSION specific section
InstallPython() { InstallPython() {
@ -165,20 +178,85 @@ InstallPython %{LDVERSION_debug}
# General debug symlinks # General debug symlinks
ln -s python%{LDVERSION_debug}-config %{buildroot}%{_bindir}/python%{pybasever}-debug-config ln -s python%{LDVERSION_debug}-config %{buildroot}%{_bindir}/python%{pybasever}-debug-config
ln -s python%{LDVERSION_debug} %{buildroot}%{_bindir}/python%{pybasever}-debug 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 %endif # with debug_build
InstallPython %{LDVERSION_optimized} 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 %files
%license LICENSE %license LICENSE
%doc README.rst %doc README.rst
%{_bindir}/python%{pybasever} %{_bindir}/python%{pybasever}
%{_bindir}/python%{LDVERSION_optimized} %{_bindir}/python%{LDVERSION_optimized}
%{_bindir}/python3 %ghost %{_bindir}/python3
%files devel %files devel
%license LICENSE %license LICENSE
@ -186,7 +264,7 @@ InstallPython %{LDVERSION_optimized}
%{_bindir}/python%{pybasever}-config %{_bindir}/python%{pybasever}-config
%{_bindir}/python%{LDVERSION_optimized}-config %{_bindir}/python%{LDVERSION_optimized}-config
%{_bindir}/python%{LDVERSION_optimized}-*-config %{_bindir}/python%{LDVERSION_optimized}-*-config
%{_bindir}/python3-config %ghost %{_bindir}/python3-config
%files debug %files debug
%license LICENSE %license LICENSE
@ -196,13 +274,17 @@ InstallPython %{LDVERSION_optimized}
%{_bindir}/python%{LDVERSION_debug}-*-config %{_bindir}/python%{LDVERSION_debug}-*-config
%{_bindir}/python%{pybasever}-debug-config %{_bindir}/python%{pybasever}-debug-config
%{_bindir}/python%{pybasever}-debug %{_bindir}/python%{pybasever}-debug
%{_bindir}/python3-debug %ghost %{_bindir}/python3-debug
%{_bindir}/python3-debug-config %ghost %{_bindir}/python3-debug-config
# IMPORTANT # # IMPORTANT #
# See note at the top of the spec file # # See note at the top of the spec file #
%changelog %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 * 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 - Merged `stream-3.6` branch into the `rhel-8.0` branch for the buildroot
- Differences: - Differences: