summaryrefslogtreecommitdiff
path: root/Makefile.in
diff options
context:
space:
mode:
authorPaweł Chmielowski <pchmielowski@process-one.net>2018-01-08 11:11:42 +0100
committerPaweł Chmielowski <pchmielowski@process-one.net>2018-01-08 11:11:50 +0100
commitc5a4f67935356e35745c1571ffda5619175ddda8 (patch)
treebff98fac76026f1f0660d1b68fa14c6937659fd3 /Makefile.in
parentMake all install target rules as .PHONY (diff)
Delete old .so and executable files before installing new one
This fixes crash for people who have live ejabberd installed in make install target directory, by ensuring that loaded binaries aren't replaced in memory with new content.
Diffstat (limited to 'Makefile.in')
-rw-r--r--Makefile.in6
1 files changed, 4 insertions, 2 deletions
diff --git a/Makefile.in b/Makefile.in
index afc4d4ff..8006e074 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -149,15 +149,17 @@ define DEP_VERSION_template
DEP_$(1)_VERSION:=$(shell $(SED) -e '/vsn/!d;s/.*, *"/$(1)-/;s/".*//' $(2) 2>/dev/null)
endef
+DELETE_TARGET_SO=$(if $(subst X.soX,,X$(suffix $(1))X),,rm $(call TO_DEST,$(1));)
+
$(foreach DEP,$(DEPS),$(eval $(call DEP_VERSION_template,$(DEP),deps/$(DEP)/ebin/$(DEP).app)))
$(eval $(call DEP_VERSION_template,ejabberd,ebin/ejabberd.app))
define COPY_template
-$(call TO_DEST,$(1)): $(1) $(call TO_DEST,$(dir $(1))) ; $$(INSTALL) -m 644 $(1) $(call TO_DEST,$(1))
+$(call TO_DEST,$(1)): $(1) $(call TO_DEST,$(dir $(1))) ; $(call DELETE_TARGET_SO, $(1)) $$(INSTALL) -m 644 $(1) $(call TO_DEST,$(1))
endef
define COPY_BINARY_template
-$(call TO_DEST,$(1)): $(1) $(call TO_DEST,$(dir $(1))) ; $$(INSTALL) -m 755 $$(O_USER) $(1) $(call TO_DEST,$(1))
+$(call TO_DEST,$(1)): $(1) $(call TO_DEST,$(dir $(1))) ; rm $(call TO_DEST,$(1)); $$(INSTALL) -m 755 $$(O_USER) $(1) $(call TO_DEST,$(1))
endef
$(foreach file,$(DEPS_FILES_FILTERED) $(MAIN_FILES),$(eval $(call COPY_template,$(file))))