Shopify / liquid-c

Liquid performance extension in C.
MIT License
119 stars 24 forks source link

Installing liquid-c using Bundler fails on Ubuntu 21.10 with Ruby 3.1.3 #185

Closed masaki9 closed 1 year ago

masaki9 commented 1 year ago

Issue

Installing liquid-c using Bundler fails and causes an error on Ubuntu 21.10 with Ruby 3.1.3. On the same system with Ruby 3.1.2, installing liquid-c using Bundler was completed successfully.

The error is shown below:

user@ubuntu21:~/myblog$ ruby -v
ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x86_64-linux]
user@ubuntu21:~/myblog$ bundle add liquid-c
Fetching gem metadata from https://rubygems.org/...........
Resolving dependencies...
Fetching gem metadata from https://rubygems. org/...........
Resolving dependencies...
Using bundler 2.4.2
Using public_suffix 5.0.1
Using colorator 1.1.0
Using eventmachine 1.2.7
Using http_parser.rb 0.8.0
Using ffi 1.15.5
Using forwardable-extended 2.6.0
Using google-protobuf 3.21.12 (x86_64-linux)
Using rb-fsevent 0. 11.2
Using rexml 3.2.5
Using liquid 4.0.3
Using mercenary 0.4.0
Using rouge 4.0.1
Using safe_yaml 1.0.5
Using unicode-display_width 2.3.0
Using webrick 1.7.0
Using concurrent- ruby 1.1.10
Using addressable 2.8.1
Using em-websocket 0.5.3
Using sass-embedded 1.57.1 (x86_64-linux-gnu)
Using rb-inotify 0.10.1
Using kramdown 2.4.0
Using pathutil 0.16.2
Fetching liquid-c 4.0.0
Using terminal -table 3.0.2
Using 118n 1.12.0
Using jekyll-sass-converter 3.0.0
Using listen 3.7.1
Using kramdown-parser-gfm 1.1.0
Using jekyll-watch 2.2.1
Using jekyll 4.3.1
Using jekyll-feed 0.17.0
Using jekyll-seo-tag 2.8.0
Using minima 2.5.1
Installing liquid-c 4.0.0 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /home/user/gems/gems/liquid-c-4.0.0/ext/liquid_c
/home/user/.rbenv/versions/3.1.3/bin/ruby -I /home/user/.rbenv/versions/3.1.3/lib/ruby/3.1.0 extconf.rb
creating Makefile

current directory: /home/user/gems/gems/liquid-c-4.0.0/ext/liquid_c
make DESTDIR\= sitearchdir\=./.gem.20230102-2556-yd5wkw sitelibdir\=./.gem.20230102-2556-yd5wkw clean

current directory: /home/user/gems/gems/liquid-c-4.0.0/ext/liquid_c
make DESTDIR\= sitearchdir\=./.gem.20230102-2556-yd5wkw sitelibdir\=./.gem.20230102-2556-yd5wkw
compiling block.c
block.c: In function ‘init_liquid_block’:
block.c:126:6: error: old-style function definition [-Werror=old-style-definition]
  126 | void init_liquid_block()
      |      ^~~~~~~~~~~~~~~~~
At top level:
cc1: note: unrecognized command-line option ‘-Wno-self-assign’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-parentheses-equality’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-constant-logical-operand’ may have been intended to silence earlier diagnostics
cc1: all warnings being treated as errors
make: *** [Makefile:247: block.o] Error 1

make failed, exit code 2

Gem files will remain installed in /home/user/gems/gems/liquid-c-4.0.0 for inspection.
Results logged to /home/user/gems/extensions/x86_64-linux/3.1.0/liquid-c-4.0.0/gem_make.out

  /home/user/.rbenv/versions/3.1.3/lib/ruby/3.1.0/rubygems/ext/builder.rb:102:in `run'
  /home/user/.rbenv/versions/3.1.3/lib/ruby/3.1.0/rubygems/ext/builder.rb:51:in `block in make'
  /home/user/.rbenv/versions/3.1.3/lib/ruby/3.1.0/rubygems/ext/builder.rb:43:in `each'
  /home/user/.rbenv/versions/3.1.3/lib/ruby/3.1.0/rubygems/ext/builder.rb:43:in `make'
  /home/user/.rbenv/versions/3.1.3/lib/ruby/3.1.0/rubygems/ext/ext_conf_builder.rb:42:in `build'
  /home/user/.rbenv/versions/3.1.3/lib/ruby/3.1.0/rubygems/ext/builder.rb:171:in `build_extension'
  /home/user/.rbenv/versions/3.1.3/lib/ruby/3.1.0/rubygems/ext/builder.rb:205:in `block in build_extensions'
  /home/user/.rbenv/versions/3.1.3/lib/ruby/3.1.0/rubygems/ext/builder.rb:202:in `each'
  /home/user/.rbenv/versions/3.1.3/lib/ruby/3.1.0/rubygems/ext/builder.rb:202:in `build_extensions'
  /home/user/.rbenv/versions/3.1.3/lib/ruby/3.1.0/rubygems/installer.rb:843:in `build_extensions'
  /home/user/gems/gems/bundler-2.4.2/lib/bundler/rubygems_gem_installer.rb:72:in `build_extensions'
  /home/user/gems/gems/bundler-2.4.2/lib/bundler/rubygems_gem_installer.rb:28:in `install'
  /home/user/gems/gems/bundler-2.4.2/lib/bundler/source/rubygems.rb:200:in `install'
  /home/user/gems/gems/bundler-2.4.2/lib/bundler/installer/gem_installer.rb:54:in `install'
  /home/user/gems/gems/bundler-2.4.2/lib/bundler/installer/gem_installer.rb:16:in `install_from_spec'
  /home/user/gems/gems/bundler-2.4.2/lib/bundler/installer/parallel_installer.rb:155:in `do_install'
  /home/user/gems/gems/bundler-2.4.2/lib/bundler/installer/parallel_installer.rb:146:in `block in worker_pool'
  /home/user/gems/gems/bundler-2.4.2/lib/bundler/worker.rb:62:in `apply_func'
  /home/user/gems/gems/bundler-2.4.2/lib/bundler/worker.rb:57:in `block in process_queue'
  /home/user/gems/gems/bundler-2.4.2/lib/bundler/worker.rb:54:in `loop'
  /home/user/gems/gems/bundler-2.4.2/lib/bundler/worker.rb:54:in `process_queue'
  /home/user/gems/gems/bundler-2.4.2/lib/bundler/worker.rb:90:in `block (2 levels) in create_threads'

An error occurred while installing liquid -c (4.0.0), and Bundler cannot continue.

In Gemfile:
liquid-c

Steps to Reproduce

  1. Have a system running Ubuntu.
  2. Install ruby 3.1.3.
    # If you have rbenv, you can run the following to install ruby 3.1.3:
    rbenv install 3.1.3
    rbenv global 3.1.3
  3. Install Jekyll and Bundler. gem install jekyll bundler
  4. Create a new Jekyll site. jekyll new mysite
  5. Change the working directory to your new site. cd mysite
  6. Install liquid-c using Bundler. bundle add liquid-c

Environment

Ubuntu 21.10 Ruby 3.1.3 Bundler 2.4.2 Jekyll 4.3.1

kaspergrubbe commented 1 year ago

I were seeing the same with Ruby 3.2.0, but I think upgrading to 4.0.1 made it go away.

dylanahsmith commented 1 year ago

cc1: all warnings being treated as errors

That was fixed in v4.1.0 and backported to v4.0.1