
\documentstyle[amsfonts,12pt]{article}

\begin{document}

\begin{center}
GAP www updating HowTo
\end{center}

{\bf Part 1}: Compiled by David Joyner based on advice from Max Neunh\"offer.

 To change a webpage not related to a package:

\begin{enumerate}
\item
cd to the directory you want to edit a *.mixer file in.
  (eg, {\tt Doc/History})

\item
{\tt cvs update}

\item
edit *.mixer and save and exit editor
  May also need to edit ``tree'', or even create other files.


if you have to change someone's address, go to the file addresses in the
lib subdirectory and change it there.


\item
Run the script {\tt mixer.py -f}.

\noindent
If mix ``fails'' due to an html error then you need to correct
     it and run mix again. If the old version got committed and
     tagged by mistake, then they must be recommitted and retagged.


\item
Check local copy in browser for typos, whatever.
  Assume this is okay.

\item
If a new file is created, say foo.mixer, then run
  cvs add foo.mixer

\item
{\tt cvs commit}. This applies to *.mixer files and 
sometimes other files, but never to *.html files, since they are
created by mixer.py on the server. 
Use emacs to add comments above
  the {\tt CVS:} lines, save the file, then exit emacs.
  Do this for each file changed/edited.
(If vi loads but you prefer emacs, type {\tt :q} to quit and then
  {\tt export CVSEDITOR="emacs"}. Now {\tt cvs commit}
again since your previous commit was probably aborted.)

\item
{\tt cvs tag -F PUB <filename>}
  ({\bf not} {\tt cvs tag -f PUB}!)
  Do this for each file changed.

\item
If you are updating an official GAP package, run

{\small{
\begin{verbatim}
ssh -x -i $HOME/.ssh/gap_yin_rsa gap@yin.dcs.st-and.ac.uk\ 
   /gap/WWW/fetchpkgmanuals+
\end{verbatim}
}}

\item
run the script {\tt /gap/WWW/makeupdate} on
{\tt yin.dcs.st-and.ac.uk}. Here is an example of a 
local bash script which will call this:

{\small{
\begin{verbatim}
#!/bin/bash
#runs the update script which is on yin in /gap/WWW/makeupdate
ssh -x -i $HOME/.ssh/gap_yin_rsa gap@yin.dcs.st-and.ac.uk \
 /gap/WWW/makeupdate
\end{verbatim}
}}
(This is all on one line.)

\item
If you want to check the version, run
 {\tt cvs status foo.mixer}.

\end{enumerate}

\vskip .2in

 To change a webpage related to a package:


\begin{enumerate}
\item
A GAP package author contacts Bjoern with changes
    or updates.

\item
Bjoern does his magic to the packages to get them
    publishable. This produces a pkgconf.py file, among other
    things. He checks in his files into CVS.

\item
Bjoern contacts me and tells me to ``publish'' his package
    work.

\item
I run
    {\tt cd WWW2/Packages}
    {\tt cvs update}

    (This checks out Bj\"orn's new versions of the files and possibly new
    files for new packages.)

\item
edit Packages/tree
    edit the page Packages/packages by adding entries associated
      to new packages to the list 'Deposited packages' at the
      bottom of that page.
    if this involves an upgrade from ``undeposited'' to ``deposited'',
      the old link on the page  Packages/undep must be removed from
      the page Packages/undep.
    may need to edit 
\newline
{\tt Overview/Capabilities/*.mixer} if there is a link to it

\item
run {\tt mixer.py -f}  

   Here look and check whether the new pages make sense.

\item
cvs commit.

\item
{\tt cvs tag -F PUB guava.mixer pkgconf.py},
      for example. For new packages also
    {\tt cvs tag -F PUB tree}


(and don't forget pkgconf.py if files were added)


\item
Run

\verb+ssh -x -i $HOME/.ssh/gap_yin_rsa gap@yin.dcs.st-and.ac.uk\ +
\newline
\verb+  /gap/WWW/fetchpkgmanuals+
(Again, this is all on one line.)

\item
run webupdate, which is the script described above.


\item
If you want to check the version, run
  cvs status foo.mixer

\end{enumerate}

\vskip .2in

\newpage

{\bf Part II}: Compiled by Bj\"orn Assmann (possibly
with feedback from Max?)

\begin{center}
=========================================

    Steps of the update of GAP-package-websites for
            the maintainer of the websites

=========================================
\end{center}


\begin{enumerate}
\item
Setup

----------------------------------------

The maintainer needs a working copy of the WWW2 directory
and Mixer directory in the St Andrews CVS repository.
For detailed instructions on this see yin:/gap/WWW/INSTALL.


\item
The update itself

----------------------------------------

\begin{itemize}
\item[(a)] 
Preliminary work of the package admin (for more details see
\newline
  {\tt yin:/space/PackageAdmin/PackageAdmin/HOWTO}):

  The package admin checks whether there are new version of Gap packages
  and tests the new versions.

  Once all problems with the new versions
  are solved, he copies the new package archive and the new merged
  package archive to the Ftp server (currently this is
  {\tt yin:/ftp/pub/gap/gap44}).

  He also updates its
  own copy of the online documentation of the new packages
  (which is in the moment in 
\newline
{\tt yin:/space/PackageAdmin/webftp/Packages/pkg}).

  Further he prepares the update of the information of the Gap website.
  In particular he checks in via cvs the new meta files
  for the packages which are

  {\tt WWW2/Packages/<pkgname>.mixer files}

  {\tt WWW2/Packages/pkgconf.py}

  {\tt WWW2/Packages/currentPackageInfoURLList file}

  Then the package admin contacts the maintainer to publish
  the changes.

\item[(b)] 
The maintainer goes to its own {\tt WWW2/Packages} directory
  (cd {\tt WWW2/Packages}) and updates it (cvs update).

  Then he runs the mixer with the command
               {\tt <mixerdir>/Mixer/mixer.py -f}
  If the directory Mixer and WWW2 are in the same directory then
                {\tt ../Mixer/mixer.py -f}
  will work.

\item[(c)] 
The maintainer double checks the new websites of the changed packages
  (did the version numbers changed, did the release date change,
   is the status correct, do the links to the home pages of the authors
work,
   are the links to online documentation correct).

  If everything is fine, then he tags all new meta files as ``PUB''.
  For this he uses the command
                      {\tt cvs tag -F PUB ...}

\item[(d)] 
The maintainer updates the web pages on the server with the command

\verb+  ssh -x -i $HOME/.ssh/gap_yin_rsa gap@yin.dcs.st-and.ac.uk\ +
\newline
\verb+   /gap/WWW/makeupdate+

\item[(e)] 
The maintainer updates the online documentation of the new packages.
  For this he uses the command
  
\verb+ssh -x -i $HOME/.ssh/gap_yin_rsa gap@yin.dcs.st-and.ac.uk\ +
\newline
\verb+  /gap/WWW/fetchpkgmanuals+

  This step synchronises the contents of
\newline
  {\tt yin:/space/PackageAdmin/webftp/Packages/pkg}, which is copy of the
  package online documentation of the package admin and
  {\tt /gap/WWW/Manuals/pkg}, which is the official place of the
  online documentation.

\end{itemize}
\end{enumerate}


	


\end{document}
