From 030a971ce444c2eb23d030c6a8a507e01c3cc8c5 Mon Sep 17 00:00:00 2001 From: Maisam Arif Date: Thu, 14 Dec 2023 23:15:03 -0600 Subject: [PATCH] SWDEV-437729 - Post install script fixes for pip & pyyaml Change-Id: If5c4a7947764a0cb5717c906198436304fa62784 Signed-off-by: Maisam Arif [ROCm/amdsmi commit: 498fde5cf426ba038060f1a5afa3acc2618b61fb] --- projects/amdsmi/DEBIAN/postinst.in | 14 +++++++++++++- projects/amdsmi/DEBIAN/prerm.in | 4 ++-- projects/amdsmi/RPM/post.in | 14 +++++++++++++- projects/amdsmi/RPM/preun.in | 4 ++-- 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/projects/amdsmi/DEBIAN/postinst.in b/projects/amdsmi/DEBIAN/postinst.in index 5aad321de0..d991cf6b2a 100755 --- a/projects/amdsmi/DEBIAN/postinst.in +++ b/projects/amdsmi/DEBIAN/postinst.in @@ -130,7 +130,7 @@ do_install_amdsmi_python_lib() { # Remove old python library local pip_list_output - pip_list_output=$(python3 -m pip list --disable-pip-version-check) + pip_list_output=$(python3 -m pip list --format=columns --disable-pip-version-check) # check pip list output for amdsmi if [[ $pip_list_output == *"amdsmi"* ]]; then echo "Detected old AMD-SMI python library (amdsmi)..." @@ -138,6 +138,18 @@ do_install_amdsmi_python_lib() { echo "Removed old AMD-SMI python library (amdsmi)..." fi + # upgrade pip if it's an ancient version + # otherwise the amdsmi install will fail + local pip_version + pip_version=$(python3 -m pip --version | grep -Eo '^[^\ ]+ ([0-9]+)' | grep -Eo '[0-9]+$') + if [[ "$pip_version" -lt 19 ]]; then + echo "Detected ancient pip version ($pip_version)... Upgrading..." + python3 -m pip install --upgrade pip --quiet --disable-pip-version-check + fi + unset pip_version + + # install PyYAML dependency + python3 -m pip install 'PyYAML>=5.1' --quiet --disable-pip-version-check --ignore-installed # install python library at @CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/amdsmi local python_lib_path=@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@ python3 -m pip install "$python_lib_path" --quiet --disable-pip-version-check diff --git a/projects/amdsmi/DEBIAN/prerm.in b/projects/amdsmi/DEBIAN/prerm.in index d5b7cfb08a..28af94f143 100755 --- a/projects/amdsmi/DEBIAN/prerm.in +++ b/projects/amdsmi/DEBIAN/prerm.in @@ -61,13 +61,13 @@ rm_python_lib() { # Remove old python library local pip_list_output - pip_list_output=$(python3 -m pip list --disable-pip-version-check) + pip_list_output=$(python3 -m pip list --format=columns --disable-pip-version-check) # check pip list output for amdsmi if [[ $pip_list_output == *"amdsmi"* ]]; then PIP_ROOT_USER_ACTION=ignore PIP_BREAK_SYSTEM_PACKAGES=1 python3 -m pip uninstall amdsmi --yes --quiet --disable-pip-version-check fi - pip_list_output=$(python3 -m pip list --disable-pip-version-check) + pip_list_output=$(python3 -m pip list --format=columns --disable-pip-version-check) # check pip list output for amdsmi if [[ $pip_list_output == *"amdsmi"* ]]; then echo "[WARNING] AMD-SMI python library (amdsmi) is still installed in pip. "\ diff --git a/projects/amdsmi/RPM/post.in b/projects/amdsmi/RPM/post.in index cca34aa9ee..a58a5f4e8f 100755 --- a/projects/amdsmi/RPM/post.in +++ b/projects/amdsmi/RPM/post.in @@ -129,7 +129,7 @@ do_install_amdsmi_python_lib() { # Remove old python library local pip_list_output - pip_list_output=$(python3 -m pip list --disable-pip-version-check) + pip_list_output=$(python3 -m pip list --format=columns --disable-pip-version-check) # check pip list output for amdsmi if [[ $pip_list_output == *"amdsmi"* ]]; then echo "Detected old AMD-SMI python library (amdsmi)..." @@ -137,6 +137,18 @@ do_install_amdsmi_python_lib() { echo "Removed old AMD-SMI python library (amdsmi)..." fi + # upgrade pip if it's an ancient version + # otherwise the amdsmi install will fail + local pip_version + pip_version=$(python3 -m pip --version | grep -Eo '^[^\ ]+ ([0-9]+)' | grep -Eo '[0-9]+$') + if [[ "$pip_version" -lt 19 ]]; then + echo "Detected ancient pip version ($pip_version)... Upgrading..." + python3 -m pip install --upgrade pip --quiet --disable-pip-version-check + fi + unset pip_version + + # install PyYAML dependency + python3 -m pip install 'PyYAML>=5.1' --quiet --disable-pip-version-check --ignore-installed # install python library at @CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/amdsmi local python_lib_path=@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@ python3 -m pip install "$python_lib_path" --quiet --disable-pip-version-check diff --git a/projects/amdsmi/RPM/preun.in b/projects/amdsmi/RPM/preun.in index 1e1a896c95..bc2376161c 100755 --- a/projects/amdsmi/RPM/preun.in +++ b/projects/amdsmi/RPM/preun.in @@ -53,13 +53,13 @@ rm_python_lib() { # Remove old python library local pip_list_output - pip_list_output=$(python3 -m pip list --disable-pip-version-check) + pip_list_output=$(python3 -m pip list --format=columns --disable-pip-version-check) # check pip list output for amdsmi if [[ $pip_list_output == *"amdsmi"* ]]; then PIP_ROOT_USER_ACTION=ignore PIP_BREAK_SYSTEM_PACKAGES=1 python3 -m pip uninstall amdsmi --yes --quiet --disable-pip-version-check fi - pip_list_output=$(python3 -m pip list --disable-pip-version-check) + pip_list_output=$(python3 -m pip list --format=columns --disable-pip-version-check) # check pip list output for amdsmi if [[ $pip_list_output == *"amdsmi"* ]]; then echo "[WARNING] AMD-SMI python library (amdsmi) is still installed in pip. "\