Module: Tebako::Packager::PatchHelpers
- Defined in:
- lib/tebako/packager/patch_helpers.rb
Overview
Ruby patching helpers (pass2)
Class Method Summary collapse
- .get_prefix_linux(package) ⇒ Object
- .get_prefix_macos(package) ⇒ Object
- .patch_c_file_post(pattern) ⇒ Object
- .patch_c_file_pre(pattern) ⇒ Object
- .patch_file(fname, mapping) ⇒ Object
- .recreate(dirname) ⇒ Object
- .restore_and_save(fname, strict: true) ⇒ Object
- .restore_and_save_files(files, ruby_source_dir, strict: true) ⇒ Object
- .yaml_reference(ruby_ver) ⇒ Object
Class Method Details
.get_prefix_linux(package) ⇒ Object
55 56 57 58 59 60 61 62 63 |
# File 'lib/tebako/packager/patch_helpers.rb', line 55 def get_prefix_linux(package) out, st = Open3.capture2("pkg-config --variable=libdir #{package}") unless st.exitstatus.zero? raise Tebako::Error, "pkg-config --variable=libdir #{package} failed with code #{st.exitstatus}" end out end |
.get_prefix_macos(package) ⇒ Object
48 49 50 51 52 53 |
# File 'lib/tebako/packager/patch_helpers.rb', line 48 def get_prefix_macos(package) out, st = Open3.capture2("brew --prefix #{package}") raise Tebako::Error, "brew --prefix #{package} failed with code #{st.exitstatus}" unless st.exitstatus.zero? out end |
.patch_c_file_post(pattern) ⇒ Object
71 72 73 74 75 |
# File 'lib/tebako/packager/patch_helpers.rb', line 71 def patch_c_file_post(pattern) { pattern => "#{pattern}\n\n#{PatchLiterals::C_FILE_SUBST}" } end |
.patch_c_file_pre(pattern) ⇒ Object
65 66 67 68 69 |
# File 'lib/tebako/packager/patch_helpers.rb', line 65 def patch_c_file_pre(pattern) { pattern => "#{PatchLiterals::C_FILE_SUBST}\n#{pattern}" } end |
.patch_file(fname, mapping) ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/tebako/packager/patch_helpers.rb', line 37 def patch_file(fname, mapping) raise Tebako::Error, "Could not patch #{fname} because it does not exist." unless File.exist?(fname) puts " ... patching #{fname}" restore_and_save(fname) contents = File.read(fname) mapping.each { |pattern, subst| contents.sub!(pattern, subst) } File.open(fname, "w") { |file| file << contents } end |
.recreate(dirname) ⇒ Object
77 78 79 80 |
# File 'lib/tebako/packager/patch_helpers.rb', line 77 def recreate(dirname) FileUtils.rm_rf(dirname, noop: nil, verbose: nil, secure: true) FileUtils.mkdir(dirname) end |
.restore_and_save(fname, strict: true) ⇒ Object
82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/tebako/packager/patch_helpers.rb', line 82 def restore_and_save(fname, strict: true) unless File.exist?(fname) return unless strict raise Tebako::Error, "Could not save #{fname} because it does not exist." end old_fname = "#{fname}.old" if File.exist?(old_fname) FileUtils.rm_f(fname) File.rename(old_fname, fname) end FileUtils.cp(fname, old_fname) end |
.restore_and_save_files(files, ruby_source_dir, strict: true) ⇒ Object
97 98 99 100 101 |
# File 'lib/tebako/packager/patch_helpers.rb', line 97 def restore_and_save_files(files, ruby_source_dir, strict: true) files.each do |fname| restore_and_save("#{ruby_source_dir}/#{fname}", strict: strict) end end |
.yaml_reference(ruby_ver) ⇒ Object
103 104 105 |
# File 'lib/tebako/packager/patch_helpers.rb', line 103 def yaml_reference(ruby_ver) ruby_ver.ruby32? ? "-l:libyaml.a" : "" end |