install.sh 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. #!/bin/sh
  2. #
  3. # Free Pascal installation script for Linux.
  4. # Copyright 1996-2002 Michael Van Canneyt and Peter Vreman
  5. #
  6. # Don't edit this file.
  7. # Everything can be set when the script is run.
  8. #
  9. # Release Version
  10. VERSION=1.9.0
  11. # some useful functions
  12. # ask displays 1st parameter, and ask new value for variable, whose name is
  13. # in the second parameter.
  14. ask ()
  15. {
  16. askvar=$2
  17. eval old=\$$askvar
  18. eval echo -n \""$1 [$old] : "\"
  19. read $askvar
  20. eval test -z \"\$$askvar\" && eval $askvar=\'$old\'
  21. }
  22. # yesno gives 1 on no, 0 on yes $1 gives text to display.
  23. yesno ()
  24. {
  25. while true; do
  26. echo -n "$1 (Y/n) ? "
  27. read ans
  28. case X$ans in
  29. X|Xy|XY) return 0;;
  30. Xn|XN) return 1;;
  31. esac
  32. done
  33. }
  34. # Untar files ($3,optional) from file ($1) to the given directory ($2)
  35. unztar ()
  36. {
  37. tar -xzf $HERE/$1 --directory $2 $3
  38. }
  39. # Make all the necessary directories to get $1
  40. makedirhierarch ()
  41. {
  42. OLDDIR=`pwd`
  43. case $1 in
  44. /*) cd /;;
  45. esac
  46. OLDIFS=$IFS;IFS=/;eval set $1; IFS=$OLDIFS
  47. for i
  48. do
  49. test -d $i || mkdir $i || break
  50. cd $i ||break
  51. done
  52. cd $OLDDIR
  53. }
  54. # check to see if something is in the path
  55. checkpath ()
  56. {
  57. ARG=$1
  58. OLDIFS=$IFS; IFS=":";eval set $PATH;IFS=$OLDIFS
  59. for i
  60. do
  61. if [ $i = $ARG ]; then
  62. return 0
  63. fi
  64. done
  65. return 1
  66. }
  67. # --------------------------------------------------------------------------
  68. # welcome message.
  69. #
  70. clear
  71. echo "This shell script will attempt to install the Free Pascal Compiler"
  72. echo "version $VERSION with the items you select"
  73. echo
  74. # Here we start the thing.
  75. HERE=`pwd`
  76. # Install in /usr/local or /usr ?
  77. if checkpath /usr/local/bin; then
  78. PREFIX=/usr/local
  79. else
  80. PREFIX=/usr
  81. fi
  82. ask "Install prefix (/usr or /usr/local) " PREFIX
  83. makedirhierarch $PREFIX
  84. # Set some defaults.
  85. LIBDIR=$PREFIX/lib/fpc/$VERSION
  86. SRCDIR=$PREFIX/src/fpc-$VERSION
  87. EXECDIR=$PREFIX/bin
  88. OSNAME=`uname -s | tr A-Z a-z`
  89. BSDHIER=0
  90. case $OSNAME in
  91. *bsd)
  92. BSDHIER=1;;
  93. esac
  94. if [ "${BSDHIER}" = "1" ]; then
  95. DOCDIR=$PREFIX/share/doc/fpc-$VERSION
  96. else
  97. DOCDIR=$PREFIX/doc/fpc-$VERSION
  98. fi
  99. echo $DOCDIR
  100. DEMODIR=$DOCDIR/examples
  101. # Install compiler/RTL. Mandatory.
  102. echo Unpacking ...
  103. tar xf binary.tar
  104. echo Installing compiler and RTL ...
  105. unztar base${OSNAME}.tar.gz $PREFIX
  106. rm -f $EXECDIR/ppc386
  107. ln -sf $LIBDIR/ppc386 $EXECDIR/ppc386
  108. echo Installing utilities...
  109. unztar util${OSNAME}.tar.gz $PREFIX
  110. if yesno "Install FCL"; then
  111. unztar unitsfcl${OSNAME}.tar.gz $PREFIX
  112. fi
  113. if yesno "Install packages"; then
  114. for f in units*.tar.gz
  115. do
  116. if [ $f != unitsfcl${OSNAME}.tar.gz ]; then
  117. basename $f .tar.gz |\
  118. sed -e s/units// -e s/${OSNAME}// |\
  119. xargs echo Installing
  120. unztar $f $PREFIX
  121. fi
  122. done
  123. fi
  124. rm -f *${OSNAME}.tar.gz
  125. echo Done.
  126. echo
  127. # Install the sources. Optional.
  128. if yesno "Install sources"; then
  129. echo Unpacking ...
  130. tar xf sources.tar
  131. echo Installing sources in $SRCDIR ...
  132. unztar basesrc.tar.gz $PREFIX
  133. if yesno "Install compiler source"; then
  134. unztar compilersrc.tar.gz $PREFIX
  135. fi
  136. if yesno "Install RTL source"; then
  137. unztar rtlsrc.tar.gz $PREFIX
  138. fi
  139. if yesno "Install FCL source"; then
  140. unztar fclsrc.tar.gz $PREFIX
  141. fi
  142. if yesno "Install IDE source"; then
  143. unztar idesrc.tar.gz $PREFIX
  144. fi
  145. if yesno "Install installer source"; then
  146. unztar installersrc.tar.gz $PREFIX
  147. fi
  148. if yesno "Install Packages source"; then
  149. for f in units*src.tar.gz
  150. do
  151. basename $f .tar.gz |\
  152. sed -e s/units// -e s/src// |\
  153. xargs echo Installing sources for
  154. unztar $f $PREFIX
  155. done
  156. fi
  157. rm -f *src.tar.gz
  158. echo Done.
  159. fi
  160. echo
  161. # Install the documentation. Optional.
  162. if yesno "Install documentation"; then
  163. echo Installing documentation in $DOCDIR ...
  164. unztar docs.tar.gz $PREFIX
  165. echo Done.
  166. fi
  167. echo
  168. # Install the demos. Optional.
  169. if yesno "Install demos"; then
  170. ask "Install demos in" DEMODIR
  171. echo Installing demos in $DEMODIR ...
  172. makedirhierarch $DEMODIR
  173. unztar demo.tar.gz $DEMODIR
  174. echo Done.
  175. fi
  176. echo
  177. # Install /etc/fpc.cfg, this is done using the samplecfg script
  178. $LIBDIR/samplecfg $LIBDIR
  179. # The End
  180. echo
  181. echo End of installation.
  182. echo
  183. echo Refer to the documentation for more information.
  184. echo