Ruby 2.7 compatibility.
Resolves: rhbz#1799093
This commit is contained in:
parent
0414b5cc50
commit
2bf5bbd22f
2 changed files with 71 additions and 3 deletions
|
|
@ -0,0 +1,54 @@
|
|||
From 4f4f8a705a8e713bceee8cacca52e9bce22e28dc Mon Sep 17 00:00:00 2001
|
||||
From: "yuuji.yaginuma" <yuuji.yaginuma@gmail.com>
|
||||
Date: Wed, 18 Dec 2019 19:00:29 +0900
|
||||
Subject: [PATCH] Make `LoadInterlockAwareMonitor` work in Ruby 2.7
|
||||
|
||||
Currently `LoadInterlockAwareMonitorTest` does not pass with Ruby 2.7 [1].
|
||||
This is due to the refactoring of the `monitor` done in Ruby 2.7 [2].
|
||||
|
||||
With this refactoring, the behavior of the method has changed from the
|
||||
expected behavior in `LoadInterlockAwareMonitor`.
|
||||
|
||||
This patch also overwrites `synchronize` so that
|
||||
`LoadInterlockAwareMonitor` works as expected.
|
||||
|
||||
[1]: https://buildkite.com/rails/rails/builds/65877#eec47af5-7595-47cb-97c0-30c589716176/996-2743
|
||||
[2]: https://bugs.ruby-lang.org/issues/16255
|
||||
---
|
||||
.../load_interlock_aware_monitor.rb | 18 ++++++++++++++++++
|
||||
1 file changed, 18 insertions(+)
|
||||
|
||||
diff --git a/activesupport/lib/active_support/concurrency/load_interlock_aware_monitor.rb b/activesupport/lib/active_support/concurrency/load_interlock_aware_monitor.rb
|
||||
index a8455c00483f..480c34c64017 100644
|
||||
--- a/activesupport/lib/active_support/concurrency/load_interlock_aware_monitor.rb
|
||||
+++ b/activesupport/lib/active_support/concurrency/load_interlock_aware_monitor.rb
|
||||
@@ -7,11 +7,29 @@ module Concurrency
|
||||
# A monitor that will permit dependency loading while blocked waiting for
|
||||
# the lock.
|
||||
class LoadInterlockAwareMonitor < Monitor
|
||||
+ EXCEPTION_NEVER = { Exception => :never }.freeze
|
||||
+ EXCEPTION_IMMEDIATE = { Exception => :immediate }.freeze
|
||||
+ private_constant :EXCEPTION_NEVER, :EXCEPTION_IMMEDIATE
|
||||
+
|
||||
# Enters an exclusive section, but allows dependency loading while blocked
|
||||
def mon_enter
|
||||
mon_try_enter ||
|
||||
ActiveSupport::Dependencies.interlock.permit_concurrent_loads { super }
|
||||
end
|
||||
+
|
||||
+ def synchronize
|
||||
+ Thread.handle_interrupt(EXCEPTION_NEVER) do
|
||||
+ mon_enter
|
||||
+
|
||||
+ begin
|
||||
+ Thread.handle_interrupt(EXCEPTION_IMMEDIATE) do
|
||||
+ yield
|
||||
+ end
|
||||
+ ensure
|
||||
+ mon_exit
|
||||
+ end
|
||||
+ end
|
||||
+ end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
Name: rubygem-%{gem_name}
|
||||
Epoch: 1
|
||||
Version: 5.2.3
|
||||
Release: 3%{?dist}
|
||||
Release: 4%{?dist}
|
||||
Summary: A support libraries and Ruby core extensions extracted from the Rails framework
|
||||
License: MIT
|
||||
URL: http://rubyonrails.org
|
||||
|
|
@ -15,6 +15,9 @@ Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem
|
|||
# cd rails/activesupport/
|
||||
# git checkout v5.2.3 && tar czvf activesupport-5.2.3-tests.tgz test/
|
||||
Source1: %{gem_name}-%{version}-tests.tgz
|
||||
# Make `LoadInterlockAwareMonitor` work in Ruby 2.7
|
||||
# https://github.com/rails/rails/pull/38069
|
||||
Patch0: rubygem-activesupport-6.1.0-Make-LoadInterlockAwareMonitor-work-in-Ruby-2.7.patch
|
||||
|
||||
# ruby package has just soft dependency on rubygem({bigdecimal,json}), while
|
||||
# ActiveSupport always requires them.
|
||||
|
|
@ -54,7 +57,9 @@ BuildArch: noarch
|
|||
Documentation for %{name}.
|
||||
|
||||
%prep
|
||||
%setup -q -n %{gem_name}-%{version}
|
||||
%setup -q -n %{gem_name}-%{version} -b 1
|
||||
|
||||
%patch0 -p2
|
||||
|
||||
%build
|
||||
gem build ../%{gem_name}-%{version}.gemspec
|
||||
|
|
@ -69,7 +74,7 @@ cp -a .%{gem_dir}/* \
|
|||
%check
|
||||
pushd .%{gem_instdir}
|
||||
# Move the tests into place
|
||||
tar xzvf %{SOURCE1}
|
||||
cp -a %{_builddir}/test test
|
||||
|
||||
# These tests are really unstable, but they seems to be passing upstream :/
|
||||
for f in \
|
||||
|
|
@ -83,6 +88,11 @@ done
|
|||
# https://github.com/rails/rails/issues/25682
|
||||
sed -i '/def test_iso8601_output_and_reparsing$/,/^ end$/ s/^/#/' test/core_ext/duration_test.rb
|
||||
|
||||
# Workaround TransformValuesTest#test_default_procs_do_not_persist_*_mapping
|
||||
# test failures due to bug in Ruby 2.7.{0,1}.
|
||||
# https://bugs.ruby-lang.org/issues/16498
|
||||
sed -i '/assert_nil mapped\[:b\]/ s/^/#/' test/core_ext/hash/transform_values_test.rb
|
||||
|
||||
memcached &
|
||||
mPID=$!
|
||||
sleep 1
|
||||
|
|
@ -103,6 +113,10 @@ popd
|
|||
%doc %{gem_instdir}/README.rdoc
|
||||
|
||||
%changelog
|
||||
* Thu Apr 16 2020 Vít Ondruch <vondruch@redhat.com> - 1:5.2.3-4
|
||||
- Ruby 2.7 compatibility.
|
||||
Resolves: rhbz#1799093
|
||||
|
||||
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1:5.2.3-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue