Feeds:
Posts
Comments
After some hacking, I can invoke squeak and get some version info
As I get time, I will continue hacking on this and as time permits, I will work with whoever is interested.
Process I am following is as follows
cp -Rv build.linux64x64/ build.freebsd64x64
cd build.freebsd64x64/squeak.cog.spur/
[create backup copies of original plugins.* and build/mvm
cp plugins.int plugins.int.orig ; cp plugins.ext plugins.ext.orig
cp build/mvm ./
[hack,baby hack!]
reduce plugins.int to minimal (I blogged on this a couple of years ago: )
INTERNAL_PLUGINS = \
AsynchFilePlugin \
B2DPlugin \
BitBltPlugin \
SocketPlugin
after some hacking, I reduced plugins.ext to this:
EXTERNAL_PLUGINS = \
B3DAcceleratorPlugin \
SqueakFFIPrims \
LocalePlugin \
UnicodePlugin \
UnixOSProcessPlugin \
UUIDPlugin \
ImmX11Plugin \
XDisplayControlPlugin
modified mvm to this (note the FreeBSD addition to the case statement, the addition of libiconv and the –without–vm-sound-FOO)
#!/usr/bin/env bash
set -e
# Spur VM with VM profiler and threaded heartbeat
INSTALLDIR=sqcogspur64linuxht
OPT=”-g -O2 -fwrapv -DNDEBUG -DDEBUGVM=0 -D_FILE_OFFSET_BITS=64″
CFLAGS=”$OPT -msse2 -DCOGMTVM=0″
LIBS=””
LDFLAGS=””
case $(uname -s) in
  OpenBSD)
           CFLAGS=”$CFLAGS -I/usr/local/include”
           LIBS=”$LIBS -lexecinfo”
           LDFLAGS=”$LDFLAGS -L/usr/local/lib”
           ;;
  FreeBSD)
           CFLAGS=”$CFLAGS -I/usr/local/include”
           LIBS=”$LIBS -lexecinfo -liconv”
           LDFLAGS=”$LDFLAGS -L/usr/local/lib”
           ;;
esac
if [ $# -ge 1 ]; then
        INSTALLDIR=”$1″; shift
fi
echo -n “clean? “
read a
case $a in
n|no|N|NO)      echo “ok but this isn’t safe!!”;;
*)                      test -f Makefile && make reallyclean
esac
test -f plugins.int || (test -f ../plugins.int && cp -p ../plugins.int . || cp -p ../../plugins.int .)
test -f plugins.ext || (test -f ../plugins.ext && cp -p ../plugins.ext . || cp -p ../../plugins.ext .)
test -f config.h || ../../../platforms/unix/config/configure –without-npsqueak \
                –with-vmversion=5.0 \
                –with-src=spur64src \
                –without-vm-sound-MacOSX \
                –without-vm-sound-Sun \
                –without-vm-sound-custom \
                –without-vm-sound-ALSA \
        TARGET_ARCH=”-m64″ \
        CFLAGS=”$CFLAGS” \
        LIBS=”$LIBS” \
        LDFLAGS=”$LDFLAGS”
rm -f vm/sqUnixMain.o # nuke version info
rm -rf ../../../products/$INSTALLDIR
# prefer make install prefix=`readlink -f \`pwd\`/../../../products/$INSTALLDIR`
# but older linux readlinks lack the -f flag
make install-squeak install-plugins prefix=`(cd ../../../;pwd)`/products/$INSTALLDIR 2>&1 | tee LOG
./mvm  (it will error out trying to build sound plugins even though I put those –without-vm-sound-foo thingies in)
Stop.
make[1]: stopped in /usr/home/timmy/usr/src/opensmalltalk-vm/build.freebsd64x64/squeak.cog.spur/build/vm-sound-ALSA
edit the Makefile and search for “sound”
modify LIBS
LIBS=           -luuid -lutil -lpulse-simple -lasound  -lm  -lexecinfo -liconv
becomes:
LIBS=           -luuid -lutil  -lm  -lexecinfo -liconv
modify PLUGINS_LA
PLUGINS_LA      =  vm-display-X11${la} vm-display-null${la} vm-sound-ALSA${la} vm-sound-NAS${la} vm-sound-OSS${la} vm-sound-null${la} vm-sound-pulse${la} B3DAcceleratorPlugin${la} SqueakFFIPrims${la} LocalePlugin${la} UnixOSProcessPlugin${la} UUIDPlugin${la} ImmX11Plugin${la} XDisplayControlPlugin${la}
becomes :
PLUGINS_LA      =  vm-display-X11${la} vm-display-null${la}  B3DAcceleratorPlugin${la} SqueakFFIPrims${la} LocalePlugin${la} UnixOSProcessPlugin${la} UUIDPlugin${la} ImmX11Plugin${la} XDisplayControlPlugin${la}
(Why are the –without-vm-sound–… directives ignored?)
type make.
it compiles.
but the ‘getversion’ program barfs a bit (probably UUID problemvi M):
./getversion
VM_NICKNAME: Cog Spur VM
VIRTUAL_MACHINE_NICKNAME: Cog Spur Virtual Machine
VM_MONIKER: CogSpurVM
VM_VERSION: 5.0
VM_MAJOR: 5
VM_MINOR: 0
VM_RELEASE: $CommitHash$
VERSION_TAG: 5.0-$CommitHash$
VERSION_NUMBER: 5.0.$CommitHash$
COMMIT_HASH:
NICKNAME: Cog
OBJMEM: Spur
DEFAULT_IMAGE_NAME: squeak.image
timmy@dpdev1:~/usr/src/opensmalltalk-vm/build.freebsd64x64/squeak.cog.spur/build %
and the resulting products output reflects that:
tree sqcogspur64linuxht/
sqcogspur64linuxht/
|– bin
|   `– squeak
|– lib
|   `– squeak
|       `– 5.0-$CommitHash$
|           `– squeak
`– squeak
hack some more, renaming the lib/squeak/5.0
mv 5.0-\$CommitHash\$/ 5.0
check the executable:
file 5.0/squeak 5.0/squeak: ELF 64-bit LSB executable, x86-64, version 1 (FreeBSD), dynamically linked, interpreter /libexec/ld-elf.so.1, for FreeBSD 11.1, FreeBSD-style, not stripped
invoke it and check version (outputs as at the beginning of the post)
try to run it..
../opensmalltalk-vm/products/sqcogspur64linuxht/lib/squeak/5.0/squeak Squeak5.1-16548-64bit.image -headless
squeak: could not find any display driver
Abort (core dumped)
Advertisements

Tobias Pape solved the problem here: http://forum.world.st/unregistered-not-called-on-expired-session-td5070103.html#a5070551

 

TL;DR

Add class side method to

TBSBootstrapExample class >>methodNamed: aSymbol
^ self >> aSymbol

The “>>” message is from Behavior…take the time to look it up, its a great one for the toolbox.

 

Add instance side method to:

 

CompiledMethod >sourceCode
^ self getSource

 

My hunch is that this is a pharo thing that does not port to Seaside until now.

 

 

Squeak Help rant

I am currently writing some Help for the PostgresV3 package and I am reminded why I dislike the Squeak Help infrastructure.

In no particular order, my beefs:

  1. I am coding Help instead of Writing Help. I.e.
  2. I am thinking about Coding instead of thinking about the Subject Matter
  3. (Why did I start using 1700 Writing conventions of capitalizing Odd Words? Nevermind, it is late)
  4. The Help is limited to the Squeak environment.
  5. I cannot use the linux tools: ‘man’ , ‘info’, ’emacs org-mode’ .
  6. The “documents” are small. That is, I am forced into navigating many small pages of text instead of one big page of text.
  7. The Search bar works, and is appreciated.
  8. Navigation depends on the left side tree.
  9. When I click on a sub-topic (with the book icon) there is no content displayed in the content pane.

Rant off.

The DNS lookup problems I was having with my router getting a static i.p  “went away” when I hooked my workstation directly to the modem, configured the workstation for DHCP and then saved the /etc/resolv.conf (which appears to be populated by DHCPCD into a backup file.

 

I then reconfigured the workstation for static-ip, plugged in the router and my workstation to the router and then copied the backup resolv.conf to the /etc/resolv.conf.

 

That solved the problem.

startx — -listen tcp

With Slackware 14.2 X don’t listen no more unless you tell it to.

 

The old routine of …

Local:

xhost +64.233.177.138

telnet 64.233.177.138

 

remote

export DISPLAY=199.16.156.230:0.0

xclock &

doesn’t work out of the box

UNLESS 

you explicitly tell X to listen

In practical terms that means

 

startx

 

becomes

 

startx — -listen tcp

 

 

 

 

 

 

 

debugger after update on left. before update on right

debugger after update on left. before update on right

Method Category browsing

I want this for some Help documentation in CMakeVMMakerSqueak so I can show the end user all the methods in a specific method category.

 

Here is a quick example showing all the methods in the Class CompiledMethod under method category ‘accessing-pragmas & properties’:

 

Browser openBrowserView:((Browser new)
selectSystemCategory: #’Kernel-Methods’;
selectClass: CompiledMethod;
metaClassIndicated: false;
selectMessageCategoryNamed: #’accessing-pragmas & properties’;
selectMessageNamed: nil;
openMessageCatEditString:nil)
label: ‘Message Category Browser (‘, #’Kernel-Classes’ asString, ‘)’.

You can get that view by right-clicking on the method category name and selecting ‘browse’.

I think a wrapper class for this would be useful.