Mail Archives: djgpp/2011/01/13/14:15:19
Hi,
On Jan 11, 12:15=A0am, Andris Pavenis <andris DOT pave DOT DOT DOT AT iki DOT fi> wrote:
>
> Also
> =A0 =A0 =A0 =A0 - binary RPMs (built in CentOS-5.5 i686)
> =A0 =A0 =A0 =A0 - DJGPP packages for DJGPP v2.03r2
> =A0 =A0 =A0 =A0 - DJGPP packages for DJGPP v2.04 pre
> =A0 =A0 =A0 =A0 - corresponding source packages
> are available for testing purposes.
>
> See:
> =A0 =A0 =A0 =A0http://ap1.pp.fi/djgpp/gcc/4.5.2/
>
> I have done only very little testing myself.
Cool, thanks. I'll be honest, I wasn't sure 4.5.x would ever arrive on
DJGPP, and I blindly assumed the plugin architecture made that harder.
Nevertheless, at least whats-his-face can properly tune for Atom
now. ;-)
Anyways, I noticed you said you weren't able to test it too heavily
yet. Well, I wanted to (weakly) help, so I decided to build Ruby 1.8.7
pl330, esp. since I've compiled it with DJGPP before (a year ago) and
it's non-trivial. (Unfortunately I don't really know any Ruby, far
from it.)
Good news! It (almost) compiles, had to tweak util.c first, then it
built okay (miniruby, ruby), plus "make test" works even with default -
O2 now (thankfully). It also works with the only two Ruby programs
I've ever written (see old thread). So I guess that's a fair test.
However, note that I didn't even bother trying the /djgpp/ subdir as
last time that didn't work, and I doubt they fixed it since then. I
just did a normal "./configure && make" under Bash (and using DJDEV
2.04 beta) on WinXP (Home SP3 32-bit).
It's probably a dumb idea, I'll probably get flamed, but I guess I'll
cc news://comp.lang.ruby anyways so somebody can know that I actually
tried (and barely patched) it for DJGPP. Here's the fix (and I admit I
didn't know a good way to use #define inside a DJGPP #ifdef to use
open() instead of _open, so I had to just manually fix it).
--- util.c 2010-11-22 07:21:34 +0000
+++ ../ruby-1.8.7-p330/util.c 2011-01-13 12:28:14 +0000
@@ -234,7 +234,7 @@
memcpy(RSTRING_PTR(str), buf, RSTRING_LEN(str));
}
-#if defined(__CYGWIN32__) || defined(_WIN32)
+//#if defined(__CYGWIN32__) || defined(_WIN32)
#if defined __CYGWIN32__ || defined __MINGW32__
extern int _open(const char *, int, ...);
extern int _close(int);
@@ -250,9 +250,9 @@
// It doesn't exist, so see if we can open it.
*/
- if ((fd =3D _open(s, O_CREAT|O_EXCL, 0666)) >=3D 0) {
- _close(fd);
- _unlink(s); /* don't leave it laying around */
+ if ((fd =3D open(s, O_CREAT|O_EXCL, 0666)) >=3D 0) {
+ close(fd);
+ unlink(s); /* don't leave it laying around */
return 1;
}
else if (errno =3D=3D EEXIST) {
@@ -262,7 +262,7 @@
return 0;
}
#endif
-#endif
+//#endif
#if defined __DJGPP__
- Raw text -