Good day,
I have quite an usual case of not being able to install native (compiled from C) ruby gems. My digging lead me to following error:
‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
I’m not sure, why gcc compiled would be missing stdbool. Is it older version or something?
Here is a step-by-step how I reproduced this and what kinf of errors I encountered in the process.
gem install io-event ✔
Building native extensions. This could take a while...
ERROR: Error installing io-event:
ERROR: Failed to build gem native extension.
current directory: /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/gems/io-event-1.10.0/ext
/home/sk/.local/share/mise/installs/ruby/3.4.1/bin/ruby extconf.rb
checking for rb_ext_ractor_safe()... *** 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=/home/sk/.local/share/mise/installs/ruby/3.4.1/bin/$(RUBY_BASE_NAME)
/home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:528:in 'MakeMakefile#try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:621:in 'MakeMakefile#try_link0'
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:639:in 'MakeMakefile#try_link'
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:881:in 'MakeMakefile#try_func'
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:1201:in 'block in MakeMakefile#have_func'
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:1070:in 'block in MakeMakefile#checking_for'
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:370:in 'block (2 levels) in MakeMakefile::Logging.postpone'
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:340:in 'MakeMakefile::Logging.open'
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:370:in 'block in MakeMakefile::Logging.postpone'
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:340:in 'MakeMakefile::Logging.open'
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:366:in 'MakeMakefile::Logging.postpone'
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:1069:in 'MakeMakefile#checking_for'
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:1200:in 'MakeMakefile#have_func'
from extconf.rb:29:in '<main>'
To see why this extension failed to compile, please check the mkmf.log which can be found here:
/home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/extensions/x86_64-linux/3.4.0/io-event-1.10.0/mkmf.log
extconf failed, exit code 1
Gem files will remain installed in /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/gems/io-event-1.10.0 for inspection.
Results logged to /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/extensions/x86_64-linux/3.4.0/io-event-1.10.0/gem_make.out
It says, that You have to install development tools first.
but I have the usual suspects for C compilation (like base-devel
and gcc
).
Here are more errors - gem_make.out file.
current directory: /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/gems/io-event-1.10.0/ext
/home/sk/.local/share/mise/installs/ruby/3.4.1/bin/ruby extconf.rb
checking for rb_ext_ractor_safe()... *** 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=/home/sk/.local/share/mise/installs/ruby/3.4.1/bin/$(RUBY_BASE_NAME)
/home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:528:in 'MakeMakefile#try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:621:in 'MakeMakefile#try_link0'
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:639:in 'MakeMakefile#try_link'
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:881:in 'MakeMakefile#try_func'
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:1201:in 'block in MakeMakefile#have_func'
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:1070:in 'block in MakeMakefile#checking_for'
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:370:in 'block (2 levels) in MakeMakefile::Logging.postpone'
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:340:in 'MakeMakefile::Logging.open'
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:370:in 'block in MakeMakefile::Logging.postpone'
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:340:in 'MakeMakefile::Logging.open'
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:366:in 'MakeMakefile::Logging.postpone'
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:1069:in 'MakeMakefile#checking_for'
from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:1200:in 'MakeMakefile#have_func'
from extconf.rb:29:in '<main>'
To see why this extension failed to compile, please check the mkmf.log which can be found here:
/home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/extensions/x86_64-linux/3.4.0/io-event-1.10.0/mkmf.log
extconf failed, exit code 1
And mkmf.log.
LD_LIBRARY_PATH=.:/home/sk/.local/share/mise/installs/ruby/3.4.1/lib ASAN_OPTIONS=detect_leaks=0 "gcc -o conftest -I/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/x86_64-linux -I/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/backward -I/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0 -I. -fstack-protector-strong -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wdiv-by-zero -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wold-style-definition -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -Wmisleading-indentation -Wundef -fPIC -Wall -Wno-unknown-pragmas -std=c99 conftest.c -L. -L/home/sk/.local/share/mise/installs/ruby/3.4.1/lib -Wl,-rpath,/home/sk/.local/share/mise/installs/ruby/3.4.1/lib -L. -fstack-protector-strong -L/home/linuxbrew/.linuxbrew/Cellar/gmp/6.3.0/lib -Wl,-rpath,/home/linuxbrew/.linuxbrew/Cellar/gmp/6.3.0/lib -rdynamic -Wl,-export-dynamic -Wl,--no-as-needed -Wl,-rpath,/home/sk/.local/share/mise/installs/ruby/3.4.1/lib -L/home/sk/.local/share/mise/installs/ruby/3.4.1/lib -lruby -lm -lpthread -lc"
In file included from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/arithmetic/long.h:42,
from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/arithmetic/int.h:26,
from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/arithmetic/char.h:23,
from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/arithmetic.h:24,
from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/ruby.h:28,
from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby.h:38,
from conftest.c:1:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:137:15: error: unknown type name ‘bool’
137 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:31:1: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
30 | #include "ruby/internal/attr/enum_extensibility.h"
+++ |+#include <stdbool.h>
31 | #include "ruby/internal/stdbool.h"
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:172:15: error: unknown type name ‘bool’
172 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:172:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:188:15: error: unknown type name ‘bool’
188 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:188:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:205:15: error: unknown type name ‘bool’
205 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:205:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:246:15: error: unknown type name ‘bool’
246 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:246:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:266:15: error: unknown type name ‘bool’
266 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:266:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:287:15: error: unknown type name ‘bool’
287 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:287:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:310:15: error: unknown type name ‘bool’
310 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:310:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:326:15: error: unknown type name ‘bool’
326 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:326:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/arithmetic/long.h:215:15: error: unknown type name ‘bool’
215 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/arithmetic/long.h:43:1: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
42 | #include "ruby/internal/special_consts.h" /* FIXNUM_FLAG */
+++ |+#include <stdbool.h>
43 | #include "ruby/internal/value.h"
In file included from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:38,
from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rstring.h:30,
from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/arithmetic/char.h:29:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:203:15: error: unknown type name ‘bool’
203 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:34:1: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
33 | #include "ruby/internal/error.h"
+++ |+#include <stdbool.h>
34 | #include "ruby/internal/has/builtin.h"
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h: In function ‘rb_integer_type_p’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:207:16: error: ‘true’ undeclared (first use in this function)
207 | return true;
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:207:16: note: ‘true’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:207:16: note: each undeclared identifier is reported only once for each function it appears in
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:210:16: error: ‘false’ undeclared (first use in this function)
210 | return false;
| ^~~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:210:16: note: ‘false’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h: At top level:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:263:15: error: unknown type name ‘bool’
263 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:263:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h: In function ‘RB_FLOAT_TYPE_P’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:267:16: error: ‘true’ undeclared (first use in this function)
267 | return true;
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:267:16: note: ‘true’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:270:16: error: ‘false’ undeclared (first use in this function)
270 | return false;
| ^~~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:270:16: note: ‘false’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h: At top level:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:286:15: error: unknown type name ‘bool’
286 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:286:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h: In function ‘RB_DYNAMIC_SYM_P’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:290:16: error: ‘false’ undeclared (first use in this function)
290 | return false;
| ^~~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:290:16: note: ‘false’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h: At top level:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:306:15: error: unknown type name ‘bool’
306 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:306:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:325:8: error: unknown type name ‘bool’
325 | static bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:325:8: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h: In function ‘rbimpl_RB_TYPE_P_fastpath’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:350:16: error: ‘false’ undeclared (first use in this function)
350 | return false;
| ^~~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:350:16: note: ‘false’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:353:16: error: ‘true’ undeclared (first use in this function)
353 | return true;
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:353:16: note: ‘true’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h: At top level:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:375:15: error: unknown type name ‘bool’
375 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:375:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:419:15: error: unknown type name ‘bool’
419 | static inline bool rbimpl_rtypeddata_p(VALUE obj);
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:419:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:443:8: error: unknown type name ‘bool’
443 | static bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:41:1: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
40 | #include "ruby/defines.h"
+++ |+#include <stdbool.h>
41 |
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h: In function ‘RB_FL_ABLE’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:447:16: error: ‘false’ undeclared (first use in this function)
447 | return false;
| ^~~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:447:16: note: ‘false’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:453:16: error: ‘true’ undeclared (first use in this function)
453 | return true;
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:453:16: note: ‘true’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h: At top level:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:517:15: error: unknown type name ‘bool’
517 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:517:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:533:15: error: unknown type name ‘bool’
533 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:533:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:551:15: error: unknown type name ‘bool’
551 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:551:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:567:15: error: unknown type name ‘bool’
567 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:567:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:755:15: error: unknown type name ‘bool’
755 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:755:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h: In function ‘RB_OBJ_TAINTABLE’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:759:12: error: ‘false’ undeclared (first use in this function)
759 | return false;
| ^~~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:759:12: note: ‘false’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h: In function ‘RB_OBJ_TAINTED_RAW’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:777:12: error: ‘false’ undeclared (first use in this function)
777 | return false;
| ^~~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:777:12: note: ‘false’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h: At top level:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:791:15: error: unknown type name ‘bool’
791 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:791:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h: In function ‘RB_OBJ_TAINTED’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:795:12: error: ‘false’ undeclared (first use in this function)
795 | return false;
| ^~~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:795:12: note: ‘false’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h: At top level:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:897:15: error: unknown type name ‘bool’
897 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:897:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h: In function ‘RB_OBJ_FROZEN’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:901:16: error: ‘true’ undeclared (first use in this function)
901 | return true;
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:901:16: note: ‘true’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
In file included from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rarray.h:32,
from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core.h:23,
from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/ruby.h:29:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/gc.h: At top level:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/gc.h:705:15: error: unknown type name ‘bool’
705 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/gc.h:27:1: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
26 | # include <stddef.h> /* size_t */
+++ |+#include <stdbool.h>
27 | #endif
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/gc.h:725:15: error: unknown type name ‘bool’
725 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/gc.h:725:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/gc.h: In function ‘RB_OBJ_PROMOTED’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/gc.h:729:16: error: ‘false’ undeclared (first use in this function)
729 | return false;
| ^~~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/gc.h:729:16: note: ‘false’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
In file included from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core.h:25:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rbignum.h: At top level:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rbignum.h:60:15: error: unknown type name ‘bool’
60 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rbignum.h:1:1: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
+++ |+#include <stdbool.h>
1 | #ifndef RBIMPL_RBIGNUM_H /*-*-C++-*-vi:se ft=cpp:*/
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rbignum.h:73:15: error: unknown type name ‘bool’
73 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rbignum.h:73:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
In file included from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core.h:34:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rtypeddata.h:518:15: error: unknown type name ‘bool’
518 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rtypeddata.h:27:1: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
26 | # include <stddef.h>
+++ |+#include <stdbool.h>
27 | #endif
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rtypeddata.h:561:15: error: unknown type name ‘bool’
561 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rtypeddata.h:561:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rtypeddata.h:578:15: error: unknown type name ‘bool’
578 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rtypeddata.h:578:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
In file included from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/ruby.h:42:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/memory.h:420:5: error: unknown type name ‘bool’
420 | bool left; /**< Whether overflow happened or not. */
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/memory.h:65:1: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
64 | #include "ruby/internal/stdckdint.h"
+++ |+#include <stdbool.h>
65 | #include "ruby/internal/xmalloc.h"
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/memory.h: In function ‘rbimpl_size_mul_overflow’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/memory.h:574:49: error: ‘false’ undeclared (first use in this function)
574 | struct rbimpl_size_mul_overflow_tag ret = { false, 0, };
| ^~~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/memory.h:574:49: note: ‘false’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
In file included from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/ruby.h:46:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h: At top level:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:252:15: error: unknown type name ‘bool’
252 | static inline bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:39:1: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
38 | #include "ruby/internal/intern/proc.h" /* rb_block_proc */
+++ |+#include <stdbool.h>
39 | #include "ruby/internal/iterator.h" /* rb_block_given_p / rb_keyword_given_p */
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h: In function ‘rb_scan_args_keyword_p’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:259:16: error: ‘true’ undeclared (first use in this function)
259 | return true;
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:259:16: note: ‘true’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:263:16: error: ‘false’ undeclared (first use in this function)
263 | return false;
| ^~~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:263:16: note: ‘false’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h: At top level:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:268:8: error: unknown type name ‘bool’
268 | static bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:268:8: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:282:8: error: unknown type name ‘bool’
282 | static bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:282:8: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:303:8: error: unknown type name ‘bool’
303 | static bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:303:8: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:334:8: error: unknown type name ‘bool’
334 | static bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:334:8: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:349:8: error: unknown type name ‘bool’
349 | static bool
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:349:8: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:390:18: error: unknown type name ‘bool’
390 | bool f_var, bool f_hash, bool f_block,
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:390:18: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:390:30: error: unknown type name ‘bool’
390 | bool f_var, bool f_hash, bool f_block,
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:390:30: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:390:43: error: unknown type name ‘bool’
390 | bool f_var, bool f_hash, bool f_block,
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:390:43: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
In file included from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/intern.h:41,
from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/ruby.h:194:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/intern/load.h:234:25: error: unknown type name ‘bool’
234 | void rb_ext_ractor_safe(bool flag);
| ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/intern/load.h:1:1: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
+++ |+#include <stdbool.h>
1 | #ifndef RBIMPL_INTERN_LOAD_H /*-*-C++-*-vi:se ft=cpp:*/
cc1: note: unrecognized command-line option ‘-Wno-self-assign’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-parentheses-equality’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-constant-logical-operand’ may have been intended to silence earlier diagnostics
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: int main(int argc, char **argv)
4: {
5: return !!argv[argc];
6: }
/* end */
I’m all out ideas. Maybe someone has some ideas why this could be happening? I have a KDE version of Manjaro on different machine and everything is just there.