diff mbox series

[2/2] build: add Uninstall for host build

Message ID 20220404132054.3387697-2-fe@dev.tdt.de
State New
Headers show
Series [1/2] build: add logging output for host build | expand

Commit Message

Florian Eckert April 4, 2022, 1:20 p.m. UTC
Currently there is no possibility for host package to cleanly remove the
installed files in staging.
There is the possibility to call an uninstall make target, but if this
is not implemented, and so nothing happens.

For debugging, it makes sense to know what is being installed. With this
change, the install process is called twice.
Once to create a .host-install file and once to install the package files
into the staging directory. If the tool is removed, the .host-install file
is used to remove all files from the staging dirctories.

This only works for the generic autotools install and uninstall target.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
---
 include/host-build.mk | 26 +++++++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/include/host-build.mk b/include/host-build.mk
index b31bf93b30..d0f1a3eda5 100644
--- a/include/host-build.mk
+++ b/include/host-build.mk
@@ -113,13 +113,37 @@  endef
 
 define Host/Install/Default
 	@echo '*** Calling Host/Install/Default ($(PKG_NAME)) ***'
-	$(call Host/Compile/Default,install)
+	+$(HOST_MAKE_VARS) \
+	$(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) \
+		DESTDIR="$(HOST_INSTALL_DIR)" \
+		$(HOST_MAKE_FLAGS) \
+		install
+	cd $(HOST_INSTALL_DIR) && \
+		find . | sed 's|^.||' > $(HOST_BUILD_DIR)/.host-install && \
+		rm -rf $(HOST_INSTALL_DIR)
+	+$(HOST_MAKE_VARS) \
+	$(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) \
+		$(HOST_MAKE_FLAGS) \
+		install
 endef
 
 define Host/Install
 	$(call Host/Install/Default)
 endef
 
+define Host/Uninstall/Default
+	@echo '*** Calling Host/Uninstall/Default ($(PKG_NAME)) ***'
+	if [ -f "$(HOST_BUILD_DIR)/.host-install" ]; then \
+		$(XARGS) $(RM) < $(HOST_BUILD_DIR)/.host-install; \
+		$(FIND) $(STAGING_DIR_HOST) -type d -empty -print -delete; \
+		$(FIND) $(STAGING_DIR_HOSTPKG) -type d -empty -print -delete; \
+	fi
+endef
+
+define Host/Uninstall
+	$(call Host/Uninstall/Default)
+endef
+
 ifneq ($(if $(HOST_QUILT),,$(CONFIG_AUTOREBUILD)),)
   define HostHost/Autoclean
     $(call rdep,${CURDIR} $(PKG_FILE_DEPENDS),$(HOST_STAMP_PREPARED))