Project

General

Profile

Actions

Bug #20151

open

Can't build Ruby 3.1 on FreeBSD 14.0

Added by hsbt (Hiroshi SHIBATA) 4 months ago. Updated 2 months ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:116026]

Description

I couldn't install Ruby 3.1.3 on FreeBSD 14.0.

compiling util.c
util.c:255:1: error: expected identifier or '('
ruby_qsort(void* base, const size_t nel, const size_t size, cmpfunc_t *cmp, void *d)
^
./include/ruby/util.h:124:21: note: expanded from macro 'ruby_qsort'
# define ruby_qsort qsort_r
                    ^
/usr/include/stdlib.h:356:5: note: expanded from macro 'qsort_r'
    __generic(arg5, int (*)(void *, const void *, const void *),        \
    ^
/usr/include/sys/cdefs.h:322:2: note: expanded from macro '__generic'
        _Generic(expr, t: yes, default: no)
        ^
1 error generated.
*** Error code 1

Stop.

Compiler version is here:

FreeBSD clang version 16.0.6 (https://github.com/llvm/llvm-project.git llvmorg-16.0.6-0-g7cbf1a259152)

I could install Ruby 3.2.2.


Related issues 1 (0 open1 closed)

Related to Ruby master - Bug #18997: Don't define ruby_qsort when POSIX qsort_r is availableClosedActions

Updated by shyouhei (Shyouhei Urabe) 4 months ago

This has to be related: https://github.com/freebsd/freebsd-src/commit/af3c78886fd8d4ca5eebdbe581a459a6f6d29d6a

Because ruby_qsort is now a macro that ultimately expands to a _Generic, which is an expression, which cannot exist at the toplevel.

We already have a sane qsort_r implementation in that environment. We don't have to reinvent the wheel. I guess reaching at util.c:255 is already something wrong.

Updated by taq (Eustaquio Rangel) 2 months ago

shyouhei (Shyouhei Urabe) wrote in #note-1:

This has to be related: https://github.com/freebsd/freebsd-src/commit/af3c78886fd8d4ca5eebdbe581a459a6f6d29d6a

Because ruby_qsort is now a macro that ultimately expands to a _Generic, which is an expression, which cannot exist at the toplevel.

We already have a sane qsort_r implementation in that environment. We don't have to reinvent the wheel. I guess reaching at util.c:255 is already something wrong.

I beg your pardon, but based on this, we'll need at least 3.2.0 to run on FreeBSD?

Actions #3

Updated by nobu (Nobuyoshi Nakada) 2 months ago

  • Related to Bug #18997: Don't define ruby_qsort when POSIX qsort_r is available added

Updated by hsbt (Hiroshi SHIBATA) 2 months ago

  • Backport changed from 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN to 3.0: DONTNEED, 3.1: REQUIRED, 3.2: DONTNEED, 3.3: DONTNEED
Actions

Also available in: Atom PDF

Like1
Like0Like0Like1Like1