Canvas-lms in ubuntu 20.04 bundle install thrift error

366 views Asked by At

I need to install canvas-lms stable/2018-12-08 in ubuntu 20.04

I have:

  • rbenv
  • ruby 2.4.0
  • bundler 1.16.4

I get this error:

Installing thrift 0.9.3.0 with native extensions Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /home/jxd/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/thrift-0.9.3.0/ext /home/jxd/.rbenv/versions/2.4.0/bin/ruby -I /home/jxd/.rbenv/versions/2.4.0/lib/ruby/site_ruby/2.4.0 -r ./siteconf20220417-4132-wc9kcv.rb extconf.rb checking for strlcpy() in string.h... *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers.  Check the mkmf.log file for more details.  You may need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/home/jxd/.rbenv/versions/2.4.0/bin/$(RUBY_BASE_NAME) /home/jxd/.rbenv/versions/2.4.0/lib/ruby/2.4.0/mkmf.rb:457:in `try_do': The compiler failed to generate an executable file. (RuntimeError) You have to install development tools first. from /home/jxd/.rbenv/versions/2.4.0/lib/ruby/2.4.0/mkmf.rb:542:in `try_link0' from /home/jxd/.rbenv/versions/2.4.0/lib/ruby/2.4.0/mkmf.rb:557:in `try_link' from /home/jxd/.rbenv/versions/2.4.0/lib/ruby/2.4.0/mkmf.rb:768:in `try_func' from /home/jxd/.rbenv/versions/2.4.0/lib/ruby/2.4.0/mkmf.rb:1055:in `block in have_func' from /home/jxd/.rbenv/versions/2.4.0/lib/ruby/2.4.0/mkmf.rb:945:in `block in checking_for' from /home/jxd/.rbenv/versions/2.4.0/lib/ruby/2.4.0/mkmf.rb:351:in `block (2 levels) in postpone' from /home/jxd/.rbenv/versions/2.4.0/lib/ruby/2.4.0/mkmf.rb:321:in `open' from /home/jxd/.rbenv/versions/2.4.0/lib/ruby/2.4.0/mkmf.rb:351:in `block in postpone' from /home/jxd/.rbenv/versions/2.4.0/lib/ruby/2.4.0/mkmf.rb:321:in `open' from /home/jxd/.rbenv/versions/2.4.0/lib/ruby/2.4.0/mkmf.rb:347:in `postpone' from /home/jxd/.rbenv/versions/2.4.0/lib/ruby/2.4.0/mkmf.rb:944:in `checking_for' from /home/jxd/.rbenv/versions/2.4.0/lib/ruby/2.4.0/mkmf.rb:1054:in `have_func' from extconf.rb:31:in `<main>'

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

  /home/jxd/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/extensions/x86_64-linux/2.4.0/thrift-0.9.3.0/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /home/jxd/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/thrift-0.9.3.0 for inspection. Results logged to /home/jxd/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/extensions/x86_64-linux/2.4.0/thrift-0.9.3.0/gem_make.out

An error occurred while installing thrift (0.9.3.0), and Bundler cannot continue. Make sure that `gem install thrift -v '0.9.3.0'
--source 'https://rubygems.org/'` succeeds before bundling.

In Gemfile:   event_stream was resolved to 0.0.1, which depends on
    canvas_cassandra was resolved to 0.0.1, which depends on
      cassandra-cql was resolved to 1.2.3, which depends on
        thrift_client was resolved to 0.9.3, which depends on
          thrift

I followed the directions found in the canvas-lms documentation I tried:

~/canvas$ bundle config build.thrift --with-cppflags='-D_FORTIFY_SOURCE=0'
gem install thrift -v 0.8.0 -- --with-cppflags=\"-D_FORTIFY_SOURCE=0 -Wno-shift-negative-value\"
~/canvas$ bundle config build.eventmachine --with-cppflags=-I/usr/local/opt/openssl/include

Not work

1

There are 1 answers

0
Francesco Monti On

I switch to ruby 2.5.0 (upgrade) and bundler 1.13.3 (downgrade). It works for me.

I do not understand but it works.

update....

Does bundle config build.thrift "--with-cppflags="-Wno-compound-token-split-by-macro"" && bundle install work? – razvans

work but with ruby 2.5.0