******************************************************************************* README.SGI This directory contains the SGI version of sendmail.org's version of sendmail and how to upgrade from sendmail-A.B.C to sendmail-X.Y.Z The following commands should be run from the isms/eoe/cmd/sendmail (this) directory unless otherwise stated. ******************************************************************************* . Each version of the sendmail org code is kept in its own directory called sendmail-X.Y.Z . Untar the sendmail.X.Y.Z.tar.gz file in this directory, creating the sendmail-X.Y.Z directory. . Rename sendmail-X.Y.Z to sendmail.X.Y.Z.orig . The Makefile in this directory has to be modified to set the SENDMAIL_VERSION macro to the new sendmail-X.Y.Z directory name. . Since p_tools does not allow for checking in of symbolic links you have to generate a list of symlinks. Do this with the command ./symlink-tree preserve sendmail-X.Y.Z. Note that this command will delete the symlinks. . All SGI specific patches to the sendmail code need to be migrated from sendmail-A.B.C to sendmail-X.Y.Z in such a way that the patches remain separate. This requires a multi-step process that is only partially automated. Do not blindly migrate patches ... Look at sendmail-A.B.C and see if the patch is still needed and appropriate in the new sendmail. . copy the virgin source tree to a patch source tree . apply the selected patch from the sendmail-A.B.C tree These two steps can be done with the command ./copy-tree sendmail-X.Y.Z.orig sendmail-X.Y.Z.patch.foo \ sendmail-A.B.C/patches/patch.foo . Address all errors reported by the patch command (run by copy-tree) and any .rej files. This requires human intervention. . Restore symlinks in the patch tree with the command ./symlink-tree restore sendmail-X.Y.Z . Compile AND TEST the patch. For complex patches you might want to verify the functionality (and see if anything new needs to be added) by generating a diff between (virgin) sendmail-A.B.C and sendmail-X.Y.Z trees. . For any new patches that need to be added use the copy-tree command without any patch arguments, then modify the source AND TEST THE NEW PATCHES. . Copy the virgin source tree to the new target tree ./copy-tree sendmail-X.Y.Z.orig sendmail-X.Y.Z . Generate patch files for each of the newly created patch trees with the command ./patch-tree sendmail-X.Y.Z sendmail-X.Y.Z.patch.* Note that this command will put patch files into sendmail-X.Y.Z/patches with each file being patch.XXX thus the file sendmail-X.Y.Z/patches/patch.foo in our example. . Apply all of the new patches in the sendmail-X.Y.Z tree (by hand) . cd sendmail-X.Y.Z . patch -p1 -s < patches/patch.foo . Address any errors or .rej files that happen before applying the next patch. . Copy the sendmail-A.B.C/patches/README file to sendmail-X.Y.Z/patches/README and make any appropriate changes. . Build AND TEST the new version of sendmail. You can do the build by just typing "make" in this directory. . delete all of the patch trees that you created in the above steps. (you might want to wait till your totaly done to do this) . You want to clean out the sendmail-X.Y.Z tree before continuing, you can do this with the command (from this directory) make clobber . Since SGI is now required to ship source code with our product, need to setup both the idb file that is used during the build process. It also sets up src.dirs and src.files files that are used during the install phase. This can be done by running p_modify src.files src.dirs ; make src.idb Then modify isms/eoe/build/idb and remove all entries that end in SENDMAIL_SRC, then insert the contents of the src.idb file into isms/eoe/build/idb . p_modify -f sendmail-X.Y.Z ... you know the rest ...