From: erik@... Date: 2020-05-09T23:11:29+00:00 Subject: [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 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) 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 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 16419- 16420: * tool/file2lastrev.rb: use backtick for ruby 1.8. 16421- 16422-Thu Apr 15 21:13:29 2010 NARUSE, Yui 16423- 16424: * tool/file2lastrev.rb: this should run with ruby 1.8. 16425- ChangeLog 39876-commit 6b5e712361cca8559ed66d5c1106e888c5971d39 39877- Author: Takashi Kokubun 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 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: