[ruby-core:98242] [Ruby master Bug#16845] Building Ruby with system Ruby 1.8.7 results in make failing due to syntax error in ./tool/file2lastrev.rb
From:
erik@...
Date:
2020-05-09 23:11:29 UTC
List:
ruby-core #98242
Issue #16845 has been updated by ErikSwan (Erik Swan).
From looking through the ChangeLog, it seems there have been a few changes regarding whether `file2lastrev.rb` needs to be run with `BASERUBY` or not, and what version `BASERUBY` is expected to be:
```
doc/ChangeLog-2.3.0
34-Thu Dec 24 15:01:38 2015 sorah (Shota Fukumori) <her@sorah.jp>
35-
36: * tool/file2lastrev.rb: Fix ArgumentError to work on Ruby 1.8.7.
37-
doc/ChangeLog-2.1.0
1400-Thu Nov 28 13:56:05 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
1401-
1402: * common.mk (Doxyfile): tool/file2lastrev.rb needs running with
1403- BASERUBY since r43617. [ruby-dev:47823] [Bug #9169]
1404-
doc/ChangeLog-1.9.3
16418-Thu Apr 15 21:54:39 2010 Tanaka Akira <akr@fsij.org>
16419-
16420: * tool/file2lastrev.rb: use backtick for ruby 1.8.
16421-
16422-Thu Apr 15 21:13:29 2010 NARUSE, Yui <naruse@ruby-lang.org>
16423-
16424: * tool/file2lastrev.rb: this should run with ruby 1.8.
16425-
ChangeLog
39876-commit 6b5e712361cca8559ed66d5c1106e888c5971d39
39877- Author: Takashi Kokubun <takashikkbn@gmail.com>
39878- Date: 2019-05-29 08:22:02 +0900
39879-
39880- Make tool/vcs.rb compliant to BASERUBY
39881-
39882- People seem to consider BASERUBY is either 1.8 or 1.9 now. Since this
39883: file may be executed by BASERUBY from file2lastrev.rb, I think we should
39884- not rely on Ruby 2.0 in this file for now.
39885-
39886-commit e1f62d7f0e33de81a194f26a2c57e14e38d9de52
39887- Author: Takashi Kokubun <takashikkbn@gmail.com>
39888- Date: 2019-05-29 07:46:44 +0900
39889-
39890: Check the result of file2lastrev.rb if HAVE_BASERUBY
39891-
39892- is yes.
39893-
39894: We ignored the failure status of file2lastrev.rb on 73da429c36c, but it
39895- was for an environment without BASERUBY. I think we should skip running
39896: file2lastrev.rb on HAVE_BASERUBY=no, and run it and check the status on
39897- HAVE_BASERUBY=yes.
39898-
39899: Otherwise we may have an ignored arbitrary error of file2lastrev.rb on
39900- HAVE_BASERUBY=yes environment.
39901-
```
----------------------------------------
Bug #16845: Building Ruby with system Ruby 1.8.7 results in make failing due to syntax error in ./tool/file2lastrev.rb
https://bugs.ruby-lang.org/issues/16845#change-85480
* Author: ErikSwan (Erik Swan)
* Status: Open
* Priority: Normal
* ruby -v: 2.7.1
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN
----------------------------------------
Hello,
I am trying to build Ruby 2.7.1 from source on a RHEL 6.9 system, which has ruby 1.8.7 as the existing system Ruby. When I run `make`, I get an error about a syntax error in `./tool/file2lastrev.rb`. I am guessing this is because `file2lastrev.rb` uses Ruby syntax that was introduced in a newer Ruby version, and is not valid in 1.8.7, resulting in a runtime error.
Here is a snippet of the error:
```
./tool/file2lastrev.rb:10:in `require': /tmp/eswan/ruby-2.7.1/tool/lib/vcs.rb:471: syntax error, unexpected ',', expecting ']' (SyntaxError)
last = cmd_read_at(srcdir, [[*gitcmd, 'rev-parse', ref]]).rstrip
^
/tmp/eswan/ruby-2.7.1/tool/lib/vcs.rb:471: syntax error, unexpected ',', expecting kEND
```
# Steps to reproduce:
1. Obtain a RHEL 6.8 or 6.9 system (this is also reproducible on 6.8, and might be reproducible on all 6.x)
2. Confirm `/usr/bin/ruby --version` reports Ruby 1.8.7.
3. Download and extract the Ruby 2.7.1 source archive.
4. Run `./configure`
5. Run `./make`
# Expected behavior:
`make` should run correctly without any errors.
# Actual behavior:
The Makefile errors out when trying to run `./tool/file2lastrev.rb` with the existing system Ruby.
A shell log showing steps to reproduce and the output of `configure` and `make` is attached.
---Files--------------------------------
ruby_build_error.log (573 KB)
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>