home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / adss / install / postinstall < prev    next >
Text File  |  1998-08-19  |  5KB  |  204 lines

  1. #ident    "@(#)pkg.ihvhba:i386/pkg/ihvhba/adss/postinstall    1.8.2.1"
  2.  
  3. do_extract () {
  4.  
  5.     ###
  6.     # Extract Driver.o from loadable module
  7.     ###
  8.     mv /tmp/$PKGINST/$PKGINST /tmp/$PKGINST/Driver.o
  9.  
  10.     for sec in data data1 rodata rodata1 text
  11.     do
  12.         mcs -n .drv_$sec -d Driver.o
  13.         mcs -n .rel.drv_$sec -d Driver.o
  14.     done
  15.  
  16.     mcs -n .mod_dep -d Driver.o
  17.     mcs -n .rel.mod_dep -d Driver.o
  18.  
  19.     ###
  20.     # remove .comment because it is now about 2k.  Really it should be 
  21.     # pstamped note that all our loadable drivers have large .comment 
  22.     # sections that should be pstamped.
  23.     ###
  24.  
  25.     mcs -d Driver.o
  26. }
  27.  
  28. abort_install () {
  29.  
  30.     message -d ${FAIL_INST}
  31.     if [ $OVERLAY ]
  32.     then
  33.         if [ -d /var/sadm/hba.save/$PKGINST ]
  34.         then
  35.             SVDIR=/var/sadm/hba.save/$PKGINST
  36.             for FILE in Driver.o space.c disk.cfg
  37.             do
  38.                 if [ -f $SVDIR/pack.d/$FILE ]
  39.                 then 
  40.                     cp $SVDIR/pack.d/$FILE /etc/conf/pack.d/$PKGINST
  41.                 fi
  42.             done
  43.             if [ -f $SVDIR/drvmap.d/$PKGINST ]
  44.             then
  45.                 cp $SVDIR/drvmap.d/$PKGINST /etc/conf/drvmap.d
  46.             fi
  47.             if [ -f $SVDIR/mdevice.d/$PKGINST ]
  48.             then
  49.                 cp $SVDIR/mdevice.d/$PKGINST /etc/conf/mdevice.d
  50.             fi
  51.         fi
  52.     fi
  53.     exit ${FAILURE}
  54. }
  55.  
  56. do_install () {
  57.  
  58.     ${CONFBIN}/idinstall -P ${PKGINST} -a ${1} > ${ERR} 2>&1
  59.     RET=$?
  60.     if [ ${RET} != 0 ]
  61.     then
  62.         OVERLAY=1
  63.         SVDIR=/var/sadm/hba.save/$PKGINST
  64.  
  65.         if [ ! -d $SVDIR/pack.d ]
  66.         then
  67.             mkdir -p $SVDIR/pack.d 2>&1 >/dev/null
  68.         fi
  69.  
  70.         for FILE in Driver.o space.c disk.cfg
  71.         do
  72.             mv /etc/conf/pack.d/$PKGINST/$FILE $SVDIR/pack.d
  73.             if [ "$FILE" = "space.c" ]
  74.             then
  75.                mv /tmp/$PKGINST/Space.c /etc/conf/pack.d/$PKGINST/space.c
  76.             else
  77.                mv /tmp/$PKGINST/$FILE /etc/conf/pack.d/$PKGINST/$FILE
  78.             fi
  79.             [ $? -ne 0 ] && abort_install
  80.         done
  81.  
  82.         if [ ! -d $SVDIR/drvmap.d ]
  83.         then
  84.             mkdir $SVDIR/drvmap.d 2>&1 >/dev/null
  85.         fi
  86.         mv /etc/conf/drvmap.d/$PKGINST $SVDIR/drvmap.d
  87.         mv /tmp/$PKGINST/Drvmap /etc/conf/drvmap.d/$PKGINST
  88.         [ $? -ne 0 ] && abort_install
  89.  
  90.         if [ ! -d $SVDIR/mdevice.d ]
  91.         then
  92.             mkdir $SVDIR/mdevice.d 2>&1 >/dev/null
  93.         fi
  94.         mv /etc/conf/mdevice.d/$PKGINST $SVDIR/mdevice.d
  95.         mv /tmp/$PKGINST/Master /etc/conf/mdevice.d/$PKGINST
  96.         [ $? -ne 0 ] && abort_install
  97.     else
  98.         rm -f ${ERR}
  99.         mv disk.cfg /etc/conf/pack.d/${1}
  100.         chown bin /etc/conf/pack.d/${1}/disk.cfg 
  101.         chgrp bin /etc/conf/pack.d/${1}/disk.cfg
  102.     fi
  103. }
  104.  
  105. register() {
  106. if [ $OVERLAY ]
  107. then
  108. installf -c none $PKGINST - << !!EOF
  109. /etc/conf/pack.d/$PKGINST/Driver.o
  110. /etc/conf/pack.d/$PKGINST/disk.cfg
  111. /etc/conf/pack.d/$PKGINST/space.c
  112. /etc/conf/drvmap.d/$PKGINST
  113. /etc/conf/mdevice.d/$PKGINST
  114. !!EOF
  115. else
  116. installf -c none $PKGINST - << !!EOF
  117. /etc/conf/pack.d/${PKGINST}/disk.cfg
  118. /etc/loadmods
  119. !!EOF
  120. fi
  121. installf -f $PKGINST
  122. }
  123.  
  124. # Messaging related stuff
  125. PKGMSG=hba.pkg
  126. LOCALE=${LC_ALL:-${LC_MESSAGES:-${LANG:-"C"}}}
  127. # Check if we're installing during initial system installation.
  128. # If so, set ROOT=/mnt; otherwise ROOT is null.  Make sure that
  129. # we're not pkgadd'ing over a pkg that was installed during that
  130. # first system installation (i.e., check UPDATE).
  131. ROOT=
  132. [ "$SETNAME" = "from_loadhba" -a "$UPDATE" != "yes" ] && ROOT="/mnt"
  133. LC_MESSAGES=$ROOT/usr/lib/locale/$LOCALE
  134.  
  135. if [ ! -f ${LC_MESSAGES}/LC_MESSAGES/${PKGMSG} ]
  136. then
  137.     if [ -f ${REQDIR}/inst/locale/${LOCALE}/$PKGMSG} -a \
  138.         -d ${ROOT}/usr/lib/locale/${LOCALE}/LC_MESSAGES ]
  139.     then
  140.         cp ${REQDIR}/inst/locale/${LOCALE}/${PKGMSG} \
  141.             ${LC_MESSAGES}/LC_MESSAGES
  142.     fi
  143. fi
  144. FAIL_INST=`pfmt -s ERROR -g ${PKGMSG}:2 "The installation cannot be completed due to an error in the driver installation during the installation of the %s module.  The file %s contains the errors." "${PKGINST}" "${ERR}" 2>&1`
  145.  
  146.  
  147. FAILURE=1    # fatal error
  148.  
  149. CONFDIR=/etc/conf
  150. CONFBIN=${CONFDIR}/bin
  151. ERR=/tmp/err.out
  152.  
  153. cd /tmp/${PKGINST}
  154. [ -f /tmp/${PKGINST}/Driver.o ] || do_extract
  155. do_install ${PKGINST}
  156.  
  157. if test -f /bin/grep
  158. then
  159.     grep $PKGINST /etc/loadmods >/dev/null
  160.     [ $? -ne 0 ] &&
  161.         cat /tmp/$PKGINST/loadmods >>/etc/loadmods
  162. else
  163.     cat /tmp/$PKGINST/loadmods >>/etc/loadmods
  164. fi
  165.  
  166. # Register changes made to system into the contents file
  167. register
  168.  
  169. # Cleanup temporary files and directories
  170. rm -fr /tmp/${PKGINST} /tmp/hbacpio.z >/dev/null 2>&1
  171. removef ${PKGINST} /tmp /tmp/${PKGINST} /tmp/${PKGINST}/Drvmap \
  172.     /tmp/${PKGINST}/modcpio.z /tmp/hbacpio.z /tmp/${PKGINST}/Master \
  173.     /tmp/${PKGINST}/System >/dev/null 2>&1
  174. removef -f ${PKGINST} >/dev/null 2>&1
  175.  
  176. # If this package is being added as an add-on package (not being installed 
  177. # from the initial system installation via loadhba), then for non-ISA cards
  178. # which have boardids run 'dcu -s'.
  179. if [ "$ROOT" != "/mnt" ]
  180. then
  181.     cat /etc/conf/drvmap.d/${PKGINST} | awk -F'|' '
  182.         BEGIN {
  183.             BOARDID = 1
  184.         }
  185.     
  186.         {
  187.             if (NF > 1) {
  188.                 if ($2 !~ /Y/)
  189.                     if ($2 !~ /N/)
  190.                         if($3 != "") {
  191.                             BOARDID = 0
  192.                             exit
  193.                         }
  194.             }
  195.         }
  196.     
  197.         END {
  198.             exit BOARDID 
  199.         }'
  200.     [ $? -eq 0 ] && /sbin/dcu -s
  201. fi
  202. /etc/conf/bin/idbuild
  203. exit 0
  204.