[M3devel] Hudson question

Jay K jay.krell at cornell.edu
Sat Jul 25 01:30:23 CEST 2009


Interix is actually multiple downloads.
 
The first one has a lot of bugs, like gcc never working on systems that support the "no execute" bit, and the NFS server or client crashing the machine (bugcheck, blue screen). To get updates, instead of the usual windowsupdate.microsoft.com, you have to go a special web page, type in the KB articles that you discover searching the web, recieve a link to a password-protected executable/.zip, you get the current password and the next one. If you wait too long, or gosh, want to reinstall everything, officially you need to go through the ridiculuous rigamarole again. Though actually what you can do is extract the .exes/.zips once and keep those around.
 
 
The first large download from Microsoft gives you a bunch of "utilities", like sh, ksh, gcc, ld, bash.
There is also a large second download from interopsystems.com or such to get more and updated utilities.
That's where I got e.g. Python. There is a small problem compiling Python out of the box, something around filesystem case sensitivity, even though Interix does offer case sensitive file system, there seems to be a small problem with it. Python detects the case sensitive file system, in which case it is willing to put Python directory and python executable file next to each other, but when it later runs "sh -c ./python", that tries to run the directory and gets access denied. There is a code path in configure for case insensitive, which alters the paths, presumably the workaround is to set the environment variable to force the configure check. Heck, they could just always do it that way..
 
 
Presumably starting with a base of Server 2003 R2 or Vista or newer is better, but the above is the experience on XP.
 
 
So, it is kind of a pain on XP, but the result is way way faster than Cygwin. The cost of fork on Cygwin is huge and definitely occurs.
I'm still in the habit of using Cygwin though, like for cvs.
 
 
Cygwin is multiple downloads in a sense, but they have a fairly nice setup that will do them all.
 
 
I think the interopsystems.com download does lead pretty directly to X Windows too via a separate package.
 
 
I just have to remind folks that if the main goal is just forward slashes in file system paths, NT386 works fine there now. Granted, I understand, you also want sh, X windows, 64bit LONGINT, optimizing backend backend (MinGW can deliver the last two).
 
 
 - Jay


----------------------------------------
> From: jay.krell at cornell.edu
> To: m3devel at elegosoft.com
> Subject: FW: [M3devel] Hudson question
> Date: Fri, 24 Jul 2009 23:18:17 +0000
>
>
> [truncated again, one more try then I give up..]
>
>>
>> ----------------------------------------
>>> From: jay.krell at cornell.edu
>>> To: wagner at elegosoft.com; m3devel at elegosoft.com
>>> Subject: RE: [M3devel] Hudson question
>>> Date: Fri, 24 Jul 2009 23:12:30 +0000
>>>
>>>
>>> It doesn't likely make a difference.
>>>
>>>
>>> Before you needed Cygwin or Interix.
>>> Now you need Cygwin or Interix, and probably Java.
>>> Java will probably be a sticking point on various platforms,
>>> but the gains are also very nice where it is available.
>>> I see there has been work done on an assembly-free Java VM
>>> since Sun open sourced their VM, so that promises increased portability.
>>> (One wonders some about the Critical Mass VM).
>>>
>>>
>>> Writing more .cmd isn't going to help anything imho.
>>> It's just more hard to maintain code that someone
>>> will have to maintain in parallel to Olaf's .sh.
>>> Which is why I favor Python -- portable, no duplicated effort.
>>>
>>>
>>> "Hard to main" as it, sure, it is easy to get started, but
>>> what happens when you decide you need an array, or a hash table?
>>> Or any of a number of basic programming constructs?
>>> Ok, I guess you have while loops, using goto.
>>> Local variables. At least that are strings. Everything is a string.
>>> cmd has one or two surprisingly powerfuli features, such as for /f
>>> and set /a. If you can't do your work with them, you can't do it.
>>> sh is a bit more portable than Python, but not by much and
>>> imho at too large a cost in maintainability/generality.
>>> It still seems to me like a string based language that can't do much,
>>> but I admit I'm not practised in it. (I am very practised in .cmd.)
>>>
>>>
>>> You know, the fact that expression evaluation is in some mix of the "[" command
>>> and maybe in sh itself. That people write if xxx true else yyy instead
>>> of if not xxx yyy.
>>> The fact that Solaris is different.
>>> The fact that quoting is needed in various places.
>>> Quoting always bothers me. It is hard to predict how many levels
>>> of unquoting will be done.
>>> I suspect cmd, sh, and Tcl are all in the same overly string based boat.
>>> For example in Tcl, { } appear to have the same meaning as in C and C++, good,
>>> but in fact they are escape characters, very wierd and bad.
>>>
>>>
>>> Cygwin and Interix both probably work fine.
>>> Someone just has to set them up and run them.
>>>
>>>
>>> Consider Cygwin and Interix almost the same.
>>> Interix is much faster, if you are calling fork a lot.
>>> Cygwin is slightly more compatible with Linux/Posix.
>>>
>>>
>>> Interix has a few ways in which is resembles Linux/Posix more though,
>>> such as not using extensions on executables, using ".so", supporting
>>> runpath.
>>>
>>>
>>> I think with Cygwin 1.7, both it and Interix go to extreme
>>> of supporting backward slash and colon in paths.
>>> Interix actually ors in 0xFF00 to such characters but
>>> it is transparent to Interix code. Or maybe that's what
>>> Cygwin does. I don't remember. It is completely non
>>> transparent and discoverable if you look at the results from Win32.
>>>
>>>
>>> Interix probably a larger download, because the
>>> part that is mostly "built in" is basically nothing,
>>> just some infrastructure and very few utilities.
>>> I don't think there is even sh or ksh.
>>> Everything else is one large download.
>>>
>>>
>>> On XP nothing is "builtin", there is just one large download.
>>> "builtin" is on Server 2003 R2, Vista, Server 2008, etc.
>>>
>>>
>>> (Oh, and Cygwin 1.5 works on Win9x, Interix only down to windows 2000.
>>> But Cygwin 1.7 drops Win9x support, but maybe still works on NT4?)
>>>
>>>
>>> - Jay
>>>
>>>
>>> ----------------------------------------
> [deliberate snip]
>


More information about the M3devel mailing list