Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't install Ruby environment on Linux (Gemfile.lock invalid) #2499

Open
matthewfeickert opened this issue Mar 1, 2025 · 4 comments
Open

Comments

@matthewfeickert
Copy link
Member

Running

pixi clean
pixi run install

on Linux x86 fails to be able to install the Gemfile.lock given

$ pixi run install
✨ Pixi task (install): gem install --user-install bundle && bundle install

Fetching bundle-0.0.1.gem
WARNING:  You don't have /home/feickert/.local/share/gem/ruby/3.1.0/bin in your PATH,
          gem executables will not run.
Successfully installed bundle-0.0.1
Parsing documentation for bundle-0.0.1
Done installing documentation for bundle after 0 seconds
1 gem installed
Bundler 2.3.7 is running, but your lockfile was generated with 2.3.13. Installing Bundler 2.3.13 and restarting using that version.
Fetching gem metadata from https://rubygems.org/.
Fetching bundler 2.3.13
Installing bundler 2.3.13
Fetching gem metadata from https://rubygems.org/.........
Your bundle is locked to nokogiri (1.18.3-x86_64-linux) from rubygems repository https://rubygems.org/ or installed locally, but that version can no longer be found in that source.
That means the author of nokogiri (1.18.3-x86_64-linux) has removed it. You'll need to update your bundle to a version other than nokogiri (1.18.3-x86_64-linux) that hasn't been
removed in order to install.

If I remove the Gemfile.lock and try to build it again it fails with

An error occurred while installing nokogiri (1.18.3), and Bundler cannot continue.

In Gemfile:
  html-proofer was resolved to 5.0.10, which depends on
    nokogiri
Full log:
$ pixi run install
✨ Pixi task (install): gem install --user-install bundle && bundle install

Fetching bundle-0.0.1.gem
WARNING:  You don't have /home/feickert/.local/share/gem/ruby/3.1.0/bin in your PATH,
	  gem executables will not run.
Successfully installed bundle-0.0.1
Parsing documentation for bundle-0.0.1
Done installing documentation for bundle after 0 seconds
1 gem installed
Fetching gem metadata from https://rubygems.org/..........
Resolving dependencies...
Fetching rake 13.2.1
Installing rake 13.2.1
Fetching afm 0.2.2
Fetching fiber-storage 1.0.0
Fetching traces 0.15.2
Fetching io-event 1.9.0
Fetching metrics 0.12.1
Fetching bigdecimal 3.1.9
Using bundler 2.3.7
Fetching concurrent-ruby 1.3.5
Fetching diff-lcs 1.6.0
Fetching mini_portile2 2.8.8
Fetching eventmachine 1.2.7
Fetching ffi 1.17.1
Fetching hashery 2.1.2
Fetching Ascii85 2.0.1
Fetching public_suffix 6.0.1
Fetching json 2.10.1
Fetching colorator 1.1.0
Fetching ast 2.4.2
Fetching forwardable-extended 2.6.0
Installing fiber-storage 1.0.0
Fetching fiber-annotation 0.2.0
Fetching http_parser.rb 0.8.0
Installing metrics 0.12.1
Installing afm 0.2.2
Installing traces 0.15.2
Installing Ascii85 2.0.1
Installing mini_portile2 2.8.8
Installing colorator 1.1.0
Installing ast 2.4.2
Installing fiber-annotation 0.2.0
Installing hashery 2.1.2
Installing forwardable-extended 2.6.0
Installing io-event 1.9.0 with native extensions
Installing diff-lcs 1.6.0
Fetching racc 1.8.1
Installing bigdecimal 3.1.9 with native extensions
Installing json 2.10.1 with native extensions
Installing public_suffix 6.0.1
Fetching ruby-rc4 0.1.5
Fetching rainbow 3.1.1
Fetching yell 2.2.2
Fetching zeitwerk 2.6.18
Fetching rb-fsevent 0.11.2
Fetching rexml 3.4.1
Fetching liquid 4.0.4
Installing ruby-rc4 0.1.5
Installing racc 1.8.1 with native extensions
Fetching mercenary 0.4.0
Installing rainbow 3.1.1
Installing yell 2.2.2
Installing zeitwerk 2.6.18
Installing eventmachine 1.2.7 with native extensions
Installing http_parser.rb 0.8.0 with native extensions
Installing mercenary 0.4.0
Fetching rouge 3.30.0
Installing rb-fsevent 0.11.2
Installing liquid 4.0.4
Installing concurrent-ruby 1.3.5
Installing rexml 3.4.1
Fetching safe_yaml 1.0.5
Fetching unicode-display_width 1.8.0
Fetching paco 0.2.3
Installing safe_yaml 1.0.5
Fetching parallel 1.26.3
Installing unicode-display_width 1.8.0
Installing paco 0.2.3
Fetching pkg-config 1.5.9
Installing parallel 1.26.3
Fetching regexp_parser 2.10.0
Fetching require-hooks 0.2.2
Fetching ruby-progressbar 1.13.0
Installing pkg-config 1.5.9
Fetching ruby-next-core 1.1.1
Installing require-hooks 0.2.2
Fetching webrick 1.9.1
Installing ruby-progressbar 1.13.0
Installing regexp_parser 2.10.0
Fetching fiber-local 1.1.0
Fetching pathutil 0.16.2
Fetching addressable 2.8.7
Fetching terminal-table 2.0.0
Installing fiber-local 1.1.0
Installing webrick 1.9.1
Installing pathutil 0.16.2
Installing ruby-next-core 1.1.1
Installing rouge 3.30.0
Installing terminal-table 2.0.0
Installing addressable 2.8.7
Installing ffi 1.17.1 with native extensions
Fetching kramdown 2.5.1
Fetching nokogiri 1.18.3
Fetching parser 3.3.7.1
Installing kramdown 2.5.1
Fetching i18n 1.14.7
Installing i18n 1.14.7
Installing parser 3.3.7.1
Installing nokogiri 1.18.3 with native extensions
Fetching ruby-next-parser 3.4.0.2
Fetching unparser 0.6.15
Fetching rubocop-ast 1.38.1
Installing unparser 0.6.15
Installing ruby-next-parser 3.4.0.2
Installing rubocop-ast 1.38.1
Fetching kramdown-parser-gfm 1.1.0
Fetching ruby-next 1.1.1
Installing kramdown-parser-gfm 1.1.0
Fetching rubocop 1.25.1
Installing ruby-next 1.1.1
Installing rubocop 1.25.1
Fetching rubocop-rake 0.6.0
Installing rubocop-rake 0.6.0
Fetching console 1.29.3
Installing console 1.29.3
Fetching async 2.23.0
Installing async 2.23.0
Fetching ttfunk 1.8.0
Installing ttfunk 1.8.0
Fetching pdf-reader 2.14.1
Installing pdf-reader 2.14.1
Fetching ethon 0.16.0
Fetching sassc 2.4.0
Fetching rb-inotify 0.11.1
Installing rb-inotify 0.11.1
Installing ethon 0.16.0
Fetching listen 3.9.0
Installing sassc 2.4.0 with native extensions
Installing listen 3.9.0
Fetching typhoeus 1.4.1
Fetching jekyll-watch 2.2.1
Installing typhoeus 1.4.1
Installing jekyll-watch 2.2.1
Fetching em-websocket 0.5.3
Installing em-websocket 0.5.3
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3/ext/nokogiri
/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/bin/ruby -I /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0 -r
./siteconf20250228-541672-h9w800.rb extconf.rb
checking for whether -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem
/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/include is accepted as CFLAGS... yes
checking for whether -DNDEBUG -D_FORTIFY_SOURCE=2 -O2 -isystem /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/include is accepted as CPPFLAGS... yes
checking for whether -Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,--disable-new-dtags -Wl,--gc-sections -Wl,--allow-shlib-undefined
-Wl,-rpath,/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib -Wl,-rpath-link,/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib
-L/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib is accepted as LDFLAGS... yes
checking for whether -std=c99 is accepted as CFLAGS... yes
checking for whether -Wno-declaration-after-statement is accepted as CFLAGS... yes
checking for whether -O2 is accepted as CFLAGS... yes
checking for whether -g is accepted as CFLAGS... yes
checking for whether -Winline is accepted as CFLAGS... yes
checking for whether -Wmissing-noreturn is accepted as CFLAGS... yes
checking for whether -Wconversion is accepted as CFLAGS... no
Building nokogiri using packaged libraries.
Static linking is enabled.
Cross build is disabled.
Using mini_portile version 2.8.8
checking for iconv... yes
---------- IMPORTANT NOTICE ----------
Building Nokogiri with a packaged version of libxml2-2.13.6.
Configuration options: --host\=x86_64-conda-linux-gnu --enable-static --disable-shared
--libdir\=/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3/ports/x86_64-linux/libxml2/2.13.6/lib --with-legacy
--with-iconv\=yes --disable-dependency-tracking --without-python --without-readline --with-c14n --with-debug --with-threads --disable-shared --enable-static CPPFLAGS\=-DNDEBUG\
-D_FORTIFY_SOURCE\=2\ -O2\ -isystem\ /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/include CFLAGS\=-march\=nocona\ -mtune\=haswell\ -ftree-vectorize\
-fPIC\ -fstack-protector-strong\ -fno-plt\ -O2\ -ffunction-sections\ -pipe\ -isystem\ /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/include\ -O2\ -g\
-fPIC
The following patches are being applied:
  - 0001-Remove-script-macro-support.patch
  - 0002-Update-entities-to-remove-handling-of-ssi.patch
  - 0009-allow-wildcard-namespaces.patch
  - 0010-update-config.guess-and-config.sub-for-libxml2.patch
  - 0011-rip-out-libxml2-s-libc_single_threaded-support.patch
  - 0019-xpath-Use-separate-static-hash-table-for-standard-fu.patch

The Nokogiri maintainers intend to provide timely security updates, but if
this is a concern for you and want to use your OS/distro system library
instead, then abort this installation process and install nokogiri as
instructed at:

  https://nokogiri.org/tutorials/installing_nokogiri.html#installing-using-standard-system-libraries

Note, however, that nokogiri cannot guarantee compatibility with every
version of libxml2 that may be provided by OS/package vendors.

Extracting libxml2-2.13.6.tar.xz into tmp/x86_64-conda-linux-gnu/ports/libxml2/2.13.6... OK
Running git apply with
/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3/patches/libxml2/0001-Remove-script-macro-support.patch... OK
Running git apply with
/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3/patches/libxml2/0002-Update-entities-to-remove-handling-of-ssi.patch...
OK
Running git apply with
/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3/patches/libxml2/0009-allow-wildcard-namespaces.patch... OK
Running git apply with
/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3/patches/libxml2/0010-update-config.guess-and-config.sub-for-libxml2.patch...
OK
Running git apply with
/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3/patches/libxml2/0011-rip-out-libxml2-s-libc_single_threaded-support.patch...
OK
Running git apply with
/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3/patches/libxml2/0019-xpath-Use-separate-static-hash-table-for-standard-fu.patch...
OK
Running 'configure' for libxml2 2.13.6... OK
Running 'compile' for libxml2 2.13.6... ERROR. Please review logs to see what happened:
----- contents of
'/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3/ext/nokogiri/tmp/x86_64-conda-linux-gnu/ports/libxml2/2.13.6/compile.log'
-----
make  all-recursive
make[1]: Entering directory
'/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3/ext/nokogiri/tmp/x86_64-conda-linux-gnu/ports/libxml2/2.13.6/libxml2-2.13.6'
Making all in include
make[2]: Entering directory
'/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3/ext/nokogiri/tmp/x86_64-conda-linux-gnu/ports/libxml2/2.13.6/libxml2-2.13.6/include'
Making all in libxml
make[3]: Entering directory
'/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3/ext/nokogiri/tmp/x86_64-conda-linux-gnu/ports/libxml2/2.13.6/libxml2-2.13.6/include/libxml'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory
'/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3/ext/nokogiri/tmp/x86_64-conda-linux-gnu/ports/libxml2/2.13.6/libxml2-2.13.6/include/libxml'
Making all in private
make[3]: Entering directory
'/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3/ext/nokogiri/tmp/x86_64-conda-linux-gnu/ports/libxml2/2.13.6/libxml2-2.13.6/include/private'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory
'/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3/ext/nokogiri/tmp/x86_64-conda-linux-gnu/ports/libxml2/2.13.6/libxml2-2.13.6/include/private'
make[3]: Entering directory
'/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3/ext/nokogiri/tmp/x86_64-conda-linux-gnu/ports/libxml2/2.13.6/libxml2-2.13.6/include'
make[3]: Nothing to be done for 'all-am'.
make[3]: Leaving directory
'/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3/ext/nokogiri/tmp/x86_64-conda-linux-gnu/ports/libxml2/2.13.6/libxml2-2.13.6/include'
make[2]: Leaving directory
'/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3/ext/nokogiri/tmp/x86_64-conda-linux-gnu/ports/libxml2/2.13.6/libxml2-2.13.6/include'
Making all in .
make[2]: Entering directory
'/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3/ext/nokogiri/tmp/x86_64-conda-linux-gnu/ports/libxml2/2.13.6/libxml2-2.13.6'
  CC       xmllint-xmllint.o
  CC       libxml2_la-buf.lo
  CC       libxml2_la-chvalid.lo
  CC       libxml2_la-dict.lo
  CC       libxml2_la-entities.lo
entities.c: In function 'xmlEncodeEntitiesInternal':
entities.c:542:68: warning: unused parameter 'attr' [-Wunused-parameter]
  542 | xmlEncodeEntitiesInternal(xmlDocPtr doc, const xmlChar *input, int attr) {
      |                                                                ~~~~^~~~
  CC       libxml2_la-encoding.lo
  CC       libxml2_la-error.lo
  CC       libxml2_la-globals.lo
  CC       libxml2_la-hash.lo
  CC       libxml2_la-list.lo
  CC       libxml2_la-parser.lo
  CC       libxml2_la-parserInternals.lo
  CC       libxml2_la-SAX2.lo
  CC       libxml2_la-threads.lo
  CC       libxml2_la-tree.lo
  CC       libxml2_la-uri.lo
  CC       libxml2_la-valid.lo
  CC       libxml2_la-xmlIO.lo
xmlIO.c:29:10: fatal error: lzma.h: No such file or directory
   29 | #include <lzma.h>
      |          ^~~~~~~~
compilation terminated.
make[2]: *** [Makefile:1236: libxml2_la-xmlIO.lo] Error 1
make[2]: Leaving directory
'/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3/ext/nokogiri/tmp/x86_64-conda-linux-gnu/ports/libxml2/2.13.6/libxml2-2.13.6'
make[1]: *** [Makefile:1534: all-recursive] Error 1
make[1]: Leaving directory
'/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3/ext/nokogiri/tmp/x86_64-conda-linux-gnu/ports/libxml2/2.13.6/libxml2-2.13.6'
make: *** [Makefile:769: all] Error 2
----- end of file -----
*** 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
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/bin/$(RUBY_BASE_NAME)
	--help
	--clean
	--prevent-strip
	--enable-system-libraries
	--disable-system-libraries
	--use-system-libraries
	--enable-system-libraries
	--disable-system-libraries
	--use-system-libraries
	--enable-static
	--disable-static
	--enable-cross-build
	--disable-cross-build
	--enable-cross-build
	--disable-cross-build
	--enable-xml2-legacy
	--disable-xml2-legacy
	--with-zlib-dir
	--with-zlib-include
	--without-zlib-include=${zlib-dir}/include
	--with-zlib-lib
	--without-zlib-lib=${zlib-dir}/lib
	--with-xml2-source-dir
	--enable-xml2-legacy
	--disable-xml2-legacy
/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/mini_portile2-2.8.8/lib/mini_portile2/mini_portile.rb:627:in `block in execute': Failed
to complete compile task (RuntimeError)
	from /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/mini_portile2-2.8.8/lib/mini_portile2/mini_portile.rb:593:in `chdir'
	from /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/mini_portile2-2.8.8/lib/mini_portile2/mini_portile.rb:593:in `execute'
	from /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/mini_portile2-2.8.8/lib/mini_portile2/mini_portile.rb:194:in `compile'
	from /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/mini_portile2-2.8.8/lib/mini_portile2/mini_portile.rb:237:in `cook'
	from extconf.rb:558:in `block (2 levels) in process_recipe'
	from extconf.rb:337:in `chdir'
	from extconf.rb:337:in `chdir_for_build'
	from extconf.rb:558:in `block in process_recipe'
	from <internal:kernel>:90:in `tap'
	from extconf.rb:456:in `process_recipe'
	from extconf.rb:900:in `<main>'

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

  /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/extensions/x86_64-linux/3.1.0/nokogiri-1.18.3/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3 for inspection.
Results logged to /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/extensions/x86_64-linux/3.1.0/nokogiri-1.18.3/gem_make.out

  /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0/rubygems/ext/builder.rb:95:in `run'
  /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0/rubygems/ext/ext_conf_builder.rb:47:in `block in build'
  /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0/tempfile.rb:317:in `open'
  /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0/rubygems/ext/ext_conf_builder.rb:26:in `build'
  /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0/rubygems/ext/builder.rb:161:in `build_extension'
  /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0/rubygems/ext/builder.rb:195:in `block in build_extensions'
  /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0/rubygems/ext/builder.rb:192:in `each'
  /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0/rubygems/ext/builder.rb:192:in `build_extensions'
  /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0/rubygems/installer.rb:853:in `build_extensions'
  /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0/bundler/rubygems_gem_installer.rb:71:in `build_extensions'
  /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0/bundler/rubygems_gem_installer.rb:28:in `install'
  /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0/bundler/source/rubygems.rb:204:in `install'
  /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0/bundler/installer/gem_installer.rb:54:in `install'
  /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0/bundler/installer/gem_installer.rb:16:in `install_from_spec'
  /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0/bundler/installer/parallel_installer.rb:186:in `do_install'
  /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0/bundler/installer/parallel_installer.rb:177:in `block in worker_pool'
  /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0/bundler/worker.rb:62:in `apply_func'
  /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0/bundler/worker.rb:57:in `block in process_queue'
  /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0/bundler/worker.rb:54:in `loop'
  /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0/bundler/worker.rb:54:in `process_queue'
  /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0/bundler/worker.rb:91:in `block (2 levels) in create_threads'

An error occurred while installing nokogiri (1.18.3), and Bundler cannot continue.

In Gemfile:
  html-proofer was resolved to 5.0.10, which depends on
    nokogiri

I don't really know Ruby that well, so while I get that Ruby registries aren't immutable (TIL) I don't know what requires nokogiri and how to correct this.

cc @henryiii

@matthewfeickert
Copy link
Member Author

matthewfeickert commented Mar 1, 2025

@henryiii's response on the IRIS-HEP Slack

It hasn’t been deleted, https://rubygems.org/gems/nokogiri/versions. It looks like there are two variants (gnu and musl), but you aren’t getting the variants. They split it up starting with 1.18 about two months ago. I bet something needs to be updated to understand variants, or you could ask for the older version of it. That’s an old version of bundler. 2.6 is the current one iirc. Bundler 2.3.21 added support for the variants.

@matthewfeickert
Copy link
Member Author

matthewfeickert commented Mar 1, 2025

How do I determine what in the Gemfile is pulling in em-websocket? If I look at the build logs, I see that the build failure is coming from trying to install it

Fetching em-websocket 0.5.3
Installing em-websocket 0.5.3
Gem::Ext::BuildError: ERROR: Failed to build gem native extension

but earlier on in the logs I see

Installing kramdown-parser-gfm 1.1.0
Installing nokogiri 1.18.3 with native extensions
Fetching unparser 0.6.15

so it seems like nokogiri is already installed but then em-websocket is trying to build it again?

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

    current directory: /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/share/rubygems/gems/nokogiri-1.18.3/ext/nokogiri
/home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/bin/ruby -I /home/feickert/Code/GitHub/iris-hep/iris-hep.github.io/.pixi/envs/default/lib/ruby/3.1.0 -r
./siteconf20250301-658685-crv1kg.rb extconf.rb

or is the

Installing nokogiri 1.18.3 with native extensions

as statement of what Ruby will do but hasn't yet?

I can see from gem dependency

Gem em-websocket-0.5.3
  eventmachine (>= 0.12.9)
  http_parser.rb (~> 0)

but that doesn't tell me why em-websocket is dependency on in general.

Here I'm using

$ pixi run bundler --version
Bundler version 2.6.5

@henryiii
Copy link
Collaborator

henryiii commented Mar 2, 2025

I believe it’s running in parallel. The new bundler is installing an old bundler because it’s in the lock file. And it’ll stick with that unless you run bundle update --bundler.

@henryiii
Copy link
Collaborator

henryiii commented Mar 2, 2025

We really need to drop old Ruby support, #1728. That’s part of why our bundler is so old.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants