Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/config/install.sh
ViewVC logotype

Diff of /sml/trunk/config/install.sh

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 470, Wed Nov 10 22:42:52 1999 UTC revision 569, Tue Mar 7 04:01:07 2000 UTC
# Line 2  Line 2 
2  #  #
3  # Copyright (c) 1994 AT&T Bell Laboratories.  # Copyright (c) 1994 AT&T Bell Laboratories.
4  #  #
5  # installation script for SML/NJ and related tools; this is a temporary  # Installation script for SML/NJ and related tools; this is a temporary
6  # placeholder until the configuration tool is finished.  # placeholder until the configuration tool is finished.
7  #  #
8    # Significant changes to accommodate (and take advantage of) the new CM
9  #set -x  # by M.Blume (2/2000).
10    #
11    
12  #  #
13  # get the target list  # get the target list
14  #  #
15  if [ ! -r config/targets ]; then  if [ ! -r config/targets ]; then
16    echo "!!! File config/targets is missing."    echo "!!! File config/targets is missing."
17    exit 1;      exit 1
18  fi  fi
19  . config/targets  . config/targets
20    
21  #  #
22  # some OSs have make in strange places  # create the preloads.standard file
23  #  #
24  MAKE=make  if [ ! -r config/preloads ]; then
25        echo "!!! File config/preloads is missing."
26        exit 1
27    fi
28    cp config/preloads preloads.standard
29    
30  #  #
31  # check for ksh  # Some OSs have make in strange places, but most of the time it is
32  #  # simply on the PATH:
 # ksh causes some people problems so we will always use /bin/sh  
33  #  #
34  #echo "checking for ksh"  MAKE=make
35  #if [ -x /bin/ksh ]; then  
 #  SHELL=/bin/ksh  
 #elif [ -x /usr/local/bin/ksh ]; then  
 #  SHELL=/usr/local/bin/ksh  
 #else  
36    SHELL=/bin/sh    SHELL=/bin/sh
 #fi  
37  echo Using shell $SHELL.  echo Using shell $SHELL.
38    
39  #  #
# Line 56  Line 55 
55  LIBDIR=$INSTALLDIR/lib          # where libraries live  LIBDIR=$INSTALLDIR/lib          # where libraries live
56  LIBLIST=$ROOT/liblist           # list of commands to stabilize libraries  LIBLIST=$ROOT/liblist           # list of commands to stabilize libraries
57  LIBMOVESCRIPT=$ROOT/libmove     # a temporary script  LIBMOVESCRIPT=$ROOT/libmove     # a temporary script
58  LOCALPATHCONFIG=$ROOT/pathconfig # a temporary pathconfig file  LOCALPATHCONFIG=$INSTALLDIR/pathconfig # a temporary pathconfig file
59    
60  #  #
61  # the paths to ml-yacc, ml-burg, and ml-lex; needed to configure CM  # the path to the dir where ml-yacc, ml-burg, ml-lex, and ml-build live
62  #  #
63  YACCPATH=$BINDIR/ml-yacc  TOOLDIR=$BINDIR
64  LEXPATH=$BINDIR/ml-lex  
65  BURGPATH=$BINDIR/ml-burg  #
66    # files to be deleted after we are done...
67    #
68    tmpfiles=""
69    tmpfiles="$tmpfiles $ROOT/preloads.standard"
70    tmpfiles="$tmpfiles $LIBLIST"
71    tmpfiles="$tmpfiles $LOCALPATHCONFIG"
72    tmpfiles="$tmpfiles $LIBMOVESCRIPT"
73    #
74    # make sure we always clean up after ourselves...
75    #
76    trap 'rm -f $tmpfiles' 0 1 2 3 15
77    
78    
79  #  #
80  # set the CM configuration variables (these are environment variables  # set the CM configuration variables (these are environment variables
81  # that will be queried by the bootstrap code)  # that will be queried by the bootstrap code)
82  # Especially important is CM_PATHCONFIG_DEFAULT.  # Especially important is CM_PATHCONFIG_DEFAULT.
83  #  #
 CM_YACC_DEFAULT=$YACCPATH  
 CM_LEX_DEFAULT=$LEXPATH  
 CM_BURG_DEFAULT=$BURGPATH  
84  CM_PATHCONFIG_DEFAULT=$LIBDIR/pathconfig  CM_PATHCONFIG_DEFAULT=$LIBDIR/pathconfig
85  export CM_YACC_DEFAULT CM_LEX_DEFAULT CM_BURG_DEFAULT CM_PATHCONFIG_DEFAULT  export CM_PATHCONFIG_DEFAULT
86    
87  #  #
88  # the release version that we are installing  # the release version that we are installing
# Line 107  Line 115 
115  #     different suffixes to determine what kind of de-compression is to  #     different suffixes to determine what kind of de-compression is to
116  #     be used)  #     be used)
117  unpack() {  unpack() {
118      if [ ! -d $2/$3 ]; then      if [ -d $2/$3 ]; then
119          echo Unpacking $1 source files.          echo "The $1 source tree already exists."
120        else
121            echo "Unpacking $1 source archive."
122          cd $2          cd $2
123          if [ -r $4.tar.Z ] ; then          if [ -r $4.tar.Z ] ; then
124              zcat $4.tar.Z | tar -xf -              zcat $4.tar.Z | tar -xf -
# Line 123  Line 133 
133          elif [ -r $4.tz ] ; then          elif [ -r $4.tz ] ; then
134              zcat $4.tz | tar -xf -              zcat $4.tz | tar -xf -
135          else          else
136              echo "!!! The $1 source files are missing."              echo "!!! The $1 source archive is missing."
137              exit 1              exit 1
138          fi          fi
139          if [ ! -d $2/$3 ]; then          if [ ! -d $2/$3 ]; then
140              echo "!!! Unable to unpack $1 source files."              echo "!!! Unable to unpack $1 source archive."
141              exit 1              exit 1
142          fi          fi
143      fi      fi
# Line 147  Line 157 
157  movelibs() {  movelibs() {
158      for lib in `/bin/ls $1/CM/$ARCH-unix` ; do      for lib in `/bin/ls $1/CM/$ARCH-unix` ; do
159          case $lib in          case $lib in
160          *.cm)          *.cm | *.cmi)
161              if [ $lib != $2 ] ; then              if [ $lib != $2 ] ; then
162                  echo "! Warning:" $lib specified relative to $2                  echo "! Warning:" $lib specified relative to $2
163              fi              fi
# Line 236  Line 246 
246      makedir $dir      makedir $dir
247  done  done
248    
   
249  #  #
250  # install the script that tests the architecture, and make sure that it works  # install the script that tests the architecture, and make sure that it works
251  #  #
252  if [ -x $BINDIR/.arch-n-opsys ]; then  if [ -x $BINDIR/.arch-n-opsys ]; then
253    echo Script $BINDIR/.arch-n-opsys already exists.    echo Script $BINDIR/.arch-n-opsys already exists.
254  else  else
255    cat $CONFIGDIR/_arch-n-opsys | sed -e "s,@SHELL@,$SHELL,g" > $BINDIR/.arch-n-opsys      cat $CONFIGDIR/_arch-n-opsys \
256        | sed -e "s,@SHELL@,$SHELL,g" > $BINDIR/.arch-n-opsys
257    chmod 555 $BINDIR/.arch-n-opsys    chmod 555 $BINDIR/.arch-n-opsys
258    if [ ! -x $BINDIR/.arch-n-opsys ]; then    if [ ! -x $BINDIR/.arch-n-opsys ]; then
259      echo "!!! Installation of $BINDIR/.arch-n-opsys failed for some reason."          echo "!!! Installation of $BINDIR/.arch-n-opsys failed."
260      exit 1      exit 1
261    fi    fi
262  fi  fi
263    
264  ARCH_N_OPSYS=`$BINDIR/.arch-n-opsys`  ARCH_N_OPSYS=`$BINDIR/.arch-n-opsys`
265  if [ "$?" != "0" ]; then  if [ "$?" != "0" ]; then
266    echo "!!! Script $BINDIR/.arch-n-opsys fails on this machine."    echo "!!! Script $BINDIR/.arch-n-opsys fails on this machine."
# Line 260  Line 271 
271  fi  fi
272  eval $ARCH_N_OPSYS  eval $ARCH_N_OPSYS
273    
274  if [ -x $BINDIR/.run-sml ]; then  #
275    echo Script $BINDIR/.run-sml already exists.  # Function to install a "driver" script...
276  else  #   This takes care of patching the source of the script with the SHELL,
277    cat $CONFIGDIR/_run-sml | \  #   BINDIR, and VERSION variables to use.
278      sed -e "s,@SHELL@,$SHELL,g" -e "s,@BINDIR@,$BINDIR," -e "s,@VERSION@,$VERSION," \  #
279      > $BINDIR/.run-sml  installdriver() {
280    chmod 555 $BINDIR/.run-sml      dsrc=$1
281    if [ ! -x $BINDIR/.run-sml ]; then      ddst=$2
282      echo "!!! Installation of $BINDIR/.run-sml failed for some reason."  # We install the driver unconditionally. (It would be better to test
283    # for an outdated driver script, but not all "test" commands understand
284    # the -nt comparison operator....)
285    #   if [ -x $BINDIR/$ddst ]; then
286    #       echo Script $BINDIR/$ddst already exists.
287    #   else
288            rm -f $BINDIR/$ddst
289            cat $CONFIGDIR/$dsrc | \
290            sed -e "s,@SHELL@,$SHELL,g" \
291                -e "s,@BINDIR@,$BINDIR," \
292                -e "s,@VERSION@,$VERSION," \
293                > $BINDIR/$ddst
294            chmod 555 $BINDIR/$ddst
295            if [ ! -x $BINDIR/$ddst ]; then
296                echo "!!! Installation of $BINDIR/${ddst} failed."
297      exit 1      exit 1
298    fi    fi
299  fi  #   fi
300    }
301    
302    installdriver _run-sml .run-sml
303    installdriver _link-sml .link-sml
304    installdriver _ml-build ml-build
305    
306  #  #
307  # set some architecture dependent run-time system flags  # set some architecture dependent run-time system flags
308  #  #
309  case $ARCH in  case $ARCH in
310    mips*) ALLOC=1M ;;      mips*)
311            ALLOC=1M
312            ;;
313    x86)    x86)
314      ALLOC=256k      ALLOC=256k
315    ;;    ;;
# Line 288  Line 320 
320      ALLOC=512k      ALLOC=512k
321    ;;    ;;
322  esac  esac
323    
324  case $OPSYS in  case $OPSYS in
325    solaris)    solaris)
326      MAKE=/usr/ccs/bin/make      MAKE=/usr/ccs/bin/make
# Line 305  Line 338 
338  #  #
339  # the name of the bin files directory  # the name of the bin files directory
340  #  #
341  BOOT_FILES=comp.boot.$ARCH-unix  BOOT_FILES=sml.boot.$ARCH-unix
342    
343  #  #
344  # build the run-time system  # build the run-time system
345  #  #
346  unpack "run-time" $SRCDIR runtime $ROOT/$VERSION-runtime  unpack "run-time" $SRCDIR runtime $ROOT/$VERSION-runtime
347  if [ ! -x $RUNDIR/run.$ARCH-$OPSYS ]; then  if [ -x $RUNDIR/run.$ARCH-$OPSYS ]; then
348        echo Run-time system already exists.
349    else
350    cd $SRCDIR/runtime/objs    cd $SRCDIR/runtime/objs
351    echo Compiling the run-time system.    echo Compiling the run-time system.
352    $MAKE -f mk.$ARCH-$OPSYS $EXTRA_DEFS    $MAKE -f mk.$ARCH-$OPSYS $EXTRA_DEFS
353    if [ -x run.$ARCH-$OPSYS ]; then    if [ -x run.$ARCH-$OPSYS ]; then
354      mv run.$ARCH-$OPSYS $RUNDIR      mv run.$ARCH-$OPSYS $RUNDIR
355      $MAKE MAKE=$MAKE clean          # $MAKE MAKE=$MAKE clean
356    else    else
357      echo "!!! Run-time system build failed for some reason."      echo "!!! Run-time system build failed for some reason."
358      exit 1      exit 1
# Line 332  Line 367 
367    echo Heap image $HEAPDIR/sml.$HEAP_SUFFIX already exists.    echo Heap image $HEAPDIR/sml.$HEAP_SUFFIX already exists.
368  else  else
369    unpack bin $ROOT $BOOT_FILES $ROOT/$VERSION-$BOOT_FILES    unpack bin $ROOT $BOOT_FILES $ROOT/$VERSION-$BOOT_FILES
370    cd $ROOT      cd $ROOT/$BOOT_FILES
371    if $RUNDIR/run.$ARCH-$OPSYS @SMLheap=sml \      if $BINDIR/.link-sml @SMLheap=$ROOT/sml @SMLboot=BOOTLIST @SMLalloc=$ALLOC
         @SMLboot=$ROOT/$BOOT_FILES @SMLrtpid=`cat $BOOT_FILES/RTPID` \  
         @SMLalloc=$ALLOC  
372    then    then
373            cd $ROOT
374      if [ -r sml.$HEAP_SUFFIX ]; then      if [ -r sml.$HEAP_SUFFIX ]; then
375          mv sml.$HEAP_SUFFIX $HEAPDIR          mv sml.$HEAP_SUFFIX $HEAPDIR
376          cd $BINDIR          cd $BINDIR
377          ln -s .run-sml sml          ln -s .run-sml sml
   
378          #          #
379          # Now move all stable libraries to #LIBDIR and generate          # Now move all stable libraries to #LIBDIR and generate
380          # the pathconfig file.          # the pathconfig file.
381          #          #
   
382          cd $ROOT/$BOOT_FILES          cd $ROOT/$BOOT_FILES
383          for lib in *.cm ; do          for lib in *.cm ; do
384              echo $lib $LIBDIR/$lib >>$CM_PATHCONFIG_DEFAULT              echo $lib $LIBDIR/$lib >>$CM_PATHCONFIG_DEFAULT
385              movelibs $ROOT/$BOOT_FILES/$lib $lib              movelibs $ROOT/$BOOT_FILES/$lib $lib
386          done          done
387          cd $ROOT          cd $ROOT
388          rm -rf $BOOT_FILES              # rm -rf $BOOT_FILES
389    
390      else      else
391          echo "!!! Boot code did not produce heap image (sml.$HEAP_SUFFIX)."          echo "!!! Boot code did not produce heap image (sml.$HEAP_SUFFIX)."
# Line 380  Line 412 
412  for i in $TARGETS ; do  for i in $TARGETS ; do
413      case $i in      case $i in
414        src-smlnj)        src-smlnj)
415          for src in compiler comp-lib cm MLRISC smlnj-lib ml-yacc system          for src in compiler cm MLRISC smlnj-lib ml-yacc system
416          do          do
417              unpack $src $ROOT/src $src $ROOT/$VERSION-$src              unpack $src $ROOT/src $src $ROOT/$VERSION-$src
418          done          done
419          ;;          ;;
420        ml-yacc)        ml-yacc)
421          standalone ml-yacc ML-Yacc src          standalone ml-yacc ML-Yacc src
422            echo ml-yacc $TOOLDIR >>$CM_PATHCONFIG_DEFAULT
423          ;;          ;;
424        ml-lex)        ml-lex)
425          standalone ml-lex ML-Lex          standalone ml-lex ML-Lex
426            echo ml-lex $TOOLDIR >>$CM_PATHCONFIG_DEFAULT
427          ;;          ;;
428        ml-burg)        ml-burg)
429          standalone ml-burg ML-Burg          standalone ml-burg ML-Burg
430            echo ml-burg $TOOLDIR >>$CM_PATHCONFIG_DEFAULT
431          ;;          ;;
432        smlnj-lib)        smlnj-lib)
433          unpack "SML/NJ Library" $SRCDIR smlnj-lib $ROOT/$VERSION-smlnj-lib          unpack "SML/NJ Library" $SRCDIR smlnj-lib $ROOT/$VERSION-smlnj-lib
# Line 400  Line 435 
435          # Don't make the Util library -- it came pre-made and has been          # Don't make the Util library -- it came pre-made and has been
436          # installed when making the base system.  In other words, don't do...          # installed when making the base system.  In other words, don't do...
437              #reglib smlnj-lib.cm smlnj-lib/Util              #reglib smlnj-lib.cm smlnj-lib/Util
438            # ... and don't make the HTML library ...
439                #reglib html-lib.cm smlnj-lib/HTML
440            # ... and don't make the PP library ...
441                #reglib pp-lib.cm smlnj-lib/PP
442          # make the Unix library          # make the Unix library
443              reglib unix-lib.cm smlnj-lib/Unix              reglib unix-lib.cm smlnj-lib/Unix
444          # make the INet library          # make the INet library
445              reglib inet-lib.cm smlnj-lib/INet              reglib inet-lib.cm smlnj-lib/INet
         # make the HTML library  
             reglib html-lib.cm smlnj-lib/HTML  
         # make the PP library  
             reglib pp-lib.cm smlnj-lib/PP  
446          # make the RegExp library          # make the RegExp library
447              reglib regexp-lib.cm smlnj-lib/RegExp              reglib regexp-lib.cm smlnj-lib/RegExp
448          # make the Reactive library          # make the Reactive library
# Line 452  Line 487 
487      echo "!!! Something went wrong when compiling the libraries."      echo "!!! Something went wrong when compiling the libraries."
488      exit 1      exit 1
489  fi  fi
 rm -f $LIBLIST $LOCALPATHCONFIG  
490    
491  #  #
492  # Finally, move the libraries to their final locations...  # Finally, move the libraries to their final locations...
# Line 461  Line 495 
495  if [ -r $LIBMOVESCRIPT ] ; then  if [ -r $LIBMOVESCRIPT ] ; then
496      echo Moving libraries to $LIBDIR.      echo Moving libraries to $LIBDIR.
497      . $LIBMOVESCRIPT      . $LIBMOVESCRIPT
     rm -f $LIBMOVESCRIPT  
498  fi  fi
499    
500    exit 0

Legend:
Removed from v.470  
changed lines
  Added in v.569

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0