From: Luis Lavena Date: 2010-04-21T05:20:06+09:00 Subject: Re: [RFC] Proposing a Ruby Packaging Standard On Apr 20, 4:27 am, Christian Neukirchen wrote: > Hello, > > earlier this month I wrote up a draft for a specification on how to > structure Ruby projects.  It started athttp://gist.github.com/361451 > and there was lots of discussion there, which I now want to move to > ruby-talk to gain a larger audience. > > The specification now resides at > >                  http://chneukirchen.github.com/rps/ > > and is generated fromhttp://github.com/chneukirchen/rps. > > Please keep discussion on RPS to this thread, so people which usually > don't follow ruby-talk can discuss too. > My comments: "Extensions" Section: 1) "Extensions SHOULD reside in ext/" There are project that include more than one extension, I've encouraged project follow the setup.rb folder structure, exemplified here: http://github.com/luislavena/rake-compiler (under structure) 2) "Extensions SHOULD be buildable with ruby extconf.rb; make." That is not true, there are extension that even using extconf they generate Rakefiles, because they depend on mkrf and not mkmf That can't be enforced on these developers, if done a lot of project could break. 3) "Extensions SHOULD be installed into an architecture-specific directory." RubyGems doesn't do that, it just relocate binaries from ext directory to lib, adding the platform directory will make impossible for pre- built binary gems that bundle 1.8 and 1.9 extension. It also means that RubyGems will need to add RUBY_PLATFORM (or RbConfig::CONFIG['host_os']) of each gem into $LOAD_PATH. This has been requested in the past in RubyGems: http://rubyforge.org/tracker/index.php?func=detail&aid=14943&group_id=126&atid=575 Installations not using RubyGems will need to adapt their libraries to try loading from RUBY_PLATFORM directory and under failure try from other options? If no RubyGems and no developers implementing those tricks, means Ruby will need to be modified to handle that. Setup.rb already handles that putting binaries *outside* the package and inside site_ruby for each RUBY_PLATFORM 3) Files ending with .exe AFAIK: "Exe"cutables, not extensions or libraries My two cents -- Luis Lavena