home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / nsu / install / sco_pt.install < prev   
Text File  |  1998-08-19  |  7KB  |  262 lines

  1. #ident    "@(#)pkg.acp:sco_pt.install    1.6"
  2. #ident    "$Header: $"
  3.  
  4.  
  5. # this script adds SCO pseudo terminals on to the regular USL
  6. # pseudo terminals. It is invoked with the number of SCO pseudo terminal
  7. # master-slave pairs desired. It is designed to be called normally
  8. # by the ACP installation package, however it is also included in the
  9. # NSU package, because an overlay of NSU with different number of
  10. # regualar pseudo terminals could overwrite into the SCO range. Additionally,
  11. # entering with zero SCONUM will remove SCO pseudo terms. (except for
  12. # device database entries, since need to know how many there were). (called by
  13. # 'preremove' or by NSU postinstall before ACP is in)
  14. #
  15. # The SCO pseudo terminals are actually supported by the regular USL
  16. # pseudo terminal driver. This is done by adding a range of minors 
  17. # after the regular ones that will have SCO semantics. (pairs of
  18. # endpoints instead of a 'clone' master. Also ptem and ldterm are autopushed)
  19. # This is administered by two
  20. # 'idtune-able' parameters  NUMREGPT and NUMSCOPT. The regular pseudo
  21. # terminals reside in the minor range  0->'NUMREGPT-1' and SCO terminals
  22. # in the range NUMREGPT->'NUMREGPT+NUMSCOPT-1'. 
  23. #
  24. # in this script we will make the nodes, put device database entries in,
  25. # add an RC script/autopush file, and make an attempt to set the 'sdevice.d'
  26. # files  correctly. It is assumed that the regular PT is installed at this 
  27. # point and has a valid number in NUMREGPTS
  28. #
  29. # for PTM we will be upgrading the system, nodes, rc and mtune (via idtune)
  30. # files. for PTS the system and nodes file and PTEM we will simply
  31. # upgrade the system file.
  32. #
  33. # this script does not do an idbuild. therefore it should be called before
  34. # the script that is calling it does its itbuild
  35. #
  36.  
  37. PKGMSG=${PKGINST}.pkg
  38. LOCALE=${LC_ALL:-${LC_MESSAGES:-${LANG:-"C"}}}
  39.  
  40. if [ ! -f /usr/lib/locale/${LOCALE}/LC_MESSAGES/${PKGMSG} ]
  41. then
  42.    if [ -f "${REQDIR}/inst/locale/${LOCALE}/${PKGMSG}" -a \
  43.     -d "/usr/lib/locale/${LOCALE}/LC_MESSAGES" ]
  44.    then
  45.     ln -s ${REQDIR}/inst/locale/${LOCALE}/${PKGMSG} \
  46.         /usr/lib/locale/${LOCALE}/LC_MESSAGES
  47.    fi
  48. fi
  49.  
  50. #
  51. # if we enter with no param or it is negative assume we are to configure
  52. # zero devices
  53. #
  54.  
  55. if [ -z "$1" -o "$1" -lt 0 ]
  56. then
  57.     PTNUM=0
  58. else
  59.     PTNUM=$1
  60. fi
  61.  
  62. CONFDIR=/etc/conf
  63. CONFBIN=${CONFDIR}/bin
  64.  
  65. # update a module.  $1 is the module name, $2 is files to update
  66.  
  67. do_update() {
  68.     [ "$UPDEBUG" = YES ] && set -x
  69.     ERR=/tmp/${1}.err
  70.  
  71.     IDCOMPS="Driver.o Driver_atup.o Driver_mp.o Master System Mfsys Sfsys Rc Node Space.c Mtune"
  72.  
  73.     if [ -f ${1}.Dr ]; then mv ${1}.Dr Driver.o; fi
  74.     if [ -f ${1}_atup.Dr ]; then mv ${1}_atup.Dr Driver_atup.o; fi
  75.     if [ -f ${1}_mp.Dr ]; then mv ${1}_mp.Dr Driver_mp.o; fi
  76.  
  77.     if
  78.         [ -f ${1}.Sp ]
  79.     then
  80.         mv ${1}.Sp Space.c
  81.     fi
  82.     if
  83.         [ -f ${1}.Ma ]
  84.     then
  85.         grep -v "^[\*#]ident" ${1}.Ma > Master
  86.         rm -rf ${1}.Ma
  87.     fi
  88.     if
  89.         [ -f ${1}.Sy ]
  90.     then
  91.         grep -v "^[\*#]ident" ${1}.Sy |
  92.             sed "${SEDCMD1}"  > System
  93.         rm -rf ${1}.Sy
  94.     fi
  95.     if
  96.         [ -f ${1}.Mf ]
  97.     then
  98.         grep -v "^[\*#]ident" ${1}.Mf > Mfsys
  99.         rm -rf ${1}.Mf
  100.     fi
  101.     if
  102.         [ -f ${1}.Sf ]
  103.     then
  104.         grep -v "^[\*#]ident" ${1}.Sf |
  105.             sed "${SEDCMD2}" > Sfsys
  106.         rm -rf ${1}.Sf
  107.     fi
  108.     if
  109.         [ -f ${1}.No ]
  110.     then
  111.         grep -v "^[\*#]ident" ${1}.No > Node
  112.         rm -rf ${1}.No
  113.     fi
  114.     if
  115.         [ -f ${1}.Rc ]
  116.     then
  117.         grep -v "^[\*#]ident" ${1}.Rc > Rc
  118.         rm -rf ${1}.Rc
  119.     fi
  120.     if
  121.         [ -f ${1}.Mt ]
  122.     then
  123.         grep -v "^[\*#]ident" ${1}.Mt > Mtune
  124.         rm -rf ${1}.Mtune
  125.     fi
  126.     
  127.     #
  128.     # do not use the -P option since we want the files to remain
  129.     # owned by NSU. (the 'rc.d' file will be removed by hand
  130.     # 
  131.  
  132.     ${CONFBIN}/idinstall -u  ${2} ${1} > ${ERR} 2>&1
  133.     RET=$?
  134.     rm -rf ${IDCOMPS}
  135.     if [ ${RET} != 0 ]
  136.     then
  137.         message -d `pfmt -s nostd -g ${PKGMSG}:51 "The installation cannot be completed due to an error in the driver installation during the installation of the %s module of the %s.  The file %s contains the errors." ${1} ${NAME} ${ERR} 2>&1`
  138.             exit ${FAILURE}
  139.     fi
  140.     rm -rf ${ERR}
  141. }
  142.  
  143. #
  144. # all work done in the acp temp directory, (may not have one if called from
  145. # NSU)
  146. #
  147.  
  148. TMPDIR=/tmp/pt
  149.  
  150. if [ ! -d $TMPDIR ]
  151. then
  152.     mkdir $TMPDIR
  153. fi
  154. cd $TMPDIR
  155.  
  156. #
  157. # If security is installed already set the default security info. 
  158. # IF it isn't installed the 'ES' package will set up some security defaults
  159. #
  160.  
  161. if pkginfo -i es >/dev/null 2>&1
  162. then
  163.     USR_PUTDEV="range=SYS_RANGE_MAX-SYS_RANGE_MIN state=pub_priv
  164.         mode=static ual_enable=y other=>y startup=y
  165.         startup_level=USER_LOGIN startup_owner=root>rw-
  166.         startup_group=other>rw- startup_other=>rw-"
  167. else
  168.     USR_PUTDEV=""
  169. fi
  170. export USR_PUTDEV
  171.  
  172. #
  173. # need to know number of regPT entries.
  174. #
  175. set - `${CONFBIN}/idtune -g NUMREGPT`
  176. NUMREGPT=$1
  177. TOTPT=`expr $NUMREGPT + $PTNUM`
  178.  
  179. #
  180. # Setup the # of devices in the systems file. Note: this is really not
  181. # required since the Mtune params take their place, but just in
  182. # case someone checks these files lets keep them up to date.
  183. #
  184.  
  185. for MODULE in ptm pts ptem
  186. do
  187.     cp /etc/conf/sdevice.d/${MODULE} ${MODULE}.Sy
  188.     line=`grep "^$MODULE[     ]" $MODULE.Sy 2>/dev/null`
  189.     set - $line
  190.     DEFAULT=$3
  191.     ed - $MODULE.Sy 1>/dev/null 2>&1 <<-!
  192.         /^$MODULE[     ]/
  193.         s/$DEFAULT/$TOTPT/
  194.         .
  195.         w
  196.     !
  197. done
  198.  
  199. #
  200. # remove ttyp and ptyp (SCO pseudo term) devices from nodes file if they
  201. # were there.
  202. #
  203.  
  204. grep -v "ttyp" /etc/conf/node.d/pts > pts.No
  205. grep -v "ptyp" /etc/conf/node.d/ptm > ptm.No
  206.  
  207. #
  208. # setup SCO devices. on both PTM and PTS sides.
  209. # start minors at end of Regular ones.
  210. #
  211. SCOMIN=$NUMREGPT
  212. TEMP=0
  213. until
  214.     [ "$TEMP" -eq "$PTNUM" ]
  215. do
  216.     echo "pts    ttyp${TEMP}    c    ${SCOMIN}" >> pts.No
  217.     echo "ptm    ptyp${TEMP}    c    ${SCOMIN}" >> ptm.No
  218.     /sbin/putdev -a ptyp${TEMP} cdevlist=/dev/ptyp${TEMP},/dev/ttyp${TEMP} \
  219.        desc="SCO pseudo terminal pair ${TEMP}" $USR_PUTDEV > /dev/null 2>&1
  220.     TEMP=`expr $TEMP + 1`
  221.     SCOMIN=`expr $SCOMIN + 1`
  222. done
  223.  
  224. #
  225. # if we are installing any sco entries (PTNUM>0) then add in the sco.ap
  226. # and rc.d script after putting in the correct node range in sco.ap.
  227. #
  228.  
  229. if [ "${PTNUM}" -gt 0 ]
  230. then
  231.     set `grep pts /etc/conf/mdevice.d/pts | grep -v ident`
  232.     > /etc/ap/sco.ap
  233.     echo "   $6    ${NUMREGPT}        `expr ${NUMREGPT} + ${PTNUM} - 1`        ptem ldterm" >> /etc/ap/sco.ap    
  234.     installf ${PKGINST} /etc/ap/sco.ap f 0444 root sys 2 NULL NULL >/dev/null 2>&1 
  235.     > ptm.Rc
  236.     echo "if [ ! -f /tmp/.scopty ]" >> ptm.Rc
  237.     echo "then" >> ptm.Rc
  238.     echo "\t>/tmp/.scopty" >> ptm.Rc
  239.     echo "\t/sbin/autopush -f /etc/ap/sco.ap" >> ptm.Rc
  240.     echo "fi" >> ptm.Rc
  241. else
  242.     ${CONFBIN}/idinstall -P ${PKGINST} -d  -r ptm  >/dev/null 2>&1
  243. fi
  244.  
  245. #
  246. # set the SCO tunable
  247. #
  248.  
  249. ${CONFBIN}/idtune -f NUMSCOPT ${PTNUM}
  250.  
  251. #
  252. # We need to update the system file, nodes file and add an rc to PTM, 
  253. # update the system and nodes file PTS. and just the system file for PTEM
  254. #
  255.  
  256. do_update ptm -snr
  257. do_update pts -sn
  258. do_update ptem -s
  259.  
  260.  
  261.