From c3b34b1693e7b35841d87dae0dce8ccecebe9008 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 20 Jan 2022 18:34:16 +0000 Subject: require Ruby 2.3+ This allows us to jettison a bunch of compatibility code since we've started using Etc.nprocessors and String#- (uminus) in more places. The Ruby core team doesn't support <= 2.5, even. --- bin/dtas-partstats | 12 +++--------- bin/dtas-readahead | 3 +-- bin/dtas-sinkedit | 3 +-- bin/dtas-sourceedit | 3 +-- dtas.gemspec | 4 ++-- lib/dtas.rb | 13 ++----------- lib/dtas/compat_onenine.rb | 17 ----------------- lib/dtas/partstats.rb | 3 +-- lib/dtas/pipeline.rb | 5 +---- lib/dtas/process.rb | 3 +-- lib/dtas/spawn_fix.rb | 10 ---------- test/test_player_integration.rb | 3 +-- test/test_splitfx.rb | 4 +--- 13 files changed, 15 insertions(+), 68 deletions(-) delete mode 100644 lib/dtas/compat_onenine.rb delete mode 100644 lib/dtas/spawn_fix.rb diff --git a/bin/dtas-partstats b/bin/dtas-partstats index 884a6d1..6a0c9d4 100755 --- a/bin/dtas-partstats +++ b/bin/dtas-partstats @@ -1,5 +1,5 @@ #!/usr/bin/env ruby -# Copyright (C) 2013-2020 all contributors +# Copyright (C) all contributors # License: GPL-3.0+ # frozen_string_literal: true # TODO @@ -8,17 +8,11 @@ # - configurable output formatting # - Sequel/SQLite support require 'dtas/partstats' +require 'etc' infile = ARGV[0] or abort "usage: #$0 INFILE" ps = DTAS::PartStats.new(infile) -def nproc - require 'etc' - Etc.nprocessors -rescue NoMethodError - `nproc 2>/dev/null || echo 2`.to_i -end - -opts = { jobs: nproc } +opts = { jobs: Etc.nprocessors } stats = ps.run(opts) headers = ps.key_idx.to_a diff --git a/bin/dtas-readahead b/bin/dtas-readahead index 3eedd86..a1971bd 100755 --- a/bin/dtas-readahead +++ b/bin/dtas-readahead @@ -1,5 +1,5 @@ #!/usr/bin/env ruby -# Copyright (C) 2015-2020 all contributors +# Copyright (C) all contributors # License: GPL-3.0+ # frozen_string_literal: true # @@ -18,7 +18,6 @@ require 'dtas/unix_client' require 'dtas/process' include DTAS::Process -include DTAS::SpawnFix trap(:CHLD) { DTAS::Process.reaper {} } trap(:INT) { exit(0) } trap(:TERM) { exit(0) } diff --git a/bin/dtas-sinkedit b/bin/dtas-sinkedit index 3393aac..8f96a97 100755 --- a/bin/dtas-sinkedit +++ b/bin/dtas-sinkedit @@ -1,5 +1,5 @@ #!/usr/bin/env ruby -# Copyright (C) 2013-2020 all contributors +# Copyright (C) all contributors # License: GPL-3.0+ # frozen_string_literal: true require 'optparse' @@ -68,7 +68,6 @@ if st_in.file? || st_in.pipe? buf = $stdin.read commit_update.call(buf) else - include DTAS::SpawnFix tmp = tmpyaml tmp_path = tmp.path do_update = lambda { commit_update.call(File.read(tmp_path)) } diff --git a/bin/dtas-sourceedit b/bin/dtas-sourceedit index 23362c2..e6603bf 100755 --- a/bin/dtas-sourceedit +++ b/bin/dtas-sourceedit @@ -1,5 +1,5 @@ #!/usr/bin/env ruby -# Copyright (C) 2013-2020 all contributors +# Copyright (C) all contributors # License: GPL-3.0+ # frozen_string_literal: true require 'optparse' @@ -55,7 +55,6 @@ if st_in.file? || st_in.pipe? buf = $stdin.read commit_update.call(buf) else - include DTAS::SpawnFix tmp = tmpyaml tmp_path = tmp.path do_update = lambda { commit_update.call(File.read(tmp_path)) } diff --git a/dtas.gemspec b/dtas.gemspec index 50ce370..e1bbb38 100644 --- a/dtas.gemspec +++ b/dtas.gemspec @@ -1,4 +1,4 @@ -# Copyright (C) 2013-2021 all contributors +# Copyright (C) all contributors # License: GPL-3.0+ Gem::Specification.new do |s| manifest = File.read('.gem-manifest').split(/\n/) @@ -12,5 +12,5 @@ Gem::Specification.new do |s| s.files = manifest s.homepage = 'https://80x24.org/dtas.git/about/' s.licenses = "GPL-3.0+" - s.required_ruby_version = '>= 1.9.3' + s.required_ruby_version = '>= 2.3' end diff --git a/lib/dtas.rb b/lib/dtas.rb index 1eac704..eb8f49d 100644 --- a/lib/dtas.rb +++ b/lib/dtas.rb @@ -1,4 +1,4 @@ -# Copyright (C) 2013-2020 all contributors +# Copyright (C) all contributors # License: GPL-3.0+ # frozen_string_literal: true @@ -9,15 +9,8 @@ module DTAS # try to use the monotonic clock in Ruby >= 2.1, it is immune to clock # offset adjustments and generates less garbage (Float vs Time object) # :stopdoc: - begin + def self.now # :nodoc: ::Process.clock_gettime(::Process::CLOCK_MONOTONIC) - def self.now # :nodoc: - ::Process.clock_gettime(::Process::CLOCK_MONOTONIC) - end - rescue NameError, NoMethodError - def self.now # :nodoc: - Time.now.to_f # Ruby <= 2.0 - end end @null = nil @@ -48,7 +41,5 @@ module DTAS # :startdoc: end -require_relative 'dtas/compat_onenine' -require_relative 'dtas/spawn_fix' require_relative 'dtas/encoding' DTAS.extend(DTAS::Encoding) diff --git a/lib/dtas/compat_onenine.rb b/lib/dtas/compat_onenine.rb deleted file mode 100644 index b65ea50..0000000 --- a/lib/dtas/compat_onenine.rb +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright (C) 2013-2020 all contributors -# License: GPL-3.0+ - -# Make Ruby 1.9.3 look like Ruby 2.0.0 to us -# This exists for Debian wheezy users using the stock Ruby 1.9.3 install. -# We'll drop this interface when Debian wheezy (7.0) becomes unsupported. -class String # :nodoc: - def b # :nodoc: - dup.force_encoding(Encoding::BINARY) - end -end unless String.method_defined?(:b) - -def IO # :nodoc: - def self.pipe # :nodoc: - super.each { |io| io.close_on_exec = true } - end -end if RUBY_VERSION.to_f <= 1.9 diff --git a/lib/dtas/partstats.rb b/lib/dtas/partstats.rb index 45eff34..8e9ee95 100644 --- a/lib/dtas/partstats.rb +++ b/lib/dtas/partstats.rb @@ -1,5 +1,5 @@ # -*- encoding: binary -*- -# Copyright (C) 2013-2020 all contributors +# Copyright (C) all contributors # License: GPL-3.0+ # frozen_string_literal: true require_relative '../dtas' @@ -11,7 +11,6 @@ require_relative 'sigevent' class DTAS::PartStats # :nodoc: CMD = 'sox "$INFILE" -n $TRIMFX $SOXFX stats $STATSOPTS' include DTAS::Process - include DTAS::SpawnFix attr_reader :key_idx attr_reader :key_width diff --git a/lib/dtas/pipeline.rb b/lib/dtas/pipeline.rb index eb2af89..1bebe87 100644 --- a/lib/dtas/pipeline.rb +++ b/lib/dtas/pipeline.rb @@ -1,12 +1,9 @@ -# Copyright (C) 2017-2020 all contributors +# Copyright (C) all contributors # License: GPL-3.0+ # frozen_string_literal: true require_relative '../dtas' -require_relative 'spawn_fix' module DTAS::Pipeline # :nodoc: - include DTAS::SpawnFix - # Process.spawn wrapper which supports running Proc-like objects in # a separate process, not just external commands. # Returns the pid of the spawned process diff --git a/lib/dtas/process.rb b/lib/dtas/process.rb index f93a8c4..d00716f 100644 --- a/lib/dtas/process.rb +++ b/lib/dtas/process.rb @@ -1,4 +1,4 @@ -# Copyright (C) 2013-2020 all contributors +# Copyright (C) all contributors # License: GPL-3.0+ # frozen_string_literal: true require 'io/wait' @@ -11,7 +11,6 @@ require_relative 'nonblock' module DTAS::Process # :nodoc: PIDS = {} include DTAS::XS - include DTAS::SpawnFix def self.reaper begin diff --git a/lib/dtas/spawn_fix.rb b/lib/dtas/spawn_fix.rb deleted file mode 100644 index b586130..0000000 --- a/lib/dtas/spawn_fix.rb +++ /dev/null @@ -1,10 +0,0 @@ -# Copyright (C) 2013-2020 all contributors -# License: GPL-3.0+ -# workaround for older Rubies: https://bugs.ruby-lang.org/issues/8770 -module DTAS::SpawnFix # :nodoc: - def spawn(*args) - super(*args) - rescue Errno::EINTR - retry - end if RUBY_VERSION.to_f <= 2.1 -end diff --git a/test/test_player_integration.rb b/test/test_player_integration.rb index d2e11cf..e933f7b 100644 --- a/test/test_player_integration.rb +++ b/test/test_player_integration.rb @@ -1,10 +1,9 @@ -# Copyright (C) 2013-2020 all contributors +# Copyright (C) all contributors # License: GPL-3.0+ # frozen_string_literal: true require './test/player_integration' class TestPlayerIntegration < Testcase include PlayerIntegration - include DTAS::SpawnFix def test_cmd_rate env = ENV.to_hash.merge(@fmt.to_env) diff --git a/test/test_splitfx.rb b/test/test_splitfx.rb index b6ae01f..cacda66 100644 --- a/test/test_splitfx.rb +++ b/test/test_splitfx.rb @@ -1,4 +1,4 @@ -# Copyright (C) 2013-2020 all contributors +# Copyright (C) all contributors # License: GPL-3.0+ # frozen_string_literal: true require 'yaml' @@ -7,8 +7,6 @@ require 'thread' require_relative 'helper' class TestSplitfx < Testcase - include DTAS::SpawnFix - def tmp_err(path) err = $stderr.dup $stderr.reopen(path, 'a') -- cgit v1.2.3-24-ge0c7