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' 191