Files
seta75D d6fe8fe829 Init
2021-10-11 22:19:34 -03:00

210 lines
4.1 KiB
Bash

#!/bin/ksh
# @(#)24 1.1 UpdateVRMFs, ade_build, bos41J 2/17/95 13:24:26
#
# COMPONENT_NAME: bldtools
#
# FUNCTIONS: none
#
# ORIGINS: 27
#
#
# (C) COPYRIGHT International Business Machines Corp. 1995
# All Rights Reserved
# Licensed Materials - Property of IBM
# US Government Users Restricted Rights - Use, duplication or
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
#
# syntax: $0
# The $BLDCYCLE variable must be set in the environment.
alias dataman=`whence dataman`
alias CMVCman="`whence bldenv` `whence CMVCman`"
alias DBenv="`whence bldenv` `whence DBenv`"
typeset RELEASE_FIX_LEVEL=$(dataman -q packman[RELEASE_FIX_LEVEL])
#
# list all shipped files in file /tmp/shipped.$$
#
function list_filesets {
trap 'dataman -s leveldata[$BLDCYCLE][status][$cmd]=FAILED; clean_up ; exit 1' ERR
#
# All ship files have to have resolved ship files
#
if grep -sq -E 'NoFileset|UNKNOWN' $TOP/PTF/$BLDCYCLE/*/lmupdatelist
then
print "ERROR: ship files in lmupdatelist are in UNKNOWN filesets or NoFileset"
false # force clean exit
fi
#
# Extract filesets from lmupdatelists
#
awk '{print $2}' $TOP/PTF/$BLDCYCLE/*/lmupdatelist |
sort -u > /tmp/filesets.$$
}
#
#
#
function clean_up {
#
# remove temporary files
#
for i in shipped filesets
do
if [[ -f /tmp/$i.$$ ]]
then
rm /tmp/$i.$$
fi
done
}
#
# find libpp.a files from lmupdatelists
#
function find_pkg_updates {
#
# Identify shipped files from lmupdatelists (excluding pkg)
#
grep liblpp.a $TOP/PTF/$BLDCYCLE/pkg*/lmupdatelist |
while read file
do
fileset_raw=${file#*UPDATE/}
fileset_raw=${fileset_raw%/*}
fileset=$(print $fileset_raw | sed 's/\//\./g')
print $fileset >> /tmp/filesets.$$
done
}
#
# update vrmf values for fileset
#
function update_vrmf {
fileset=$1
integer version
integer release
integer maintenance
integer fix
trap 'dataman -s leveldata[$BLDCYCLE][status][$cmd]=FAILED ; clean_up ; exit 1' ERR
#
# If the file is not an update candidate then
# do not update the VRMF value
if grep -sq -E "^"$fileset"$|[^ ]*"$fileset"[ *]$|[^ ]*"$fileset"$" \
${ODE_TOOLS}/usr/lib/no_update_list
then
return 0
fi
print $fileset | sed 's/\./\//g' | read dirFileset
if [[ ! -f $TOP/UPDATE/$dirFileset/vrmfFile ]]
then
print -u2 "ERROR: Cannot find file: $TOP/UPDATE/$dirFileset/vrmfFile"
false # force clean clean-exit
fi
#
# get existing vrmf values
#
cat $TOP/UPDATE/$dirFileset/vrmfFile |
awk -F'.' '{printf("%d %d %d %d\n",$1,$2,$3,$4)}' |
read version release maintenance fix
#
# if 'first' update for release
# set maintenance level
#
if (( fix == 0 ))
then
(( fix = $RELEASE_FIX_LEVEL ))
fi
#
# increment the fix level
#
(( fix = fix + 1 ))
print $version"."$release"."$maintenance"."$fix > $TOP/UPDATE/$dirFileset/vrmfFile
#
# record vrmf value in dataman
#
dataman -a leveldata[$BLDCYCLE][fs_vrmf]=`print $fileset"\t"$version"."$release"."$maintenance"."$fix`
}
#
# initialize
#
cmd=${0##*/}
trap 'dataman -s leveldata[$BLDCYCLE][status][$cmd]=FAILED; clean_up ; exit 1' ERR
if [ "$BLDCYCLE" = "" ]
then
echo "The BLDCYCLE variable must be set and exported!"
(( 1 == 0 )) # force clean clean-exit
fi
typeset -r treetop=$(dataman -q leveldata[$BLDCYCLE][treepath] || \
dataman -q directory[fulltop])
export TOP=$treetop/selfix
typeset RC=0
if [[ ! -f ${ODE_TOOLS}/usr/lib/no_update_list ]]
then
print "ERROR: file ${ODE_TOOLS}/usr/lib/no_update_list missing"
false # force clean clean-exit
fi
clean_up
dataman -s leveldata[$BLDCYCLE][status][$cmd]=RUNNING
#
# list_filesets
#
list_filesets
#
# identify updates from pkg lmupdatelists
#
#find_pkg_updates
#
# remove duplicate filesets
#
sort -u /tmp/filesets.$$ >> /tmp/filesets.sort.$$
mv /tmp/filesets.sort.$$ /tmp/filesets.$$
#
# sequence through filesets affected and
# 1) update vrmf values
# 2) store vrmf change status
#
cat /tmp/filesets.$$ |
while read fileset
do
update_vrmf $fileset
done
#
# completion steps
#
clean_up
dataman -s leveldata[$BLDCYCLE][status][$cmd]=COMPLETE