new2dir 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389
  1. #!/bin/sh
  2. #(c) Copyright Barry Kauler 2007
  3. #Now LGPL 2007
  4. #run like this: # new2dir make install
  5. #creates a directory one or two levels higher with the name of the package
  6. #but slightly modified. For example source package has dir 'abiword-0.5.6'
  7. #inside this you do the usual 'configure', 'make', then 'new2dir make install'
  8. #and 'abiword-0.5.6-i486' directory gets created, with all installed files
  9. #in it.
  10. #120220 jemimah: fix to work with cmake (uncertain if will break anything else). ref: http://murga-linux.com/puppy/viewtopic.php?t=71767&start=420
  11. #120602 updated installwatch to 0.7, got double hits from /tmp/pkginstall.list.
  12. #130121 grab a .pot if it exists.
  13. #131121 add support for different arches
  14. if [ ! $1 ];then
  15. echo "This script is used in the last step when installing a source"
  16. echo "or binary package. For example:"
  17. echo "# new2dir make install"
  18. echo "Exiting script."
  19. exit
  20. fi
  21. TIMEOUT='-t 1'
  22. ARCH=`uname -m`
  23. if [ ! "$CPUTYPE" ];then
  24. if [ -f config.log ];then
  25. BuildCPU=`grep -m1 '^build_cpu='.*'' config.log |cut -f 2 -d "'"`
  26. HostCPU=`grep -m1 '^host_cpu='.*'' config.log |cut -f 2 -d "'"`
  27. if [ "$HostCPU" != "$BuildCPU" ];then
  28. echo "WARNING build_cpu='$BuildCPU' NOT host_cpu='$HostCPU'"
  29. fi
  30. CPUTYPE="$BuildCPU"
  31. fi
  32. if [ ! "$CPUTYPE" ];then
  33. if [ ! "$TIMEOUT" ];then
  34. CPUTYPE="i486"
  35. else
  36. CPUTYPE="$ARCH"
  37. fi
  38. else
  39. echo "Found '$CPUTYPE'"
  40. fi
  41. fi
  42. CPU="$CPUTYPE"
  43. CURRDIR="`pwd`"
  44. UPONE="`dirname "$CURRDIR"`"
  45. PKGDIR="../`basename "$CURRDIR"`"
  46. xPKGDIR="`basename "$CURRDIR"`"
  47. if [ "`echo "$PKGDIR" | grep '[0-9]'`" = "" ];then
  48. PKGDIR="../../`basename "$UPONE"`"
  49. xPKGDIR="`basename "$UPONE"`"
  50. fi
  51. if [ "`echo "$PKGDIR" | grep '[0-9]'`" = "" ];then
  52. echo "$PKGDIR does not seem to be the package directory with version"
  53. echo "number. Unfortunately, some source package tarballs expand to a"
  54. echo "directory that does not have version number in it's name. SeaMonkey"
  55. echo "is an example of this, it expands to a directory named just 'mozilla'."
  56. echo "This script will create a package with the same name as the directory"
  57. echo "and it absolutely must have the version number in it which must commence"
  58. echo "with a numeric digit. So, you must now close this rxvt terminal window"
  59. echo "then rename the directory. For example, for SeaMonkey version 1.0.7"
  60. echo "rename the directory from 'mozilla' to 'seamonkey-1.0.7'"
  61. echo "A dash '-' must be used to separate the package name from version."
  62. echo "A directory name like 'seamonkey-alpha1' is NOT allowed as the version"
  63. echo "number must start with a numeric digit, example 'seamonkey-1.0.7alpha1'."
  64. echo "Exiting script."
  65. exit
  66. fi
  67. fixfilelistfunc() {
  68. #$1 is file to remove, as doesn't exist.
  69. echo " ...${1} has been deleted."
  70. grep -v "$1" /tmp/${EXE_PKGNAME}.files > /tmp/${EXE_PKGNAME}.files.tmp
  71. mv -f /tmp/${EXE_PKGNAME}.files.tmp /tmp/${EXE_PKGNAME}.files
  72. }
  73. echo
  74. echo -en "\\033[1;31mStep 1" #red
  75. echo -e "\\033[0;39m"
  76. echo "It seems that the package directory is '$PKGDIR'"
  77. echo "If this is correct, just press ENTER key."
  78. echo "Otherwise, type the correct directory with relative address."
  79. echo " NOTE:"
  80. echo " This script will create a package with the same name as the directory"
  81. echo " and it absolutely must have the version number in it which must commence"
  82. echo " with a numeric digit, and name and version number must be separated by"
  83. echo " a dash '-', for example, 'seamonkey-1.0.7'."
  84. echo " A directory name like 'seamonkey-alpha1' is NOT allowed as the version"
  85. echo " number must start with a numeric digit, example 'seamonkey-1.0.7alpha1'."
  86. echo " If $PKGDIR is incorrect you must now exit with CTRL-C and close this"
  87. echo " rxvt terminal window then rename the directory."
  88. echo -n "Type response now: "
  89. read REPLY1
  90. [ ! "$REPLY1" = "" ] && PKGDIR="$REPLY1"
  91. if [ ! -d "$PKGDIR" ];then
  92. echo
  93. echo "$PKGDIR does not exist, exiting script."
  94. exit
  95. fi
  96. echo "Okay, using $PKGDIR"
  97. echo
  98. echo -en "\\033[1;31mStep 2" #red
  99. echo -e "\\033[0;39m"
  100. echo "This Puppy is designed to run on a $ARCH. Normally this means"
  101. echo "that you have to specify 'build=$CPUTYPE-linux-gnu' (sometimes host=)"
  102. echo "Some packages do not have that configure option and compile for a"
  103. echo "specific CPU regardless what is in your PC."
  104. echo "If you have compiled for a $CPUTYPE, just press ENTER key."
  105. echo "Otherwise, enter the CPU type, examples: i386 i486 i686 amd64 x86_64 armv6"
  106. echo "(the i is required)."
  107. echo "If this is a script only with NO binarys type \"noarch\"."
  108. echo -n "Type response here: "
  109. read CPUTYPE
  110. [ "$CPUTYPE" = "" ] && CPUTYPE="$CPU"
  111. if [ "`echo -n "$CPUTYPE" | grep '^[a-zA-Z]'`" = "" ];then
  112. echo "$CPUTYPE is not valid. Exiting."
  113. exit
  114. fi
  115. echo "Okay, using $CPUTYPE"
  116. #would like to create different targets for exe, doc, dev, nls components...
  117. EXE_TARGETDIR="${PKGDIR}-${CPUTYPE}" #relative path.
  118. EXE_PKGNAME="`basename $EXE_TARGETDIR`"
  119. RELPATH="`dirname $EXE_TARGETDIR`"
  120. #difficult task, separate package name from version part...
  121. #not perfect, some start with non-numeric version info...
  122. xNAMEONLY="`echo -n "$xPKGDIR" | sed -e 's/\-[0-9].*$//g'`"
  123. #...if that fails, do it the old way...
  124. [ "$xNAMEONLY" = "$xPKGDIR" ] && xNAMEONLY="`echo "$xPKGDIR" | cut -f 1 -d "-"`"
  125. NAMEONLY="${RELPATH}/${xNAMEONLY}"
  126. #abasename="`basename ${PKGDIR}`"
  127. apattern="s/${xNAMEONLY}\\-//g"
  128. VERONLY="`echo -n "$xPKGDIR" | sed -e "$apattern"`"
  129. DOC_TARGETDIR="${NAMEONLY}_DOC-${VERONLY}-${CPUTYPE}"
  130. DOC_PKGNAME="`basename $DOC_TARGETDIR`"
  131. DEV_TARGETDIR="${NAMEONLY}_DEV-${VERONLY}-${CPUTYPE}"
  132. DEV_PKGNAME="`basename $DEV_TARGETDIR`"
  133. NLS_TARGETDIR="${NAMEONLY}_NLS-${VERONLY}-${CPUTYPE}"
  134. NLS_PKGNAME="`basename $NLS_TARGETDIR`"
  135. rm -rf "$EXE_TARGETDIR" 2>/dev/null
  136. rm -rf "$DOC_TARGETDIR" 2>/dev/null
  137. rm -rf "$DEV_TARGETDIR" 2>/dev/null
  138. rm -rf "$NLS_TARGETDIR" 2>/dev/null
  139. echo
  140. echo -en "\\033[1;31mStep 3" #red
  141. echo -e "\\033[0;39m"
  142. echo "If you wish, you can split the final package up into separate"
  143. echo "packages for the 'executables', 'documentation', 'development' and"
  144. echo "'international' components."
  145. echo "If the package has shared libraries, it is recommended to at least"
  146. echo "create a seaparate 'development' package."
  147. echo "The idea here is to 'trim the fat' as much as possible so that you only"
  148. echo "have what is absolutely needed in the 'executables' PET package, but"
  149. echo "the extra components can be installed if needed."
  150. echo -en "\\033[1;31mWARNING: "
  151. echo -en "\\033[0;39m"
  152. echo "The automatic splitting performed by this script may not be"
  153. echo " perfect and you may have to modify the contents of the created"
  154. echo " separate directories before the final step of converting them"
  155. echo " to PET packages."
  156. echo
  157. echo "Just press ENTER key only to create one package only."
  158. echo "Or, type a number to choose which separate packages to create:"
  159. echo " 1 Just one package (directory) only"
  160. echo " 2 Create a separate 'development' package"
  161. echo " 3 Create separate 'development', 'documentation', 'international' pkgs"
  162. echo "Or, type a comma-separated list of the separate pkgs that you want to"
  163. echo " create, using keywords 'exe', 'dev', 'doc', 'nls'."
  164. echo " Example: exe,dev,doc (in this example, nls component is left in the"
  165. echo " main package, that is, the exe component)."
  166. echo -n "Type response (just press ENTER if in doubt): "
  167. read SPLITPETS
  168. [ "$SPLITPETS" = "" ] && SPLITPETS="exe"
  169. [ "$SPLITPETS" = "1" ] && SPLITPETS="exe"
  170. [ "$SPLITPETS" = "2" ] && SPLITPETS="exe,dev"
  171. [ "$SPLITPETS" = "3" ] && SPLITPETS="exe,dev,doc,nls"
  172. EXESPLIT="";DOCSPLIT="";DEVSPLIT="";NLSSPLIT=""
  173. [ ! "`echo "$SPLITPETS" | grep 'exe'`" = "" ] && EXESPLIT="yes"
  174. [ ! "`echo "$SPLITPETS" | grep 'doc'`" = "" ] && DOCSPLIT="yes"
  175. [ ! "`echo "$SPLITPETS" | grep 'dev'`" = "" ] && DEVSPLIT="yes"
  176. [ ! "`echo "$SPLITPETS" | grep 'nls'`" = "" ] && NLSSPLIT="yes"
  177. [ ! "`echo "$SPLITPETS" | grep 'exe'`" = "" ] && mkdir "$EXE_TARGETDIR"
  178. #[ ! "`echo "$SPLITPETS" | grep 'doc'`" = "" ] && mkdir "$DOC_TARGETDIR"
  179. #[ ! "`echo "$SPLITPETS" | grep 'dev'`" = "" ] && mkdir "$DEV_TARGETDIR"
  180. #[ ! "`echo "$SPLITPETS" | grep 'nls'`" = "" ] && mkdir "$NLS_TARGETDIR"
  181. echo
  182. echo -en "\\033[1;31mStep 4" #red
  183. echo -e "\\033[0;39m"
  184. echo "The following line is about to be executed:"
  185. echo "# installwatch -o /tmp/pkginstall.list ${@}"
  186. echo "...this logs all file activity to /tmp/pkginstall.list"
  187. echo "This script will then determine all newly created directories"
  188. echo "and files and create '$EXE_TARGETDIR' with the new files."
  189. echo "(and optionally ${DEV_TARGETDIR}, ${DOC_TARGETDIR}, ${NLS_TARGETDIR})"
  190. echo -n "Press ENTER key to continue: "
  191. read goforit
  192. installwatch -o /tmp/pkginstall.list ${@}
  193. sync
  194. #create list of installed files...
  195. cat /tmp/pkginstall.list | grep '#success$' | tr -s '\t' | tr '&' ' ' | tr '\t' '&' | egrep '^[345]&open&|^0&chmod&' | grep --extended-regexp -v '&/dev/tty&|&/dev/null&|&/root/\.packages/|&/tmp/|&/root/\.icewm/|&/proc/|&/sys/|DotPupTmpDir|/\.myownmenuerc' | grep -E -v '&/initrd|&/mnt/' | cut -f 3 -d '&' | sort -u > ${RELPATH}/${EXE_PKGNAME}.files #120220 120602
  196. #...list will only have created files, not created directories, so an empty
  197. # directory won't get recorded.
  198. #bad if we miss out installing an empty directory...
  199. cat /tmp/pkginstall.list | grep '#success$' | tr -s '\t' | tr '&' ' ' | tr '\t' '&' | grep '^0&mkdir&' | grep --extended-regexp -v '&/dev/tty&|&/dev/null&|&/root/\.packages/|&/tmp/|&/root/\.icewm/|&/proc/|&/sys/|DotPupTmpDir|/\.myownmenuerc' | grep -E -v '&/initrd|&/mnt/' | cut -f 3 -d '&' | sed -e 's/^\/\//\//g' > /tmp/${EXE_PKGNAME}.dirs
  200. sync
  201. #pick up created symlinks...
  202. cat /tmp/pkginstall.list | grep '#success$' | tr -s '\t' | tr '&' ' ' | tr '\t' '&' | grep '^0&symlink&' | grep --extended-regexp -v '&/dev/tty&|&/dev/null&|&/root/\.packages/|&/tmp/|&/root/\.icewm/|&/proc/|&/sys/|DotPupTmpDir|/\.myownmenuerc' | grep -E -v '&/initrd|&/mnt/' | cut -f 4 -d '&' >> ${RELPATH}/${EXE_PKGNAME}.files
  203. sync
  204. #problem if there is a post-install script that moves or renames a file...
  205. cat /tmp/pkginstall.list | grep '#success$' | tr -s '\t' | tr '&' ' ' | tr '\t' '&' | grep '^0&rename&' | grep --extended-regexp -v '&/dev/tty&|&/dev/null&|&/root/\.packages/|&/tmp/|&/root/\.icewm/|&/proc/|&/sys/|DotPupTmpDir|/\.myownmenuerc' | grep -E -v '&/initrd|&/mnt/' | cut -f 3,4 -d '&' | tr '\n' ' ' > /tmp/${EXE_PKGNAME}.moved.files
  206. #find out if any installed file got moved/renamed...
  207. if [ -s /tmp/${EXE_PKGNAME}.moved.files ];then
  208. for ONEMOVED in `cat /tmp/${EXE_PKGNAME}.moved.files`
  209. do
  210. ONEORIG="`echo -n "$ONEMOVED" | cut -f 1 -d '&'`"
  211. ONENEW="`echo -n "$ONEMOVED" | cut -f 2 -d '&'`"
  212. grep -v "$ONEORIG" ${RELPATH}/${EXE_PKGNAME}.files > /tmp/${EXE_PKGNAME}.files
  213. echo "$ONENEW" >> /tmp/${EXE_PKGNAME}.files
  214. sync
  215. mv -f /tmp/${EXE_PKGNAME}.files ${RELPATH}/${EXE_PKGNAME}.files
  216. done
  217. fi
  218. sync
  219. echo
  220. echo -en "\\033[1;31mStep 5" #red
  221. echo -e "\\033[0;39m"
  222. #fixfilelistfunc() uses this...
  223. cp -af ${RELPATH}/${EXE_PKGNAME}.files /tmp/${EXE_PKGNAME}.files
  224. #...a post-install script could delete files, which fixfilelistfunc fixes.
  225. cat ${RELPATH}/${EXE_PKGNAME}.files |
  226. while read ONEFILE
  227. do
  228. ONEBASE="`basename "$ONEFILE"`"
  229. ONEPATH="`dirname "$ONEFILE"`"
  230. echo "Processing ${ONEFILE}"
  231. #strip the file...
  232. if [ ! -h "$ONEFILE" ];then #make sure it isn't a symlink
  233. [ ! "`file "$ONEFILE" | grep 'ELF' | grep 'shared object'`" = "" ] && strip --strip-debug "$ONEFILE"
  234. [ ! "`file "$ONEFILE" | grep 'ELF' | grep 'executable'`" = "" ] && strip --strip-unneeded "$ONEFILE"
  235. fi
  236. sync
  237. if [ "$NLSSPLIT" = "yes" ];then
  238. #find out if this is an international language file...
  239. if [ ! "`echo -n "$ONEFILE" | grep --extended-regexp '/locale/|/nls/|/i18n/'`" = "" ];then
  240. mkdir -p "${NLS_TARGETDIR}/${ONEPATH}"
  241. cp -af "$ONEFILE" "${NLS_TARGETDIR}/${ONEPATH}/" 2>/dev/null
  242. [ $? -ne 0 ] && fixfilelistfunc "$ONEFILE"
  243. continue
  244. fi
  245. fi
  246. if [ "$DOCSPLIT" = "yes" ];then
  247. #find out if this is a documentation file...
  248. if [ ! "`echo -n "$ONEFILE" | grep --extended-regexp '/man/|/doc/|/docs/|/info/|/gtk-doc/|/faq/|/manual/|/examples/|/help/|/htdocs/'`" = "" ];then
  249. mkdir -p "${DOC_TARGETDIR}/${ONEPATH}"
  250. cp -af "$ONEFILE" "${DOC_TARGETDIR}/${ONEPATH}/" 2>/dev/null
  251. [ $? -ne 0 ] && fixfilelistfunc "$ONEFILE"
  252. continue
  253. fi
  254. fi
  255. if [ "$DEVSPLIT" = "yes" ];then
  256. #find out if this is development file...
  257. if [ ! "`echo -n "$ONEFILE" | grep --extended-regexp '/include/|/pkgconfig/|/aclocal|/cvs/|/svn/'`" = "" ];then
  258. mkdir -p "${DEV_TARGETDIR}/${ONEPATH}"
  259. cp -af "$ONEFILE" "${DEV_TARGETDIR}/${ONEPATH}/" 2>/dev/null
  260. [ $? -ne 0 ] && fixfilelistfunc "$ONEFILE"
  261. continue
  262. fi
  263. #find *.so symlink files...
  264. if [ -h "$ONEFILE" ];then #-h tests for symlink
  265. if [ ! "`echo -n "$ONEFILE" | grep '\.so$'`" = "" ];then
  266. mkdir -p "${DEV_TARGETDIR}/${ONEPATH}"
  267. cp -af "$ONEFILE" "${DEV_TARGETDIR}/${ONEPATH}/" 2>/dev/null
  268. [ $? -ne 0 ] && fixfilelistfunc "$ONEFILE"
  269. continue
  270. fi
  271. fi
  272. #find various config files...
  273. if [ ! "`echo -n "$ONEBASE" | grep --extended-regexp '\-config$|config.sh$|Conf.sh$'`" = "" ];then
  274. mkdir -p "${DEV_TARGETDIR}/${ONEPATH}"
  275. cp -af "$ONEFILE" "${DEV_TARGETDIR}/${ONEPATH}/" 2>/dev/null
  276. [ $? -ne 0 ] && fixfilelistfunc "$ONEFILE"
  277. continue
  278. fi
  279. #all .a and .la files... and any stray .m4 files...
  280. if [ ! "`echo -n "$ONEBASE" | grep --extended-regexp '\.a$|\.la$|\.m4$'`" = "" ];then
  281. mkdir -p "${DEV_TARGETDIR}/${ONEPATH}"
  282. cp -af "$ONEFILE" "${DEV_TARGETDIR}/${ONEPATH}/" 2>/dev/null
  283. [ $? -ne 0 ] && fixfilelistfunc "$ONEFILE"
  284. continue
  285. fi
  286. fi
  287. #anything left over goes into the main 'executable' package...
  288. if [ "$EXESPLIT" = "yes" ];then
  289. mkdir -p "${EXE_TARGETDIR}/${ONEPATH}"
  290. cp -af "$ONEFILE" "${EXE_TARGETDIR}/${ONEPATH}/" 2>/dev/null
  291. [ $? -ne 0 ] && fixfilelistfunc "$ONEFILE"
  292. #fix for empty directories...
  293. cat /tmp/${EXE_PKGNAME}.dirs |
  294. while read ANEWDIR
  295. do
  296. [ "`ls -1 $ANEWDIR`" = "" ] && mkdir -p ${EXE_TARGETDIR}${ANEWDIR}
  297. done
  298. fi
  299. done
  300. #130121 grab a .pot if it exists...
  301. sync
  302. pnPTN="/${xNAMEONLY}.pot"
  303. if [ "`grep "$pnPTN" /tmp/${EXE_PKGNAME}.files`" = "" ];then
  304. FNDPOT="$(find ${CURRDIR}/ -type f -name "${xNAMEONLY}.pot" | head -n 1)"
  305. if [ "$FNDPOT" ];then
  306. mkdir -p ${EXE_TARGETDIR}/usr/share/doc/nls/${xNAMEONLY}
  307. cp -f "$FNDPOT" ${EXE_TARGETDIR}/usr/share/doc/nls/${xNAMEONLY}/
  308. echo "/usr/share/doc/nls/${xNAMEONLY}/" >> /tmp/${EXE_PKGNAME}.files
  309. echo "/usr/share/doc/nls/${xNAMEONLY}/${xNAMEONLY}.pot" >> /tmp/${EXE_PKGNAME}.files
  310. fi
  311. fi
  312. sync
  313. cp -af /tmp/${EXE_PKGNAME}.files ${RELPATH}/${EXE_PKGNAME}.files
  314. echo
  315. echo -en "\\033[1;31mFinished" #red
  316. echo -e "\\033[0;39m"
  317. echo "$EXE_TARGETDIR is now fully populated."
  318. [ -d "$DEV_TARGETDIR" ] && echo "$DEV_TARGETDIR has also been populated."
  319. [ -d "$DOC_TARGETDIR" ] && echo "$DOC_TARGETDIR has also been populated."
  320. [ -d "$NLS_TARGETDIR" ] && echo "$NLS_TARGETDIR has also been populated."
  321. echo "${RELPATH}/${EXE_PKGNAME}.files has a list of the installed files."
  322. echo "You might want to go into it and trim the fat or whatever,"
  323. echo "but basically it is now ready to be converted to a PET"
  324. echo "package. Just do this:"
  325. echo "# cd ${RELPATH}"
  326. echo "# dir2pet $EXE_PKGNAME"
  327. echo
  328. echo "Press ENTER only to exit this script."
  329. echo "Or, if you want the convenience, the 'dir2pet' script can be launched"
  330. echo "right now -- press any character on the keyboard then ENTER."
  331. echo -n "Type response here: "
  332. read nextphase
  333. [ "$nextphase" = "" ] && exit
  334. cd ${RELPATH}
  335. if [ -d ${xNAMEONLY}-${VERONLY}-${CPUTYPE} ];then
  336. dir2pet ${xNAMEONLY}-${VERONLY}-${CPUTYPE}
  337. echo -n "${xNAMEONLY}-${VERONLY}-${CPUTYPE}.pet created. Press ENTER to continue: "
  338. read domore
  339. fi
  340. if [ -d ${xNAMEONLY}_DEV-${VERONLY}-${CPUTYPE} ];then
  341. dir2pet ${xNAMEONLY}_DEV-${VERONLY}-${CPUTYPE}
  342. echo -n "${xNAMEONLY}_DEV-${VERONLY}-${CPUTYPE}.pet created. Press ENTER to continue: "
  343. read domore
  344. fi
  345. if [ -d ${xNAMEONLY}_DOC-${VERONLY}-${CPUTYPE} ];then
  346. dir2pet ${xNAMEONLY}_DOC-${VERONLY}-${CPUTYPE}
  347. echo -n "${xNAMEONLY}_DOC-${VERONLY}-${CPUTYPE}.pet created. Press ENTER to continue: "
  348. read domore
  349. fi
  350. if [ -d ${xNAMEONLY}_NLS-${VERONLY}-${CPUTYPE} ];then
  351. dir2pet ${xNAMEONLY}_NLS-${VERONLY}-${CPUTYPE}
  352. echo -n "${xNAMEONLY}_NLS-${VERONLY}-${CPUTYPE}.pet created. Press ENTER to continue: "
  353. read domore
  354. fi
  355. echo "All done."
  356. ###END###