SciRuby / nmatrix

Dense and sparse linear algebra library for Ruby via SciRuby
Other
469 stars 133 forks source link

Gem PackageTask monkeys to allow for plugins #534

Open translunar opened 8 years ago

translunar commented 8 years ago

In the Rakefile, there exists this code:

gemspecs.each do |gemspec|
  Gem::PackageTask.new(gemspec).define
end

That's wrong, because it's producing the following line:

rake gem               # Build the gem file nmatrix-0.2.4.gem

but what we really want is:

rake gem:nmatrix               # Build the gem file nmatrix-0.2.4.gem
rake gem:nmatrix_atlas     # ...
rake gem:nmatrix_lapacke # ...
rake gem:nmatrix_fftw # ...

We also want the other relevant package tasks to allow for namespacing like this.

I believe you'd want to make a monkey-patched version of the following file:

https://github.com/rubygems/rubygems/blob/58e2de2ea1f1a78e7548521206863ed3ba0d3e8f/lib/rubygems/package_task.rb

I'd suggest adding a use_namespace: false option, and then change lines like

task :package => [:gem]

to

namespace :package do
  task gem_spec.name.to_sym => [:gem] # this will also need to convert dashes to underscores
end

which should give the desired effect.

We want all of the package tasks to be updated for the plugins. It'd also be great to get a gem push task added so we can quickly send to RubyGems. Yehuda Katz has a how-to on this if you Google for gemspecs and his name.

wlevine commented 8 years ago

I'm sure I'm the one who wrote this code, but the details are not fresh in my mind. I wrote a blog post on this stuff, so at least I recorded what I was thinking at that time. I don't really understand your objection, though. In practice the code works, right? We can package multiple gems using the Rakefile.

translunar commented 6 years ago

Bumping this issue up because it's pretty easy to do and would make life hella easier for maintenance tasks.