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

Cleanup docs folder

parent 35cd317b
No related branches found
No related tags found
No related merge requests found
#
Edit configure/RELEASE file in order to use *ONLY* one epics base
```
EPICS_BASE=/testing/epics/base-3.15.5
```
VARIABLES are printed via
```
jhlee@kaffee: e3-require (target_path_test)$ make vars
------------------------------------------------------------
>>>> Current EPICS and E3 Envrionment Variables <<<<
------------------------------------------------------------
E3_MODULES_PATH = /testing/epics/base-3.15.5
E3_MODULE_MAKEFILE = require.Makefile
E3_MODULE_MAKE_CMDS = make -C require-ess -f require.Makefile LIBVERSION="2.5.4" PROJECT="require" EPICS_MODULES="/testing/epics/base-3.15.5" EPICS_LOCATION="/testing/epics/base-3.15.5" BUILDCLASSES="Linux"
E3_MODULE_NAME = require
E3_MODULE_SRC_PATH = require-ess
E3_MODULE_SRC_PATH_INFO = 0
E3_MODULE_VERSION = 2.5.4
E3_REQUIRE_BIN = /testing/epics/base-3.15.5/require/2.5.4/bin
E3_REQUIRE_DB = /testing/epics/base-3.15.5/require/2.5.4/db
E3_REQUIRE_INC = /testing/epics/base-3.15.5/require/2.5.4/include
E3_REQUIRE_LIB = /testing/epics/base-3.15.5/require/2.5.4/lib
E3_REQUIRE_LOCATION = /testing/epics/base-3.15.5/require/2.5.4
E3_REQUIRE_NAME = require
E3_REQUIRE_TOOLS = /testing/epics/base-3.15.5/require/2.5.4/tools
E3_REQUIRE_VERSION = 2.5.4
EPICS_BASE = /testing/epics/base-3.15.5
EPICS_MODULE_NAME = require
EPICS_MODULE_TAG = tags/v2.5.4
SUDO = sudo
SUDOBASH = sudo -E bash -c
SUDO_INFO = 1
```
```
make init
make rebuild
```
Sometimes, configure/CONFIG_MODULE should be edited according to what we want to do..
```
EPICS_MODULE_NAME:=require
EPICS_MODULE_TAG:=target_path_test
E3_MODULE_SRC_PATH:=$(EPICS_MODULE_NAME)-ess
E3_MODULE_MAKEFILE:=$(EPICS_MODULE_NAME).Makefile
E3_MODULE_NAME:=$(EPICS_MODULE_NAME)
E3_MODULE_VERSION:=9.9.9
```
```
make checkout
make rebuild
```
```
jhlee@kaffee: e3-require (target_path_test)$ tree -L 2 /testing/epics/
/testing/epics/
├── [root 4.0K] base-3.15.5
│ ├── [root 4.0K] bin
│ ├── [root 4.0K] configure
│ ├── [root 4.0K] db
│ ├── [root 4.0K] dbd
│ ├── [root 4.0K] html
│ ├── [root 12K] include
│ ├── [root 4.0K] lib
│ ├── [root 4.0K] require
│ ├── [root 4.0K] startup
│ └── [root 4.0K] templates
└── [root 4.0K] base-3.16.1
├── [root 4.0K] bin
├── [root 4.0K] configure
├── [root 4.0K] db
├── [root 4.0K] dbd
├── [root 4.0K] html
├── [root 12K] include
├── [root 4.0K] lib
├── [root 4.0K] require
├── [root 4.0K] startup
└── [root 4.0K] templates
```
```
jhlee@kaffee: e3-require (target_path_test)$ tree -L 2 /testing/epics/base-3.16.1/require/
/testing/epics/base-3.16.1/require/
├── [root 4.0K] 0.0.0
│ ├── [root 4.0K] bin
│ ├── [root 4.0K] db
│ ├── [root 4.0K] dbd
│ ├── [root 4.0K] include
│ ├── [root 4.0K] lib
│ └── [root 4.0K] tools
└── [root 4.0K] 9.9.9
├── [root 4.0K] bin
├── [root 4.0K] db
├── [root 4.0K] dbd
├── [root 4.0K] include
├── [root 4.0K] lib
└── [root 4.0K] tools
14 directories, 0 files
```
# e3-require
This repository works with the following dependent repositories as well. And ESS will use the same environment of PSI, where is the inventor of the dynamic loading EPICS environment. It doesn't cover all requirements which any accelerator or EPICS users want to do, but it has covered the PSI requirements, and it is covering the ESS requirements. Since the current ESS EPICS environment doesn't sync with PSI one, this approach may guide ESS to keep the synchronization, and to minimize any further maintenance issues.
## Rules
* ESS DOES NOT touch or modify any original source from EPICS community developer. If needed, ESS forks their repository into github, and does some patches. And ESS will use the patches one as the repository address before merging the patches to the original repository. This workflow reduces ESS resources in many forms.
* ESS SHOULD NOT develop its own dynamic loading EPICS environment.
## Goals
*Building Environment SHOULD*
* Be transparent to any Linux flavors, then any users can enjoy this environment if they want to. At least, Debian and CentOS MUST be supported.
* Minimize to use additional scripts, i.e., Python, which made some troubles on early environment building system.
* Use the restricted and manual version control to resolve many troubles in terms of modules version dependency
* Use the one global environmental variables to allow us to track which systems are installed
* Use the transparent EPICS environment in order to switch version between require versions, and to enable or disable the E3 environment
* Provide a way to setup the Generic EPICS BASE environment also.
## Dependent Repositories
* e3-base https://github.com/icshwi/e3-base
* e3-env https://github.com/icshwi/e3-env
## Setup
* Load all git submodules
```
$ make init
```
* Print pre-defined environments. Note that this should be synced with e3-base one.
```
$ make env
```
If it is not the same as e3-base one, please modify e3-env/e3-env file according to e3-base one.
One can check it again.
```
$ make env
```
* Build e3-require
```
$ make build
```
* Install e3-require
```
make install
```
## Execute iocsh
* Once one installs e3-require, one can execute the simple iocsh for testing.
```
e3-require (master)$ . e3-env/setE3Env.bash
e3-require (master)$ iocsh.bash
#
#
# Start at "2017-W49-Dec04-1805-28-CET"
#
# Version information:
# European Spallation Source ERIC : iocsh.bash (v0.2-0d11bf5.PID-13637)
#
# HOSTDISPLAY="kaffee:0"
# WINDOWID="157286415"
# PWD="/home/jhlee/e3/e3-require"
# USER="jhlee"
# LOGNAME="jhlee"
# EPICS_HOST_ARCH="linux-x86_64"
# EPICS_BASE="/epics/bases/base-3.15.5"
# EPICS_LOCATION="/epics/bases"
# EPICS="/epics/bases"
# EPICS_MODULES="/epics/modules"
# REQUIRE="require"
# REQUIRE_VERSION="2.5.4"
# REQUIRE_BIN="/epics/modules/require/2.5.4/bin"
# REQUIRE_LIB="/epics/modules/require/2.5.4/R3.15.5/lib"
# REQUIRE_DBD="/epics/modules/require/2.5.4/R3.15.5/dbd"
# EPICS_CA_AUTO_ADDR_LIST="yes"
# EPICS_CA_ADDR_LIST="194.47.240.7 10.0.2.15 10.4.8.11 10.4.8.12 10.4.8.13 10.4.8.14"
# PATH="/epics/modules/require/2.5.4/bin:/epics/bases/base-3.15.5/bin/linux-x86_64:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/home/jhlee/bin:/opt/etherlab/bin:/opt/etherlab/sbin:/opt/ess/opcUa/bin"
# LD_LIBRARY_PATH="/epics/bases/base-3.15.5/lib/linux-x86_64:/epics/modules/require/2.5.4/R3.15.5/lib/linux-x86_64:/usr/local/lib:/home/jhlee/lib:/opt/etherlab/lib:/opt/ess/opcUa/lib"
#
# Please Use Version and other environment variables
# in order to report or debug this shell
#
# Loading the mandatory require module ...
#
dlload /epics/modules/require/2.5.4/R3.15.5/lib/linux-x86_64/librequire.so
dbLoadDatabase /epics/modules/require/2.5.4/R3.15.5/dbd/require.dbd
require_registerRecordDeviceDriver
Loading module info records for require
#
#
epicsEnvSet IOCSH_PS1 "0d11bf5.kaffee.13650 > "
epicsEnvShow T_A
T_A is not an environment variable.
epicsEnvShow EPICS_HOST_ARCH
EPICS_HOST_ARCH=linux-x86_64
var requireDebug 1
0d11bf5.kaffee.13650 >
```
* By default, iocInit is removed. Thus, one should call iocInit in their startup script files.
```
0d11bf5.kaffee.13650 > iocInit
Starting iocInit
############################################################################
## EPICS R3.15.5-EEE-3.15.5-patch
## EPICS Base built Nov 28 2017
############################################################################
require: fillModuleListRecord
require: (null):MODULES[0] = "require"
require: (null):VERSIONS[0] = "2.5.4"
require: (null):MOD_VER+="require 2.5.4"
iocRun: All initialization complete
```
## TODO
## Useful commands
In case that one would like to push individual files in require-ess, disenable ignore in submodule require-ess, and carefully following the steps:
```
e3-require (target_path_test)$ cd require-ess/
require-ess ((v2.5.4))$ git st
HEAD detached at 34c293d
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: App/tools/driver.makefile
require-ess ((v2.5.4))$ git diff App/tools/driver.makefile
require-ess ((v2.5.4))$ git add App/tools/driver.makefile
require-ess ((v2.5.4))$ git commit -m "remove R_base_VERSION in module path"
[detached HEAD d7cf410] remove R_base_VERSION in module path
1 file changed, 17 insertions(+), 15 deletions(-)
require-ess ((d7cf410...))$ git push origin HEAD:master
Counting objects: 5, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 668 bytes | 0 bytes/s, done.
Total 5 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/icshwi/require-ess
34c293d..d7cf410 HEAD -> master
jhlee@kaffee: require-ess ((d7cf410...))$ git st
HEAD detached from 34c293d
```
Assume that individual files were changed before doing that.
# Version 3.3.1
## Finished
* Remove `loadIocsh`, which simply duplicates `runScript` for some reason. (Done by Krisztian f02d2c88ffd802f78fa61795486d1bd5ed13e96a)
* Fix the metadata for the wrapper e.g. the url should not fetch origin, but the first remote. FIXED 57dc892bfb29c8ddad82baf2d2f287a766800dca
* Not sure why the description fails for the wrapper, however. Aha: the ifeq in CONFIG_E3_MAKEFILE should compare $$? not $?. FIXED 57dc892bfb29c8ddad82baf2d2f287a766800dca
* `make build` followed by `make cellinstall` should not do a rebuild. This is done because
`INSTBASE` changes, and for `make cellinstall` we should ignore that. FIXED (require/2f2016179004eae6811f6f3a5567a0db1fd8b81e)
* Allow SKIP_TEST FIXED 3590a3a8ced658251a333c59396cdbe836b418a4
* `make patch` does not respect build numbers: FIXED 7388f41d19230141e5c54ed2130109d30e52514c
* Fix the install permissions for cellMods FIXED aa4749f887ed92fb90f577326c9e756fadbc081b
* `cellinstall` should write the version of base/require! b9168c9a3479bb4efe3df1e7bbfdb667903aa5ab
* require gets its version from CONFIG_MODULE, so why is it specified in RELEASE? This is confusing. ac9ec7b6e73dc5968b5500f8daf93155fb4699fe
* Remove `rm -rf cellMods` from `celluninstall` target; this is not a great idea if we are using multiple modules installed in the same place. 598cf611260fb40780db204cdc814f7c3a0e305e
* Go through and figure out if we should remove all of the `sudo` usage. 922905e247d6f6ac309b0909f994576f9fedc2b5
## Not done
* Remove more vxWorks/3.x code in e.g. runScript.c and expr.c
* Also, we need to be able to test once it is installed. This would fit with the iterating thing that I had made.
* The auto-load build number thing doesn't seem to work correctly with build descriptors
* Figure out how to fix the fact that asyn, on build, installs devEpics.dbd *** IMPORTANT <=== Needs a patch on EPICS base
* `make cellinstall` does not install vendor libraries anywhere.
* Moreover, vlibs are installed with no reference to `$(T_A)`, which isn't a good idea! One possible idea:
we could move the `vlibs` target into driver.makefile instead of letting it reside outside in the
module makefile. This needs to be discussed.
* module_DB vs module_DIR: DIR includes trailing slash, DB does not. Fix?
* Should there be an error message if non-existent versions of e.g. sequencer are specified?
* base/require version should be added to shared library object; this is needed for cellinstall but should
more generally be used on startup to check that the library was compiled with the running version of base/require.
driver.makefile OPTIONS (M_OPTINS)
EPICS_MODULES
* requrie : $(BASE_INSTALL_LOCATION)
/testing/epics/base-3.15.5/
```
/testing/epics/base-3.15.5# tree -L 1
.
├── bin
├── configure
├── db
├── dbd
├── html
├── include
├── lib
├── require
├── startup
└── templates
```
* siteMods :
$(REQUIRE_PATH)/siteMods
/testing/epics/base-3.15.5/require/2.5.4/siteMods
* siteApps
$(REQUIRE_PATH)/siteApps
/testing/epics/base-3.15.5/require/2.5.4/siteApps
* siteLibs :
$(REQUIRE_PATH)/siteLibs
/testing/epics/base-3.15.5/require/2.5.4/siteLibs
* siteSthEls:
$(REQUIRE_PATH)/siteSthEls
/testing/epics/base-3.15.5/require/2.5.4/siteSthEls
Tuesday, December 5 15:50:42 CET 2017, jhlee
driver.makefile
1) Remove base_VERSION directory below modules
uninstall.%:
$(RMDIR) $(wildcard ${MODULE_LOCATION}/R*${@:uninstall.%=%}*)
2 ) Change
From
${MODULE_LOCATION}/R${EPICSVERSION}/lib/${T_A}
To
${MODULE_LOCATION}/lib/${T_A}
How to remove e3-env
git submodule deinit -f -- e3-env
rm -rf .git/modules/e3-env
git rm -f e3-env
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