Load setup files instead of sourcing them

- needed for same setup files to work on Windows
  (where PowerShell is used instead of bash)
- removes ugly bashism to allow overriding from .travis.yml
- adds a proper (yet small) syntax
Also adds tests for the new syntax and updates the README.
This commit is contained in:
Ralph Lange
2019-12-10 14:30:07 +01:00
parent 1d4d6cc617
commit 82d962639b
9 changed files with 71 additions and 20 deletions

View File

@@ -71,15 +71,15 @@ example.
E.g., a setup file `stable.set` specifying
```
MODULES="sncseq asyn"
MODULES=sncseq asyn
BASE=${BASE:-R3.15.6}
ASYN=${ASYN:-R4-34}
SNCSEQ=${SNCSEQ:-R2-2-7}
BASE=R3.15.6
ASYN=R4-34
SNCSEQ=R2-2-7
```
will compile against the EPICS Base release 3.15.6, the Sequencer
release 2.2.7 and release 4.34 of asyn.
(The `${VAR:-default}` form allows overriding from `.travis.yml`.)
(Any settings can be overridden from `.travis.yml`.)
4. Create a configuration for the CI service by copying one of
the examples provided in the service specific subdirectory
@@ -106,14 +106,19 @@ latest released versions and one for the development branches.
## Setup File Syntax
Setup files are sourced by the bash scripts. They are found by searching
Setup files are loaded by the bash scripts. They are found by searching
the locations in `SETUP_PATH` (space or colon separated list of directories,
relative to your module's root directory).
Setup files can include other setup files by calling `source_set <setup>`
Setup files can include other setup files by calling `include <setup>`
(omitting the `.set` extension of the setup file). The configured
`SETUP_PATH` is searched for the include.
Any `VAR=value` setting of a variable is only executed if `VAR` is unset or
empty. That way any settings can be overridden by settings in `.travis.yml`.
Empty lines or lines starting with `#` are ignored.
`MODULES="<list of names>"` should list the dependencies (software modules)
by using their well-known slugs, separated by spaces.
EPICS Base (slug: `base`) will always be a dependency and will be added and
@@ -132,8 +137,6 @@ be a *tag* name (in that case the module is checked out into Travis' cache
system) or a *branch* name (in that case the module is always checked out
and recompiled as part of the job). [default: `master`]
(Use the `${VAR:-default}` form to allow overriding from `.travis.yml`.)
`FOO_REPONAME=<name>` Set the name of the remote repository as `<name>.git`.
[default is the slug in lower case: `foo`]