tim Rowledge uploaded a new version of EToys to project The Trunk:
http://source.squeak.org/trunk/EToys-tpr.340.mcz
==================== Summary ====================
Name: EToys-tpr.340
Author: tpr
Time: 18 February 2019, 7:30:07.021016 pm
UUID: d1ed1a6e-a62f-4178-bcd6-0fb6684301e8
Ancestors: EToys-kfr.339
Part of deprecating HTTPClient for 6.0
Stop using it
=============== Diff against EToys-kfr.339 ===============
Item was changed:
----- Method: ServerDirectory class>>parseEToyUserListFrom: (in category '*eToys-school support') -----
parseEToyUserListFrom: urlString
| url userString userList |
urlString ifNil:[^nil].
url := urlString asUrl.
userString := ["Note: We need to prevent going through the plugin API
when retrieving a local (file) URL, since the plugin API
(correctly) rejects file:// downloads."
Cursor wait showWhile:[
(url hasRemoteContents) ifTrue:[
"Go through the browser (if present)"
+ (HTTPSocket httpGet: url asString) contents.
- (HTTPClient httpGet: url asString) contents.
] ifFalse:[
"Go grab it directly"
url retrieveContents contents.
].
].
] on: Error do:[nil].
userString ifNil:[^nil].
userList := userString lines collect: [:each| each withBlanksTrimmed].
userList := userList reject:[:any| any isEmpty].
(userList first = '##user list##') ifFalse:[^nil].
userList := userList copyFrom: 2 to: userList size.
^userList!
tim Rowledge uploaded a new version of UpdateStream to project The Trunk:
http://source.squeak.org/trunk/UpdateStream-tpr.11.mcz
==================== Summary ====================
Name: UpdateStream-tpr.11
Author: tpr
Time: 18 February 2019, 7:25:41.894118 pm
UUID: 00e59d34-daaf-40f8-b4ee-306f21613bfc
Ancestors: UpdateStream-ul.10
Part of deprecating HTTPClient for 6.0
Stop using it
=============== Diff against UpdateStream-ul.10 ===============
Item was removed:
- ----- Method: AutoStart class>>checkForUpdates (in category '*UpdateStream') -----
- checkForUpdates
- | availableUpdate updateServer |
- HTTPClient isRunningInBrowser ifFalse: [ ^ self processUpdates ].
- availableUpdate := (Smalltalk namedArguments
- at: 'UPDATE'
- ifAbsent: [ '' ]) asInteger.
- availableUpdate ifNil: [ ^ false ].
- updateServer := Smalltalk namedArguments
- at: 'UPDATESERVER'
- ifAbsent:
- [ Smalltalk namedArguments
- at: 'UPDATE_SERVER'
- ifAbsent: [ 'Squeakland' ] ].
- UpdateStreamDownloader default setUpdateServer: updateServer.
- ^ SystemVersion checkAndApplyUpdates: availableUpdate!
Item was changed:
----- Method: UpdateStreamDownloader class>>newUpdatesOn:special:throughNumber: (in category 'fetching updates') -----
newUpdatesOn: serverList special: indexPrefix throughNumber: aNumber
"Return a list of fully formed URLs of update files we do not yet have. Go to the listed servers and look at the file 'updates.list' for the names of the last N update files. We look backwards for the first one we have, and make the list from there. tk 9/10/97
No updates numbered higher than aNumber (if it is not nil) are returned "
| existing out maxNumber |
maxNumber := aNumber ifNil: [99999].
out := OrderedCollection new.
existing := SystemVersion current updates.
serverList do: [:server | | raw doc list char |
+ doc := HTTPSocket httpGet: 'http://' , server,indexPrefix,'updates.list'.
- doc := HTTPClient httpGet: 'http://' , server,indexPrefix,'updates.list'.
"test here for server being up"
doc class == RWBinaryOrTextStream ifTrue:
[raw := doc reset; contents. "one file name per line"
list := self extractThisVersion: raw.
list reverseDo: [:fileName | | ff itsNumber |
ff := (fileName findTokens: '/') last. "allow subdirectories"
itsNumber := ff initialIntegerOrNil.
(existing includes: itsNumber)
ifFalse:
[
(itsNumber == nil or: [itsNumber <= maxNumber])
ifTrue:
[out addFirst: 'http://' , server, fileName]]
ifTrue: [^ out]].
((out size > 0) or: [char := doc reset; skipSeparators; next.
(char == $*) | (char == $#)]) ifTrue:
[^ out "we have our list"]]. "else got error msg instead of file"
"Server was down, try next one"].
self inform: 'All code update servers seem to be unavailable'.
^ out!
Item was changed:
----- Method: UpdateStreamDownloader class>>retrieveUrls:ontoQueue:withWaitSema: (in category 'fetching updates') -----
retrieveUrls: urls ontoQueue: queue withWaitSema: waitSema
"download the given list of URLs. The queue will be loaded alternately
with url's and with the retrieved contents. If a download fails, the
contents will be #failed. If all goes well, a special pair with an empty
URL and the contents #finished will be put on the queue. waitSema is
waited on every time before a new document is downloaded; this keeps
the downloader from getting too far ahead of the main process"
"kill the existing downloader if there is one"
| updateCounter |
UpdateDownloader
ifNotNil: [UpdateDownloader terminate].
updateCounter := 0.
"fork a new downloading process"
UpdateDownloader := [
'Downloading updates' displayProgressFrom: 0 to: urls size during: [:bar |
urls
do: [:url | | front canPeek doc |
waitSema wait.
queue nextPut: url.
+ doc := HTTPSocket httpGet: url.
- doc := HTTPClient httpGet: url.
doc isString
ifTrue: [queue nextPut: #failed.
UpdateDownloader := nil.
Processor activeProcess terminate]
ifFalse: [canPeek := 120 min: doc size.
front := doc next: canPeek. doc skip: -1 * canPeek.
(front beginsWith: '<!!DOCTYPE') ifTrue: [
(front includesSubstring: 'Not Found') ifTrue: [
queue nextPut: #failed.
UpdateDownloader := nil.
Processor activeProcess terminate]]].
UpdateDownloader ifNotNil: [queue nextPut: doc. updateCounter := updateCounter + 1. bar value: updateCounter]]].
queue nextPut: ''.
queue nextPut: #finished.
UpdateDownloader := nil] newProcess.
UpdateDownloader priority: Processor userInterruptPriority.
"start the process running"
UpdateDownloader resume!
David T. Lewis uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-dtl.821.mcz
==================== Summary ====================
Name: Collections-dtl.821
Author: dtl
Time: 16 February 2019, 6:18:27.925895 pm
UUID: 9bfa29b3-5e9f-4c61-b19b-e0bb05403589
Ancestors: Collections-nice.820
Classes are expected to be unique in the system, but in some cases (e.g. Magma) it is also useful to expect a proxy for a class to test equivalent to the actual class. Therefore, in SequenceableCollection>>= use #= rather than #== for the class comparison.
=============== Diff against Collections-nice.820 ===============
Item was changed:
----- Method: SequenceableCollection>>= (in category 'comparing') -----
= otherCollection
"Answer true if the receiver is equivalent to the otherCollection.
First test for identity, then rule out different class and sizes of
collections. As a last resort, examine each element of the receiver
and the otherCollection."
self == otherCollection ifTrue: [^ true].
+ self class = otherCollection class ifFalse: [^ false].
- self class == otherCollection class ifFalse: [^ false].
^ self hasEqualElements: otherCollection!
Nicolas Cellier uploaded a new version of Monticello to project The Trunk:
http://source.squeak.org/trunk/Monticello-nice.695.mcz
==================== Summary ====================
Name: Monticello-nice.695
Author: nice
Time: 14 February 2019, 1:46:52.89164 pm
UUID: 1933b192-0ab2-bc46-af47-b06f031516b9
Ancestors: Monticello-nice.694
Add a utility for finding last merge of two versions.
A use case:
| mcw allBF540 |
mcw := (MCPackage named: 'Monticello') workingCopy ancestry.
allBF540 := (mcw allAncestors select: [:e | e versionName = 'Monticello-bf.540' ]) asArray.
^mcw lastMergeOf: allBF540 first and: allBF540 last.
Note: implementation is sub-optimal but just works
=============== Diff against Monticello-nice.694 ===============
Item was added:
+ ----- Method: MCAncestry>>lastMergeOf:and: (in category 'progeny') -----
+ lastMergeOf: aNode and: anotherNode
+ "Find the last merge of two Nodes starting from myself.
+ Answer nil if there is none.
+ Note: there might have been several merges, in which case we take the common merge of merges.
+ Example: if c is a merge of a and b, d is also a merge of a and b, and e is a merge of c and d, then asnwer e."
+
+ | common |
+ (self hasAncestor: aNode) ifFalse: [^nil].
+ (self hasAncestor: anotherNode) ifFalse: [^nil].
+ common := ancestors collect: [:e | e lastMergeOf: aNode and: anotherNode] as: Set.
+ common remove: nil ifAbsent: [].
+ common size = 1 ifTrue: [^common anyOne].
+ ^self
+ !
Nicolas Cellier uploaded a new version of Tests to project The Trunk:
http://source.squeak.org/trunk/Tests-pre.341.mcz
==================== Summary ====================
Name: Tests-pre.341
Author: pre
Time: 19 May 2016, 5:34:18.672168 pm
UUID: 0209ce70-2b8b-4d53-b743-ed1024d367ea
Ancestors: Tests-eem.340
By moving the PBColorPreferenceView from the EToys package to the PreferenceBrowser package, the PB package now depends on etyos through the UpdatingRectangleMorph. If this is intentional we should make the following modification to the PackageDependencyTests.
=============== Diff against Tests-eem.340 ===============
Item was changed:
----- Method: PackageDependencyTest>>testPreferenceBrowser (in category 'tests') -----
testPreferenceBrowser
self testPackage: #PreferenceBrowser dependsExactlyOn: #(
#'Chronology-Core'
Collections
Graphics
Kernel
Morphic
MorphicExtras
System
Tools
+ #'ToolBuilder-Morphic'
+ EToys
+ Balloon
).!
Nicolas Cellier uploaded a new version of Tests to project The Trunk:
http://source.squeak.org/trunk/Tests-pre.347.mcz
==================== Summary ====================
Name: Tests-pre.347
Author: pre
Time: 23 July 2016, 2:20:08.768962 pm
UUID: 8272055d-5600-c34b-aac4-9c29a9fda5e5
Ancestors: Tests-pre.346
Adds a Compiler test to the list of expected failures as it can not currently work in an image only using the V3PlusClosures encoder. The test is expected to be executable in an image which uses the V3Encoder.
=============== Diff against Tests-pre.346 ===============
Item was changed:
----- Method: ClosureCompilerTest>>expectedFailures (in category 'failures') -----
expectedFailures
+
+ ^#(testDebuggerTempAccess testInjectIntoDecompilations testInjectIntoDecompiledDebugs) ,
+ (({CompiledMethod classPool at: #SecondaryBytecodeSetEncoderClass .
+ CompiledMethod classPool at: #PrimaryBytecodeSetEncoderClass}
+ includes: EncoderForV3)
+ ifFalse: [#(testSourceRangeAccessForBlueBookInjectInto)]
+ ifTrue: [#()])
+ !
- ^#(testDebuggerTempAccess testInjectIntoDecompilations testInjectIntoDecompiledDebugs)!
Item was changed:
----- Method: ClosureCompilerTest>>testSourceRangeAccessForBlueBookInjectInto (in category 'tests') -----
testSourceRangeAccessForBlueBookInjectInto
"Test debugger source range selection for inject:into: for a version compiled with closures"
"self new testSourceRangeAccessForBlueBookInjectInto"
| source method |
+ [source := (Collection sourceCodeAt: #inject:into:) asString.
- source := (Collection sourceCodeAt: #inject:into:) asString.
method := (Parser new
encoderClass: EncoderForV3;
parse: source
class: Collection)
generate: (Collection compiledMethodAt: #inject:into:) trailer.
+ self supportTestSourceRangeAccessForInjectInto: method source: source.]
+ on: Error
+ do: [:e | self fail: e.]!
- self supportTestSourceRangeAccessForInjectInto: method source: source!