From: "Eregon (Benoit Daloze)" Date: 2022-04-15T10:17:26+00:00 Subject: [ruby-core:108257] [Ruby master Misc#18726] CI Error on c99 and c2x Issue #18726 has been updated by Eregon (Benoit Daloze). Is there a way we could disable that warning only for configure checks (or even the specific configure checks which need it), i.e., therefore acknowledging it's a workaround for old autoconf and not affect the rest of the codebase? Or the issue is it also warns for `rb_define_method()`? Any way around that since that's code we control? How to declare a var-args function with `-Wstrict-prototypes`? Newest not-even-released clang + old autoconf also sounds like a combination that is unlikely to work, I'd guess there will be other similar issues in the future. That said I think the workaround is not too bad as it only affects the CI build for clang 15, right? And it might help with similar issues for that combination. People building locally won't set the `-Werror=pedantic -pedantic-errors`, so they will most likely not run into this. IIRC `-Wall -Werror` are mostly good/useful warnings, while some of the pedantic warnings are PITA and not worth fixing (my personal criteria being mostly: is it likely to lead to bugs or incorrect compilation or helps readability significantly?). But that's from trying to get pedantic warnings to pass on both Linux & Solaris, which was not clearly worth the effort in my case. ---------------------------------------- Misc #18726: CI Error on c99 and c2x https://bugs.ruby-lang.org/issues/18726#change-97276 * 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: