Makefile: fix DESTDIR environment variable behaviour

The DESTDIR environment variable is used in the wrong way: since 30+ years
it's common practise using it for specifying *temporary* target *root*
(where eg. packaging infrastructure picks up the install image), instead
of the installation *prefix* on the final target.

Fixing this by introducing PREFIX variable (with default /usr/local) and
using both variables according to the 30 years matured common practise.
That way, distro packagers and other standardized build/installation
systems can easily do correct deployments w/o individual hacks.

changes v2: removed variables not used yet
            added documentation

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
Enrico Weigelt, metux IT consult
2021-05-06 16:33:43 +02:00
parent c8b33ba297
commit b5f530a157
2 changed files with 28 additions and 6 deletions

View File

@@ -21,7 +21,10 @@ INSTALL ?= install
ROOTDIR=$(dir $(abspath $(lastword $(MAKEFILE_LIST))))
# Base path used to install.
DESTDIR ?= /usr/local
# The files will be installed under `$(DESTDIR)/$(PREFIX)`.
# The convention of `DESTDIR` was changed in containerd v1.6.
PREFIX ?= /usr/local
TEST_IMAGE_LIST ?=
# Used to populate variables in version package.
@@ -250,8 +253,8 @@ man/%: docs/man/%.md FORCE
go-md2man -in "$<" -out "$@"
define installmanpage
$(INSTALL) -d $(DESTDIR)/man/man$(2);
gzip -c $(1) >$(DESTDIR)/man/man$(2)/$(3).gz;
$(INSTALL) -d $(DESTDIR)/$(PREFIX)/man/man$(2);
gzip -c $(1) >$(DESTDIR)/$(PREFIX)/man/man$(2)/$(3).gz;
endef
install-man: man
@@ -346,12 +349,12 @@ clean-test: ## clean up debris from previously failed tests
install: ## install binaries
@echo "$(WHALE) $@ $(BINARIES)"
@$(INSTALL) -d $(DESTDIR)/bin
@$(INSTALL) $(BINARIES) $(DESTDIR)/bin
@$(INSTALL) -d $(DESTDIR)/$(PREFIX)/bin
@$(INSTALL) $(BINARIES) $(DESTDIR)/$(PREFIX)/bin
uninstall:
@echo "$(WHALE) $@"
@rm -f $(addprefix $(DESTDIR)/bin/,$(notdir $(BINARIES)))
@rm -f $(addprefix $(DESTDIR)/$(PREFIX)/bin/,$(notdir $(BINARIES)))
ifeq ($(GOOS),windows)
install-deps: