$! File: stage_gawk_install.com
$!
$! Stages the build products to new_gnu:[...] for testing and for building
$! a kit.
$!
$! If p1 starts with "R" then remove instead of install.
$!
$! The file PCSI_GAWK_FILE_LIST.TXT is read in to get the files other
$! than the release notes file and the source backup file.
$!
$! The PCSI system can really only handle ODS-2 format filenames and
$! assumes that there is only one source directory. It also assumes that
$! all destination files with the same name come from the same source file.
$!
$!
$! 29-Sep-2013 J. Malmberg
$!
$!===========================================================================
$!
$ arch_type = f$getsyi("ARCH_NAME")
$ arch_code = f$extract(0, 1, arch_type)
$!
$ mode = "install"
$ code = f$extract(0, 1, p1)
$ if code .eqs. "R" .or. code .eqs. "r" then mode = "remove"
$!
$! First create the directories
$!--------------------------------
$ if mode .eqs. "install"
$ then
$ create/dir new_gnu:[bin]/prot=o:rwed
$ create/dir new_gnu:[vms_bin]/prot=o:rwed
$ create/dir new_gnu:[vms_help]/prot=o:rwed
$ create/dir new_gnu:[lib]/prot=o:rwed
$ create/dir new_gnu:[usr.bin]/prot=o:rwed
$ create/dir new_gnu:[usr.include]/prot=o:rwed
$ create/dir new_gnu:[usr.lib.gawk]/prot=o:rwed
$ create/dir new_gnu:[usr.share.awk]/prot=o:rwed
$ create/dir new_gnu:[usr.share.doc.gawk]/prot=o:rwed
$ create/dir new_gnu:[usr.share.info]/prot=o:rwed
$ create/dir new_gnu:[usr.src.gawk.extension.vms]/prot=o:rwed
$ create/dir new_gnu:[usr.share.man.man1]/prot=o:rwed
$ endif
$!
$ if mode .eqs. "install"
$ then
$ copy [.vms]gnv_gawk_startup.com -
new_gnu:[vms_bin]gnv$gawk_startup.com
$ else
$ file = "new_gnu:[vms_bin]gnv$gawk_startup.com"
$ if f$search(file) .nes. "" then delete 'file';*
$ endif
$!
$!
$! Read through the file list to set up aliases and rename commands.
$!---------------------------------------------------------------------
$ open/read flst [.vms]pcsi_gawk_file_list.txt
$!
$inst_alias_loop:
$ ! Skip the aliases
$ read/end=inst_file_loop_end flst line_in
$ line_in = f$edit(line_in,"compress,trim,uncomment")
$ if line_in .eqs. "" then goto inst_alias_loop
$ pathname = f$element(0, " ", line_in)
$ linkflag = f$element(1, " ", line_in)
$ if linkflag .nes. "->" then goto inst_alias_done
$ goto inst_alias_loop
$!
$inst_file_loop:
$!
$ read/end=inst_file_loop_end flst line_in
$ line_in = f$edit(line_in,"compress,trim,uncomment")
$ if line_in .eqs. "" then goto inst_file_loop
$!
$inst_alias_done:
$!
$!
$! Skip the directories as we did them above.
$! Just process the files.
$ tdir = f$parse(line_in,,,"DIRECTORY")
$ tdir_len = f$length(tdir)
$ tname = f$parse(line_in,,,"NAME")
$ lctname = f$edit(tname, "LOWERCASE")
$ ttype = f$parse(line_in,,,"TYPE")
$ if arch_code .eqs. "V"
$ then
$ tname = lctname
$ ttype = f$edit(ttype, "LOWERCASE")
$ tdir = f$edit(tdir, "LOWERCASE")
$ endif
$ if tname .eqs. "" then goto inst_file_loop
$ if ttype .eqs. ".dir" then goto inst_file_loop
$!
$! if p1 starts with "R" then remove instead of install.
$!
$! If gnv$xxx.exe, then:
$! Source is []gnv$gawk.exe
$! Destination1 is new_gnu:[bin]gnv$gawk.exe
$! Destination2 is new_gnu:[bin]xxx. (alias)
$! Destination2 is new_gnu:[bin]xxx.exe (alias)
$! We put all in new_gnu:[bin] instead of some in [usr.bin] because
$! older GNV kits incorrectly put some images in [bin] and [bin]
$! comes first in the search list.
$ if f$locate("gnv$", tname) .eq. 0
$ then
$ myfile_len = f$length(tname)
$ myfile = f$extract(4, myfile_len, tname)
$ source = "[]''myfile'''ttype'"
$ dest1 = "new_gnu:[bin]''tname'''ttype'"
$ dest2 = "new_gnu:[bin]''myfile'."
$ dest3 = "new_gnu:[bin]''myfile'.exe"
$ if mode .eqs. "install"
$ then
$ if f$search(dest1) .eqs. "" then copy 'source' 'dest1'
$ if f$search(dest2) .eqs. "" then set file/enter='dest2' 'dest1'
$ if f$search(dest3) .eqs. "" then set file/enter='dest3' 'dest1'
$ else
$ if f$search(dest2) .nes. "" then set file/remove 'dest2';*
$ if f$search(dest3) .nes. "" then set file/remove 'dest3';*
$ if f$search(dest1) .nes. "" then delete 'dest1';*
$ endif
$ goto inst_file_loop
$ endif
$!
$! If lib.gawk] then
$! source is sys$disk:[]
$! dest is new_gnu:[usr.lib.gawk]
$ if f$locate("lib.gawk]", tdir) .lt. tdir_len
$ then
$! ! Not yet available on VAX/VMS
$ if arch_code .eqs. "V" then goto inst_file_loop
$!
$ source = "[]''tname'''ttype'"
$ dest = "new_gnu:[usr.lib.gawk]''tname'''ttype'"
$ if mode .eqs. "install"
$ then
$ if f$search(dest) .eqs. "" then copy 'source' 'dest'
$ else
$ if f$search(dest) .nes. "" then delete 'dest';*
$ endif
$ goto inst_file_loop
$ endif
$!
$! If .vms_bin] then
$! source is sys$disk:[]
$! dest is [vms_bin]
$ if (f$locate("vms_bin]", tdir) .lt. tdir_len)
$ then
$ if (ttype .eqs. ".cld")
$ then
$ source = "sys$disk:[]''tname'''ttype'"
$ else
$ source = "sys$disk:[.vms]''tname'''ttype'"
$ endif
$ dest = "new_gnu:[vms_bin]''tname'''ttype'"
$ if mode .eqs. "install"
$ then
$ if f$search(dest) .eqs. "" then copy 'source' 'dest'
$ else
$ if f$search(dest) .nes. "" then delete 'dest';*
$ endif
$ goto inst_file_loop
$ endif
$!
$! If .vms_hlp] then
$! source is sys$disk:[.vms]
$! dest is [vms_help]
$ if (f$locate("vms_help]", tdir) .lt. tdir_len) .and. (ttype .eqs. ".hlp")
$ then
$ source = "sys$disk:[.vms]''tname'''ttype'"
$ dest = "new_gnu:[vms_help]''tname'''ttype'"
$ if mode .eqs. "install"
$ then
$ if f$search(dest) .eqs. "" then copy 'source' 'dest'
$ else
$ if f$search(dest) .nes. "" then delete 'dest';*
$ endif
$ goto inst_file_loop
$ endif
$!
$! If doc.gawk] then
$! source is sys$disk:[] or [.readme_d]
$! dest is [usr.share.doc.gawk]
$ if f$locate(".doc.gawk]", tdir) .lt. tdir_len
$ then
$ if lctname .eqs. "readme" .and. ttype .nes. "."
$ then
$ source = "sys$disk:[.README_D]''tname'''ttype'"
$ if f$search(source) .eqs. ""
$ then
$! ! This may be an NFS mangled name on VAX.
$ stype = ttype - "."
$ if stype .nes. "vms" then stype = "$" + stype
$ source = "sys$disk:[.$README_$D]$README.''stype'"
$ endif
$ else
$ source = "sys$disk:[]''tname'''ttype'"
$ if f$search(source) .eqs. ""
$ then
$ source = "sys$disk:[]$''tname'''ttype'"
$ endif
$ endif
$ dest = "new_gnu:[usr.share.doc.gawk]''tname'''ttype'"
$ if mode .eqs. "install"
$ then
$ if f$search(dest) .eqs. "" then copy 'source' 'dest'
$ else
$ if f$search(dest) .nes. "" then delete 'dest';*
$ endif
$ goto inst_file_loop
$ endif
$!
$! If .awk] then
$! source is sys$disk:[.awklib.eg.lib]
$! dest is new_gnu:[usr.share.awk]
$ if f$locate(".awk]", tdir) .lt. tdir_len
$ then
$ source = "[.awklib.eg.lib]''tname'''ttype'"
$ dest = "new_gnu:[usr.share.awk]''tname'''ttype'"
$ if mode .eqs. "install"
$ then
$ if f$search(dest) .eqs. "" then copy 'source' 'dest'
$ else
$ if f$search(dest) .nes. "" then delete 'dest';*
$ endif
$ goto inst_file_loop
$ endif
$!
$! If *.info then
$! source is [.doc]gawk.info
$! dest is [.usr.share.info]
$ if ttype .eqs. ".info"
$ then
$ source = "[.doc]''tname'''ttype'"
$ dest = "new_gnu:[usr.share.info]''tname'''ttype'"
$ if mode .eqs. "install"
$ then
$ if f$search(dest) .eqs. "" then copy 'source' 'dest'
$ else
$ if f$search(dest) .nes. "" then delete 'dest';*
$ endif
$ goto inst_file_loop
$ endif
$!
$! If *.h then
$! source is []*.h
$! dest is [.usr.include]
$ if ttype .eqs. ".h"
$ then
$ source = "[]''tname'''ttype'"
$ dest = "new_gnu:[usr.include]''tname'''ttype'"
$ if mode .eqs. "install"
$ then
$ if f$search(dest) .eqs. "" then copy 'source' 'dest'
$ else
$ if f$search(dest) .nes. "" then delete 'dest';*
$ endif
$ goto inst_file_loop
$ endif
$!
$! If *.opt then
$! source is [.vms]gawk_plugin.opt
$! dest is [.usr.src.gawk.extension.vms]
$ if ttype .eqs. ".opt"
$ then
$ source = "[.vms]''tname'''ttype'"
$ dest = "new_gnu:[usr.src.gawk.extension.vms]''tname'''ttype'"
$ if mode .eqs. "install"
$ then
$ if f$search(dest) .eqs. "" then copy 'source' 'dest'
$ else
$ if f$search(dest) .nes. "" then delete 'dest';*
$ endif
$ goto inst_file_loop
$ endif
$!
$! If xxx.1 then
$! source is [.doc]xxx.1
$! dest is [usr.share.man.man1]
$ if ttype .eqs. ".1"
$ then
$ source = "[.doc]''tname'''ttype'"
$ dest = "new_gnu:[usr.share.man.man1]''tname'''ttype'"
$ if mode .eqs. "install"
$ then
$ if f$search(dest) .eqs. "" then copy 'source' 'dest'
$ else
$ if f$search(dest) .nes. "" then delete 'dest';*
$ endif
$ goto inst_file_loop
$ endif
$!
$ goto inst_file_loop
$!
$inst_file_loop_end:
$!
$close flst
$!
$all_exit:
$ exit