From: "Mauricio Fernández" Date: 2004-10-11T10:59:16+09:00 Subject: Re: [ANN] dev-utils v1.0 On Mon, Oct 11, 2004 at 09:45:30AM +0900, Chad Fowler wrote: > On Mon, 11 Oct 2004 08:19:57 +0900, Mauricio Fern�ndez > wrote: > > > > I know several people were waiting for this to enter RPA so I > > tried to repackage the gem. I have to thank you for following > > (maybe unknowingly) most of the good practices described in > > http://rpa-base.rubyforge.org/wiki/wiki.cgi?GoodPractices ; this made > > repackaging your gem easier. > > > > So, Mauricio, this is a repackage to RPA of a gem? Any > rubygems-related issues in the process? As I said above, the process was relatively easy because Gavin followed many of the good practices documented in rpa-base's wiki. This doesn't mean that the conversion was automatic (or could be automated for the matter), though. There were dependencies on RubyGems I had to remove, and the documentation was generated with a custom script so I had to adapt it; I also had to discover the "build dependencies" (I found them in the documentation later) and fix some issues... > Did the fact that there was already some metadata present help you at all? Honestly, not really. The only piece of metadata I reused was 'Debugging utilities: breakpoints, debugging, and tracing.'. Since that is not an acceptable description in RPA, I had to look for a better one elsewhere. As far as I'm concerned, the rest of the metadata (with the exception of the author, dep, email and homepage) consists only of implementation details of RubyGems and is hence useless to me: s.description = s.summary s.files = FileList['[A-Z]*', '{etc,examples,lib,test}/**/*'].to_a s.require_path = 'lib' s.autorequire = nil s.has_rdoc = true s.extra_rdoc_files = FileList['*.txt'].to_a s.rdoc_options << '--main' << 'README.txt' << '--title' << 'dev-utils API Documentation' s.test_files = [] do not bring me that much useful information. Moreover, it lacks information about the "build dependencies" (required to generate the documentation). > I'm still interested in the possibility to script rubygems -> rpa-base > conversion and would like to hear your stories. The conversion of dev-utils was relatively easy, and yet impossible to automate. I had to read and understand the Rakefile and adapt documentation generation. Plus remove the dependency on RubyGems and correct the associated problems ("shadow requires"). I would *really* love to see you come up with a script able to do what I did manually, but it would have to read and understand Rakefiles/documentation/etc so it's probably as hard a problem as you can get. I'd like to remind you once again that the conversion involves much more than a simple change in the package format. In general, systems with a package manager have some associated policies, which determine the quality of packages in that context --- besides being just "legal" as far as the format it concerned. In the case of RubyGems, you have decided to keep it "policy free", which means that you just cannot target systems with a policy automatically, at least with the current metadata[1]: such a script would really have to be "intelligent" (say, comparable to a FreeBSD developer :) to create policy-compliant packages/ports for other systems. [1] if you managed to find a way to define the whole "gem build" process in the gemspec and hence REMOVE altogether the reliance on external processes, plus mark all files "semantically" (e.g.: example, test, documentation, configuration, shared data) AND standardize the build scripts, it could become possible. Note that the latter is essentially at least as hard as (and actually more difficult than) post-install scripts; so far, the only working design that could solve the latter completely is http://rubyforge.org/pipermail/rubygems-developers/2004-October/001081.html as far as I know. -- Running Debian GNU/Linux Sid (unstable) batsman dot geo at yahoo dot com