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