On 6 December 2013 12:34, Gustavo Duarte gduarte@activitycentral.com wrote:
Dave,
I believe that squeakvm is compiled with Sugar support, because I can run Scratch and save projects on Journal, just in case, there is another way to know if squeakvm is compiled with Sugar support ?
I paste bellow another test I had done:
As Scratch is working well with the interaction with Sugar, I copied the same parameters of Scratch starting script, and executed this from a terminal as:
sudo /usr/lib/squeak/4.4.7-2357/squeakvm -vm-display-X11 -swapbtn -encoding UTF-8 -vm-sound-ALSA -sugarBundleId org.vpri.EtoysActivity -sugarActivityId 24c67ec800d1d71723f959b56a213accf140e7bc /usr/share/etoys/etoys.image SQUEAKLETS /home/gustavo-cm1/.sugar/default/org.vpri.EtoysActivity/instance/ BUNDLE_ID org.vpri.EtoysActivity ACTIVITY_ID 24c67ec800d1d71723f959b56a213accf140e7bc
The output debug log is:
=========== SqueakDebug.log START ========== Error: No content to install 6 December 2013 10:05:27 am
VM: unix - a SmalltalkImage Image: etoys5.0 [latest update: #2408]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /usr/share/etoys/My Squeak Trusted Dir /usr/share/etoys/secure Untrusted Dir /usr/share/etoys/My Squeak
CodeLoader(Object)>>error: Receiver: a CodeLoader Arguments and temporary variables: aString: 'No content to install' Receiver's instance variables: baseURL: '' sourceFiles: #(a HTTPDownloadRequest) segments: nil publicKey: nil
I don't know if it's hugely useful info, but 'No content to install' means the startup file couldn't be found. This often happens to me because the startup file location is relative to the directory containing the image, not the location where you run the command.
So if you're in /home/frank/squeak-ci/ and you say "$ target/cog.r2766/coglinux/bin/squeak target/TrunkImage.image HudsonTools.st", "HudsonTools.st" is translated into "/home/frank/squeak-ci/target/HudsonTools.st", not "/home/frank/squeak-ci/HudsonTools.st".
frank
CodeLoader>>installSourceFile: Receiver: a CodeLoader Arguments and temporary variables: aStream: nil contents: nil trusted: nil Receiver's instance variables: baseURL: '' sourceFiles: #(a HTTPDownloadRequest) segments: nil publicKey: nil
[] in CodeLoader>>installSourceFiles {[:req | self installSourceFile: req contentStream]} Arguments and temporary variables: req: a HTTPDownloadRequest
Array(SequenceableCollection)>>do: Receiver: #(a HTTPDownloadRequest) Arguments and temporary variables: aBlock: [] in CodeLoader>>installSourceFiles {[:req | self installSourceFile: r...etc... index: 1 indexLimiT: 1 Receiver's instance variables: #(a HTTPDownloadRequest)
--- The full stack --- CodeLoader(Object)>>error: CodeLoader>>installSourceFile: [] in CodeLoader>>installSourceFiles {[:req | self installSourceFile: req contentStream]} Array(SequenceableCollection)>>do:
CodeLoader>>installSourceFiles ProjectLauncher>>startUpAfterLogin ProjectLauncher>>doEtoyLogin ProjectLauncher>>startUp [] in AutoStart class>>startUp: {[launcher startUp]} WorldState>>runStepMethodsIn: PasteUpMorph>>runStepMethods WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [] in Project class>>spawnNewProcess {[[World doOneCycle. Processor yield. false] whileFalse. nil]} [] in BlockContext>>newProcess {[self value. Processor terminateActive]} =========== SqueakDebug.log END ==========
On Fri, Dec 6, 2013 at 12:17 AM, David T. Lewis lewis@mail.msen.com wrote:
On Thu, Dec 05, 2013 at 02:36:42PM -0800, Eliot Miranda wrote:
On Thu, Dec 5, 2013 at 2:01 PM, Gustavo Duarte gduarte@activitycentral.comwrote:
Eliot,
Here the output of ps ww PID command.
XO:
PID TTY STAT TIME COMMAND 976 ? S 0:22 /usr/lib/squeak/4.10.2-2614/squeakvm -encoding UTF-8 -vm-display-x11 -xshm -sugarBundleId org.vpri.EtoysActivity -sugarActivityId d25f8c2f9a19397ce914965abf04ed31b3f6b0ea -vm-sound-ALSA /usr/share/etoys/etoys.image BUNDLE_PATH /home/olpc/Activities/Etoys.activity SQUEAKLETS /home/olpc/.sugar/default/org.vpri.EtoysActivity/instance BUNDLE_ID org.vpri.EtoysActivity ACTIVITY_ID d25f8c2f9a19397ce914965abf04ed31b3f6b0ea
CM:
PID TTY STAT TIME COMMAND 5912 ? Rl 0:06 /usr/lib/squeak/4.4.7-2357/squeakvm -encoding UTF-8 -vm-display-x11 -xshm -sugarBundleId org.vpri.EtoysActivity -sugarActivityId c03be0a816bee1440f701b7d3b504b0968cb3274 -vm-sound-pulse /usr/share/etoys/etoys.image BUNDLE_PATH /usr/share/sugar/activities/Etoys.activity SQUEAKLETS /home/gustavo-cm1/.sugar/default/org.vpri.EtoysActivity/instance BUNDLE_ID org.vpri.EtoysActivity ACTIVITY_ID c03be0a816bee1440f701b7d3b504b0968cb3274
Seem the script that start squeak is ok, right ?
Looks like it :-(. That implies theres a bug in the VM on ubuntu :-(. Might it be something to do with the vm-sound-pulse plugin mis-parsing the command line? What happens if you start it with no sound (omit -vm-sound-pulse) ?
After reading this thread, I was initially confused by the command line options that are being passed to the VM:
-encoding UTF-8 -vm-display-x11 -xshm -sugarBundleId org.vpri.EtoysActivity -sugarActivityId c03be0a816bee1440f701b7d3b504b0968cb3274 -vm-sound-pulse
These are options that are parsed by the VM executable itself, as opposed to being passed to the Etoys image and evaluated there.
I took a look at the VM sources, and see that the -sugarBundleId and the -sugarActivityId parameters will be interpreted by the VM executable if and only if the VM was compiled with Sugar support:
# if defined(SUGAR) else if (!strcmp(arg, "-sugarBundleId")) sugarBundleId= argv[1]; else if (!strcmp(arg, "-sugarActivityId")) sugarActivityId= argv[1]; # endif
I expect that if the Etoys image is run from a script that specifies those two VM parameters, and if the VM was not compiled without Sugar support, then the command line parameters are probably going to get out of whack. The dictionary that got turned inside out is probably a side effect of this.
So my guess is that the script is trying to run a VM for Etoys in the Sugar environment, but the VM that is being run by that script was not compiled with Sugar support enabled.
Dave