[squeak-dev] Interaction with Sugar on Ubuntu.

David T. Lewis lewis at mail.msen.com
Fri Dec 6 13:57:52 UTC 2013


On Fri, Dec 06, 2013 at 10:34:16AM -0200, Gustavo Duarte 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 ?
> 

If you run the VM executable directly with the -help option, it will print
a list of available command line options. If the VM was compiled with
Sugar support, the list of X11 options will include this:

  -sugarBundleId <id>   set window property _SUGAR_BUNDLE_ID to <id>
  -sugarActivityId <id> set window property _SUGAR_ACTIVITY_ID to <id>

If the VM does not have this, then it will not handle the command line
option parsing as expected.

As far as I can tell, the Sugar support in the VM is used only to set
some X11 window properties. I am not familiar with Sugar, so I do not
know why this is important, but I would expect that the basic functioning
of Etoys and Squeak would not be affected by this at all. So just for
purposes of testing, you might want to try running Etoys with the following
two parameters removed from the command line:

  -sugarBundleId org.vpri.EtoysActivity
  -sugarActivityId > 24c67ec800d1d71723f959b56a213accf140e7bc

I expect that if you run it this way, then Etoys should start up normally
and the "inverted dictionary" problem will be resolved. This will at
least confirm the problem, then we can figure out what to do to fix it.

Dave


> 
> 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
> 
> 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 at 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 at activitycentral.com>wrote:
> > >
> > > > 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
> >
> >
> >

> 



More information about the Squeak-dev mailing list