MCPackageLoader.st
author Claus Gittinger <cg@exept.de>
Mon, 14 May 2018 02:21:18 +0200
changeset 1048 582b3a028cbc
parent 1037 c0c1ac5fa4d5
permissions -rw-r--r--
#FEATURE by cg class: MCMethodDefinition changed: #postloadOver:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1037
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
     1
"{ Encoding: utf8 }"
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
     2
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"{ Package: 'stx:goodies/monticello' }"
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
1037
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
     5
"{ NameSpace: Smalltalk }"
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
     6
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
Object subclass:#MCPackageLoader
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
     8
	instanceVariableNames:'requirements unloadableDefinitions overrideDefinitions
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
     9
		obsoletions additions removals errorDefinitions provisions'
430
253061f2dc2e class definition
Claus Gittinger <cg@exept.de>
parents: 319
diff changeset
    10
	classVariableNames:'Debugging'
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
	poolDictionaries:''
663
a4a2b641d1d3 category change
Claus Gittinger <cg@exept.de>
parents: 469
diff changeset
    12
	category:'SCM-Monticello-Loading'
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    16
!MCPackageLoader class methodsFor:'initialization'!
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    17
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    18
new
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    19
    ^self basicNew initialize
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    20
! !
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    21
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
!MCPackageLoader class methodsFor:'as yet unclassified'!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
installSnapshot: aSnapshot
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
	self new
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
		installSnapshot: aSnapshot;
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
		load
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
unloadPackage: aPackage
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
	self new
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
		unloadPackage: aPackage;
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
		loadWithNameLike: aPackage name, '-unload'
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
updatePackage: aPackage withSnapshot: aSnapshot
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
	self new
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
		updatePackage: aPackage withSnapshot: aSnapshot;
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
		load
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
! !
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    42
!MCPackageLoader methodsFor:'accessing'!
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    43
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    44
overrideDefinitions
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    45
    ^ overrideDefinitions
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    46
!
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    47
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    48
unloadableDefinitions
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    49
    ^ unloadableDefinitions
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    50
! !
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    51
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
!MCPackageLoader methodsFor:'patch ops'!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
addDefinition: aDefinition
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
	additions add: aDefinition
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
modifyDefinition: old to: new
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
	self addDefinition: new.
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
	obsoletions at: new put: old.
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
removeDefinition: aDefinition
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
	removals add: aDefinition
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
! !
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
!MCPackageLoader methodsFor:'private'!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
analyze
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    70
        | sorter |
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    71
        sorter := self sorterForItems: additions.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    72
        additions := sorter orderedItems.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    73
        requirements := sorter externalRequirements.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    74
        unloadableDefinitions := sorter itemsWithMissingRequirements asSortedCollection.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    75
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    76
        overrideDefinitions := additions select:[:e|e isOverrideDefinition].
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    77
        additions := additions reject: [:e|e isOverrideDefinition].
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    78
        
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    79
        sorter := self sorterForItems: removals.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    80
        removals := sorter orderedItems reversed.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    81
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    82
    "Modified: / 08-11-2010 / 17:34:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
basicLoad
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    86
        | allowEmptyStatements allowSqueakExtensions |
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    87
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    88
        allowEmptyStatements := ParserFlags allowEmptyStatements.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    89
        allowSqueakExtensions := ParserFlags allowSqueakExtensions.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    90
        ParserFlags allowEmptyStatements: true.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    91
        ParserFlags allowSqueakExtensions: true.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    92
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    93
        errorDefinitions := OrderedCollection new.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    94
        self warnAboutUnloadables.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    95
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    96
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    97
        [[
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    98
        | oldErrorDefinitions |
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
    99
        additions do: [:ea | self tryToLoad: ea] displayingProgress: 'Loading...'.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   100
        removals do: [:ea | ea unload] displayingProgress: 'Cleaning up...'.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   101
        self shouldWarnAboutErrors ifTrue: [self warnAboutErrors].
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   102
        oldErrorDefinitions := errorDefinitions.        
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   103
        errorDefinitions := OrderedCollection new.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   104
        oldErrorDefinitions do: [:ea | self tryToLoad: ea] displayingProgress: 'Reloading...'.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   105
        additions do: [:ea | ea postloadOver: (self obsoletionFor: ea)] displayingProgress: 'Initializing...'.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   106
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   107
        self warnAboutOverrides.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   108
        self warnAboutErrors.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   109
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   110
        ]
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   111
        
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   112
                on: InMidstOfFileinNotification 
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   113
                do: [:n | n resume: true]]
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   114
                        ensure: 
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   115
                            [self flushChangesFile.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   116
                            ParserFlags allowEmptyStatements: allowEmptyStatements.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   117
                            ParserFlags allowSqueakExtensions: allowSqueakExtensions.        
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   118
                            ]
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   119
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   120
    "Modified: / 08-11-2010 / 23:49:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
430
253061f2dc2e class definition
Claus Gittinger <cg@exept.de>
parents: 319
diff changeset
   121
    "Modified: / 20-08-2011 / 18:20:54 / cg"
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
dependencyWarning
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
	^ String streamContents:
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
		[:s |
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
		s nextPutAll: 'This package depends on the following classes:'; cr.
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
		requirements do: [:ea | s space; space; nextPutAll: ea; cr].
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
		s nextPutAll: 'You must resolve these dependencies before you will be able to load these definitions: '; cr.
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
		unloadableDefinitions do: [:ea | s space; space; nextPutAll: ea summary; cr]] 
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
errorDefinitionWarning
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
	^ String streamContents:
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
		[:s |
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
		s nextPutAll: 'The following definitions had errors while loading.  Press Proceed to try to load them again (they may work on a second pass):'; cr.
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
		errorDefinitions do: [:ea | s space; space; nextPutAll: ea summary; cr]] 
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
flushChangesFile
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   141
        "The changes file is second in the SourceFiles array"
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   142
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   143
        "(SourceFiles at: 2) flush"
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   144
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   145
    "Modified: / 11-09-2010 / 18:32:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   146
!
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   147
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   148
ifInteractive: aBlock
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   149
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   150
    ^self ifInteractive: aBlock else:[]
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   152
    "Created: / 06-03-2011 / 20:32:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   153
!
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   154
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   155
ifInteractive: interactiveBlock else: noninteractiveBlock
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   156
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   157
    MCInteractiveLoadingQuery query 
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   158
        ifTrue:[interactiveBlock value]
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   159
        ifFalse:[noninteractiveBlock value].
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   160
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   161
    "Created: / 06-03-2011 / 20:31:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
initialize
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   165
	super initialize.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   166
	additions := OrderedCollection new.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   167
	removals := OrderedCollection new.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   168
	obsoletions := Dictionary new.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   169
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
obsoletionFor: aDefinition
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
	^ obsoletions at: aDefinition ifAbsent: [nil]
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
orderDefinitionsForLoading: aCollection
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
	^ (self sorterForItems: aCollection) orderedItems
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
orderedAdditions
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
	^ additions
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
provisions
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   185
	^ provisions ifNil: [provisions := Set withAll: Smalltalk keys]
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
shouldWarnAboutErrors
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
	^ errorDefinitions isEmpty not and: [false "should make this a preference"]
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
sorterForItems: aCollection
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
	| sorter |
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   194
	sorter := MCDependencySorter items: aCollection.
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
	sorter addExternalProvisions: self provisions.
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
	^ sorter
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
tryToLoad: aDefinition
430
253061f2dc2e class definition
Claus Gittinger <cg@exept.de>
parents: 319
diff changeset
   200
        [aDefinition loadOver: (self obsoletionFor: aDefinition)] on: Error do: [:ex |
663
a4a2b641d1d3 category change
Claus Gittinger <cg@exept.de>
parents: 469
diff changeset
   201
            errorDefinitions add: aDefinition.
a4a2b641d1d3 category change
Claus Gittinger <cg@exept.de>
parents: 469
diff changeset
   202
430
253061f2dc2e class definition
Claus Gittinger <cg@exept.de>
parents: 319
diff changeset
   203
            Debugging == true ifTrue:[
253061f2dc2e class definition
Claus Gittinger <cg@exept.de>
parents: 319
diff changeset
   204
                ex reject
253061f2dc2e class definition
Claus Gittinger <cg@exept.de>
parents: 319
diff changeset
   205
            ].
253061f2dc2e class definition
Claus Gittinger <cg@exept.de>
parents: 319
diff changeset
   206
            Transcript showCR:'error during load (to debug, set MCPackageLoader:Debugging to true): '.
253061f2dc2e class definition
Claus Gittinger <cg@exept.de>
parents: 319
diff changeset
   207
            Transcript showCR:ex description.
253061f2dc2e class definition
Claus Gittinger <cg@exept.de>
parents: 319
diff changeset
   208
        ].
253061f2dc2e class definition
Claus Gittinger <cg@exept.de>
parents: 319
diff changeset
   209
663
a4a2b641d1d3 category change
Claus Gittinger <cg@exept.de>
parents: 469
diff changeset
   210
    "Modified: / 11-09-2012 / 09:55:23 / cg"
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   213
tryToLoadAll: definitions label: label
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   214
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   215
    definitions do:[:e|self tryToLoad: e] displayingProgress: label.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   216
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   217
    "Created: / 09-11-2010 / 17:17:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   218
!
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   219
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
useChangeSetNamed: baseName during: aBlock
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   221
        "Use the named change set, or create one with the given name."
940
64e03d517590 class: MCPackageLoader
Claus Gittinger <cg@exept.de>
parents: 663
diff changeset
   222
        | changeHolder oldChanges "newChanges" |
64e03d517590 class: MCPackageLoader
Claus Gittinger <cg@exept.de>
parents: 663
diff changeset
   223
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   224
        changeHolder := (ChangeSet respondsTo: #newChanges:)
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   225
                                                ifTrue: [ChangeSet]
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   226
                                                ifFalse: [Smalltalk].
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   227
        oldChanges := (ChangeSet respondsTo: #current)
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   228
                                                ifTrue: [ChangeSet current]
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   229
                                                ifFalse: [Smalltalk changes].
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
467
6485629d7afe changed: #useChangeSetNamed:during:
Claus Gittinger <cg@exept.de>
parents: 433
diff changeset
   231
        "/JV @ 2010-09-11: Don't care about changes
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   232
        "/newChanges := (ChangeSorter changeSetNamed: baseName) ifNil: [ ChangeSet new name: baseName ].
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   233
        "/changeHolder newChanges: newChanges.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   234
        "/[aBlock value] ensure: [changeHolder newChanges: oldChanges].
467
6485629d7afe changed: #useChangeSetNamed:during:
Claus Gittinger <cg@exept.de>
parents: 433
diff changeset
   235
        "/ Class withoutUpdatingChangesDo: aBlock
6485629d7afe changed: #useChangeSetNamed:during:
Claus Gittinger <cg@exept.de>
parents: 433
diff changeset
   236
        aBlock value.
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   237
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   238
    "Modified: / 08-11-2010 / 20:01:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
467
6485629d7afe changed: #useChangeSetNamed:during:
Claus Gittinger <cg@exept.de>
parents: 433
diff changeset
   239
    "Modified: / 05-09-2011 / 15:56:36 / cg"
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
useNewChangeSetDuring: aBlock
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
	^self useNewChangeSetNamedLike: 'MC' during: aBlock
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
useNewChangeSetNamedLike: baseName during: aBlock
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
	^self useChangeSetNamed: (ChangeSet uniqueNameLike: baseName) during: aBlock
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   250
warnAboutDependencies
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   251
    "
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   252
    
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   253
    
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   254
        self notify: self dependencyWarning
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   255
    "
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   256
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   257
    "Modified: / 13-10-2010 / 15:44:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
warnAboutErrors
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   261
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   262
    | changes |
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   263
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   264
    errorDefinitions isNilOrEmptyCollection ifTrue:[^self].
1037
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
   265
    changes := ChangeSet new.
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
   266
    errorDefinitions select:[:e|e notNil] thenDo:[:e|e addChangesTo:changes].
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   267
430
253061f2dc2e class definition
Claus Gittinger <cg@exept.de>
parents: 319
diff changeset
   268
    changes := Tools::ChangeSetBrowser2
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   269
                openOn: changes
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   270
                label:'Error definitions'.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   271
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   272
    "Created: / 08-11-2010 / 20:19:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   273
    "Modified: / 06-03-2011 / 20:39:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
430
253061f2dc2e class definition
Claus Gittinger <cg@exept.de>
parents: 319
diff changeset
   274
    "Modified: / 20-08-2011 / 18:00:02 / cg"
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   275
!
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   276
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   277
warnAboutOverrides
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   278
431
931f9d85007b changed:
Claus Gittinger <cg@exept.de>
parents: 430
diff changeset
   279
    | changes confirmedChanges definitions |
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   280
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   281
    overrideDefinitions isNilOrEmptyCollection ifTrue:[^self].
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   282
    self ifInteractive:[
1037
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
   283
        changes := ChangeSet new.
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
   284
        overrideDefinitions do:[:e|e addChangesTo:changes].
431
931f9d85007b changed:
Claus Gittinger <cg@exept.de>
parents: 430
diff changeset
   285
        self assert:(changes includes:nil) not.
1037
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
   286
431
931f9d85007b changed:
Claus Gittinger <cg@exept.de>
parents: 430
diff changeset
   287
        confirmedChanges := Tools::ChangeSetBrowser2
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   288
                    confirmChanges: changes
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   289
                    label:'Overridden definitions. Load anyway?'.
433
70380051077d changed:
Claus Gittinger <cg@exept.de>
parents: 431
diff changeset
   290
        confirmedChanges notEmpty ifTrue:[
70380051077d changed:
Claus Gittinger <cg@exept.de>
parents: 431
diff changeset
   291
            confirmedChanges := confirmedChanges flatten.
1037
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
   292
            definitions := confirmedChanges collect:[:e|e mcDefinition] thenSelect:[:e | e notNil].
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
   293
            "/ we might get nil in a roundTrip 
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
   294
            "/ (eg. for mcDef --addChangesTo:--> classChange+commentChange --mcDefinition--> mcDef+nil)
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
   295
            "/ self assert:(definitions includes:nil) not.
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
   296
433
70380051077d changed:
Claus Gittinger <cg@exept.de>
parents: 431
diff changeset
   297
            self tryToLoadAll: definitions label: 'Loading overrides...'.
70380051077d changed:
Claus Gittinger <cg@exept.de>
parents: 431
diff changeset
   298
        ]
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   299
    ] else:[
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   300
        self tryToLoadAll: overrideDefinitions label: 'Loading overrides...'.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   301
    ]
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   302
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   303
    "Created: / 08-11-2010 / 20:19:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   304
    "Modified: / 06-03-2011 / 20:33:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
433
70380051077d changed:
Claus Gittinger <cg@exept.de>
parents: 431
diff changeset
   305
    "Modified: / 20-08-2011 / 19:31:40 / cg"
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   306
!
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   307
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   308
warnAboutUnloadables
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   309
433
70380051077d changed:
Claus Gittinger <cg@exept.de>
parents: 431
diff changeset
   310
    | changes confirmedChanges definitions |
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   311
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   312
    unloadableDefinitions isNilOrEmptyCollection ifTrue:[^self].
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   313
    self ifInteractive:[
1037
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
   314
        changes := ChangeSet new.
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
   315
        unloadableDefinitions do:[:e|e addChangesTo:changes].
431
931f9d85007b changed:
Claus Gittinger <cg@exept.de>
parents: 430
diff changeset
   316
        self assert:(changes includes:nil) not.
1037
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
   317
433
70380051077d changed:
Claus Gittinger <cg@exept.de>
parents: 431
diff changeset
   318
        confirmedChanges := Tools::ChangeSetBrowser2
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   319
                    confirmChanges: changes
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   320
                    label:'Unsatisfied dependencies. Load anyway?'.
433
70380051077d changed:
Claus Gittinger <cg@exept.de>
parents: 431
diff changeset
   321
        confirmedChanges notEmpty ifTrue:[
70380051077d changed:
Claus Gittinger <cg@exept.de>
parents: 431
diff changeset
   322
            confirmedChanges := confirmedChanges flatten.
1037
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
   323
            definitions := confirmedChanges collect:[:e|e mcDefinition] thenSelect:[:e | e notNil].
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
   324
            "/ we might get nil in a roundTrip 
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
   325
            "/ (eg. for mcDef --addChangesTo:--> classChange+commentChange --mcDefinition--> mcDef+nil)
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
   326
            "/ self assert:(definitions includes:nil) not.
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
   327
433
70380051077d changed:
Claus Gittinger <cg@exept.de>
parents: 431
diff changeset
   328
            self tryToLoadAll: definitions label: 'Loading unloadables...'.
70380051077d changed:
Claus Gittinger <cg@exept.de>
parents: 431
diff changeset
   329
        ]
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   330
    ] else:[
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   331
        self tryToLoadAll: unloadableDefinitions label: 'Loading unloadables...'.
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   332
    ]
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   333
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   334
    "Created: / 08-11-2010 / 20:19:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   335
    "Modified: / 06-03-2011 / 20:36:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
433
70380051077d changed:
Claus Gittinger <cg@exept.de>
parents: 431
diff changeset
   336
    "Modified: / 20-08-2011 / 19:31:22 / cg"
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
! !
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   338
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   339
!MCPackageLoader methodsFor:'public'!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   340
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   341
installSnapshot: aSnapshot
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   342
	| patch |
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   343
	patch := aSnapshot patchRelativeToBase: MCSnapshot empty.
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   344
	patch applyTo: self.
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   345
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   346
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   347
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   348
load
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   349
	self analyze.
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
	unloadableDefinitions isEmpty ifFalse: [self warnAboutDependencies].
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   351
	self useNewChangeSetDuring: [self basicLoad]
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   352
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   354
loadWithName: baseName
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   355
	self analyze.
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
	unloadableDefinitions isEmpty ifFalse: [self warnAboutDependencies].
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
	self useChangeSetNamed: baseName during: [self basicLoad]
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   359
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   360
loadWithNameLike: baseName
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
	self analyze.
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
	unloadableDefinitions isEmpty ifFalse: [self warnAboutDependencies].
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
	self useNewChangeSetNamedLike: baseName during: [self basicLoad]
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   364
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   365
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   366
unloadPackage: aPackage
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   367
	self updatePackage: aPackage withSnapshot: MCSnapshot empty
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   368
!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   369
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   370
updatePackage: aPackage withSnapshot: aSnapshot
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   371
        |  patch packageSnap |
469
fa3b9dc54085 comment/format in: #updatePackage:withSnapshot:
Claus Gittinger <cg@exept.de>
parents: 467
diff changeset
   372
fa3b9dc54085 comment/format in: #updatePackage:withSnapshot:
Claus Gittinger <cg@exept.de>
parents: 467
diff changeset
   373
        MCStXPackageQuery 
fa3b9dc54085 comment/format in: #updatePackage:withSnapshot:
Claus Gittinger <cg@exept.de>
parents: 467
diff changeset
   374
            answer: aPackage name 
fa3b9dc54085 comment/format in: #updatePackage:withSnapshot:
Claus Gittinger <cg@exept.de>
parents: 467
diff changeset
   375
            do:[
fa3b9dc54085 comment/format in: #updatePackage:withSnapshot:
Claus Gittinger <cg@exept.de>
parents: 467
diff changeset
   376
                packageSnap := aPackage snapshot.
fa3b9dc54085 comment/format in: #updatePackage:withSnapshot:
Claus Gittinger <cg@exept.de>
parents: 467
diff changeset
   377
                patch := aSnapshot patchRelativeToBase: packageSnap.
fa3b9dc54085 comment/format in: #updatePackage:withSnapshot:
Claus Gittinger <cg@exept.de>
parents: 467
diff changeset
   378
                patch applyTo: self.
fa3b9dc54085 comment/format in: #updatePackage:withSnapshot:
Claus Gittinger <cg@exept.de>
parents: 467
diff changeset
   379
                packageSnap definitions do: [:ea | self provisions addAll: ea provisions]
fa3b9dc54085 comment/format in: #updatePackage:withSnapshot:
Claus Gittinger <cg@exept.de>
parents: 467
diff changeset
   380
            ]
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   381
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   382
    "Modified: / 14-09-2010 / 22:09:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
469
fa3b9dc54085 comment/format in: #updatePackage:withSnapshot:
Claus Gittinger <cg@exept.de>
parents: 467
diff changeset
   383
    "Modified (format): / 07-09-2011 / 12:44:16 / cg"
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   384
! !
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   385
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   386
!MCPackageLoader class methodsFor:'documentation'!
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   387
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   388
version
1037
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
   389
    ^ '$Header$'
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   390
!
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   391
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   392
version_CVS
1037
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
   393
    ^ '$Header$'
213
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   394
!
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   395
9babb070c82c added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   396
version_SVN
1037
c0c1ac5fa4d5 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 940
diff changeset
   397
    ^ '$Id$'
70
7a1fe064963b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   398
! !
940
64e03d517590 class: MCPackageLoader
Claus Gittinger <cg@exept.de>
parents: 663
diff changeset
   399