From: quixoticsycophant@... (Jeff Mitchell) Date: 2004-06-20T02:28:18+09:00 Subject: Re: ruby one-click installer issue with extensions "daz" wrote in message news:... > > Extensions go into [$sitearchdir], which translates into > > /ruby-install-directory/lib/ruby/site_ruby/1.8/i386-msvcrt for the > > one-click installer, so packages know where to install extensions. > > > > Indeed, and when I was using one-click from Prag/\ndy, I noticed that > a lot of these directories were set to drive T:\ . Not difficult to > find and change those, but wherever you #include "ruby.h", some > subtle upset might occur from using a config.h file which contains > #defines tailored to someone else's machine. > > It might not be a problem, but I'm not inclined towards finding out. It isn't :) If you look at rbconfig.rb, you'll find the paths are all defined relative to TOPDIR = File.dirname(__FILE__).sub!(%r'/lib/ruby/1\.8/i386\-mswin32\Z', '') If you had to change paths from "T:\" in rbconfig.rb then it was a bug which has since been resolved. The one-click installer's config.h has the following paths #define RUBY_LIB "/lib/ruby/1.8" #define RUBY_SITE_LIB "/lib/ruby/site_ruby" #define RUBY_SITE_LIB2 "/lib/ruby/site_ruby/1.8" #define RUBY_PLATFORM "i386-mswin32" #define RUBY_ARCHLIB "/lib/ruby/1.8/i386-mswin32" #define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/1.8/i386-msvcrt" all of which have the $prefix removed. The same is true for mingw32-ruby's config.h. If you saw "T:\" here then it has since been removed. On Linux, however, the $prefix is present. In any case, I cannot imagine a valid use of these raw paths except as convenience to C extension writers who do not intend to distribute their work. A programmer would know they are locally dependent simply because they are #defines. So to answer your original question, "I wonder if it's _generally_ possible for users of a one-click installer to use the Ruby process to add C extensions locally?" the answer is yes -- that's what an install.rb does: it reads rbconfig.rb and then knows where to install. The other things in config.h like sizeof(double) are fixed because of the Win32 specification.