Merge pull request #402 from jcvenegas/destdir

[RFC] makefile: honor DESTDIR flag.
This commit is contained in:
Archana Shinde 2018-06-26 15:45:27 -07:00 committed by GitHub
commit 2b27ddc738
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 55 additions and 36 deletions

View File

@ -34,6 +34,12 @@ PROJECT_TAG = kata-containers
PROJECT_URL = https://github.com/kata-containers PROJECT_URL = https://github.com/kata-containers
PROJECT_BUG_URL = $(PROJECT_URL)/kata-containers/issues/new PROJECT_BUG_URL = $(PROJECT_URL)/kata-containers/issues/new
# list of scripts to install
SCRIPTS :=
# list of binaries to install
BINLIST :=
BIN_PREFIX = $(PROJECT_TYPE) BIN_PREFIX = $(PROJECT_TYPE)
PROJECT_DIR = $(PROJECT_TAG) PROJECT_DIR = $(PROJECT_TAG)
IMAGENAME = $(PROJECT_TAG).img IMAGENAME = $(PROJECT_TAG).img
@ -41,17 +47,22 @@ INITRDNAME = $(PROJECT_TAG)-initrd.img
TARGET = $(BIN_PREFIX)-runtime TARGET = $(BIN_PREFIX)-runtime
TARGET_OUTPUT = $(CURDIR)/$(TARGET) TARGET_OUTPUT = $(CURDIR)/$(TARGET)
BINLIST += $(TARGET)
DESTDIR := DESTDIR := /
installing = $(findstring install,$(MAKECMDGOALS)) installing = $(findstring install,$(MAKECMDGOALS))
# Configure the build for a standard system that is ifeq ($(PREFIX),)
# using OBS-generated packages. PREFIX := /usr/
PREFIX := /usr EXEC_PREFIX := $(PREFIX)/local
BINDIR := $(PREFIX)/bin else
DESTBINDIR := /usr/local/bin EXEC_PREFIX := $(PREFIX)
QEMUBINDIR := $(BINDIR) endif
# Prefix where depedencies are installed
PREFIXDEPS := $(PREFIX)
BINDIR := $(EXEC_PREFIX)/bin
QEMUBINDIR := $(PREFIXDEPS)/bin
SYSCONFDIR := /etc SYSCONFDIR := /etc
LOCALSTATEDIR := /var LOCALSTATEDIR := /var
@ -67,7 +78,7 @@ else
KERNEL_NAME = vmlinuz.container KERNEL_NAME = vmlinuz.container
endif endif
LIBEXECDIR := $(PREFIX)/libexec LIBEXECDIR := $(PREFIXDEPS)/libexec
SHAREDIR := $(PREFIX)/share SHAREDIR := $(PREFIX)/share
DEFAULTSDIR := $(SHAREDIR)/defaults DEFAULTSDIR := $(SHAREDIR)/defaults
@ -81,7 +92,7 @@ SCRIPTS_DIR := $(BINDIR)
BASH_COMPLETIONS := data/completions/bash/kata-runtime BASH_COMPLETIONS := data/completions/bash/kata-runtime
BASH_COMPLETIONSDIR := $(SHAREDIR)/bash-completion/completions BASH_COMPLETIONSDIR := $(SHAREDIR)/bash-completion/completions
PKGDATADIR := $(SHAREDIR)/$(PROJECT_DIR) PKGDATADIR := $(PREFIXDEPS)/share/$(PROJECT_DIR)
PKGLIBDIR := $(LOCALSTATEDIR)/lib/$(PROJECT_DIR) PKGLIBDIR := $(LOCALSTATEDIR)/lib/$(PROJECT_DIR)
PKGRUNDIR := $(LOCALSTATEDIR)/run/$(PROJECT_DIR) PKGRUNDIR := $(LOCALSTATEDIR)/run/$(PROJECT_DIR)
PKGLIBEXECDIR := $(LIBEXECDIR)/$(PROJECT_DIR) PKGLIBEXECDIR := $(LIBEXECDIR)/$(PROJECT_DIR)
@ -132,27 +143,24 @@ CONFIG_FILE = configuration.toml
CONFIG = $(CLI_DIR)/config/$(CONFIG_FILE) CONFIG = $(CLI_DIR)/config/$(CONFIG_FILE)
CONFIG_IN = $(CONFIG).in CONFIG_IN = $(CONFIG).in
DESTTARGET := $(abspath $(DESTBINDIR)/$(TARGET)) CONFDIR := $(DEFAULTSDIR)/$(PROJECT_DIR)
SYSCONFDIR := $(SYSCONFDIR)/$(PROJECT_DIR)
DESTCONFDIR := $(DESTDIR)/$(DEFAULTSDIR)/$(PROJECT_DIR)
DESTSYSCONFDIR := $(DESTDIR)/$(SYSCONFDIR)/$(PROJECT_DIR)
# Main configuration file location for stateless systems # Main configuration file location for stateless systems
DESTCONFIG := $(abspath $(DESTCONFDIR)/$(CONFIG_FILE)) CONFIG_PATH := $(abspath $(CONFDIR)/$(CONFIG_FILE))
# Secondary configuration file location. Note that this takes precedence # Secondary configuration file location. Note that this takes precedence
# over DESTCONFIG. # over CONFIG_PATH.
DESTSYSCONFIG := $(abspath $(DESTSYSCONFDIR)/$(CONFIG_FILE)) SYSCONFIG := $(abspath $(SYSCONFDIR)/$(CONFIG_FILE))
DESTSHAREDIR := $(DESTDIR)/$(SHAREDIR) SHAREDIR := $(SHAREDIR)
# list of variables the user may wish to override # list of variables the user may wish to override
USER_VARS += ARCH USER_VARS += ARCH
USER_VARS += BINDIR USER_VARS += BINDIR
USER_VARS += DESTCONFIG USER_VARS += CONFIG_PATH
USER_VARS += DESTDIR USER_VARS += DESTDIR
USER_VARS += DESTSYSCONFIG USER_VARS += SYSCONFIG
USER_VARS += DESTTARGET
USER_VARS += IMAGENAME USER_VARS += IMAGENAME
USER_VARS += IMAGEPATH USER_VARS += IMAGEPATH
USER_VARS += INITRDNAME USER_VARS += INITRDNAME
@ -290,11 +298,11 @@ const defaultDisableNestingChecks bool = $(DEFDISABLENESTINGCHECKS)
const defaultMsize9p uint32 = $(DEFMSIZE9P) const defaultMsize9p uint32 = $(DEFMSIZE9P)
// Default config file used by stateless systems. // Default config file used by stateless systems.
var defaultRuntimeConfiguration = "$(DESTCONFIG)" var defaultRuntimeConfiguration = "$(CONFIG_PATH)"
// Alternate config file that takes precedence over // Alternate config file that takes precedence over
// defaultRuntimeConfiguration. // defaultRuntimeConfiguration.
var defaultSysConfRuntimeConfiguration = "$(DESTSYSCONFIG)" var defaultSysConfRuntimeConfiguration = "$(SYSCONFIG)"
var defaultProxyPath = "$(PROXYPATH)" var defaultProxyPath = "$(PROXYPATH)"
endef endef
@ -340,8 +348,8 @@ $(GENERATED_FILES): %: %.in Makefile VERSION
-e "s|@COMMIT@|$(COMMIT)|g" \ -e "s|@COMMIT@|$(COMMIT)|g" \
-e "s|@VERSION@|$(VERSION)|g" \ -e "s|@VERSION@|$(VERSION)|g" \
-e "s|@CONFIG_IN@|$(CONFIG_IN)|g" \ -e "s|@CONFIG_IN@|$(CONFIG_IN)|g" \
-e "s|@DESTCONFIG@|$(DESTCONFIG)|g" \ -e "s|@CONFIG_PATH@|$(CONFIG_PATH)|g" \
-e "s|@DESTSYSCONFIG@|$(DESTSYSCONFIG)|g" \ -e "s|@SYSCONFIG@|$(SYSCONFIG)|g" \
-e "s|@IMAGEPATH@|$(IMAGEPATH)|g" \ -e "s|@IMAGEPATH@|$(IMAGEPATH)|g" \
-e "s|@KERNELPATH@|$(KERNELPATH)|g" \ -e "s|@KERNELPATH@|$(KERNELPATH)|g" \
-e "s|@INITRDPATH@|$(INITRDPATH)|g" \ -e "s|@INITRDPATH@|$(INITRDPATH)|g" \
@ -392,15 +400,19 @@ check-go-static:
coverage: coverage:
$(QUIET_TEST).ci/go-test.sh html-coverage $(QUIET_TEST).ci/go-test.sh html-coverage
install: default runtime install-scripts install-completions install: default runtime install-scripts install-completions install-config install-bin
$(QUIET_INST)install -D $(TARGET) $(DESTTARGET)
$(QUIET_INST)install -D $(CONFIG) $(DESTCONFIG) install-bin: $(BINLIST)
$(foreach f,$(BINLIST),$(call INSTALL_EXEC,$f,$(BINDIR)))
install-config: $(CONFIG)
$(QUIET_INST)install --mode 0644 -D $(CONFIG) $(DESTDIR)/$(CONFIG_PATH)
install-scripts: $(SCRIPTS) install-scripts: $(SCRIPTS)
$(foreach f,$(SCRIPTS),$(call INSTALL_EXEC,$f,$(SCRIPTS_DIR))) $(foreach f,$(SCRIPTS),$(call INSTALL_EXEC,$f,$(SCRIPTS_DIR)))
install-completions: install-completions:
$(QUIET_INST)install --mode 0644 -D $(BASH_COMPLETIONS) $(BASH_COMPLETIONSDIR) $(QUIET_INST)install --mode 0644 -D $(BASH_COMPLETIONS) $(DESTDIR)/$(BASH_COMPLETIONSDIR)/$(notdir $(BASH_COMPLETIONS));
clean: clean:
$(QUIET_CLEAN)rm -f $(TARGET) $(CONFIG) $(GENERATED_GO_FILES) $(GENERATED_FILES) $(COLLECT_SCRIPT) $(QUIET_CLEAN)rm -f $(TARGET) $(CONFIG) $(GENERATED_GO_FILES) $(GENERATED_FILES) $(COLLECT_SCRIPT)
@ -461,10 +473,17 @@ show-summary: show-header
@printf "\n" @printf "\n"
@printf "• Summary:\n" @printf "• Summary:\n"
@printf "\n" @printf "\n"
@printf "\tbinary install path (DESTTARGET) : %s\n" $(DESTTARGET) @printf "\tdestination install path (DESTDIR) : %s\n" $(abspath $(DESTDIR))
@printf "\tconfig install path (DESTCONFIG) : %s\n" $(DESTCONFIG) @printf "\tbinary installation path (BINDIR) : %s\n" $(abspath $(BINDIR))
@printf "\talternate config path (DESTSYSCONFIG) : %s\n" $(DESTSYSCONFIG) @printf "\tbinaries to install :\n"
@printf "\thypervisor path (QEMUPATH) : %s\n" $(QEMUPATH) @printf \
@printf "\tassets path (PKGDATADIR) : %s\n" $(PKGDATADIR) "$(foreach b,$(sort $(BINLIST)),$(shell printf "\\t - $(shell readlink -m $(DESTDIR)/$(BINDIR)/$(b))\\\n"))"
@printf "\tproxy+shim path (PKGLIBEXECDIR) : %s\n" $(PKGLIBEXECDIR) @printf \
"$(foreach s,$(sort $(SCRIPTS)),$(shell printf "\\t - $(shell readlink -m $(DESTDIR)/$(BINDIR)/$(s))\\\n"))"
@printf "\tconfig to install (CONFIG) : %s\n" $(CONFIG)
@printf "\tinstall path (CONFIG_PATH) : %s\n" $(abspath $(CONFIG_PATH))
@printf "\talternate config path (SYSCONFIG) : %s\n" $(abspath $(SYSCONFIG))
@printf "\thypervisor path (QEMUPATH) : %s\n" $(abspath $(QEMUPATH))
@printf "\tassets path (PKGDATADIR) : %s\n" $(abspath $(PKGDATADIR))
@printf "\tproxy+shim path (PKGLIBEXECDIR) : %s\n" $(abspath $(PKGLIBEXECDIR))
@printf "\n" @printf "\n"

View File

@ -180,8 +180,8 @@ show_runtime_configs()
# add in the standard defaults for good measure "just in case" # add in the standard defaults for good measure "just in case"
configs+=" /etc/@PROJECT_TAG@/configuration.toml" configs+=" /etc/@PROJECT_TAG@/configuration.toml"
configs+=" /usr/share/defaults/@PROJECT_TAG@/configuration.toml" configs+=" /usr/share/defaults/@PROJECT_TAG@/configuration.toml"
configs+=" @DESTCONFIG@" configs+=" @CONFIG_PATH@"
configs+=" @DESTSYSCONFIG@" configs+=" @SYSCONFIG@"
# create a unique list of config files # create a unique list of config files
configs=$(echo $configs|tr ' ' '\n'|sort -u) configs=$(echo $configs|tr ' ' '\n'|sort -u)