bullet-train-co / bullet_train

The Open Source Ruby on Rails SaaS Template
MIT License
1.67k stars 265 forks source link

When running bin/setup on Mint 21.2 I get a load error re: charlock_holmes #854

Open afittro opened 1 year ago

afittro commented 1 year ago

Similar to #103. When I run bin/setup on my machine I get the following error:

LoadError: libicudata.so.73: cannot open shared object file: No such file or directory - /home/<me>/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/charlock_holmes-0.7.7/lib/charlock_holmes/charlock_holmes.so

Here is my system info from inxi: System: Kernel: 5.15.0-76-generic x86_64 bits: 64 compiler: gcc v: 11.3.0 Desktop: Cinnamon 5.8.4 Distro: Linux Mint 21.2 Victoria base: Ubuntu 22.04 jammy

I have icu4c installed via brew: icu4c: stable 73.2

I have libicu-dev installed via apt.

What else could I try, since upgrading to the latest Ubuntu isn't really an option if I wish to stay on Mint?

jagthedrummer commented 1 year ago

@afittro You might try this suggestion from a similar issues on the charlock_holmes repo: https://github.com/brianmario/charlock_holmes/issues/156#issuecomment-789790455

bundle pristine charlock_holmes
afittro commented 1 year ago

oh, good idea. I actually never thought of using pristine within bundler.

But alas, after doing that the error remains. Thank you for the suggestion and for helping me grow :)

So is it accurate to say this is a problem within charlock_holmes and not bullet_train? If so, should we close this issue with a note to refer to the relevant open issue on that charlock_holmes repo?

jagthedrummer commented 1 year ago

@afittro I just noticed that you mentioned that you have icu4c isntalled via brew and libicu-dev installed via apt. I don't know that this is the case, but it could be that those two different installation methods end up putting things in two different spots and that something somewhere (maybe the charlock_holmes build process?) expects them all to be in the same spot. You might try installing both via one method or the other and then bundle pristine.

jagthedrummer commented 1 year ago

@afittro, did you ever this this straightened out?

afittro commented 1 year ago

No. I had the problem initially without the apt-installed libicu-dev. I just had the brew install of icu4c. I only added the apt install as an attempt to resolve the issue.

shaunakv1 commented 4 months ago

having the same issue on mac m1 (Sonoma) and ruby 3.2.4

jagthedrummer commented 4 months ago

@shaunakv1 You might try doing this:

BUNDLE_BUILD__CHARLOCK_HOLMES="--with-cxxflags=-std=c++17" bundle install

It was suggested in a thread on the charlock_holmes repo:

https://github.com/brianmario/charlock_holmes/issues/172#issuecomment-2200579820

mccollek commented 2 months ago

This is still failing for me:

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

    current directory: /usr/share/rvm/gems/ruby-3.3.4/gems/charlock_holmes-0.7.9/ext/charlock_holmes
/usr/share/rvm/rubies/ruby-3.3.4/bin/ruby extconf.rb --with-cxxflags\=-std\=c++17
checking for pkg-config for icu-i18n... [" ", "", "-licui18n -licuuc -licudata"]
checking for pkg-config for icu-io... [" ", "", "-licuio -licui18n -licuuc -licudata"]
checking for pkg-config for icu-uc... [" ", "", "-licuuc -licudata"]
checking for -licui18n... yes
checking for unicode/ucnv.h... yes
checking for -lz... yes
checking for -licuuc... yes
checking for -licudata... yes
checking for icu that requires explicit C++ version flag... yes
checking for icu that compiles with c++20 standard... no
checking for icu that compiles with c++17 standard... no
checking for icu that compiles with c++11 standard... no
checking for icu that compiles with c++0x standard... no
Cannot compile icu with your compiler: recent versions require C++17 support.
*** 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=${opt-dir}/include
    --without-opt-include
    --with-opt-lib=${opt-dir}/lib
    --without-opt-lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/usr/share/rvm/rubies/ruby-3.3.4/bin/$(RUBY_BASE_NAME)
    --with-icu-dir
    --without-icu-dir
    --with-icu-include=${icu-dir}/include
    --without-icu-include
    --with-icu-lib=${icu-dir}/lib
    --without-icu-lib
    --with-icu-i18n-dir
    --without-icu-i18n-dir
    --with-icu-i18n-include=${icu-i18n-dir}/include
    --without-icu-i18n-include
    --with-icu-i18n-lib=${icu-i18n-dir}/lib
    --without-icu-i18n-lib
    --with-icu-i18n-config
    --without-icu-i18n-config
    --with-pkg-config
    --without-pkg-config
    --with-icu-io-dir
    --without-icu-io-dir
    --with-icu-io-include=${icu-io-dir}/include
    --without-icu-io-include
    --with-icu-io-lib=${icu-io-dir}/lib
    --without-icu-io-lib
    --with-icu-io-config
    --without-icu-io-config
    --with-icu-uc-dir
    --without-icu-uc-dir
    --with-icu-uc-include=${icu-uc-dir}/include
    --without-icu-uc-include
    --with-icu-uc-lib=${icu-uc-dir}/lib
    --without-icu-uc-lib
    --with-icu-uc-config
    --without-icu-uc-config
    --with-icui18n-dir
    --without-icui18n-dir
    --with-icui18n-include=${icui18n-dir}/include
    --without-icui18n-include
    --with-icui18n-lib=${icui18n-dir}/lib
    --without-icui18n-lib
    --with-icui18nlib
    --without-icui18nlib
    --with-unicode-dir
    --without-unicode-dir
    --with-unicode-include=${unicode-dir}/include
    --without-unicode-include
    --with-unicode-lib=${unicode-dir}/lib
    --without-unicode-lib
    --with-z-dir
    --without-z-dir
    --with-z-include=${z-dir}/include
    --without-z-include
    --with-z-lib=${z-dir}/lib
    --without-z-lib
    --with-zlib
    --without-zlib
    --with-icuuc-dir
    --without-icuuc-dir
    --with-icuuc-include=${icuuc-dir}/include
    --without-icuuc-include
    --with-icuuc-lib=${icuuc-dir}/lib
    --without-icuuc-lib
    --with-icuuclib
    --without-icuuclib
    --with-icudata-dir
    --without-icudata-dir
    --with-icudata-include=${icudata-dir}/include
    --without-icudata-include
    --with-icudata-lib=${icudata-dir}/lib
    --without-icudata-lib
    --with-icudatalib
    --without-icudatalib

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

  /usr/share/rvm/gems/ruby-3.3.4/extensions/x86_64-linux/3.3.0/charlock_holmes-0.7.9/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /usr/share/rvm/gems/ruby-3.3.4/gems/charlock_holmes-0.7.9 for inspection.
Results logged to /usr/share/rvm/gems/ruby-3.3.4/extensions/x86_64-linux/3.3.0/charlock_holmes-0.7.9/gem_make.out

  /usr/share/rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems/ext/builder.rb:125:in `run'
  /usr/share/rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems/ext/ext_conf_builder.rb:28:in `build'
  /usr/share/rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems/ext/builder.rb:193:in `build_extension'
  /usr/share/rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems/ext/builder.rb:227:in `block in build_extensions'
  /usr/share/rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems/ext/builder.rb:224:in `each'
  /usr/share/rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems/ext/builder.rb:224:in `build_extensions'
  /usr/share/rvm/rubies/ruby-3.3.4/lib/ruby/3.3.0/rubygems/installer.rb:852:in `build_extensions'
  /usr/share/rvm/gems/ruby-3.3.4/gems/bundler-2.4.10/lib/bundler/rubygems_gem_installer.rb:72:in `build_extensions'
  /usr/share/rvm/gems/ruby-3.3.4/gems/bundler-2.4.10/lib/bundler/rubygems_gem_installer.rb:28:in `install'
  /usr/share/rvm/gems/ruby-3.3.4/gems/bundler-2.4.10/lib/bundler/source/rubygems.rb:200:in `install'
  /usr/share/rvm/gems/ruby-3.3.4/gems/bundler-2.4.10/lib/bundler/installer/gem_installer.rb:54:in `install'
  /usr/share/rvm/gems/ruby-3.3.4/gems/bundler-2.4.10/lib/bundler/installer/gem_installer.rb:16:in `install_from_spec'
  /usr/share/rvm/gems/ruby-3.3.4/gems/bundler-2.4.10/lib/bundler/installer/parallel_installer.rb:156:in `do_install'
  /usr/share/rvm/gems/ruby-3.3.4/gems/bundler-2.4.10/lib/bundler/installer/parallel_installer.rb:147:in `block in worker_pool'
  /usr/share/rvm/gems/ruby-3.3.4/gems/bundler-2.4.10/lib/bundler/worker.rb:62:in `apply_func'
  /usr/share/rvm/gems/ruby-3.3.4/gems/bundler-2.4.10/lib/bundler/worker.rb:57:in `block in process_queue'
  <internal:kernel>:187:in `loop'
  /usr/share/rvm/gems/ruby-3.3.4/gems/bundler-2.4.10/lib/bundler/worker.rb:54:in `process_queue'
  /usr/share/rvm/gems/ruby-3.3.4/gems/bundler-2.4.10/lib/bundler/worker.rb:90:in `block (2 levels) in create_threads'

An error occurred while installing charlock_holmes (0.7.9), and Bundler cannot continue.

In Gemfile:
  bullet_train-incoming_webhooks was resolved to 1.7.21, which depends on
    bullet_train-api was resolved to 1.7.21, which depends on
      bullet_train was resolved to 1.7.21, which depends on
        extended_email_reply_parser was resolved to 0.5.1, which depends on
          charlock_holmes