|
|
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 "[2J[H" ! 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="[24HPress return..." sys$command junk ! 165: $ say "[2J[H" ! 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="[24HPress return..." sys$command junk ! 176: $ say "[2J[H" ! 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="[24HPress 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 "[2J[H" ! 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="[24HPress 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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.