diff --git a/edit-secrets b/edit-secrets index a2c67ac..68d3630 100755 --- a/edit-secrets +++ b/edit-secrets @@ -67,6 +67,39 @@ function patch_broken_eyaml { next if @@plugins.include? spec dependency = spec.dependencies.find { |d| d.name == "hiera-eyaml" } +EOF + fi + fi + fi + + # + # Ubuntu 24.04 (noble) has a hiera-eyaml version that is incompatible with ruby 3.2+ (default in ubuntu24). + # This is fixed in hiera-eyaml version 3.3.0: https://github.com/voxpupuli/hiera-eyaml/pull/340/files + # https://github.com/voxpupuli/hiera-eyaml/blob/master/CHANGELOG.md + # But there is no modern version of hiera-eyaml packaged in debian or ubuntu. + # https://github.com/puppetlabs/puppet/wiki/Puppet-8-Compatibility#filedirexists-removed + # + + . /etc/os-release + if [ "${VERSION_CODENAME}" == "noble" ]; then + plugins_file="/usr/share/rubygems-integration/all/gems/hiera-eyaml-3.3.0/lib/hiera/backend/eyaml/subcommands/edit.rb" + if [ -f $plugins_file ]; then + # We only want to try patching the file if it is the known broken version + bad_sum="59c6eb910ab2eb44f8c75aeaa79bff097038feb673b5c6bdccde23d9b2a393e2" + sum=$(sha256sum $plugins_file | awk '{print $1}') + if [ "$sum" == "$bad_sum" ]; then + patch --fuzz=0 --directory=/ --strip=0 <<'EOF' +--- /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.3.0/lib/hiera/backend/eyaml/subcommands/edit.rb.orig 2022-06-11 16:30:10.000000000 +0000 ++++ /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.3.0/lib/hiera/backend/eyaml/subcommands/edit.rb 2024-09-09 14:13:19.306342025 +0000 +@@ -59,7 +59,7 @@ + Optimist::die "You must specify an eyaml file" if ARGV.empty? + options[:source] = :eyaml + options[:eyaml] = ARGV.shift +- if File.exists? options[:eyaml] ++ if File.exist? options[:eyaml] + begin + options[:input_data] = File.read options[:eyaml] + rescue EOF fi fi