tizen 2.3.1 release
[external/curl.git] / packages / vms / make_pcsi_curl_kit_name.com
1 $! File: MAKE_PCSI_CURL_KIT_NAME.COM
2 $!
3 $! $Id$
4 $!
5 $! Calculates the PCSI kit name for use in building an installation kit.
6 $! PCSI is HP's PolyCenter Software Installation Utility.
7 $!
8 $! The results are stored in as logical names so that other procedures
9 $! can use them.
10 $!
11 $! Copyright 2009, John Malmberg
12 $!
13 $! Permission to use, copy, modify, and/or distribute this software for any
14 $! purpose with or without fee is hereby granted, provided that the above
15 $! copyright notice and this permission notice appear in all copies.
16 $!
17 $! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
18 $! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
19 $! MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
20 $! ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
21 $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
22 $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
23 $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
24 $!
25 $! 11-Jun-2009 J. Malmberg
26 $!
27 $!========================================================================
28 $!
29 $! Save default
30 $ default_dir = f$environment("DEFAULT")
31 $!
32 $! Move to the base directories
33 $ set def [--]
34 $!
35 $! Put things back on error.
36 $ on warning then goto all_exit
37 $!
38 $! The producer is the name or common abbreviation for the entity that is
39 $! making the kit.  It must be set as a logical name before running this
40 $! procedure.
41 $!
42 $! HP documents the producer as the legal owner of the software, but for
43 $! open source work, it should document who is creating the package for
44 $! distribution.
45 $!
46 $ producer = f$trnlnm("GNV_PCSI_PRODUCER")
47 $ if producer .eqs. ""
48 $ then
49 $   write sys$output "The logical name GNV_PCSI_PRODUCER needs to be defined."
50 $   write sys$output "This should be set to the common abbreviation or name of"
51 $   write sys$output "the entity creating this kit.  If you are an individual"
52 $   write sys$output "then use your initials."
53 $   goto all_exit
54 $ endif
55 $ producer_full_name = f$trnlnm("GNV_PCSI_PRODUCER_FULL_NAME")
56 $ if producer_full_name .eqs. ""
57 $ then
58 $   write sys$output "The logical name GNV_PCSI_PRODUCER_FULL_NAME needs to"
59 $   write sys$output "be defined.  This should be set to the full name of"
60 $   write sys$output "the entity creating this kit.  If you are an individual"
61 $   write sys$output "then use your name."
62 $   write sys$output "EX: DEFINE GNV_PCSI_PRODUCER_FULL_NAME ""First M. Last"""
63 $   goto all_exit
64 $ endif
65 $!
66 $ write sys$output "*****"
67 $ write sys$output "***** Producer = ''producer'"
68 $ write sys$output "*****"
69 $!
70 $!
71 $! Base is one of 'VMS', 'AXPVMS', 'I64VMS', 'VAXVMS' and indicates what
72 $! binaries are in the kit.  A kit with just 'VMS' can be installed on all
73 $! architectures.
74 $!
75 $ base = "VMS"
76 $ arch_type = f$getsyi("ARCH_NAME")
77 $ code = f$extract(0, 1, arch_type)
78 $ if (code .eqs. "I") then base = "I64VMS"
79 $ if (code .eqs. "V") then base = "VAXVMS"
80 $ if (code .eqs. "A") then base = "AXPVMS"
81 $!
82 $!
83 $ product = "curl"
84 $!
85 $!
86 $! We need to get the version from curlver_h.  It will have a line like
87 $! #define LIBCURL_VERSION "7.31.0"
88 $!   or
89 $! #define LIBCURL_VERSION "7.32.0-20130731".
90 $!
91 $! The dash indicates that this is a daily pre-release.
92 $!
93 $!
94 $ open/read/error=version_loop_end vhf [.include.curl]curlver.h
95 $ version_loop:
96 $   read vhf line_in
97 $   if line_in .eqs. "" then goto version_loop
98 $   if f$locate("#define LIBCURL_VERSION ", line_in) .ne. 0
99 $   then
100 $       goto version_loop
101 $   endif
102 $   raw_version = f$element(2," ", line_in) - """" - """"
103 $ version_loop_end:
104 $ close vhf
105 $!
106 $!
107 $ eco_level = ""
108 $ if f$search("''default_dir'vms_eco_level.h") .nes. ""
109 $ then
110 $   open/read ef 'default_dir'vms_eco_level.h
111 $ecolevel_loop:
112 $       read/end=ecolevel_loop_end ef line_in
113 $       prefix = f$element(0, " ", line_in)
114 $       if prefix .nes. "#define" then goto ecolevel_loop
115 $       key = f$element(1, " ", line_in)
116 $       value = f$element(2, " ", line_in) - """" - """"
117 $       if key .eqs. "VMS_ECO_LEVEL"
118 $       then
119 $           eco_level = "''value'"
120 $           if eco_level .eqs. "0"
121 $           then
122 $               eco_level = ""
123 $           else
124 $               eco_level = "E" + eco_level
125 $           endif
126 $           goto ecolevel_loop_end
127 $       endif
128 $       goto ecolevel_loop
129 $ecolevel_loop_end:
130 $   close ef
131 $ endif
132 $!
133 $!
134 $! This translates to V0732-0 or D0732-0
135 $! We encode the snapshot date into the version as an ECO since a daily
136 $! can never have an ECO.
137 $!
138 $! version_type = 'V' for a production release, and 'D' for a build from a
139 $! daiy snapshot of the curl source.
140 $ majorver = f$element(0, ".", raw_version)
141 $ minorver = f$element(1, ".", raw_version)
142 $ raw_update = f$element(2, ".", raw_version)
143 $ update = f$element(0, "-", raw_update)
144 $ if update .eqs. "0" then update = ""
145 $ daily_tag = f$element(1, "-", raw_update)
146 $ vtype = "V"
147 $ patch = ""
148 $ if daily_tag .nes. "-"
149 $ then
150 $   vtype = "D"
151 $   daily_tag_len = f$length(daily_tag)
152 $   daily_tag = f$extract(4, daily_tag_len - 4, daily_tag)
153 $   patch = vtype + daily_tag
154 $   product = product + "_d"
155 $ else
156 $   daily_tag = ""
157 $   if eco_level .nes. "" then patch = eco_level
158 $ endif
159 $!
160 $!
161 $ version_fao = "!2ZB!2ZB"
162 $ mmversion = f$fao(version_fao, 'majorver', 'minorver')
163 $ version = vtype + "''mmversion'"
164 $ if update .nes. "" .or. patch .nes. ""
165 $ then
166 $!  The presence of a patch implies an update
167 $   if update .eqs. "" .and. patch .nes. "" then update = "0"
168 $   version = version + "-" + update + patch
169 $   fversion = version
170 $ else
171 $   fversion = version
172 $   version = version + "-"
173 $ endif
174 $!
175 $! Kit type 1 is complete kit, the only type that this procedure will make.
176 $ kittype = 1
177 $!
178 $! Write out a logical name for the resulting base kit name.
179 $ name = "''producer'-''base'-''product'-''version'-''kittype'"
180 $ define GNV_PCSI_KITNAME "''name'"
181 $ fname = "''product'-''fversion'"
182 $ define GNV_PCSI_FILENAME_BASE "''fname'"
183 $ write sys$output "*****"
184 $ write sys$output "***** GNV_PCSI_KITNAME = ''name'."
185 $ write sys$output "***** GNV_PCSI_FILENAME_BASE = ''fname'."
186 $ write sys$output "*****"
187 $!
188 $all_exit:
189 $ set def 'default_dir'
190 $ exit '$status'