Skip to content

Can't install on Windows 11 + Ruby 4.0.2 due to native extension build failure #44

@Calinou

Description

@Calinou

I'm trying to build https://github.com/godotengine/godot-website on Windows 11 24H2 with Ruby 4.0.2. I have RIDK and MSYS2 installed and activated in the current environment; other native extensions used by the project compile fine.

However, ruby-magic fails to compile:

$ bundle install                                                                                                                                                                                                                                                                                                                                                                                                                    ─╯
Fetching gem metadata from https://rubygems.org/.........
Installing ruby-magic 0.6.0 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory:
C:/Users/Hugo/scoop/persist/ruby/gems/gems/ruby-magic-0.6.0/ext/magic
C:/Users/Hugo/scoop/apps/ruby/4.0.2-1/bin/ruby.exe extconf.rb
Building ruby-magic using packaged libraries.
Static linking is enabled.
Cross build is disabled.
Using mini_portile version 2.8.9
---------- IMPORTANT NOTICE ----------
Building Ruby Magic with a packaged version of libmagic-5.44.
Configuration options: --disable-silent-rules --disable-dependency-tracking
--enable-fsect-man5 --disable-shared --enable-static CFLAGS\=-fPIC
The following patches are being applied:
  - 0001-Don-t-attempt-to-build-tests-documentation-and-Python-bindings.patch
Extracting file-5.44.tar.gz into tmp/x86_64-w64-mingw32/ports/libmagic/5.44...
OK
Running git apply with
C:/Users/Hugo/scoop/persist/ruby/gems/gems/ruby-magic-0.6.0/patches/libmagic/0001-Don-t-attempt-to-build-tests-documentation-and-Python-bindings.patch...
OK
Running 'configure' for libmagic 5.44... OK
Running 'compile' for libmagic 5.44... ERROR. Please review logs to see what
happened:
----- contents of
'C:/Users/Hugo/scoop/persist/ruby/gems/gems/ruby-magic-0.6.0/ext/magic/tmp/x86_64-w64-mingw32/ports/libmagic/5.44/compile.log'
-----
make  all-recursive
make[1]: Entering directory
'/c/Users/Hugo/scoop/persist/ruby/gems/gems/ruby-magic-0.6.0/ext/magic/tmp/x86_64-w64-mingw32/ports/libmagic/5.44/file-5.44'
Making all in src
make[2]: Entering directory
'/c/Users/Hugo/scoop/persist/ruby/gems/gems/ruby-magic-0.6.0/ext/magic/tmp/x86_64-w64-mingw32/ports/libmagic/5.44/file-5.44/src'
sed -e "s/X.YY/$(echo 5.44 | tr -d .)/" < ../src/magic.h.in > magic.h
make  all-am
make[3]: Entering directory
'/c/Users/Hugo/scoop/persist/ruby/gems/gems/ruby-magic-0.6.0/ext/magic/tmp/x86_64-w64-mingw32/ports/libmagic/5.44/file-5.44/src'
gcc -DHAVE_CONFIG_H -I. -I..
-DMAGIC='"C:/Users/Hugo/scoop/persist/ruby/gems/gems/ruby-magic-0.6.0/ports/x86_64-w64-mingw32/libmagic/5.44/share/misc/magic"'
-fvisibility=hidden -Wall -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith        -Wmissing-declarations -Wredundant-decls -Wnested-externs
-Wsign-compare -Wreturn-type -Wswitch -Wshadow        -Wcast-qual
-Wwrite-strings -Wextra -Wunused-parameter -Wformat=2 -fPIC -c -o file.o file.c
In file included from file.c:32:
file.h:82:10: fatal error: regex.h: No such file or directory
   82 | #include <regex.h>
      |          ^~~~~~~~~
compilation terminated.
make[3]: *** [Makefile:560: file.o] Error 1
make[3]: Leaving directory
'/c/Users/Hugo/scoop/persist/ruby/gems/gems/ruby-magic-0.6.0/ext/magic/tmp/x86_64-w64-mingw32/ports/libmagic/5.44/file-5.44/src'
make[2]: *** [Makefile:381: all] Error 2
make[2]: Leaving directory
'/c/Users/Hugo/scoop/persist/ruby/gems/gems/ruby-magic-0.6.0/ext/magic/tmp/x86_64-w64-mingw32/ports/libmagic/5.44/file-5.44/src'
make[1]: *** [Makefile:462: all-recursive] Error 1
make[1]: Leaving directory
'/c/Users/Hugo/scoop/persist/ruby/gems/gems/ruby-magic-0.6.0/ext/magic/tmp/x86_64-w64-mingw32/ports/libmagic/5.44/file-5.44'
make: *** [Makefile:371: 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=${opt-dir}/include
        --without-opt-include
        --with-opt-lib=${opt-dir}/lib
        --without-opt-lib
        --with-make-prog
        --without-make-prog
        --srcdir=.
        --curdir
        --ruby=C:/Users/Hugo/scoop/apps/ruby/4.0.2-1/bin/$(RUBY_BASE_NAME)
        --help
        --clean
        --enable-system-libraries
        --disable-system-libraries
        --use-system-libraries
        --enable-static
        --disable-static
        --enable-cross-build
        --disable-cross-build
        --with-magic-flags
        --without-magic-flags
C:/Users/Hugo/scoop/persist/ruby/gems/gems/mini_portile2-2.8.9/lib/mini_portile2/mini_portile.rb:628:in
'block in MiniPortile#execute': Failed to complete compile task (RuntimeError)
from
C:/Users/Hugo/scoop/persist/ruby/gems/gems/mini_portile2-2.8.9/lib/mini_portile2/mini_portile.rb:594:in
'Dir.chdir'
from
C:/Users/Hugo/scoop/persist/ruby/gems/gems/mini_portile2-2.8.9/lib/mini_portile2/mini_portile.rb:594:in
'MiniPortile#execute'
from
C:/Users/Hugo/scoop/persist/ruby/gems/gems/mini_portile2-2.8.9/lib/mini_portile2/mini_portile.rb:195:in
'MiniPortile#compile'
from
C:/Users/Hugo/scoop/persist/ruby/gems/gems/mini_portile2-2.8.9/lib/mini_portile2/mini_portile.rb:238:in
'MiniPortile#cook'
        from extconf.rb:169:in 'block in Object#process_recipe'
        from extconf.rb:77:in 'Kernel#tap'
        from extconf.rb:77:in 'Object#process_recipe'
        from extconf.rb:293:in '<main>'

extconf failed, exit code 1

Gem files will remain installed in
C:/Users/Hugo/scoop/persist/ruby/gems/gems/ruby-magic-0.6.0 for inspection.
Results logged to
C:/Users/Hugo/scoop/persist/ruby/gems/extensions/x64-mingw-ucrt/4.0.0/ruby-magic-0.6.0/gem_make.out

C:/Users/Hugo/scoop/apps/ruby/4.0.2-1/lib/ruby/4.0.0/rubygems/ext/builder.rb:139:in
'Gem::Ext::Builder.run'
C:/Users/Hugo/scoop/apps/ruby/4.0.2-1/lib/ruby/4.0.0/rubygems/ext/ext_conf_builder.rb:30:in
'Gem::Ext::ExtConfBuilder.build'
C:/Users/Hugo/scoop/apps/ruby/4.0.2-1/lib/ruby/4.0.0/rubygems/ext/builder.rb:218:in
'Gem::Ext::Builder#build_extension'
C:/Users/Hugo/scoop/apps/ruby/4.0.2-1/lib/ruby/4.0.0/rubygems/ext/builder.rb:250:in
'block in Gem::Ext::Builder#build_extensions'
C:/Users/Hugo/scoop/apps/ruby/4.0.2-1/lib/ruby/4.0.0/rubygems/ext/builder.rb:249:in
'Array#each'
C:/Users/Hugo/scoop/apps/ruby/4.0.2-1/lib/ruby/4.0.0/rubygems/ext/builder.rb:249:in
'Gem::Ext::Builder#build_extensions'
C:/Users/Hugo/scoop/apps/ruby/4.0.2-1/lib/ruby/4.0.0/rubygems/installer.rb:809:in
'Gem::Installer#build_extensions'
C:/Users/Hugo/scoop/persist/ruby/gems/gems/bundler-2.6.2/lib/bundler/rubygems_gem_installer.rb:111:in
'Bundler::RubyGemsGemInstaller#build_extensions'
C:/Users/Hugo/scoop/persist/ruby/gems/gems/bundler-2.6.2/lib/bundler/rubygems_gem_installer.rb:30:in
'Bundler::RubyGemsGemInstaller#install'
C:/Users/Hugo/scoop/persist/ruby/gems/gems/bundler-2.6.2/lib/bundler/source/rubygems.rb:205:in
'Bundler::Source::Rubygems#install'
C:/Users/Hugo/scoop/persist/ruby/gems/gems/bundler-2.6.2/lib/bundler/installer/gem_installer.rb:55:in
'Bundler::GemInstaller#install'
C:/Users/Hugo/scoop/persist/ruby/gems/gems/bundler-2.6.2/lib/bundler/installer/gem_installer.rb:17:in
'Bundler::GemInstaller#install_from_spec'
C:/Users/Hugo/scoop/persist/ruby/gems/gems/bundler-2.6.2/lib/bundler/installer/parallel_installer.rb:133:in
'Bundler::ParallelInstaller#do_install'
C:/Users/Hugo/scoop/persist/ruby/gems/gems/bundler-2.6.2/lib/bundler/installer/parallel_installer.rb:124:in
'block in Bundler::ParallelInstaller#worker_pool'
C:/Users/Hugo/scoop/persist/ruby/gems/gems/bundler-2.6.2/lib/bundler/worker.rb:62:in
'Bundler::Worker#apply_func'
C:/Users/Hugo/scoop/persist/ruby/gems/gems/bundler-2.6.2/lib/bundler/worker.rb:57:in
'block in Bundler::Worker#process_queue'
C:/Users/Hugo/scoop/persist/ruby/gems/gems/bundler-2.6.2/lib/bundler/worker.rb:54:in
'Kernel#loop'
C:/Users/Hugo/scoop/persist/ruby/gems/gems/bundler-2.6.2/lib/bundler/worker.rb:54:in
'Bundler::Worker#process_queue'
C:/Users/Hugo/scoop/persist/ruby/gems/gems/bundler-2.6.2/lib/bundler/worker.rb:90:in
'block (2 levels) in Bundler::Worker#create_threads'

An error occurred while installing ruby-magic (0.6.0), and Bundler cannot
continue.

In Gemfile:
  ruby-magic

I've tried to install mingw-w64-x86_64-libtre and mingw-w64-x86_64-libsystre in MSYS2 to no avail. I'm not sure what can provide a compatible regex.h (this gist seemed to point in the direction of libsystre).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions