From: Timothy Hunter Date: 2006-05-25T08:29:34+09:00 Subject: Re: Proposing: A new Ruby Windows installer Curt Hibbs wrote: > On 5/24/06, Mauricio Fernandez wrote: > >> >> >> If you're right that's pretty bad news :-| I thought MinGW was >> compatible >> with >> the MSVC6-based ruby-mswin32 builds (I only knew of compatibility >> problems >> with the runtime used by newer VC compilers). I'm using MinGW to >> cross-compile the extension used by rcov, and was considering offering a >> hand >> to the One Click team... >> >> If they're actually incompatible, this would almost make ruby-mingw32 >> preferable as a base to build the One-Click Installer upon, since: >> * mingw is readily available and will not disappear the way MSVC6 did >> * it allows for cross-compilation, meaning one doesn't need a win32 box >> nearby >> to create win32 binaries >> >> Is there anything that would make builds made with the VC-of-the-day >> better an >> option than ruby-mingw32? >> >> I'd guess a possible transition wouldn't be too costly given the new >> One-Click infrastructure. Maybe as little as pointing to >> >> http://ftp.ruby-lang.org/pub/ruby/binaries/mingw/1.8/ruby-1.8.4-i386-mingw32.tar.gz >> >> instead of >> >> http://ftp.ruby-lang.org/pub/ruby/binaries/mswin32/ruby-1.8.4-i386-mswin32.zip >> >> ? > > > > Overall, this is a distressing state of affairs. If anyone here knows a > reason why MinGW would be a bad idea, please speak up. In the long > term it > seems like MinGW would be the way to go. But the current 1.8.4 version is > within a week or so of a final release and needs to go out as is. > > The reason that I went back to VC++6 was that all of the extensions > that I > pick up in binary format are VC++6. > > As Ara pointed out, buildng Ruby itself is easy. I've never had problems > building Ruby. Its problems building the extensions that take the most > effort, which is why I went for binaries whenever possible. > > But this came from the days when everyone thought that all these > compilers > (MinGW, VC++6, VC++7, etc.) were compatible. It really looks like the > only > safe approach for the long term is to build everything from source. > > I think this is the right thing to do, but I need to find additional, > help. > Ryan Leavengood has been tremendously helpful over the last two > months. But > knowing my other commitments, we'd need at least one other knowlegable > C and > Ruby developer who could be realiably counted on to help. > > Curt > Rats. Kaspar Scheiss actually does the RMagick Win32 work, and he's on holiday now, so my info is 2nd-hand. I'll do the best I can... Kaspar has been using mingw to build the RMagick Win32 gem all along. However we started getting complaints that the one he built last September, for Ruby 1.8.2, was causing problems when run with the 1.8.4 one-click installer previews. Apparently the latest version of Rails requires 1.8.4. Of course it's easy to believe that a compiled extension built for 1.8.2 will be incompatible with 1.8.4, so he used mingw to build a new gem for 1.8.4. Almost immediately we started getting reports of problems when using it in Rails apps. Consequently I withdrew the gem, which leaves the old 1.8.2-compatible version as the only option for RMagick users on Windows. We have not had any reports of problems outside of Rails. I admit that doesn't 100% prove that mingw is incompatible with VC++6, but if it's not fire it's at least smoke. I'd be interested to hear from other people who have built extensions using mingw. Have you had any problems using your extension with ruby-mswin 1.8.4? My concern is that if VC++6 is not available, and mingw is not compatible with VC++6, then there's no way for us to build a version of RMagick for Win32 that is compatible with the one-click installer. Is it possible to get VC++6 from someplace other than MS? Does MS allow it? I think mingw is the way to go in the future. I wish I could give a good answer about where you could get additional help. Will the new one-click infrastructure extend to building compatible extensions? That is, is this something we could use to build a guaranteed-compatible-with-the-one-click version of RMagick for Win32? This is something we'd adopt in a heartbeat. If not, what it would take to make such an infrastructure, not just for RMagick of course but for all C extensions? (Everybody jumped on Zed & Luis' comments about Ruby peformance, but I was particularly struck by Luis' comments about the problems he ran into with Ruby libraries on Win32).