Skip to content

Commit

Permalink
Patching resolv.rb to conditionally load
Browse files Browse the repository at this point in the history
Signed-off-by: John McCrae <[email protected]>
  • Loading branch information
johnmccrae committed Mar 25, 2024
1 parent 842b603 commit 06b7d5f
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 0 deletions.
11 changes: 11 additions & 0 deletions config/patches/ruby/ruby-win32_resolv.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
--- C:\Ruby30-x64\lib\ruby\3.0.0\win32\resolv-orig.rb 2021-11-27 14:46:20 -0800
+++ c:\Ruby30-x64\lib\ruby\3.0.0\win32\resolv.rb 2024-03-24 19:33:40 -0700
@@ -4,7 +4,7 @@

=end

-require 'win32/registry'
+require 'win32/registry' unless defined?(Win32::Registry)

module Win32
module Resolv
13 changes: 13 additions & 0 deletions config/software/ruby.rb
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,19 @@
patch source: "ruby-win32_warning_removal.patch", plevel: 1, env: patch_env
end

# We fixed a bug regarding Windows fqdn resolution in Ohai on the 17-stable branch.
# That Ohai update requires the Resolv class. The 'resolv' class unconditionally
# loads the Win32::Registry class as a dependency.
# Chef Infra already loads Win32::Registry and has a monkeypatch for the export_string method.
# When the Resolv class loads again in Ohai, it overwrites the monkeypatch and that
# leads to registry encoding/decoding errors - Base Ruby classes return text encoded in
# UTF-16LE format and we need UTF-8.
# Here we patch the Ruby Win32/Reolv.rb file to make reloading the Win32::Registry class
# conditional and therefore prevent the monkeypatch from being overwritten.
if windows? && version.satisfies?("~> 3.0.0")
patch source: "ruby-win32_resolv.patch", plevel: 1, env: patch_env
end

# RHEL6 has a base compiler that does not support -fstack-protector-strong, but we
# cannot build modern ruby on the RHEL6 base compiler, and the configure script
# determines that it supports that flag and so includes it and then ultimately
Expand Down

0 comments on commit 06b7d5f

Please sign in to comment.