Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

5.2 Dependency paths in RELEASE

configure/RELEASE identifies the EPICS Base and module installations used to build an IOC application. These are build paths, not network addresses or record macros.

Paths and configuration order

The generated application defines MODULES relative to EPICS_BASE, then names the modules it uses. Its Base path comes from the environment active when you run the generator.

VariableInstallation selected
EPICS_BASEThe matching 1.5.0 tree’s base directory
MODULES$(EPICS_BASE)/../modules
ASYN$(MODULES)/asyn
CALC$(MODULES)/calc
STREAM$(MODULES)/StreamDevice
PVXS$(MODULES)/pvxs

Commented module definitions are inactive. Each active dependency must resolve to an absolute path containing its installed files.

Keep EPICS_BASE last among dependencies, as the template does. EPICS uses this list when it builds include and library search paths. This is distinct from assigning the same Make variable twice: a later ordinary assignment replaces the earlier value.

Make’s recursive = assignments let MODULES refer to EPICS_BASE before its definition. They do not copy the Base installation.

PVXS version configuration

The public 1.5.0 distribution contains PVXS 1.5.3. Its installed version file is $(PVXS)/cfg/CONFIG_PVXS_VERSION. During application configuration, EPICS includes installed cfg/CONFIG* files from dependencies, which defines PVXS_MAJOR_VERSION for the application Makefiles.

The generated RELEASE also contains this optional include:

-include $(PVXS)/configure/CONFIG_PVXS_VERSION

The installed tree has no version file under configure/, so this line reads nothing and -include reports no error.

To print the version that the build sees, run this from the application root:

make -s PRINT.PVXS_MAJOR_VERSION

The build reports the major version:

PVXS_MAJOR_VERSION = 1

Local override files

The generated RELEASE includes these files in order:

-include $(TOP)/../RELEASE.local
-include $(TOP)/../RELEASE.$(EPICS_HOST_ARCH).local
-include $(TOP)/configure/RELEASE.local

The parent files apply to applications beneath that directory. The final file applies to this application. EPICS_HOST_ARCH describes the build host. -include permits a missing file.

Use the Chapter 4 jeonglee_Demo application, which has the training instance. Before changing dependency paths, run this from its application root:

make clean uninstall

For a local Base override, write the active installation’s absolute path. Run these commands in a terminal where setEpicsEnv.bash is sourced; otherwise EPICS_BASE is empty and the build fails:

printf 'EPICS_BASE=%s\n' "$EPICS_BASE" > configure/RELEASE.local
make
cat iocBoot/ioctraining-jeonglee_Demo/envPaths

The envPaths file must show the selected Base and module paths. Local files are ignored by the generated application’s Git configuration; inspect them when two machines build differently.

The EPICS build-system reference specifies these rules under RELEASE file and Modifying configure/RELEASE files.