Etoys on Sugar on a stick (Soas)
Last updated at 5:45 pm UTC on 13 June 2018
Soas is a Fedora spin
https://wiki.sugarlabs.org/go/Sugar_on_a_Stick
It includes Etoys.
This page is intended to give information on maintaining Etoys to run on this platform.
Packages needed
The "etoys" and "squeak-vm" packages.
Check
Please try running Etoys using the command line - the command should simply be
etoys
Please reply with the error message if that does not work.
Sugar activity
The Sugar activity (Etoys-113.xo or Etoys-116.xo, there is no difference I think) uses the system-installed "etoys" package, so you have to get that working first.
http://wiki.laptop.org/go/Etoys
User
http://paraguayeduca.org/en/
Details
Yes, I give you more details than I tried.
I have installed Sugar on a notebook, I installed it mediately SoaS Live 25
(http://archive.fedoraproject.org/pub/fedora/linux/releases/25/Spins/i386/iso/Fedora-SoaS-Live-i386-25-1.3.iso).
The SoaS 25 brings installed Sugar 0.108.1
I also have the following packages installed:
squeak-vm-4.10.2.2614-14.fc24.i686
squeak-image-4.5.13680-4.fc24.noarch
etoys-5.0.2408-10.fc24.noarch
etoys-sugar-5.0.2408-10.fc24.noarch
sugar-presence-service-0.90.2-7.fc24.noarch
Etoys add-ons:
Etoys-113.xo https://activities.sugarlabs.org/es-ES/sugar/addon/4030
Etoys-116.xo http://tinlizzie.org/olpc/sugar/xo/
When starting the main error is:
"Can not find image file: squeak, did you run 'inisqueak -m'?" ...
click on yes and then
"Error: Improper store into idexable object"
Attached the log. Any other test that is needed I can do it.
Exited with status 0, pid 2028 data (None, <open file '<fdopen>', mode 'w' at 0xb1d16078>, '6b303e2813ac0c4cd3ce2ba75f458d97148ffd63')
kImage
Image: etoys5.0 [latest update: #2408]
SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /home/sugar/.sugar/default/org.vpri.EtoysActivity/data/MyEtoys
Trusted Dir /home/sugar/.sugar/default/org.vpri.EtoysActivity/data/private
Untrusted Dir /home/sugar/.sugar/default/org.vpri.EtoysActivity/data/MyEtoys
Bitmap(Object)>>error:
Receiver: a Bitmap of length 2
Arguments and temporary variables:
aString: 'Improper store into indexable object'
Receiver's instance variables:
a Bitmap of length 2
Bitmap(Object)>>errorImproperStore
Receiver: a Bitmap of length 2
Arguments and temporary variables:
Receiver's instance variables:
a Bitmap of length 2
Bitmap(Object)>>at:put:
Receiver: a Bitmap of length 2
Arguments and temporary variables:
index: 1
value: -589505316
Receiver's instance variables:
a Bitmap of length 2
Bitmap class(ArrayedCollection class)>>with:with:
Receiver: Bitmap
Arguments and temporary variables:
firstObject: -589505316
secondObject: -589505316
newCollection: a Bitmap of length 2
Receiver's instance variables:
superclass: ArrayedCollection
methodDict: a MethodDictionary(#asByteArray->a CompiledMethod (3064) #atAllPut:...etc...
format: 33538
instanceVariables: nil
organization: ('initialize-release' fromByteStream:)
('filing' compress:toByteA...etc...
subclasses: nil
name: #Bitmap
classPool: a Dictionary()
sharedPools: nil
environment: nil
category: nil
--- The full stack ---
Bitmap(Object)>>error:
Bitmap(Object)>>errorImproperStore
Bitmap(Object)>>at:put:
Bitmap class(ArrayedCollection class)>>with:with:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Color>>balancedPatternForDepth:
Form>>balancedPatternFor:
FormCanvas>>setFillColor:
FormCanvas>>frameAndFillRectangle:fillColor:borderWidth:borderColor:
FormCanvas(Canvas)>>fillRectangle:color:
FormCanvas>>fillRectangle:fillStyle:
FormCanvas(Canvas)>>fillRectangle:fillStyle:borderStyle:
KedamaTurtleMorph(Morph)>>drawOn:
FormCanvas(Canvas)>>draw:
FormCanvas(Canvas)>>drawMorph:
[] in KedamaTurtleMorph(Morph)>>fullDrawOn: {[(aCanvas isVisible: self bounds) ifTrue: [aCanvas drawMorph: self]. self...]}
FormCanvas>>roundCornersOf:in:during:
FormCanvas(Canvas)>>roundCornersOf:during:
KedamaTurtleMorph(Morph)>>fullDrawOn:
FormCanvas(Canvas)>>fullDraw:
FormCanvas(Canvas)>>fullDrawMorph:
[] in SelectionMorph>>drawOn: {[:m | tempCanvas fullDrawMorph: m]}
Array(SequenceableCollection)>>do:
[] in SelectionMorph>>drawOn: {[:tempCanvas | selectedItems do: [:m | tempCanvas fullDrawMorph: m]]}
FormCanvas>>translateBy:during:
SelectionMorph>>drawOn:
FormCanvas(Canvas)>>draw:
FormCanvas(Canvas)>>drawMorph:
[] in SelectionMorph(Morph)>>fullDrawOn: {[(aCanvas isVisible: self bounds) ifTrue: [aCanvas drawMorph: self]. self...]}
FormCanvas>>roundCornersOf:in:during:
FormCanvas(Canvas)>>roundCornersOf:during:
SelectionMorph(Morph)>>fullDrawOn:
FormCanvas(Canvas)>>fullDraw:
FormCanvas(Canvas)>>fullDrawMorph:
[] in SelectionMorph(Morph)>>imageForm:backgroundColor:forRectangle: {[:tempCanvas | tempCanvas fillRectangle: rect color: aColor. tempCanvas fu...]}
FormCanvas>>translateBy:during:
SelectionMorph(Morph)>>imageForm:backgroundColor:forRectangle:
PartsBin class>>thumbnailForQuad:color:
[] in PartsBin>>listDirection:quadList:withPreviousEntries: {[:tuple | aClass := Smalltalk at: tuple first. aButton := oldDict at: ...]}
SortedCollection(OrderedCollection)>>do:
PartsBin>>listDirection:quadList:withPreviousEntries:
PartsBin>>listDirection:quadList:
ObjectsTool>>installQuads:fromButton:
[] in ObjectsTool>>showCategory:fromButton: {[quads := OrderedCollection new. Morph withAllSubclasses do: [:aClass | a...]}
BlockContext>>ensure:
CursorWithMask(Cursor)>>showWhile:
ObjectsTool>>showCategory:fromButton:
SimpleButtonMorph>>doButtonAction
ObjectsTool>>showCategories:
ObjectsTool>>showCategories
ObjectsTool>>initializeToStandAlone:
ObjectsTool>>initializeToStandAlone
ObjectsTool class(Morph class)>>newStandAlone
PartsBin class>>thumbnailForQuad:color:
[] in PartsBin>>listDirection:quadList:withPreviousEntries: {[:tuple | aClass := Smalltalk at: tuple first. aButton := oldDict at: ...]}
OrderedCollection>>do:
PartsBin>>listDirection:quadList:withPreviousEntries:
PartsBin class>>newPartsBinWithOrientation:andColor:from:withPreviousEntries:
...etc...=========== SqueakDebug.log END ==========
=========== SqueakDebug.log START ==========
Error: Improper store into indexable object
8 June 2018 4:28:01 pm
VM: unix - a SmalltalkImage
Image: etoys5.0 [latest update: #2408]
SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /home/sugar/.sugar/default/org.vpri.EtoysActivity/data/MyEtoys
Trusted Dir /home/sugar/.sugar/default/org.vpri.EtoysActivity/data/private
Untrusted Dir /home/sugar/.sugar/default/org.vpri.EtoysActivity/data/MyEtoys
Bitmap(Object)>>error:
Receiver: a Bitmap of length 2
Arguments and temporary variables:
aString: 'Improper store into indexable object'
Receiver's instance variables:
a Bitmap of length 2
Bitmap(Object)>>errorImproperStore
Receiver: a Bitmap of length 2
Arguments and temporary variables:
Receiver's instance variables:
a Bitmap of length 2
Bitmap(Object)>>at:put:
Receiver: a Bitmap of length 2
Arguments and temporary variables:
index: 1
value: -589505316
Receiver's instance variables:
a Bitmap of length 2
Bitmap class(ArrayedCollection class)>>with:with:
Receiver: Bitmap
Arguments and temporary variables:
firstObject: -589505316
secondObject: -589505316
newCollection: a Bitmap of length 2
Receiver's instance variables:
superclass: ArrayedCollection
methodDict: a MethodDictionary(#asByteArray->a CompiledMethod (3064) #atAllPut:...etc...
format: 33538
instanceVariables: nil
organization: ('initialize-release' fromByteStream:)
('filing' compress:toByteA...etc...
subclasses: nil
name: #Bitmap
classPool: a Dictionary()
sharedPools: nil
environment: nil
category: nil
--- The full stack ---
Bitmap(Object)>>error:
Bitmap(Object)>>errorImproperStore
Bitmap(Object)>>at:put:
Bitmap class(ArrayedCollection class)>>with:with:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Color>>balancedPatternForDepth:
Form>>balancedPatternFor:
FormCanvas>>setFillColor:
FormCanvas>>frameAndFillRectangle:fillColor:borderWidth:borderColor:
FormCanvas(Canvas)>>fillRectangle:color:
FormCanvas>>fillRectangle:fillStyle:
FormCanvas(Canvas)>>fillRectangle:fillStyle:borderStyle:
KedamaTurtleMorph(Morph)>>drawOn:
FormCanvas(Canvas)>>draw:
FormCanvas(Canvas)>>drawMorph:
[] in KedamaTurtleMorph(Morph)>>fullDrawOn: {[(aCanvas isVisible: self bounds) ifTrue: [aCanvas drawMorph: self]. self...]}
FormCanvas>>roundCornersOf:in:during:
FormCanvas(Canvas)>>roundCornersOf:during:
KedamaTurtleMorph(Morph)>>fullDrawOn:
FormCanvas(Canvas)>>fullDraw:
FormCanvas(Canvas)>>fullDrawMorph:
[] in SelectionMorph>>drawOn: {[:m | tempCanvas fullDrawMorph: m]}
Array(SequenceableCollection)>>do:
[] in SelectionMorph>>drawOn: {[:tempCanvas | selectedItems do: [:m | tempCanvas fullDrawMorph: m]]}
FormCanvas>>translateBy:during:
SelectionMorph>>drawOn:
FormCanvas(Canvas)>>draw:
FormCanvas(Canvas)>>drawMorph:
[] in SelectionMorph(Morph)>>fullDrawOn: {[(aCanvas isVisible: self bounds) ifTrue: [aCanvas drawMorph: self]. self...]}
FormCanvas>>roundCornersOf:in:during:
FormCanvas(Canvas)>>roundCornersOf:during:
SelectionMorph(Morph)>>fullDrawOn:
FormCanvas(Canvas)>>fullDraw:
FormCanvas(Canvas)>>fullDrawMorph:
[] in SelectionMorph(Morph)>>imageForm:backgroundColor:forRectangle: {[:tempCanvas | tempCanvas fillRectangle: rect color: aColor. tempCanvas fu...]}
FormCanvas>>translateBy:during:
SelectionMorph(Morph)>>imageForm:backgroundColor:forRectangle:
PartsBin class>>thumbnailForQuad:color:
[] in PartsBin>>listDirection:quadList:withPreviousEntries: {[:tuple | aClass := Smalltalk at: tuple first. aButton := oldDict at: ...]}
SortedCollection(OrderedCollection)>>do:
PartsBin>>listDirection:quadList:withPreviousEntries:
PartsBin>>listDirection:quadList:
ObjectsTool>>installQuads:fromButton:
[] in ObjectsTool>>showCategory:fromButton: {[quads := OrderedCollection new. Morph withAllSubclasses do: [:aClass | a...]}
BlockContext>>ensure:
CursorWithMask(Cursor)>>showWhile:
ObjectsTool>>showCategory:fromButton:
SimpleButtonMorph>>doButtonAction
ObjectsTool>>showCategories:
ObjectsTool>>showCategories
ObjectsTool>>initializeToStandAlone:
ObjectsTool>>initializeToStandAlone
ObjectsTool class(Morph class)>>newStandAlone
PartsBin class>>thumbnailForQuad:color:
[] in PartsBin>>listDirection:quadList:withPreviousEntries: {[:tuple | aClass := Smalltalk at: tuple first. aButton := oldDict at: ...]}
OrderedCollection>>do:
PartsBin>>listDirection:quadList:withPreviousEntries:
PartsBin class>>newPartsBinWithOrientation:andColor:from:withPreviousEntries:
...etc...=========== SqueakDebug.log END ==========
=========== SqueakDebug.log START ==========
Error: Improper store into indexable object
8 June 2018 12:00:00 am
VM: unix - a SmalltalkImage
Image: etoys5.0 [latest update: #2408]
SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /home/sugar/.sugar/default/org.vpri.EtoysActivity/data/MyEtoys
Trusted Dir /home/sugar/.sugar/default/org.vpri.EtoysActivity/data/private
Untrusted Dir /home/sugar/.sugar/default/org.vpri.EtoysActivity/data/MyEtoys
Bitmap(Object)>>error:
Receiver: a Bitmap of length 2
Arguments and temporary variables:
aString: 'Improper store into indexable object'
Receiver's instance variables:
a Bitmap of length 2
Bitmap(Object)>>errorImproperStore
Receiver: a Bitmap of length 2
Arguments and temporary variables:
Receiver's instance variables:
a Bitmap of length 2
Bitmap(Object)>>at:put:
Receiver: a Bitmap of length 2
Arguments and temporary variables:
index: 1
value: -589505316
Receiver's instance variables:
a Bitmap of length 2
Bitmap class(ArrayedCollection class)>>with:with:
Receiver: Bitmap
Arguments and temporary variables:
firstObject: -589505316
secondObject: -589505316
newCollection: a Bitmap of length 2
Receiver's instance variables:
superclass: ArrayedCollection
methodDict: a MethodDictionary(#asByteArray->a CompiledMethod (3064) #atAllPut:...etc...
format: 33538
instanceVariables: nil
organization: ('initialize-release' fromByteStream:)
('filing' compress:toByteA...etc...
subclasses: nil
name: #Bitmap
classPool: a Dictionary()
sharedPools: nil
environment: nil
category: nil
--- The full stack ---
Bitmap(Object)>>error:
Bitmap(Object)>>errorImproperStore
Bitmap(Object)>>at:put:
Bitmap class(ArrayedCollection class)>>with:with:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Color>>balancedPatternForDepth:
Form>>balancedPatternFor:
FormCanvas>>setFillColor:
FormCanvas>>frameAndFillRectangle:fillColor:borderWidth:borderColor:
FormCanvas(Canvas)>>fillRectangle:color:
FormCanvas>>fillRectangle:fillStyle:
FormCanvas(Canvas)>>fillRectangle:fillStyle:borderStyle:
KedamaTurtleMorph(Morph)>>drawOn:
FormCanvas(Canvas)>>draw:
FormCanvas(Canvas)>>drawMorph:
[] in KedamaTurtleMorph(Morph)>>fullDrawOn: {[(aCanvas isVisible: self bounds) ifTrue: [aCanvas drawMorph: self]. self...]}
FormCanvas>>roundCornersOf:in:during:
FormCanvas(Canvas)>>roundCornersOf:during:
KedamaTurtleMorph(Morph)>>fullDrawOn:
FormCanvas(Canvas)>>fullDraw:
FormCanvas(Canvas)>>fullDrawMorph:
[] in SelectionMorph>>drawOn: {[:m | tempCanvas fullDrawMorph: m]}
Array(SequenceableCollection)>>do:
[] in SelectionMorph>>drawOn: {[:tempCanvas | selectedItems do: [:m | tempCanvas fullDrawMorph: m]]}
FormCanvas>>translateBy:during:
SelectionMorph>>drawOn:
FormCanvas(Canvas)>>draw:
FormCanvas(Canvas)>>drawMorph:
[] in SelectionMorph(Morph)>>fullDrawOn: {[(aCanvas isVisible: self bounds) ifTrue: [aCanvas drawMorph: self]. self...]}
FormCanvas>>roundCornersOf:in:during:
FormCanvas(Canvas)>>roundCornersOf:during:
SelectionMorph(Morph)>>fullDrawOn:
FormCanvas(Canvas)>>fullDraw:
FormCanvas(Canvas)>>fullDrawMorph:
[] in SelectionMorph(Morph)>>imageForm:backgroundColor:forRectangle: {[:tempCanvas | tempCanvas fillRectangle: rect color: aColor. tempCanvas fu...]}
FormCanvas>>translateBy:during:
SelectionMorph(Morph)>>imageForm:backgroundColor:forRectangle:
PartsBin class>>thumbnailForQuad:color:
[] in PartsBin>>listDirection:quadList:withPreviousEntries: {[:tuple | aClass := Smalltalk at: tuple first. aButton := oldDict at: ...]}
SortedCollection(OrderedCollection)>>do:
PartsBin>>listDirection:quadList:withPreviousEntries:
PartsBin>>listDirection:quadList:
ObjectsTool>>installQuads:fromButton:
[] in ObjectsTool>>showCategory:fromButton: {[quads := OrderedCollection new. Morph withAllSubclasses do: [:aClass | a...]}
BlockContext>>ensure:
CursorWithMask(Cursor)>>showWhile:
ObjectsTool>>showCategory:fromButton:
SimpleButtonMorph>>doButtonAction
ObjectsTool>>showCategories:
ObjectsTool>>showCategories
ObjectsTool>>initializeToStandAlone:
ObjectsTool>>initializeToStandAlone
ObjectsTool class(Morph class)>>newStandAlone
PartsBin class>>thumbnailForQuad:color:
[] in PartsBin>>listDirection:quadList:withPreviousEntries: {[:tuple | aClass := Smalltalk at: tuple first. aButton := oldDict at: ...]}
OrderedCollection>>do:
PartsBin>>listDirection:quadList:withPreviousEntries:
PartsBin class>>newPartsBinWithOrientation:andColor:from:withPreviousEntries:
...etc...=========== SqueakDebug.log END ==========