From: "jaruga (Jun Aruga)" Date: 2022-04-21T12:35:46+00:00 Subject: [ruby-core:108350] [Ruby master Misc#18691] An option to run `make rbconfig.rb` in a different directory Issue #18691 has been updated by jaruga (Jun Aruga). > But I couldn't find the log for ext/debug/debug.c in make_install.log. After changing like this, I could see the log to compile the `ext/debug/debug.c`. Maybe the `V=1` in `make install V=1` is not propagated to bundle gems `Makefile` created by `extconf.rb`. ``` diff --git a/lib/mkmf.rb b/lib/mkmf.rb index 547a28577e..2ef15bd070 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -1970,7 +1970,7 @@ def configuration(srcdir) SHELL = /bin/sh # V=0 quiet, V=1 verbose. other values don't work. -V = 0 +V = 1 V0 = $(V:0=) Q1 = $(V:1=) Q = $(Q1:0=@andirayo ``` ``` $ make install V=1 ARCH_FLAG=--specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 | tee make_install.log ``` ``` $ cat make_install.log ... gcc -I. -I../../../../../.ext/include/x86_64-linux -I../../../../.././include -I../../../../.././.bundle/gems/debug-1.5.0/ext/debug -DRUBY_EXTCONF_H=\"extconf.h\" -fPIC -O2 --specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -o debug.o -c debug.c gcc -I. -I../../../../../.ext/include/x86_64-linux -I../../../../.././include -I../../../../.././.bundle/gems/debug-1.5.0/ext/debug -DRUBY_EXTCONF_H=\"extconf.h\" -fPIC -O2 --specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -o iseq_collector.o -c iseq_collector.c ... ``` ---------------------------------------- Misc #18691: An option to run `make rbconfig.rb` in a different directory https://bugs.ruby-lang.org/issues/18691#change-97376 * Author: jaruga (Jun Aruga) * Status: Feedback * Priority: Normal ---------------------------------------- In a Fedora Ruby RPM packaging, I have a challenge for the current `make rbconfig.rb`. Currently when we build Ruby from source to create the Ruby RPM package, we set compiler flag `CFLAGS` including `--specs=/usr/lib/rpm/redhat/redhat-hardened-cc1'`. The file `/usr/lib/rpm/redhat/redhat-hardened-cc1` is managed in `redhat-rpm-config` RPM package. This is a problem when end users run `gem install `. Because the `config.status` created by `configure` script and `rbconfig.rb` created by `make` (`make rbconfig`) includes `CFLAGS` including `--specs=/usr/lib/rpm/redhat/redhat-hardened-cc1'`. And the `gem install` checks flags in `rbconfig.rb`. Then end users need to install the redhat-rpm-config RPM to run the `gem install`. So, we want to create another `rbconfig.rb` file with flags not depending on files in the redhat-rpm-config RPM, and ship in the Ruby RPM, so that end users can run `gem install` without installing `redhat-rpm-config` RPM. Here are ideal steps to create another `rbconfig.rb` when building Ruby to create the Ruby RPM package. I tested it on the current latest master `381475f02e6b44ae729f9403637b30c445b622e5`. ``` $ autoconf $ CFLAGS='-O2 --specs=/usr/lib/rpm/redhat/redhat-hardened-cc1' ./configure $ make $ mkdir -p build/rbconfig $ cd build/rbconfig $ CFLAGS='-O2' ../../configure $ make rbconfig.rb ``` Then we can ship the `build/rbconfig/rbconfig.rb`. But right now it seems that the `make rbconfig.rb` triggers the process to build `miniruby`, and I want to skip the process. ``` $ pwd /home/jaruga/git/ruby/ruby/build/rbconfig $ ls config.log config.status* .ext/ GNUmakefile Makefile uncommon.mk $ make rbconfig.rb compiling ../../main.c compiling ../../dmydln.c ... ``` I executed the following commands, to create `miniruby` on the current working directory and not to remake `miniruby` (`make -o miniruby`) to skip the process to build the `miniruby`. But ideally I want to execute only `make rbconfig` to create the `rbconfig.rb` in `build/rbconfig` directory. Do you have any idea about how to improve files such as `configure.ac`, `common.mk` or `tool/mkconfig.rb` to achieve this? ``` $ cp -p ../../miniruby . $ make -o miniruby rbconfig.rb /bin/sh ../../tool/ifchange "--timestamp=.rbconfig.time" rbconfig.rb rbconfig.tmp rbconfig.rb updated $ diff -u ../../rbconfig.rb rbconfig.rb --- ../../rbconfig.rb 2022-04-12 18:03:45.484465916 +0200 +++ rbconfig.rb 2022-04-12 18:13:09.248334704 +0200 @@ -44,7 +44,7 @@ CONFIG["RUBY_SEARCH_PATH"] = "" CONFIG["UNIVERSAL_INTS"] = "" CONFIG["UNIVERSAL_ARCHNAMES"] = "" - CONFIG["configure_args"] = " 'CFLAGS=-O2 --specs=/usr/lib/rpm/redhat/redhat-hardened-cc1'" + CONFIG["configure_args"] = " 'CFLAGS=-O2'" CONFIG["CONFIGURE"] = "configure" CONFIG["vendorarchdir"] = "$(vendorlibdir)/$(sitearch)" CONFIG["vendorlibdir"] = "$(vendordir)/$(ruby_version)" @@ -173,7 +173,7 @@ CONFIG["OBJEXT"] = "o" CONFIG["CPPFLAGS"] = " $(DEFS) $(cppflags)" CONFIG["LDFLAGS"] = "-L. -fstack-protector-strong -rdynamic -Wl,-export-dynamic" - CONFIG["CFLAGS"] = "-O2 --specs=/usr/lib/rpm/redhat/redhat-hardened-cc1" + CONFIG["CFLAGS"] = "-O2" CONFIG["STRIP"] = "strip -S -x" CONFIG["RANLIB"] = "gcc-ranlib" CONFIG["OBJDUMP"] = "objdump" ``` -- https://bugs.ruby-lang.org/ Unsubscribe: