Patches and Updates
Creating Patches/Updates
Patches and updates can be made for the NST distribution. The patch/update management system is found under the directory: "patches" and is composed of a collection of scripts, makefiles, XML and XSL files.
In a Nut Shell:
- A new patch or update is stubbed in using a template.
 - The manifest file: nstpatch.xml is then updated.
 - The script file: nstpatch.sh is then updated (this is what will run on the NST probe).
 - Additional files required for the patch might need to be added to the patch directory.
 - The patch is tested using the probe-install make target.
 - The final patch is built and deployed using the patch and upload make targets.
 
Stubbing in a New Patch
Use the patch-create target to stub in the necessary files to create a new patch.
make: Entering directory `/root/nst/patches' /root/nst/patches/templates/create "/root/nst" "P"; ID: "P200703091" already used ID: "P200703092" available and claimed Installing template: "/root/nst/patches/templates/nstpatch.sh.create" ... Successfully installed template: "/root/nst/patches/templates/nstpatch.sh.create" Installing template: "/root/nst/patches/templates/nstpatch.xml.create" ... Successfully installed template: "/root/nst/patches/templates/nstpatch.xml.create" make: Leaving directory `/root/nst/patches'
nstpatch.sh nstpatch.xml
Stubbing in a New Update
Use the update-create target to stub in the necessary files to create a new update.
make: Entering directory `/root/nst/patches' /root/nst/patches/templates/create "/root/nst" "U"; ID: "U200703091" available and claimed Installing template: "/root/nst/patches/templates/nstpatch.sh.create" ... Successfully installed template: "/root/nst/patches/templates/nstpatch.sh.create" Installing template: "/root/nst/patches/templates/nstpatch.xml.create" ... Successfully installed template: "/root/nst/patches/templates/nstpatch.xml.create" make: Leaving directory `/root/nst/patches'
nstpatch.sh nstpatch.xml
Files to Edit
nstpatch.xml
This is the "manifest" file. It provides a description of the patch as well as information on how the patch can be used. This file is well commented and indicates what needs to be changed/modified.
nstpatch.sh
This file contains the actual script which will run on the NST probe when deployed. You can use any bash commands you would like within this file. In addition, you will have access to ALL of the functions found in the .bash files found in the directory: src/include/functions.
Deploying Patches and Updates
Testing Patches and Updates
Before deploying a patch or update to the public, you should use the probe-install target to verify that the patch works on a local NST system. This is done using the following make invocation (id corresponds to the patch/update ID and HOST specifies the IP address of the NST system to perform the test on):
make: Entering directory `/root/nst/patches'
for f in *.zip *README.html summary.xml; do \
  if [ -f "${f}" ]; then /bin/rm -f "${f}"; fi; \
done
xsltproc -o "/root/nst/config/P200702161.sh" "xsl/nstpatch2createzip.xsl" "P20    02161/nstpatch.xml";
/bin/chmod 755 "/root/nst/config/P200702161.sh";
"/root/nst/config/P200702161.sh";
### Start Time: 2007-03-09 07:40:37
+ BEGIN   + Creating patch: /root/nst/patches/P200702161-100.zip
+ SUCCESS + Removed old directory: /root/nst/tmp/nstpatch/P200702161
+ SUCCESS + Created patch build directory: /root/nst/tmp/nstpatch/P200702161
+ NOTE    + Copying 2 files/directories
+ SUCCESS + Copied: /root/nst/patches/P200702161/nstpatch.sh
+ SUCCESS + Copied: /root/nst/patches/P200702161/nsthdinstall
+ SUCCESS + Generated: README.html
  adding: nsthdinstall (deflated 73%)
  adding: nstpatch.sh (deflated 73%)
  adding: README.html (deflated 69%)
/bin/rm -fr /root/nst/tmp/nstpatch/P200702161
+ SUCCESS + Created: /root/nst/patches/P200702161-100.zip
  <md5sum>AUTOMATICALLY_GENERATED</md5sum>
+ SUCCESS + Updated MD5 value to: "18a291d8f5d701072bab5a9e792477a8" in: "nstp    ch.xml"
+ END     + Finished creating patch: /root/nst/patches/P200702161-100.zip
Archive:  /root/nst/patches/P200702161-100.zip
  Length     Date   Time    Name
 --------    ----   ----    ----
    78414  02-26-07 08:41   nsthdinstall
    68542  03-09-07 07:40   nstpatch.sh
     5108  03-09-07 07:40   README.html
 --------                   -------
   152064                   3 files
-------------------------------------------------------------
### End Time: 2007-03-09 07:40:38  Duration: +0000 00:00:01
Transferring patch to NST probe at: "192.168.0.31"
scp /root/nst/patches/P200702161-*.zip "root@192.168.0.31:/tmp/";
Enter passphrase for key '/root/.ssh/id_rsa':
Enter passphrase for key '/root/.ssh/id_dsa':
root@192.168.0.31's password:
P200702161-100.zip                              100%   40KB  40.5KB/s   00:00
Installing patch on NST probe at: "192.168.0.31"
ssh "root@192.168.0.31" "(rm -fr /tmp/patch && mkdir /tmp/patch && cd /tmp/patch && unzip /tmp/P200702161-*.zip && rm -f /bin/P200702161-*.zip && ./nstpatch.sh && cd .. && rm -fr /tmp/patch)"
Enter passphrase for key '/root/.ssh/id_rsa':
Enter passphrase for key '/root/.ssh/id_dsa':
root@192.168.0.31's password:
Archive:  /tmp/P200702161-100.zip
  inflating: nsthdinstall
  inflating: nstpatch.sh
  inflating: README.html
### Start Time: 2007-03-09 07:47:13
+ BEGIN   + Installing: "/usr/bin/nsthdinstall"
+ NOTE    + Installing via:
  /usr/bin/install --owner "root" --group "root" --mode "700" \
    "/tmp/patch/nsthdinstall" "/usr/bin"
+ SUCCESS + Patched/installed file: "/usr/bin/nsthdinstall"
+ END     + Installing: "/usr/bin/nsthdinstall"
+ SUCCESS + Patch Id: "P200702161", Version: "1.0.0" was successfully installed.
-------------------------------------------------------------
### End Time: 2007-03-09 07:47:13  Duration: +0000 00:00:00
make: Leaving directory `/root/nst/patches'
Making Patches/Updates Available to the Public
Once you've completed testing the patch, you can deploy it to the public web server to make it available to other NST users. This is done using the patch and upload targets as shown below:
make: Entering directory `/root/nst/patches'
xsltproc -o "/root/nst/config/P200702161.sh" "xsl/nstpatch2createzip.xsl" "P200702161/nstpatch.xml";
/bin/chmod 755 "/root/nst/config/P200702161.sh";
"/root/nst/config/P200702161.sh";
### Start Time: 2007-03-09 07:54:41
+ BEGIN   + Creating patch: /root/nst/patches/P200702161-100.zip
+ SUCCESS + Removed old directory: /root/nst/tmp/nstpatch/P200702161
+ SUCCESS + Created patch build directory: /root/nst/tmp/nstpatch/P200702161
+ NOTE    + Copying 2 files/directories
+ SUCCESS + Copied: /root/nst/patches/P200702161/nstpatch.sh
+ SUCCESS + Copied: /root/nst/patches/P200702161/nsthdinstall
+ SUCCESS + Generated: README.html
+ SUCCESS + Removed old zip: /root/nst/patches/P200702161-100.zip
  adding: nsthdinstall (deflated 73%)
  adding: nstpatch.sh (deflated 73%)
  adding: README.html (deflated 69%)
/bin/rm -fr /root/nst/tmp/nstpatch/P200702161
+ SUCCESS + Created: /root/nst/patches/P200702161-100.zip
  <md5sum>cdd2e9e848aeab233ba4990a5143efde</md5sum>
+ SUCCESS + Updated MD5 value to: "5be2324440d48965bdeb9f1000649573" in: "nstpatch.xml"
+ END     + Finished creating patch: /root/nst/patches/P200702161-100.zip
Archive:  /root/nst/patches/P200702161-100.zip
  Length     Date   Time    Name
 --------    ----   ----    ----
    78414  02-26-07 08:41   nsthdinstall
    68577  03-09-07 07:54   nstpatch.sh
     5108  03-09-07 07:54   README.html
 --------                   -------
   152099                   3 files
-------------------------------------------------------------
### End Time: 2007-03-09 07:54:42  Duration: +0000 00:00:01
printf "<?xml version=\"1.0\"?>\n\n<nstpatches posted=\"%s\">\n\n" "$(date +"%Y-%m-%d %H:%M:%S")" >| summary.xml;
for p in $(/usr/bin/find . -name "nstpatch.xml" | sort --reverse); do \
  echo "Extracting summary info from: ${p}"; \
  /usr/bin/xsltproc "xsl/nstpatch2summary.xsl" "${p}" >> summary.xml 2>/dev/null; \
done
Extracting summary info from: ./U200703091/nstpatch.xml
Extracting summary info from: ./U200703081/nstpatch.xml
Extracting summary info from: ./U200701181/nstpatch.xml
Extracting summary info from: ./U200606011/nstpatch.xml
Extracting summary info from: ./P200703092/nstpatch.xml
Extracting summary info from: ./P200703091/nstpatch.xml
Extracting summary info from: ./P200703061/nstpatch.xml
Extracting summary info from: ./P200702161/nstpatch.xml
Extracting summary info from: ./P200606051/nstpatch.xml
Extracting summary info from: ./P200606031/nstpatch.xml
Extracting summary info from: ./P200606012/nstpatch.xml
Finished building: summary.xml
Building: README.html
Finished building: README.html
make: Leaving directory `/root/nst/patches'
make: Entering directory `/root/nst/patches'
... OMITTED OUTPUT ...
building file list ...
4 files to consider
P200702161-100.zip
       41472 100%    7.64MB/s    0:00:00 (xfer#1, to-check=3/4)
P200702161-100README.html
        5108 100%   49.39kB/s    0:00:00 (xfer#2, to-check=2/4)
README.html
       22710 100%  211.22kB/s    0:00:00 (xfer#3, to-check=1/4)
summary.xml
        3152 100%   29.04kB/s    0:00:00 (xfer#4, to-check=0/4)
sent 29839 bytes  received 672 bytes  4068.13 bytes/sec
total size is 72442  speedup is 2.37
... OMITTED OUTPUT ...
Succesfully updated the Web server with the NST patch/update...
make: Leaving directory `/root/nst/patches'