Skip to content

Commit

Permalink
Patching resolv.rb to load conditionally (#1883)
Browse files Browse the repository at this point in the history
* Updating resolv.rb to load conditionally

Signed-off-by: John McCrae <[email protected]>

* Updating resolv.rb to load conditionally

Signed-off-by: John McCrae <[email protected]>

---------

Signed-off-by: John McCrae <[email protected]>
  • Loading branch information
johnmccrae authored Mar 26, 2024
1 parent 8a87f3b commit 763ae8b
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 @@
--- ext/win32/lib/win32/resolv.rb.org 2024-03-25 19:48:15
+++ ext/win32/lib/win32/resolv.rb 2024-03-25 19:49:01
@@ -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 763ae8b

Please sign in to comment.