Developer: Difference between revisions
| Line 92: | Line 92: | ||
You will need a C compiler on OpenVMS. There are several versions of CVS available, but all of them need some tweaking before they can be successfully built. | You will need a C compiler on OpenVMS. There are several versions of CVS available, but all of them need some tweaking before they can be successfully built. | ||
cvs-1.11.18 (see build instructions at http://lists.gnu.org/archive/html/bug-cvs/2005-01/msg00280.html) | :cvs-1.11.18 (see build instructions at http://lists.gnu.org/archive/html/bug-cvs/2005-01/msg00280.html) | ||
cvs-1.11.21 (do not use) | :cvs-1.11.21 (do not use) | ||
cvs-1.11.22 (latest version as of May 26, 2007 -- may be built, but follow instructions as per v.18 above) | :cvs-1.11.22 (latest version as of May 26, 2007 -- may be built, but follow instructions as per v.18 above) | ||
Download the .tar.gz file, rename it to .tgz once on vms system, use gunzip then cvstar: | Download the .tar.gz file, rename it to .tgz once on vms system, use gunzip then cvstar: | ||
<pre> | |||
$ rename cvs-1.11.22.tar.gz cvs-1.11.22.tgz | $ rename cvs-1.11.22.tar.gz cvs-1.11.22.tgz | ||
$ gunzip cvs-1.11.22.tgz | $ gunzip cvs-1.11.22.tgz | ||
$ tar xof cvs-1.11.22.tar ! option 'o' allows ODS2 naming. | $ tar xof cvs-1.11.22.tar ! option 'o' allows ODS2 naming. | ||
</pre> | |||
For all versions, make the following changes before starting: | For all versions, make the following changes before starting: | ||
Revision as of 03:07, 27 May 2007
Hardware
Used Alpha stations at http://www.islandco.com
VMS Development
Getting started
Editor:
$! Define the editor $ eve == "spawn/nowait edit/display=decwindows/tpu" $ eve filename.txt
Compiler:
$! Define the compiler
$ C64 :== CC/POINTER_SIZE=64/check=pointer=all/optimize=(tune=ev6,level=5)
$! Compile the program 'ipl_scanco_c' and link it to existing libraries
$ c64 ipl:ipl_scanco_c
$!
$ link /exe=ipl:ipl_SCANCO_c -
ipl:ipl_scanco_c, -
ipl:ipl_scanco_c_ident/opt, -
ipl:ipl_proc/lib, -
ipl:ipl/lib, -
mu:scanco_ext/lib, -
dsrc:d3p_scanco/lib, -
scanco_lib/lib
SCTHIN (DS10L)
duck.kin.ucalgary.ca has been assigned IP address 136.159.130.33 netmask 255.255.255.0 default router 136.159.130.34 DNS servers 136.159.130.130, 136.159.130.3
Login microct or devel with not2lame.
To boot into the cluster
>>>boot ewa0
To boot out of the cluster, unplug the ethernet cable and
>>>boot
To get to boot prompt, type shutdown on the login screen. Or, after powerdown, hit ctrl-P repeatedly.
There are two accounts:
- microct
- devel
Installing packages on VMS
Contacts: Piet Schuermans Mark Blanchard
Freeware source
http://h71000.www7.hp.com/freeware/freeware80/
Instructions for unpacking .tar.gz files on VMS
- 1. Rename the file to file.tgz
- 2. gunzip file.tgz (creates a file.tar)
- 3. vmstar file.tar
VMSTAR
A tar program for VMS.
Either install from the source (build it), or apparently the binary can be downloaded from
http://h71000.www7.hp.com/freeware/freeware50/vmstar/alpha/
where you will find VMSTAR.EXE
When extracting files that contain "unix" filenames (e.g., config.h.in), make sure to extract the files with
$ cvstar xof file.tar ! Option 'o' extracts ODS5 files with ODS2 format
CVS
The sources can be retrieved from http://ftp.gnu.org/non-gnu/cvs/source/stable/
You will need a C compiler on OpenVMS. There are several versions of CVS available, but all of them need some tweaking before they can be successfully built.
- cvs-1.11.18 (see build instructions at http://lists.gnu.org/archive/html/bug-cvs/2005-01/msg00280.html)
- cvs-1.11.21 (do not use)
- cvs-1.11.22 (latest version as of May 26, 2007 -- may be built, but follow instructions as per v.18 above)
Download the .tar.gz file, rename it to .tgz once on vms system, use gunzip then cvstar:
$ rename cvs-1.11.22.tar.gz cvs-1.11.22.tgz $ gunzip cvs-1.11.22.tgz $ tar xof cvs-1.11.22.tar ! option 'o' allows ODS2 naming.
For all versions, make the following changes before starting:
- 1 Before you attempt to compile 1.11.22 or later you will need make a copy of [.LIB]FNMATCH_H.IN as [.LIB]FNMATCH.H
- 2 Correct typo in [.SRC]BUILD_SRC.COM change "libz" to "zlib"
Note: The directory names would have been cvs-1.11.21.dir on Linux. However VMS doesn't allow more than 1 . in the name. If you enter
$ set process/parse=extended
in a terminal you'll be able to access these files. You rename them (i.e. cvs-1_11_21.dir).
MMS: VMS 'make' tool
To start:
$ mms
An example from Bruno Koller of descrip.mms:
.IGNORE
FFLAGS = /FAST/OPT=(LEVEL=5,TUNE=EV68,INL=ALL)/OBJECT=$(MMS$TARGET_NAME).OBJ
FGENER = /ALIGN=(NATURAL,SEQUENCE)/ASSUME=NOACCURACY/OPT=(LEVEL=5,TUNE=GENERIC,INL=ALL)/OBJECT=$(MMS$TARGET_NAME).OBJ_G
.FOR.OBJ
$(FORT)$(FFLAGS) UD:$(MMS$TARGET_NAME).FOR
$(FORT)$(FGENER) UD:$(MMS$TARGET_NAME).FOR
.FOR.INC
$(FORT)$(FFLAGS) UD:$(MMS$TARGET_NAME).FOR
$(FORT)$(FGENER) UD:$(MMS$TARGET_NAME).FOR
all :: uct_reconstruction.exe, uct_reconstruction.exe_generic
write sys$output "UCT_RECONSTRUCTION.EXE generated"
uct_reconstruction.exe :: -
recoident.opt, -
uct_reconstruction.obj, -
scli:uct_reco_constants.inc, -
calc_fan_beam_angles.obj, -
rebinning.obj, -
raw_to_rpro.obj, -
conereco.obj
link/exe=uct_reconstruction.exe -
recoident/opt, -
uct_reconstruction.obj, -
calc_fan_beam_angles, -
rebinning, -
raw_to_rpro, -
conereco, -
scanco_lib/lib
uct_reconstruction.exe_generic :: -
recoident.opt_g, -
uct_reconstruction.obj_g, -
scli:uct_reco_constants.inc, -
calc_fan_beam_angles.obj_g, -
raw_to_rpro.obj_g, -
rebinning.obj_g, -
conereco.obj_g
link/exe=uct_reconstruction.exe_generic -
recoident/opt, -
uct_reconstruction.obj_g, -
calc_fan_beam_angles.obj_g, -
raw_to_rpro.obj_g, -
rebinning.obj_g, -
conereco.obj_g, -
scanco_lib/lib
uct_reconstruction.obj :: ud:uct_reconstruction.for, -
scli:uct_reco_constants.inc
calc_fan_beam_angles.obj :: ud:calc_fan_beam_angles.for, -
scli:uct_reco_constants.inc
raw_to_rpro.obj :: ud:raw_to_rpro.for, -
scli:uct_reco_constants.inc
rebinning.obj :: ud:rebinning.for, -
scli:uct_reco_constants.inc, -
scli:ctdata_header_structure.inc
conereco.obj :: ud:conereco.for, -
scli:uct_reco_constants.inc
Some notes:
- UD is a logical for user disk search list over different disks, so I can compile on both alpha and vax with just having one source.
- No need to put "ud:" at your site. Also, a few lines may have been wrapped which should be on one line (/fflag...) by the mail program.
- Let me know if you want the mms installation file, you will need the hp campus mms license herefore (which you may already have)
Alternative to MMS: MMK
A free MMS replacement is called Madgoat MMK (http://www.madgoat.com/mmk.html).
Alternative to EVE: NEDIT
NEDIT is also available for VMS and offers a nicer editor, in my opinion (Mark Blanchard).
Online VMS discussion lists
info-vax (comp.os.vms)
vtkMy
WinCVS and PuTTY for vtkMy
Setting up WinCVS to use PuTTY is fairly straghtforward, but does require a few configuration settints in addition to installing the software. You can do it with the following steps.
- Install PuTTY (http://www.chiark.greenend.org.uk/~sgtatham/putty/).
- Install wincvs (http://www.wincvs.org/)
- Make a key:
- Follow menus: Start/Programs/PuTTY/PuTTYgen From the PuTTY Manual:
- ...press the "Generate" button and PuTTYgen will begin the process of actually generating the key.
- First, a progress bar will appear and PuTTYgen will ask you to move the mouse around to generate randomness. Wave the mouse in circles over the blank area in the PuTTYgen window, and the progress bar will gradually fill up as PuTTYgen collects enough randomness. You don't need to wave the mouse in particularly imaginative patterns (although it can't hurt); PuTTYgen will collect enough randomness just from the fine detail of exactly how far the mouse has moved each time Windows samples its position.
- When the progress bar reaches the end, PuTTYgen will begin creating the key. The progress bar will reset to the start, and gradually move up again to track the progress of the key generation. It will not move evenly, and may occasionally slow down to a stop; this is unfortunately unavoidable, because key generation is a random process and it is impossible to reliably predict how long it will take.
- When the key generation is complete, a new set of controls will appear in the window to indicate this.
- Follow menus: Start/Programs/PuTTY/PuTTYgen From the PuTTY Manual:
- Set the key comment and password. Set the key comment to your email address by typing it into the "Key Comment" box. Set the password by entering it twice, once in the "Key passphrase" box and once in the "Confirm Passphrase" box.
- Save the keys:
save the public key on your desktop asidentity.puband the private one asidentity.ppk - Email the identity.pub file as an attachment to skboyd@ucalgary.ca and ask for it to be added to the .ssh/authorized_keys file for your cvs repository. Please specify which repository you are requesting access to in the e-mail (i.e., vtkMy).
- Setup environment variables
- Choose Menus:
Start/Settings/Control Panel - Double click on the "System" Control Panel
- Pick the "Advanced" tab and pick "Environment Varibles..."
- Add User environement variables
- - Add PLINK_PROTOCOL value "ssh"
- - Add CVS_RSH value "plink"
- - Edit or Add PATH appending value ";C:\Program Files\PuTTY"
- Choose Menus:
- In WinCVS, bring up the "Preferences" dialogue box from the Admin menu
- In the "General" tab put in your CVSROOT value, (i.e.
:ext:myusername@m177.enme.ucalgary.ca:/localhost/cvsroot)
File:Wincvs general.jpg - Switch to the "Ports" tab.
- Tick the box there labelled "Check for an alternate rsh name" and in the text entry field to the right enter "plink".
File:Wincvs ports tab.jpg - Select "OK" on teh "Preferences" dialogue box.
- In the "General" tab put in your CVSROOT value, (i.e.
- Once you've heard back from the administrator (skboyd) that your ssh keys have been added, test your putty key configuration:
- Double click on "identity.ppk" on your desktop. If this doesn’t start pagaent.exe automatically, then manually start the program from the directory you installed putty.exe.
- If your identity file isn't already loaded, you will be prompted for the password you entered in step 4.
- The Pageant icon (a little PC with a hat) should appear in the bottom right menu bar.
You should now be able to use WinCVS to access the repository, with a secure connection whenever Pageant is running. You can start Pageant by double-clicking on your identity.ppk file.
Setting up CVS access from Linux/Unix
- To understand the codes for a CVS update, see page 121 of CVS users guide, section A.16.2.
- Valuable resource for understanding ssh:
- Setting up SSH access from "localbox" to "remotebox":
Localbox:- ssh-keygen -t rsa [use a passphrase]
- NOTE: Put the "id_rsa" (private file) in ~/.ssh. There should only be one of these on a machine account.
- NOTE: Put the “id_rsa.pub�? (public file) in ~/.ssh as “authorized_keys�? on remote machines; see “Remotebox�? below.
- scp identity.pub skboyd@remotebox: [don't forget the last colon]
- in ~/.bashrc:
- export CVS_RSH=ssh
- export CVSROOT=:ext:skboyd@m177.enme.ucalgary.ca:/localhost/cvsroot
- eval `ssh-agent` {use the funny back single quotes}
Remotebox:
- cat identity.pub >> ~/.ssh/authorized_keys
- To avoid writing your passphrase every time you log on, run:
- ssh-add
- Should work if ssh-agent is already running (eval `ssh-agent` in the .bashrc file).
- Do the following to limit access to cvs for the users:
- edit the public key installed in the .ssh/authorized_keys file with the following at the beginning of the public key line:
- command="/usr/bin/ssh server"
NOTES ABOUT KEYS Remember, the "authorized_keys" file is a concatenation of public (id_rsa.pub) keys, and the "id_rsa" is the private key. Every user on every computer should only have ONE "id_rsa" file, but can have multiple "id_rsa.pub" files concatenated into their "authorized_keys" file.
Using CVS from a command line
- To find a difference:
$ cvs diff mylocalfile.cxx
- To add a new file:
$ cvs add mynewfile.cxx$ cvs commit mynewfile.cxx
- To update local file:
$ cvs update -dCP
- or
$ cvs update -dCP myfile.cxx
- To check if a more recent version is available:
$ cvs diff myfile.cxx
- or
$ cvs update
- To update CVS repository:
$ cvs commit mylocalfile.cxx
Add a project to vtkMy
- Add a new project directory in the vtkMy/src/Applications directory.
- Update the CMakeLists.txt file in /src/Applications to include the new directory in the SUBDIRS() list.
- Copy the CMakeLists.txt and source code files from an existing project such as AppMohr and put them into the new directory. These files can be edited for your new project.
- Edit the copied CMakeList.txt file and the change the name of the .cxx to the name of the new project.
- Run CMake, taking the source code from vtkMy/src and building the binaries in vtkMy/bin.
- Open the Visual C++ workspace and edit the source code (since at the moment it will be a duplicate of whatever project you copied in step 3).
- Compile your new code. Usually, all the development should be done in the “Debug�? mode (rather than “Release�?, etc.).
- If, to run your application, you need to include command line arguments, go to the menu item [Project][Settings], and on the ‘debug’ tab set the Program Arguments as shown.
File:VtkMy Project Settings.jpg
XEmacs
Pretty print
- For colour printing, select "Options", "Syntax Highlighting", "In this buffer"
- In "Page Setup" set the margins to be 10 mm on the left and rights sides
- In the "Printer Properties" on the "Effects" tab, use 90% of Normal size
C Shell Scripts
These scripts must be executable.
$ chmod 775 myscript.com
Sample 1
This file aim2voi.com shows the use of command line arguments in a CSH script.
#!/bin/csh #------------------------------------------------------------------------------ onintr end if ($#argv < 1) goto usage #------------------------------------------------------------------------------ aix $1.aim > $1.dsc aic2voi $1.aim $1.voi goto end #------------------------------------------------------------------------------ usage: # echo "" echo "Usage:" echo "" echo "aim2voi aim_filename (without aim extension)" echo "will create a voi and dsc file from an aim" echo "" # exit #------------------------------------------------------------------------------ end: exit #------------------------------------------------------------------------------
Sample 2
Similar to above, but aim2bid.com generates a temporary file called stack which
is used as input.
#!/bin/csh
#------------------------------------------------------------------------------
onintr end
if ($#argv < 4) goto usage
#------------------------------------------------------------------------------
set i = $3
while ($i <= $4)
set nr = $i
if ($nr<10) set nr = "0"$nr""
if ($nr<100) set nr = "0"$nr""
# if ($nr<1000) set nr = "0"$nr""
echo "XY" >! stack
echo "$i" >> stack
echo "$5" >> stack
if ($6 != "") then
echo "0" >> stack
aio $1 "$2"_"$nr".bid 14 < stack
convert -size "$7" "$2"_"$nr".bid "$2"_"$nr"."$6"
\rm -f "$2"_"$nr".bid
else
echo "2" >> stack
aio $1 "$2"_"$nr".bid 14 < stack
endif
\rm -f stack
@ i = $i + 1
end
goto end
#------------------------------------------------------------------------------
usage:
#
echo ""
echo "Usage:"
echo ""
echo "aim2bid aim_filename bid_prefix first_slice last_slice scal_factor [form size])"
echo " (values are one-based) gif/tif/..."
echo ""
#
exit
#------------------------------------------------------------------------------
end:
exit
#------------------------------------------------------------------------------
Sample 3
An example where a sequence of commands are executed resulting in an e-mail to let the user know that their job is finished.
#!/bin/csh # nohup faim -s $1; /bin/csh -cbf "Mail -s 'JOB $1 FINISHED' boyd@kin < ~/adm/mailer/faimjob.txt" &
You would run this script called faim.com as follows
$ faim.com inputfile
Sample 4
This example uses two files. One called wrap.com is the base program that is called in
a more general program called wrap_all.com so that many different files can be processed
by the base script.
- wrap.com
#!/bin/csh echo "0" >! stack echo "0" >> stack echo "0" >> stack /home/skb/works/fio/aim_io $1.aim $1_sub.aim minimal 15 < stack /rm -f stack exit
- wrap_all.com
#!/bin/csh ~/works/com/wrap calgary_dog_aclx_03-04_med_fem_left ~/works/com/wrap calgary_dog_aclx_03-04_med_fem_right ~/works/com/wrap calgary_dog_aclx_03-04_med_tib_left ~/works/com/wrap calgary_dog_aclx_03-04_med_tib_right echo "DONE!" exit
temple.ucalgary.ca
Configuration Details
I include in the attachments my checklist I use for a Solaris 10 installation, adjusted to show only items particular to yours and not my entire decision tree. I added brief explanations for some of the items that might seem arbitrary otherwise.
Very similar decisions are made when installing any release of Linux, Solaris, MS Windows or yet another operating system - the details vary though.
http://docs.sun.com/ has all (too many) the details.
- Operating System Download PDF
- Configuration Download PDF
- Mirror Download PDF
- RAID5 Download PDF
- Finishing Steps Download PDF
Install XEmacs
However, I would not install both Emacs and XEmacs at the same time. Nowadays, I highly recommend installing only one of them, with my preference given to XEmacs. Of course, only when there are no specialized Lisp packages that require Emacs.
Then my installation would be like below:
$ cd /cdrom/s10_software_companion/components/sparc/Packages
$ cat > /tmp/nointeraction
mail=
instance=unique
partial=nocheck
runlevel=nocheck
idepend=nocheck
rdepend=nocheck
space=quit
setuid=nocheck
conflict=quit
action=nocheck
basedir=default
$ pkgadd -a /tmp/nointeraction -d . -n SFWbdb SFWgcc34l SFWxmacs
[ Copyright and legal notices omitted for brevity. ]
21872 blocks
Installation of <SFWbdb> was successful.
[ Copyright and legal notices omitted for brevity. ]
69953 blocks
Installation of <SFWgcc34l> was successful.
[Copyright and legal notices omitted for brevity. ]
264202 blocks
Installation of <SFWxmacs> was successful.
$ emacs () { /opt/sfw/bin/xemacs $* ; }
$ pkgadd -a /tmp/nointeraction -d . -n SFWddd SFWgbin SFWgdb
[ To complete installation of the other packages you require. ]
$ pkginfo SFWbdb SFWddd SFWgbin SFWgcc34l SFWgdb SFWxmacs
system SFWbdb berkeleyDB - Berkeley Database Library
system SFWddd ddd - GNU Data Display Debugger
system SFWgbin binutils - GNU binary utilities
system SFWgcc34l gcc-3.4.2 - GNU Compiler Collection Runtime Libraries
system SFWgdb gdb - GNU source level debugger
system SFWxmacs XEmacs - text editor