From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS22989 209.51.188.0/24 X-Spam-Status: No, score=-3.9 required=3.0 tests=AWL,BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 4294A1F9FC for ; Thu, 20 Jan 2022 23:33:54 +0000 (UTC) Received: from localhost ([::1]:36176 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAgwD-00029f-Da for e@80x24.org; Thu, 20 Jan 2022 18:33:53 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49606) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAcGb-0003Pd-A5 for dtas-all@nongnu.org; Thu, 20 Jan 2022 13:34:38 -0500 Received: from dcvr.yhbt.net ([64.71.152.64]:47338) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAcGZ-0004lk-1y for dtas-all@nongnu.org; Thu, 20 Jan 2022 13:34:36 -0500 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 378811F9FC for ; Thu, 20 Jan 2022 18:34:20 +0000 (UTC) From: Eric Wong To: dtas-all@nongnu.org Subject: [PATCH 1/4] require Ruby 2.3+ Date: Thu, 20 Jan 2022 18:34:16 +0000 Message-Id: <20220120183419.2214-2-e@80x24.org> In-Reply-To: <20220120183419.2214-1-e@80x24.org> References: <20220120183419.2214-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=64.71.152.64; envelope-from=e@80x24.org; helo=dcvr.yhbt.net X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: dtas-all@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: duct tape audio suite List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dtas-all-bounces+e=80x24.org@nongnu.org Sender: "dtas-all" 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/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 @@ 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 @@ 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 @@ 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 @@ def self.dedupe_str(str) # :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 @@ 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 @@ 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_relative 'helper' class TestSplitfx < Testcase - include DTAS::SpawnFix - def tmp_err(path) err = $stderr.dup $stderr.reopen(path, 'a')