 File: aaa_rsync_readme.txt  / This is an early developer build kit for rsync.   G It is intended to help start others participating in porting rsync over  to OpenVMS.   C What is rsync?  See http://rsync.samba.org.  It is a way of keeping G directories in sync between multiple systems that may not have reliable  communications links.   L While the rsync client built by this kit will transfer files, it has several latent bugs in it.  N The UNIX/WINDOWS version of rsync uses fork() to run separate processes.  This is not practical for OpenVMS.   I Instead, this version of rsync for OpenVMS is merging in pthreads instead  of forked processes.  J The consequence of this is silent data corruption.  rsync uses both globalK and static varibles intensively, approximately 300 of them.  Of these about N 100 have been determined to be only set before the child processes are forked, and do not need to be changed.  I The fix for this is to create global structures for the main, sender, and O receiver threads.  Then the variables that are thread specific moved into them, L and the routines need to learn what thread called them so they can reference< the right variable.  That is actually simpler than it looks.  < But the more people working on it and testing it the better.  ) Only this type of syntax is known to run:   4    rsync -ruv host.example.com::ftp/unpacked/rsync .  M The other paths still have not been converted over to pthreads.  I doubt they 
 will work.    E To build, you will need a C compiler, and either MMS or Madgoat Make, E and optionally gdiff.  You will need gzip or gunzip and VMSTAR to get 7 the UNIX sources for 2.5.6 from http://rsync.samba.org.   J This kit only contains the changes for OpenVMS, and they are mainly in theH form of TPU macros.  This is so that I can build against the current CVS< checkins for rsync with out having to redo all of the edits.  * So you will also need the UNIX source kit.  F gdiff should be optional if I have setup the rsync.mms file correctly.  J I have only built this on OpenVMS Alpha 7.3-2 EFT, but expect that it willM build on OpenVMS 7.3-1 also.  It also may require ODS-5 volumes for receiving * files because of UNIX file specifications.  L I have not tried a VAX build because of the UNIX filename issues.  A wrapperM system like FRONTPORT or what ever the current SAMBA for OpenVMS is using may  help there.     M The build procedure uses logical names and search lists.  It expects that the ? UNIX source will be in one directory tree PROJECT_ROOT:[RSYNC].   K It expects a set of local reference libraries to be in CMS_ROOT:[RSYNC_VMS] < That would be were you put the files unzipped from this kit.  L And it expects that your scratch area, and source code work in progress will, be in the directory PROJECT_ROOT:[RYSNC_VMS]  H When the RSYNC client is fully functional, it will be able to be used toJ keep a different UNIX source tree up to date.  You will then want two UNIXG source trees, one for the current stable release, and the other for the  future release.   F The idea is by doing the builds against the same future sources as theI UNIX developers of OpenSource projects, the OpenVMS ports can be released  at the same time.    Work to be done: (plenty)   C 1. Fix the other fork() references to be either thread creations or I    LIB$SPAWN()/SYS$CREPRC() calls, or document a different way of getting     same task done.  H 2. Find all the global static variables and convert them to thread safe.   3. Get the server mode running.   G 4. Get the test scripts to work, under GNV, or provide DCL equivalents.   F 5. The TPU program that converts man pages to runoff .rnh files is not4    detecting and fixing a duplicate topic reference.  A 6. Any other general fixups including kitting, and documentation.      To build (quick instructions)   C gunzip/detar UNIX source into RPOJECT_ROOT:[RSYNC],[RSYNC.LIB], ...  directories.  G UNZIP the OpenVMS source into CMS_ROOT:[RYSNC_VMS],[RSYNC_VMS.LIB], ...  directories.  F Create PROJECT_ROOT:[RYSNC_VMS.LIB],[RSYNC_VMS.ZLIB],[RSYNC_VMS.POPT].  $ Set default PROJECT_ROOT:[RSYNC_VMS]  3 Inspect all the *.com files in CMS_ROOT:[RSYNC_VMS]   I @CMS_ROOT:[RSYNC_VMS]SETUP_LOCAL_BUILD.COM.  This sets up all the logical " names that are used for the build.  
 MMS OR MMK  , MMS/DESCRIPT=PRJ_SRC:RSYNC.MMS/OUT=BUILD.LOG    
 Good Luck.
 John Malmberg  wb8tyw@qsl.network (munged) 