arirusso / unimidi

Realtime MIDI IO for Ruby
Other
255 stars 27 forks source link

gem install unimidi fails (ruby 1.9.2/ 32-bit snow leopard) #1

Closed thbar closed 13 years ago

thbar commented 13 years ago

Hello Ari!

I just got (on rvm + ruby 1.9.2-p180 + mac os x):

ERROR:  Could not find a valid gem 'unimidi' (>= 0), here is why:
Found unimidi (0.1.10), but was for platforms i686-linux ,i386-mingw32 ,java ,x86_64-darwin10.7.0

My understanding is that it's because I'm using snow leopard but in 32 bits (which seems to be the default for upgraded install, although I'm not sure).

Not a big deal, I'm going to use JRuby on this one, but wanted to leave a trace of my findings.

arirusso commented 13 years ago

Oh yeah, thank you. I've had a feeling that problems would crop up with the multi-platform gem dependencies.

What is the value of RUBY_PLATFORM for your 1.9.2 install?

arirusso commented 13 years ago

btw- as a workaround you should be able to use "gem install ffi-coremidi" with that rvm gemset and be good to go.

this is actually the first test with 32-bit osx that I'm aware of so let me know if you run in to any other problems

thbar commented 13 years ago

Here's the output here for 1.9.2:

-vlilo:~ thbar$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [i386-darwin10.7.0]
lilo:~ thbar$ irb
ruby-1.9.2-p180 :001 > RUBY_PLATFORM
 => "i386-darwin10.7.0" 
ruby-1.9.2-p180 :002 > require 'rbconfig'
 => false 
ruby-1.9.2-p180 :003 > Config::CONFIG['host']
 => "i386-apple-darwin10.7.0" 
ruby-1.9.2-p180 :004 > 

The work-around didn't work for me (but JRuby does!)

arirusso commented 13 years ago

Interesting, thanks

I'm not sure how to fix this. Maybe someone more knowledgeable will see this

When someone installs the gem, it will match for whichever RUBY_PLATFORM I built the gem with.

i686-linux i386-mingw32 java x86_64-darwin10.7.0

In the case of the first 3, they are fairly generic-- even 64-bit Windows will match i386-mingw32. but the darwin one is unforgiving.

If I can't figure out a way to build the gem to match both, I can see two solutions

Include all of the platform-specific code as git submodules and have one gem with no platform specification. This may help avoid other future problems because I think the platform-specific gem support is just too brittle right now. For instance, you can't yank a gem if it is for a specific platform

Less desirably, I could also just add_dependency for all 4 platform-specific projects with unimidi. This wouldn't cause any problems other than to force people to install 3 gems they don't need

Thanks again

arirusso commented 13 years ago

Should work for you now...

For the time being, I've set it up so that if the specific platform isn't found it will install all of the dependencies for all platforms. not ideal, and a little bit more to maintain but at least everyone will be able to install the gem