diff --git a/projects/amdsmi/CMakeLists.txt b/projects/amdsmi/CMakeLists.txt index 84224d6826..a3b504bb38 100644 --- a/projects/amdsmi/CMakeLists.txt +++ b/projects/amdsmi/CMakeLists.txt @@ -307,9 +307,14 @@ set(CPACK_DEBIAN_DEV_PACKAGE_DEPENDS ${CPACK_DEBIAN_PACKAGE_DEPENDS}) ## Process the Debian install/remove scripts to update the CPACK variables configure_file(${CMAKE_CURRENT_SOURCE_DIR}/DEBIAN/postinst.in DEBIAN/postinst @ONLY) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/DEBIAN/prerm.in DEBIAN/prerm @ONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/DEBIAN/amd-smi-lib/prerm.in DEBIAN/prerm @ONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/DEBIAN/amd-smi-lib-tests/prerm.in DEBIAN/prerm @ONLY) set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "DEBIAN/postinst;DEBIAN/prerm") +# Assign control scripts to the AMDSMI Lib & Tests packages +set(CPACK_DEBIAN_DEV_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_BINARY_DIR}/DEBIAN/amd-smi-lib/prerm") +set(CPACK_DEBIAN_TESTS_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_BINARY_DIR}/DEBIAN/amd-smi-lib-tests/prerm") + # RPM package specific variables set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}") @@ -345,9 +350,11 @@ endif() ## Enable Component Mode and set component specific flags set(CPACK_DEB_COMPONENT_INSTALL ON) set(CPACK_DEBIAN_DEV_PACKAGE_NAME "${AMD_SMI_PACKAGE}") +set(CPACK_DEBIAN_TESTS_PACKAGE_NAME "${AMD_SMI_PACKAGE}-tests") set(CPACK_DEBIAN_ASAN_PACKAGE_NAME "${AMD_SMI_PACKAGE}-asan") set(CPACK_RPM_COMPONENT_INSTALL ON) set(CPACK_RPM_DEV_PACKAGE_NAME "${AMD_SMI_PACKAGE}") +set(CPACK_RPM_TESTS_PACKAGE_NAME "${AMD_SMI_PACKAGE}-tests") set(CPACK_RPM_ASAN_PACKAGE_NAME "${AMD_SMI_PACKAGE}-asan") if(ENABLE_ASAN_PACKAGING) # ASAN Package requires only asan component with libraries and license file @@ -362,10 +369,12 @@ endif() ## Process the Rpm install/remove scripts to update the CPACK variables configure_file("${CMAKE_CURRENT_SOURCE_DIR}/RPM/post.in" RPM/post @ONLY) -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/RPM/preun.in" RPM/preun @ONLY) +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/RPM/amd-smi-lib/preun.in" RPM/preun @ONLY) +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/RPM/amd-smi-lib-tests/preun.in" RPM/preun @ONLY) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/RPM/postun.in" RPM/postun @ONLY) set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/RPM/post") -set(CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/RPM/preun") +set(CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/RPM/amd-smi-lib/preun") +set(CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/RPM/amd-smi-lib-tests/preun") set(CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/RPM/postun") #Set the names now using CPACK utility diff --git a/projects/amdsmi/DEBIAN/amd-smi-lib-tests/prerm.in b/projects/amdsmi/DEBIAN/amd-smi-lib-tests/prerm.in new file mode 100755 index 0000000000..790c515531 --- /dev/null +++ b/projects/amdsmi/DEBIAN/amd-smi-lib-tests/prerm.in @@ -0,0 +1,108 @@ +#!/bin/bash + + +# Other prerm actions +rm_ldconfig() { + # left-hand term originates from ENABLE_LDCONFIG = ON/OFF at package build + if [ "@ENABLE_LDCONFIG@" == "ON" ]; then + rm -f /etc/ld.so.conf.d/x86_64-libamd_smi_lib.conf + ldconfig + fi +} + + +rm_leftovers() { + # remove pyc files generated by python + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBEXECDIR@/amdsmi_cli/__pycache__" + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/amdsmi/__pycache__" + + # remove build and egg files + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/amdsmi.egg-info" + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/build" + + # remove leftover doc files + if test -e "@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/../doc/amd_smi*"; then + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/../doc/amd_smi*" + fi +} + +rm_logFolder() { + rm -rf /var/log/amd_smi_lib +} + + +rm_rocm_tests_dir(){ + if [ -d "@CPACK_PACKAGING_INSTALL_PREFIX@/share/amd_smi/tests/" ]; then + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/share/amd_smi/tests/" + echo "Removed ROCm tests directory." + fi +} + + +return_logrotateToOrigConfig() { + local logrotateConfFile=/etc/logrotate.d/amd_smi.conf + if [ -f $logrotateConfFile ]; then + rm -rf "$logrotateConfFile" + fi + if [ -f /etc/cron.hourly/logrotate ]; then + mv /etc/cron.hourly/logrotate /etc/cron.daily/logrotate + fi + if [ -f /lib/systemd/system/logrotate.timer.backup ]; then + cp /lib/systemd/system/logrotate.timer.backup /lib/systemd/system/logrotate.timer + rm -rf /lib/systemd/system/logrotate.timer.backup + systemctl reenable --now logrotate.timer + fi +} + +rm_python_lib() { + # get python version + local python3_minor_version + python3_minor_version=$(python3 -c 'import sys;print(sys.version_info.minor)') + if [ $? -ne 0 ]; then + echo "[WARNING] Could not determine python version. "\ + "AMD-SMI python library will not be uninstalled." + return + fi + + # check if python version is supported + if [ "$python3_minor_version" -lt 6 ]; then + echo "[WARNING] AMD-SMI python library is not supported on python version 3.$python3_minor_version. "\ + "AMD-SMI python library will not be uninstalled." + return + fi + + # Remove old python library + local pip_list_output + 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 --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. "\ + "Check post install to ensure version is correct" + else + echo "Removed AMD-SMI python library (amdsmi)..." + fi +} + + +case "$1" in + ( remove | upgrade) + # remove old gpuv-smi symlink + rm -f @CPACK_PACKAGING_INSTALL_PREFIX@/bin/gpuv-smi &> /dev/null + echo "Removing AMDSMI Lib Tests Packages..." + rm_ldconfig + echo "ldconfig removed" + rm_leftovers + echo "leftovers removed" + ;; + ( purge ) + ;; + ( * ) + exit 0 + ;; +esac diff --git a/projects/amdsmi/DEBIAN/amd-smi-lib/prerm.in b/projects/amdsmi/DEBIAN/amd-smi-lib/prerm.in new file mode 100755 index 0000000000..b47c8dddd2 --- /dev/null +++ b/projects/amdsmi/DEBIAN/amd-smi-lib/prerm.in @@ -0,0 +1,116 @@ +#!/bin/bash +echo "Removing AMDSMI LIB Packages..." + +# Other prerm actions +rm_ldconfig() { + # left-hand term originates from ENABLE_LDCONFIG = ON/OFF at package build + if [ "@ENABLE_LDCONFIG@" == "ON" ]; then + rm -f /etc/ld.so.conf.d/x86_64-libamd_smi_lib.conf + ldconfig + fi +} + + +rm_leftovers() { + # remove pyc files generated by python + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBEXECDIR@/amdsmi_cli/__pycache__" + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/amdsmi/__pycache__" + + # remove build and egg files + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/amdsmi.egg-info" + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/build" + + # remove leftover doc files + if test -e "@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/../doc/amd_smi*"; then + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/../doc/amd_smi*" + fi +} + +rm_logFolder() { + rm -rf /var/log/amd_smi_lib +} + + +rm_rocm_tests_dir(){ + if [ -d "@CPACK_PACKAGING_INSTALL_PREFIX@/share/amd_smi/tests/" ]; then + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/share/amd_smi/tests/" + echo "Removed ROCm tests directory." + fi +} + + +return_logrotateToOrigConfig() { + local logrotateConfFile=/etc/logrotate.d/amd_smi.conf + if [ -f $logrotateConfFile ]; then + rm -rf "$logrotateConfFile" + fi + if [ -f /etc/cron.hourly/logrotate ]; then + mv /etc/cron.hourly/logrotate /etc/cron.daily/logrotate + fi + if [ -f /lib/systemd/system/logrotate.timer.backup ]; then + cp /lib/systemd/system/logrotate.timer.backup /lib/systemd/system/logrotate.timer + rm -rf /lib/systemd/system/logrotate.timer.backup + systemctl reenable --now logrotate.timer + fi +} + +rm_python_lib() { + # get python version + local python3_minor_version + python3_minor_version=$(python3 -c 'import sys;print(sys.version_info.minor)') + if [ $? -ne 0 ]; then + echo "[WARNING] Could not determine python version. "\ + "AMD-SMI python library will not be uninstalled." + return + fi + + # check if python version is supported + if [ "$python3_minor_version" -lt 6 ]; then + echo "[WARNING] AMD-SMI python library is not supported on python version 3.$python3_minor_version. "\ + "AMD-SMI python library will not be uninstalled." + return + fi + + # Remove old python library + local pip_list_output + 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 --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. "\ + "Check post install to ensure version is correct" + else + echo "Removed AMD-SMI python library (amdsmi)..." + fi +} + + +case "$1" in + ( remove | upgrade) + # remove old gpuv-smi symlink + rm -f @CPACK_PACKAGING_INSTALL_PREFIX@/bin/gpuv-smi &> /dev/null + echo "Removing AMDSMI Lib Packages..." + rm_python_lib + echo "python library removed" + rm_ldconfig + echo "ldconfig removed" + rm_leftovers + echo "leftovers removed" + rm_logFolder + echo "log folder removed" + rm_rocm_tests_dir + echo "rocm tests directory removed" + return_logrotateToOrigConfig + echo "logrotate configuration restored" + ;; + ( purge ) + ;; + ( * ) + exit 0 + ;; +esac diff --git a/projects/amdsmi/DEBIAN/prerm.in b/projects/amdsmi/DEBIAN/prerm.in index 3decc72093..e2b7f8d690 100755 --- a/projects/amdsmi/DEBIAN/prerm.in +++ b/projects/amdsmi/DEBIAN/prerm.in @@ -94,6 +94,7 @@ case "$1" in ( remove | upgrade) # remove old gpuv-smi symlink rm -f @CPACK_PACKAGING_INSTALL_PREFIX@/bin/gpuv-smi &> /dev/null + echo "Removing AMDSMI LIB Packages..." rm_python_lib rm_ldconfig rm_leftovers diff --git a/projects/amdsmi/RPM/amd-smi-lib-tests/preun.in b/projects/amdsmi/RPM/amd-smi-lib-tests/preun.in new file mode 100755 index 0000000000..70013da540 --- /dev/null +++ b/projects/amdsmi/RPM/amd-smi-lib-tests/preun.in @@ -0,0 +1,92 @@ +#!/bin/bash + +rm_leftovers() { + # remove pyc files generated by python + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBEXECDIR@/amdsmi_cli/__pycache__" + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/amdsmi/__pycache__" + + # remove build and egg files + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/amdsmi.egg-info" + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/build" + + # remove leftover doc files + if test -e "@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/../doc/amd_smi*"; then + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/../doc/amd_smi*" + fi +} + + +rm_logFolder() { + rm -rf /var/log/amd_smi_lib +} + + +rm_rocm_tests_dir(){ + if [ -d "@CPACK_PACKAGING_INSTALL_PREFIX@/share/amd_smi/tests/" ]; then + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/share/amd_smi/tests/" + echo "Removed ROCm tests directory." + fi +} + + +return_logrotateToOrigConfig() { + local logrotateConfFile=/etc/logrotate.d/amd_smi.conf + if [ -f $logrotateConfFile ]; then + rm -rf "$logrotateConfFile" + fi + if [ -f /etc/cron.hourly/logrotate ]; then + mv /etc/cron.hourly/logrotate /etc/cron.daily/logrotate + fi + if [ -f /lib/systemd/system/logrotate.timer.backup ]; then + cp /lib/systemd/system/logrotate.timer.backup /lib/systemd/system/logrotate.timer + rm -rf /lib/systemd/system/logrotate.timer.backup + systemctl reenable --now logrotate.timer + fi +} + +rm_python_lib() { + # get python version + local python3_minor_version + python3_minor_version=$(python3 -c 'import sys;print(sys.version_info.minor)') + if [ $? -ne 0 ]; then + echo "[WARNING] Could not determine python version. "\ + "AMD-SMI python library will not be uninstalled." + return + fi + + # check if python version is supported + if [ "$python3_minor_version" -lt 6 ]; then + echo "[WARNING] AMD-SMI python library is not supported on python version 3.$python3_minor_version. "\ + "AMD-SMI python library will not be uninstalled." + return + fi + + # Remove old python library + local pip_list_output + 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 --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. "\ + "Check post install to ensure version is correct" + else + echo "Removed AMD-SMI python library (amdsmi)..." + fi +} + + +if [ "$1" -le 1 ]; then + # perform the below actions for rpm remove($1=0) or upgrade($1=1) operations + # remove old gpuv-smi symlink + rm -f @CPACK_PACKAGING_INSTALL_PREFIX@/bin/gpuv-smi &> /dev/null + echo "Removing AMDSMI Lib Tests Packages..." + rm_ldconfig + echo " ldconfig removed" + rm_leftovers + echo " left overs removed" +fi diff --git a/projects/amdsmi/RPM/amd-smi-lib/preun.in b/projects/amdsmi/RPM/amd-smi-lib/preun.in new file mode 100755 index 0000000000..d3f257e0a2 --- /dev/null +++ b/projects/amdsmi/RPM/amd-smi-lib/preun.in @@ -0,0 +1,94 @@ +#!/bin/bash + +rm_leftovers() { + # remove pyc files generated by python + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBEXECDIR@/amdsmi_cli/__pycache__" + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/amdsmi/__pycache__" + + # remove build and egg files + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/amdsmi.egg-info" + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/build" + + # remove leftover doc files + if test -e "@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/../doc/amd_smi*"; then + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@/../doc/amd_smi*" + fi +} + + +rm_logFolder() { + rm -rf /var/log/amd_smi_lib +} + + +rm_rocm_tests_dir(){ + if [ -d "@CPACK_PACKAGING_INSTALL_PREFIX@/share/amd_smi/tests/" ]; then + rm -rf "@CPACK_PACKAGING_INSTALL_PREFIX@/share/amd_smi/tests/" + echo "Removed ROCm tests directory." + fi +} + + +return_logrotateToOrigConfig() { + local logrotateConfFile=/etc/logrotate.d/amd_smi.conf + if [ -f $logrotateConfFile ]; then + rm -rf "$logrotateConfFile" + fi + if [ -f /etc/cron.hourly/logrotate ]; then + mv /etc/cron.hourly/logrotate /etc/cron.daily/logrotate + fi + if [ -f /lib/systemd/system/logrotate.timer.backup ]; then + cp /lib/systemd/system/logrotate.timer.backup /lib/systemd/system/logrotate.timer + rm -rf /lib/systemd/system/logrotate.timer.backup + systemctl reenable --now logrotate.timer + fi +} + +rm_python_lib() { + # get python version + local python3_minor_version + python3_minor_version=$(python3 -c 'import sys;print(sys.version_info.minor)') + if [ $? -ne 0 ]; then + echo "[WARNING] Could not determine python version. "\ + "AMD-SMI python library will not be uninstalled." + return + fi + + # check if python version is supported + if [ "$python3_minor_version" -lt 6 ]; then + echo "[WARNING] AMD-SMI python library is not supported on python version 3.$python3_minor_version. "\ + "AMD-SMI python library will not be uninstalled." + return + fi + + # Remove old python library + local pip_list_output + 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 --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. "\ + "Check post install to ensure version is correct" + else + echo "Removed AMD-SMI python library (amdsmi)..." + fi +} + + +if [ "$1" -le 1 ]; then + # perform the below actions for rpm remove($1=0) or upgrade($1=1) operations + # remove old gpuv-smi symlink + rm -f @CPACK_PACKAGING_INSTALL_PREFIX@/bin/gpuv-smi &> /dev/null + echo "Removing AMDSMI Lib Packages..." + rm_python_lib + rm_ldconfig + rm_leftovers + rm_logFolder + rm_rocm_tests_dir + return_logrotateToOrigConfig +fi