From: William H. N. <wil...@ai...> - 2001-02-02 00:42:09
|
(By the way, correspondence like this probably belongs on the sbcl-devel list at lists.sourceforge.net. I've cc'ed this reply there.) On Wed, Jan 31, 2001 at 07:59:06AM +0000, Douglas Brebner wrote: > I'd thought you'd like to know that the version check that SBCL makes prevents > it running under NetBSDs Linux emulation. e.g. > > bash-2.04$ ./sbcl > fatal error encountered in SBCL runtime system: > linux major version=1 (can't run in version < 2.0.0) > > This is under NetBSD-1.5/i386 > > I can make it run by changing the kernel version and recompiling, though this > is a rather gross hack. Would an option to override the test be possible? The test is there because the original cmucl-2.4.8 code that I branched off of looked like this: + uname(&name); + +/* we need this for mmap */ + + if ((name.release[0]) < '2') + { + printf("Linux version must be later then 2.0.0!\n"); + exit(2); + } I didn't have any good way to verify it, so I just trusted the comment. If in fact pre-2.0 mmap is good enough, then I should be able to reduce the strength of the test. I don't have access to a NetBSD machine. Could you please try a few things on your machine? First, I don't know what mmap failures the original comment was referring to. In case they're not gross failures, could you please test the system a little to make sure that it's not too badly screwed up? Then if the tests work, let me know what your system thinks its version is. 1. Rebuild the system with itself, if you haven't already done so. This is a pretty good rough-and-ready test of whether it's sane. 2. Run "sh run-tests.sh" in the tests/ directory to make sure that it doesn't fail any of the extra tests there. 3. Run this, tweaked as necessary to get it to compile under the NetBSD Linux emulation: #include <stdio.h> #include <sys/utsname.h> main() { struct utsname name; uname(&name); printf("release=\"%s\"\n", name.release); exit(0); } If you let me know what the output of step 3 says, I'll probably change the linux-os.c os_init() code to look at minor versions too, and change the comment from /* Early versions of Linux don't support the mmap(..) functionality * that we need. */ to something like /* Early versions of Linux don't support the mmap(..) functionality * that we need. The original CMU CL sources required major * version >= 2. However, the code has been observed to run * successfully under the NetBSD-1.5/i386 Linux emulator, which * returns name.release="x.y.z" here. Based on that one datapoint, * we're gonna assume until further notice that anything >=x.y.z * is good enough. */ and change the corresponding code correspondingly. > Thanks for making SBCL available :) My pleasure.:-) -- William Harold Newman <wil...@ai...> software consultant PGP key fingerprint 85 CE 1C BA 79 8D 51 8C B9 25 FB EE E0 C3 E5 7C |