Main goal of this document is to explain how to download and build the TelCal (Telescope Calibration) subsystem on a computer with a Linux RH Enterprise Level 4 operating system. See the RHEL4 installation guide web page for more information.
This tutorial gives a command line approach. See the Develop the TelCal subsystem with Eclipse IDE page that explains how to download and build the TelCal subsystem with the Eclipse IDE (Interface Development Environment).
operating system | version |
---|---|
Linux RH Enterprise 4 | kernel 2.6.9-11 |
program | version |
cvs | 1.11.17 |
make | 3.80 |
ACS environment | version |
ACS | 6.0.4 |
TELCAL | TELCAL-MONTHLY-2007-03-B |
The ACS (Alma Common Software) provides a software infrastructure common to all partners of the ALMA project. ACS is based on CORBA (Common Object Request Broker Architecture). This middleware is available under the GNU LGPL licence.
Download the last version of ACS. For the TelCal subsystem take the Linux LGPL binary installation + archive distribution. The detailed installation procedure is given here.
To install ACS you must login as almamgr user. Move to the /diska directory and decompress the downloaded ACS distribution. It will take about 2 Go on the disk. Be sure to delete the previous installed /diska/alma/ACS-6.0 directory or symbolic link.
[/diska] > tar -zxvf ACS.tar.gz
In order to manage several versions of ACS rename the created directory. And create a link to the new version.
[/diska/alma] > mv ACS-6.0 ACS-6.0.4 [/diska/alma] > ln -s ACS-6.0.4 ACS-6.0
To get the version of ACS read the /alma/ACS-6.0/ACSSW/ACS_TAG file.
[~] > more /alma/ACS-6.0/ACSSW/ACS_TAG ACS-6_0_4
To verify the ACS installation login as the almadev user and launch the ACS Command Center.
[~] > acsStart ... [~] > acscommandcenter ... [~] > acsStop ...
To develop the TelCal subsystem the almadev user needs the $HOME/.acs directory. Copy the /diska/alma/ACS-6.0/ACSSW/config/.acs directory to the $HOME directory of the almadev user. Be sure to delete the previous $HOME/.acs directory or symbolic link.
[~] > cp -R /diska/alma/ACS-6.0/ACSSW/config/.acs .
In order to support several versions of ACS rename the .acs local directory and create a symbolic link.
[~] > mv .acs .acs_6.0.4 [~] > ln -s .acs_6.0.4 .acs
Two modifications must be done in the $HOME/.acs/.bash_profile.acs file. First use the INTROOT variable that defines the integration directory. Second set the MODPATH to 1 to add local pathes (that allows to compile and link in and from each module).
~/.acs/.bash_profile.acs
... # Integration area # Uncomment the following line when you want to use an INTROOT if [ X"$INTROOT" = X ] || [ X"$ACS_RETAIN" = X ] then INTROOT=$HOME/introot fi ... # Set MODULE in all paths. # The value can be already set in the inherited environment. # Otherwise it can be set here. If set to 1, # ../bin will be added to PATH (if you are not concerned by potential security threats) # ../lib will be added to LD_LIBRARY_PATH # ../idl will be added to IDL_PATH # ../lib/python/site-packages will be added to PYTHONPATH if [ X"$MODPATH" = X ] then MODPATH=1 fi ...
Don't forget to execute the $HOME/.acs/.bash_profile.acs file. You can modify the $HOME/.bash_profile file.
~/.bash_profile
... # Source ACS environment source .acs/.bash_profile.acs ...
Then define the $HOME/introot_TELCAL-MONTHLY-2007-03-B directory structure for project integration using the getTemplateForDirectory command.
[~] > getTemplateForDirectory INTROOT introot_TELCAL-MONTHLY-2007-03-B ...
Finally define the following symbolic link.
[~] > ln -s introot_TELCAL-MONTHLY-2007-03-B introot
The TelCal subsystem (Telescope Calibration) is a module responsible to ensure that ALMA is and remain in an appropriate configuration for observations. To download it first login as the almadev user and configure the CVSROOT environment variable that defines the CVS server and project link. You may add it in the $HOME/.bash_profile file.
[~] > export CVSROOT=:pserver:<cvsuser>@cvssrv.hq.eso.org:/project2/CVS
cvsuser is the user name of the CVS account provided by ESO. First dowload both NO-LGPL library sla from the module ACS and the wanted version of TelCal for the IDC and TELCAL.
[~/workspace/TELCAL-MONTHLY-2007-03-B] > cvs checkout -f -r TELCAL-MONTHLY-2007-03-B \ > ACS/NO-LGPL/sla ICD TELCAL ...
TelCal uses the Makefile subsystem distributed with ACS. See related useful links at the bottom of this page. Or get help from the man pages.
[~/workspace/TELCAL-MONTHLY-2007-03-B] > man acsMakefile
[~/workspace/TELCAL-MONTHLY-2007-03-B] > man Makefile
First build the sla library.
[~/workspace/TELCAL-MONTHLY-2007-03-B/ACS/NO-LGPL/sla/ws/src] > make all install ...
Then build all the interfaces.
[~/workspace/TELCAL-MONTHLY-2007-03-B/ICD] > make build ...
Finally build the TelCal subsystem.
[~/workspace/TELCAL-MONTHLY-2007-03-B/TELCAL] > make build ...
To debug the make command use the MAKE_VERBOSE variable.
[~/workspace/TELCAL-MONTHLY-2007-03-B/TELCAL] > make MAKE_VERBOSE=on build ...
More information about the Makefile (vltMake software) in the manpage from ACS.
[~] > man Makefile ...
cvs [cvs_option] ... command [command_option] ... [command_arg] ...
CVS (Concurrent Versions System) is a version control system. Using it, you can record the history of sources files, and documents.
command | description |
---|---|
checkout | Check out sources for editing. |
commit | Check files into the repository. |
diff | Show differences between revisions. |
history | Show status of files and users. |
update | Bring work tree in sync with repository. |
Now let us see options for useful commands.
cvs [cvs_option] ... checkout [command_option] ... <module> ...
Create or update a working directory containing copies of the source files specified by the list of module. You must execute checkout before using most of the other cvs commands, since most of them operate on your working directory.
checkout command option | description |
---|---|
-D <date> | Use the most recent revision no later than date. This option is sticky, and implies -P. |
-f | Only useful with the -D <date> or -r <tag> flags. If no matching revision is found, retrieve the most recent revision (instead of ignoring the file). |
-P | Prune empty directories. |
-r <tag> | Use revision tag. This option is sticky, and implies -P. |
cvs [cvs_option] ... commit [command_option] ... <file> ...
Use commit when you want to incorporate changes from your working source files into the source repository.
commit command option | description |
---|---|
-r <revision> | Commit to revision. revision must be either a branch, or a revision on the main trunk that is higher than any existing revision number. You cannot commit to a specific revision on a branch. |
-m <message> | Use message as the log message, instead of invoking an editor. |
cvs [cvs_option] ... diff [command_option] ... <file> ...
The diff command is used to compare different revisions of files. The default action is to compare your working files with the revisions they were based on, and report any differences that are found.
diff command option | description |
---|---|
-D <date> | Use the most recent revision no later than date. See -r for how this affects the comparison. |
-r <tag> | Compare with revision tag. Zero, one or two -r options can be present. With no -r option, the working file will be compared with the revision it was based on. With one -r, that revision will be compared to your current working file. With two -r options those two revisions will be compared (and your working file will not affect the outcome in any way). One or both -r options can be replaced by a -D <date> option, described above. |
-b | Ignore trailing white space and consider all other sequences of one or more white space characters to be equivalent. |
-B | Ignore changes that just insert or delete blank lines. |
-i | Ignore changes in case; consider upper- and lower-case letters equivalent. |
-t | Expand tabs to spaces in the output, to preserve the alignment of tabs in the input files. |
-w | Ignore white space when comparing lines. |
cvs [cvs_option] ... history [command_option] ... <file> ...
Show status of files and users.
history command option | description |
---|---|
-m <module> | Report on a particular module. |
-o | Report on checked-out modules. This is the default report type. |
-a | Show data for all users (the default is to show data only for the user executing history). |
-l | Show last modification only. |
-D <date> | Show data since date. This is slightly different from the normal use of -D date, which selects the newest revision older than date. |
-r <rev> | Show records referring to revisions since the revision or tag named rev appears in individual rcs files. Each rcs file is searched for the revision or tag. |
-t <tag> | Show records since tag tag was last added to the history file. This differs from the -r flag above in that it reads only the history file, not the rcs files, and is much faster. |
-u <name> | Show records for user name. |
cvs [cvs_option] ... update [command_option] ... <file> ...
After you've run checkout to create your private copy of source from the common repository, other developers will continue changing the central source. From time to time, when it is convenient in your development process, you can use the update command from within your working directory to reconcile your work with any revisions applied to the source repository since your last checkout or update.
update command option | description |
---|---|
-D <date> | Use the most recent revision no later than date. This option is sticky, and implies -P. |
-f | Only useful with the -D <date> or -r <tag> flags. If no matching revision is found, retrieve the most recent revision (instead of ignoring the file). |
-P | Prune empty directories. |
-r <rev> | Use revision/tag rev. This option is sticky, and implies -P. |
-d | Create any directories that exist in the repository if they're missing from the working directory. Normally, update acts only on directories and files that were already enrolled in your working directory. This is useful for updating directories that were created in the repository since the initial checkout; but it has an unfortunate side effect. If you deliberately avoided certain directories in the repository when you created your working directory (either through use of a module name or by listing explicitly the files and directories you wanted on the command line), then updating with -d will create those directories, which may not be what you want. |
link | comment |
---|---|
ACS RedHat Enterprise | ACS RedHat Enterprise Installation Guide |
ACS Distribution | ACS Installation Packages for Linux RH Enterprise and Scientific Linux |
TelCal subsystem | Telescope Calibration TWiki web page |
ACS Makefile FAQ | FAQ about the ACS Makefile subsystem |
Makefile support | some Java, Python and IDL ACS Makefile tips |