From c3597fd901b8be94f255eb0ddb6a478c85052c7c Mon Sep 17 00:00:00 2001 From: Ralph Lange Date: Thu, 24 Oct 2019 15:05:40 +0200 Subject: [PATCH] Update documentation --- README.md | 101 ++++++++++++++++++++++++++++++++++++++++++++--- travis/README.md | 34 ++++++++-------- 2 files changed, 114 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index b062b03..99e4f1b 100644 --- a/README.md +++ b/README.md @@ -27,9 +27,31 @@ module). Also, a test suite might not show the same level of quality as an example. +## Features + + - Compile against different branches or releases of EPICS Base and + additional dependencies (modules like asyn, std, etc.). + + - Define settings files that declare sets of dependencies + with their versions and locations. + + - Define hook scripts for any dependency. + Hooks are run on the dependency module before it is compiled, so + the module can be patched or further configured. + + - Define static or shared builds (executables, libraries). + + - Run tests (using the EPICS unit test suite). + ## Supported CI Services - - Travis-CI +### Travis-CI + - Use different compilers (gcc, clang) + - Use different gcc versions + - Cross-compile for Windows 32bit and 64bit using MinGW and WINE + - Cross-compile for RTEMS 4.9 and 4.10 + - Compile on MacOS + - Released versions of dependencies are cached (for faster builds) ### How to Use the CI-Scripts @@ -41,20 +63,89 @@ example. ``` $ git submodule add https://github.com/epics-base/ci-scripts .ci ``` + 3. Create settings files for different sets of dependencies you + want to compile against. E.g., a settings file `foo.set` + specifying + ``` + MODULES="sncseq asyn" - 3. Create a configuration for the CI service by copying one of + BASE=R3.15.6 + ASYN=master + SNCSEQ=R2-2-7 + ``` + will compile against the EPICS Base release 3.15.6, the Sequencer + release 2.2.7 and the latest commit on the `master` branch of asyn. + + 4. Create a configuration for the CI service by copying one of the examples provided in the service specific subdirectory and editing it to include the jobs you want the service to run. + Use your dependency settings by defining e.g. `SET=foo` in your jobs. - 4. Push your changes and check the CI service for your build results. + 5. Push your changes and check the CI service for your build results. -## Releases and Numbering of this Module +## Settings File Syntax + +Settings files are sourced 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). + +`MODULES=""` should list the dependencies (software modules) +by using their well-known slugs, separated by spaces. +EPICS Base (`BASE`) will always be a dependency and will be added and +compiled first. The other dependencies are added and compiled in the order +they are defined in `MODULES`. + +`REPOOWNER=` sets the default GitHub owner (or organization) for all +dependency modules. Useful if you want to compile against a complete set +of dependencies forked into your private GitHub area. + +For any module mentioned as `foo` in the `MODULES` setting (and for `BASE`), +the following settings can be configured: + +`FOO=` Set version of the module that should be used. Must either +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`] + +`FOO_REPONAME=` Set the name of the remote repository as `.git`. +[default is the slug in lower case: `foo`] + +`FOO_REPOOWNER=` Set the name of the GitHub owner (or organization) +that the module repository can be found under. + +`FOO_REPOURL=""` Set the complete URL of the remote repository. + +The default URL for the repository is pointing to GitHub, under +`$FOO_REPOOWNER` else `$REPOOWNER` else `epics-modules`, +using `$FOO_REPONAME` else `foo` and the extension`.git`. + +`FOO_DEPTH=` Set the depth of the git clone operation. Use 0 for a +full clone. [default: 5] + +`FOO_DIRNAME=` Set the local directory name for the checkout. This will +be always be extended by the release or branch name as `-`. +[default is the slug in lower case: `foo`] + +`FOO_HOOK=