Imported Upstream version 7.48.0
[platform/upstream/curl.git] / packages / vms / build_gnv_curl_pcsi_desc.com
1 $! File: Build_GNV_CURL_PCSI_DESC.COM
2 $!
3 $! $Id$
4 $!
5 $! Build the *.pcsi$text file in the following sections:
6 $!   Required software dependencies.
7 $!   install/upgrade/postinstall steps.
8 $!      1. Duplicate filenames need an alias procedure. (N/A for curl)
9 $!      2. ODS-5 filenames need an alias procedure. (N/A for curl)
10 $!      3. Special alias links for executables (curl. -> curl.exe)
11 $!         if a lot, then an alias procedure is needed.
12 $!      4. Rename the files to lowercase.
13 $!   Move Release Notes to destination
14 $!   Source kit option
15 $!   Create directory lines
16 $!   Add file lines for curl.
17 $!   Add Link alias procedure file (N/A for curl)
18 $!   Add [.SYS$STARTUP]curl_startup file
19 $!   Add Release notes file.
20 $!
21 $! The file PCSI_GNV_CURL_FILE_LIST.TXT is read in to get the files other
22 $! than the release notes file and the source backup file.
23 $!
24 $! The PCSI system can really only handle ODS-2 format filenames and
25 $! assumes that there is only one source directory.  It also assumes that
26 $! all destination files with the same name come from the same source file.
27 $! Fortunately CURL does not trip most of these issues, so those steps
28 $! above are marked N/A.
29 $!
30 $! A rename action section is needed to make sure that the files are
31 $! created in the GNV$GNU: in the correct case, and to create the alias
32 $! link [usr.bin]curl. for [usr.bin]curl.exe.
33 $!
34 $! Copyright 2009, John Malmberg
35 $!
36 $! Permission to use, copy, modify, and/or distribute this software for any
37 $! purpose with or without fee is hereby granted, provided that the above
38 $! copyright notice and this permission notice appear in all copies.
39 $!
40 $! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
41 $! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
42 $! MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
43 $! ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
44 $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
45 $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
46 $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
47 $!
48 $!
49 $! 15-Jun-2009  J. Malmberg
50 $!
51 $!===========================================================================
52 $!
53 $ kit_name = f$trnlnm("GNV_PCSI_KITNAME")
54 $ if kit_name .eqs. ""
55 $ then
56 $   write sys$output "@MAKE_PCSI_CURL_KIT_NAME.COM has not been run."
57 $   goto all_exit
58 $ endif
59 $ producer = f$trnlnm("GNV_PCSI_PRODUCER")
60 $ if producer .eqs. ""
61 $ then
62 $   write sys$output "@MAKE_PCSI_CURL_KIT_NAME.COM has not been run."
63 $   goto all_exit
64 $ endif
65 $ filename_base = f$trnlnm("GNV_PCSI_FILENAME_BASE")
66 $ if filename_base .eqs. ""
67 $ then
68 $   write sys$output "@MAKE_PCSI_CURL_KIT_NAME.COM has not been run."
69 $   goto all_exit
70 $ endif
71 $!
72 $!
73 $! Parse the kit name into components.
74 $!---------------------------------------
75 $ producer = f$element(0, "-", kit_name)
76 $ base = f$element(1, "-", kit_name)
77 $ product = f$element(2, "-", kit_name)
78 $ mmversion = f$element(3, "-", kit_name)
79 $ majorver = f$extract(0, 3, mmversion)
80 $ minorver = f$extract(3, 2, mmversion)
81 $ updatepatch = f$element(4, "-", kit_name)
82 $ if updatepatch .eqs. "-" then updatepatch = ""
83 $!
84 $! kit type of "D" means a daily build
85 $ kit_type = f$edit(f$extract(0, 1, majorver), "upcase")
86 $!
87 $!
88 $ product_line = "product ''producer' ''base' ''product'"
89 $ if updatepatch .eqs. ""
90 $ then
91 $     product_name = " ''majorver'.''minorver'"
92 $ else
93 $     product_name = " ''majorver'.''minorver'-''updatepatch'"
94 $ endif
95 $ product_line = product_line + " ''product_name' full;"
96 $!write sys$output product_line
97 $!
98 $!
99 $!
100 $! Create the file as a VMS text file.
101 $!----------------------------------------
102 $ base_file = kit_name
103 $ create 'base_file'.pcsi$desc
104 $!
105 $!
106 $! Start building file.
107 $!----------------------
108 $ open/append pdsc 'base_file'.pcsi$desc
109 $!
110 $ write pdsc product_line
111 $!
112 $! Required product dependencies.
113 $!----------------------------------
114 $ vmsprd = "DEC"
115 $ if base .eqs. "I64VMS" then vmsprd = "HP"
116 $ vsiprd = "VSI"
117 $!
118 $ write pdsc "   software ''vmsprd' ''base' VMS ;"
119 $ arch_type = f$getsyi("ARCH_NAME")
120 $ node_swvers = f$getsyi("node_swvers")
121 $ vernum = f$extract(1, f$length(node_swvers), node_swvers)
122 $ majver = f$element(0, ".", vernum)
123 $ minverdash = f$element(1, ".", vernum)
124 $ minver = f$element(0, "-", minverdash)
125 $ dashver = f$element(1, "-", minverdash)
126 $ if dashver .eqs. "-" then dashver = ""
127 $ vmstag = majver + minver + dashver
128 $ code = f$extract(0, 1, arch_type)
129 $ arch_code = f$extract(0, 1, arch_type)
130 $ line_out = -
131  "   if ((not <software ''vsiprd' ''base' VMS version minimum" + -
132  " ''node_swvers'>) and" + -
133  " (not <software ''vmsprd' ''base' VMS version minimum ''node_swvers'>));"
134 $ write pdsc line_out
135 $ write pdsc "      error NEED_VMS''vmstag';"
136 $ write pdsc "   end if;"
137 $!
138 $write pdsc "   software VMSPORTS ''base' ZLIB ;"
139 $write pdsc -
140     "   if (not <software VMSPORTS ''base' ZLIB version minimum V1.2-8>) ;"
141 $write pdsc "      error NEED_ZLIB;"
142 $write pdsc "   end if;"
143 $!
144 $!
145 $!
146 $! install/upgrade/postinstall steps.
147 $!-----------------------------------
148 $!      1. Duplicate filenames need an alias procedure. (N/A for curl)
149 $!      2. ODS-5 filenames need an alias procedure. (N/A for curl)
150 $!      3. Special alias links for executables (curl. -> curl.exe)
151 $!         if a lot, then an alias procedure is needed.
152 $!      4. Rename the files to lowercase.
153 $!
154 $!
155 $!   Alias links needed.
156 $!-------------------------
157 $ add_alias_lines = ""
158 $ rem_alias_lines = ""
159 $ line_out = ""
160 $!
161 $!   Read through the file list to set up aliases and rename commands.
162 $!---------------------------------------------------------------------
163 $ open/read flst pcsi_gnv_curl_file_list.txt
164 $!
165 $inst_alias_loop:
166 $   read/end=inst_alias_loop_end flst line_in
167 $   line_in = f$edit(line_in,"compress,trim,uncomment")
168 $   if line_in .eqs. "" then goto inst_alias_loop
169 $   pathname = f$element(0, " ", line_in)
170 $   linkflag = f$element(1, " ", line_in)
171
172 $   if linkflag .nes. "->" then goto inst_alias_write
173 $!
174 $   linktarget = f$element(2, " ", line_in)
175 $   if kit_type .eqs. "D"
176 $   then
177 $       old_start = f$locate("[gnv.usr", pathname)
178 $       if old_start .lt. f$length(pathname)
179 $       then
180 $           pathname = "[gnv.beta" + pathname - "[gnv.usr"
181 $           linktarget = "[gnv.beta" + linktarget - "[gnv.usr"
182 $       endif
183 $   endif
184 $   nlink = "pcsi$destination:" + pathname
185 $   ntarg = "pcsi$destination:" + linktarget
186 $   new_add_alias_line = -
187   """if f$search(""""''nlink'"""") .eqs. """""""" then" + -
188   " set file/enter=''nlink' ''ntarg'"""
189 $   if add_alias_lines .nes. ""
190 $   then
191 $       add_alias_lines = add_alias_lines + "," + new_add_alias_line
192 $   else
193 $       add_alias_lines = new_add_alias_line
194 $   endif
195 $!
196 $   new_rem_alias_line = -
197   """if f$search(""""''nlink'"""") .nes. """""""" then" + -
198   " set file/remove ''nlink';"""
199 $   if rem_alias_lines .nes. ""
200 $   then
201 $      rem_alias_lines = rem_alias_lines + "," + new_rem_alias_line
202 $   else
203 $      rem_alias_lines = new_rem_alias_line
204 $   endif
205 $!
206 $   goto inst_alias_loop
207 $!
208 $inst_alias_write:
209 $!
210 $!  execute install / remove
211 $   write pdsc "   execute install ("
212 $! add aliases
213 $   i = 0
214 $ex_ins_loop:
215 $       line = f$element(i, ",", add_alias_lines)
216 $       i = i + 1
217 $       if line .eqs. "" then goto ex_ins_loop
218 $       if line .eqs. "," then goto ex_ins_loop_end
219 $       if line_out .nes. "" then write pdsc line_out,","
220 $       line_out = line
221 $       goto ex_ins_loop
222 $ex_ins_loop_end:
223 $   write pdsc line_out
224 $   line_out = ""
225 $   write pdsc "      )"
226 $   write pdsc "   remove ("
227 $! remove aliases
228 $   i = 0
229 $ex_rem_loop:
230 $       line = f$element(i, ",", rem_alias_lines)
231 $       i = i + 1
232 $       if line .eqs. "" then goto ex_rem_loop
233 $       if line .eqs. "," then goto ex_rem_loop_end
234 $       if line_out .nes. "" then write pdsc line_out,","
235 $       line_out = line
236 $       goto ex_rem_loop
237 $ex_rem_loop_end:
238 $   write pdsc line_out
239 $   line_out = ""
240 $   write pdsc "      ) ;"
241 $!
242 $!  execute upgrade
243 $   write pdsc "   execute upgrade ("
244 $   i = 0
245 $ex_upg_loop:
246 $       line = f$element(i, ",", rem_alias_lines)
247 $       i = i + 1
248 $       if line .eqs. "" then goto ex_upg_loop
249 $       if line .eqs. "," then goto ex_upg_loop_end
250 $       if line_out .nes. "" then write pdsc line_out,","
251 $       line_out = line
252 $       goto ex_upg_loop
253 $ex_upg_loop_end:
254 $   write pdsc line_out
255 $   line_out = ""
256 $! remove aliases
257 $   write pdsc "      ) ;"
258 $!
259 $!  execute postinstall
260 $   write pdsc "   execute postinstall ("
261 $   if arch_code .nes. "V"
262 $   then
263 $       line_out = "   ""set process/parse=extended"""
264 $   endif
265 $   i = 0
266 $ex_pins_loop:
267 $       line = f$element(i, ",", add_alias_lines)
268 $       i = i + 1
269 $       if line .eqs. "" then goto ex_pins_loop
270 $       if line .eqs. "," then goto ex_pins_loop_end
271 $       if line_out .nes. "" then write pdsc line_out,","
272 $       line_out = line
273 $       goto ex_pins_loop
274 $ex_pins_loop_end:
275 $   if line_out .eqs. "" then line_out = "   ""continue"""
276 $!   write pdsc line_out
277 $!   line_out = ""
278 $! add aliases and follow with renames.
279 $!
280 $goto inst_dir
281 $!
282 $inst_dir_loop:
283 $   read/end=inst_alias_loop_end flst line_in
284 $   line_in = f$edit(line_in,"compress,trim,uncomment")
285 $   if line_in .eqs. "" then goto inst_dir_loop
286 $inst_dir:
287 $   pathname = f$element(0, " ", line_in)
288 $   if kit_type .eqs. "D"
289 $   then
290 $       if pathname .eqs. "[gnv]usr.dir"
291 $       then
292 $           pathname = "[gnv]beta.dir"
293 $       else
294 $           old_start = f$locate("[gnv.usr", pathname)
295 $           if old_start .lt. f$length(pathname)
296 $           then
297 $               pathname = "[gnv.beta" + pathname - "[gnv.usr"
298 $           endif
299 $       endif
300 $   endif
301 $!
302 $!  Ignore the directory entries for now.
303 $!-----------------------------------------
304 $   filedir = f$parse(pathname,,,"DIRECTORY")
305 $   if pathname .eqs. filedir then goto inst_dir_loop
306 $!
307 $!  process .dir extensions for rename
308 $!  If this is not a directory then start processing files.
309 $!-------------------------
310 $   filetype = f$parse(pathname,,,"TYPE")
311 $   filetype_u = f$edit(filetype, "upcase")
312 $   filename = f$parse(pathname,,,"NAME")
313 $   if filetype_u .nes. ".DIR" then goto inst_file
314 $!
315 $!  process directory lines for rename.
316 $!--------------------------------------
317 $   if line_out .nes. ""
318 $   then
319 $       write pdsc line_out,","
320 $       line_out = ""
321 $   endif
322 $   if arch_code .nes. "V"
323 $   then
324 $       if line_out .nes. "" then write pdsc line_out,","
325 $       line_out = "   ""rename pcsi$destination:''pathname' ''filename'.DIR"""
326 $   else
327 $       if line_out .nes. "" then write pdsc line_out
328 $       line_out = ""
329 $   endif
330 $   goto inst_dir_loop
331 $!
332 $!
333 $!   process file lines for rename
334 $!---------------------------------
335 $inst_file_loop:
336 $   read/end=inst_alias_loop_end flst line_in
337 $   line_in = f$edit(line_in,"compress,trim,uncomment")
338 $   if line_in .eqs. "" then goto inst_dir_loop
339 $   pathname = f$element(0, " ", line_in)
340 $   if kit_type .eqs. "D"
341 $   then
342 $       if pathname .eqs. "[gnv]usr.dir"
343 $       then
344 $           pathname = "[gnv]beta.dir"
345 $       else
346 $           old_start = f$locate("[gnv.usr", pathname)
347 $           if old_start .lt. f$length(pathname)
348 $           then
349 $               pathname = "[gnv.beta" + pathname - "[gnv.usr"
350 $           endif
351 $       endif
352 $   endif
353 $!
354 $!  Filenames with $ in them are VMS special and do not need to be lowercased.
355 $!  --------------------------------------------------------------------------
356 $   if f$locate("$", pathname) .lt. f$length(pathname) then goto inst_file_loop
357 $!
358 $   filetype = f$parse(pathname,,,"TYPE")
359 $   filename = f$parse(pathname,,,"NAME") + filetype
360 $inst_file:
361 $   if arch_code .nes. "V"
362 $   then
363 $       if line_out .nes. "" then write pdsc line_out,","
364 $       filetype = f$parse(pathname,,,"TYPE")
365 $       filename = f$parse(pathname,,,"NAME") + filetype
366 $       line_out = "   ""rename pcsi$destination:''pathname' ''filename'"""
367 $   else
368 $       if line_out .nes. "" then write pdsc line_out
369 $       line_out = ""
370 $   endif
371 $   goto inst_file_loop
372 $!
373 $inst_alias_loop_end:
374 $!
375 $write pdsc line_out
376 $write pdsc "        ) ;"
377 $close flst
378 $!
379 $!   Move Release Notes to destination
380 $!-------------------------------------
381 $write pdsc "   information RELEASE_NOTES phase after ;"
382 $!
383 $!   Source kit option
384 $!---------------------
385 $write pdsc "   option SOURCE default 0;"
386 $write pdsc "   directory ""[gnv.common_src]"" PROTECTION PUBLIC ;"
387 $write pdsc -
388     "        file ""[gnv.common_src]''filename_base'_original_src.bck"""
389 $write pdsc -
390     "          source [common_src]''filename_base'_original_src.bck ;"
391 $if f$search("gnv$gnu:[vms_src]''filename_base'_vms_src.bck") .nes. ""
392 $then
393 $    write pdsc "   directory ""[gnv.vms_src]"" PROTECTION PUBLIC ;"
394 $    write pdsc "        file ""[gnv.vms_src]''filename_base'_vms_src.bck"""
395 $    write pdsc "          source [vms_src]''filename_base'_vms_src.bck ;"
396 $endif
397 $write pdsc "   end option;"
398 $!
399 $!
400 $! Read through the file list again.
401 $!----------------------------------
402 $open/read flst pcsi_gnv_curl_file_list.txt
403 $!
404 $!
405 $!   Create directory lines
406 $!-------------------------
407 $flst_dir_loop:
408 $   read/end=flst_loop_end flst line_in
409 $   line_in = f$edit(line_in,"compress,trim,uncomment")
410 $   if line_in .eqs. "" then goto flst_dir_loop
411 $!
412 $   filename = f$element(0, " ", line_in)
413 $   linkflag = f$element(1, " ", line_in)
414 $   if linkflag .eqs. "->" then goto flst_dir_loop
415 $!
416 $!  Ignore .dir extensions
417 $!-------------------------
418 $   filetype = f$edit(f$parse(filename,,,"TYPE"), "upcase")
419 $   if filetype .eqs. ".DIR" then goto flst_dir_loop
420 $!
421 $   destname = filename
422 $   if kit_type .eqs. "D"
423 $   then
424 $       old_start = f$locate("[gnv.usr", destname)
425 $       if old_start .lt. f$length(destname)
426 $       then
427 $           destname = "[gnv.beta" + destname - "[gnv.usr"
428 $       endif
429 $   endif
430 $!
431 $!  It should be just a directory then.
432 $!-------------------------------------
433 $   filedir = f$edit(f$parse(filename,,,"DIRECTORY"), "lowercase")
434 $!  If this is not a directory then start processing files.
435 $!---------------------------------------------------------
436 $   if filename .nes. filedir then goto flst_file
437 $!
438 $   write pdsc "   directory ""''destname'"" PROTECTION PUBLIC ;"
439 $   goto flst_dir_loop
440 $!
441 $!
442 $!   Add file lines for curl.
443 $!---------------------------
444 $flst_file_loop:
445 $   read/end=flst_loop_end flst line_in
446 $   line_in = f$edit(line_in,"compress,trim,uncomment")
447 $   if line_in .eqs. "" then goto inst_file_loop
448 $   filename = f$element(0, " ", line_in)
449 $   destname = filename
450 $   if kit_type .eqs. "D"
451 $   then
452 $       old_start = f$locate("[gnv.usr", destname)
453 $       if old_start .lt. f$length(destname)
454 $       then
455 $           destname = "[gnv.beta" + destname - "[gnv.usr"
456 $       endif
457 $   endif
458 $flst_file:
459 $   srcfile = filename - "gnv."
460 $   write pdsc "   file ""''destname'"" "
461 $   write pdsc "     source ""''srcfile'"" ;"
462 $   goto flst_file_loop
463 $!
464 $flst_loop_end:
465 $ close flst
466 $!
467 $!   Add Link alias procedure file (N/A for curl)
468 $!------------------------------------------------
469 $!
470 $!   Add [.SYS$STARTUP]curl_startup file
471 $!---------------------------------------
472 $ if kit_type .eqs. "D"
473 $ then
474 $   write pdsc "   file ""[sys$startup]curl_daily_startup.com"""
475 $ else
476 $   write pdsc "   file ""[sys$startup]curl_startup.com"""
477 $ endif
478 $ write pdsc "     source [usr.lib]curl_startup.com ;"
479 $!
480 $!   Add Release notes file.
481 $!------------------------------
482 $ write pdsc -
483     "   file ""[SYSHLP]''filename_base'.release_notes"" release notes ;"
484 $!
485 $! Close the product file
486 $!------------------------
487 $ write pdsc "end product;"
488 $!
489 $close pdsc
490 $!
491 $all_exit:
492 $ exit