Skip to content

jeonghanlee/EPICS-env

Repository files navigation

EPICS Configuration Environment

Overview

This repository provides a self-contained, reproducible build environment for the Experimental Physics and Industrial Control System (EPICS) Base and a collection of widely-used EPICS modules. The system is designed to facilitate the installation and configuration of EPICS without reliance on external package managers or complex continuous integration tools.

The build process is managed exclusively through Makefiles, ensuring long-term reproducibility and minimizing external dependencies. The environment has been validated on various Linux distributions, and its status is continuously monitored through GitHub Actions.

Reference

DOI

Continuous Integration Status

Debian 13 Debian 12 Rocky 9 Linux Build Ubuntu 22.04 Linter Run

Supported Platforms

The environment is officially supported and tested on the following operating systems:

  • Primary Support: Debian 12 (Bookworm), Rocky 8 (Green Obsidian)
  • Extended Testing: Debian 13 (Trixie), Rocky 9 (Blue Onyx)

For a complete list of supported platforms, please refer to the continuous integration status badges above.

Prerequisites

Before beginning the build process, users must install all relevant system dependencies for EPICS Base and its modules.

Module-Specific Dependencies:

Getting Started

The following steps outline the standard procedure for building and installing EPICS:

make init
make patch
make conf
make build
make install
make symlinks
make exist
source ${HOME}/epics/1.1.1/debian-12/7.0.7/setEpicsEnv.bash
softIoc

Build Command Reference

All version information and build variables are defined in the configure/RELEASE file. The environment includes the following EPICS Base and modules:

$ make vars FILTER=SRC_NAME_
$ make vars FILTER=SRC_TAG_

Base Commands

  • make init.base: Initializes the EPICS Base source directory.
  • make conf.base: Configures EPICS Base. make conf.base.show displays configuration settings.
  • make patch.base: Applies necessary patches (if required).
  • make build.base: Compiles the EPICS Base.
  • make install.base: Installs EPICS Base to its destination.
  • make clean.base: Removes build artifacts.
  • make distclean.base: Deletes the downloaded source directory.

Module-Specific Commands

The following commands are available for managing the EPICS modules:

  • make init.modules: Clones all module repositories and generates dynamic build variables.
  • make conf.modules: Configures all modules. make conf.modules.show displays all local configurations.
  • make build.modules: Compiles and installs each module into its designated location.
  • make install.modules: Installs each module.
  • make clean.modules: Cleans build artifacts within all module repositories.
  • make distclean.modules: Deletes all downloaded module source directories.
  • make exist.modules: Displays the installation paths for all modules.
  • make symlinks.modules: Creates or overwrites symbolic links for all active modules and removes any dead links.

Utilities and Examples

The build system automatically generates rules for each module, allowing for granular control. Rules follow the format target.module_name, where target can be build, install, clean, or uninstall.

# Example for a specific module
make build.iocStats
make clean.StreamDevice
make install.asyn

# Variable management
make vars           # Prints all important variables
make PRINT._var_name # Prints the selected variable

Project Utilities

This repository includes a suite of command-line tools to assist with development and system management. For more details on these utilities, refer to the Tools.

About

EPICS Configuration Environment

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •