Pre-install python3 for CentOS

CentOS 7 is the only distro we support currently that doesn't have
Python 3 installed in some form in the base images.  For centos 7 add
an early install of it in the yum element so we can have all the
in-chroot scripts assume Python 3.  There is only one package that
causes issues; yaml which comes from EPEL.  Everywhere else it is a
base package, but we don't have a way to say "enable epel to install
this".  Just hack it in, we don't want to go reworking the world for
CentOS 7 at this point.

Also add python3 and it's yaml library to the centos 8 path.  This
brings in the "user" python3 in /urs/bin/python3 (the "system" python3
is already installed).  Again, this just lets us assume
/usr/bin/python3 in scripts for all platforms.

package-installs is one of these things running python in the chroot,
and unfortunately we have elements that use it at 01- level in
pre-installd.  Thus to make sure python3 is there nice and early, run
it at 0 level, but make sure it comes after yum/dnf update.

Change-Id: I088fc4284e889147ca9a375d4a159264cff53484
This commit is contained in:
Ian Wienand 2020-07-20 14:01:10 +10:00
parent 840f8ed2b2
commit 4dbfab66a1
3 changed files with 25 additions and 0 deletions

View File

@ -0,0 +1,25 @@
#!/bin/bash
if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then
set -x
fi
set -eu
set -o pipefail
# Ensure the python3 interpreter and YAML libraries are installed
# early (even before package-installs, which is written in Python and
# uses YAML).
if [[ ${DISTRO_NAME} =~ (centos|rhel) && ${DIB_RELEASE} == 7 ]]; then
# Our package map and install stuff doesn't have a way to say
# "install this from EPEL". So we hack in an install of it here
# from EPEL. Nothing else should have installed EPEL at this
# early stage.
yum install -y python3 epel-release
yum install -y python36-PyYAML
yum remove -y epel-release
elif [[ ${DISTRO_NAME} =~ (centos|rhel) && ${DIB_RELEASE} > 7 ]]; then
# For 8 and above ensure the "user" python3 package is installed
# so we have /usr/bin/python3 and pyyaml.
dnf install -y python3 python3-pyyaml
fi