[Vm-dev] Squeak 5 on FreeBSD amd64 (semi-success)

gettimothy gettimothy at zoho.com
Sun May 20 07:31:22 UTC 2018


After some hacking, I can invoke squeak and get some version info



... at dpdev1:~/usr/src/opensmalltalk-vm/products/sqcogspur64linuxht/lib/squeak/5.0 % ./squeak --version

5.0-  Sun May 20 06:49:54 UTC 2018 cc [Production Spur 64-bit VM]

CoInterpreter VMMaker.oscog-eem.2380 uuid: c76d37e1-445c-4e34-9796-fc836dfd50c9 May 20 2018

StackToRegisterMappingCogit VMMaker.oscog-eem.2380 uuid: c76d37e1-445c-4e34-9796-fc836dfd50c9 May 20 2018

VM:  $Date$

Date: $CommitHash$ CommitHash: $Rev$

Plugins: $URL$ $Rev$

FreeBSD dpdev1 11.1-RELEASE-p4 FreeBSD 11.1-RELEASE-p4 #0: Tue Nov 14 06:12:40 UTC 2017     root at amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64

plugin path: /usr/home/gettimothy/usr/src/opensmalltalk-vm/products/sqcogspur64linuxht/lib/squeak/5.0/ [default: /usr/home/gettimothy/usr/src/opensmalltalk-vm/products/sqcogspur64linuxht/lib/squeak/5.0/]



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 





git clone http://www.github.com/OpenSmalltalk/opensmalltalk-v

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/gettimothy/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

gettimothy at 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 anyway (you never know!)

../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)




Why its looking for a display driver with the -headless flag ? I don't know.






Summary, this is worth pursing. I will hack at it as I get time. 





cheers,



tty





-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20180520/252e60d3/attachment-0001.html>


More information about the Vm-dev mailing list