home *** CD-ROM | disk | FTP | other *** search
/ PC-Online 1998 February / PCOnline_02_1998.iso / filesbbs / os2 / pgp263.arj / PGP263I.SRC / PGP263II.ZIP / src / pgpinstal.com < prev    next >
Text File  |  1995-08-06  |  15KB  |  484 lines

  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 "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="HPress return..." sys$command junk
  165. $ say "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="HPress return..." sys$command junk
  176. $ say "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="HPress 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 "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="HPress 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
  484.