From 08c12b3af9a5b0dca2cccc645f83e2577dd16191 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Wed, 9 Aug 2023 18:12:34 +0900 Subject: [PATCH 1/2] Stop littering platform-independent directory with platform-dependent bianries --- Rakefile | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/Rakefile b/Rakefile index 797929ad..f1f3d90f 100644 --- a/Rakefile +++ b/Rakefile @@ -16,18 +16,6 @@ RDoc::Task.new(:docs) do |rd| rd.options << "-t #{title}" end -require 'rake/testtask' - -Rake::TestTask.new(:test) do |t| - t.libs << "test/lib" - t.ruby_opts << "-rhelper" - t.test_files = FileList["test/**/test_*.rb"] - if RUBY_VERSION >= "2.6" - t.ruby_opts << "--enable-frozen-string-literal" - t.ruby_opts << "--debug=frozen-string-literal" if RUBY_ENGINE != "truffleruby" - end -end - def java? /java/ === RUBY_PLATFORM end @@ -58,10 +46,10 @@ end if jruby? # JRUBY require "rake/javaextensiontask" - Rake::JavaExtensionTask.new("cparse") do |ext| + extask = Rake::JavaExtensionTask.new("cparse") do |ext| jruby_home = RbConfig::CONFIG['prefix'] - ext.lib_dir = File.join 'lib', 'racc' - ext.ext_dir = File.join 'ext', 'racc' + ext.lib_dir = 'lib/java/racc' + ext.ext_dir = 'ext/racc' # source/target jvm ext.source_version = '1.8' ext.target_version = '1.8' @@ -69,19 +57,31 @@ if jruby? ext.classpath = jars.map { |x| File.expand_path x }.join( ':' ) ext.name = 'cparse-jruby' end - - task :compile => ['lib/racc/parser-text.rb'] else # MRI require "rake/extensiontask" - Rake::ExtensionTask.new "cparse" do |ext| - ext.lib_dir = File.join 'lib', 'racc' - ext.ext_dir = File.join 'ext', 'racc', 'cparse' + extask = Rake::ExtensionTask.new "cparse" do |ext| + ext.lib_dir << "/#{RUBY_VERSION}/#{ext.platform}/racc" + ext.ext_dir = 'ext/racc/cparse' end - - task :compile => 'lib/racc/parser-text.rb' end +task :compile => ['lib/racc/parser-text.rb'] + task :build => "lib/racc/parser-text.rb" task :test => :compile + +require 'rake/testtask' + +Rake::TestTask.new(:test) do |t| + ENV["RUBYOPT"] = "-I" + [extask.lib_dir, "test/lib"].join(File::PATH_SEPARATOR) + t.libs << extask.lib_dir + t.libs << "test/lib" + t.ruby_opts << "-rhelper" + t.test_files = FileList["test/**/test_*.rb"] + if RUBY_VERSION >= "2.6" + t.ruby_opts << "--enable-frozen-string-literal" + t.ruby_opts << "--debug=frozen-string-literal" if RUBY_ENGINE != "truffleruby" + end +end From f7bf34282cbb9883f6a69bf95c7635e28147572b Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Wed, 9 Aug 2023 18:18:27 +0900 Subject: [PATCH 2/2] Remove frozen_string_literal pragmas from embedded runtime files --- Rakefile | 8 ++++++-- lib/racc/info.rb | 1 + lib/racc/parser.rb | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Rakefile b/Rakefile index f1f3d90f..d4416d95 100644 --- a/Rakefile +++ b/Rakefile @@ -27,12 +27,16 @@ file 'lib/racc/parser-text.rb' => ['lib/racc/parser.rb', __FILE__] do |t| source = 'lib/racc/parser.rb' text = File.read(source) + text.sub!(/\A# *frozen[-_]string[-_]literal:.*\n/, '') text.gsub!(/^require '(.*)'$/) do - %[unless $".find {|p| p.end_with?('/#$1.rb')}\n$".push "\#{__dir__}/#$1.rb"\n#{File.read("lib/#{$1}.rb")}\nend\n] + lib = $1 + code = File.read("lib/#{lib}.rb") + code.sub!(/\A(?:#.*\n)+/, '') + %[unless $".find {|p| p.end_with?('/#{lib}.rb')}\n$".push "\#{__dir__}/#{lib}.rb"\n#{code}\nend\n] rescue $& end - open(t.name, 'wb') { |io| + File.open(t.name, 'wb') { |io| io.write(<<-eorb) module Racc PARSER_TEXT = <<'__end_of_file__' diff --git a/lib/racc/info.rb b/lib/racc/info.rb index b0fc9055..a6bd249c 100644 --- a/lib/racc/info.rb +++ b/lib/racc/info.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true #-- # # diff --git a/lib/racc/parser.rb b/lib/racc/parser.rb index ab1e5bcc..c4c74fae 100644 --- a/lib/racc/parser.rb +++ b/lib/racc/parser.rb @@ -1,4 +1,4 @@ -# frozen_string_literal: false +# frozen_string_literal: true #-- # Copyright (c) 1999-2006 Minero Aoki #