Project

General

Profile

Actions

Bug #18373

open

Bundled gem (RBS, debug) extensions are not properly built

Added by vo.x (Vit Ondruch) about 2 months ago. Updated about 1 month ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 3.1.0dev (2021-12-01 master 0b53a8895f) [x86_64-linux]
[ruby-core:106355]

Description

Trying to build Ruby 3.1.0 preview1 (or the current snapshot), I observe the following issue during installation of bundled RBS:

Building native extensions. This could take a while...
/builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/ext/builder.rb:95:in `run': ERROR: Failed to build gem native extension. (Gem::Ext::BuildError)

    current directory: /builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211201git0b53a8895f.fc36.x86_64/usr/share/ruby/gems/gems/rbs-1.7.1/ext/rbs_extension
/builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211201git0b53a8895f.fc36.x86_64/usr/bin/ruby --disable\\=gems -I/builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211201git0b53a8895f.fc36.x86_64/usr/lib64/ruby -I /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib -r ./siteconf20211201-24852-213cgt.rb extconf.rb
creating Makefile

current directory: /builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211201git0b53a8895f.fc36.x86_64/usr/share/ruby/gems/gems/rbs-1.7.1/ext/rbs_extension
make DESTDIR\\= clean
make[1]: Entering directory '/builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211201git0b53a8895f.fc36.x86_64/usr/share/ruby/gems/gems/rbs-1.7.1/ext/rbs_extension'
rm -f 
rm -fr rbs_extension.so false *.o  *.bak mkmf.log .*.time
make[1]: Leaving directory '/builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211201git0b53a8895f.fc36.x86_64/usr/share/ruby/gems/gems/rbs-1.7.1/ext/rbs_extension'

current directory: /builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211201git0b53a8895f.fc36.x86_64/usr/share/ruby/gems/gems/rbs-1.7.1/ext/rbs_extension
make DESTDIR\\=
make[1]: Entering directory '/builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211201git0b53a8895f.fc36.x86_64/usr/share/ruby/gems/gems/rbs-1.7.1/ext/rbs_extension'
make[1]: *** No rule to make target '/include/x86_64-linux/ruby/config.h', needed by 'constants.o'.  Stop.
make[1]: Leaving directory '/builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211201git0b53a8895f.fc36.x86_64/usr/share/ruby/gems/gems/rbs-1.7.1/ext/rbs_extension'

make failed, exit code 2

Gem files will remain installed in /builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211201git0b53a8895f.fc36.x86_64/usr/share/ruby/gems/gems/rbs-1.7.1 for inspection.
Results logged to /builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211201git0b53a8895f.fc36.x86_64/usr/share/ruby/gems/extensions/x86_64-linux/3.1.0/rbs-1.7.1/gem_make.out
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/ext/builder.rb:44:in `block in make'
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/ext/builder.rb:36:in `each'
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/ext/builder.rb:36:in `make'
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/ext/ext_conf_builder.rb:63:in `block in build'
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/tempfile.rb:317:in `open'
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/ext/ext_conf_builder.rb:26:in `build'
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/ext/builder.rb:161:in `build_extension'
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/ext/builder.rb:195:in `block in build_extensions'
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/ext/builder.rb:192:in `each'
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/ext/builder.rb:192:in `build_extensions'
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/installer.rb:837:in `build_extensions'
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/installer.rb:318:in `install'
    from ./tool/rbinstall.rb:895:in `block in install'
    from ./tool/rbinstall.rb:719:in `no_write'
    from ./tool/rbinstall.rb:895:in `install'
    from ./tool/rbinstall.rb:1062:in `block (2 levels) in <main>'
    from ./tool/rbinstall.rb:1037:in `foreach'
    from ./tool/rbinstall.rb:1037:in `block in <main>'
    from ./tool/rbinstall.rb:1121:in `block in <main>'
    from ./tool/rbinstall.rb:1118:in `each'
    from ./tool/rbinstall.rb:1118:in `<main>'
/builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/ext/builder.rb:95:in `run': make failed, exit code 2 (Gem::InstallError)
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/ext/builder.rb:44:in `block in make'
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/ext/builder.rb:36:in `each'
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/ext/builder.rb:36:in `make'
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/ext/ext_conf_builder.rb:63:in `block in build'
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/tempfile.rb:317:in `open'
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/ext/ext_conf_builder.rb:26:in `build'
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/ext/builder.rb:161:in `build_extension'
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/ext/builder.rb:195:in `block in build_extensions'
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/ext/builder.rb:192:in `each'
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/ext/builder.rb:192:in `build_extensions'
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/installer.rb:837:in `build_extensions'
    from /builddir/build/BUILD/ruby-3.1.0-0b53a8895f/lib/rubygems/installer.rb:318:in `install'
    from ./tool/rbinstall.rb:895:in `block in install'
    from ./tool/rbinstall.rb:719:in `no_write'
    from ./tool/rbinstall.rb:895:in `install'
    from ./tool/rbinstall.rb:1062:in `block (2 levels) in <main>'
    from ./tool/rbinstall.rb:1037:in `foreach'
    from ./tool/rbinstall.rb:1037:in `block in <main>'
    from ./tool/rbinstall.rb:1121:in `block in <main>'
    from ./tool/rbinstall.rb:1118:in `each'
    from ./tool/rbinstall.rb:1118:in `<main>'
make: *** [uncommon.mk:383: do-install-all] Error 1
error: Bad exit status from /var/tmp/rpm-tmp.cpHVoZ (%install)
    Bad exit status from /var/tmp/rpm-tmp.cpHVoZ (%install)

This is probably fault of RubyGems, but also, RBS have not contained binary extension previously, if I am not mistaken. So I am not entirely sure.

BTW there is not Ruby installed on the build system, so this should work with the Ruby being build.


Files

Makefile (9.3 KB) Makefile vo.x (Vit Ondruch), 12/07/2021 05:52 PM
Makefile (8.24 KB) Makefile vo.x (Vit Ondruch), 12/21/2021 11:13 AM
rbconfig.rb (13.8 KB) rbconfig.rb vo.x (Vit Ondruch), 12/21/2021 02:37 PM

Related issues

Related to Ruby master - Bug #7860: Passing --libdir to ./configure causes Gem.ruby to point to an incorrect ruby interpreter pathClosednobu (Nobuyoshi Nakada)Actions
Related to Ruby master - Bug #9160: configureに--with-rubylibprefixを指定するとrbconfigのprefixが空文字になるClosednobu (Nobuyoshi Nakada)11/27/2013Actions

Updated by vo.x (Vit Ondruch) about 2 months ago

I have downgraded RBS to 1.6.2, but the same issue suffers (not surprisingly) debug:

Building native extensions. This could take a while...
/builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/ext/builder.rb:95:in `run': ERROR: Failed to build gem native extension. (Gem::Ext::BuildError)

    current directory: /builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211201gita84dc9d80d.fc36.x86_64/usr/share/ruby/gems/gems/debug-1.3.4/ext/debug
/builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211201gita84dc9d80d.fc36.x86_64/usr/bin/ruby --disable\\=gems -I/builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211201gita84dc9d80d.fc36.x86_64/usr/lib64/ruby -I /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib -r ./siteconf20211201-24843-jbuqiz.rb extconf.rb
creating Makefile

current directory: /builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211201gita84dc9d80d.fc36.x86_64/usr/share/ruby/gems/gems/debug-1.3.4/ext/debug
make DESTDIR\\= clean
make[1]: Entering directory '/builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211201gita84dc9d80d.fc36.x86_64/usr/share/ruby/gems/gems/debug-1.3.4/ext/debug'
rm -f 
rm -fr debug.so false *.o  *.bak mkmf.log .*.time
make[1]: Leaving directory '/builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211201gita84dc9d80d.fc36.x86_64/usr/share/ruby/gems/gems/debug-1.3.4/ext/debug'

current directory: /builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211201gita84dc9d80d.fc36.x86_64/usr/share/ruby/gems/gems/debug-1.3.4/ext/debug
make DESTDIR\\=
make[1]: Entering directory '/builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211201gita84dc9d80d.fc36.x86_64/usr/share/ruby/gems/gems/debug-1.3.4/ext/debug'
make[1]: *** No rule to make target '/include/x86_64-linux/ruby/config.h', needed by 'debug.o'.  Stop.
make[1]: Leaving directory '/builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211201gita84dc9d80d.fc36.x86_64/usr/share/ruby/gems/gems/debug-1.3.4/ext/debug'

make failed, exit code 2

Gem files will remain installed in /builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211201gita84dc9d80d.fc36.x86_64/usr/share/ruby/gems/gems/debug-1.3.4 for inspection.
Results logged to /builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211201gita84dc9d80d.fc36.x86_64/usr/share/ruby/gems/extensions/x86_64-linux/3.1.0/debug-1.3.4/gem_make.out
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/ext/builder.rb:44:in `block in make'
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/ext/builder.rb:36:in `each'
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/ext/builder.rb:36:in `make'
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/ext/ext_conf_builder.rb:63:in `block in build'
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/tempfile.rb:317:in `open'
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/ext/ext_conf_builder.rb:26:in `build'
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/ext/builder.rb:161:in `build_extension'
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/ext/builder.rb:195:in `block in build_extensions'
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/ext/builder.rb:192:in `each'
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/ext/builder.rb:192:in `build_extensions'
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/installer.rb:837:in `build_extensions'
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/installer.rb:318:in `install'
    from ./tool/rbinstall.rb:895:in `block in install'
    from ./tool/rbinstall.rb:719:in `no_write'
    from ./tool/rbinstall.rb:895:in `install'
    from ./tool/rbinstall.rb:1062:in `block (2 levels) in <main>'
    from ./tool/rbinstall.rb:1037:in `foreach'
    from ./tool/rbinstall.rb:1037:in `block in <main>'
    from ./tool/rbinstall.rb:1121:in `block in <main>'
    from ./tool/rbinstall.rb:1118:in `each'
    from ./tool/rbinstall.rb:1118:in `<main>'
/builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/ext/builder.rb:95:in `run': make failed, exit code 2 (Gem::InstallError)
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/ext/builder.rb:44:in `block in make'
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/ext/builder.rb:36:in `each'
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/ext/builder.rb:36:in `make'
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/ext/ext_conf_builder.rb:63:in `block in build'
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/tempfile.rb:317:in `open'
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/ext/ext_conf_builder.rb:26:in `build'
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/ext/builder.rb:161:in `build_extension'
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/ext/builder.rb:195:in `block in build_extensions'
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/ext/builder.rb:192:in `each'
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/ext/builder.rb:192:in `build_extensions'
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/installer.rb:837:in `build_extensions'
    from /builddir/build/BUILD/ruby-3.1.0-a84dc9d80d/lib/rubygems/installer.rb:318:in `install'
    from ./tool/rbinstall.rb:895:in `block in install'
    from ./tool/rbinstall.rb:719:in `no_write'
    from ./tool/rbinstall.rb:895:in `install'
    from ./tool/rbinstall.rb:1062:in `block (2 levels) in <main>'
    from ./tool/rbinstall.rb:1037:in `foreach'
    from ./tool/rbinstall.rb:1037:in `block in <main>'
    from ./tool/rbinstall.rb:1121:in `block in <main>'
    from ./tool/rbinstall.rb:1118:in `each'
    from ./tool/rbinstall.rb:1118:in `<main>'
make: *** [uncommon.mk:383: do-install-all] Error 1

Updated by xtkoba (Tee KOBAYASHI) about 2 months ago

FYI, in my environment ruby-3.1.0-preview1 can be cross-installed without error for aarch64-linux-android target (with build host being x86_64-linux-gnu).

Some observation:

$ grep 'config\.h' /var/tmp/build/arm64-v8a/lib/ruby/gems/3.1.0/gems/rbs-1.7.0.beta.5/ext/rbs_extension/Makefile
ruby_headers = $(hdrdir)/ruby.h $(hdrdir)/ruby/backward.h $(hdrdir)/ruby/ruby.h $(hdrdir)/ruby/defines.h $(hdrdir)/ruby/missing.h $(hdrdir)/ruby/intern.h $(hdrdir)/ruby/st.h $(hdrdir)/ruby/subst.h $(arch_hdrdir)/ruby/config.h

$ grep '^arch_hdrdir' /var/tmp/build/arm64-v8a/lib/ruby/gems/3.1.0/gems/rbs-1.7.0.beta.5/ext/rbs_extension/Makefile
arch_hdrdir = /var/tmp/ruby-3.1.0-preview1/.build-android-aarch64/.ext/include/aarch64-linux-android

So I guess in your environment arch_hdrdir in Makefile for gem extension is incorrectly defined as /include/x86_64-linux, though I don't know why.

Updated by ko1 (Koichi Sasada) about 2 months ago

What make command do you use?

Updated by jaruga (Jun Aruga) about 2 months ago

Can you provide the full log of the build.log showing the build error as an attachment of this ticket or somewhere?

Updated by vo.x (Vit Ondruch) about 2 months ago

xtkoba (Tee KOBAYASHI) wrote in #note-2:

$ grep 'arch_hdrdir' /var/tmp/build/arm64-v8a/lib/ruby/gems/3.1.0/gems/rbs-1.7.0.beta.5/ext/rbs_extension/Makefile
arch_hdrdir = /var/tmp/ruby-3.1.0-preview1/.build-android-aarch64/.ext/include/aarch64-linux-android

So I guess in your environment `arch_hdrdir` in `Makefile` for gem extension is incorrectly defined as `/include/x86_64-linux`, though I don't know why.

This is good tip:

$ grep '^arch_hdrdir' /builddir/build/BUILDROOT/ruby-3.1.0-0.1.20211207git26303c31f0.fc36.x86_64/usr/share/ruby/gems/gems/rbs-1.8.0/ext/rbs_extension/Makefile 
arch_hdrdir = $(extout)/include/$(arch)

And this must come from here. Obviously, the condition is not met, because we are using --with-rubyhdrdir=/usr/include --with-rubyarchhdrdir=/usr/include configuration options on Fedora:

$ ./miniruby -r./rbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'
/usr/include

This is not unreasonable I believe. However, I am not sure what this branch is supposed to do. On top of that, the $(extout) is not set. I think that ideally, we would like to pass the first condition and the configuration options should be prefixed with $(DESTDIR).

Updated by darix (Marcus Rückert) about 2 months ago

this only breaks when you run "make install DESTDIR=/some/path"

but it works nicely without. so this is a bug in how DESTDIR is passed
to the rubygems extensions build.

darix

--
Always remember:
Never accept the world as it appears to be.
Dare to see it for what it could be.
The world can always use more heroes.

Updated by vo.x (Vit Ondruch) about 1 month ago

I am not sure what to really blame. The place where it goes quite wrong is actually mkmf, somewhere around here:

  if not $extmk and File.exist?(($hdrdir = RbConfig::CONFIG["rubyhdrdir"]) + "/ruby/ruby.h")
    $topdir = $hdrdir
    $top_srcdir = $hdrdir
    $arch_hdrdir = RbConfig::CONFIG["rubyarchhdrdir"]
  elsif File.exist?(($hdrdir = ($top_srcdir ||= topdir) + "/include")  + "/ruby.h")
    $topdir ||= RbConfig::CONFIG["topdir"]
    $arch_hdrdir = "$(extout)/include/$(arch)"
  else

The first branch is used for regular cases when Ruby is already installed. The second branch is used for building extensions during build of Ruby.

Unfortunately, installing gems and building their extensions is non of these. So there should be probably created some middle path. Maybe if the mkmf could be convinced that the extension is nothing different to building extensions which are part of Ruby ...

But I think that it might make difference, if there is already installed Ruby on the system, which is not my case.

Updated by vo.x (Vit Ondruch) about 1 month ago

I was able to use this little hack to compile the extensions:

find .bundle -name extconf.rb -exec \
  sed -i \
    -e '/create_makefile/i \$arch_hdrdir = "$(hdrdir)/../.ext/include/$(arch)"' \
    -e '/create_makefile/i \$DLDFLAGS << " -L#{$top_srcdir}"' {} \;
Actions #9

Updated by vo.x (Vit Ondruch) about 1 month ago

  • Subject changed from RBS build failure: '/include/x86_64-linux/ruby/config.h', needed by 'constants.o'. to Bundle gem (RBS, debug) extension are not properly built
Actions #10

Updated by vo.x (Vit Ondruch) about 1 month ago

  • Subject changed from Bundle gem (RBS, debug) extension are not properly built to Bundled gem (RBS, debug) extensions are not properly built

Updated by vo.x (Vit Ondruch) about 1 month ago

BTW, this causes also different issues as far as I can tell:

https://github.com/ruby/ruby/pull/5206

Updated by mame (Yusuke Endoh) about 1 month ago

Please answer to https://bugs.ruby-lang.org/issues/18373#note-3. I couldn't reproduce the issue by the following commands

$ cd /tmp
$ git clone https://github.com/ruby/ruby.git
$ cd ruby
$ ./autogen.sh
$ ./configure
$ make
$ make install DESTDIR=/tmp/local/

A small and self-contained procedure to reproduce this issue is needed to make progress.

Updated by vo.x (Vit Ondruch) about 1 month ago

mame (Yusuke Endoh) wrote in #note-12:

Please answer to https://bugs.ruby-lang.org/issues/18373#note-3. I couldn't reproduce the issue by the following commands

$ cd /tmp
$ git clone https://github.com/ruby/ruby.git

This ^ is one issue. The starting point should be something like:

curl -OL https://cache.ruby-lang.org/pub/ruby/snapshot/snapshot-master.tar.xz

or https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.0-preview1.tar.xz and make sure no Ruby is installed on the system. I think this is the main issue and it does not really matter on the specific make command. But I'll try to come up with simple reproducer.

Updated by vo.x (Vit Ondruch) about 1 month ago

So the basic scenarios seem to work as expected (unexpectedly for me, sorry). But this is the failing scenario, where I am using expanded tarball:

$ history
    1  cd /builddir/build/BUILD/ruby-3.1.0-74b58dd690/
    2  autoconf 
    3  ./configure --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info
    4  make
    5  make install DESTDIR=/tmp/local/
    6  history

$ ruby -v
sh: ruby: command not found

Please note that these ./configure options are standard Fedora configuration options and they make the difference. With plain ./configure, the example would pass just fine. Also, as darix (Marcus Rückert) pointed out, the plain make install also succeeds. But that is probably not really surprising, because in that case Ruby can already by found on the expected location prior gems are installed.

Updated by ko1 (Koichi Sasada) about 1 month ago

Note that we can reproduce the issue with --includedir configure option like that: ./configure --includedir=/usr/include && make -j && make install DESTDIR=/tmp/foo also on Ubuntu with git repo.
nobu (Nobuyoshi Nakada) is checking.

Actions #16

Updated by nobu (Nobuyoshi Nakada) about 1 month ago

  • Related to Bug #9160: configureに--with-rubylibprefixを指定するとrbconfigのprefixが空文字になる added
  • Related to Bug #7860: Passing --libdir to ./configure causes Gem.ruby to point to an incorrect ruby interpreter path added

Updated by vo.x (Vit Ondruch) about 1 month ago

nobu (Nobuyoshi Nakada) wrote in #note-17:

Does this fix it?

No, unfortunately. Please see the attached Makefile. I think that the culprit is still the arch_hdrdir = $(extout)/include/$(arch)

Updated by nobu (Nobuyoshi Nakada) about 1 month ago

vo.x (Vit Ondruch) wrote in #note-18:

No, unfortunately. Please see the attached Makefile. I think that the culprit is still the arch_hdrdir = $(extout)/include/$(arch)

Yes, it's the problem.
Could you show rbconfig.rb file too?

Updated by vo.x (Vit Ondruch) about 1 month ago

nobu (Nobuyoshi Nakada) wrote in #note-19:

Could you show rbconfig.rb file too?

Done

Actions #22

Updated by nobu (Nobuyoshi Nakada) about 1 month ago

  • Status changed from Open to Closed

Applied in changeset git|c87c027f18c005460746a74c07cd80ee355b16e4.


configure.in: unexpand exec_prefix in includedir

Replace exec_prefix in includedir as well as bindir, libdir, and
so on. [Bug #18373]

Updated by nobu (Nobuyoshi Nakada) about 1 month ago

  • Status changed from Closed to Open

As the patch seems to fix one situation at least anyway, committed for now.

Updated by darix (Marcus Rückert) about 1 month ago

On Fri, 24 Dec 2021 11:44:21 +0000 (UTC)
"nobu (Nobuyoshi Nakada)" noreply@ruby-lang.org wrote:

Issue #18373 has been updated by nobu (Nobuyoshi Nakada).

Status changed from Closed to Open

As the patch seems to fix one situation at least anyway, committed
for now.

I just tested the latest snapshot (2021-12-25 01:00 AM) and it still
doesn't work in my packaging environment.

Actions

Also available in: Atom PDF