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

  1. #ident    "@(#)pkg.ihvhba:i386/pkg/ihvhba/fdsb/postinstall    1.4.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.  
  98.     else
  99.         rm -f ${ERR}
  100.         mv disk.cfg /etc/conf/pack.d/${1}
  101.         chown bin /etc/conf/pack.d/${1}/disk.cfg 
  102.         chgrp bin /etc/conf/pack.d/${1}/disk.cfg
  103.     fi
  104.     mv ${1}.h /usr/include/sys
  105.     chown bin /usr/include/sys/${1}.h
  106.     chgrp bin /usr/include/sys/${1}.h
  107. }
  108.  
  109. register() {
  110. if [ $OVERLAY ]
  111. then
  112. installf -c none $PKGINST - << !!EOF
  113. /etc/conf/pack.d/$PKGINST/Driver.o
  114. /etc/conf/pack.d/$PKGINST/disk.cfg
  115. /etc/conf/pack.d/$PKGINST/space.c
  116. /etc/conf/drvmap.d/$PKGINST
  117. /etc/conf/mdevice.d/$PKGINST
  118. !!EOF
  119. else
  120. installf -c none $PKGINST - << !!EOF
  121. /etc/conf/pack.d/${PKGINST}/disk.cfg
  122. /usr/include/sys/${PKGINST}.h
  123. /etc/loadmods
  124. !!EOF
  125. fi
  126. installf -f $PKGINST
  127. }
  128.  
  129. # Messaging related stuff
  130. PKGMSG=hba.pkg
  131. LOCALE=${LC_ALL:-${LC_MESSAGES:-${LANG:-"C"}}}
  132. # Check if we're installing during initial system installation.
  133. # If so, set ROOT=/mnt; otherwise ROOT is null.  Make sure that
  134. # we're not pkgadd'ing over a pkg that was installed during that
  135. # first system installation (i.e., check UPDATE).
  136. ROOT=
  137. [ "$SETNAME" = "from_loadhba" -a "$UPDATE" != "yes" ] && ROOT="/mnt"
  138. LC_MESSAGES=$ROOT/usr/lib/locale/$LOCALE
  139.  
  140. if [ ! -f ${LC_MESSAGES}/LC_MESSAGES/${PKGMSG} ]
  141. then
  142.     if [ -f ${REQDIR}/inst/locale/${LOCALE}/$PKGMSG} -a \
  143.         -d ${ROOT}/usr/lib/locale/${LOCALE}/LC_MESSAGES ]
  144.     then
  145.         cp ${REQDIR}/inst/locale/${LOCALE}/${PKGMSG} \
  146.             ${LC_MESSAGES}/LC_MESSAGES
  147.     fi
  148. fi
  149. 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`
  150.  
  151.  
  152. FAILURE=1    # fatal error
  153.  
  154. CONFDIR=/etc/conf
  155. CONFBIN=${CONFDIR}/bin
  156. ERR=/tmp/err.out
  157.  
  158. cd /tmp/${PKGINST}
  159. [ -f /tmp/${PKGINST}/Driver.o ] || do_extract
  160. do_install ${PKGINST}
  161.  
  162. if test -f /bin/grep
  163. then
  164.     grep $PKGINST /etc/loadmods >/dev/null
  165.     [ $? -ne 0 ] &&
  166.         cat /tmp/$PKGINST/loadmods >>/etc/loadmods
  167. else
  168.     cat /tmp/$PKGINST/loadmods >>/etc/loadmods
  169. fi
  170.  
  171. # Register changes made to system into the contents file
  172. register
  173.  
  174. # Cleanup temporary files and directories
  175. rm -fr /tmp/${PKGINST} /tmp/hbacpio.z >/dev/null 2>&1
  176. removef ${PKGINST} /tmp /tmp/${PKGINST} /tmp/${PKGINST}/Drvmap \
  177.     /tmp/${PKGINST}/modcpio.z /tmp/hbacpio.z /tmp/${PKGINST}/Master \
  178.     /tmp/${PKGINST}/System >/dev/null 2>&1
  179. removef -f ${PKGINST} >/dev/null 2>&1
  180.  
  181. # If this package is being added as an add-on package (not being installed 
  182. # from the initial system installation via loadhba), then for non-ISA cards
  183. # which have boardids run 'dcu -s'.
  184. if [ "$ROOT" != "/mnt" ]
  185. then
  186.     cat /etc/conf/drvmap.d/${PKGINST} | awk -F'|' '
  187.         BEGIN {
  188.             BOARDID = 1
  189.         }
  190.     
  191.         {
  192.             if (NF > 1) {
  193.                 if ($2 !~ /Y/)
  194.                     if ($2 !~ /N/)
  195.                         if($3 != "") {
  196.                             BOARDID = 0
  197.                             exit
  198.                         }
  199.             }
  200.         }
  201.     
  202.         END {
  203.             exit BOARDID 
  204.         }'
  205.     [ $? -eq 0 ] && /sbin/dcu -s
  206. fi
  207. /etc/conf/bin/idbuild
  208. exit 0
  209.