Issue #20431 has been updated by nobu (Nobuyoshi Nakada).
Status changed from Feedback to Closed
Backport changed from 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN to 3.0:
DONTNEED, 3.1: REQUIRED, 3.2: REQUIRED, 3.3: REQUIRED
The main cause is not only by old gcc.
Although newer gcc defines `__BYTE_ORDER__` indeed, but other compilers may not.
And the use of `REG_DWORD` in the fallback part was wrong.
`REG_DWORD` is a constant used as a registry type on Windows, and
`REG_DWORD_LITTLE_ENDIAN` is an alias of it always, but `REG_DWORD_BIG_ENDIAN` is not
equal to it.
That is, the constant is not for portabilities.
----------------------------------------
Bug #20431: Ruby 3.3.0 build fail with make: *** [io_buffer.o] Error 1
https://bugs.ruby-lang.org/issues/20431#change-108046
* Author: shubham_yadav (Shubham Yadav)
* Status: Closed
* Backport: 3.0: DONTNEED, 3.1: REQUIRED, 3.2: REQUIRED, 3.3: REQUIRED
----------------------------------------
I'm trying to build ruby from scratch with openss1.1.0. But it's failing with
below error.
In file included from ./include/ruby/internal/arithmetic/char.h:23,
from ./include/ruby/internal/arithmetic.h:24,
from ./include/ruby/ruby.h:28,
from ./include/ruby/encoding.h:19,
from ./include/ruby/io.h:16,
from io_buffer.c:9:
./include/ruby/internal/arithmetic/int.h: In function ‘rb_int2num_inline’:
./include/ruby/internal/arithmetic/int.h:241: warning: comparison is always true due to
limited range of data type
./include/ruby/internal/arithmetic/int.h:241: warning: comparison is always true due to
limited range of data type
./include/ruby/internal/arithmetic/int.h: In function ‘rb_uint2num_inline’:
./include/ruby/internal/arithmetic/int.h:256: warning: comparison is always true due to
limited range of data type
io_buffer.c: In function ‘io_buffer_read_U8’:
io_buffer.c:1872: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c:1872: error: (Each undeclared identifier is reported only once
io_buffer.c:1872: error: for each function it appears in.)
io_buffer.c: In function ‘io_buffer_write_U8’:
io_buffer.c:1872: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_read_S8’:
io_buffer.c:1873: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_write_S8’:
io_buffer.c:1873: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_read_u16’:
io_buffer.c:1875: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_write_u16’:
io_buffer.c:1875: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_read_U16’:
io_buffer.c:1876: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_write_U16’:
io_buffer.c:1876: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_read_s16’:
io_buffer.c:1877: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_write_s16’:
io_buffer.c:1877: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_read_S16’:
io_buffer.c:1878: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_write_S16’:
io_buffer.c:1878: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_read_u32’:
io_buffer.c:1880: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_write_u32’:
io_buffer.c:1880: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_read_U32’:
io_buffer.c:1881: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_write_U32’:
io_buffer.c:1881: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_read_s32’:
io_buffer.c:1882: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_write_s32’:
io_buffer.c:1882: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_read_S32’:
io_buffer.c:1883: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_write_S32’:
io_buffer.c:1883: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_read_u64’:
io_buffer.c:1885: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_write_u64’:
io_buffer.c:1885: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_read_U64’:
io_buffer.c:1886: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_write_U64’:
io_buffer.c:1886: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_read_s64’:
io_buffer.c:1887: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_write_s64’:
io_buffer.c:1887: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_read_S64’:
io_buffer.c:1888: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_write_S64’:
io_buffer.c:1888: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_read_f32’:
io_buffer.c:1890: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_write_f32’:
io_buffer.c:1890: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_read_F32’:
io_buffer.c:1891: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_write_F32’:
io_buffer.c:1891: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_read_f64’:
io_buffer.c:1892: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_write_f64’:
io_buffer.c:1892: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_read_F64’:
io_buffer.c:1893: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘io_buffer_write_F64’:
io_buffer.c:1893: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
io_buffer.c: In function ‘Init_IO_Buffer’:
io_buffer.c:3702: error: ‘RB_IO_BUFFER_HOST_ENDIAN’ undeclared (first use in this
function)
At top level:
cc1: warning: unrecognized command line option "-Wno-maybe-uninitialized"
cc1: warning: unrecognized command line option "-Wno-tautological-compare"
cc1: warning: unrecognized command line option "-Wno-self-assign"
cc1: warning: unrecognized command line option "-Wno-parentheses-equality"
cc1: warning: unrecognized command line option "-Wno-constant-logical-operand"
cc1: warning: unrecognized command line option "-Wno-cast-function-type"
make: *** [io_buffer.o] Error 1
--
https://bugs.ruby-lang.org/