<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<meta content="text/html; charset=UTF-8">
<style type="text/css" style="">
<!--
p
        {margin-top:0;
        margin-bottom:0}
-->
</style>
<div dir="ltr">
<div id="x_divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#000000; font-family:Calibri,Helvetica,sans-serif">
<p>Hi Dave,</p>
<p><br>
</p>
<p>thank you very much!</p>
<p><br>
</p>
<p>The `file` command gave me the hint that I was trying to run a 32-bit squeak on a 64-bit system. Now it works!</p>
<p><br>
</p>
<p>Best,</p>
<p>Christoph</p>
<div id="x_Signature">
<div name="x_divtagdefaultwrapper" style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:; margin:0">
<div><font size="2" color="#808080"></font></div>
</div>
</div>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>Von:</b> Beginners <beginners-bounces@lists.squeakfoundation.org> im Auftrag von David T. Lewis <lewis@mail.msen.com><br>
<b>Gesendet:</b> Dienstag, 29. Oktober 2019 12:56:20<br>
<b>An:</b> A friendly place to get answers to even the most basic questions about Squeak.<br>
<b>Betreff:</b> Re: [Newbies] Running Squeak in a Unix shell</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">Hi Christoph,<br>
<br>
<br>
On Tue, Oct 29, 2019 at 08:27:50AM +0000, Thiede, Christoph wrote:<br>
> Hi Dave,<br>
> <br>
> thank you for the detailed answer!<br>
> <br>
> Actually, WSL is emulating a real unix system and it uses bash, so things like `cowsay Hello world` work indeed.<br>
> <br>
> Is it possible that squeak does not support unix in general, but only certain distributions? It would be very nice to use it from WSL, which is becoming more important on Windows compared to the classic cmd.exe.<br>
> <br>
<br>
The Unix VM for Squeak is portable across a wide range of Unix and<br>
Unix-like systems. But "portable" means different things to different<br>
people. In your case, I think you'll just need to dig into it to find<br>
out what that error message is telling you.<br>
<br>
I can't guess the exact problem, but I am certain that the error message<br>
(squeak: cannot execute binary file: Exec format error) will lead you<br>
to it. It might be the "squeak" shell script, or it might be the<br>
compiled binary VM (probably also called "squeak"), or it might be<br>
something about how it is installed, I don't know. But one way or<br>
another, WSL is trying to tell you that it does not know how to execute<br>
one of those files.<br>
<br>
A command that may be helpful for you to track this down is the Unix<br>
"file" command (for example, "file squeak"). If the file you are testing<br>
with this command is an executable file (such as the compiled VM), the<br>
"file" command will explain what it is. If the "file" command cannot<br>
figure out what the file is, then it probably is not a file that WSL<br>
knows about. <br>
<br>
HTH,<br>
Dave<br>
<br>
<br>
> <br>
> Regarding Travis: I found a few scripts such as <a href="https://github.com/hpi-swa/vivide/blob/master/scripts/prepare_image.sh#L64">
https://github.com/hpi-swa/vivide/blob/master/scripts/prepare_image.sh#L64</a> that are calling Smalltalk as well. Why does that work, I would not assume that each Travis execution environment comes with a display driver, does it?<br>
> <br>
<br>
I don't know, but I would assume the opposiste, that the Travis execution<br>
environment probably does not come with a display driver.<br>
<br>
Dave<br>
<br>
<br>
> <br>
> @Nicola Maybe you will want to have a look at CommandLineToolSet?<br>
> <br>
> <br>
> Best,<br>
> <br>
> Christoph<br>
> <br>
> ________________________________<br>
> Von: Beginners <beginners-bounces@lists.squeakfoundation.org> im Auftrag von David T. Lewis <lewis@mail.msen.com><br>
> Gesendet: Mittwoch, 23. Oktober 2019 03:11:16<br>
> An: A friendly place to get answers to even the most basic questions about Squeak.<br>
> Betreff: Re: [Newbies] Running Squeak in a Unix shell<br>
> <br>
> Hi Christoph,<br>
> <br>
> On Tue, Oct 22, 2019 at 10:41:16PM +0000, Thiede, Christoph wrote:<br>
> > Hi,<br>
> ><br>
> > this a question by a shell noob: How can I use Squeak in a unix shell to run a command such as:<br>
> ><br>
> > ./squeak foo.image bar.st<br>
> ><br>
> > I would like to do this in my WSL shell (Windows Subsystem for Linux) as well as on Travis.<br>
> ><br>
> > WSL says:<br>
> ><br>
> > squeak: cannot execute binary file: Exec format error<br>
> ><br>
> <br>
> The command line that you gave ("./squeak foo.image bar.st") would be<br>
> appropriate on a Unix system (Linux, OS X, or whatever) if you have<br>
> a file called "squeak" in your current directory, and if that file<br>
> is an executable file such as a shell script or a compiled executable.<br>
> <br>
> I am not familiar with WSL, but assuming that it is trying to behave<br>
> like a Unix shell, I would interpret the error message as follows:<br>
> <br>
> - The shell tried to execute the file "./squeak", where the "./"<br>
> portion of the file path means "in the current directory", and "squeak"<br>
> is the name of the file to be executed.<br>
> <br>
> - It found the file, and tried to open it. You did not see a "file<br>
> not found" error, so there actually must be a file called "squeak" in<br>
> your local directory, and the file has execute permissions, so all<br>
> good so far.<br>
> <br>
> - The shell then tried to execute the "squeak" program. This means<br>
> that the shell saw that the file was marked executable, and it asked<br>
> the operating system to "exec" the file (on a Unix system, this will<br>
> fork the shell process and overlay the executable in the new process,<br>
> see <a href="http://man7.org/linux/man-pages/man3/exec.3.html">http://man7.org/linux/man-pages/man3/exec.3.html</a>).<br>
> <br>
> - For some reason, the file could not be executed ("Exec format error").<br>
> <br>
> This suggest to me that the WSL environment did not know how to<br>
> execute the "squeak" file. Maybe it was a compiled binary (such as<br>
> a compiled VM) that the WSL system did not recognize, or maybe WSL<br>
> was not smart enough to figure out how to evaluate a shell script,<br>
> I don't know.<br>
> <br>
> ><br>
> > Travis (without explicit OS setting, so I'm assuming unix as well) says:<br>
> ><br>
> > squeak: could not find any display driver<br>
> <br>
> Travis is probably running on a real Unix system (or Linux, which<br>
> is very similar). Whatever it is, you can safely bet that it does<br>
> not provide a graphical display system such as X11, because a CI<br>
> system such as Travis is intended to run things remotely on a<br>
> server with no graphical user interface. So most likely, you are<br>
> trying to run a VM with graphical display on an operating system<br>
> that does not provide display services.<br>
> <br>
> A Squeak VM will normally try to find a graphical display driver<br>
> unless you explicitly tell it (with a command line option) not to<br>
> do so. If you just run Squeak on a server with no X11 (or similar)<br>
> installed, the VM will try to open a display module, and when it<br>
> fails, it will give you an error message:<br>
> <br>
>     platforms/unix/vm/sqUnixMain.c:      fprintf(stderr, "squeak: could not find any display driver\n");<br>
> <br>
> The solution for this problem is specific to the Unix VM (in other<br>
> words, don't try this on your Windows VM). You can run the VM without<br>
> using an active display by using the '-vm-display-null' command<br>
> line parameter. On a Unix system, run "squeak -help" to see the<br>
> available options.<br>
> <br>
> Thus, if you had a command such as this for running Squeak:<br>
> <br>
>         ./squeak foo.image bar.st<br>
> <br>
> Then you can run it in "headless" mode like this:<br>
> <br>
>         ./squeak -vm-display-null foo.image bar.st<br>
> <br>
> The Unix Squeak VM has loadable VM modules for things like soound<br>
> and the display, so -vm-display-null tells the VM to load the null<br>
> display driver instead of the vm-display-X11 or vm-display-Quartz<br>
> modules.<br>
> <br>
> HTH,<br>
> Dave<br>
> <br>
> <br>
> ><br>
> > To run a script in headless mode, I should not need any graphical output? How can I achieve this? I would greatly appreciate your help!<br>
> ><br>
> ><br>
> > Best,<br>
> ><br>
> > Christoph<br>
> <br>
> > _______________________________________________<br>
> > Beginners mailing list<br>
> > Beginners@lists.squeakfoundation.org<br>
> > <a href="http://lists.squeakfoundation.org/mailman/listinfo/beginners">http://lists.squeakfoundation.org/mailman/listinfo/beginners</a><br>
> <br>
> _______________________________________________<br>
> Beginners mailing list<br>
> Beginners@lists.squeakfoundation.org<br>
> <a href="http://lists.squeakfoundation.org/mailman/listinfo/beginners">http://lists.squeakfoundation.org/mailman/listinfo/beginners</a><br>
<br>
> _______________________________________________<br>
> Beginners mailing list<br>
> Beginners@lists.squeakfoundation.org<br>
> <a href="http://lists.squeakfoundation.org/mailman/listinfo/beginners">http://lists.squeakfoundation.org/mailman/listinfo/beginners</a><br>
<br>
_______________________________________________<br>
Beginners mailing list<br>
Beginners@lists.squeakfoundation.org<br>
<a href="http://lists.squeakfoundation.org/mailman/listinfo/beginners">http://lists.squeakfoundation.org/mailman/listinfo/beginners</a><br>
</div>
</span></font>
</body>
</html>