diff -r ebecbe5d4b6b -r 556bb6c9e36c STXInstaller.st --- a/STXInstaller.st Wed Apr 28 09:57:39 1999 +0200 +++ b/STXInstaller.st Sun May 02 13:40:15 1999 +0200 @@ -25,19 +25,27 @@ |dirs| dirs := OrderedCollection new. - dirs add:'/opt/smalltalk/' , self smalltalkRelease , '/bin'. - dirs add:'/usr/local/bin'. - dirs add:'/usr/bin'. - dirs add:(Filename homeDirectory constructString:'bin'). - dirs add:((Filename homeDirectory - construct:'stx') - constructString:'bin'). - dirs add:'/tmp/stxbin'. - ('/home' asFilename exists and:['/home' asFilename isDirectory]) ifTrue:[ - dirs add:'/home/stx/bin'. - ]. - ('/home2' asFilename exists and:['/home2' asFilename isDirectory]) ifTrue:[ - dirs add:'/home2/stx/bin'. + + OperatingSystem isMSWINDOWSlike ifTrue:[ + dirs add:'\Programme\eXept\SmalltalkX\' , self smalltalkRelease , '\bin'. + dirs add:'\Programme\SmalltalkX\' , self smalltalkRelease , '\bin'. + dirs add:'\SmalltalkX\' , self smalltalkRelease , '\bin'. + ] ifFalse:[ + dirs add:'/opt/smalltalk/' , self smalltalkRelease , '/bin'. + dirs add:'/usr/local/bin'. + dirs add:'/usr/bin'. + + dirs add:(Filename homeDirectory constructString:'bin'). + dirs add:((Filename homeDirectory + construct:'stx') + constructString:'bin'). + dirs add:'/tmp/stxbin'. + ('/home' asFilename exists and:['/home' asFilename isDirectory]) ifTrue:[ + dirs add:'/home/stx/bin'. + ]. + ('/home2' asFilename exists and:['/home2' asFilename isDirectory]) ifTrue:[ + dirs add:'/home2/stx/bin'. + ]. ]. "/ dirs := dirs select:[:path | @@ -47,8 +55,8 @@ "/ f exists and:[f isDirectory]]. ^ dirs "sort" - "Created: 18.7.1996 / 19:43:00 / cg" - "Modified: 18.7.1996 / 19:45:08 / cg" + "Created: / 18.7.1996 / 19:43:00 / cg" + "Modified: / 30.4.1999 / 11:56:03 / cg" ! defaultFullDirs @@ -73,41 +81,52 @@ |dirs| dirs := OrderedCollection new. - dirs add:'/usr/local/lib'. - dirs add:'/usr/lib'. - dirs add:'/lib'. - dirs add:(Filename homeDirectory - constructString:'lib'). + OperatingSystem isMSWINDOWSlike ifTrue:[ + dirs add:'\Programme\eXept\SmalltalkX\' , self smalltalkRelease , '\lib'. + dirs add:'\Programme\SmalltalkX\' , self smalltalkRelease , '\lib'. + dirs add:'\SmalltalkX\' , self smalltalkRelease , '\lib'. + ] ifFalse:[ + dirs add:'/usr/local/lib'. + dirs add:'/usr/lib'. + dirs add:'/lib'. + dirs add:(Filename homeDirectory + constructString:'lib'). - dirs add:((Filename homeDirectory - construct:'stx') - constructString:'lib'). - dirs add:'/tmp/stxlib'. - dirs add:'/home/stx/lib'. - dirs add:'/home2/stx/lib'. - + dirs add:((Filename homeDirectory + construct:'stx') + constructString:'lib'). + dirs add:'/tmp/stxlib'. + dirs add:'/home/stx/lib'. + dirs add:'/home2/stx/lib'. + ]. ^ dirs sort - "Created: 18.7.1996 / 19:43:21 / cg" - "Modified: 18.7.1996 / 19:46:04 / cg" + "Created: / 18.7.1996 / 19:43:21 / cg" + "Modified: / 30.4.1999 / 11:56:48 / cg" ! defaultLibDirs |dirs| dirs := OrderedCollection new. - dirs add:'/opt/smalltalk/' , self smalltalkRelease , '/lib'. - dirs add:'/usr/local/lib/smalltalk'. - dirs add:'/usr/lib/smalltalk'. - dirs add:((Filename homeDirectory - construct:'lib') - constructString:'smalltalk'). - dirs add:((Filename homeDirectory - construct:'stx') - constructString:'lib'). - dirs add:'/tmp/stxlib'. - dirs add:'/home/stx/lib'. - dirs add:'/home2/stx/lib'. + OperatingSystem isMSWINDOWSlike ifTrue:[ + dirs add:'\Programme\eXept\SmalltalkX\' , self smalltalkRelease , '\lib'. + dirs add:'\Programme\SmalltalkX\' , self smalltalkRelease , '\lib'. + dirs add:'\SmalltalkX\' , self smalltalkRelease , '\lib'. + ] ifFalse:[ + dirs add:'/opt/smalltalk/' , self smalltalkRelease , '/lib'. + dirs add:'/usr/local/lib/smalltalk'. + dirs add:'/usr/lib/smalltalk'. + dirs add:((Filename homeDirectory + construct:'lib') + constructString:'smalltalk'). + dirs add:((Filename homeDirectory + construct:'stx') + constructString:'lib'). + dirs add:'/tmp/stxlib'. + dirs add:'/home/stx/lib'. + dirs add:'/home2/stx/lib'. + ]. "/ dirs := dirs select:[:path | "/ |f| @@ -116,8 +135,8 @@ "/ f exists and:[f isDirectory]]. ^ dirs "sort" - "Created: 18.7.1996 / 19:43:21 / cg" - "Modified: 18.7.1996 / 19:46:04 / cg" + "Created: / 18.7.1996 / 19:43:21 / cg" + "Modified: / 30.4.1999 / 11:57:02 / cg" ! directoriesToMake @@ -173,6 +192,15 @@ ! specOfFilesToCopy + OperatingSystem isMSWINDOWSlike ifTrue:[ + ^ self specOfWindowsFilesToCopy + ]. + ^ self specOfUnixFilesToCopy + + "Modified: / 2.5.1999 / 13:17:59 / cg" +! + +specOfUnixFilesToCopy |fileSpec| fileSpec := #( @@ -265,7 +293,163 @@ ^ fileSpec - "Modified: 8.8.1997 / 18:39:06 / cg" + "Modified: / 30.4.1999 / 18:02:22 / cg" + "Created: / 2.5.1999 / 13:17:37 / cg" +! + +specOfWindowsFilesToCopy + |fileSpec| + + fileSpec := #( + "/ name destination subDir required +"/ ( 'binbc\smalltalk' #bin nil true ) + ( 'binbc\stx' #bin nil true ) + ( 'binbc\include' #lib nil true ) + ( 'binbc\lib*.dll' #bin nil true ) + ( 'COPYRIGHT' #lib nil true ) + ( 'binbc\*.rc' #lib nil true ) + ( 'binbc\patches' #lib nil true ) + ( 'binbc\bitmaps' #lib nil true ) + ( 'binbc\resources' #lib nil true ) + ( 'doc\online\german\LICENCE.STX.html' #lib 'doc\online\german' true ) + ( 'doc\online\english\LICENCE.STX.html' #lib 'doc\online\english' true ) + ). + + installDocFiles ifTrue:[ + fileSpec := fileSpec , #( + ( 'doc' #lib nil false ) + ). + ]. + + installSourceFiles ifTrue:[ + fileSpec := fileSpec , #( + ( 'binbc\source' #lib nil false ) + ). + ]. + + installSTCFiles ifTrue:[ + fileSpec := fileSpec , #( + ( 'binbc\stc' #bin nil false ) + ( 'include' #lib nil false ) + + ( 'binbc\*.lib' #libBin nil false ) + ). + ]. + + installGoodyFiles ifTrue:[ + fileSpec := fileSpec , #( + ( 'goodies\*.st' #lib 'goodies' false ) + ( 'goodies\*.chg' #lib 'goodies' false ) + ). + ]. + + + ^ fileSpec + + "Modified: / 30.4.1999 / 18:02:22 / cg" + "Created: / 2.5.1999 / 13:23:06 / cg" +! + +xxspecOfFilesToCopy + |fileSpec| + + OperatingSystem isMSWINDOWSlike ifTrue:[ + ^self specOfWindowsFilesToCopy + + ]. + + fileSpec := #( + "/ name destination subDir required mode + ( 'projects/smalltalk/smalltalk' #bin nil true '755' ) + ( 'projects/smalltalk/stx' #bin nil true '755' ) + ( 'projects/smalltalk/include' #lib nil true '644' ) + ( 'COPYRIGHT' #lib nil true '644' ) + ( 'projects/smalltalk/*.rc' #lib nil true '644' ) + ( 'projects/smalltalk/patches' #lib nil true '644' ) + ( 'projects/smalltalk/bitmaps' #lib nil true '644' ) + ( 'projects/smalltalk/resources' #lib nil true '644' ) + ( 'projects/smalltalk/lib' #lib nil true '644' ) + ( 'doc/online/german/LICENCE.STX.html' #lib 'doc/online/german' true '644' ) + ( 'doc/online/english/LICENCE.STX.html' #lib 'doc/online/english' true '644' ) + ). + + installDocFiles ifTrue:[ + fileSpec := fileSpec , #( + ( 'doc' #lib nil false '644' ) + ). + ]. + + installSourceFiles ifTrue:[ + fileSpec := fileSpec , #( + ( 'projects/smalltalk/source' #lib nil false '644' ) + ). + ]. + + installSTCFiles ifTrue:[ + fileSpec := fileSpec , #( + ( 'stc/stc' #bin nil false '755' ) + ( 'rules/stmkmp' #bin nil false '755' ) + ( 'rules/stmkmf' #bin nil false '755' ) + ( 'include' #lib nil false '644' ) + ( 'configurations' #lib nil false '644' ) + ( 'configurations/PACKS' #lib 'configurations' false '644' ) + ( 'configurations/my*' #lib 'configurations' false '644' ) + ( 'configurations/vendor*' #lib 'configurations' false '644' ) + ( 'rules' #lib nil false '644' ) + + ( 'support/VGL/vogl/src/libvogl.*' #lib 'lib' false '644' ) + ( 'support/VGL/vogl/src/*.h' #lib 'include' false '644' ) + ( 'support/DLD/dld-3.2.5/libdld.*' #lib 'lib' false '644' ) + + ( 'goodies/persistency/db-1.6/PORT/libdb.*' #lib 'lib' false '644' ) + + ( 'librun/librun.*' #libBin nil false '644' ) + ( 'libbasic/libbasic.*' #libBin nil false '644' ) + ( 'libbasic2/libbasic2.*' #libBin nil false '644' ) + ( 'libbasic3/libbasic3.*' #libBin nil false '644' ) + ( 'libhtml/libhtml.*' #libBin nil false '644' ) + ( 'libcomp/libcomp.*' #libBin nil false '644' ) + ( 'libcomp/ObjFL*.o' #libBin nil false '644' ) + ( 'libcomp/ObjFL*.obj' #libBin nil false '644' ) + ( 'libcomp/ObjFL*.so' #libBin nil false '644' ) + ( 'libview/libview.*' #libBin nil false '644' ) + ( 'libview/GLX*.o' #libBin nil false '644' ) + ( 'libview/GLX*.obj' #libBin nil false '644' ) + ( 'libview/GLX*.so' #libBin nil false '644' ) + ( 'libview/XW*.o' #libBin nil false '644' ) + ( 'libview/XW*.obj' #libBin nil false '644' ) + ( 'libview/XW*.so' #libBin nil false '644' ) + ( 'libview2/libview2.*' #libBin nil false '644' ) + ( 'libwidg/libwidg.*' #libBin nil false '644' ) + ( 'libwidg2/libwidg2.*' #libBin nil false '644' ) + ( 'libwidg3/libwidg3.*' #libBin nil false '644' ) + ( 'libui/libui.*' #libBin nil false '644' ) + +"/ ( 'libsnmp/libsnmp.*' #libBin nil false '644' ) +"/ ( 'contrib/libPVM/libPVM.*' #libBin nil false '644' ) + ( 'goodies/persistency/libdbase.*' #libBin nil false '644' ) +"/ ( 'libtable/libtable.*' #libBin nil false '644' ) + ( 'libtool/libtool.*' #libBin nil false '644' ) + ( 'libtool2/libtool2.*' #libBin nil false '644' ) +"/ ( 'libxt/libxt.*' #libBin nil false '644' ) +"/ ( 'librt/librt.*' #libBin nil false '644' ) + ). + ]. + + installGoodyFiles ifTrue:[ + fileSpec := fileSpec , #( + ( 'goodies/*.st' #lib 'goodies' false '644' ) + ( 'goodies/*.chg' #lib 'goodies' false '644' ) + ( 'goodies/rdoit/rdoit' #bin nil false '755' ) + ( 'goodies/bitmaps/rdoit' #lib 'goodies/bitmaps' false '755' ) + ). + ]. + + + ^ fileSpec + + "Modified: / 8.8.1997 / 18:39:06 / cg" + "Created: / 2.5.1999 / 13:17:27 / cg" ! ! !STXInstaller methodsFor:'installing'! @@ -472,6 +656,10 @@ executeCommandAndShowOutput:cmd |doneSemaphore line p| + OperatingSystem isMSWINDOWSlike ifTrue:[ + ^ self + ]. + doneSemaphore := Semaphore new. copyProcess := [ @@ -502,7 +690,7 @@ doneSemaphore wait. "Created: / 25.2.1998 / 17:46:06 / cg" - "Modified: / 25.2.1998 / 18:36:50 / cg" + "Modified: / 30.4.1999 / 18:00:43 / cg" ! outputInitialMessage @@ -555,13 +743,15 @@ askAndInstall "/ check, if we are in the projects/smalltalk directory - |answer| + |answer here| resources := ResourcePack for:self class. - (Filename currentDirectory pathName endsWith:'projects/smalltalk') ifFalse:[ - self warn:(resources string:'must be in the ''projects/smalltalk'' directory'). - ^ self + ((here := Filename currentDirectory pathName) endsWith:'projects/smalltalk') ifFalse:[ + (here endsWith:'stx\binbc') ifFalse:[ + self warn:(resources string:'must be in the ''projects/smalltalk'' directory'). + ^ self + ] ]. answer := self askForFullInstallation. @@ -581,7 +771,7 @@ ] ]. - "Modified: / 25.2.1998 / 16:54:51 / cg" + "Modified: / 30.4.1999 / 11:53:35 / cg" ! askForDestination @@ -696,14 +886,26 @@ srcMegabytes := 25. goodyMegabytes := 2. - LastLibDir isNil ifTrue:[ - LastLibDir := '/opt/smalltalk/' , self smalltalkRelease , '/lib' - ]. - LastLibBinDir isNil ifTrue:[ - LastLibBinDir := '/opt/smalltalk/' , self smalltalkRelease , '/lib' - ]. - LastBinDir isNil ifTrue:[ - LastBinDir := '/opt/smalltalk/' , self smalltalkRelease , '/bin' + OperatingSystem isMSWINDOWSlike ifTrue:[ + LastLibDir isNil ifTrue:[ + LastLibDir := '\Programme\SmalltalkX\' , self smalltalkRelease , '\lib' + ]. + LastLibBinDir isNil ifTrue:[ + LastLibBinDir := '\Programme\SmalltalkX\' , self smalltalkRelease , '\lib' + ]. + LastBinDir isNil ifTrue:[ + LastBinDir := '\Programme\SmalltalkX\' , self smalltalkRelease , '\lib' + ]. + ] ifFalse:[ + LastLibDir isNil ifTrue:[ + LastLibDir := '/opt/smalltalk/' , self smalltalkRelease , '/lib' + ]. + LastLibBinDir isNil ifTrue:[ + LastLibBinDir := '/opt/smalltalk/' , self smalltalkRelease , '/lib' + ]. + LastBinDir isNil ifTrue:[ + LastBinDir := '/opt/smalltalk/' , self smalltalkRelease , '/bin' + ]. ]. stxLibDirHolder := LastLibDir asValue. @@ -848,7 +1050,7 @@ " "Created: / 25.2.1998 / 17:11:26 / cg" - "Modified: / 25.2.1998 / 19:43:30 / cg" + "Modified: / 30.4.1999 / 11:58:33 / cg" ! askForFullInstallation @@ -1039,7 +1241,8 @@ dirToMonitor := stxLibDir ]. - (OperatingSystem canExecuteCommand:'df ' , dirToMonitor) ifTrue:[ + (OperatingSystem isMSWINDOWSlike not + and:[OperatingSystem canExecuteCommand:'df ' , dirToMonitor]) ifTrue:[ p := HorizontalPanelView in:v. p origin:0.0@1.0 corner:1.0@1.0. p topInset:-30. @@ -1172,15 +1375,19 @@ " "Created: / 17.7.1996 / 15:11:27 / cg" - "Modified: / 20.4.1998 / 15:36:40 / cg" + "Modified: / 30.4.1999 / 17:53:53 / cg" ! open self askAndInstall. " + LastLibDir := LastBinDir := LastLibBinDir := nil. + STXInstaller open " + + "Modified: / 30.4.1999 / 11:59:00 / cg" ! postInstall @@ -1196,8 +1403,10 @@ shInfo := ''. cshInfo := ''. - installWhat == #full ifTrue:[ - msg := msg , 'You will now find a development directory hierarchy + OperatingSystem isMSWINDOWSlike ifFalse:[ + + installWhat == #full ifTrue:[ + msg := msg , 'You will now find a development directory hierarchy in ''' , fullDir asText allBold , '''. To try it, ''cd'' to ''' , fullDir , '/projects/smalltalk'' @@ -1206,56 +1415,56 @@ To perform a partial installation of your customized smalltalk later, use the INSTALL script found in ''' , fullDir , ''''. - ] ifFalse:[ - havePath := true. - (((OperatingSystem getEnvironment:'PATH') - asCollectionOfSubstringsSeparatedBy:$:) - includes:stxBinDir) ifFalse:[ + ] ifFalse:[ + havePath := true. + (((OperatingSystem getEnvironment:'PATH') + asCollectionOfSubstringsSeparatedBy:$:) + includes:stxBinDir) ifFalse:[ - havePath := false. - shInfo := 'PATH=$PATH:' , stxBinDir , ' ; export PATH\'. - cshInfo := 'set path=($path ' , stxBinDir , ')\'. - msg := msg , (resources string:'%1 is not in your PATH.\You should change your ".login" and/or ".profile" files to include it.\\' - with:stxBinDir asText allBold) withCRs. - ]. - - (stxLibDir ~= '/usr/local/lib/smalltalk' - and:[stxLibDir ~= '/usr/lib/smalltalk' - and:[stxLibDir ~= ('/opt/smalltalk/' , self smalltalkRelease , '/lib')]]) ifTrue:[ - msg := msg , (resources string:'The library directory is not a standard ST/X library directory\("/opt/smalltalk/' , self smalltalkRelease , '/lib", "/usr/local/lib/smalltalk" or "/usr/lib/smalltalk"). -You may have to define the %1 environment variable\as %2 if ST/X complains about not finding its files.\' - with:'STX_LIBDIR' asText allBold - with:stxLibDir asText allBold) withCRs. - havePath ifFalse:[ - msg := msg , (resources string:'The above mentioned files are also a good place to do this.\') withCRs. - ] ifTrue:[ - msg := msg , (resources string:'The ".login" and/or ".profile" files are a good place to do this.\') withCRs. + havePath := false. + shInfo := 'PATH=$PATH:' , stxBinDir , ' ; export PATH\'. + cshInfo := 'set path=($path ' , stxBinDir , ')\'. + msg := msg , (resources string:'%1 is not in your PATH.\You should change your ".login" and/or ".profile" files to include it.\\' + with:stxBinDir asText allBold) withCRs. ]. - shInfo := shInfo , 'STX_LIBDIR=' , stxLibDir , ' ; export STX_LIBDIR\'. - cshInfo := cshInfo , 'setenv STX_LIBDIR ' , stxLibDir , '\'. - ]. + (stxLibDir ~= '/usr/local/lib/smalltalk' + and:[stxLibDir ~= '/usr/lib/smalltalk' + and:[stxLibDir ~= ('/opt/smalltalk/' , self smalltalkRelease , '/lib')]]) ifTrue:[ + msg := msg , (resources string:'The library directory is not a standard ST/X library directory\("/opt/smalltalk/' , self smalltalkRelease , '/lib", "/usr/local/lib/smalltalk" or "/usr/lib/smalltalk"). +You may have to define the %1 environment variable\as %2 if ST/X complains about not finding its files.\' + with:'STX_LIBDIR' asText allBold + with:stxLibDir asText allBold) withCRs. + havePath ifFalse:[ + msg := msg , (resources string:'The above mentioned files are also a good place to do this.\') withCRs. + ] ifTrue:[ + msg := msg , (resources string:'The ".login" and/or ".profile" files are a good place to do this.\') withCRs. + ]. - shInfo notEmpty ifTrue:[ - '*********************************************************' errorPrintCR. - (resources string:'Message from the ST/X Installer:\\') withCRs errorPrintCR. - (resources string:'Please add the following to your ".profile" file:') withCRs errorPrintCR. - '' errorPrintCR. - shInfo withCRs errorPrintCR. - '' errorPrintCR. - (resources string:'or (if you use csh/tcsh), add to your ".login" file:') withCRs errorPrintCR. - '' errorPrintCR. - cshInfo withCRs errorPrintCR. - '' errorPrintCR. - '*********************************************************' errorPrintCR. + shInfo := shInfo , 'STX_LIBDIR=' , stxLibDir , ' ; export STX_LIBDIR\'. + cshInfo := cshInfo , 'setenv STX_LIBDIR ' , stxLibDir , '\'. + ]. + + shInfo notEmpty ifTrue:[ + '*********************************************************' errorPrintCR. + (resources string:'Message from the ST/X Installer:\\') withCRs errorPrintCR. + (resources string:'Please add the following to your ".profile" file:') withCRs errorPrintCR. + '' errorPrintCR. + shInfo withCRs errorPrintCR. + '' errorPrintCR. + (resources string:'or (if you use csh/tcsh), add to your ".login" file:') withCRs errorPrintCR. + '' errorPrintCR. + cshInfo withCRs errorPrintCR. + '' errorPrintCR. + '*********************************************************' errorPrintCR. + ]. ]. ]. - msg := msg , '\\Have fun using ST/X !!'. self information:msg withCRs. - "Modified: / 25.2.1998 / 19:29:04 / cg" + "Modified: / 30.4.1999 / 17:59:39 / cg" ! preInstall @@ -1265,10 +1474,12 @@ |f| - f := '../../doc/online/english/german' asFilename. - f exists ifTrue:[ - f isSymbolicLink ifTrue:[ - OperatingSystem executeCommand:'(cd ../../doc/online; make clobber) >/dev/null 2>/dev/null' + OperatingSystem isMSWINDOWSlike ifFalse:[ + f := '../../doc/online/english/german' asFilename. + f exists ifTrue:[ + f isSymbolicLink ifTrue:[ + OperatingSystem executeCommand:'(cd ../../doc/online; make clobber) >/dev/null 2>/dev/null' + ] ] ] @@ -1276,7 +1487,7 @@ STXInstaller new preInstall " - "Modified: / 25.2.1998 / 17:39:55 / cg" + "Modified: / 30.4.1999 / 17:54:38 / cg" ! ! !STXInstaller class methodsFor:'documentation'!