From 880cfadde9f9d091e3ff15f0d8d1603dd2933557 Mon Sep 17 00:00:00 2001 From: Robert Baldyga Date: Fri, 19 Mar 2021 15:25:24 +0100 Subject: [PATCH] Makefile: improve uninstall error handling Introduce helper functions to handle uninstall errors gracefully. Signed-off-by: Robert Baldyga --- casadm/Makefile | 6 ++++-- modules/Makefile | 15 +++++++++++---- tools/helpers.mk | 15 +++++++++++++++ utils/Makefile | 38 ++++++++++++++++++++------------------ 4 files changed, 50 insertions(+), 24 deletions(-) create mode 100644 tools/helpers.mk diff --git a/casadm/Makefile b/casadm/Makefile index 3a2e18e..558aab7 100644 --- a/casadm/Makefile +++ b/casadm/Makefile @@ -3,6 +3,8 @@ # SPDX-License-Identifier: BSD-3-Clause-Clear # +include ../tools/helpers.mk + PWD:=$(shell pwd) MODULESDIR:=$(PWD)/../modules METADATA_DIR:=$(PWD)/../.metadata @@ -139,7 +141,7 @@ install_files: uninstall: @echo "Uninstalling casadm" - @rm $(DESTDIR)$(BINARY_PATH)/$(TARGET) - @rm $(DESTDIR)/usr/share/man/man8/$(TARGET).8 + $(call remove-file,$(DESTDIR)$(BINARY_PATH)/$(TARGET)) + $(call remove-file,$(DESTDIR)/usr/share/man/man8/$(TARGET).8) .PHONY: clean distclean all sync build install uninstall diff --git a/modules/Makefile b/modules/Makefile index 1d5859e..039259a 100644 --- a/modules/Makefile +++ b/modules/Makefile @@ -15,6 +15,13 @@ obj-y += cas_disk/ # line; invoke the kernel build system. else +include ../tools/helpers.mk + +define remove-module + @if (lsmod | grep -q ${1}); then rmmod ${1}; \ + else echo "WARNING: Module ${1} is not loaded"; fi +endef + OCFDIR=$(PWD)/../ocf PWD=$(shell pwd) KERNEL_VERSION ?= "$(shell uname -r)" @@ -57,11 +64,11 @@ install_files: uninstall: @echo "Uninstalling Open-CAS modules" - @$(RMMOD) $(CACHE_MODULE) - @$(RMMOD) $(DISK_MODULE) + $(call remove-module,$(CACHE_MODULE)) + $(call remove-module,$(DISK_MODULE)) - @rm $(DESTDIR)$(MODULES_DIR)/$(CACHE_MODULE).ko - @rm $(DESTDIR)$(MODULES_DIR)/$(DISK_MODULE).ko + $(call remove-file,$(DESTDIR)$(MODULES_DIR)/$(CACHE_MODULE).ko) + $(call remove-file,$(DESTDIR)$(MODULES_DIR)/$(DISK_MODULE).ko) @$(DEPMOD) diff --git a/tools/helpers.mk b/tools/helpers.mk new file mode 100644 index 0000000..3912726 --- /dev/null +++ b/tools/helpers.mk @@ -0,0 +1,15 @@ +# +# Copyright(c) 2021 Intel Corporation +# SPDX-License-Identifier: BSD-3-Clause-Clear +# + +define remove-file + @if [ -f ${1} ] || [ -L ${1} ]; then rm -rf ${1}; \ + else echo "WARNING: Cannot find file ${1}"; fi +endef + +define remove-directory + @if [ -d ${1} ]; then rm -rf ${1}; \ + else echo "WARNING: Cannot find directory ${1}"; fi +endef + diff --git a/utils/Makefile b/utils/Makefile index 43284dc..08d0bf8 100644 --- a/utils/Makefile +++ b/utils/Makefile @@ -3,6 +3,8 @@ # SPDX-License-Identifier: BSD-3-Clause-Clear # +include ../tools/helpers.mk + CASCTL_DIR = /lib/opencas UDEVRULES_DIR = /lib/udev/rules.d METADATA_DIR:=$(PWD)/../.metadata @@ -70,34 +72,34 @@ endif uninstall: @echo "Uninstalling Open-CAS utils" - @rm $(DESTDIR)/etc/opencas/opencas.conf - @rm $(DESTDIR)/etc/opencas/ioclass-config.csv - @rm -rf $(DESTDIR)/etc/opencas - @rm $(DESTDIR)/var/lib/opencas/cas_version - @rm -rf $(DESTDIR)/var/lib/opencas - @rm $(DESTDIR)/usr/share/man/man5/opencas.conf.5 + $(call remove-file,$(DESTDIR)/etc/opencas/opencas.conf) + $(call remove-file,$(DESTDIR)/etc/opencas/ioclass-config.csv) + $(call remove-directory,$(DESTDIR)/etc/opencas) + $(call remove-file,$(DESTDIR)/var/lib/opencas/cas_version) + $(call remove-directory,$(DESTDIR)/var/lib/opencas) + $(call remove-file,$(DESTDIR)/usr/share/man/man5/opencas.conf.5) - @rm $(DESTDIR)$(CASCTL_DIR)/opencas.py - @rm $(DESTDIR)$(CASCTL_DIR)/casctl - @rm $(DESTDIR)$(CASCTL_DIR)/open-cas-loader - @rm -rf $(DESTDIR)$(CASCTL_DIR) + $(call remove-file,$(DESTDIR)$(CASCTL_DIR)/opencas.py) + $(call remove-file,$(DESTDIR)$(CASCTL_DIR)/casctl) + $(call remove-file,$(DESTDIR)$(CASCTL_DIR)/open-cas-loader) + $(call remove-directory,$(DESTDIR)$(CASCTL_DIR)) - @rm $(DESTDIR)/etc/dracut.conf.d/opencas.conf + $(call remove-file,$(DESTDIR)/etc/dracut.conf.d/opencas.conf) - @rm $(DESTDIR)/sbin/casctl + $(call remove-file,$(DESTDIR)/sbin/casctl) - @rm $(DESTDIR)/usr/share/man/man8/casctl.8 + $(call remove-file,$(DESTDIR)/usr/share/man/man8/casctl.8) - @rm $(DESTDIR)$(UDEVRULES_DIR)/60-persistent-storage-cas-load.rules - @rm $(DESTDIR)$(UDEVRULES_DIR)/60-persistent-storage-cas.rules + $(call remove-file,$(DESTDIR)$(UDEVRULES_DIR)/60-persistent-storage-cas-load.rules) + $(call remove-file,$(DESTDIR)$(UDEVRULES_DIR)/60-persistent-storage-cas.rules) @$(UDEV) control --reload-rules @$(SYSTEMCTL) -q disable open-cas-shutdown @$(SYSTEMCTL) -q disable open-cas @$(SYSTEMCTL) daemon-reload - @rm $(DESTDIR)$(SYSTEMD_DIR)/open-cas-shutdown.service - @rm $(DESTDIR)$(SYSTEMD_DIR)/open-cas.service - @rm $(DESTDIR)$(SYSTEMD_DIR)/../system-shutdown/open-cas.shutdown + $(call remove-file,$(DESTDIR)$(SYSTEMD_DIR)/open-cas-shutdown.service) + $(call remove-file,$(DESTDIR)$(SYSTEMD_DIR)/open-cas.service) + $(call remove-file,$(DESTDIR)$(SYSTEMD_DIR)/../system-shutdown/open-cas.shutdown) .PHONY: install uninstall clean distclean