File: aaa_rsync_readme.txt This is an early developer build kit for rsync. It is intended to help start others participating in porting rsync over to OpenVMS. What is rsync? See http://rsync.samba.org. It is a way of keeping directories in sync between multiple systems that may not have reliable communications links. While the rsync client built by this kit will transfer files, it has several latent bugs in it. The UNIX/WINDOWS version of rsync uses fork() to run separate processes. This is not practical for OpenVMS. Instead, this version of rsync for OpenVMS is merging in pthreads instead of forked processes. The consequence of this is silent data corruption. rsync uses both global and static varibles intensively, approximately 300 of them. Of these about 100 have been determined to be only set before the child processes are forked, and do not need to be changed. The fix for this is to create global structures for the main, sender, and receiver threads. Then the variables that are thread specific moved into them, 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: rsync -ruv host.example.com::ftp/unpacked/rsync . The other paths still have not been converted over to pthreads. I doubt they will work. To build, you will need a C compiler, and either MMS or Madgoat Make, and optionally gdiff. You will need gzip or gunzip and VMSTAR to get the UNIX sources for 2.5.6 from http://rsync.samba.org. This kit only contains the changes for OpenVMS, and they are mainly in the 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. gdiff should be optional if I have setup the rsync.mms file correctly. I have only built this on OpenVMS Alpha 7.3-2 EFT, but expect that it will build on OpenVMS 7.3-1 also. It also may require ODS-5 volumes for receiving files because of UNIX file specifications. I have not tried a VAX build because of the UNIX filename issues. A wrapper system like FRONTPORT or what ever the current SAMBA for OpenVMS is using may help there. The build procedure uses logical names and search lists. It expects that the UNIX source will be in one directory tree PROJECT_ROOT:[RSYNC]. 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. And it expects that your scratch area, and source code work in progress will be in the directory PROJECT_ROOT:[RYSNC_VMS] When the RSYNC client is fully functional, it will be able to be used to keep a different UNIX source tree up to date. You will then want two UNIX source trees, one for the current stable release, and the other for the future release. The idea is by doing the builds against the same future sources as the UNIX developers of OpenSource projects, the OpenVMS ports can be released at the same time. Work to be done: (plenty) 1. Fix the other fork() references to be either thread creations or LIB$SPAWN()/SYS$CREPRC() calls, or document a different way of getting same task done. 2. Find all the global static variables and convert them to thread safe. 3. Get the server mode running. 4. Get the test scripts to work, under GNV, or provide DCL equivalents. 5. The TPU program that converts man pages to runoff .rnh files is not detecting and fixing a duplicate topic reference. 6. Any other general fixups including kitting, and documentation. To build (quick instructions) gunzip/detar UNIX source into RPOJECT_ROOT:[RSYNC],[RSYNC.LIB], ... directories. UNZIP the OpenVMS source into CMS_ROOT:[RYSNC_VMS],[RSYNC_VMS.LIB], ... directories. Create PROJECT_ROOT:[RYSNC_VMS.LIB],[RSYNC_VMS.ZLIB],[RSYNC_VMS.POPT]. Set default PROJECT_ROOT:[RSYNC_VMS] Inspect all the *.com files in CMS_ROOT:[RSYNC_VMS] @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)