https://github.com/fermi-ad/phoebus-fnal
FNAL phoebus product
Science Score: 34.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
✓Institutional organization owner
Organization fermi-ad has institutional domain (ad.fnal.gov) -
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.5%) to scientific vocabulary
Keywords
Repository
FNAL phoebus product
Basic Info
Statistics
- Stars: 1
- Watchers: 4
- Forks: 0
- Open Issues: 22
- Releases: 0
Topics
Metadata Files
README.md
phoebus-fnal
Phoebus (https://github.com/ControlSystemStudio/phoebus) product for FNAL.
- Fermilab specific source code, including Phoebus/ACsys interface
- Set of install and build scripts to setup FNAL-phoebus product on the FNAL controls/internal n/w.
- For production settings and configuration files, see epics-controls/Config/CSS/Phoebus
Running Phoebus
Our Fermilab specific Phoebus is available on all Linux clx nodes and can run on cns Windows nodes by installing Xpra
Steps: 1. ssh to outland or outback, including the -C ssh arguement for compression (important) 2. Make sure X11 forwarding is enabled 3. Type launch auto to be directed to a clx node selected for you 4. Type phoebus_remote to launch Phoebus
One can also launch Phoebus directly with the /usr/local/epics/Config/CSS/Phoebus/run-phoebus.sh script
Build Requirements
- Java/JDK 17 or later, with full JDK distribution including javac compiler. Recommended JDK 21
- mvn maven 3.8.6 or later
- Access to https://github.com
- Building the package is only necessary for developers of Phoebus source code.
Install and Build phoebus-fnal
A full build will include at least 2GB of disk space, so find an appropriate area. The instructions below were run on node vclx4 in a private directory on the /scratch disk partition.
If you are building inside the AD network set up an ssh tunnel to the outside world from your build node:
ssh -fN -D 1080 outback
# export HTTPS_PROXY='socks5://localhost:1080' # Don't do both
You will be automatically returned to your build node after a brief login to outland. This needs to be done only once until the ssh session crashes or your server reboots. This tunnel enables the use of the proxychains prefix command seen below.
Clone the phoebus-fnal product repo to the build location.
proxychains git clone https://github.com/fermi-ad/phoebus-fnal.git
The proxychains command uses the above ssh tunnel to access github.com
Download the full base Phoebus and Select version
cd phoebus-fnal
proxychains git clone -b v5.0.0 https://github.com/ControlSystemStudio/phoebus.git lib/phoebus
Currently we are using Phoebus production version v5.0.0
Select JDK 21 [recommended]
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk
export PATH=${JAVA_HOME}/bin:${PATH}
Type javac -version to make sure you really picked it up JDK 21 [important!]
GitHub Packages Authentication
When building, Maven needs to authenticate with GitHub Packages to download dependencies. This requires a GitHub Personal Access Token (PAT) with read:packages scopes.
You can configure Maven to use your PAT by adding a <server> entry to your ~/.m2/settings.xml file.
- Create a Personal Access Token (PAT)
- Configure Maven's
settings.xml:- If you don't have a
~/.m2/settings.xmlfile, create one. - Add the following relevant fields, replacing
USERNAMEandTOKENwith your actual GitHub username and the PAT you just generated.
- If you don't have a
```xml
<activeProfiles>
<activeProfile>github</activeProfile>
</activeProfiles>
<profiles>
<profile>
<id>github</id>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
</repository>
<repository>
<id>github</id>
<url>https://maven.pkg.github.com/OWNER/REPOSITORY</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<servers>
<server>
<id>github</id>
<username>USERNAME</username>
<password>TOKEN</password>
</server>
</servers>
```
From the root phoebus-fnal directory build with maven:
proxychains mvn clean install -DskipTests=true --batch-mode \
-Ddocs=lib/phoebus/docs
Watch for errors.
Run Test Version of FNAL Phoebus
./test-phoebus.sh
This script is intended for testing locally developed Phoebus builds, and as such differs from the run-phoebus.sh production launch script.
Production installation involves merging a feature branch and building in the github build enviroment.
Include FNAL modules
The Phoebus framework has modularity that allows to have FNAL site-specific code separate from Phoebus source code.
Under the folder product there is the FNAL source code. The following may be extended to provide more Fermilab specific features in the future
```
└── src
└── main
├── java
│ └── org
│ └── phoebus
│ └──
```
Step-by-step
This documentation uses the ACsys plugin as an example on how to include new source code into the FNAL Phoebus product.
Clone this repository as shown above
Create a new directory and add your source code:
- Using phoebus structure, identify which kind of module is the new app and add the new source code following the same directory structure.
products/src/main/java/org/phoebus/<core|pv|applications>/<app_name>/Example:└── src └── main ├── java │ └── org │ └── phoebus │ └── pv │ └── acsys │ ├── ACsys_PVConn.java │ ├── ACsys_PVFactory.java │ └── ACsys_PV.java
- Using phoebus structure, identify which kind of module is the new app and add the new source code following the same directory structure.
Register the class in the phoebus configuration files.
- Under
products/src/resources/META-INF/services/create a configuration file using the same name as the phoebus framework. Should be something likeorg.phoebus.<module>.<parent class> - Add the name of the new app class into the
org.phoebus.<module>.<parent class>. Example to register ACsys into the Phoebus PVFactory:# File : org.phoebus.pv.PVFactory org.phoebus.pv.acsys.ACsys_PVFactory
- Under
Optional: add dependencies to
product/pom.xml. Example to include ACsys DPM library:<dependency> <groupId>gov.fnal</groupId> <artifactId>dae</artifactId> <version>1.2.3</version> </dependency>
NOTE The phoebus framework is Maven-centric and external dependencies defined in the pox.xml can be downloaded.
Useful links
Owner
- Name: Fermilab Accelerator Directorate
- Login: fermi-ad
- Kind: organization
- Location: United States of America
- Website: https://ad.fnal.gov/
- Repositories: 1
- Profile: https://github.com/fermi-ad
Fermilab Accelerator Systems
GitHub Events
Total
- Issues event: 3
- Delete event: 12
- Issue comment event: 9
- Push event: 30
- Public event: 1
- Pull request review comment event: 1
- Pull request review event: 17
- Pull request event: 21
- Create event: 10
Last Year
- Issues event: 3
- Delete event: 12
- Issue comment event: 9
- Push event: 30
- Public event: 1
- Pull request review comment event: 1
- Pull request review event: 17
- Pull request event: 21
- Create event: 10