[squeak-dev] OpenGL procedural textures generator (by David Faught) for Squeak 4.4

Nikolay Suslov nsuslovi at gmail.com
Fri Mar 8 08:56:53 UTC 2013


Hello Chris,

It seems to be, that OpenGL lib could not be found by VM.
Sorry, could not test it running on Linux for now.. but there was the same
problem with Croquet running on Linux, the solution was to provide the
correct OpenGL lib links to VM.
Here is a script for Krestianstvo running on non-cog Squeak VM, look at
"make libGL.so link" part of the script.

----
#!/bin/sh
IMAGE="Krestianstvo.image"
DIR=`dirname $0`
EXE="$DIR/Contents/Linux-i686"
LIB="$EXE/lib/squeak/4.0.3-2202"
RES="$DIR/Contents/Resources"

# make source link if necessary
if [ ! -r $RES/KrestianstvoV41.sources ] ; then
        ln -s $RES/KrestianstvoV41.sources
fi


# make libGL.so link if necessary
test -f  "$LIB/libGL.so" || {
    src=$( ldd $LIB/so.vm-display-X11 | grep libGL.so | cut -d' ' -f3)
|| :
    test -n "$src" -a ! -f "$src" && src=''
    test -z "$src" -a -f /usr/lib/libGL.so && src="/usr/lib/libGL.so"
    test -z "$src" -a -f /usr/lib/libGL.so.1 && src="/usr/lib/libGL.so.
1"
    test -z "$src" -a -f /usr/lib/libGL.so.2 && src="/usr/lib/libGL.so.
2"

    test -z "$src" && {
        echo "I cannot find any usable libGL.so.{012} library. Giving
up" >&2
        exit 1
    }

    echo "Creating libGL.so link in $LIB using $src"
    ln -snf $src "${LIB}/libGL.so"
}

# Slight modification to cobalt.sh - line 26:
# make libopenal.so link if necessary - OpenAL is a good thing
if [ ! -f "$LIB/libopenal.so" -a -f /usr/lib/libopenal.so.1 ] ; then
    echo "Creating libopenal.so symlink in $LIB"
    ln -s /usr/lib/libopenal.so.1 "$LIB/libopenal.so"
elif [ ! -f "$LIB/libopenal.so" -a -f /usr/lib/libopenal.so.0 ] ; then
    echo Creating libopenal.so symlink in $LIB
    ln -s /usr/lib/libopenal.so.0 "$LIB/libopenal.so"
fi


exec "$EXE/bin/squeak" -plugins "$LIB" \
                -encoding UTF-8 \
        -vm-display-X11 -swapbtn \
        "$RES/$IMAGE"

---

Hope that helps.

Regards,
Nikolay


On Thu, Mar 7, 2013 at 2:44 AM, Chris Muller <ma.chris.m at gmail.com> wrote:

> I attached a screenshot of debugger that occurs when I try to install
> it.  There are a few interesting things to note:
>
>   1) The difference in the osVersion being checked for ('linux') vs.
> what mine is, ('linux-gnu').  This would cause the 'GL' option to be
> taken, is that right?
>
>   2) I don't understand why the debugger here -- the Message not being
> understood is for class BlockClosure and its selector is a
> single-character String of character 0.  I can print the first line of
> code but restarting the method did not help, same error, so it appears
> to be a stack corruption of some kind..
>
>       ** Oh Wait **
>   -- So I just restarted the method and *stepped* through it, it
> correctly evaluated "Smalltalk osVersion = 'linux' and then it appears
> there is some kind of other hidden block or character in this method,
> see TweakCore-debugger2.png.  At the bottom, that little blue square
> is the "highlight" and it blows up.
>     So I simply removed that, resaved the method and proceed, and then
> I got "External Module not Found" and I was able to paste that stack
> (see below).
>
> So, trying one more time, I changed that method to eliminate the
> hidden character and also to compare to 'linux-gnu' but I still got a
> similar error.
>
> So I need to install something on my linux first?  Sorry, I'm kind of
> a neophyte with this..  :)
>
> Thanks,
>   Chris
>
>
>
>
>
>
> Error: External module not found
> 6 March 2013 4:34:00.764 pm
>
> VM: unix - Smalltalk
> Image: Squeak4.4 [latest update: #12327]
>
> SecurityManager state:
> Restricted: false
> FileAccess: true
> SocketAccess: true
> Working Dir /home/cmm/Chris/development/Squeak
> Trusted Dir /home/cmm/Chris/development/Squeak/secure
> Untrusted Dir /home/cmm/Chris/development/Squeak/My Squeak
>
> OGLUnixX11LE(Object)>>error:
>         Receiver: an OGLUnixX11LE
>         Arguments and temporary variables:
>                 aString:        'External module not found'
>         Receiver's instance variables:
>                 handle:         0
>                 bufRect:        1 at 1 corner: 301 at 201
>                 glExt:  a *OGLExtManager
>                 extensions:     nil
>                 frontFace:      2305
>                 maxPortalDepth:         5
>                 changeTexture:  true
>                 test:   false
>                 timeStamp:      0
>                 formManager:    nil
>                 textureManager:         an OGLTextureManager
>                 fontManager:    an OGLFontManager
>                 shaderManager:  an OGLShaderManager
>                 glListRegistry:         a WeakIdentityKeyDictionary()
>                 isMirror:       false
>                 inPortal3D:     false
>                 camera:         nil
>                 forceWire:      false
>                 numVtx:         nil
>                 numPrims:       nil
>                 inGLBlock:      false
>                 distance:       nil
>                 harness:        nil
>                 eventPointer:   nil
>                 avatar:         nil
>                 forcePick:      false
>                 forceHilite:    nil
>                 suppressPortals:        false
>                 noSwap:         false
>                 fogOn:  false
>                 transparency:   1.0
>                 matrixStack:    nil
>                 portalDepth:    0
>                 bufferObjects:  a Dictionary()
>
> OGLUnixX11LE(Object)>>externalCallFailed
>         Receiver: an OGLUnixX11LE
>         Arguments and temporary variables:
>                 errCode:        15
>         Receiver's instance variables:
>                 handle:         0
>                 bufRect:        1 at 1 corner: 301 at 201
>                 glExt:  a *OGLExtManager
>                 extensions:     nil
>                 frontFace:      2305
>                 maxPortalDepth:         5
>                 changeTexture:  true
>                 test:   false
>                 timeStamp:      0
>                 formManager:    nil
>                 textureManager:         an OGLTextureManager
>                 fontManager:    an OGLFontManager
>                 shaderManager:  an OGLShaderManager
>                 glListRegistry:         a WeakIdentityKeyDictionary()
>                 isMirror:       false
>                 inPortal3D:     false
>                 camera:         nil
>                 forceWire:      false
>                 numVtx:         nil
>                 numPrims:       nil
>                 inGLBlock:      false
>                 distance:       nil
>                 harness:        nil
>                 eventPointer:   nil
>                 avatar:         nil
>                 forcePick:      false
>                 forceHilite:    nil
>                 suppressPortals:        false
>                 noSwap:         false
>                 fogOn:  false
>                 transparency:   1.0
>                 matrixStack:    nil
>                 portalDepth:    0
>                 bufferObjects:  a Dictionary()
>
> OGLUnixX11LE(OpenGL)>>glClearColor:with:with:with:
>         Receiver: an OGLUnixX11LE
>         Arguments and temporary variables:
>                 red:    0.0
>                 green:  0.0
>                 blue:   0.0
>                 alpha:  0.0
>         Receiver's instance variables:
>                 handle:         0
>                 bufRect:        1 at 1 corner: 301 at 201
>                 glExt:  a *OGLExtManager
>                 extensions:     nil
>                 frontFace:      2305
>                 maxPortalDepth:         5
>                 changeTexture:  true
>                 test:   false
>                 timeStamp:      0
>                 formManager:    nil
>                 textureManager:         an OGLTextureManager
>                 fontManager:    an OGLFontManager
>                 shaderManager:  an OGLShaderManager
>                 glListRegistry:         a WeakIdentityKeyDictionary()
>                 isMirror:       false
>                 inPortal3D:     false
>                 camera:         nil
>                 forceWire:      false
>                 numVtx:         nil
>                 numPrims:       nil
>                 inGLBlock:      false
>                 distance:       nil
>                 harness:        nil
>                 eventPointer:   nil
>                 avatar:         nil
>                 forcePick:      false
>                 forceHilite:    nil
>                 suppressPortals:        false
>                 noSwap:         false
>                 fogOn:  false
>                 transparency:   1.0
>                 matrixStack:    nil
>                 portalDepth:    0
>                 bufferObjects:  a Dictionary()
>
> MyOGLPlayer5>>glRenderOn:
>         Receiver: MyOGLPlayer5[Wrinkle1's oglPlayer]
>         Arguments and temporary variables:
>                 ogl:    an OGLUnixX11LE
>                 dx:     300.0
>                 dy:     200.0
>                 scaledLoc:      nil
>                 rotLoc:         nil
>                 col1Loc:        nil
>                 col2Loc:        nil
>         Receiver's instance variables:
>                 myProperties:   an IdentityDictionary(#col1Factor->a
> Vector4(0.0 1.0
> 1.0 1.0) #co...etc...
>                 myScripts:      {TickMessageSend(#onTick ->
> MyOGLPlayer5[Wrinkle1's
> oglPlayer]) . As...etc...
>                 myEventMap:     an IdentityDictionary(#anOGLshaderr->a
> WeakArray(AsyncScriptMessage...etc...
>                 myCostume:      a
> CPrimitiveCostume[MyOGLPlayer5[Wrinkle1's oglPlayer]]
>                 myPlayer:       nil
>                 opengl:         an OGLUnixX11LE
>
> MyOGLPlayer5(COpenGLPlayer)>>drawOn:in:
>         Receiver: MyOGLPlayer5[Wrinkle1's oglPlayer]
>         Arguments and temporary variables:
>                 aCanvas:        a CTransformCanvas on: Form(290x168x32)
>                 drawingBounds:  0 at 0 corner: 300 at 200
>                 myRect:         1 at 1 corner: 301 at 201
>         Receiver's instance variables:
>                 myProperties:   an IdentityDictionary(#col1Factor->a
> Vector4(0.0 1.0
> 1.0 1.0) #co...etc...
>                 myScripts:      {TickMessageSend(#onTick ->
> MyOGLPlayer5[Wrinkle1's
> oglPlayer]) . As...etc...
>                 myEventMap:     an IdentityDictionary(#anOGLshaderr->a
> WeakArray(AsyncScriptMessage...etc...
>                 myCostume:      a
> CPrimitiveCostume[MyOGLPlayer5[Wrinkle1's oglPlayer]]
>                 myPlayer:       nil
>                 opengl:         an OGLUnixX11LE
>
> [] in CPrimitiveCostume>>drawOn:
>         Receiver: a CPrimitiveCostume[MyOGLPlayer5[Wrinkle1's oglPlayer]]
>         Arguments and temporary variables:
>                 aCanvas:        a CTransformCanvas on: Form(290x168x32)
>                 box:    0 at 0 corner: 300 at 200
>         Receiver's instance variables:
>                 container:      a CPrimitiveCostume[Wrinkle1]
>                 contents:       #()
>                 bounds:         0 at 0 corner: 300 at 200
>                 fill:   CostumeFill
>                 border:         NoBorder
>                 flags:  544
>                 properties:     an IdentityDictionary(#layoutProperties->a
> CLayoutProperties #playe...etc...
>
> BlockClosure>>ensure:
>         Receiver: [closure] in CPrimitiveCostume>>drawOn:
>         Arguments and temporary variables:
>                 aBlock:         [closure] in CPrimitiveCostume>>drawOn:
>                 complete:       nil
>                 returnValue:    nil
>         Receiver's instance variables:
>                 outerContext:   CPrimitiveCostume>>drawOn:
>                 startpc:        122
>                 numArgs:        0
>
> CPrimitiveCostume>>drawOn:
>         Receiver: a CPrimitiveCostume[MyOGLPlayer5[Wrinkle1's oglPlayer]]
>         Arguments and temporary variables:
>                 aCanvas:        a CTransformCanvas on: Form(290x168x32)
>                 box:    0 at 0 corner: 300 at 200
>         Receiver's instance variables:
>                 container:      a CPrimitiveCostume[Wrinkle1]
>                 contents:       #()
>                 bounds:         0 at 0 corner: 300 at 200
>                 fill:   CostumeFill
>                 border:         NoBorder
>                 flags:  544
>                 properties:     an IdentityDictionary(#layoutProperties->a
> CLayoutProperties #playe...etc...
>
> [] in [] in CPrimitiveCostume>>fullDrawOn:
>         Receiver: a CPrimitiveCostume[MyOGLPlayer5[Wrinkle1's oglPlayer]]
>         Arguments and temporary variables:
> <<error during printing>
>         Receiver's instance variables:
>                 container:      a CPrimitiveCostume[Wrinkle1]
>                 contents:       #()
>                 bounds:         0 at 0 corner: 300 at 200
>                 fill:   CostumeFill
>                 border:         NoBorder
>                 flags:  544
>                 properties:     an IdentityDictionary(#layoutProperties->a
> CLayoutProperties #playe...etc...
>
> CTransformCanvas>>roundCornersOf:in:during:
>         Receiver: a CTransformCanvas on: Form(290x168x32)
>         Arguments and temporary variables:
>                 aMorph:         a
> CPrimitiveCostume[MyOGLPlayer5[Wrinkle1's oglPlayer]]
>                 bounds:         0 at 0 corner: 300 at 200
>                 aBlock:         [closure] in [] in
> CPrimitiveCostume>>fullDrawOn:
>         Receiver's instance variables:
>                 target:         nil
>                 filterSelector:         nil
>                 origin:         0 at 0
>                 clipRect:       0 at 0 corner: 288 at 166
>                 form:   Form(290x168x32)
>                 port:   a GrafPort
>                 shadowColor:    nil
>                 backup:         a CTransformCanvas on: Form(290x168x32)
>                 transform:      a CIdentityTransform
>                 maskCanvas:     nil
>                 forceWarp:      true
>                 warpTransform:  nil
>                 font:   nil
>                 fontColor:      nil
>                 fontChanged:    nil
>                 lastLinePen:    nil
>
> [] in CPrimitiveCostume>>fullDrawOn:
>         Receiver: a CPrimitiveCostume[MyOGLPlayer5[Wrinkle1's oglPlayer]]
>         Arguments and temporary variables:
> <<error during printing>
>         Receiver's instance variables:
>                 container:      a CPrimitiveCostume[Wrinkle1]
>                 contents:       #()
>                 bounds:         0 at 0 corner: 300 at 200
>                 fill:   CostumeFill
>                 border:         NoBorder
>                 flags:  544
>                 properties:     an IdentityDictionary(#layoutProperties->a
> CLayoutProperties #playe...etc...
>
> CTransformCanvas>>cache:using:during:
>         Receiver: a CTransformCanvas on: Form(290x168x32)
>         Arguments and temporary variables:
>                 aRectangle:     0 at 0 corner: 300 at 200
>                 aCache:         nil
>                 aBlock:         [closure] in CPrimitiveCostume>>fullDrawOn:
>         Receiver's instance variables:
>                 target:         nil
>                 filterSelector:         nil
>                 origin:         0 at 0
>                 clipRect:       0 at 0 corner: 288 at 166
>                 form:   Form(290x168x32)
>                 port:   a GrafPort
>                 shadowColor:    nil
>                 backup:         a CTransformCanvas on: Form(290x168x32)
>                 transform:      a CIdentityTransform
>                 maskCanvas:     nil
>                 forceWarp:      true
>                 warpTransform:  nil
>                 font:   nil
>                 fontColor:      nil
>                 fontChanged:    nil
>                 lastLinePen:    nil
>
> CPrimitiveCostume>>fullDrawOn:
>         Receiver: a CPrimitiveCostume[MyOGLPlayer5[Wrinkle1's oglPlayer]]
>         Arguments and temporary variables:
>                 aCanvas:        a CTransformCanvas on: Form(290x168x32)
>                 tfm:    COffsetTransform(0 at 0)
>                 box:    {0 at 0 corner: 300 at 200}
>         Receiver's instance variables:
>                 container:      a CPrimitiveCostume[Wrinkle1]
>                 contents:       #()
>                 bounds:         0 at 0 corner: 300 at 200
>                 fill:   CostumeFill
>                 border:         NoBorder
>                 flags:  544
>                 properties:     an IdentityDictionary(#layoutProperties->a
> CLayoutProperties #playe...etc...
>
> CPrimitiveCostume>>drawContentsOn:
>         Receiver: a CPrimitiveCostume[Wrinkle1]
>         Arguments and temporary variables:
>                 aCanvas:        a CTransformCanvas on: Form(290x168x32)
>                 i:      1
>                 iLimiT:         6
>         Receiver's instance variables:
>                 container:      nil
>                 contents:       {a
> CPrimitiveCostume[MyOGLPlayer5[Wrinkle1's oglPlayer]]
> . a CPrimiti...etc...
>                 bounds:         0 at 0 corner: 288 at 166
>                 fill:   NoFill
>                 border:         NoBorder
>                 flags:  608
>                 properties:     an
> IdentityDictionary(#elements->PlayerCollection(MyOGLPlayer5[Wrin...etc...
>
> [] in CPrimitiveCostume>>localFullDrawOn:
>         Receiver: a CPrimitiveCostume[Wrinkle1]
>         Arguments and temporary variables:
> <<error during printing>
>         Receiver's instance variables:
>                 container:      nil
>                 contents:       {a
> CPrimitiveCostume[MyOGLPlayer5[Wrinkle1's oglPlayer]]
> . a CPrimiti...etc...
>                 bounds:         0 at 0 corner: 288 at 166
>                 fill:   NoFill
>                 border:         NoBorder
>                 flags:  608
>                 properties:     an
> IdentityDictionary(#elements->PlayerCollection(MyOGLPlayer5[Wrin...etc...
>
> CTransformCanvas>>clipBy:during:
>         Receiver: a CTransformCanvas on: Form(290x168x32)
>         Arguments and temporary variables:
>                 aClipShape:     0 at 0 corner: 288 at 166
>                 aBlock:         [closure] in
> CPrimitiveCostume>>localFullDrawOn:
>         Receiver's instance variables:
>                 target:         nil
>                 filterSelector:         nil
>                 origin:         0 at 0
>                 clipRect:       0 at 0 corner: 288 at 166
>                 form:   Form(290x168x32)
>                 port:   a GrafPort
>                 shadowColor:    nil
>                 backup:         a CTransformCanvas on: Form(290x168x32)
>                 transform:      a CIdentityTransform
>                 maskCanvas:     nil
>                 forceWarp:      true
>                 warpTransform:  nil
>                 font:   nil
>                 fontColor:      nil
>                 fontChanged:    nil
>                 lastLinePen:    nil
>
> CPrimitiveCostume>>localFullDrawOn:
>         Receiver: a CPrimitiveCostume[Wrinkle1]
>         Arguments and temporary variables:
>                 transformedCanvas:      a CTransformCanvas on:
> Form(290x168x32)
>                 highlights:     #()
>                 index:  1
>                 hl:     nil
>                 i:      nil
>                 iLimiT:         nil
>         Receiver's instance variables:
>                 container:      nil
>                 contents:       {a
> CPrimitiveCostume[MyOGLPlayer5[Wrinkle1's oglPlayer]]
> . a CPrimiti...etc...
>                 bounds:         0 at 0 corner: 288 at 166
>                 fill:   NoFill
>                 border:         NoBorder
>                 flags:  608
>                 properties:     an
> IdentityDictionary(#elements->PlayerCollection(MyOGLPlayer5[Wrin...etc...
>
> [] in FarRef>>syncSend:withArguments:
>         Receiver: a CPrimitiveCostume[Wrinkle1]
>         Arguments and temporary variables:
> <<error during printing>
>         Receiver's instance variables:
>                 container:      nil
>                 contents:       {a
> CPrimitiveCostume[MyOGLPlayer5[Wrinkle1's oglPlayer]]
> . a CPrimiti...etc...
>                 bounds:         0 at 0 corner: 288 at 166
>                 fill:   NoFill
>                 border:         NoBorder
>                 flags:  608
>                 properties:     an
> IdentityDictionary(#elements->PlayerCollection(MyOGLPlayer5[Wrin...etc...
>
> [] in Process>>activateIsland:during:
>         Receiver: a Process in nil
>         Arguments and temporary variables:
> <<error during printing>
>         Receiver's instance variables:
>                 nextLink:       nil
>                 suspendedContext:       nil
>                 priority:       40
>                 myList:         nil
>                 threadId:       nil
>                 name:   nil
>                 island:         an Island(Squeak)
>                 env:    nil
>
>
> --- The full stack ---
> OGLUnixX11LE(Object)>>error:
> OGLUnixX11LE(Object)>>externalCallFailed
> OGLUnixX11LE(OpenGL)>>glClearColor:with:with:with:
> MyOGLPlayer5>>glRenderOn:
> MyOGLPlayer5(COpenGLPlayer)>>drawOn:in:
> [] in CPrimitiveCostume>>drawOn:
> BlockClosure>>ensure:
> CPrimitiveCostume>>drawOn:
> [] in [] in CPrimitiveCostume>>fullDrawOn:
> CTransformCanvas>>roundCornersOf:in:during:
> [] in CPrimitiveCostume>>fullDrawOn:
> CTransformCanvas>>cache:using:during:
> CPrimitiveCostume>>fullDrawOn:
> CPrimitiveCostume>>drawContentsOn:
> [] in CPrimitiveCostume>>localFullDrawOn:
> CTransformCanvas>>clipBy:during:
> CPrimitiveCostume>>localFullDrawOn:
> [] in FarRef>>syncSend:withArguments:
> [] in Process>>activateIsland:during:
>  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> BlockClosure>>ensure:
> Process>>activateIsland:during:
> [] in Process>>activateIslandWithEscape:during:
> BlockClosure>>on:do:
> Process>>activateIslandWithEscape:during:
> FarRef>>syncSend:withArguments:
> FarRef>>doesNotUnderstand:
> CProjectMorph>>redraw
> CProjectMorph>>extent:
> CProjectMorph(Morph)>>bounds:
> CProjectMorph(Morph)>>layoutInBounds:
> CProjectMorph(Morph)>>layoutProportionallyIn:
> [] in ProportionalLayout>>layout:in:
> Array(SequenceableCollection)>>do:
> SystemWindow(Morph)>>submorphsDo:
> ProportionalLayout>>layout:in:
> SystemWindow(Morph)>>doLayoutIn:
> [] in SystemWindow(Morph)>>fullBounds
> BlockClosure>>on:do:
> SystemWindow(Morph)>>fullBounds
> CProjectMorph>>setExtentFromWorld
> CProjectMorph>>newProject:
> CProjectMorph class>>open:
> UndefinedObject>>DoIt
> Compiler>>evaluate:in:to:notifying:ifFail:logged:
> Compiler class>>evaluate:for:notifying:logged:
> Compiler class>>evaluate:for:logged:
> Compiler class>>evaluate:logged:
> [] in [] in MultiByteFileStream(PositionableStream)>>fileInAnnouncing:
> BlockClosure>>on:do:
> [] in MultiByteFileStream(PositionableStream)>>fileInAnnouncing:
> [] in [] in MorphicUIManager>>displayProgress:at:from:to:during:
> BlockClosure>>on:do:
> [] in MorphicUIManager>>displayProgress:at:from:to:during:
> BlockClosure>>ensure:
> MorphicUIManager>>displayProgress:at:from:to:during:
> ProgressInitiationException>>defaultResumeValue
> ProgressInitiationException(Exception)>>resume
> ProgressInitiationException>>defaultAction
> UndefinedObject>>handleSignal:
> MethodContext(ContextPart)>>handleSignal:
> MethodContext(ContextPart)>>handleSignal:
> -- and more not shown --
>
> On Wed, Mar 6, 2013 at 5:11 AM, Nikolay Suslov <nsuslovi at gmail.com> wrote:
> > Chris,
> >
> > I have checked several times with loading TweakCore from SqueakMap and
> for
> > me it just works without any problems. I used the trunk image from
> Jenkins
> > and the Squeak4.4-12327 image.
> > Please, could you say more about errors you have notice, in what
> > configuration?
> >
> > Regards,
> > Nikolay
> >
> >
> > On Wed, Mar 6, 2013 at 2:01 AM, Nikolay Suslov <nsuslovi at gmail.com>
> wrote:
> >>
> >> Hello Chris,
> >>
> >>
> >> On Wed, Mar 6, 2013 at 1:35 AM, Chris Muller <asqueaker at gmail.com>
> wrote:
> >>>
> >>> I made new Community-Supported catalog entries for both CroquetGL and
> >>> TweakCore, with Croquet depending on FFI and TweakCore depending on
> >>> CroquetGL.
> >>>
> >>
> >> That's great, thanks.
> >>
> >>>
> >>> But I did get a debugger upon trying to install TweakCore:
> >>>
> >>>   (shoot I cannot even paste the stack trace because it seems to be
> >>> loaded with character value: 0's)...  :(
> >>>
> >>> These are mega-cool packages, can you check it Nikolay?
> >>
> >>
> >>
> >> I'll check.
> >>
> >> Regards,
> >> Nikolay
> >>
> >>
> >>>
> >>>
> >>> On Tue, Mar 5, 2013 at 3:49 AM, H. Hirzel <hannes.hirzel at gmail.com>
> >>> wrote:
> >>> > Thank you Nikolay for making an updated installation script available
> >>> > for Squeak 4.4. Would it be possible to have a SqueakMap entry for
> it?
> >>> >  Chris M?
> >>> >
> >>> > Regards
> >>> > Hannes
> >>> >
> >>> > On 3/5/13, Casey Ransberger <casey.obrien.r at gmail.com> wrote:
> >>> >> Nice!
> >>> >>
> >>> >> On Mon, Mar 4, 2013 at 7:38 PM, Ken G. Brown <kbrown at mac.com>
> wrote:
> >>> >>
> >>> >>> Yay! Good work!
> >>> >>> It would be great to have Tweak listed in SqueakMap.
> >>> >>>
> >>> >>> Ken G. Brown
> >>> >>>
> >>> >>> On 2013-03-02, at 3:01 AM, Nikolay Suslov wrote:
> >>> >>>
> >>> >>> Hello,
> >>> >>>
> >>> >>> I have successfully proceeded in running TweakCore on the recent
> >>> >>> Squeak
> >>> >>> 4.4 trunk image (from Jenkins).
> >>> >>> And one of the famous existed applications developed in Tweak is
> the
> >>> >>> OpenGL procedural textures generator by David Faught.
> >>> >>> I make it also loadable to the current Squeak.
> >>> >>>
> >>> >>> You could download the ready to run image from here:
> >>> >>> http://krestianstvo.org/TweakCoreOpenGL-squeak44.zip
> >>> >>> or
> >>> >>> execute in the workspace in own image:
> >>> >>>
> >>> >>> "1. Load FFI"
> >>> >>> (Installer repository: 'http://source.squeak.org/FFI'
> >>> >>> )
> >>> >>>     install: 'FFI-Pools';
> >>> >>>     install: 'FFI-Kernel';
> >>> >>>     install: 'FFI-Tests'..
> >>> >>>
> >>> >>> "2. Load CroquetGL "
> >>> >>> (Installer repository: 'http://www.squeaksource.com/CroquetGL')
> >>> >>>     install: '3DTransform';
> >>> >>>     install: 'OpenGL-Pools';
> >>> >>>     install: 'OpenGL-Core'.
> >>> >>>
> >>> >>> "3. Load TweakCore and Procedural textures application for Tweak"
> >>> >>> (Installer repository: 'http://sdk.krestianstvo.org/sdk/inbox')
> >>> >>>     install: 'tweakcore';
> >>> >>>     install: 'Tweak-OpenGL-sn.3'.
> >>> >>>
> >>> >>> "4. Set the default settings in Tweak"
> >>> >>> CDefaultWidgetLibrary setDefaultSettings.
> >>> >>>
> >>> >>> "5. Run one of two examples"
> >>> >>> CProjectMorph open: Wrinkle1.
> >>> >>> "or"
> >>> >>> CProjectMorph open: Wrinkle2.
> >>> >>>
> >>> >>> The attached screenshot shows the running application.
> >>> >>>
> >>> >>> Regards,
> >>> >>> Nikolay
> >>> >>>
> >>> >>>
> >>> >>>
> >>> >>>
> >>> >>>
> >>> >>
> >>> >>
> >>> >> --
> >>> >> Casey Ransberger
> >>> >>
> >>> >
> >>>
> >>
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20130308/c59528e2/attachment.htm


More information about the Squeak-dev mailing list