Setup
Environment
- Effectively, you can only develop MPSGui inside Eclipse on lcls-builder.
- Check out the CVS module physics/mps/mpsgui into your workspace
- From now on, the root of project is referred to as $MPSGUI_ROOT
- You can use eco to checkout the package. The name of the module is mpsgui.
- Run ant to build the mpsgui and mpscud jar files.
- The mpsgui and mpscud scripts should use the jar files built in the jar folder.
Dependencies
For library paths, see the scripts $MPSGUI_ROOT/mpsgui or $MPSGUI_ROOT/mpscudbuild.xml file. Note that the dependent jar files are copied into the lib folder and are part of CVS. To update the jar files, run ant update_dependencies. This should copy the files from $PHYSICS_TOP on dev onto the lib folder. You can then commit these updated dependent jar files into CVS.
- ezJCA (version R0-0-10)
- javainterfaces (current version)
- MPS Config(current version)
- Oracle JDBC driver
- Sqlite JDBC driver
- SwingUtil (current version)
- jgoodies.jar can be added at runtime for the Matlab look & feel
- xal4lcls
- ext.jar (current version)
- xal.jar (current version)
Test
...
- Test using the mpsgui and mpscud scripts from the command line. This sets the Oracle Wallet environment variable and other EPICS variables.
- Select $MPSGUI_ROOT/src/edu.stanford.slac.mpsgui/MpsGuiLauncher
- Right-click => select Run As... => Java Application
- If you run the app for the first time, it should fail
- Go to Run in the Window menu
- Select "Open Run Dialog..."
- Select "MpsGuiLauncher" in the window on the left
- Select the "Arguments" tab
- Enter the following arguments:
in the "Program arguments" area.Code Block jdbc:sqlite:/usr/local/lcls/epics/iocTop/MachineProtection/mpsConfiguration/database/ jdbc:sqlite:/usr/local/lcls/epics/iocTop/MachineProtection/mpsConfiguration/algorithm/ jdbc:oracle:thin:MPS_HISTORY/*current_password*@mccqa.slac.stanford.edu:1521:MCCQA
- Replace current_password with the current password (can be found in the $MPSGUI_ROOT/mpsgui script)
- Press "Run"
Development
Major Recurring Tasks
- Change the Oracle MPS History DB password in $MPSGUI_ROOT/mpsgui and $MPSGUI_ROOT/mpscud
- Check the Previously, one had to check the live history in the MPS GUI HistoryViewer (and if empty, restart the MPS History Server). However, now there is a CRON job that monitors this and will trigger alarms for the operators
Tips
- Find the Java field that contains the UI component that prompted your development (change the back-/foreground color, if not sure); then use Eclipse References (right-click menu) to find where the field is being used
...
- Located under $MPSGUI_ROOT, must be executable (chmod +x)
- Sets up the CLASSPATH ORACLE Wallet and the log file
- Launches MPSGui using Plastic3DLookAndFeel from jgoodies
- byenti is a legacy system property that tells MPSGui to interpret bypass end times as absolute (or, if false, relative) times
...
- Located under $MPSGUI_ROOT, must be executable (chmod +x)
- Sets up the CLASSPATH Oracle Wallet and the log file
- Launches MPSGui in CUD mode using Plastic3DLookAndFeel from jgoodies
- Operators and Mike Z know details about the CUD mode
- byenti is a legacy system property that tells MPSGui to interpret bypass end times as absolute (or, if false, relative) times
...
- Controller for the "Ignore Logic" tab
- Monitors the state of ignoring macros (using MPS Config)
- Caches previous states
- Shows detailed information about ignoring and ignored macros
To test, ignore/unignore macros by writing 0 or 1 to YAGS:IN20:211:IN_LMTSW_BYPV
Code Block caput YAGS:IN20:211:IN_LMTSW_BYPV 1 to ignore caput YAGS:IN20:211:IN_LMTSW_BYPV 0 to unignore
...
- Update the application version in $MPSGUI_ROOT/src/edu.stanford.slac.mpsgui.MpsGuiProperties
- Add a note in $MPSGUI_ROOT/RELEASE_NOTES
- Increment the tag version accordingly
- Commit to CVS
- Tag with mpsgui-R###
- Check out the tagged version into productionon development using eco, and build with ant:
Code Block |
---|
cd $PHYSICS_TOP/release cvs co$ cd ~/workspace $ eco Enter name of module/package to checkout: mpsgui Enter name of tag or [RETURN] to use HEAD>mpsgui-R0-1-23 Using mpsgui-R0-1-23. The name of the directory will be mpsgui-R0-1-23. cvs checkout -P -r mpsgui-R#R0-#1-#23 -d mpsgui-R#-#-# physics/mps/mpsgui cd $PHYSICS_TOP/release/mpsgui-R#-#-# ant |
Move the symbolic link to point to the new version:
...
R0-1-23 mpsgui
cvs checkout: Updating mpsgui-R0-1-23
...
$ cd mpsgui/mpsgui-R0-1-23/
$ ant
....
jar:
[jar] Building jar: /afs/slac.stanford.edu/u/cd/mshankar/temp/test/docTest/mpsgui/mpsgui-R0-1-23/jar/mpsgui.jar
BUILD SUCCESSFUL
$ $ ls jar/mpsgui.jar
jar/mpsgui.jar
$ ./mpsgui
|
Use cram push and cram upgrade to push and upgrade to this release
Code Block $ cram ls Current version on facility: LCLS => mpsgui-R0-1-22 Current version on facility: FACET => None Current version on facility: TestFac => None Current version on facility: Dev => mpsgui-R0-1-22 $ cram push .... $ cram upgrade -f Dev mpsgui-R0-1-23 ....
...
- Launch from lclshome
- MPS Global => MPS GUI...
- MPS Global => MPS CUD...
========================================================
NO LONGER APPLICABLE: The following is preserved as the old eclipse-based release method. Pre-Partha's-ant-script!
- Select File => New Java project => Create project from existing source
- Select $PHYSICS_TOP/release/mpsgui-R###
- Name the project mpsgui-R###
- Press "Finish"
- Right-click on the new project mpsgui-R### => Export...
- Select Java => JAR file
- Check mpsgui-R### in "Resources to export"
- Check "Export generated class files and resources"
- As the export destination, type (and/or select)$PHYSICS_TOP/release/mpsgui-R###/jar/mpsgui.jar
- Press "Finish"
- Note that the mpsgui script redirects all logs to files elsewhere. During development and testing, it is often fruitful to have the logs on the console.
========================================================