You are not logged in.

#1 2023-08-01 18:46:22

Hwesta
Member
Registered: 2023-08-01
Posts: 1

32-bit Ruby package w/ .so deps install to diff dirs & errors - why?

I have a 32-bit server that I'm using Ruby on and don't touch very often. I think it was originally an Arch install and now an Arch32 after 32-bit support was deprecated. Recently, I started getting this exception:

$ irb
irb(main):001:0> require "date_core"
<internal:/usr/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require': cannot load such file -- date_core (LoadError)
        from <internal:/usr/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require' 
        from (irb):1:in `<main>'                                                                
        from /usr/lib/ruby/gems/3.0.0/gems/irb-1.4.2/exe/irb:11:in `<top (required)>'           
        from /usr/bin/irb:25:in `load'                                                          
        from /usr/bin/irb:25:in `<main>'            

I suspect this happened when I updated some ruby packages, including ruby-date

[ALPM] upgraded rubygems (3.3.23-1.5 -> 3.3.25-1.0)
[ALPM] upgraded ruby-abbrev (0.1.0-3.9 -> 0.1.0-4.0)
[ALPM] upgraded ruby-base64 (0.1.1-3.9 -> 0.1.1-4.0)
[ALPM] upgraded ruby-benchmark (0.2.0-3.8 -> 0.2.0-4.0)
[ALPM] upgraded ruby-bigdecimal (3.1.2-3.6 -> 3.1.2-4.0)
[ALPM] upgraded ruby-bundler (2.3.23-1.4 -> 2.3.25-1.0)
[ALPM] upgraded ruby-cgi (0.3.3-1.4 -> 0.3.6-1.0)
[ALPM] upgraded ruby-date (3.2.2-3.6 -> 3.2.2-4.0)
[ALPM] upgraded ruby-stdlib (3.0.4-18.8 -> 3.0.4-20.0)
[ALPM] upgraded ruby-bundledgems (3.0.4-18.8 -> 3.0.4-20.0)
[ALPM] upgraded ruby (3.0.4-18.8 -> 3.0.4-20.0)
[ALPM] upgraded ruby-webrick (1.7.0-1.0 -> 1.8.1-1.0)

I can work around this with

export RUBYLIB=/usr/lib/ruby/3.0.0/x86-linux/

but it's weird and I shouldn't have to work around it. I eventually tracked it down to date_core.so being in /usr/lib/ruby/3.0.0/x86-linux/ which was not on Ruby's path.

$ ruby -e 'puts $LOAD_PATH'                       
/usr/lib/ruby/site_ruby/3.0.0                                                                   
/usr/lib/ruby/site_ruby/3.0.0/i686-linux                                                        
/usr/lib/ruby/site_ruby                                                                         
/usr/lib/ruby/vendor_ruby/3.0.0                                                                 
/usr/lib/ruby/vendor_ruby/3.0.0/i686-linux                                                      
/usr/lib/ruby/vendor_ruby                                                                       
/usr/lib/ruby/3.0.0                                                                             
/usr/lib/ruby/3.0.0/i686-linux
$ ls /usr/lib/ruby/3.0.0/x86-linux/date_core.so 
/usr/lib/ruby/3.0.0/x86-linux/date_core.so

What was strange to me is that 32-bit .so files are in two subdirectories, i686 and x86-linux.

$ ls /usr/lib/ruby/3.0.0/x86-linux/
bigdecimal.so  cgi  date_core.so
$ ls /usr/lib/ruby/3.0.0/i686-linux/
continuation.so  dbm.so  digest.so  etc.so    fiber.so   gdbm.so  json        nkf.so       openssl.so   psych.so  racc      rbconfig.rb  ripper.so  stringio.so  syslog.so
coverage.so      digest  enc        fcntl.so  fiddle.so  io       monitor.so  objspace.so  pathname.so  pty.so    rbconfig  readline.so  socket.so  strscan.so   zlib.so

I found two packages that owned files in the two directories

$ yay -Qo /usr/lib/ruby/3.0.0/x86-linux/date_core.so /usr/lib/ruby/3.0.0/i686-linux/digest.so 
/usr/lib/ruby/3.0.0/x86-linux/date_core.so is owned by ruby-date 3.2.2-4.0
/usr/lib/ruby/3.0.0/i686-linux/digest.so is owned by ruby-digest 3.1.0-5.8

If I'm understanding the build files correctly, both ruby-date and ruby-digest use gem env platform | cut -d':' -f2 to generate the subdirectory, but they're producing different results.

I also noticed that that some of the Ruby packages are marked for deletion, like ruby-date and ruby-digest

Questions:
a) any idea why this happens? Is it an artifact of the machine they're built on?
b) any idea how to fix it? Having a random collection of ruby packages segfault is not great. Where should I file a bug?
c) how/where is the Ruby $LOAD_PATH default set?
d) why are the Ruby packages marked for deletion? Where could I look to figure this out myself?

Offline

#2 2023-08-03 05:30:45

abaumann
Administrator
From: Zurich
Registered: 2019-11-14
Posts: 1,032
Website

Re: 32-bit Ruby package w/ .so deps install to diff dirs & errors - why?

Knowing little to nothing about ruby, but guessing from other languages with modules: there is a mismatch of versions (interpreter and module versions don't fit).
Last time I had a look the rubyverse was neither sane nor rebuilding properly.

Currently rebuilding is a huge problem..

Offline

Board footer

Powered by FluxBB