opemvms: add specific files and utilities
authorJean-Francois Pieronne <jf.pieronne@laposte.net>
Wed, 11 Oct 2023 15:15:28 +0200
changeset 51001 44001e6f04de
parent 51000 fb6593307e24
child 51002 4ea606568f61
opemvms: add specific files and utilities
contrib/openvms/build.com
contrib/openvms/vms/hgeditor.com
contrib/openvms/vms/hgmerge.com
contrib/openvms/vms/logicals.com
contrib/openvms/vms/setup.com
contrib/openvms/vms/startup.com
contrib/openvms/vms/stmlf.fdl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/openvms/build.com	Wed Oct 11 15:15:28 2023 +0200
@@ -0,0 +1,422 @@
+$!
+$! Build Python C extension
+$!
+$ cc/name=(short,as_is)-
+	/incl=("/python$root/include", "../../mercurial") -
+	[--.mercurial.cext]base85.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial") -
+        [--.mercurial]bdiff.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial") -
+        [--.mercurial.cext]bdiff.c -
+	/obj=[]bdiff-mod.obj
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial") -
+        [--.mercurial.thirdparty.xdiff]xdiffi.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial") -
+        [--.mercurial.thirdparty.xdiff]xprepare.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial") -
+	[--.mercurial.thirdparty.xdiff]xutils.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial") -
+        [--.mercurial.cext]mpatch.c/obj=mpatch-mod.obj
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial") -
+        [--.mercurial]mpatch.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial") -
+	/warn=disa=QUESTCOMPARE -
+        [--.mercurial.cext]dirs.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial") -
+        [--.mercurial.cext]charencode.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial") -
+        [--.mercurial.cext]revlog.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial") -
+        [--.mercurial.cext]manifest.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial") -
+        [--.mercurial.cext]pathencode.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial") -
+	/warn=disa=CVTDIFTYPES -
+        [--.mercurial.cext]osutil.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial") -
+	/warn=disa=EXTRASEMI -
+        [--.mercurial.cext]parsers.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+		"../python-zstandard/c-ext", "../python-zstandard/zstd", -
+		"../python-zstandard/zstd/dictBuilder") -
+        [-.python-zstandard]zstd.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+		"../python-zstandard/zstd/dictBuilder") -
+        [-.python-zstandard.c-ext]frameparams.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder") -
+        [-.python-zstandard.c-ext]compressobj.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+		"../python-zstandard/zstd/common") -
+        [-.python-zstandard.c-ext]compressor.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder") -
+        [-.python-zstandard.c-ext]bufferutil.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder") -
+        [-.python-zstandard.c-ext]decompressoriterator.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+		"../python-zstandard/zstd/common") -
+        [-.python-zstandard.c-ext]decompressor.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+		"../python-zstandard/zstd/dictBuilder") -
+        [-.python-zstandard.c-ext]frameparams.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+		"../python-zstandard/zstd/dictBuilder") -
+        [-.python-zstandard.c-ext]constants.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder") -
+        [-.python-zstandard.c-ext]decompressionreader.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder") -
+        [-.python-zstandard.c-ext]decompressionwriter.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+		"../python-zstandard/zstd/dictBuilder") -
+        [-.python-zstandard.c-ext]compressiondict.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+		"../python-zstandard/zstd/dictBuilder") -
+        [-.python-zstandard.c-ext]decompressobj.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder") -
+        [-.python-zstandard.c-ext]compressionwriter.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder") -
+        [-.python-zstandard.c-ext]compressionreader.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder") -
+        [-.python-zstandard.c-ext]compressoriterator.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder") -
+        [-.python-zstandard.c-ext]compressionparams.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder") -
+        [-.python-zstandard.c-ext]compressionchunker.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+		"../python-zstandard/zstd/dictBuilder") -
+        [-.python-zstandard.zstd.common]zstd_common.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder") -
+        [-.python-zstandard.zstd.common]error_private.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+		"../python-zstandard/zstd/common") -
+	/warn=disa=TOOFEWACTUALS -
+        [-.python-zstandard.zstd.compress]zstd_compress.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+		"../python-zstandard/zstd/common") -
+	/warn=disa=TOOFEWACTUALS -
+        [-.python-zstandard.zstd.compress]zstd_ldm.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+                "../python-zstandard/zstd/common") -
+	/warn=disa=TOOFEWACTUALS -
+        [-.python-zstandard.zstd.compress]zstd_opt.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+                "../python-zstandard/zstd/common") -
+	/warn=disa=TOOFEWACTUALS -
+        [-.python-zstandard.zstd.compress]zstd_lazy.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+                "../python-zstandard/zstd/common") -
+        [-.python-zstandard.zstd.compress]huf_compress.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+                "../python-zstandard/zstd/common") -
+        [-.python-zstandard.zstd.common]entropy_common.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+                "../python-zstandard/zstd/common") -
+        [-.python-zstandard.zstd.compress]fse_compress.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+                "../python-zstandard/zstd/common") -
+	/warn=disa=TOOFEWACTUALS -
+        [-.python-zstandard.zstd.compress]zstd_fast.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+                "../python-zstandard/zstd/common") -
+        [-.python-zstandard.zstd.common]fse_decompress.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+                "../python-zstandard/zstd/common") -
+        [-.python-zstandard.zstd.compress]hist.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+                "../python-zstandard/zstd/common") -
+	/warn=disa=TOOFEWACTUALS -
+        [-.python-zstandard.zstd.compress]zstd_double_fast.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+                "../python-zstandard/zstd/common") -
+        [-.python-zstandard.zstd.common]pool.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+                "../python-zstandard/zstd/common") -
+        [-.python-zstandard.zstd.common]xxhash.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+                "../python-zstandard/zstd/common") -
+	/warn=disa=TOOFEWACTUALS -
+        [-.python-zstandard.zstd.compress]zstd_compress_sequences.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+                "../python-zstandard/zstd/common") -
+	/warn=disa=TOOFEWACTUALS -
+        [-.python-zstandard.zstd.compress]zstd_compress_literals.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+                "../python-zstandard/zstd/common") -
+	/warn=disa=TOOFEWACTUALS -
+        [-.python-zstandard.zstd.decompress]zstd_ddict.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+                "../python-zstandard/zstd/common") -
+	/warn=disa=TOOFEWACTUALS -
+        [-.python-zstandard.zstd.decompress]zstd_decompress.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+                "../python-zstandard/zstd/common") -
+        [-.python-zstandard.zstd.decompress]huf_decompress.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+                "../python-zstandard/zstd/common") -
+	/warn=disa=TOOFEWACTUALS -
+        [-.python-zstandard.zstd.decompress]zstd_decompress_block.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+                "../python-zstandard/zstd/common") -
+	/warn=disa=TOOFEWACTUALS -
+        [-.python-zstandard.zstd.compress]zstdmt_compress.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+                "../python-zstandard/zstd/common") -
+        [-.python-zstandard.zstd.dictBuilder]cover.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+                "../python-zstandard/zstd/common") -
+        [-.python-zstandard.zstd.dictBuilder]fastcover.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+                "../python-zstandard/zstd/common") -
+        [-.python-zstandard.zstd.dictBuilder]divsufsort.c
+$ cc/name=(short,as_is)-
+        /incl=("/python$root/include", "../../mercurial", -
+                "../python-zstandard/c-ext", "../python-zstandard/zstd", -
+                "../python-zstandard/zstd/dictBuilder", -
+                "../python-zstandard/zstd/common") -
+        [-.python-zstandard.zstd.dictBuilder]zdict.c
+$ 
+$ link/share=base65.exe sys$input/opt
+GSMATCH=lequal,1,1000
+case_sensitive=YES
+SYMBOL_VECTOR = (PyInit_base85=PROCEDURE)
+SYMBOL_VECTOR = (PYINIT_BASE85/PyInit_base85=PROCEDURE)
+base85.obj
+python$shr/share
+case_sensitive=NO
+$
+$ link/share=bdiff.exe sys$input/opt
+GSMATCH=lequal,1,1000
+case_sensitive=YES
+SYMBOL_VECTOR = (PyInit_bdiff=PROCEDURE)
+SYMBOL_VECTOR = (PYINIT_BDIFF/PyInit_bdiff=PROCEDURE)
+bdiff.obj
+bdiff-mod.obj
+xdiffi.obj
+xprepare.obj
+xutils.obj
+python$shr/share
+case_sensitive=NO
+$
+$ link/share=mpatch.exe sys$input/opt
+GSMATCH=lequal,1,1000
+case_sensitive=YES
+SYMBOL_VECTOR = (PyInit_mpatch=PROCEDURE)
+SYMBOL_VECTOR = (PYINIT_MPATCH/PyInit_mpatch=PROCEDURE)
+mpatch.obj
+mpatch-mod.obj
+python$shr/share
+case_sensitive=NO
+$
+$ link/share=osutil.exe sys$input/opt
+GSMATCH=lequal,1,1000
+case_sensitive=YES
+SYMBOL_VECTOR = (PyInit_osutil=PROCEDURE)
+SYMBOL_VECTOR = (PYINIT_OSUTIL/PyInit_osutil=PROCEDURE)
+osutil.obj
+python$shr/share
+case_sensitive=NO
+$
+$ link/share=parsers.exe sys$input/opt
+GSMATCH=lequal,1,1000
+case_sensitive=YES
+SYMBOL_VECTOR = (PyInit_parsers=PROCEDURE)
+SYMBOL_VECTOR = (PYINIT_PARSERS/PyInit_parsers=PROCEDURE)
+parsers.obj
+dirs.obj
+charencode.obj
+pathencode.obj
+revlog.obj
+manifest.obj
+python$shr/share
+case_sensitive=NO
+$
+$ link/share=zstd.exe sys$input/opt
+GSMATCH=lequal,1,1000
+case_sensitive=YES
+SYMBOL_VECTOR = (PyInit_zstd=PROCEDURE)
+SYMBOL_VECTOR = (PYINIT_ZSTD/PyInit_zstd=PROCEDURE)
+zstd.obj
+frameparams.obj
+decompressobj.obj
+zstd_common.obj
+compressionreader.obj
+compressionwriter.obj
+compressoriterator.obj
+zstd_compress.obj
+zstd_opt.obj
+zstd_lazy.obj
+huf_compress.obj
+entropy_common.obj
+fse_compress.obj
+fse_decompress.obj
+zstd_fast.obj
+zstd_ldm.obj
+hist.obj
+zstd_double_fast.obj
+zstd_compress_sequences.obj
+zstd_compress_literals.obj
+zstdmt_compress.obj
+compressiondict.obj
+zstd_ddict.obj
+zstd_decompress.obj
+zstd_decompress_block.obj
+zdict.obj
+huf_decompress.obj
+compressionparams.obj
+compressobj.obj
+decompressionreader.obj
+compressionchunker.obj
+decompressionwriter.obj
+decompressor.obj
+decompressoriterator.obj
+compressor.obj
+divsufsort.obj
+bufferutil.obj
+constants.obj
+error_private.obj
+cover.obj
+fastcover.obj
+pool.obj
+xxhash.obj
+python$shr/share
+case_sensitive=NO
+$
+$ delete/noconf *.obj;
+$ rename zstd.exe [--.mercurial]/log
+$ rename *.exe [--.mercurial.cext]/log
+$
+$ exit
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/openvms/vms/hgeditor.com	Wed Oct 11 15:15:28 2023 +0200
@@ -0,0 +1,12 @@
+$!
+$! Call OpenVMS editor with a conversion from Unix filename syntax to OpenVMS syntax 
+$!
+$ set proc/par=extend
+$ ufile = p1
+$ tovms :== $ MERCURIAL_ROOT:[vms]tovms
+$ tovms 'ufile'
+$ vfile = tmpfn
+$ deassign sys$input
+$ edit 'vfile'
+$ purge/nolog 'vfile'
+$ exit
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/openvms/vms/hgmerge.com	Wed Oct 11 15:15:28 2023 +0200
@@ -0,0 +1,76 @@
+$!
+$! Custom merge tool to help solve merge conflict in OpenVMS
+$! We recommand to solve this on other system
+$!
+$ set proc/par=extend
+$ mine = p1
+$ orig = p2
+$ theirs = p3
+$ tovms :== $ MERCURIAL_ROOT:[vms]tovms
+$ merged = p1 + ".hgmerge"
+$ tovms 'merged'
+$ merged = tmpfn
+$
+$ define DECC$UNIX_LEVEL 90
+$ gdiff3 :== $ MERCURIAL_ROOT:[vms]gdiff3
+$ gdiff == "$ MERCURIAL_ROOT:[VMS]gdiff"
+$! gdiff -u 'orig' 'mine'
+$! gdiff -u 'orig' 'theirs'
+$ if (f$search("''merged'") .nes. "") then -
+          delete 'merged';*
+$ define sys$output 'merged'
+$ gdiff3 -"L" mine -"L" original -"L" theirs -"E" -m 'mine' 'orig' 'theirs'
+$ status = $status
+$ deassign sys$output
+$ convert/fdl=mercurial_root:[vms]stmlf.fdl 'merged' 'merged'
+$ purge/nolog 'merged'
+$! No conflicts found.  Merge done.
+$ if status .eqs. "%X006C8009"
+$ then
+$   tovms 'p1'
+$   mine = tmpfn
+$   rename 'merged' 'mine'
+$   purge/nolog 'mine'
+$   write sys$output "Merged ''mine'"
+$   exit 1
+$ endif
+$
+$! In all other cases, diff3 has found conflicts, added the proper conflict
+$! markers to the merged file and we should now edit this file.  Fire up an
+$! editor with the merged file and let the user manually resolve the conflicts.
+$! When the editor exits successfully, there should be no conflict markers in
+$! the merged file, otherwise we consider this merge failed.
+$
+$ if status .eqs. "%X006C8013"
+$ then
+$   deassign sys$input
+$   edit 'merged'
+$   open fi 'merged'
+$   loop:
+$     read fi srec/end=endloop
+$     rec7 = f$extract(0, 7, srec)
+$     if rec7 .eqs. "<<<<<<<" then goto conflict
+$     if rec7 .eqs. "|||||||" then goto conflict
+$     if rec7 .eqs. "=======" then goto conflict
+$     if rec7 .eqs. ">>>>>>>" then goto conflict
+$     goto loop
+$   endloop:
+$   close fi
+$   tovms 'p1'
+$   mine = tmpfn
+$   rename 'merged' 'mine'
+$   purge/nolog 'mine'
+$   exit
+$ endif
+$ if (f$search("''merged'") .nes. "") then -
+          delete 'merged';*
+$ write sys$output "serious diff3 error, while trying to merge ''mine'"
+$ exit 44
+$ 
+$ conflict:
+$ close fi
+$ if (f$search("''merged'") .nes. "") then -
+          delete 'merged';*
+$ write sys$output -
+ "conflict markers still found in the working-copy.  Merge aborted for ''mine'"
+$ exit 44
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/openvms/vms/logicals.com	Wed Oct 11 15:15:28 2023 +0200
@@ -0,0 +1,20 @@
+$!
+$! Define mercurial_root logical 
+$!   p1: define parameter (/system for example)
+$!
+$ proc = f$environment("PROCEDURE")
+$ proc = f$parse(proc,"sys$disk:[]",,,"NO_CONCEAL")
+$ cur_dev = f$parse(proc,,,"DEVICE","SYNTAX_ONLY")
+$ cur_dir = f$parse(proc,,,"DIRECTORY","SYNTAX_ONLY")
+$ cur_dir = f$extract(1,f$length(cur_dir)-2,cur_dir)
+$ cur_dir = cur_dir - "["
+$ cur_dir = cur_dir - "]"
+$ cur_dir = cur_dir - "<"
+$ cur_dir = cur_dir - ">"
+$
+$! remove trailing .VMS
+$ root_dir = f$extract(0,f$length(cur_dir)-4,cur_dir)
+$
+$ define/nolog 'p1' /trans=concealed mercurial_root 'cur_dev'['root_dir'.]
+$
+$ exit
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/openvms/vms/setup.com	Wed Oct 11 15:15:28 2023 +0200
@@ -0,0 +1,7 @@
+$!
+$! Set hg and hgeditor symbol
+$!
+$ HG == "$ PYTHON$ROOT:[BIN]PYTHON /MERCURIAL_ROOT/HG"
+$ HGEDITOR == "@MERCURIAL_ROOT:[VMS]HGEDITOR"
+$
+$ exit
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/openvms/vms/startup.com	Wed Oct 11 15:15:28 2023 +0200
@@ -0,0 +1,12 @@
+$!
+$! Mercurial startup file
+$!
+$ proc = f$environment("PROCEDURE")
+$ cur_dev = f$parse(proc,,,"DEVICE","SYNTAX_ONLY")
+$ cur_dir = f$parse(proc,,,"DIRECTORY","SYNTAX_ONLY")
+$!
+$! Define logicals
+$!
+$ @'cur_dev''cur_dir'logicals "/system/exec"
+$
+$ exit
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/openvms/vms/stmlf.fdl	Wed Oct 11 15:15:28 2023 +0200
@@ -0,0 +1,7 @@
+!
+! Used by hgmerge.com to convert file to stream_lf record format
+!
+RECORD
+        BLOCK_SPAN              yes
+        CARRIAGE_CONTROL        carriage_return
+        FORMAT                  stream_lf