Ska Runtime Environment 0.11
===========================================

.. Build and install this document with:
   rst2html.py --stylesheet=/proj/sot/ska/www/ASPECT/aspect.css \
        --embed-stylesheet NOTES.skare-0.11 NOTES.skare-0.11.html
   cp NOTES.skare-0.11.html /proj/sot/ska/www/ASPECT/skare-0.11.html

Content changes overview
------------------------

- num_libs_bin: new binary install of "num_libs.cfg".  Using procedure
  in NOTES.make_num_libs_bin, create a package with arch-dependent
  binaries for num_libs compiled from source (which can take a long time).
  Do this on the target host if possible.  (Building num_libs on VMware
  Centos-5 VM takes at least 2 hours and is completely the wrong CPU).
- NumPy 1.5 source install
- SciPy 0.9 source install
- New pycore.cfg which installs numpy, scipy, matplotlib from source.

Review
------

Notes and testing were reviewed by Jean Connelly.  Command states and module
testing were run independently by Jean.

Build
-----

Install (or git pull) skare on 32-bit or 64-bit virtual CentOS-5 machine.
::

  # Get skare repository on virtual CentOS-5 machine
  cd ~/git

  git clone git@github.com:sot/skare.git
  git checkout master

  # Choose prefix (dev or flight) and configure
  prefix=/proj/sot/ska/dev 
  prefix=/proj/sot/ska
  ./configure --prefix=$prefix

  # Choose 64 or 32-bit installation
  make basedirs libs python_64 git meld sherpa
  make basedirs libs python_32 git meld sherpa

  # Create tarfile output (dev or flight) [replace 64 -> 32 as needed]
  cd $prefix
  tar zcf skare-0.11-64-dev.tar.gz arch bin lib build/*/*/.installed
  tar zcf skare-0.11-64.tar.gz arch bin lib build/*/*/.installed
  scp skare-0.11-64.tar.gz ccosmos:/proj/sot/ska/dist/

Pre-install testing in development area
----------------------------------------

Starcheck
^^^^^^^^^^^^
::

  skadev
  cd ~/hg/starcheck
  (unska; /proj/sot/ska/bin/starcheck -dir AUG0104A -fid_char fid_CHARACTERIS_JUL01 -out test.7cb31b)
  make test
  diff test.7cb31b.txt test.txt

==> OK

Eng_archive
^^^^^^^^^^^^
::

  cd ~/hg
  hg clone /proj/sot/ska/hg/eng_archive
  cd eng_archive

Follow the steps for "Regression test for new skare (..) in $ska/dev" in NOTES.test.

==> OK

Commanded states
^^^^^^^^^^^^^^^^^^
::

  skadev
  cd ~/hg/Chandra.cmd_states_dev
  python setup.py install
  cd ~/hg/cmd_states_dev
  make install
  cd ~/hg/timelines_dev
  make install

  nosetests

==> 
::

  cd ~/hg/Chandra.cmd_states
  python setup.py install
  cd ~/hg/cmd_states
  make install
  cd ~/hg/timelines
  make install

  nosetests

==> 

psmc_check
^^^^^^^^^^
::

  skadev
  cd ~/hg/psmc
  ln -s $ska/data/telem_archive $ska/dev/data/
  make install
  python ./psmc_check.py --run_start_time='2011:001' --outdir regress_skadev

  # NEW WINDOW
  ska
  python ./psmc_check.py --run_start_time='2011:001' --outdir regress_ska

  diff regress_ska{,dev}/validation_quant.csv
  rm $ska/dev/data/telem_archive

==> OK

Other modules
^^^^^^^^^^^^^

- Ska.Table: OK (with patch).  Updated because recent pyfits throws IOError,
  not caught properly.  This was true of Flight Ska, just did not run tests for
  pyfits 2.2.2 install.
- Ska.DBI: OK   (need to run as aca and link to aspect_authorization)
- Quaternion: OK
- Ska.ftp: OK
- Ska.Numpy: OK
- Ska.ParseCM: OK
- Ska.quatutil: OK
- Ska.Shell: OK
- asciitable: OK

Installation on HEAD network
------------------------------------

Copy the skare tar distribution skare-0.11-64.tar.gz to /proj/sot/ska/dist.
::

  # Do everything as aca
  su -l aca

  # Stop all cron jobs
  touch /proj/sot/ska/data/task_schedule/master_heart_attack

  cd /proj/sot/ska/dist
  mkdir skare-0.11-64
  cd skare-0.11-64
  tar xf ../skare-0.11-64.tar.gz

  # preview updates in key areas
  rsync --size-only --dry-run -av bin/ /proj/sot/ska/bin/
  rsync --size-only --dry-run -av lib/ /proj/sot/ska/lib/
  # NO CHANGES

  ls        /proj/sot/ska/dist/skare-0.11-64/
  mv /proj/sot/ska/build/x86_64-linux_CentOS-5{,.bak}
  mv /proj/sot/ska/arch/x86_64-linux_CentOS-5{,.bak}

  cd /proj/sot/ska/dist
  rsync -av /proj/sot/ska/dist/skare-0.11-64/ /proj/sot/ska/ >& install-0.11-64.log 

  # Make modules that cannot be made on virtual machine, e.g. Sybase, and
  # ensure completeness.
  # First clone the skare installer repo, then
  cd /proj/sot/ska/dist
  (ska; git clone ~aldcroft/git/skare)
  cd skare
  git branch # confirm correct branch  
  ./configure --prefix=/proj/sot/ska
  make python_modules

  # TEST per instructions below

  # Allow all cron jobs to resume
  rm /proj/sot/ska/data/task_schedule/master_heart_attack

Installation on GRETA network
------------------------------------

Perform GRETA network installation after a soak period of about one week on the
HEAD network.  Start by copying the skare tar distribution skare-0.11-32.tar.gz
to /proj/sot/ska/dist on the GRETA network.  Then do the installation steps::

  # Do everything as aca
  su -l aca

  # Stop all cron jobs
  crontab -e

  cd /proj/sot/ska/dist
  mkdir skare-0.11-32
  cd skare-0.11-32
  tar xf ../skare-0.11-32.tar.gz

  # preview updates in key areas
  rsync --size-only --dry-run -av bin/ /proj/sot/ska/bin/
  rsync --size-only --dry-run -av lib/ /proj/sot/ska/lib/

  mv /proj/sot/ska/build{,.bak}
  ls /proj/sot/ska/dist/skare-0.11-32/

  # DO THE INSTALL
  rsync -av /proj/sot/ska/dist/skare-0.11-32/ /proj/sot/ska/ >& install.log 

  # Make modules that cannot be made on virtual machine, e.g. Sybase, and
  # ensure completeness.
  make python_modules

  # TEST per instructions below (as applicable for GRETA)

  # Allow all cron jobs to resume
  crontab -e

Fallback
--------

Only three files are expected to changed (the rest go in a new arch directory): 

- bin/sysarch 
- bin/syspathsubst 
- lib/perl/CXC/Envs/Flight.pm.

Confirm with::

  rsync --dry-run -av /proj/sot/.snapshot/nightly.0/ska/bin/ /proj/sot/ska/bin/
  rsync --dry-run -av /proj/sot/.snapshot/nightly.0/ska/lib/ /proj/sot/ska/lib/

Restore with::

  cp -p /proj/sot/.snapshot/nightly.0/ska/bin/sysarch /proj/sot/ska/bin/
  cp -p /proj/sot/.snapshot/nightly.0/ska/bin/syspathsubst /proj/sot/ska/bin/
  cp -p /proj/sot/.snapshot/nightly.0/ska/lib/perl/CXC/Envs/Flight.pm /proj/sot/ska/lib/perl/CXC/Envs/
  rm -rf /proj/sot/ska/build
  mv /proj/sot/ska/build{.bak,}

Post-install testing 
--------------------

Starcheck
^^^^^^^^^^^^
::

  cd ~/hg/starcheck
  /proj/sot/ska/bin/starcheck -dir AUG0104A -fid_char fid_CHARACTERIS_JUL01 -out test.new
  diff test.7cb31b.txt test.new.txt

==> OK

Eng_archive
^^^^^^^^^^^^
::

  cd ~/hg
  hg clone /proj/sot/ska/hg/eng_archive
  cd eng_archive

Follow the steps for "Regression test for new skare in /proj/sot/ska" in NOTES.test.

==> OK

Commanded states
^^^^^^^^^^^^^^^^^^^
::

  cd ~/hg/timelines
  nosetests

==> PENDING...

psmc_check
^^^^^^^^^^
::

  ska
  cd ~/hg/psmc
  python ./psmc_check.py --run_start_time='2011:001' --outdir regress_ska.new

  diff regress_ska{.new,.7cb31b}/validation_quant.csv

==> OK

Other modules
^^^^^^^^^^^^^

- Ska.Table: OK
- Ska.DBI: OK
- Quaternion (nose): OK
- Ska.ftp (nose): OK
- Ska.Numpy: OK
- Ska.ParseCM: OK
- Ska.quatutil: OK
- Ska.Shell: OK
- asciitable: OK