On 16 Oct 2012, at 16:13, David T. Lewis <lewis@mail.msen.com> wrote:
If you don't want to do it in the VM, you can do it with a shell script. Just make a 512 byte file that starts with the shebang line that you want to use, prepend it to the saved image file (with /bin/cat) and set file mode executable (chmod).
Well, I tried on my Ubuntu server, and I could't get it to work. I have a Pharo 2.0 image and a little test script called run.st $ cat run.st NonInteractiveTranscript stdout install. ! | webSocket | webSocket := ZnWebSocket to: 'ws://localhost:8080/ws-echo'. [ webSocket sendMessage: 'Pharo Smalltalk using Zinc WebSockets'. Transcript show: webSocket readMessage; cr ] ensure: [ webSocket close ]. ! Smalltalk quitPrimitive. I wrote another small Smalltalk script to generate the header (just to be sure) $ cat write-header.st 'header.bin' asFileReference writeStreamDo: [ :stream | | line | line := '#!!/home/ubuntu/smalltalk/bin/CogVM -vm-display-null -vm-sound-null -plugins /home/ubuntu/smalltalk/bin/'. stream binary; nextPutAll: line asByteArray; nextPut: 10; nextPutAll: (ByteArray new: 511 - line size) ]. ! Smalltalk quitPrimitive. Now I have a 512 byte header that looks like this $ hexdump -C header.bin 00000000 23 21 2f 68 6f 6d 65 2f 75 62 75 6e 74 75 2f 73 |#!/home/ubuntu/s| 00000010 6d 61 6c 6c 74 61 6c 6b 2f 62 69 6e 2f 43 6f 67 |malltalk/bin/Cog| 00000020 56 4d 20 2d 76 6d 2d 64 69 73 70 6c 61 79 2d 6e |VM -vm-display-n| 00000030 75 6c 6c 20 2d 76 6d 2d 73 6f 75 6e 64 2d 6e 75 |ull -vm-sound-nu| 00000040 6c 6c 20 2d 70 6c 75 67 69 6e 73 20 2f 68 6f 6d |ll -plugins /hom| 00000050 65 2f 75 62 75 6e 74 75 2f 73 6d 61 6c 6c 74 61 |e/ubuntu/smallta| 00000060 6c 6b 2f 62 69 6e 2f 0a 00 00 00 00 00 00 00 00 |lk/bin/.........| 00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000200 Then I concatenate the header and the working image cat header.bin zinc.image > magic.image and I copy the changes and make the image executable. The image still works $ /home/ubuntu/smalltalk/bin/CogVM -vm-display-null -vm-sound-null -plugins /home/ubuntu/smalltalk/bin/ magic.image run.st Pharo Smalltalk using Zinc WebSockets But not when run directly $ ./magic.image Segmentation fault (core dumped) Any hints ? Thx, Sven -- Sven Van Caekenberghe http://stfx.eu Smalltalk is the Red Pill