nmatrix icon indicating copy to clipboard operation
nmatrix copied to clipboard

Gem PackageTask monkeys to allow for plugins

Open translunar opened this issue 8 years ago • 2 comments

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.

translunar avatar Jul 25 '16 14:07 translunar

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.

wlevine avatar Sep 03 '16 13:09 wlevine

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

translunar avatar Dec 20 '17 17:12 translunar