[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