Merge pull request #5535 from oss-qm/submit/makefile-destdir

Makefile: fix DESTDIR environment variable behaviour
This commit is contained in:
Phil Estes 2021-06-03 10:59:34 -04:00 committed by GitHub
commit 6dcd883299
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 6 deletions

View File

@ -90,6 +90,25 @@ You can move them in your global path, `/usr/local/bin` with:
sudo make install sudo make install
``` ```
The install prefix can be changed by passing the `PREFIX` variable (defaults
to `/usr/local`).
Note: if you set one of these vars, set them to the same values on all make stages
(build as well as install).
If you want to prepend an additional prefix on actual installation (eg. packaging or chroot install),
you can pass it via `DESTDIR` variable:
```sudo
sudo make install DESTDIR=/tmp/install-x973234/
```
The above command installs the `containerd` binary to `/tmp/install-x973234/usr/local/bin/containerd`
The current `DESTDIR` convention is supported since containerd v1.6.
Older releases was using `DESTDIR` for a different purpose that is similar to `PREFIX`.
When making any changes to the gRPC API, you can use the installed `protoc` When making any changes to the gRPC API, you can use the installed `protoc`
compiler to regenerate the API generated code packages with: compiler to regenerate the API generated code packages with:

View File

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