Skip to content

Commit

Permalink
CI: Enable the verbose mode in the mkmf.rb.
Browse files Browse the repository at this point in the history
Enable the verbose option in mkmf.rb to print the compiling commands in the
process of the `rake compile`. Because it's helpful to see what compiler
warnings are checked.

The script only runs in Linux and macOS. Not Windows. Because the sh script
doesn't work in Windows. For the syntax, see the reference.[1]

Right now there is a way to configure Ruby with `--enable-mkmf-verbose` in this
purpose. But there is no formal way to enable the verbose mode in runtime of
Ruby. My intention is that this commit is a workaround for this purpose.

[1] https://docs.github.com/en/actions/learn-github-actions/variables
  * Default environment variables - RUNNER_OS
  * Detecting the operating system
  • Loading branch information
junaruga committed May 23, 2023
1 parent 08b0ed7 commit a832f5c
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 0 deletions.
9 changes: 9 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,11 @@ jobs:
- name: depends
run: bundle install

# Enable the verbose option in mkmf.rb to print the compiling commands.
- name: enable mkmf verbose
run: tool/enable-mkmf-verbose
if: runner.os == 'Linux' || runner.os == 'macOS'

- name: compile
run: rake compile -- --enable-debug

Expand Down Expand Up @@ -129,6 +134,10 @@ jobs:
- name: depends
run: bundle install

- name: enable mkmf verbose
run: tool/enable-mkmf-verbose
if: runner.os == 'Linux' || runner.os == 'macOS'

- name: compile
run: rake compile -- --enable-debug --with-openssl-dir=$HOME/.openssl/${{ matrix.openssl }}

Expand Down
24 changes: 24 additions & 0 deletions tool/enable-mkmf-verbose
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/bin/sh

set -eux

gem_home="$(gem environment home)"
mkmf_rb_path="$(find "${gem_home}"/../.. -name mkmf.rb)"

# Backup the original file.
cp -p "${mkmf_rb_path}" "${mkmf_rb_path}.orig"

# Replace the target line to set the verbose option.
sed -i -e 's/^V = .*/V = 1/' "${mkmf_rb_path}"

# Print the difference between the original and modified file. This is useful
# to debug when the `mkmf.rb` may change in the future. And check if the
#`mkmf.rb` was modified. Because the `sed` command returns the exit status 0 no
# matter it replaces successfully or not.
if diff "${mkmf_rb_path}.orig" "${mkmf_rb_path}"; then
echo "error: ${mkmf_rb_path} was not modified." 1>&2
exit 1
elif [ "${?}" != 1 ]; then
echo "error: diff was failed." 1>&2
exit 1
fi

0 comments on commit a832f5c

Please sign in to comment.