Annotation of pgp/src/pgpinstal.com, revision 1.1.1.1

1.1       root        1: $!x='f$ver(0)'
                      2: $!
                      3: $ pgpinsver="1.0i"
                      4: $ pgpver="263i"
                      5: $ pgpver_human ="2.6.3i"
                      6: $!
                      7: $!Program:     PGPINSTAL.COM V1.0i for PGP 2.6.3i
                      8: $!
                      9: $!Description:
                     10: $!     Given the presence of appropriately named & files,
                     11: $!     this procedure will attempt to construct a VMS executable
                     12: $!     called PGP.EXE.
                     13: $!
                     14: $!Instructions:
                     15: $!     1) Type "@PGPINSTAL" and answer the questions (do NOT type the quotes)
                     16: $!
                     17: $!     Note: If you know that the default answers are correct, then you can
                     18: $!       simply type "@PGPINSTAL 1" and the procedure will start
                     19: $!       directly
                     20: $!
                     21: $!End-User notes:
                     22: $!     * YOU MUST BE USING VAXC or DECC!
                     23: $!     * YOU MUST BE BUILDING PGP 2.6.3i from the source distribution!
                     24: $!     * The debug & optimize flags are in a line beginning 'dbg='... search
                     25: $!       for this & modify as needed.  The default distribution is /nodebug
                     26: $!       and /opt=noinline (due to an _old_ vaxc optimizer bug...)
                     27: $!     * Note that md5.c is an exception under VAX/DECC - must be /noopt or
                     28: $!       the compiler will hang :(
                     29: $!     * if any {p1..p4} is nonnull then an immediate install will be attempted
                     30: $!     * if p1 is nonnull, then p1 is assumed to be the location of pgp
                     31: $!       distribution & all other values default if possible.
                     32: $!     * if p2 is nonnull, then p2 is the default UNZIP definition
                     33: $!     * if p3 is nonnull, then p3 is the default dir for top-level
                     34: $!     * if p4 is nonnull, then p4 is the default top-level name
                     35: $!
                     36: $!Implementation notes:
                     37: $!     * There are some lines of code present in this module that are
                     38: $!       disabled, but they're useful reference material, so they got
                     39: $!       left here.
                     40: $!     * if p1 is of the form '@label', then at top of build procedure,
                     41: $!       a jump is performed to the requested label to bypass portions
                     42: $!       of the build (needed for relinking, for example)
                     43: $!         o **This is NOT intended to be a supported function!**
                     44: $!         o P2 now must be nonnull to force immediate mode
                     45: $!         o This option is for debugging purposes only and most of the
                     46: $!           start/stop pairs are not in place, but may be added. You
                     47: $!           should read & understand the DCL if you want to add these.
                     48: $!         o The $LNK_START entrypoint can be used to re-link
                     49: $!
                     50: $ jumpto = f$elem(1,"@","''p1'")
                     51: $ jump = jumpto.nes."@"
                     52: $ if jump then p1=""
                     53: $ immediate = ("''p1'"+"''p2'"+"''p3'"+"''p4'").nes.""
                     54: $ if jump then p2=""
                     55: $ if jump.and.immediate then p1="sys$login:login.com"
                     56: $!
                     57: $restart_install:
                     58: $ on control_c then goto halt
                     59: $ on control_y then goto halt
                     60: $ say="write sys$output"
                     61: $ ask="call ask_user"
                     62: $ edit="edit"
                     63: $ delete="delete"
                     64: $ start_dir = f$environment("default")
                     65: $ call get_hw_model
                     66: $ hw_model = f$int(f$trnlnm("hw_model"))
                     67: $ deassign hw_model
                     68: $ if hw_model .ge. 1024
                     69: $ then
                     70:     say "%PGPINSTAL-I-ALPHA, Target architecture is ALPHA/VMS"
                     71: $   macopts="/migrate/nowarn/nodeb/opt"
                     72: $   lnkopts="/notrace/map"
                     73: $   cc="cc/stan=vaxc/nomember_align"
                     74: $   cdefs=""
                     75: $   alpha=1
                     76: $   vax=0
                     77: $   archltr="a"
                     78: $   mach="Alpha"
                     79: $   mach2="n Alpha"
                     80: $   estspace=11000
                     81: $ else
                     82:     say "%PGPINSTAL-I-VAX, Target architecture is VAX/VMS"
                     83: $   macopts=""
                     84: $   lnkopts="/notrace/map"
                     85: $   cc="cc"
                     86: $   cdefs=""
                     87: $   alpha=0
                     88: $   vax=1
                     89: $   archltr="v"
                     90: $   mach="VAX"
                     91: $   mach2=" VAX"
                     92: $   estspace=8500
                     93: $ endif
                     94: $ wait 0:0:2 !Long enough to see target message
                     95: $ goto start_install
                     96: $!
                     97: $get_hw_model: subroutine
                     98: $ mess=f$environment("message")
                     99: $ set mess/nofacility/noident/noseverity/notext
                    100: $ x=0
                    101: $ set noon
                    102: $ x=f$getsyi("hw_model")
                    103: $ set mess 'mess'
                    104: $ define hw_model 'x'
                    105: $ endsubroutine
                    106: $!
                    107: $ask_user: subroutine !p1=question, p2=lognam_to_define, p3=default
                    108: $ on control_c then goto bomb
                    109: $ on control_y then goto bomb
                    110: $retry_input:
                    111: $ if "''p3'".nes.""
                    112: $ then
                    113: $   if immediate
                    114: $   then
                    115: $     line="''p3'"
                    116: $   else
                    117: $     read/end=bomb/prompt="''p1'? [''p3'] " sys$command line
                    118: $   endif
                    119: $ else
                    120: $   if immediate
                    121: $   then
                    122: $     say "%PGPINSTAL-E-NOIMMED, Immediate installation failed"
                    123: $     say "%PGPINSTAL-F-INPREQD, Input is required for /''p1'/"
                    124: $     exit 20
                    125: $   endif
                    126: $   read/end=bomb/prompt="''p1'? " sys$command line
                    127: $ endif
                    128: $ if "''p3'".nes."" then if "''line'".eqs."" then line=p3
                    129: $ if "''line'".eqs."" then -
                    130:   say "%PGPINSTAL-E-INPREQD, Input is required here - please retry"
                    131: $ if "''line'".eqs."" then -
                    132:   goto retry_input
                    133: $ define/nolog 'p2' "''line'"
                    134: $ exit 1
                    135: $bomb:
                    136: $!x='f$ver(0)'
                    137: $ say "%PGPINSTAL-F-INSABORT, Installation has been aborted"
                    138: $ exit 2160+%x10000000
                    139: $ endsubroutine
                    140: $halt:
                    141: $!x='f$ver(0)'
                    142: $ say "%PGPINSTAL-F-INSABORT, Installation has been aborted"
                    143: $ exit 2160+%x10000000
                    144: $start_install:
                    145: $ if immediate then goto skip_lecture
                    146: $ say ""
                    147: $ say "Hello"
                    148: $ say ""
                    149: $ say "Welcome to the PGP ''pgpver_human' automated build procedure for OpenVMS."
                    150: $ say "You seem to be running on a''mach2'... Parameters will be adjusted accordingly."
                    151: $ say ""
                    152: $ say "There are several prerequisites for building PGP ''pgpver_human' on your ''mach':
                    153: $ say "        1) A''mach2' (which you already appear to have...)"
                    154: $ say "        2) A VAXC or DECC compiler & A license*"
                    155: $ say "        3) Time & disk space (about ''estspace' blocks)"
                    156: $ say ""
                    157: $ say "If you do not have one or more of these items, then now would be a good"
                    158: $ say "time to either retrieve whatever is missing, or stop this installation."
                    159: $ say ""
                    160: $ say "*This procedure allows substitution - you will be prompted and allowed to"
                    161: $ say " re-specify the cc command definition."
                    162: $ say ""
                    163: $ say "^Z terminates when expecting input... ^Y aborts the procedure"
                    164: $ read/end=halt/prompt="Press return..." sys$command junk
                    165: $ say ""
                    166: $ say ""
                    167: $ say "You will be asked the following questions... please take a moment and"
                    168: $ say "ascertain the answers to these before continuing.  It will make life at"
                    169: $ say "least a tiny bit easier."
                    170: $ say ""
                    171: $ say "        1) What should the CC command be defined as?"
                    172: $ say ""
                    173: $ say "This will be defaulted if possible."
                    174: $ say ""
                    175: $ read/end=halt/prompt="Press return..." sys$command junk
                    176: $ say ""
                    177: $ say "Please note any errors you receive running this procedure.  I am trying"
                    178: $ say "to keep this procedure up to date with the latest release of PGP, and"
                    179: $ say "I'm also fairly sure that there are situations possible where this procedure"
                    180: $ say "may not operate correctly."
                    181: $ say ""
                    182: $ say "If you do get errors - please make certain of a few things:"
                    183: $ say "  1) That you are using VAXC or DECC as opposed to GNUC"
                    184: $ say "  2) That your PGP''pgpver' distribution has not been tampered with"
                    185: $ say ""
                    186: $ read/end=halt/prompt="Press return..." sys$command junk
                    187: $skip_lecture:
                    188: $!
                    189: $!Sniff out the environment & ask the user the questions
                    190: $!
                    191: $ if .not.immediate then -
                    192:   say ""
                    193: $!
                    194: $!Look for VAXC/DECC - Allow user to override... maybe gnu works for all I know
                    195: $ vaxc="N"
                    196: $ ccname=""
                    197: $ if alpha then goto skip_vaxc
                    198: $ if (f$search("vaxc").nes."") .or. -
                    199:      (f$search("sys$system:vaxc.exe").nes."")
                    200: $ then
                    201: $   vaxc="Y"
                    202: $   ccname="VAXC"
                    203: $   say "%PGPINSTAL-I-VAXC, VAXC.EXE located - defaulting to VAXC"
                    204: $ endif
                    205: $ decc="N"
                    206: $ if vaxc then goto skip_decc
                    207: $skip_vaxc:
                    208: $ decc="N"
                    209: $ if (f$search("decc$compiler").nes."") .or. -
                    210:      (f$search("sys$system:decc$compiler.exe").nes."")
                    211: $ then
                    212: $   decc="Y"
                    213: $   ccname="DECC"
                    214: $   if cc.eqs."cc" then cc="cc/stan=vaxc"
                    215: $   say "%PGPINSTAL-I-DECC, DECC$COMPILER located - defaulting to DECC"
                    216: $ endif
                    217: $skip_decc:
                    218: $ if .not.(DECC .or. VAXC)
                    219: $ then
                    220: $   say "%PGPINSTAL-W-NODEFCC, No default C compiler located"
                    221: $  !Just assume a generic equivalence based on platform architecture
                    222: $   ccname="Generic_VAXC"
                    223: $   if alpha then ccname="Generic_DECC"
                    224: $ endif
                    225: $!
                    226: $!Modify compiler definition
                    227: $ say "%PGPINSTAL-I-CURRCC, Current CC commpiler is ""''ccname'"""
                    228: $ say "%PGPINSTAL-I-CCDEF, CC command is ""''cc'"""
                    229: $ ask "Define cc as" "newcc" "''cc'"
                    230: $ if .not.f$int($status) then exit '$status
                    231: $ cc=f$trnlnm("newcc")
                    232: $ deassign newcc
                    233: $!
                    234: $ say "%PGPINSTAL-I-CCDEF, 'CC' is defined as ''cc'"
                    235: $re_ask1:
                    236: $ if jump.and.immediate then goto perform_installation
                    237: $ ask "Is this acceptable (Y/N)" "answer" "Y"
                    238: $ if .not.f$int($status) then exit '$status
                    239: $ answer = f$edit(f$trnlnm("answer"),"upcase,collapse")
                    240: $ deassign answer
                    241: $ if answer.eqs."Y" then goto perform_installation
                    242: $ if answer.nes."N" then goto re_ask1
                    243: $re_ask2:
                    244: $ ask "Do you want to terminate installation (Y/N)" "answer" "Y"
                    245: $ if .not.f$int($status) then exit '$status
                    246: $ answer = f$edit(f$trnlnm("answer"),"upcase,collapse")
                    247: $ deassign answer
                    248: $ if answer.eqs."Y" then goto terminate_installation
                    249: $ if answer.nes."N" then goto re_ask2
                    250: $ say "%PGPINSTAL-I-RESTART, Installation process is restarting"
                    251: $ read/end=halt/prompt="Press return..." sys$command junk
                    252: $ immediate=0  !Disable for restart - just in case we ever get here
                    253: $ goto restart_install
                    254: $!
                    255: $terminate_installation:
                    256: $ say "%PGPINSTAL-F-TERMINATED, Installation terminated"
                    257: $ set def 'start_dir'
                    258: $ exit 44+%x10000000
                    259: $!
                    260: $perform_installation:
                    261: $ this_file = f$environment("procedure") - "]["
                    262: $ this_dir = f$element(0,"]",this_file)+"]"
                    263: $ set def 'this_dir'
                    264: $ src = "''this_dir'"
                    265: $ rsa = "''this_dir'"
                    266: $ obj = "sys$disk:[]"
                    267: $!
                    268: $start_build:
                    269: $!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                    270: $!@rsabuild
                    271: $!rsabuild:
                    272: $!!src="[-.rsaref.source]"
                    273: $!!obj="sys$disk:[]"
                    274: $ sp_cflgs = ""
                    275: $ if vax.and.decc then sp_cflgs = "/PREFIX=EXCEPT=(optind,optarg,optopt,opterr)"
                    276: $ dbg="/NODEB/OPT=NOINLINE"
                    277: $ dbg2=dbg
                    278: $ if vax.and.decc then dbg2="/NODEB/NOOPT" !Kill VAX/DECC compiler bug
                    279: $!!old_cflags = "/DEFINE=(''cdefs'""hw_model=''f$getsyi(""hw_model"")'"")''dbg'"
                    280: $ cflags = "''dbg'''sp_cflgs'"
                    281: $ cflags2 = "''dbg2'''sp_cflgs'"
                    282: $ if "''cdefs'".nes."" then cflags = "/DEFINE=(''cdefs')''cflags'"
                    283: $ if "''cdefs'".nes."" then cflags2 = "/DEFINE=(''cdefs')''cflags2'"
                    284: $ if jump then goto rsacomp
                    285: $! set verify
                    286: $! library /create rsareflib
                    287: $!x='f$ver(0)'
                    288: $rsacomp:
                    289: $ if jump then if f$ele(0,"_",jumpto).nes."RSA" then goto pgpbuild
                    290: $ if jump then goto 'jumpto'
                    291: $!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                    292: $!@pgpbuild
                    293: $pgpbuild:
                    294: $!cflags = "/DEFINE=(''cdefs'""hw_model=''f$getsyi(""hw_model"")'"")''dbg'"
                    295: $ cflags = "''dbg'''sp_cflgs'"
                    296: $ cflags2 = "''dbg2'''sp_cflgs'"
                    297: $ if "''cdefs'".nes."" then cflags = "/DEFINE=(''cdefs')''cflags'"
                    298: $ if "''cdefs'".nes."" then cflags2 = "/DEFINE=(''cdefs')''cflags2'"
                    299: $!
                    300: $! Now compile stuff
                    301: $!
                    302: $ if jump then if f$ele(0,"_",jumpto).nes."PGP" then goto pgplink
                    303: $ if jump then goto 'jumpto'
                    304: $ call pgp_compile pgp
                    305: $ if .not.f$int($status) then exit '$status
                    306: $ call pgp_compile config
                    307: $ if .not.f$int($status) then exit '$status
                    308: $ call pgp_compile crypto
                    309: $ if .not.f$int($status) then exit '$status
                    310: $ call pgp_compile keymgmt
                    311: $ if .not.f$int($status) then exit '$status
                    312: $ call pgp_compile keyadd
                    313: $ if .not.f$int($status) then exit '$status
                    314: $ call pgp_compile keymaint
                    315: $ if .not.f$int($status) then exit '$status
                    316: $ call pgp_compile fileio
                    317: $ if .not.f$int($status) then exit '$status
                    318: $ call pgp_compile mdfile
                    319: $ if .not.f$int($status) then exit '$status
                    320: $ call pgp_compile more
                    321: $ if .not.f$int($status) then exit '$status
                    322: $ call pgp_compile armor
                    323: $ if .not.f$int($status) then exit '$status
                    324: $ call pgp_compile mpilib
                    325: $ if .not.f$int($status) then exit '$status
                    326: $ call pgp_compile mpiio
                    327: $ if .not.f$int($status) then exit '$status
                    328: $ call pgp_compile getopt
                    329: $ if .not.f$int($status) then exit '$status
                    330: $ call pgp_compile genprime
                    331: $ if .not.f$int($status) then exit '$status
                    332: $ call pgp_compile rsagen
                    333: $ if .not.f$int($status) then exit '$status
                    334: $ call pgp_compile random
                    335: $ if .not.f$int($status) then exit '$status
                    336: $ call pgp_compile idea
                    337: $ if .not.f$int($status) then exit '$status
                    338: $ call pgp_compile passwd
                    339: $ if .not.f$int($status) then exit '$status
                    340: $ call pgp_compile md5 "''cflags2'"    !OVERRIDE /OPT STUFF FOR VAX/DECC!
                    341: $ if .not.f$int($status) then exit '$status
                    342: $ call pgp_compile system
                    343: $ if .not.f$int($status) then exit '$status
                    344: $ call pgp_compile language
                    345: $ if .not.f$int($status) then exit '$status
                    346: $ if vax
                    347: $ then
                    348: $   set ver
                    349: $   macro'macopts'/object='obj'vax.obj 'src'vax.mar
                    350: $!  x='f$ver(0)'
                    351: $ endif
                    352: $ if .not.f$int($status) then exit '$status
                    353: $ call pgp_compile charset
                    354: $ if .not.f$int($status) then exit '$status
                    355: $ call pgp_compile rsaglue1
                    356: $ if .not.f$int($status) then exit '$status
                    357: $ call pgp_compile noise
                    358: $ if .not.f$int($status) then exit '$status
                    359: $ call pgp_compile randpool
                    360: $ if .not.f$int($status) then exit '$status
                    361: $!Alter cc flags for z stuff
                    362: $ cflags = "/DEFINE=(''cdefs'EXPORT,NO_ASM,NOSTORE)''dbg'"
                    363: $ call pgp_compile zbits
                    364: $ if .not.f$int($status) then exit '$status
                    365: $ call pgp_compile zdeflate
                    366: $ if .not.f$int($status) then exit '$status
                    367: $ call pgp_compile zglobals
                    368: $ if .not.f$int($status) then exit '$status
                    369: $ call pgp_compile zinflate
                    370: $ if .not.f$int($status) then exit '$status
                    371: $ call pgp_compile zip
                    372: $ if .not.f$int($status) then exit '$status
                    373: $ call pgp_compile zipup
                    374: $ if .not.f$int($status) then exit '$status
                    375: $ call pgp_compile zfile_io
                    376: $ if .not.f$int($status) then exit '$status
                    377: $ call pgp_compile ztrees
                    378: $ if .not.f$int($status) then exit '$status
                    379: $ call pgp_compile zunzip
                    380: $ if .not.f$int($status) then exit '$status
                    381: $ jump=0
                    382: $ goto pgplink
                    383: $!Last Modified:  95.03.13 21.07.29.73
                    384: $ pgp_compile: subroutine      !p1 is file name
                    385: $ on control_c then goto bomb
                    386: $ on control_y then goto bomb
                    387: $ sfile = f$parse("''p1'","''src'","sys$disk:[].c")
                    388: $ ofile = f$parse("''obj'","''p1'","sys$disk:[].obj;")
                    389: $ define/user c$include 'src','rsa'
                    390: $ define/user vaxc$include sys$share:,'src','rsa'
                    391: $ define/user sys sys$share:
                    392: $ define/user decc$system_include sys$share:,'src','rsa'
                    393: $ __cflags = "''cflags'"
                    394: $ if "''p2'".nes."" then __cflags="''p2'"
                    395: $ set verify
                    396: $ 'cc' '__cflags' 'sfile'/object='ofile'
                    397: $!x='f$ver(0)'
                    398: $ exit 1
                    399: $bomb:
                    400: $!x='f$ver(0)'
                    401: $ say "%PGPINSTAL-F-INSABORT, Installation has been aborted"
                    402: $ exit 2160+%x10000000
                    403: $ endsubroutine
                    404: $!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                    405: $!@pgplink
                    406: $pgplink:
                    407: $ if jump then if f$ele(0,"_",jumpto).nes."LNK" then goto badjump
                    408: $ if jump then goto 'jumpto'
                    409: $lnk_start: !jumpto entrypoint '$LNK_START'
                    410: $ open/write optfile pgp'pgpver'.opt
                    411: $ write optfile "NAME=PGP''pgpver'"
                    412: $ write optfile "IDENT=""PGP V''pgpver_human'"""
                    413: $ if vax then -
                    414:   write optfile "vax"
                    415: $ copy sys$input optfile
                    416: !
                    417: more
                    418: fileio
                    419: md5
                    420: mdfile
                    421: getopt
                    422: system
                    423: mpilib
                    424: mpiio
                    425: random
                    426: crypto
                    427: rsagen
                    428: noise
                    429: randpool
                    430: !
                    431: idea
                    432: passwd
                    433: genprime
                    434: pgp
                    435: config
                    436: language
                    437: charset
                    438: armor
                    439: !
                    440: ! RSA Stuff
                    441: !
                    442: rsaglue1
                    443: !
                    444: ! Key Stuff
                    445: !
                    446: keymgmt
                    447: keymaint
                    448: keyadd
                    449: !
                    450: ! ZIP Stuff
                    451: !
                    452: zbits
                    453: zdeflate
                    454: zglobals
                    455: zinflate
                    456: zip
                    457: zipup
                    458: zfile_io
                    459: ztrees
                    460: zunzip
                    461: !
                    462: !rsareflib/library
                    463: $ eod
                    464: $ if vaxc then write optfile "sys$share:vaxcrtl/share"
                    465: $ close optfile
                    466: $lnk_link: !jumpto entrypoint '$LNK_LINK'
                    467: $ say "LINK /exe=PGP.EXE pgp''pgpver'.opt/opt''lnkopts'"
                    468: $ LINK /exe=PGP.EXE pgp'pgpver'.opt/opt'lnkopts'
                    469: $ say ""
                    470: $ pgpexe = f$search("pgp.exe")
                    471: $ if pgpexe.eqs.""
                    472: $ then
                    473: $   say "It appears that PGP.EXE was not built successfully"
                    474: $   say ""
                    475: $   say "Sorry."
                    476: $ else
                    477: $   say "PGP.EXE appears to have built successfully"
                    478: $   say ""
                    479: $   say "The executable is ''pgpexe'"
                    480: $   say ""
                    481: $   say "Set default to the pgp build directory and read the documents"
                    482: $   say "in the [.DOC] subdirectory regarding setting up PGP and creating"
                    483: $ exit

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.