[ruby-core:108291] [Ruby master Misc#18726] CI Error on c99 and c2x
From:
"shyouhei (Shyouhei Urabe)" <noreply@...>
Date:
2022-04-19 09:05:55 UTC
List:
ruby-core #108291
Issue #18726 has been updated by shyouhei (Shyouhei Urabe).
alanwu (Alan Wu) wrote in #note-8:
> I feel that C2X with
> pre-release versions of Clang is too much of a moving target. Maybe it's
> best to wait a few months for things to mature. More warnings and errors
> are under development and a more up-to-date standard draft should help with
> understanding Clang.
Yes, I agree with this part. I didn't expect WG14 to become this aggressive. Clang-15 is a sooner-or-later thing, we also have to deal with C23 someday. But why not avoid mixing the two?
----------------------------------------
Misc #18726: CI Error on c99 and c2x
https://bugs.ruby-lang.org/issues/18726#change-97312
* Author: znz (Kazuhiro NISHIYAMA)
* Status: Open
* Priority: Normal
* Assignee: shyouhei (Shyouhei Urabe)
----------------------------------------
https://github.com/ruby/ruby/runs/6013849896?check_suite_focus=true
```
checking char bit... 8
checking size of int... 0
checking size of short... 0
checking size of long... 0
configure: error: in `/__w/ruby/ruby/build':
configure: error: cannot compute sizeof (long long)
See `config.log' for more details
checking size of long long...
Error: Process completed with exit code 77.
```
I investigate it, the cause is that autoconf is old in `ghcr.io/ruby/ruby-ci-image:clang-15`. (Autoconf 2.69)
Autoconf 2.71 generates with `void`.
How to reproduce:
```
% docker run --rm -it ghcr.io/ruby/ruby-ci-image:clang-15
$ sudo apt update
$ sudo apt install git
$ git clone --depth=1 https://github.com/ruby/ruby $HOME/src
$ mkdir $HOME/build
$ cd $HOME/build
$ ../src/autogen.sh
$ ../src/configure -C --enable-debug-env --disable-install-doc --with-ext=-test-/cxxanyargs,+ --without-valgrind --without-jemalloc --without-gmp --with-gcc="clang-15 -std=c99 -Werror=pedantic -pedantic-errors" --enable-shared optflags=-O1 debugflags=-ggdb3
```
Tail of configure output:
```
checking char bit... 8
checking size of int... 0
checking size of short... 0
checking size of long... 0
checking size of long long... configure: error: in `/home/ci/build':
configure: error: cannot compute sizeof (long long)
See `config.log' for more details
```
Quote from config.log:
```
configure:13939: checking size of int
configure:13944: clang-15 -std=c99 -Werror=pedantic -pedantic-errors -o conftest -O1 -fno-fast-math -ggdb3 -fdeclspec -fstack-protector-strong conftest.c -lm >&5
conftest.c:107:25: error: a function declaration without a prototype is deprecated in all versions of C [-Werror,-Wstrict-prototypes]
static long int longval () { return (long int) (sizeof (int)); }
^
void
conftest.c:108:35: error: a function declaration without a prototype is deprecated in all versions of C [-Werror,-Wstrict-prototypes]
static unsigned long int ulongval () { return (long int) (sizeof (int)); }
^
void
2 errors generated.
```
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>