[ruby-core:114469] [Ruby master Bug#14422] Ruby configuration options should not be reused for gem builds

Issue #14422 has been updated by jeremyevans0 (Jeremy Evans). Status changed from Open to Closed vo.x (Vit Ondruch) wrote in #note-8:
Unfortunately, this does not address the original issue. So is there any hope this will be improved upstream? I would like to avoid some rbconfig.rb hacks to remove the configuration flags in question.
As @nobu stated in https://bugs.ruby-lang.org/issues/14422#note-1, use `XCFLAGS` and `XLDFLAGS` to specify options only for building Ruby, that you do not want used when building extensions. You implied you didn't want to do this, apparently without trying this approach. However, be aware that is the Ruby-supported way of supporting what you want. @nobu pointed out the issues with not using Ruby's `CFLAGS` or `LDFLAGS` by default when building Ruby extensions, so we definitely cannot make the behavior you are requesting the default as it would break things on other platforms. I don't think this is a general issue with building Ruby. If you are building packages for Ruby extensions, you should have all of Ruby's dependencies installed. If Fedora doesn't populate its buildroot with Ruby's dependencies when building packages for Ruby extensions, that does seem like a problem to be fixed in Fedora. I know not all packaging systems have Fedora's problem, because OpenBSD's packaging system does not. ---------------------------------------- Bug #14422: Ruby configuration options should not be reused for gem builds https://bugs.ruby-lang.org/issues/14422#change-104242 * Author: vo.x (Vit Ondruch) * Status: Closed * Priority: Normal * ruby -v: ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux] * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN ---------------------------------------- When Fedora started to harden its packages, we quite often seen complains from our users about problems installing their gems, with errors such as [1]: ~~~ gcc: error: /usr/lib/rpm/redhat/redhat-hardened-cc1: No such file or directory ~~~ The issue as analyzed by Mamoru TASAKA is [2]:
Well, if I am not mistaken, the real problem here is that rpm's %optflags is always embedded into Fedora's ruby config file, that is
/usr/lib64/ruby/rbconfig.rb:167: CONFIG["CXXFLAGS"] = "-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -mtune=generic" /usr/lib64/ruby/rbconfig.rb:171: CONFIG["CFLAGS"] = "-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -mtune=generic -fPIC"
on x86_64, for example.
Although I am not sure this is already discussed somewhere or not, basically I think changing the default CFLAGS of "system" ruby like this way is undesirable and ? installed "rbconfig.rb" should have some "minimal" CFLAGS / CXXFLAGS. ( for example, just like CONFIG["CFLAGS"] = "-fPIC" )
Only when we build Fedora gems or so (on koji), we should change CFLAGS / CXXFLAGS explicitly afterwards using %optflags.
and Red Hat toolchain team responds [3]:
The current advice of the Red Hat toolchain team is to keep distribution build flags and toolchain default flags separate. This is why running “gcc” gives you the upstream defaults, and not the flags we use to compile Fedora packages. For consistency, Ruby (and other compilation support tools) follow this pattern: Use distribution flags when building for Fedora, but use upstream flags when the user compiles packages (i.e., what Ruby uses, probably something involving -O2).
Our build flags are fully ABI-compatible with each other, so mismatches will not cause any problems at the C/C++/ABI level.
The question is why Ruby does this and how we can avoid this behavior. We could force installation of redhat-rpm-config package, providing the "/usr/lib/rpm/redhat/redhat-hardened-cc1", to every ruby user, but that does not seems right. There are also other similar issues discussing this situation [4], [5]. Any thoughts? [1]: https://bugzilla.redhat.com/show_bug.cgi?id=1284684 [2]: https://bugzilla.redhat.com/show_bug.cgi?id=1284684#c6 [3]: https://bugzilla.redhat.com/show_bug.cgi?id=1284684#c11 [4]: https://bugzilla.redhat.com/show_bug.cgi?id=1218294 [5]: https://bugzilla.redhat.com/show_bug.cgi?id=1432191 -- https://bugs.ruby-lang.org/
participants (1)
-
jeremyevans0 (Jeremy Evans)