[MacRuby-devel] macruby_deploy error while compiling files

Petr Kaleta petr.kaleta at me.com
Thu May 5 07:26:43 PDT 2011


Sounds good for me.

On May 5, 2011, at 4:25 PM, Eloy Duran wrote:

> Hmm, yes this is a problem. Maybe we should add separate options for compiling stdlib and gems and start keeping a list of libs known to not work well with AOT compilation which can then be excluded? I don't like adding another option so we could also compile everything with --compile, but this might introduce problems for users with libs of which we don't yet know if they work well.
> 
> I personally prefer the latter, because it keeps the interface of ruby_deploy simple and forcing people to run into potential bugs is the only good way to find these problem libs. However, from a user friendly pov opt-in might be better, but it's much less likely that people will report about broken libs in that case.
> 
> On 5 mei 2011, at 15:49, Nick Ludlam wrote:
> 
>> I think Laurent and I were discussing some issues with the AOT compiling of certain stdlib files causing problems. My specific case was from the RSS module.
>> 
>> https://www.macruby.org/trac/ticket/1020
>> 
>> On 5 May 2011, at 14:39, Eloy Duran wrote:
>> 
>>> Aha indeed! Yes we should definitely compile them imo. But I’m not
>>> sure if there’s a good reason for excluding stdlib and gems from
>>> compilation. The last time I tried there was no problem with compiling
>>> it all. Can you change this in source/bin/ruby_deploy and see if your
>>> app works good afterwards? If so I’ll apply that, right now I’m going
>>> to start on a test suite for the tool as it is.
>>> 
>>> On Thu, May 5, 2011 at 2:58 PM, Petr Kaleta <petr.kaleta at me.com> wrote:
>>>> Yes, you said, that it compile all files from Resources directory, but gems are embeded in Framework directory. So thats why, they are not compiled. Can be STDLIB compiled as well?
>>>> 
>>>> - Petr
>>>> 
>>>> On May 5, 2011, at 2:34 PM, Eloy Duran wrote:
>>>> 
>>>>> No, that's not right. The embed code is run before the compile code
>>>>> and the compile code uses the following to select all ruby files in
>>>>> the Resources directory of the app bundle:
>>>>> 
>>>>> def compile_files
>>>>>  Dir.glob(File.join(app_resources, '**', '*.rb'))
>>>>> end
>>>>> 
>>>>> It would be great if you can upload a sample that shows this.
>>>>> 
>>>>> On Thu, May 5, 2011 at 2:11 PM, Petr Kaleta <petr.kaleta at me.com> wrote:
>>>>>> Now I am looking in the application package and embeded gems are not compiled. And as you can see here http://cl.ly/240t0v3q2O221X3U113u some ruby files compiled are, but there are source files as well. Embeded STDlib is not compiled at all http://cl.ly/2d2D2R2L451m2C2x472J
>>>>>> 
>>>>>> Is this right?
>>>>>> 
>>>>>> On May 5, 2011, at 1:27 PM, Petr Kaleta wrote:
>>>>>> 
>>>>>>> Thanks for reply, that works. So after deploying, my whole application has about 45MB (zipped 12MB). My only question is, can I somehow speedup application start? Now it takes about 10 seconds (loading gems & project files).
>>>>>>> 
>>>>>>> - Petr
>>>>>>> 
>>>>>>> On May 5, 2011, at 12:13 PM, Eloy Duran wrote:
>>>>>>> 
>>>>>>>> No it's not your fault, it seems the code assumes a ENV variable
>>>>>>>> that's set by Xcode. This is the offending code:
>>>>>>>> 
>>>>>>>>     compile_options = { bundle: true, output: obj, files: [source] }
>>>>>>>>     # Use Xcode ARCHS env var to determine which archs to compile for
>>>>>>>>     compile_options[:archs] = ENV['ARCHS'].strip.split if ENV['ARCHS']
>>>>>>>>     # Check that the ARCHS env var contains valid values
>>>>>>>>     supported_archs = RbConfig::CONFIG['ARCH_FLAG'].gsub('-arch',
>>>>>>>> '').strip.split
>>>>>>>>     compile_options[:archs].delete_if do |arch|
>>>>>>>>       unless supported_archs.include?(arch)
>>>>>>>>         puts "Can't build for arch #{arch} because it is not supported"
>>>>>>>>         true
>>>>>>>>       end
>>>>>>>>     end
>>>>>>>> 
>>>>>>>> I think that if the ENV['ARCHS'] variable isn't set we should check
>>>>>>>> the app binary for the archs it's been built for. I'll create a path
>>>>>>>> in a bit.
>>>>>>>> 
>>>>>>>> For now you should be able to work around it by doing:
>>>>>>>> 
>>>>>>>> env ARCHS='i386 x86_64' macruby_deploy --compile --embed --gem
>>>>>>>> rest-client --gem sequel --bs Issues.app
>>>>>>>> 
>>>>>>>> And adjust the actual archs for the ones your app is built for.
>>>>>>>> 
>>>>>>>> On Thu, May 5, 2011 at 11:57 AM, Petr Kaleta <petr.kaleta at me.com> wrote:
>>>>>>>>> Hi everyone, I'd like to deploy my Macruby app using:
>>>>>>>>> 
>>>>>>>>> macruby_deploy --compile --embed --gem rest-client --gem sequel --bs Issues.app
>>>>>>>>> 
>>>>>>>>> but I'm getting this error:
>>>>>>>>> 
>>>>>>>>> *** Deployment started
>>>>>>>>> *** Embedding MacRuby.framework
>>>>>>>>> *** Embed RubyGems libdirs: /Library/Frameworks/MacRuby.framework/Versions/0.11/usr/lib/ruby/Gems/1.9.2/gems/mime-types-1.16/lib, /Library/Frameworks/MacRuby.framework/Versions/0.11/usr/lib/ruby/Gems/1.9.2/gems/rest-client-1.6.1/lib, /Library/Frameworks/MacRuby.framework/Versions/0.11/usr/lib/ruby/Gems/1.9.2/gems/sequel-3.22.0/lib
>>>>>>>>> *** Embed BridgeSupport system files
>>>>>>>>> *** Fix install path of binaries
>>>>>>>>> *** Fix identification name of libmacruby
>>>>>>>>> *** Compiling files
>>>>>>>>> /usr/local/bin/macruby_deploy:127:in `block': undefined method `delete_if' for nil:NilClass (NoMethodError)
>>>>>>>>>     from /usr/local/bin/macruby_deploy:117:in `compile'
>>>>>>>>>     from /usr/local/bin/macruby_deploy:70:in `run'
>>>>>>>>>     from /usr/local/bin/macruby_deploy:283:in `<main>'
>>>>>>>>> 
>>>>>>>>> Am I doing something wrong, or this is some bug in macruby_deploy tool? I am using the latest macruby version from origin/master.
>>>>>>>>> 
>>>>>>>>> - Petr
>>>>>>>>> _______________________________________________
>>>>>>>>> MacRuby-devel mailing list
>>>>>>>>> MacRuby-devel at lists.macosforge.org
>>>>>>>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>>>>>>>> 
>>>>>>>> _______________________________________________
>>>>>>>> MacRuby-devel mailing list
>>>>>>>> MacRuby-devel at lists.macosforge.org
>>>>>>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>>>>>> 
>>>>>>> _______________________________________________
>>>>>>> MacRuby-devel mailing list
>>>>>>> MacRuby-devel at lists.macosforge.org
>>>>>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>>>>> 
>>>>>> _______________________________________________
>>>>>> MacRuby-devel mailing list
>>>>>> MacRuby-devel at lists.macosforge.org
>>>>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>>>>> 
>>>>> _______________________________________________
>>>>> MacRuby-devel mailing list
>>>>> MacRuby-devel at lists.macosforge.org
>>>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>>> 
>>>> _______________________________________________
>>>> MacRuby-devel mailing list
>>>> MacRuby-devel at lists.macosforge.org
>>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>>> 
>>> _______________________________________________
>>> MacRuby-devel mailing list
>>> MacRuby-devel at lists.macosforge.org
>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>> 
>> _______________________________________________
>> MacRuby-devel mailing list
>> MacRuby-devel at lists.macosforge.org
>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
> 
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel



More information about the MacRuby-devel mailing list