Module: Libv8::Patcher
- Included in:
- Builder
- Defined in:
- ext/libv8/patcher.rb
Constant Summary collapse
- PATCH_DIRECTORY =
File. '../../../patches', __FILE__
Class Method Summary collapse
- .patch!(*additional_directories) ⇒ Object
- .patch_directories(*additional_directories) ⇒ Object
- .patch_directories_for(compiler) ⇒ Object
- .patches(*additional_directories) ⇒ Object
Class Method Details
.patch!(*additional_directories) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 |
# File 'ext/libv8/patcher.rb', line 43 def patch!(*additional_directories) File.open(".applied_patches", File::RDWR|File::CREAT) do |f| available_patches = patches *additional_directories applied_patches = f.readlines.map(&:chomp) (available_patches - applied_patches).each do |patch| `patch -p1 -N < #{patch}` f.puts patch end end end |
.patch_directories(*additional_directories) ⇒ Object
27 28 29 30 31 32 33 34 35 |
# File 'ext/libv8/patcher.rb', line 27 def patch_directories(*additional_directories) absolute_paths = [PATCH_DIRECTORY] additional_directories.each do |directory| absolute_paths << File.join(PATCH_DIRECTORY, directory) end absolute_paths.uniq end |
.patch_directories_for(compiler) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'ext/libv8/patcher.rb', line 7 def patch_directories_for(compiler) patch_directories = [] case when compiler.target =~ /arm/ patch_directories << 'arm' end case compiler when Compiler::GCC patch_directories << 'gcc48' if compiler.version >= '4.8' when Compiler::Clang patch_directories << 'clang' patch_directories << 'clang33' if compiler.version >= '3.3' patch_directories << 'clang51' if compiler.version >= '5.1' end patch_directories end |
.patches(*additional_directories) ⇒ Object
37 38 39 40 41 |
# File 'ext/libv8/patcher.rb', line 37 def patches(*additional_directories) patch_directories(*additional_directories).map do |directory| Dir.glob(File.join directory, '*.patch') end.flatten.sort end |