Project

General

Profile

Actions

Bug #20431

closed

Ruby 3.3.0 build fail with make: *** [io_buffer.o] Error 1

Added by shubham_yadav (Shubham Yadav) 14 days ago. Updated 9 days ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:117531]

Description

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


Related issues 1 (0 open1 closed)

Has duplicate Ruby master - Bug #20430: Ruby 3.3.0 build fail with make: *** [io_buffer.o] Error 1ClosedActions

Updated by mame (Yusuke Endoh) 14 days ago

Could you elaborate your environment? OS and its version, C compiler and its version, etc.

Actions #2

Updated by mame (Yusuke Endoh) 14 days ago

  • Has duplicate Bug #20430: Ruby 3.3.0 build fail with make: *** [io_buffer.o] Error 1 added

Updated by shubham_yadav (Shubham Yadav) 14 days ago · Edited

gcc version :
$ gcc --version
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)

OS and it's version:
$ lsb_release -a
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: RedHatEnterpriseServer
Description: Red Hat Enterprise Linux Server release 6.10 (Santiago)
Release: 6.10
Codename: Santiago

Please let me know If any more info is required.

Updated by mame (Yusuke Endoh) 13 days ago

  • Status changed from Open to Feedback

Thank you. Currently ruby requires gcc 7 or higher. (#19353) Could you somehow prepare a new gcc and retry to build it?

BTW, as far as I know, RHEL 6 will end Extended Life-cycle Support soon. You might want to upgrade your OS as well. (However, RHEL 7 bundles gcc 4.8, which is still old for building ruby.)

Updated by nobu (Nobuyoshi Nakada) 9 days ago

  • 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.

Actions

Also available in: Atom PDF

Like0
Like1Like0Like0Like1Like0