STXInstaller.st
changeset 1519 6196930f9a1d
parent 1518 85114c70d811
child 1707 ad52b5abf849
--- a/STXInstaller.st	Fri Oct 26 18:51:56 2001 +0200
+++ b/STXInstaller.st	Fri Oct 26 19:53:42 2001 +0200
@@ -237,11 +237,13 @@
                 "/ name                             destination  subDir             required mode      
                 ( 'projects/smalltalk/include'          #lib     nil                  true  '644' )
                 ( 'projects/smalltalk/*.rc'             #lib     nil                  true  '644' )
+                ( 'projects/smalltalk/*.wsp'            #lib     nil                  true  '644' )
                 ( 'projects/smalltalk/banner*.xpm'      #lib     nil                  true  '644' )
                 ( 'projects/smalltalk/patches'          #lib     nil                  true  '644' )
                 ( 'COPYRIGHT'                           nil      nil                  true  '644' )
-                ( 'doc/online/german/LICENCE_STX.html'  nil      'doc/online/german'      true  '644' )
-                ( 'doc/online/english/LICENCE_STX.html' nil      'doc/online/english'     true  '644' )
+                ( 'RELEASE'                             nil      nil                  true  '644' )
+                ( 'doc/online/german/LICENCE_STX.html'  nil           'doc/online/german'      true  '644' )
+                ( 'doc/online/english/LICENCE_STX.html' nil           'doc/online/english'     true  '644' )
                 ( 'doc/online/german/LICENCE_DEMO_STX.html'  nil      'doc/online/german'      true  '644' )
                 ( 'doc/online/english/LICENCE_DEMO_STX.html' nil      'doc/online/english'     true  '644' )
     ).
@@ -372,6 +374,20 @@
 
 !STXInstaller methodsFor:'installing'!
 
+add:specEntry toFileSpec:fileSpec
+    (specEntry first startsWith:'./') ifTrue:[
+        specEntry at:1 put:(specEntry first copyFrom:3).
+    ].
+    (specEntry first startsWith:'.\') ifTrue:[
+        specEntry at:1 put:(specEntry first copyFrom:3).
+    ].
+    (fileSpec includes:specEntry) ifFalse:[
+        fileSpec add:specEntry
+    ] ifTrue:[
+        "/ self halt
+    ]
+!
+
 addFilesToSpec:fileSpec relativeTo:rel fromINSTALLSpec:f
     |s entry t cond dst|
 
@@ -389,18 +405,49 @@
                     or:[installGoodyFiles]) ifTrue:[
                         dst := t at:2.
                         (dst startsWith:'packages/stx/') ifTrue:[
-                            fileSpec add:(Array 
+                            self add:(Array 
                                             with:(rel asFilename constructString:(t at:1))
                                             with:#pkg
                                             with:('stx' asFilename constructString:(dst copyFrom:'packages/stx/' size+1))
-                                            with:true).
+                                            with:true)
+                                 toFileSpec:fileSpec.
                         ] ifFalse:[
-                            (dst = 'bin') ifTrue:[
-                                fileSpec add:(Array 
-                                                with:(rel asFilename constructString:(t at:1))
-                                                with:#bin
-                                                with:nil
-                                                with:true).
+                            ((dst = 'bin') or:[dst startsWith:'bin/']) ifTrue:[
+                                (dst = 'bin') ifTrue:[
+                                    self add:(Array 
+                                                    with:(rel asFilename constructString:(t at:1))
+                                                    with:#bin
+                                                    with:nil
+                                                    with:true)
+                                         toFileSpec:fileSpec.
+                                ] ifFalse:[
+                                    self add:(Array 
+                                                    with:(rel asFilename constructString:(t at:1))
+                                                    with:#bin
+                                                    with:(dst copyFrom:'bin/' size+1)
+                                                    with:true)
+                                         toFileSpec:fileSpec.
+                                ].
+                            ] ifFalse:[
+                                ((dst = 'lib') or:[dst startsWith:'lib/']) ifTrue:[
+                                    (dst = 'lib') ifTrue:[
+                                        self add:(Array 
+                                                        with:(rel asFilename constructString:(t at:1))
+                                                        with:#lib
+                                                        with:nil
+                                                        with:true)
+                                             toFileSpec:fileSpec.
+                                    ] ifFalse:[
+                                        self add:(Array 
+                                                        with:(rel asFilename constructString:(t at:1))
+                                                        with:#lib
+                                                        with:(dst copyFrom:'lib/' size+1)
+                                                        with:true)
+                                             toFileSpec:fileSpec.
+                                    ]
+                                ] ifFalse:[
+                                    self halt:'unhandled destination: ' , dst.
+                                ]
                             ]
                         ]
                     ]