Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • e3/wrappers/e3-require
  • waynelewis/e3-require
  • krisztianloki/e3-require
  • timokorhonen/e3-require
  • juntongliu/e3-require
  • roryclarke/e3-require
  • alfiorizzo/e3-require
  • lucasmagalhaes/e3-require
  • lucas-module-testgroup/e3-require
  • grzegorzkowalski/e3-require
  • anderslindh1/e3-require
11 results
Show changes
Commits on Source (285)
Showing with 193 additions and 176 deletions
[flake8]
ignore = E501, E203, W503
# E501, E203: black
# W503: PEP8
......@@ -13,9 +13,11 @@ core.*
.#*
\#*
*.local
e3.cfg
tools/ess-env.conf
.vscode
cellMods
*.log
__pycache__
require-ess/require.Makefile
require-ess/Db/*.db
require-ess/Db/*.d
\ No newline at end of file
require-ess/Db/*.d
---
stages:
- check
- build
- test
default:
tags:
- docker
image: registry.esss.lu.se/ics-docker/centos-e3:$E3_CI_DOCKER_VERSION
### stage: check
run pre-commit:
stage: check
image: registry.esss.lu.se/ics-docker/pre-commit:latest
script:
- pre-commit run --all-files
shellcheck:
image: pipelinecomponents/shellcheck:latest
stage: check
before_script:
- shellcheck --version
script:
# anything ending on .*sh, should be shell script
- |
find . -name .git -type d -prune -o -type f -name \*.\*sh -print0 |
xargs -0 -P $(nproc) -r -n1 shellcheck --format=gcc -x
# magic, any file with a valid shebang should be scanned aswell
- |
find . -name .git -type d -prune -o -type f -regex '.*/[^.]*$' -print0 |
xargs -0 -P $(nproc) -r -n1 sh -c 'FILE="$0"; if head -n1 "$FILE" |grep -q "^#\\! \?/.\+\(ba|d|k\)\?sh" ; then shellcheck "$FILE" --format=gcc -x ; else /bin/true ; fi '
shfmt:
image: mvdan/shfmt:v3.2.0-alpine
stage: check
before_script:
- shfmt -version
script:
- shfmt -i 2 -ci -d . # 2 spaces indent, indent switch-case statements, show diff (don't apply change)
build require:
stage: build
before_script:
- curl -L -o epics.tar.gz https://artifactory.esss.lu.se/artifactory/e3/epics-base-$E3_CI_BASE_VERSION.tar.gz
- tar -zxvf epics.tar.gz
- export BASE_PATH=$(ls -d $(pwd)/epics/base-*)
- echo "EPICS_BASE:=${BASE_PATH}" >> configure/RELEASE.local
- echo "E3_REQUIRE_VERSION:=${CI_COMMIT_SHORT_SHA}" >> configure/CONFIG_MODULE.local
- chmod +w "${BASE_PATH}"/configure/CONFIG_SITE
- echo 'INSTALL_LOCATION:=$(TOP)' >> "${BASE_PATH}"/configure/CONFIG_SITE
- export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${BASE_PATH}/lib/linux-x86_64"
- make vars
script:
- make build
- make install
artifacts:
paths:
- epics
- configure/*.local
test require:
stage: test
before_script:
- source $(pwd)/epics/base-*/require/*/bin/setE3Env.bash
script:
- make test
needs:
- build require
repos:
- repo: https://github.com/ambv/black
rev: 21.12b0
hooks:
- id: black
- repo: https://gitlab.com/PyCQA/flake8
rev: 3.9.2
hooks:
- id: flake8
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.0.1
hooks:
- id: end-of-file-fixer
- id: trailing-whitespace
- repo: https://github.com/timothycrosley/isort
rev: 5.10.1
hooks:
- id: isort
args: ["--profile", "black"]
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v13.0.0
hooks:
- id: clang-format
......@@ -4,6 +4,50 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### New Features
* Block module loading after iocInit has been invoked.
* Arguments have been added to `iocsh.bash` to enable user to pass any debugger options to GDB and Valgrind.
* Autocompletion for `iocsh.bash` has been added
* Removed `iocsh_gdb.bash` and `iocsh_nice.bash`, both of whose functionality can be called via `iocsh.bash -dg` and `iocsh.bash -n`, respectively.
* Patch file location has been change from `patch/Site/$VERSION-description.p0.patch` to `patch/Site/$VERSION/description.p0.patch`
* Require will automatically build `.template` and `.substitutions` files into the common build directory instead of into the source Db path
* Rudimentary testing has been added:
* * Tests that the correct version is loaded
* * Tests that elementary patching/building works as expected
* Added consistency check between e3 environment variables and path to `iocsh.bash`. `iocsh.bash` will abort if these are not consistent.
* Add e3 version infomation to the shell prompt
* Add option to allow override of automatic addition of `iocInit` to generated startup script
### Bugfixes
* `iocsh.bash --help` (and variants) no longer loads tries to load `env.sh`.
* `make uninstall` no longer tries to remove from global `siteLibs` directory.
* `make build` will fail if any of the target architectures fail, not just the last one.
* Fixed issue where git passwords would be displayed in plaintext in metadata file
* Fixed issue where `LD_LIBRARY_PATH` could keep old `siteLibs` path around
* Removed duplicated entries from generated `.dep` files
* Removed `dev` targets from modules that function in "local source mode"
* Fixed issue where `.hpp` files were not installed correctly with `KEEP_HEADER_SUBDIRS`
* Missing `REQUIRED` dependencies now cause the build to fail instead of providing a warning
* Fixed issue where consecutive builds might not track updated dependencies
* Fixed an issue related to buffering of data being written to a shared filesystem which produced garbled `.dep` files
### Other changes
* Rename `iocsh.bash` to `iocsh`
* Removed `<module>_TEMPLATES` in favour of `<module>_DB`
* Removed unnecessary code from `make init`.
* removed `e3.cfg`, `ess-env.conf` and `DEFINES_REQUIRE` files and associated codes in `RULES_REQUIRE`, `setE3Env.bash` and `.gitignore`.
* removed legacy code from setE3Env.bash
* Removed usage of `env.sh` - now there is a check only for seeing if the environment variable `$IOCNAME` is set
* Fix typos in `iocsh_functions.bash` comments
* Rearrange usage to match order of options in code
* Add information about realtime option to usage
* Cleaned up the output of `make vars` and `make devvars`
* Merged together `configure/E3` and `configure/MODULES`
* Removed `siteLibs` and `siteApps` directories
* Removed references to EPICS Base v3
## [3.4.1]
### Bugfixes
......@@ -74,7 +118,7 @@ A second major change (mostly via bugfixes) is that the local install command, `
the old -loc is still supported, but will be deprecated in a future release.
* Added a `prebuild` target that runs before build so module developers can run specific code before the build process.
* A module developer can now install dbd files separate from the module dbd file by using `DBD_INSTALLS += file.dbd`.
### Bugfixes
* Ensures that lowercase module names are enforced consistently
* Vendor libraries are only installed at install time, not at build time
......@@ -108,7 +152,8 @@ of course pin a specific module version. If they do not, then the highest numeri
startup script
[Unreleased]: https://gitlab.esss.lu.se/e3/e3-require/-/compare/3.4.0...master
[Unreleased]: https://gitlab.esss.lu.se/e3/e3-require/-/compare/3.4.1...master
[3.4.1]: https://gitlab.esss.lu.se/e3/e3-require/-/compare/3.4.0...3.4.1
[3.4.0]: https://gitlab.esss.lu.se/e3/e3-require/-/compare/3.3.0...3.4.0
[3.3.0]: https://gitlab.esss.lu.se/e3/e3-require/-/compare/3.2.0...3.3.0
[3.2.0]: https://gitlab.esss.lu.se/e3/e3-require/-/tree/3.2.0
......@@ -30,4 +30,3 @@ TOP:=$(CURDIR)
include $(TOP)/configure/CONFIG
include $(TOP)/configure/RULES
......@@ -7,7 +7,7 @@ any longer.
At its heart, `require` performs:
* Dynamic loading of EPICS modules and rudimentary dependency resolution
* Loading of IOCs using a custom startup script calling `softIocPVA`
* Building of EPICS modules into standardized packages
* Building of EPICS modules into standardized e3 packages
For more documentation on this, please see [e3.pages](http://e3.pages.esss.lu.se/design/2_require.html).
......@@ -26,7 +26,7 @@ The main parts that we have taken from PSI `require` are `require.c` and `driver
load modules dynamically at run-time, and which run the custom build process. However, both of these have been
modified significantly for the purposes of e3.
Furthermore, we have added the custom startup script `iocsh.bash` which sets up the IOC's environment before
Furthermore, we have added the custom startup script `iocsh` which sets up the IOC's environment before
running `softIocPVA` from EPICS base.
## Building `require`
......@@ -41,7 +41,7 @@ $ make install
To test your build, run
```bash
$ source ${EPICS_BASE}/require/${E3_REQUIRE_VERSION}/bin/setE3Env.bash
$ iocsh.bash
$ iocsh
```
which should start up an IOC and load require.
Special Modes for ESS EPICS Environment (e3)
===
The Special modes are optional. However it will give users to explore more posssibilities while running IOC in any circumstances.
## Cell Mode
When a user faces the difficulty to work within entire work-flow in terms of the tighted-controlled deployment or within limited RW permissions. Sometimes, it is very difficult to compile and run any IOC appplication within the ESS EPICS environment. Thus, the Cell Mode is introduced.
One should define `E3_CELL_PATH`, where one can has the RW permission. The default is `$(TOP)/cellMods` because the e3 has the assumption that one can download the e3-modules or e3-application within a writable path. This variable can be overried with `CONFIG_CELL.local` or `configure/CONFIG_CELL.local` as the same as other `CONFIG_MODULE` or `RELEASE` files. The different commands are shown in
```
make cellinstall
make celluninstall
make cellvars
```
Once one install an application with the cell mode, one can run an IOC via
```
iocsh.bash -l ${E3_CELL_PATH}
```
## Real-Time Mode
The e3 will handle all modules and applications as a dynamic libraries, which we have to consider when all symbols are resolved. We put this time at startup moment. Although it can slow down any IOC initialization, it is only way to avoid non-deterministic latencies during IOC execution [1].
Here we set the `LD_BIND_NOW=1` before we are going into actually IOC application, and run a IOC application with a scheduler policy of FIFO and a prority of 1. One needs the proper permission to execute it `chrt`, mostly `realtime` group should be created and a user should be in that group.
* Command
```
iocsh.bash -rt
```
## ESS Site System Application Mode
ESS is planing to deploy its through site-wide NFS shared directories. Due to long-term maintenance issues and minimal footprints on e3 application, we also introduce the SAMode (System Application Mode). It only is valid for the site-wide deployment system, not for any local installation.
Technically, e3 uses `E3_SITEAPPS_PATH` to install any system specific applications. Without any modification, the default path is defined as follows:
```
E3_SITEAPPS_PATH= /epics/base-3.15.6/require/3.1.0/siteApps
```
However, for the system or subsystem deployment procedure, we will replace them system or subsystem specific shared folders, for example, such as
* ICS : `/siteApps/ics`
* Accelerator : `/siteApps/acc`
* Conventional Facility : `/siteApps/cf`
* Target : `/siteApps/tgt`
* Experiments : `/siteApps/exp` and `/siteApps/exp{1..16}`
These parameter is define in each `configure/CONFIG_SITE_SYSTEMAPPS` as `E3_MODULES_PATH:=` and can be overridden via `configure/CONFIG_SITE_SYSTEMAPPS.local` also during the static (configure, build, and install) procedure.
When an IOC is running, each IOC should know where they are belong into through `IOCID`, and will set `SITE_SYSTEMAPPS_PATH` before doing `source setE3Env.bash` and `iocsh.bash` or run `iocsh.bash` directly.
* Static
```
$ e3-myexample (master)$ echo "E3_MODULES_PATH=/siteApps/icsApps" > configure/CONFIG_SITE_SYSTEMAPPS.local
$ e3-myexample (master)$ make init
$ e3-myexample (master)$ make build
$ e3-myexample (master)$ sudo make install
$ e3-myexample (master)$ make existent
/siteApps/icsApps/myexample
└── master
├── db
├── dbd
├── include
└── lib
```
* Running
```
export SITE_SYSTEMAPPS_PATH=/siteApps/icsApps/
source setE3Env.bash
echo $EPICS_DRIVER_PATH
/home/jhlee/e3-test/base-3.15.6/require/3.1.0/siteMods:/home/jhlee/e3-test/base-3.15.6/require/3.1.0/siteApps:/siteApps/icsApps/
iocsh.bash -r myexample,master
....
require myexample,master
Module myexample version master found in /siteApps/icsApps//myexample/master/
Module myexample depends on sequencer 2.2.6
Module sequencer version 2.2.6 found in /home/jhlee/e3-test/base-3.15.6/require/3.1.0/siteMods/sequencer/2.2.6/
Loading library /home/jhlee/e3-test/base-3.15.6/require/3.1.0/siteMods/sequencer/2.2.6/lib/linux-x86_64/libsequencer.so
Loaded sequencer version 2.2.6
sequencer has no dbd file
Loading module info records for sequencer
Loading library /siteApps/icsApps//myexample/master/lib/linux-x86_64/libmyexample.so
Loaded myexample version master
Loading dbd file /siteApps/icsApps//myexample/master/dbd/myexample.dbd
Calling function myexample_registerRecordDeviceDriver
Loading module info records for myexample
# Set the IOC Prompt String One
epicsEnvSet IOCSH_PS1 "c72f6a5.kaffee.31345 > "
```
For the deployment system, we have to define each `E3_MODULES_PATH` differently within system specific application, it will be done with the global `CONFIG_SITE_SYSTEMAPPS.local`. And each ioc should know `SITE_SYSTEMAPPS_PATH` in order to match `E3_MODULES_PATH` before it starts.
* `IOCID` defines a system group
* Before the systemd service, the additional systemd service check "mountable" path, which will be used in `SITE_SYSTEMAPPS_PATH`, and do `export $SITE_SYSTEMAPPS_PATH` globally.
## References
[1] Original paragraph from Red Hat Enterprise Linux for Real Time 7 Tuning Guide. 2018-04-30 / CC BY-SA 3.0 https://creativecommons.org/licenses/by-sa/3.0/
require iocStats,617a4fd
var runScriptDebug 1
var requireDebug 1
require iocStats,617a4fd
loadIocsh("iocStats.iocsh", "IOCNAME=TEST1:")
iocInit()
......@@ -18,15 +18,23 @@ include $(TOP)/configure/CONFIG_MODULE
endif
E3_MODULES_PATH:=$(EPICS_BASE)
REQUIRE_CONFIG:=$(TOP)/configure/E3
include $(EPICS_BASE)/configure/CONFIG_BASE_VERSION
include $(TOP)/configure/E3/CONFIG_REQUIRE
include $(TOP)/configure/E3/CONFIG_E3_PATH
include $(TOP)/configure/E3/CONFIG_E3_MAKEFILE
include $(TOP)/configure/E3/CONFIG_EPICS
include $(TOP)/configure/E3/CONFIG_EXPORT
include $(REQUIRE_CONFIG)/CONFIG_REQUIRE
include $(REQUIRE_CONFIG)/CONFIG_SHELL
include $(REQUIRE_CONFIG)/CONFIG_E3_PATH
include $(REQUIRE_CONFIG)/CONFIG_E3_MAKEFILE
include $(REQUIRE_CONFIG)/CONFIG_TEST
include $(REQUIRE_CONFIG)/CONFIG_EPICS
include $(REQUIRE_CONFIG)/CONFIG_EXPORT
# Exclude generated EPICS base variables from make vars report.
VARS_EXCLUDES+=BASE_3_14
VARS_EXCLUDES+=BASE_3_15
VARS_EXCLUDES+=BASE_3_16
VARS_EXCLUDES+=BASE_7_0
VARS_EXCLUDES+=EPICS_VERSION
VARS_EXCLUDES+=EPICS_REVISION
VARS_EXCLUDES+=EPICS_MODIFICATION
......@@ -35,4 +43,3 @@ VARS_EXCLUDES+=EPICS_DEV_SNAPSHOT
VARS_EXCLUDES+=EPICS_PATCH_VSTRING
VARS_EXCLUDES+=EPICS_SITE_VSTRING
VARS_EXCLUDES+=COMMIT_DATE
......@@ -19,4 +19,3 @@ E3_MODULE_VERSION=$(E3_REQUIRE_VERSION)
-include $(TOP)/../../REQUIRE_CONFIG_MODULE.local
-include $(TOP)/../REQUIRE_CONFIG_MODULE.local
-include $(TOP)/configure/CONFIG_MODULE.local
EPICS_MODULE_TAG:=master
#
EPICS_MODULE_NAME:=${E3_REQUIRE_NAME}
#
E3_MODULE_SRC_PATH:=$(EPICS_MODULE_NAME)
E3_MODULE_MAKEFILE:=$(EPICS_MODULE_NAME).Makefile
E3_MODULE_NAME:=$(EPICS_MODULE_NAME)
E3_MODULE_VERSION:=3.3.0
#
#
#
E3_MODULE_DEV_GITURL:="https://github.com/icshwi/require-ess"
# The definitions shown below can also be placed in an untracked CONFIG_MODULE.local
-include $(TOP)/../../REQUIRE_CONFIG_MODULE_DEV.local
-include $(TOP)/../REQUIRE_CONFIG_MODULE_DEV.local
-include $(TOP)/configure/CONFIG_MODULE_DEV.local
# -*- mode: Makefile;-*-
# Update the module version (for numeric versions) with a build number of 0 if none is specified
E3_MODULE_VERSION_ORIG:=$(E3_MODULE_VERSION)
E3_MODULE_VERSION:=$(E3_MODULE_VERSION)$(shell [[ "$(E3_MODULE_VERSION)" =~ ^[0-9]+\.[0-9]+\.[0-9]+$$ ]] && echo +0)
E3_MODULES_PATH?=$(E3_SITEMODS_PATH)
include $(EPICS_BASE)/configure/CONFIG_BASE_VERSION
include $(REQUIRE_CONFIG)/CONFIG_REQUIRE
include $(REQUIRE_CONFIG)/CONFIG_SHELL
......@@ -15,6 +16,10 @@ include $(REQUIRE_CONFIG)/CONFIG_EPICS
include $(REQUIRE_CONFIG)/CONFIG_DKMS
include $(REQUIRE_CONFIG)/CONFIG_EXPORT
VARS_EXCLUDES+=BASE_3_14
VARS_EXCLUDES+=BASE_3_15
VARS_EXCLUDES+=BASE_3_16
VARS_EXCLUDES+=BASE_7_0
VARS_EXCLUDES+=EPICS_VERSION
VARS_EXCLUDES+=EPICS_REVISION
VARS_EXCLUDES+=EPICS_MODIFICATION
......@@ -23,4 +28,3 @@ VARS_EXCLUDES+=EPICS_DEV_SNAPSHOT
VARS_EXCLUDES+=EPICS_PATCH_VSTRING
VARS_EXCLUDES+=EPICS_SITE_VSTRING
VARS_EXCLUDES+=COMMIT_DATE
......@@ -9,7 +9,7 @@ E3_CELL_PATH=$(TOP)/cellMods
##
## Useful if one would like to install many different modules in
## a specific directory for massive debugging purpose
##
##
-include $(TOP)/../CONFIG_CELL.local
-include $(TOP)/configure/CONFIG_CELL.local
E3_MODULES_PATH=$(E3_CELL_PATH)/$(notdir $(EPICS_BASE))/require-$(E3_REQUIRE_VERSION)
......
# Pass necessary driver.makefile variables through makefile options
#
# Here, E3_MODULES_PATH is the same as E3_REQUIRE_LOCATION
E3_MODULES_PATH:=$(EPICS_BASE)
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS := -C $(E3_MODULE_SRC_PATH)
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += -f $(E3_MODULE_MAKEFILE)
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += LIBVERSION="$(E3_MODULE_VERSION)"
......@@ -12,15 +9,13 @@ E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += EPICS_MODULES="$(E3_MODULES_PATH)"
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += EPICS_LOCATION="$(EPICS_BASE)"
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += BUILDCLASSES="Linux"
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += E3_SITEMODS_PATH="$(E3_SITEMODS_PATH)"
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += E3_SITEAPPS_PATH="$(E3_SITEAPPS_PATH)"
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += E3_SITELIBS_PATH="$(E3_SITELIBS_PATH)"
ifeq ($(shell git status > /dev/null 2>&1; echo $$?),0)
GIT_REMOTE_NAME := $(shell git remote | head -n 1)
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += $(E3_MODULE_NAME)_E3_GIT_DESC="$(shell git describe --tags 2> /dev/null || git rev-parse HEAD 2> /dev/null || echo 'Not a git repository')"
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += $(E3_MODULE_NAME)_E3_GIT_STATUS="[ $(shell git status --porcelain | sed 's/^/\\\\\\\"/' | sed 's/$$/\\\\\\\", /')]"
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += $(E3_MODULE_NAME)_E3_GIT_URL="$(shell git config --get remote.$(GIT_REMOTE_NAME).url 2> /dev/null || echo '')"
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += $(E3_MODULE_NAME)_E3_GIT_URL="$(shell git config --get remote.$(GIT_REMOTE_NAME).url 2> /dev/null | sed 's%^https://[^@]*@%https://%')"
else
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += $(E3_MODULE_NAME)_E3_GIT_DESC=
E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += $(E3_MODULE_NAME)_E3_GIT_STATUS=
......@@ -34,4 +29,4 @@ E3_MODULE_MAKE_CMDS:=make $(E3_REQUIRE_MAKEFILE_INPUT_OPTIONS)
## the following variables to display
VARS_EXCLUDES+=E3_REQUIRE_MAKEFILE_INPUT_OPTIONS
VARS_EXCLUDES+=GIT_REMOTE_NAME
E3_SITEMODS_PATH:=$(E3_REQUIRE_LOCATION)/siteMods
E3_SITELIBS_PATH:=$(E3_REQUIRE_LOCATION)/siteLibs
E3_SITEAPPS_PATH:=$(E3_REQUIRE_LOCATION)/siteApps
E3_MODULES_INSTALL_LOCATION:=$(E3_MODULES_PATH)/$(E3_MODULE_NAME)/$(E3_MODULE_VERSION)
E3_MODULES_INSTALL_LOCATION_INC:=$(E3_MODULES_INSTALL_LOCATION)/include
E3_MODULES_INSTALL_LOCATION_DB:=$(E3_MODULES_INSTALL_LOCATION)/db
E3_MODULES_INSTALL_LOCATION_BIN:=$(E3_MODULES_INSTALL_LOCATION)/bin
E3_MODULES_INSTALL_LOCATION_LIB:=$(E3_MODULES_INSTALL_LOCATION)/lib
EXPORT_VARS+=E3_MODULES_INSTALL_LOCATION_LIB
......@@ -42,7 +42,11 @@ export M_ADSUPPORT
export M_ADCORE
export M_OPCUA
### Exclude the following variables to display
## This is needed since the target "epics" (in configure/RULES_MODULE in most modules)
## uses SUDOBASH to run the make process
SUDOBASH := bash -c
### Exclude the following variables to display
VARS_EXCLUDES+=COMMUNITY_EPICS_MODULES
VARS_EXCLUDES+=M_AUTOSAVE
VARS_EXCLUDES+=M_DEVLIB2
......@@ -64,3 +68,4 @@ VARS_EXCLUDES+=M_ADSUPPORT
VARS_EXCLUDES+=M_ADCORE
VARS_EXCLUDES+=M_OPCUA
VARS_EXCLUDES+=SUDOBASH
# Variables should be transferred to module_name.makefile
EPICS_HOST_ARCH:=$(shell $(EPICS_BASE)/startup/EpicsHostArch.pl 2> /dev/null)
# In near future, BASE may drop "startup" directory, so
# Note that the following line is not the same as e3-base, CONFIG_EXPORT
ifeq ($(strip $(EPICS_HOST_ARCH)),)
EPICS_HOST_ARCH:=$(shell perl $(EPICS_BASE)/lib/perl/EpicsHostArch.pl 2> /dev/null)
endif
MSI:=$(EPICS_BASE)/bin/$(EPICS_HOST_ARCH)/msi
EXPORT_VARS+=EPICS_HOST_ARCH
EXPORT_VARS+=EPICS_BASE
EXPORT_VARS+=MSI
EXPORT_VARS+=E3_MODULE_NAME
EXPORT_VARS+=E3_MODULE_VERSION
EXPORT_VARS+=E3_SITEMODS_PATH
EXPORT_VARS+=E3_SITEAPPS_PATH
EXPORT_VARS+=E3_SITELIBS_PATH
EXPORT_VARS+=$(filter E3_REQUIRE_%,$(.VARIABLES))
EXPORT_VARS+=QUIET
EXPORT_VARS+=$(filter %_DEP_VERSION,$(.VARIABLES))
EXPORT_VARS+=$(filter WITH_%,$(.VARIABLES))
EXPORT_VARS+=$(filter %_EXTERNAL,$(.VARIABLES))
export_version=$(eval export $1)
$(eval $(foreach v,$(EXPORT_VARS),$(call export_version,$v)))
......