rubymotion-community / BubbleWrap

Cocoa wrappers and helpers for RubyMotion (Ruby for iOS and OS X) - Making Cocoa APIs more Ruby like, one API at a time. Fork away and send your pull requests
Other
1.18k stars 208 forks source link

Potential fix for #456 #457

Open markrickert opened 9 years ago

markrickert commented 9 years ago

@rromanchuk can you please verify?

Not sure why actually opening the class and including works and sending :include doesn't.

rromanchuk commented 9 years ago

checking now, thanks for the quick reply @markrickert

markrickert commented 9 years ago

:+1: Specs passed locally, so travis should be good. If it all works out I'll merge and publish a bugfix release.

markrickert commented 9 years ago

Also, I really appreciate the demo project that reproduces the bug.

:100: internet points you you, sir!

rromanchuk commented 9 years ago

@markrickert OK getting closer, it now no longer fails on string.rb but composer.rb, is this some sort of internal RM class? I don't see thing being related to BW?

Link ./build/iPhoneOS-7.0-Release/Frontback.app/Frontback
Undefined symbols for architecture armv7:
  "_NSString", referenced from:
      _MREP_B2BE8E9878674677B02706F6A9100B76 in composer.rb.o
     (maybe you meant: _NSStringFromFBSDKLikeControlStyle, _NSStringFromFBSDKLikeControlHorizontalAlignment , _NSStringFromFBSDKLikeControlAuxiliaryPosition , _NSStringFromFBSDKAppGroupPrivacy , _NSStringFromFBSDKShareDialogMode , _Init_NSString , _NSStringFromFBSDKLikeObjectType )
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
rake aborted!
Command failed with status (1): [/Applications/Xcode.app/Contents/Developer...]
/Library/RubyMotion3.9/lib/motion/project/builder.rb:329:in `build'
/Users/ryan/.rvm/gems/ruby-2.2.1/gems/motion-env-0.0.4/lib/motion-env/builder.rb:32:in `build_with_env'
/Library/RubyMotion3.9/lib/motion/project/app.rb:78:in `build'
/Users/ryan/.rvm/gems/ruby-2.2.1/gems/motion-cocoapods-1.7.0/lib/motion/project/cocoapods.rb:53:in `build_with_cocoapods'
/Library/RubyMotion3.9/lib/motion/project/template/ios.rb:74:in `block (2 levels) in <top (required)>'
/Users/ryan/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `eval'
/Users/ryan/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `<main>'
Tasks: TOP => production => archive => build:device
(See full trace by running task with --trace)
rromanchuk commented 9 years ago

@markrickert although, let me try with a clean repo, i don't trust rake clean, especially with the recent change in .build folder locations

markrickert commented 9 years ago

https://github.com/IconoclastLabs/newclear/ :)

markrickert commented 9 years ago
 |2.1.0| Marks-MacBook-Pro-2 in ~/Documents/Rickert/BubbleWrap
± |fix-456 ✓| → find . -name "*composer*"

I'm not seeing any files named "composer" in bubblewrap.

I'm getting a different error in your example repos:

 |2.1.0| Marks-MacBook-Pro-2 in ~/Desktop/DebugFacebookSDK
± |master ✗| → r
     Build ./build/iPhoneSimulator-8.3-Development
   Compile /Users/mrickert/Documents/Rickert/BubbleWrap/motion/core/string.rb
      Link ./build/iPhoneSimulator-8.3-Development/FacbookIntegration.app/FacbookIntegration
ld: warning: too many personality routines for compact unwind to encode
    Create ./build/iPhoneSimulator-8.3-Development/FacbookIntegration.app/Info.plist
    Create ./build/iPhoneSimulator-8.3-Development/FacbookIntegration.app.dSYM
      Copy ./build/iPhoneSimulator-8.3-Development/FacbookIntegration.app.dSYM
  Simulate ./build/iPhoneSimulator-8.3-Development/FacbookIntegration.app
(main)> Objective-C stub for message `startWithCompletionHandler:' type `@@:@?' not precompiled. Make sure you properly link with the framework or library that defines this message.

================================================================================
The application terminated. A crash report file may have been generated by the
system, use `rake crashlog' to open it. Use `rake debug=1' to restart the app
in the debugger.
================================================================================
rromanchuk commented 9 years ago

@markrickert haha nice. Ok on my debug project it's building, Oh yeah, there are actually two ongoing problems with facebook right now, that was the first one. But if you got there it looks like it's working fine.

markrickert commented 9 years ago

Looks like in my debug project i'd have to define some "ghost methods" in rubymotion to make sure they're precompiled from the objective-c world. I'm assuming you've done that and know what I mean, but if not, i can point you in the right direction.

rromanchuk commented 9 years ago

The error you are seeing there is from an incorrect bridge support definition, but that's unrelated to this. It looks like my production project isn't working because of build cruft/cache, going to nuke everything and try again, but it's a good sign the debug project is working now.

markrickert commented 9 years ago

Cool. Let me know and I'll merge this and release version 1.8.1

rromanchuk commented 9 years ago

@markrickert i'm curious, do you have any idea where composer.rb comes from? Maybe i'm losing my mind, but i can't find this file anywhere or who is responsible for it, could it be some dynamically generated build file?

markrickert commented 9 years ago

No clue...

https://github.com/HipByte/RubyMotion/search?q=composer&type=Code&utf8=%E2%9C%93

I'm not seeing that error, so maybe it's from another cocoapod or gem?

rromanchuk commented 9 years ago

Ughhh, i found it ./.rvm/gems/ruby-2.0.0-p353/gems/twittermotion-0.0.2/lib/twittermotion/composer.rb

rromanchuk commented 9 years ago

https://github.com/clayallsopp/twittermotion/blob/master/lib/twittermotion/composer.rb#L49

rromanchuk commented 9 years ago

@markrickert sent you a msg on gitter

rromanchuk commented 9 years ago

@markrickert ok, so it turns out it's even more general, here is a reproducible project that is distilled down

https://github.com/rromanchuk/BrokenNSString

markrickert commented 9 years ago

OK, it seems to be an actual RubyMotion issue... I'll hold off on merging this for now till you hear back from HipByte.

markrickert commented 9 years ago

Looks like this may be resolved in RM 3.12.

@rromanchuk can you test and see?

= RubyMotion 3.12 =

  * [Android] Added support for Android M (experimental). To target it, set
    `app.api_version' to `MNC'.
  * [Android] Improved Object#raise to accept an exception class or instance.
  * [Android, iOS, OSX] Introduced a new experimental file dependency resolver.
    If you have any file dependency manually specified in the Rakefile, the new
    resolver should make those unnecessary. To try it, set the environmental
    variable "experimental_dependency" (e.g. 'rake experimental_dependency=1').
    The new resolver will become the default in a future release.
  * [iOS] Fixed "duplicate symbol" error when it would build app for iOS device
    using Xcode 6.2.
  * [iOS] Fixed a bug where the latest version of the Facebook iOS SDK would
    not compile correctly.
  * [iOS, OSX] Improved compilation time for projects that have many source
    files. 2~ times faster.
markrickert commented 9 years ago

@rromanchuk can you verify that this is fixed in > RM 3.12 and I'll close this PR?