Issue #19161 has been updated by eviljoel (evil joel).
File ruby322BuildFailure-20230404.Dockerfile added
@hsbt, @nagachika, and @nobu, despite the release notes, this was not successfully
backported to Ruby 3.2 in Ruby 3.2.2. I've attached a Dockerfile that proves it.
Assuming you have Docker installed, run the file with:
``` shell
docker build --file ruby322BuildFailure-20230404.Dockerfile .
```
You should get output:
```
compiling miniinit.c
In file included from vm_core.h:164:0,
from iseq.h:14,
from mini_builtin.c:3,
from miniinit.c:51:
thread_pthread.h:109:39: error: expected '=', ',', ';',
'asm' or '__attribute__' before 'struct'
RUBY_EXTERN RB_THREAD_LOCAL_SPECIFIER struct rb_execution_context_struct
*ruby_current_ec;
^
In file included from iseq.h:14:0,
from mini_builtin.c:3,
from miniinit.c:51:
vm_core.h: In function 'rb_current_execution_context':
vm_core.h:1865:34: error: 'ruby_current_ec' undeclared (first use in this
function)
rb_execution_context_t *ec = ruby_current_ec;
^
vm_core.h:1865:34: note: each undeclared identifier is reported only once for each
function it appears in
miniinit.c: At top level:
cc1: warning: unrecognized command line option "-Wno-tautological-compare"
[enabled by default]
cc1: warning: unrecognized command line option "-Wno-self-assign" [enabled by
default]
cc1: warning: unrecognized command line option "-Wno-parentheses-equality"
[enabled by default]
cc1: warning: unrecognized command line option "-Wno-constant-logical-operand"
[enabled by default]
cc1: warning: unrecognized command line option "-Wno-cast-function-type"
[enabled by default]
make: *** [miniinit.o] Error 1
The command '/bin/sh -c cd ruby-3.2.2 && make' returned a non-zero code:
2
```
You can see in the configuration summary that it is still trying to use C11:
```
---
Configuration summary for ruby version 3.2.2
* Installation prefix: /usr/local
* exec prefix: ${prefix}
* arch: x86_64-linux
* site arch: ${arch}
* RUBY_BASE_NAME: ruby
* ruby lib prefix: ${libdir}/${RUBY_BASE_NAME}
* site libraries path: ${rubylibprefix}/${sitearch}
* vendor path: ${rubylibprefix}/vendor_ruby
* target OS: linux
* compiler: gcc -std=gnu11
* with thread: pthread
* with coroutine: amd64
* enable shared libs: no
* dynamic library ext: so
* CFLAGS: ${optflags} ${debugflags} ${warnflags}
* LDFLAGS: -L. -fstack-protector-strong -rdynamic \
-Wl,-export-dynamic
* DLDFLAGS: -Wl,--compress-debug-sections=zlib
* optflags: -O3 -fno-fast-math
* debugflags: -ggdb3
* warnflags: -Wall -Wextra -Wdeprecated-declarations \
-Wdiv-by-zero -Wimplicit-function-declaration \
-Wimplicit-int -Wpointer-arith -Wwrite-strings \
-Wold-style-definition -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 \
-Wno-maybe-uninitialized
* strip command: strip -S -x
* install doc: rdoc
* MJIT support: yes
* YJIT support: no
* man page type: doc
---
```
----------------------------------------
Bug #19161: Cannot compile 3.0.5 or 3.1.3 on Red Hat Enterprise Linux 7
https://bugs.ruby-lang.org/issues/19161#change-102656
* Author: werebus (Matt Moretti)
* Status: Closed
* Priority: Normal
* Backport: 2.7: DONTNEED, 3.0: REQUIRED, 3.1: DONE, 3.2: DONE
----------------------------------------
When attempting to run `make` on either the 3.0.5 or 3.1.3 release, I get the following
error (I included the whole output as it's pretty short):
```
BASERUBY = /opt/ruby/bin/ruby --disable=gems
CC = gcc -std=gnu11
LD = ld
LDSHARED = gcc -std=gnu11 -shared
CFLAGS = -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wdeprecated-declarations
-Wimplicit-function-declaration -Wimplicit-int -Wpointer-arith -Wwrite-strings
-Wold-style-definition -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
XCFLAGS = -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-overflow
-fvisibility=hidden -fexcess-precision=standard -DRUBY_EXPORT -fPIE -I.
-I.ext/include/x86_64-linux -I./include -I. -I./enc/unicode/13.0.0
CPPFLAGS =
DLDFLAGS = -Wl,--compress-debug-sections=zlib -fstack-protector-strong -pie
SOLIBS = -lz -lpthread -lrt -lrt -ldl -lcrypt -lm
LANG = en_US.UTF-8
LC_ALL =
LC_CTYPE =
MFLAGS =
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
compiling ./main.c
compiling dmydln.c
compiling miniinit.c
In file included from vm_core.h:83:0,
from iseq.h:14,
from mini_builtin.c:3,
from miniinit.c:51:
thread_pthread.h:108:43: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before
‘struct’
RUBY_EXTERN RB_THREAD_LOCAL_SPECIFIER struct rb_execution_context_struct
*ruby_current_ec;
^
In file included from iseq.h:14:0,
from mini_builtin.c:3,
from miniinit.c:51:
vm_core.h: In function ‘rb_current_execution_context’:
vm_core.h:1870:34: error: ‘ruby_current_ec’ undeclared (first use in this function)
rb_execution_context_t *ec = ruby_current_ec;
^
vm_core.h:1870:34: note: each undeclared identifier is reported only once for each
function it appears in
miniinit.c: At top level:
cc1: warning: unrecognized command line option "-Wno-tautological-compare"
[enabled by default]
cc1: warning: unrecognized command line option "-Wno-self-assign" [enabled by
default]
cc1: warning: unrecognized command line option "-Wno-parentheses-equality"
[enabled by default]
cc1: warning: unrecognized command line option "-Wno-constant-logical-operand"
[enabled by default]
cc1: warning: unrecognized command line option "-Wno-cast-function-type"
[enabled by default]
make: *** [miniinit.o] Error 1
```
Both Ruby 3.0.4 and 3.1.2 build without error and pass (all but one of) the `make check`
tests.
I know RHEL 7 is getting to be pretty old; I suspect a factor here are the ancient build
tools available to me. But... EOL for Ruby 2.7 comes before the one for RHEL 7, so I'm
trying to prioritize.
---Files--------------------------------
ruby322BuildFailure-20230404.Dockerfile (531 Bytes)
--
https://bugs.ruby-lang.org/