[Vm-dev] Proof of Concept of a pharo cog spur VM to OpenBSD
Christian Kellermann
ckeen at pestilenz.org
Wed Nov 1 08:46:55 UTC 2017
Dear List,
I have managed to successfully build a pharo cog spur VM on the
OpenBSD operating system (http://openbsd.org). I have put up some
patches on a fork of the opensmalltalk-vm github repo:
https://github.com/ckeen/opensmalltalk-vm/tree/OpenBSD_PoC
I habe briefly started current Squeak with it also, but did not
build a specific VM for it.
I would consider this a proof of concept at the moment and would
like to discuss how to get this into the main repo. OpenBSD needs
a couple of changes, all of them pretty minor. Mostly this is due
to different location of include files (errno) or unsupported linker
flags (-lrt) or not included by default search paths (/usr/X11R6/{include,
lib), /usr/local/{include,lib})/
However just hacking them into the mvm script for one machine does
not seem right, are these files generated by something else?
I have also disabled the building of third party components. I am
currently relying on them being installed already by the OS package
manager. If this gets integrated in a real OpenBSD package these
dependencies would be made explicit in the package's meta information.
Also how do you test these VMs? I am a SmallTalk beginner so I am
not yet familiar with the available tooling that's out there.
To reproduce this build on OpenBSD, make sure you compile/install
the resulting binaries into a partition that is mounted with the
OpenBSD specific wxallowed flag (usually /usr/local). Otherwise the
JIT will just cause a segmentation fault as mapping memory writable
and executable at the same time is prohibited by default.
My next planned steps would be:
- Get the needed patches into your repo
- Build all VMs under OpenBSD, once I know how to test those properly
- Propose an update to the outdated OpenBSD squeak package
- Propose a port of Pharo to be included in the OpenBSD ports tree
- Write a plugin for OpenBSD's sndio sound system (Pulse seems to
work but that is usually not installed)
Looking forward to hearing your opinion.
Kind regards,
Christian
P.S.: There is also still some issue with the FFI binding a ByteArray
from libc (i.e. the 'environ' Variable). This fails for two reasons:
LibC is looking for the wrong libc module name ('libc.so.6' instead
of 'libc.so' or more specific to OpenBSD 'libc.so.<major>.<minor>'
for example 'libc.so.90.0'). And then I get an External Allocation
error. I am not sure whether this is a bug in the VM handling 64bits
or in Pharo. I have not yet tested this behaviour with Squeak yet.
--
May you be peaceful, may you live in safety, may you be free from
suffering, and may you live with ease.
More information about the Vm-dev
mailing list