diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2014-01-04 20:59:43 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2014-01-04 20:59:43 +0200 |
commit | 4eee688d1ff5059db3d40af26df188b90368589c (patch) | |
tree | ec41262bc000d83e3db63d3c8d812bcccaa29b63 /vms/compare_gawk_source.com | |
parent | e7214165a06bc1f4d9c6bdffc6b2b060beb6afee (diff) | |
download | egawk-4eee688d1ff5059db3d40af26df188b90368589c.tar.gz egawk-4eee688d1ff5059db3d40af26df188b90368589c.tar.bz2 egawk-4eee688d1ff5059db3d40af26df188b90368589c.zip |
Update copyright years in VMS files, add packaging scripts.
Diffstat (limited to 'vms/compare_gawk_source.com')
-rw-r--r-- | vms/compare_gawk_source.com | 367 |
1 files changed, 367 insertions, 0 deletions
diff --git a/vms/compare_gawk_source.com b/vms/compare_gawk_source.com new file mode 100644 index 00000000..260ec4eb --- /dev/null +++ b/vms/compare_gawk_source.com @@ -0,0 +1,367 @@ +$! Compare_gawk_source.com +$! +$! This procedure compares the files in two directories and reports the +$! differences. +$! +$! It needs to be customized to the local site directories. +$! +$! This is used by me for these purposes: +$! 1. Compare the original source of a project with an existing +$! VMS port. +$! 2. Compare the checked out repository of a project with the +$! the local working copy to make sure they are in sync. +$! 3. Keep a copy directory up to date. The third is needed by +$! me because VMS Backup can create a saveset of files from a +$! NFS mounted volume. +$! +$! First the files in the original source directory which is assumed to be +$! under source codde control are compared with the copy directory. +$! +$! Then the files are are only in the copy directory are listed. +$! +$! The result will five diagnostics about of files: +$! 1. Files that are not generation 1. +$! 2. Files missing in the copy directory. +$! 3. Files in the copy directory not in the source directory. +$! 4. Files different from the source directory. +$! 5. Files that VMS DIFF can not process. +$! +$! This needs to be run on an ODS-5 volume. +$! +$! If UPDATE is given as a second parameter, files missing or different in the +$! copy directory will be updated. +$! +$! By default: +$! The source directory is source_root:[gawk.reference.gawk], +$! the logical used on my system for the GNV Mecurial repository checkout. +$! If source_root: is not defined, then src_root:[gawk] will be +$! translated to something like DISK:[dir.gawk.reference.gawk] +$! and then DISK:[dir.gawk.vms_source.gawk] will be used. +$! +$! The copy directory is vms_root:[gawk] +$! The UPDATE parameter is ignored. +$! +$! This setting is used to make sure that the working vms directory +$! and the VMS specific repository checkout directory have the same +$! contents if they are different. +$! +$! If P1 is "SRCBCK" then this +$! The source directory tree is: src_root:[gawk] +$! The copy directory is src_root1:[gawk] +$! +$! src_root1:[gawk] is used by me to work around that VMS backup will +$! not use NFS as a source directory so I need to make a copy. +$! +$! This is to make sure that the backup save set for the unmodified +$! source is up to date. +$! +$! If your repository checkout is not on an NFS mounted volume, you do not +$! need to use this option or have the logical name src_root1 defined. +$! +$! If P1 is "VMSBCK" then this changes the two directories: +$! The source directory is vms_root:[gawk] +$! The copy directory is vms_root1:[gawk] +$! +$! vms_root: +$! src_root1:[gawk] is used by me to work around that VMS backup will +$! not use NFS as a source directory so I need to make a copy. +$! +$! This is to make sure that the backup save set for the unmodified +$! source is up to date. +$! +$! If your repository checkout is not on an NFS mounted volume, you do not +$! need to use this option or have the logical name src_root1 defined. +$! +$! 02-Jan-2014 J. Malmberg +$!========================================================================== +$! +$! Update missing/changed files. +$update_file = 0 +$if (p2 .eqs. "UPDATE") +$then +$ update_file = 1 +$endif +$! +$myproc = f$environment("PROCEDURE") +$myprocdir = f$parse(myproc,,,"DIRECTORY") - "[" - "]" - "<" - ">" +$myprocdir = f$edit(myprocdir, "LOWERCASE") +$mydefault = f$environment("DEFAULT") +$mydir = f$parse(mydefault,,,"DIRECTORY") +$mydir = f$edit(mydir, "LOWERCASE") +$odelim = f$extract(0, 1, mydir) +$mydir = mydir - "[" - "]" - "<" - ">" +$mydev = f$parse(mydefault,,,"DEVICE") +$! +$ref = "" +$if P1 .eqs. "" +$then +$ ref_base_dir = myprocdir - ".vms" +$ wrk_base_dir = mydir +$ update_file = 0 +$ resultd = f$parse("src_root:",,,,"NO_CONCEAL") +$ resultd = f$edit(resultd, "LOWERCASE") +$ resultd = resultd - "][" - "><" - ".;" - ".." +$ resultd_len = f$length(resultd) - 1 +$ delim = f$extract(resultd_len, 1, resultd) +$ ref_root_base = mydir + delim +$ if f$locate(".reference.", resultd) .lt. resultd_len +$ then +$ resultd = resultd - ref_root_base - "reference." + "vms_source." +$ else +$ resultd = resultd - ref_root_base - "gnu." + "gnu_vms." +$ endif +$ ref = resultd + ref_base_dir +$ wrk = "VMS_ROOT:" + odelim + wrk_base_dir +$ resultd_len = f$length(resultd) - 1 +$ resultd = f$extract(0, resultd_len, resultd) + delim +$ ref_root_dir = f$parse(resultd,,,"DIRECTORY") +$ ref_root_dir = f$edit(ref_root_dir, "LOWERCASE") +$ ref_root_dir = ref_root_dir - "[" - "]" +$ ref_base_dir = ref_root_dir + "." + ref_base_dir +$endif +$! +$if p1 .eqs. "SRCBCK" +$then +$ ref_base_dir = "gawk" +$ wrk_base_dir = "gawk" +$ ref = "src_root:[" + ref_base_dir +$ wrk = "src_root1:[" + wrk_base_dir +$ if update_file +$ then +$ if f$search("src_root1:[000000]gawk.dir") .eqs. "" +$ then +$ create/dir/prot=o:rwed src_root1:[gawk] +$ endif +$ endif +$endif +$! +$! +$if p1 .eqs. "VMSBCK" +$then +$ ref_base_dir = "gawk" +$ wrk_base_dir = "gawk" +$ ref = "vms_root:[" + ref_base_dir +$ wrk = "vms_root1:[" + wrk_base_dir +$ if update_file +$ then +$ if f$search("vms_root1:[000000]gawk.dir") .eqs. "" +$ then +$ create/dir/prot=o:rwed vms_root1:[gawk] +$ endif +$ endif +$endif +$! +$! +$if ref .eqs. "" +$then +$ write sys$output "Unknown compare type specified!" +$ exit 44 +$endif +$! +$! +$! +$! Future - check the device types involved for the +$! the syntax to check. +$ODS2_SYNTAX = 0 +$NFS_MANGLE = 0 +$PWRK_MANGLE = 0 +$! +$vax = f$getsyi("HW_MODEL") .lt. 1024 +$if vax +$then +$ ODS2_SYNTAX = 1 +$endif +$! +$report_missing = 1 +$! +$if .not. ODS2_SYNTAX +$then +$ set proc/parse=extended +$endif +$! +$loop: +$ ref_spec = f$search("''ref'...]*.*;",1) +$ if ref_spec .eqs. "" then goto loop_end +$! +$ ref_dev = f$parse(ref_spec,,,"DEVICE") +$ ref_dir = f$parse(ref_spec,,,"DIRECTORY") +$ ref_dir = f$edit(ref_dir, "LOWERCASE") +$ ref_name = f$parse(ref_spec,,,"NAME") +$ ref_type = f$parse(ref_spec,,,"TYPE") +$! +$! +$ if f$locate(".CVS]", ref_dir) .lt. f$length(ref_dir) then goto loop +$ if f$locate(".cvs]", ref_dir) .lt. f$length(ref_dir) then goto loop +$ if f$locate(".$cvs]", ref_dir) .lt. f$length(ref_dir) then goto loop +$ if f$locate(".^.git", ref_dir) .lt. f$length(ref_dir) then goto loop +$ if f$locate(".$5ngit", ref_dir) .lt. f$length(ref_dir) then goto loop +$! +$ rel_path = ref_dir - "[" - ref_base_dir +$! rel_path_len = f$length(rel_path) - 1 +$! delim = f$extract(rel_path_len, 1, rel_path) +$! rel_path = rel_path - ".]" - ".>" - "]" - ">" +$! rel_path = rel_path + delim +$! +$ if ODS2_SYNTAX +$ then +$ endif +$! +$ wrk_path = wrk + rel_path +$! +$ ref_name_type = ref_name + ref_type +$! +$ if ref_name_type .eqs. "CVS.DIR" then goto loop +$ if ref_name_type .eqs. "cvs.dir" then goto loop +$ if ref_name_type .eqs. "$CVS.DIR" then goto loop +$ if ref_name_type .eqs. "^.git.DIR" then goto loop +$ if ref_name_type .eqs. "$5ngit.DIR" then goto loop +$ if ref_name_type .eqs. "$5NGIT.DIR" then goto loop +$ if ODS2_SYNTAX +$ then +$! +$ endif +$! +$ wrk_spec = wrk_path + ref_name_type +$! +$! +$ wrk_chk = f$search(wrk_spec, 0) +$ if wrk_chk .eqs. "" +$ then +$ if report_missing +$ then +$ write sys$output "''wrk_spec' is missing" +$ endif +$ if update_file +$ then +$ copy/log 'ref_spec' 'wrk_spec' +$ endif +$ goto loop +$ endif +$! +$ wrk_name = f$parse(wrk_spec,,,"NAME") +$ wrk_type = f$parse(wrk_spec,,,"TYPE") +$ wrk_fname = wrk_name + wrk_type" +$ ref_fname = ref_name + ref_type +$! +$ if ref_fname .nes. wrk_fname +$ then +$ write sys$output "''wrk_spc' wrong name, should be ""''ref_fname'""" +$ endif +$! +$ ref_type = f$edit(ref_type, "UPCASE") +$ if ref_type .eqs. ".DIR" then goto loop +$! +$ if ODS2_SYNTAX +$ then +$ ref_fname = f$edit(ref_fname, "LOWERCASE") +$ endif +$! +$! These files have records to long to diff, and we don't change them anyway. +$ ref_skip = 0 +$ if ref_type .eqs. ".GMO" then ref_skip = 1 +$ if ref_type .eqs. ".PDF" then ref_skip = 1 +$ if ref_type .eqs. ".PNG" then ref_skip = 1 +$ if ref_type .eqs. ".JPG" then ref_skip = 1 +$ if ref_fname .eqs. "inftest.ok" then ref_skip = 1 +$ if ref_fname .eqs. "longsub.in" then ref_skip = 1 +$ if ref_fname .eqs. "longsub.ok" then ref_skip = 1 +$ if ref_fname .eqs. "nasty2.ok" then ref_skip = 1 +$ if ref_fname .eqs. "profile5.awk" then ref_skip = 1 +$ if ref_fname .eqs. "profile5.ok" then ref_skip = 1 +$ if ref_fname .eqs. "po.m4" then ref_skip = 1 +$! +$! +$ if ref_skip .ne. 0 +$ then +$ if report_missing +$ then +$ write sys$output "Skipping diff of ''ref_fname'" +$ endif +$ goto loop +$ endif +$! +$! +$ wrk_ver = f$parse(wrk_chk,,,"VERSION") +$ if wrk_ver .nes. ";1" +$ then +$ write sys$output "Version for ''wrk_spec' is not 1" +$ endif +$ set noon +$ diff/out=nl: 'wrk_spec' 'ref_spec' +$ if $severity .nes. "1" +$ then +$ write sys$output "''wrk_spec' is different from ''ref_spec'" +$ if update_file +$ then +$ delete 'wrk_spec';* +$ copy/log 'ref_spec' 'wrk_spec' +$ endif +$ endif +$ set on +$ +$! +$ goto loop +$loop_end: +$! +$! +$missing_loop: +$! For missing loop, check the latest generation. +$ ref_spec = f$search("''wrk'...]*.*;") +$ if ref_spec .eqs. "" then goto missing_loop_end +$! +$ ref_dev = f$parse(ref_spec,,,"DEVICE") +$ ref_dir = f$parse(ref_spec,,,"DIRECTORY") +$ ref_dir = f$edit(ref_dir, "LOWERCASE") +$ ref_name = f$parse(ref_spec,,,"NAME") +$ ref_type = f$parse(ref_spec,,,"TYPE") +$! +$ rel_path = ref_dir - "[" - wrk_base_dir +$! +$! +$ wrk_path = ref + rel_path +$ wrk_spec = wrk_path + ref_name + ref_type +$ wrk_name = f$parse(wrk_spec,,,"NAME") +$ wrk_type = f$parse(wrk_spec,,,"TYPE") +$! +$ wrk_fname = wrk_name + wrk_type" +$ ref_fname = ref_name + ref_type +$! +$ wrk_skip = 0 +$ ref_utype = f$edit(ref_type,"UPCASE") +$ ref_ufname = f$edit(ref_fname,"UPCASE") +$! +$! +$ if wrk_skip .eq. 0 +$ then +$ wrk_chk = f$search(wrk_spec, 0) +$ if wrk_chk .eqs. "" +$ then +$ if report_missing +$ then +$ write sys$output "''wrk_spec' is missing" +$ endif +$ goto missing_loop +$ endif +$ else +$ goto missing_loop +$ endif +$! +$ if ref_fname .nes. wrk_fname +$ then +$ write sys$output "''wrk_spc' wrong name, should be ""''ref_fname'""" +$ endif +$! +$ if ref_utype .eqs. ".DIR" then goto missing_loop +$! +$ wrk_ver = f$parse(wrk_chk,,,"VERSION") +$ if wrk_ver .nes. ";1" +$ then +$ write sys$output "Version for ''wrk_spec' is not 1" +$ endif +$! +$ goto missing_loop +$! +$! +$missing_loop_end: +$! +$exit |