SICSsource
Finding SICS Source Code and Manuals
Source codes for SICS etc. can be found in two places: on AFS and in the git repository. SICS sources
are managed with a revision control system. As of 2014, we use git.
SICS on AFS
The important directory is /afs/psi.ch/project/sinqdev. Here various directories are found:
- analysis
- Source code for data analysis programs. At the time of writing only SINQ mantid dosurces are here.
- hwmanuals
- This is the collection of online manuals for SINQ hardware. Beware: we do not have manuals for
everything. Missing items may be found on the WWW or by consulting the people who built the hardware at PSI.
- java
- Source codes for the SINQ java clients: gtse and the other ones in separate trees
- mksics
- SICS source codes. This is more or less Mark Koenneckes development area.
- sinqhm_linux_rtai
- source codes for the histogram memory software. Please note, that compiling the HM software
requires a special cross compilation toolchain for PowerPC called elinos-4.1 which is installed on lnsl15.
There is more interesting stuff under mksics:
- sics
- the main SICS ANSII-C source code, documentation and such
- sicspsi
- the PSI specific library of ANSII-C SICS stuff, including auxiliary tools
- sicscommon
- common, shared Tcl codes used across instruments
- inst_sics directories
- directories with instrument specific Tcl programs.
- ccdwww
- The sources for the CCDWWW server used at BOA and else for CCD cameras
- nexus
- The NeXus APi source codes
- nexusdef
- The NeXus manual and base class sources
- tmp
- rubbish, files generated by SICS when run
- daqtest
- automatic tests for SICS for use with the behave tool
Access to all these areas is managed by and free for the usual LDM computing suspects.
It is OK to mess with the sources on AFS in order to do a quick fix when the main developers are
not reachable. Especially as they can always revert what you messed up through the magic of
revision control. However, for larger projects, it is recommended to get an own development area
on your account or on AFS, create a branch and happily work privately until you are satisfied
with your changes. See the next section on git.
SICS under Revision Control
ALL the SICS and other SINQ source code is managed by git. To this purpose the PSI gitorious server is
used. This server ist gitorious.psi.ch. On that server is a project sinqdev where everything
is kept. You may interact with this server through git (surprise!) and a WWW-interface. At this point
it is advisable to get up to speed with git through external documentation and to look at the sinqdev
project at gitorious.psi.ch.
If you desire to commit to the siqndev gitorious repository you will have to generate a ssh key and have
that ssh key be added to the list of authorized keys on gitorious. The LDM computing gang can do that.
Here is a walk through what needs to be done to setup your private environment for developing SICS with
HRPT as the instrument example:
- Create yourself a nice directory where you do your work. CD into that directory
- Get the main SICS sources: git clone ssh://git@gitorious.psi.ch/sinqdev/sics.git
- Get the PSI specific SICs sources: git clone ssh://git@gitorious.psi.ch/sinqdev/sicspsi.git
- Get the common instrument Tcl files: git clone ssh://git@gitorious.psi.ch/sinqdev/sinqcommon.git
- Get the hrpt specific Tcl files: git clone ssh://git@gitorious.psi.ch/sinqdev/sinqhrpt.git hrpt_sics
- Create a tmp directory, write a DataNumber file into it which contains 0 as its only content
If you make sweeping changes to SICS, it is advisable to use git branches.
For compiling and running SICS, see the next section.
Compiling and Running SICS
It is advisable not to do this on an instrument computer but rather on your own machine or on lnsl15.
- Cd into your development directory
- Set the environment variable SICSROOT to point to your development directory
- cd into the sics directory
- Run: make -f makefile_slinux. This will compile SICS. Most libraries required by SICS are located on AFS. May be
you need to install some additional ones through yum.
- cd into the instrument directory hrpt_sics. Make sure that the flag in the hrpt.tcl file is set to simulation.
If you mess with the real instrument without proper care, you will be rewarderd with angry user faces. And it will
not work anyway. The firewall will keep you away....
- cd back to the development root
- Run sics/SICServer hrpt_sics/hrpt.tcl
- From another terminal, connect to your SICS server running on localhost
There is not much more in terms of development infrastructure: no autoconf, no bug tracker etc. Given the
size of the SICS development team, the effort to maintain all that was deemed to be not worth the effort.