Sending to mailing list:
Vít Ondruch wrote on 07/26/2018 09:18 PM:
Dne 26.7.2018 v 13:40 Mamoru TASAKA napsal(a):
> Vít Ondruch wrote on 07/26/2018 06:28 PM:
>> Hi,
>>
>> Ruby currently fails to build due to removal of GCC from buildroot. The
>> build failure is due to one test case [1] which fails now and which
>> should be probably fixed to pass even without GCC.
>>
>> However, digging into this, I wonder if Ruby should have "BR: gcc" or
>> "BR: gcc-c++". The thing is, that Ruby is checking presence of C++
>> compiler during its configuration phase.
>
> ruby-libs contains:
>
>
> /usr/lib64/ruby/rbconfig.rb:180: CONFIG["CXXFLAGS"] = "-O2 -g -pipe
> -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2
> -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong
> -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1
> -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mtune=generic
> -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection"
> /usr/lib64/ruby/rbconfig.rb:181: CONFIG["CXX"] = "g++"
> /usr/share/ruby/mkmf.rb:74: CXX_EXT = %w[cc mm cxx cpp]
> /usr/share/ruby/mkmf.rb:76: CXX_EXT.concat(%w[C])
> /usr/share/ruby/mkmf.rb:82: SRC_EXT = C_EXT + CXX_EXT
> /usr/share/ruby/mkmf.rb:1830: $CXXFLAGS += " " << cflags
> /usr/share/ruby/mkmf.rb:1963:CXX = #{CONFIG['CXX']}
> /usr/share/ruby/mkmf.rb:1984:CXXFLAGS = $(CCDLFLAGS) #$CXXFLAGS
> $(ARCH_FLAG)
> /usr/share/ruby/mkmf.rb:2429: command = compile_command % COMPILE_CXX
> /usr/share/ruby/mkmf.rb:2430: asm_command =
> compile_command.sub(/compiling/, 'translating') % ASSEMBLE_CXX
> /usr/share/ruby/mkmf.rb:2431: CXX_EXT.each do |e|
> /usr/share/ruby/mkmf.rb:2458: if
> srcs.any?(&%r"\.(?:#{CXX_EXT.join('|')})\z".method(:===))
> /usr/share/ruby/mkmf.rb:2510: $CXXFLAGS = (with_config("cxxflags",
> arg_config("CXXFLAGS", config["CXXFLAGS"]))||'').dup
> /usr/share/ruby/mkmf.rb:2666: COMPILE_CXX =
> config_string('COMPILE_CXX') || '$(CXX) $(INCFLAGS) $(CPPFLAGS)
> $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$<'
> /usr/share/ruby/mkmf.rb:2676: ASSEMBLE_CXX =
> config_string('ASSEMBLE_CXX') || COMPILE_CXX.sub(/(?<=\s)-c(?=\s)/,
'-S')
>
> So it is quite reasonable that ruby compilation checks
> CXX compiler.
The ticket [1] I referenced even linked to commit which introduced some
of these lines [10]. However, this says nothing about usage of this
code. Neither the ruby-dev discussion provides more information [11].
So is there some extension library which uses results of these checks?
Frankly I'd be much happier if this was removed from upstream, since why
special case C++, but not Rust for example. I am looking for some
evidence ....
https://koji.fedoraproject.org/koji/buildinfo?buildID=1124633
https://github.com/knu/ruby-unf_ext/blob/master/ext/unf_ext/extconf.rb#L31
Regards,
Mamoru