$! File: MAKE_PCSI_GAWK_KIT_NAME.COM $! $! Calculates the PCSI kit name for use in building an installation kit. $! PCSI is HP's PolyCenter Software Installation Utility. $! $! The results are stored in as logical names so that other procedures $! can use them. $! $! 92-Jan-2014 J. Malmberg Gawk version $!======================================================================== $! $! Save default $default_dir = f$environment("DEFAULT") $! $! Put things back on error. $on warning then goto all_exit $! $! The producer is the name or common abbreviation for the entity that is $! making the kit. It must be set as a logical name before running this $! procedure. $! $! HP documents the producer as the legal owner of the software, but for $! open source work, it should document who is creating the package for $! distribution. $! $producer = f$trnlnm("GNV_PCSI_PRODUCER") $if producer .eqs. "" $then $ write sys$output "The logical name GNV_PCSI_PRODUCER needs to be defined." $ write sys$output "This should be set to the common abbreviation or name of" $ write sys$output "the entity creating this kit. If you are an individual" $ write sys$output "then use your initials as long as they do not match" $ write sys$output "a different well known producer prefix." $ goto all_exit $endif $producer_full_name = f$trnlnm("GNV_PCSI_PRODUCER_FULL_NAME") $if producer_full_name .eqs. "" $then $ write sys$output "The logical name GNV_PCSI_PRODUCER_FULL_NAME needs to" $ write sys$output "be defined. This should be set to the full name of" $ write sys$output "the entity creating this kit. If you are an individual" $ write sys$output "then use your name." $ write sys$output "EX: DEFINE GNV_PCSI_PRODUCER_FULL_NAME ""First M. Last""" $ goto all_exit $endif $! $write sys$output "*****" $write sys$output "***** Producer = ''producer'" $write sys$output "*****" $! $! $! Base is one of 'VMS', 'AXPVMS', 'I64VMS', 'VAXVMS' and indicates what $! binaries are in the kit. A kit with just 'VMS' can be installed on all $! architectures. $! $base = "VMS" $arch_type = f$getsyi("ARCH_NAME") $code = f$extract(0, 1, arch_type) $if (code .eqs. "I") then base = "I64VMS" $if (code .eqs. "V") then base = "VAXVMS" $if (code .eqs. "A") then base = "AXPVMS" $! $! $product = "gawk" $! $! $! We need to get the version from config.h. It will have a lines like $! #define PACKAGE_VERSION "4.1.0a" $! $! $open/read/error=version_loop_end verf config.h $version_loop: $ read/end=version_loop_end verf line_in $ if line_in .eqs. "" then goto version_loop $ if f$locate("#define PACKAGE_VERSION", line_in) .ne. 0 $ then $ goto version_loop $ endif $ tag = f$element(1, " ", line_in) $ value = f$element(2, " ", line_in) - """" - """" $ if tag .eqs. "PACKAGE_VERSION" $ then $ distversion = value $ goto version_loop_end $ endif $ goto version_loop $version_loop_end: $close verf $! $! $! Optional ECO file. $ECO_LEVEL = "" $vms_eco_file = "[.vms]vms_eco_level.h" $if f$search(vms_eco_file) .nes. "" $then $ open/read ef 'vms_eco_file' $ecolevel_loop: $ read/end=ecolevel_loop_end ef line_in $ prefix = f$element(0, " ", line_in) $ if prefix .nes. "#define" then goto ecolevel_loop $ key = f$element(1, " ", line_in) $ value = f$element(2, " ", line_in) - """" - """" $ if key .eqs. "VMS_ECO_LEVEL" $ then $ ECO_LEVEL = value $ if ECO_LEVEL .eq. 0 $ then $ ECO_LEVEL = "" $ else $ ECO_LEVEL = "E" + ECO_LEVEL $ endif $ goto ecolevel_loop_end $ endif $ goto ecolevel_loop $ecolevel_loop_end: $ close ef $endif $! $raw_version = distversion $! $! $! This translates to V0114-08 or D0115-01 $! We can not encode the snapshot date into the version due to the way that $! the Polycenter Software Installation Utility evaluates the name. $! $! version_type = 'V' for a production release, and 'D' for a build from a $! daily repository snapshot, and a code for a build from a pre-release branch $majorver = f$element(0, ".", raw_version) $minorver = f$element(1, ".", raw_version) $update = f$element(2,".", raw_version) $if update .eqs. "." then update = "" $vtype = "V" $if update .nes. "" $then $ update_len = f$length(update) $ code = f$extract(update_len - 1, 1, update) $ code = f$edit(code, "UPCASE") $ if (code .ges. "A") .and. (code .les. "Z") $ then $ update = f$extract(0, update_len - 1, update) $ vtype = code $ endif $endif $if update .eqs. "0" then update = "" $! $! $version_fao = "!2ZB!2ZB" $mmversion = f$fao(version_fao, 'majorver', 'minorver') $version = vtype + "''mmversion'" $if update .nes. "" .or. ECO_LEVEL .nes. "" $then $! The presence of an ECO implies an update $ if update .eqs. "" .and. ECO_LEVEL .nes. "" then update = "0" $ version = version + "-" + update + ECO_LEVEL $ fversion = version $else $ fversion = version $ version = version + "-" $endif $! $! Kit type 1 is complete kit, the only type that this procedure will make. $Kittype = 1 $! $! Write out a logical name for the resulting base kit name. $name = "''producer'-''base'-''product'-''version'-''kittype'" $define GNV_PCSI_KITNAME "''name'" $fname = "''product'-''fversion'" $! $! No ECO or Patch level $fname_len = f$length(fname) $if f$extract(fname_len - 1, 1, fname) .eqs. "-" $then $ fname = f$extract(0, fname_len - 1, fname) $ fname_len = fname_len - 1 $endif $if f$extract(fname_len - 1, 1, fname) .eqs. "-" $then $ fname = f$extract(0, fname_len - 1, fname) $ fname_len = fname_len - 1 $endif $define GNV_PCSI_FILENAME_BASE 'fname' $write sys$output "*****" $write sys$output "***** GNV_PCSI_KITNAME = ''name'." $write sys$output "***** GNV_PCSI_FILENAME_BASE = ''fname'." $write sys$output "*****" $! $all_exit: $set def 'default_dir' $exit '$status'