Can you hack in developer/user dependencies while you're in there? ;) --Jeremy On 8/20/07, Eric Hodel <drbrain / segment7.net> wrote: > As you may or may not have heard, RubyGems will be merged into Ruby > 1.9 sometime in October. Before this can happen RubyGems needs to > automatically install dependencies based on platforms. Fortunately > I've got the automatic install part written. Unfortunately I don't > know if I've got figuring out the platforms right. This is where you > come in. > > Dear Lazyweb, > > Here's my proposal for how we recognize platforms. From > Config::CONFIG, take the target_os and run it through a case > statement to figure out OS and OS version (if any). Combine the > target_cpu, OS and OS version. This value is your platform. > > (There will be a rubygems-platforms.gem much like sources.gem that can > be updated as necessary.) > > Using the tattle data (http://tattle.rubygarden.org), the following > code recognizes 26 unique platforms: > > def match(cpu, os) > cpu = case cpu > when /i\d86/ then 'x86' > else cpu > end > > os = case os > when /cygwin/ then [ 'cygwin', nil ] > when /darwin(\d+)?/ then [ 'darwin', $1 ] > when /freebsd(\d+)/ then [ 'freebsd', $1 ] > when /^java([\d.]*)/ then [ 'java', $1 ] > when /linux/ then [ 'linux', $1 ] > when /mingw32/ then [ 'mingw32', nil ] > when /mswin32/ then [ 'mswin32', nil ] > when /openbsd(\d+.\d+)/ then [ 'openbsd', $1 ] > when /solaris(\d+\.\d+)/ then [ 'solaris', $1 ] > else [ 'unknown', nil ] > end > > [cpu, os].flatten.compact.join("-") > end > > require 'rbconfig' > > target_cpu = Config::CONFIG['target_cpu'] > target_os = Config::CONFIG['target_os'] > > puts "Your target_cpu is: #{target_cpu.inspect}" > puts "Your target_os is: #{target_os.inspect}" > puts "Your platform is: #{match(target_cpu, target_os).inspect}" > > Lazyweb, I have two major questions for you: > > Did I get something wrong? Am I using autoconf's target_os > correctly? Is Solaris 2.8 really incompatible with Solaris 2.9? > What is a 64-bit Windows' target_os value? > > Do I have all the platforms people run Ruby and RubyGems on? If the > answer to this one is no, do this: <kbd>gem install tattle; tattle</ > kbd>. (Yes, AIX users, I'm talking to you.) > > -- > Poor workers blame their tools. Good workers build better tools. The > best workers get their tools to do the work for them. -- Syndicate Wars > > > > -- http://www.jeremymcanally.com/ My free Ruby e-book: http://www.humblelittlerubybook.com/book/ My blogs: http://www.mrneighborly.com/ http://www.rubyinpractice.com/