Skip to content
Snippets Groups Projects
Commit 922905e2 authored by Simon Rose's avatar Simon Rose
Browse files

Merge branch 'sudo' into 'bugfixes'

Sudo

See merge request e3/e3-require!5
parents d171d9a5 ce6411dc
No related branches found
No related tags found
No related merge requests found
Showing
with 43 additions and 131 deletions
...@@ -24,7 +24,6 @@ include $(TOP)/configure/E3/CONFIG_REQUIRE ...@@ -24,7 +24,6 @@ include $(TOP)/configure/E3/CONFIG_REQUIRE
include $(TOP)/configure/E3/CONFIG_E3_PATH include $(TOP)/configure/E3/CONFIG_E3_PATH
include $(TOP)/configure/E3/CONFIG_E3_MAKEFILE include $(TOP)/configure/E3/CONFIG_E3_MAKEFILE
include $(TOP)/configure/E3/CONFIG_EPICS include $(TOP)/configure/E3/CONFIG_EPICS
include $(TOP)/configure/E3/CONFIG_SUDO
include $(TOP)/configure/E3/CONFIG_EXPORT include $(TOP)/configure/E3/CONFIG_EXPORT
......
...@@ -22,7 +22,6 @@ EXPORT_VARS+=$(filter E3_REQUIRE_%,$(.VARIABLES)) ...@@ -22,7 +22,6 @@ EXPORT_VARS+=$(filter E3_REQUIRE_%,$(.VARIABLES))
EXPORT_VARS+=QUIET EXPORT_VARS+=QUIET
EXPORT_VARS+=$(filter %_DEP_VERSION,$(.VARIABLES)) EXPORT_VARS+=$(filter %_DEP_VERSION,$(.VARIABLES))
EXPORT_VARS+=$(filter WITH_%,$(.VARIABLES)) EXPORT_VARS+=$(filter WITH_%,$(.VARIABLES))
EXPORT_VARS+=$(filter SUDO%,$(.VARIABLES))
export_version=$(eval export $1) export_version=$(eval export $1)
$(eval $(foreach v,$(EXPORT_VARS),$(call export_version,$v))) $(eval $(foreach v,$(EXPORT_VARS),$(call export_version,$v)))
......
# IF EPICS_BASE is not WRITABLE, SUDO and SUDOBASH should be used
# SUDO_INFO 1 : SUDO is needed (NOT writable)
# SUDO_INFO 0 : SUDO is not needed
SUDO_INFO := $(shell test -w $(EPICS_BASE) 1>&2 2> /dev/null; echo $$?)
SUDO_CMD := $(shell which sudo)
# For CentOS, devtoolset-{7,8} has -E option within sudo shell
# So we have to remove -E option as well if we would like to use devtoolset
#
ifeq "$(SUDO_INFO)" "1"
ifneq (,$(findstring devtoolset,$(SUDO_CMD)))
SUDO = $(SUDO_CMD)
else
SUDO = $(SUDO_CMD) -E
endif
SUDOBASH := $(SUDO) bash -c
else
SUDO :=
SUDOBASH = bash -c
endif
# Valid for only Development Mode, because we clone/remove them
# See RULES_DEV
# E3_MODULE_SRC_PATH_INFO 1 : the directory is not there
# E3_MODULE_SRC_PATH_INFO 0 : the directory is there
E3_MODULE_SRC_PATH_INFO := $(shell test -d $(E3_MODULE_SRC_PATH) 1>&2 2> /dev/null; echo $$?)
ifeq "$(E3_MODULE_SRC_PATH_INFO)" "1"
INIT_E3_MODULE_SRC = 1
endif
VARS_EXCLUDES+=SUDO
VARS_EXCLUDES+=SUDOBASH
VARS_EXCLUDES+=SUDO_INFO
VARS_EXCLUDES+=SUDO_CMD
VARS_EXCLUDES+=E3_MODULE_SRC_PATH_INFO
...@@ -10,8 +10,12 @@ devinit: git-submodule-sync ...@@ -10,8 +10,12 @@ devinit: git-submodule-sync
git clone $(E3_MODULE_DEV_GITURL) $(E3_MODULE_SRC_PATH) git clone $(E3_MODULE_DEV_GITURL) $(E3_MODULE_SRC_PATH)
cd $(E3_MODULE_SRC_PATH) && git checkout $(EPICS_MODULE_TAG) cd $(E3_MODULE_SRC_PATH) && git checkout $(EPICS_MODULE_TAG)
# E3_MODULE_SRC_PATH_INFO 1 : the directory is not there
# E3_MODULE_SRC_PATH_INFO 0 : the directory is there
E3_MODULE_SRC_PATH_INFO := $(shell test -d $(E3_MODULE_SRC_PATH) 1>&2 2> /dev/null; echo $$?)
ifeq "$(INIT_E3_MODULE_SRC)" "1" # Note that this is re-defined in CONFIG_MODULE_DEV, which is included if you do a `make dev*`.
ifeq "$(E3_MODULE_SRC_PATH_INFO)" "1"
devbuild: nonexists devbuild: nonexists
devclean: nonexists devclean: nonexists
......
...@@ -32,13 +32,13 @@ help: ...@@ -32,13 +32,13 @@ help:
install: requireconf install_module install: requireconf install_module
install_module: build db install_module: build db
$(QUIET) $(SUDOBASH) '$(E3_MODULE_MAKE_CMDS) install' $(QUIET) $(E3_MODULE_MAKE_CMDS) install
## Uninstall the current module ## Uninstall the current module
uninstall: conf uninstall: conf
#ifeq (,$(strip $(wildcard $(E3_SITEMODS_PATH)/*) $(wildcard $(E3_SITEAPPS_PATH)/*) $(wildcard $(E3_SITELIBS_PATH)/*))) #ifeq (,$(strip $(wildcard $(E3_SITEMODS_PATH)/*) $(wildcard $(E3_SITEAPPS_PATH)/*) $(wildcard $(E3_SITELIBS_PATH)/*)))
ifeq (,$(strip $(wildcard $(E3_SITEMODS_PATH)/*))) ifeq (,$(strip $(wildcard $(E3_SITEMODS_PATH)/*)))
$(QUIET) $(SUDOBASH) '$(E3_MODULE_MAKE_CMDS) uninstall' $(QUIET) $(E3_MODULE_MAKE_CMDS) uninstall
else else
$(error Cannot run 'make uninstall': please manually uninstall everything in $(E3_SITEMODS_PATH)) $(error Cannot run 'make uninstall': please manually uninstall everything in $(E3_SITEMODS_PATH))
endif endif
...@@ -46,7 +46,7 @@ endif ...@@ -46,7 +46,7 @@ endif
# We should be able to force an uninstall of require if we need to; this should not be done without some care and thought, however! # We should be able to force an uninstall of require if we need to; this should not be done without some care and thought, however!
## Uninstall, including deleting siteMods directory. ## Uninstall, including deleting siteMods directory.
forceuninstall: conf forceuninstall: conf
$(QUIET) $(SUDOBASH) '$(E3_MODULE_MAKE_CMDS) uninstall' $(QUIET) $(E3_MODULE_MAKE_CMDS) uninstall
## Build current module. ## Build current module.
build: conf checkout build: conf checkout
......
...@@ -8,8 +8,8 @@ ...@@ -8,8 +8,8 @@
# epics: # epics:
# $(QUIET)echo "EPICS_BASE=$(EPICS_BASE)" > $(TOP)/$(E3_MODULE_SRC_PATH)/configure/RELEASE # $(QUIET)echo "EPICS_BASE=$(EPICS_BASE)" > $(TOP)/$(E3_MODULE_SRC_PATH)/configure/RELEASE
# $(QUIET)echo "INSTALL_LOCATION=$(M_IOCSTATS)" > $(TOP)/$(E3_MODULE_SRC_PATH)/configure/CONFIG_SITE # $(QUIET)echo "INSTALL_LOCATION=$(M_IOCSTATS)" > $(TOP)/$(E3_MODULE_SRC_PATH)/configure/CONFIG_SITE
# $(SUDOBASH) "$(MAKE) -C $(E3_MODULE_SRC_PATH)" # $(MAKE) -C $(E3_MODULE_SRC_PATH)
#epics-clean: #epics-clean:
# $(SUDOBASH) "$(MAKE) -C $(E3_MODULE_SRC_PATH) clean" # $(MAKE) -C $(E3_MODULE_SRC_PATH) clean
...@@ -25,23 +25,23 @@ E3_REQUIRE_CONF_FILES := $(filter-out $(FILE_FILTER), $(wildcard $(TOP)/configur ...@@ -25,23 +25,23 @@ E3_REQUIRE_CONF_FILES := $(filter-out $(FILE_FILTER), $(wildcard $(TOP)/configur
.PHONY: e3-site-conf e3-site-path requireconf .PHONY: e3-site-conf e3-site-path requireconf
requireconf: e3-site-path e3-site-conf e3-require-path requireconf: e3-site-path e3-site-conf e3-require-path
$(QUIET) $(SUDO) install -m 755 $(wildcard $(E3_MODULE_SRC_PATH)/App/tools/*.tcl) $(E3_REQUIRE_TOOLS)/ $(QUIET) install -m 755 $(wildcard $(E3_MODULE_SRC_PATH)/App/tools/*.tcl) $(E3_REQUIRE_TOOLS)/
$(QUIET) $(SUDO) install -m 644 $(E3_MODULE_SRC_PATH)/App/tools/driver.makefile $(E3_REQUIRE_TOOLS)/ $(QUIET) install -m 644 $(E3_MODULE_SRC_PATH)/App/tools/driver.makefile $(E3_REQUIRE_TOOLS)/
$(QUIET) $(SUDO) install -m 755 $(E3_SHELL_FILES) $(E3_REQUIRE_BIN)/ $(QUIET) install -m 755 $(E3_SHELL_FILES) $(E3_REQUIRE_BIN)/
$(QUIET) $(SUDO) install -m 644 $(E3_IOC_CFG_FILES) $(E3_REQUIRE_BIN)/ $(QUIET) install -m 644 $(E3_IOC_CFG_FILES) $(E3_REQUIRE_BIN)/
$(QUIET) $(SUDO) install -m 644 $(E3_REQUIRE_CONF_FILES) $(E3_REQUIRE_CONFIG)/ $(QUIET) install -m 644 $(E3_REQUIRE_CONF_FILES) $(E3_REQUIRE_CONFIG)/
e3-require-path: e3-require-path:
$(QUIET) $(SUDO) install -d -m 755 $(E3_REQUIRE_TOOLS) $(QUIET) install -d -m 755 $(E3_REQUIRE_TOOLS)
$(QUIET) $(SUDO) install -d -m 755 $(E3_REQUIRE_BIN) $(QUIET) install -d -m 755 $(E3_REQUIRE_BIN)
$(QUIET) $(SUDO) install -d -m 755 $(E3_REQUIRE_CONFIG) $(QUIET) install -d -m 755 $(E3_REQUIRE_CONFIG)
e3-site-path: e3-site-path:
$(QUIET) $(SUDO) install -d -m 755 $(E3_SITELIBS_PATH) $(QUIET) install -d -m 755 $(E3_SITELIBS_PATH)
$(QUIET) $(SUDO) install -d -m 755 $(E3_SITEMODS_PATH) $(QUIET) install -d -m 755 $(E3_SITEMODS_PATH)
$(QUIET) $(SUDO) install -d -m 755 $(E3_SITEAPPS_PATH) $(QUIET) install -d -m 755 $(E3_SITEAPPS_PATH)
e3-site-conf: e3-site-conf:
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
include $(EPICS_BASE)/configure/CONFIG_BASE_VERSION include $(EPICS_BASE)/configure/CONFIG_BASE_VERSION
include $(REQUIRE_CONFIG)/CONFIG_REQUIRE include $(REQUIRE_CONFIG)/CONFIG_REQUIRE
include $(REQUIRE_CONFIG)/CONFIG_SUDO
include $(REQUIRE_CONFIG)/CONFIG_CELL include $(REQUIRE_CONFIG)/CONFIG_CELL
include $(REQUIRE_CONFIG)/CONFIG_E3_PATH include $(REQUIRE_CONFIG)/CONFIG_E3_PATH
include $(REQUIRE_CONFIG)/CONFIG_E3_MAKEFILE include $(REQUIRE_CONFIG)/CONFIG_E3_MAKEFILE
......
...@@ -14,7 +14,4 @@ E3_CELL_PATH=$(TOP)/cellMods ...@@ -14,7 +14,4 @@ E3_CELL_PATH=$(TOP)/cellMods
-include $(TOP)/configure/CONFIG_CELL.local -include $(TOP)/configure/CONFIG_CELL.local
E3_MODULES_PATH=$(E3_CELL_PATH) E3_MODULES_PATH=$(E3_CELL_PATH)
# If we are doing cellinstall, we should not use SUDO. This is a local install.
SUDO=
endif endif
...@@ -23,7 +23,6 @@ EXPORT_VARS+=$(filter E3_REQUIRE_%,$(.VARIABLES)) ...@@ -23,7 +23,6 @@ EXPORT_VARS+=$(filter E3_REQUIRE_%,$(.VARIABLES))
EXPORT_VARS+=QUIET EXPORT_VARS+=QUIET
EXPORT_VARS+=$(filter %_DEP_VERSION,$(.VARIABLES)) EXPORT_VARS+=$(filter %_DEP_VERSION,$(.VARIABLES))
EXPORT_VARS+=$(filter WITH_%,$(.VARIABLES)) EXPORT_VARS+=$(filter WITH_%,$(.VARIABLES))
EXPORT_VARS+=$(filter SUDO%,$(.VARIABLES))
EXPORT_VARS+=$(filter %_EXTERNAL,$(.VARIABLES)) EXPORT_VARS+=$(filter %_EXTERNAL,$(.VARIABLES))
export_version=$(eval export $1) export_version=$(eval export $1)
......
# IF EPICS_BASE is not WRITABLE, SUDO and SUDOBASH should be used
# SUDO_INFO 1 : SUDO is needed (NOT writable)
# SUDO_INFO 0 : SUDO is not needed
SUDO_INFO := $(shell test -w $(EPICS_BASE) 1>&2 2> /dev/null; echo $$?)
SUDO_CMD := $(shell which sudo)
# For CentOS, devtoolset-{7,8} has -E option within sudo shell
# So we have to remove -E option as well if we would like to use devtoolset
#
ifeq "$(SUDO_INFO)" "1"
ifneq (,$(findstring devtoolset,$(SUDO_CMD)))
SUDO = $(SUDO_CMD)
else
SUDO = $(SUDO_CMD) -E
endif
SUDOBASH = $(SUDO) bash -c
else
SUDO :=
SUDOBASH = bash -c
endif
ifneq (,$(findstring devtoolset,$(SUDO_CMD)))
SUDO2 := $(SUDO_CMD) bash -c
else
SUDO2 := $(SUDO_CMD) -E bash -c
endif
# Valid for only Development Mode, because we clone/remove them
# See RULES_DEV
# E3_MODULE_SRC_PATH_INFO 1 : the directory is not there
# E3_MODULE_SRC_PATH_INFO 0 : the directory is there
E3_MODULE_SRC_PATH_INFO := $(shell test -d $(E3_MODULE_SRC_PATH) 1>&2 2> /dev/null; echo $$?)
ifeq "$(E3_MODULE_SRC_PATH_INFO)" "1"
INIT_E3_MODULE_SRC = 1
endif
VARS_EXCLUDES+=SUDO2
VARS_EXCLUDES+=SUDO
VARS_EXCLUDES+=SUDOBASH
VARS_EXCLUDES+=SUDO_INFO
VARS_EXCLUDES+=SUDO_CMD
VARS_EXCLUDES+=E3_MODULE_SRC_PATH_INFO
...@@ -5,8 +5,7 @@ cellinstall: install_module versions fix_permissions ...@@ -5,8 +5,7 @@ cellinstall: install_module versions fix_permissions
## Remove the module from the local directory $(E3_CELL_PATH) ## Remove the module from the local directory $(E3_CELL_PATH)
celluninstall: conf celluninstall: conf
$(QUIET) $(SUDOBASH) '$(E3_MODULE_MAKE_CMDS) uninstall' $(QUIET) $(E3_MODULE_MAKE_CMDS) uninstall
#$(SUDO) rm -rf $(E3_MODULES_PATH)
## Print relevant environment variables for the local install ## Print relevant environment variables for the local install
cellvars: vars cellvars: vars
......
...@@ -58,7 +58,7 @@ devrebuild: rebuild ...@@ -58,7 +58,7 @@ devrebuild: rebuild
devuninstall: uninstall devuninstall: uninstall
devdistclean: clean devdistclean: clean
$(QUIET)echo "Removing $(E3_MODULE_SRC_PATH) ......... " $(QUIET)echo "Removing $(E3_MODULE_SRC_PATH) ......... "
$(SUDO) rm -rf $(E3_MODULE_SRC_PATH) rm -rf $(E3_MODULE_SRC_PATH)
devepics: epics devepics: epics
devepics-clean: epics-clean devepics-clean: epics-clean
devepics-distclean: epics-distclean devepics-distclean: epics-distclean
......
...@@ -3,21 +3,21 @@ ...@@ -3,21 +3,21 @@
dkms_build: dkms_build:
$(SUDO) $(DKMS) build $(DKMS_ARGS) $(DKMS) build $(DKMS_ARGS)
dkms_remove: dkms_remove:
$(SUDO) $(DKMS) remove $(E3_MODULE_NAME)/$(E3_MODULE_VERSION) --all $(DKMS) remove $(E3_MODULE_NAME)/$(E3_MODULE_VERSION) --all
$(SUDO) rm -rf /usr/src/$(E3_MODULE_NAME)-$(E3_MODULE_VERSION) rm -rf /usr/src/$(E3_MODULE_NAME)-$(E3_MODULE_VERSION)
dkms_install: dkms_install:
$(SUDO) $(DKMS) install $(DKMS_ARGS) $(DKMS) install $(DKMS_ARGS)
$(QUIET)$(SUDO) depmod $(QUIET) depmod
dkms_uninstall: dkms_uninstall:
$(SUDO) $(DKMS) uninstall $(DKMS_ARGS) $(DKMS) uninstall $(DKMS_ARGS)
$(QUIET)$(SUDO) depmod $(QUIET) depmod
.PHONY: dkms_build dkms_install dkms_remove dkms_uninstall .PHONY: dkms_build dkms_install dkms_remove dkms_uninstall
...@@ -32,11 +32,11 @@ help: ...@@ -32,11 +32,11 @@ help:
install: install_module install_links vlibs install: install_module install_links vlibs
install_module: build db install_module: build db
$(QUIET) $(SUDOBASH) '$(E3_MODULE_MAKE_CMDS) install' $(QUIET) $(E3_MODULE_MAKE_CMDS) install
## Uninstall the current module ## Uninstall the current module
uninstall: conf uninstall: conf
$(QUIET) $(SUDOBASH) '$(E3_MODULE_MAKE_CMDS) uninstall' $(QUIET) $(E3_MODULE_MAKE_CMDS) uninstall
## Build current module ## Build current module
build: conf checkout prebuild build: conf checkout prebuild
......
...@@ -5,16 +5,16 @@ ...@@ -5,16 +5,16 @@
# GNU find # GNU find
install_links: $(INSTALLED_EPICS_BASE_ARCHS) hdrs install_links: $(INSTALLED_EPICS_BASE_ARCHS) hdrs
# $(SUDO) ln -snf $(E3_MODULES_INSTALL_LOCATION_INC) $(E3_MODULES_INSTALL_LOCATION_INC_LINK) # ln -snf $(E3_MODULES_INSTALL_LOCATION_INC) $(E3_MODULES_INSTALL_LOCATION_INC_LINK)
# $(SUDO) ln -snf $(E3_MODULES_INSTALL_LOCATION_DB) $(E3_MODULES_INSTALL_LOCATION_DB_LINK) # ln -snf $(E3_MODULES_INSTALL_LOCATION_DB) $(E3_MODULES_INSTALL_LOCATION_DB_LINK)
# $(SUDO) ln -snf $(E3_MODULES_INSTALL_LOCATION_BIN) $(E3_MODULES_INSTALL_LOCATION_BIN_LINK) # ln -snf $(E3_MODULES_INSTALL_LOCATION_BIN) $(E3_MODULES_INSTALL_LOCATION_BIN_LINK)
# $(SUDO) ln -snf $(E3_MODULES_INSTALL_LOCATION_LIB) $(E3_MODULES_INSTALL_LOCATION_LIB_LINK) # ln -snf $(E3_MODULES_INSTALL_LOCATION_LIB) $(E3_MODULES_INSTALL_LOCATION_LIB_LINK)
# $(SUDO) ln -sf $(E3_MODULES_INSTALL_LOCATION_DBD) $(E3_MODULES_INSTALL_LOCATION_DBD_LINK) # ln -sf $(E3_MODULES_INSTALL_LOCATION_DBD) $(E3_MODULES_INSTALL_LOCATION_DBD_LINK)
# $(SUDO) find $(E3_SITELIBS_PATH) -xtype l -delete # find $(E3_SITELIBS_PATH) -xtype l -delete
$(INSTALLED_EPICS_BASE_ARCHS): $(INSTALLED_EPICS_BASE_ARCHS):
# $(SUDO) mkdir -p $(E3_SITELIBS_PATH)/$@ # mkdir -p $(E3_SITELIBS_PATH)/$@
# $(SUDO) ln -sf $(E3_MODULES_INSTALL_LOCATION)/lib/$@/$(E3_MODULES_LIBNAME) $(E3_SITELIBS_PATH)/$@/$(E3_MODULES_LIBLINKNAME) # ln -sf $(E3_MODULES_INSTALL_LOCATION)/lib/$@/$(E3_MODULES_LIBNAME) $(E3_SITELIBS_PATH)/$@/$(E3_MODULES_LIBLINKNAME)
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
.PHONY: epics-clean epics-distclean .PHONY: epics-clean epics-distclean
epics-clean: epics-clean:
$(SUDOBASH) "$(MAKE) -C $(E3_MODULE_SRC_PATH) clean" $(MAKE) -C $(E3_MODULE_SRC_PATH) clean
epics-distclean: epics-distclean:
$(SUDOBASH) "$(MAKE) -C $(E3_MODULE_SRC_PATH) distclean" $(MAKE) -C $(E3_MODULE_SRC_PATH) distclean
...@@ -5,7 +5,7 @@ modules: ...@@ -5,7 +5,7 @@ modules:
# Always SUDO is needed # Always SUDO is needed
modules_install: modules_install:
sudo -E bash -c "$(MAKE) -C $(E3_KMOD_SRC_PATH) $@" $(SUDO2) "$(MAKE) -C $(E3_KMOD_SRC_PATH) $@"
modules_clean: modules_clean:
$(MAKE) -C $(E3_KMOD_SRC_PATH) clean $(MAKE) -C $(E3_KMOD_SRC_PATH) clean
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment