instructure / i18nema

fast i18n backend that doesn't stop up the garbage collector
65 stars 12 forks source link

Build Error On Window #3

Open pravin-d opened 10 years ago

pravin-d commented 10 years ago

I'm trying to install Canvas LMS using the following guide https://github.com/instructure/canvas-lms/wiki/Quick-Start

This has a dependency on i18nema -v 0.0.7 I'm getting the following error

i18nema.o: In function load_yml_string': ~\Ruby193\lib\ruby\gems\1.9.1\gems\i18nema-0.0.7\ext\i18n ema/i18nema.c:429: undefined reference tosyck_new_parser' I guess the deps for i18nema does not include syck. Also syck-1.0.1.gem requires Ruby >=2.0.0 (Canvas is req Ruby 1.9.3).

PS Maybe i18nema-0.0.7 should define its deps to a proper version of syck

jenseng commented 10 years ago

syck is already included in ruby 1.9.3 and below, so i18nema ought to be able to use it. i'll investigate a bit and see what i can find out

in the meantime, you could remove i18nema from your dependencies. canvas can work fine without it (albeit slightly slower). in addition to removing it from the gemfile, you'll need to change the following section of config/initializers/i18n.rb from

I18n.backend = I18nema::Backend.new
I18nema::Backend.send(:include, I18n::Backend::Fallbacks)
I18n.backend.init_translations

to something like:

I18n.backend.send(:include, I18n::Backend::Fallbacks)

as a side note, canvas isn't supported on windows, so once you get past this obstacle, i would not be surprised if you encountered several more.

pravin-d commented 10 years ago

Thank you u for the reply. I checked. Ruby 1.9.3 does have syck.so. Path to the .so is Ruby193\lib\ruby\1.9.1\i386-mingw32\

The .so is not found or something I guess.

johnnyshields commented 7 years ago

Here's what I'm getting:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory:
C:/ruby21/lib/ruby/gems/2.1.0/gems/i18nema-0.0.8/ext/i18nema
C:/ruby21/bin/ruby.exe -r ./siteconf20170703-24160-1asyu9h.rb extconf.rb
checking for st.h... yes
creating Makefile

To see why this extension failed to compile, please check the mkmf.log which can
be found here:

C:/ruby21/lib/ruby/gems/2.1.0/extensions/x64-mingw32/2.1.0/i18nema-0.0.8/mkmf.log

current directory: C:/ruby21/lib/ruby/gems/2.1.0/gems/i18nema-0.0.8/ext/i18nema
make "DESTDIR=" clean

current directory: C:/ruby21/lib/ruby/gems/2.1.0/gems/i18nema-0.0.8/ext/i18nema
make "DESTDIR="
generating i18nema-x64-mingw32.def
compiling i18nema.c
i18nema.c: In function 'handle_syck_error':
i18nema.c:278:3: warning: format '%ld' expects argument of type 'long int', but
argument 5 has type 'long long int' [-Wformat]
i18nema.c: In function 'handle_syck_node':
i18nema.c:399:7: warning: ISO C90 forbids mixed declarations and code
[-Wdeclaration-after-statement]
i18nema.c: In function 'load_yml_string':
i18nema.c:429:3: warning: ISO C90 forbids mixed declarations and code
[-Wdeclaration-after-statement]
i18nema.c: In function 'available_locales':
i18nema.c:464:3: warning: ISO C90 forbids mixed declarations and code
[-Wdeclaration-after-statement]
i18nema.c: In function 'join_array_key':
i18nema.c:499:3: warning: ISO C90 forbids mixed declarations and code
[-Wdeclaration-after-statement]
i18nema.c: In function 'normalize_key':
i18nema.c:524:3: warning: ISO C90 forbids mixed declarations and code
[-Wdeclaration-after-statement]
i18nema.c:528:5: warning: ISO C90 forbids mixed declarations and code
[-Wdeclaration-after-statement]
i18nema.c:538:3: warning: ISO C90 forbids mixed declarations and code
[-Wdeclaration-after-statement]
i18nema.c:556:5: warning: ISO C90 forbids mixed declarations and code
[-Wdeclaration-after-statement]
i18nema.c: In function 'initialize':
i18nema.c:572:3: warning: ISO C90 forbids mixed declarations and code
[-Wdeclaration-after-statement]
i18nema.c: In function 'handle_syck_node':
i18nema.c:409:22: warning: 'result' may be used uninitialized in this function
[-Wmaybe-uninitialized]
linking shared-object i18nema/i18nema.so
i18nema.o: In function `load_yml_string':
C:\ruby21\lib\ruby\gems\2.1.0\gems\i18nema-0.0.8\ext\i18nema/i18nema.c:429:
undefined reference to `syck_new_parser'
C:\ruby21\lib\ruby\gems\2.1.0\gems\i18nema-0.0.8\ext\i18nema/i18nema.c:430:
undefined reference to `syck_parser_handler'
C:\ruby21\lib\ruby\gems\2.1.0\gems\i18nema-0.0.8\ext\i18nema/i18nema.c:432:
undefined reference to `syck_parser_str'
C:\ruby21\lib\ruby\gems\2.1.0\gems\i18nema-0.0.8\ext\i18nema/i18nema.c:433:
undefined reference to `syck_parser_bad_anchor_handler'
C:\ruby21\lib\ruby\gems\2.1.0\gems\i18nema-0.0.8\ext\i18nema/i18nema.c:434:
undefined reference to `syck_parser_error_handler'
C:\ruby21\lib\ruby\gems\2.1.0\gems\i18nema-0.0.8\ext\i18nema/i18nema.c:436:
undefined reference to `syck_parse'
C:\ruby21\lib\ruby\gems\2.1.0\gems\i18nema-0.0.8\ext\i18nema/i18nema.c:437:
undefined reference to `syck_lookup_sym'
C:\ruby21\lib\ruby\gems\2.1.0\gems\i18nema-0.0.8\ext\i18nema/i18nema.c:440:
undefined reference to `syck_free_parser'
i18nema.o: In function `handle_syck_node':
C:\ruby21\lib\ruby\gems\2.1.0\gems\i18nema-0.0.8\ext\i18nema/i18nema.c:394:
undefined reference to `syck_map_read'
C:\ruby21\lib\ruby\gems\2.1.0\gems\i18nema-0.0.8\ext\i18nema/i18nema.c:395:
undefined reference to `syck_lookup_sym'
C:\ruby21\lib\ruby\gems\2.1.0\gems\i18nema-0.0.8\ext\i18nema/i18nema.c:396:
undefined reference to `syck_map_read'
C:\ruby21\lib\ruby\gems\2.1.0\gems\i18nema-0.0.8\ext\i18nema/i18nema.c:397:
undefined reference to `syck_lookup_sym'
C:\ruby21\lib\ruby\gems\2.1.0\gems\i18nema-0.0.8\ext\i18nema/i18nema.c:409:
undefined reference to `syck_add_sym'
C:\ruby21\lib\ruby\gems\2.1.0\gems\i18nema-0.0.8\ext\i18nema/i18nema.c:380:
undefined reference to `syck_seq_read'
C:\ruby21\lib\ruby\gems\2.1.0\gems\i18nema-0.0.8\ext\i18nema/i18nema.c:381:
undefined reference to `syck_lookup_sym'
C:\ruby21\lib\ruby\gems\2.1.0\gems\i18nema-0.0.8\ext\i18nema/i18nema.c:360:
undefined reference to `syck_str_blow_away_commas'
C:\ruby21\lib\ruby\gems\2.1.0\gems\i18nema-0.0.8\ext\i18nema/i18nema.c:364:
undefined reference to `syck_str_blow_away_commas'
collect2.exe: error: ld returned 1 exit status
make: *** [i18nema.so] Error 1

make failed, exit code 2

Gem files will remain installed in
C:/ruby21/lib/ruby/gems/2.1.0/gems/i18nema-0.0.8 for inspection.
Results logged to
C:/ruby21/lib/ruby/gems/2.1.0/extensions/x64-mingw32/2.1.0/i18nema-0.0.8/gem_make.out