oracle / truffleruby

A high performance implementation of the Ruby programming language, built on GraalVM.
https://www.graalvm.org/ruby/
Other
2.98k stars 180 forks source link

Error installing pg 1.1.4 #3555

Closed brauliobo closed 2 months ago

brauliobo commented 2 months ago

Please see the log below:

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

    current directory: /home/braulio/.rvm/gems/truffleruby-24.0.1/gems/pg-1.1.4/ext
/home/braulio/.rvm/rubies/truffleruby-24.0.1/bin/ruby extconf.rb
checking for pg_config... yes
Using config values from /usr/bin/pg_config
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for pg_config_manual.h... yes
checking for PQconnectdb() in -lpq... yes
checking for PQsetSingleRowMode()... yes
checking for PQconninfo()... yes
checking for PQsslAttribute()... yes
checking for PQencryptPasswordConn()... yes
checking for timegm()... yes
checking for rb_gc_adjust_memory_usage()... yes
checking for PG_DIAG_TABLE_NAME in libpq-fe.h... yes
checking for unistd.h... yes
checking for inttypes.h... yes
checking for C99 variable length arrays... yes
creating extconf.h
creating Makefile

current directory: /home/braulio/.rvm/gems/truffleruby-24.0.1/gems/pg-1.1.4/ext
make DESTDIR\= sitearchdir\=./.gem.20240425-121544-7sj182 sitelibdir\=./.gem.20240425-121544-7sj182 clean

current directory: /home/braulio/.rvm/gems/truffleruby-24.0.1/gems/pg-1.1.4/ext
make DESTDIR\= sitearchdir\=./.gem.20240425-121544-7sj182 sitelibdir\=./.gem.20240425-121544-7sj182
compiling gvl_wrappers.c
compiling pg.c
compiling pg_binary_decoder.c
pg_binary_decoder.c: In function ‘pg_bin_dec_bytea’:
pg_binary_decoder.c:98:15: error: implicit declaration of function ‘rb_tainted_str_new’; did you mean ‘rb_enc_str_new’? [-Werror=implicit-function-declaration]
   98 |         ret = rb_tainted_str_new( val, len );
      |               ^~~~~~~~~~~~~~~~~~
      |               rb_enc_str_new
cc1: some warnings being treated as errors
make: *** [Makefile:566: pg_binary_decoder.o] Error 1

make failed, exit code 2

Gem files will remain installed in /home/braulio/.rvm/gems/truffleruby-24.0.1/gems/pg-1.1.4 for inspection.
Results logged to /home/braulio/.rvm/gems/truffleruby-24.0.1/extensions/x86_64-linux/3.2.2.24.0.0.2/pg-1.1.4/gem_make.out

  /home/braulio/.rvm/rubies/truffleruby-24.0.1/lib/mri/rubygems/ext/builder.rb:119:in `run'
  /home/braulio/.rvm/rubies/truffleruby-24.0.1/lib/mri/rubygems/ext/builder.rb:51:in `block in make'
  /home/braulio/.rvm/rubies/truffleruby-24.0.1/lib/mri/rubygems/ext/builder.rb:43:in `each'
  /home/braulio/.rvm/rubies/truffleruby-24.0.1/lib/mri/rubygems/ext/builder.rb:43:in `make'
  /home/braulio/.rvm/rubies/truffleruby-24.0.1/lib/mri/rubygems/ext/ext_conf_builder.rb:41:in `build'
  /home/braulio/.rvm/rubies/truffleruby-24.0.1/lib/mri/rubygems/ext/builder.rb:187:in `build_extension'
  /home/braulio/.rvm/rubies/truffleruby-24.0.1/lib/mri/rubygems/ext/builder.rb:221:in `block in build_extensions'
  /home/braulio/.rvm/rubies/truffleruby-24.0.1/lib/mri/rubygems/ext/builder.rb:218:in `each'
  /home/braulio/.rvm/rubies/truffleruby-24.0.1/lib/mri/rubygems/ext/builder.rb:218:in `build_extensions'
  /home/braulio/.rvm/rubies/truffleruby-24.0.1/lib/mri/rubygems/installer.rb:844:in `build_extensions'
  /home/braulio/.rvm/gems/truffleruby-24.0.1/gems/bundler-2.2.33/lib/bundler/rubygems_gem_installer.rb:71:in `build_extensions'
  /home/braulio/.rvm/gems/truffleruby-24.0.1/gems/bundler-2.2.33/lib/bundler/rubygems_gem_installer.rb:28:in `install'
  /home/braulio/.rvm/gems/truffleruby-24.0.1/gems/bundler-2.2.33/lib/bundler/source/rubygems.rb:194:in `install'
  /home/braulio/.rvm/gems/truffleruby-24.0.1/gems/bundler-2.2.33/lib/bundler/installer/gem_installer.rb:54:in `install'
  /home/braulio/.rvm/gems/truffleruby-24.0.1/gems/bundler-2.2.33/lib/bundler/installer/gem_installer.rb:16:in `install_from_spec'
  /home/braulio/.rvm/gems/truffleruby-24.0.1/gems/bundler-2.2.33/lib/bundler/installer/parallel_installer.rb:186:in `do_install'
  /home/braulio/.rvm/gems/truffleruby-24.0.1/gems/bundler-2.2.33/lib/bundler/installer/parallel_installer.rb:177:in `block in worker_pool'
  /home/braulio/.rvm/gems/truffleruby-24.0.1/gems/bundler-2.2.33/lib/bundler/worker.rb:62:in `apply_func'
  /home/braulio/.rvm/gems/truffleruby-24.0.1/gems/bundler-2.2.33/lib/bundler/worker.rb:57:in `block in process_queue'
  <internal:core> core/kernel.rb:409:in `loop'
  /home/braulio/.rvm/gems/truffleruby-24.0.1/gems/bundler-2.2.33/lib/bundler/worker.rb:54:in `process_queue'
  /home/braulio/.rvm/gems/truffleruby-24.0.1/gems/bundler-2.2.33/lib/bundler/worker.rb:91:in `block (2 levels) in create_threads'

An error occurred while installing pg (1.1.4), and Bundler cannot continue.
eregon commented 2 months ago

1.1.4 is too old, see https://github.com/ged/ruby-pg/tags. rb_tainted_str_new was removed in CRuby 3.2 and so is also removed in TruffleRuby, you should get the same error on CRuby 3.2. I tried on CRuby 3.2 and it also hits this but it's a warning instead of error:

$ gem i -V pg:1.1.4
...
pg.h:309:25: warning: implicit declaration of function ‘rb_tainted_str_new’; did you mean ‘rb_enc_str_new’? [-Wimplicit-function-declaration]