Class: RubyWasm::Binaryen
- Inherits:
-
Object
- Object
- RubyWasm::Binaryen
- Defined in:
- lib/ruby_wasm/build/toolchain.rb,
sig/ruby_wasm/build.rbs
Instance Method Summary collapse
- #binaryen_path ⇒ String
- #binaryen_version ⇒ Integer
- #download_url(version) ⇒ String
-
#initialize(build_dir: nil, binaryen_version: 108) ⇒ Binaryen
constructor
A new instance of Binaryen.
- #install(executor) ⇒ void
- #wasm_opt ⇒ String
Constructor Details
#initialize(build_dir: nil, binaryen_version: 108) ⇒ Binaryen
Returns a new instance of Binaryen.
196 197 198 199 200 201 202 203 204 205 206 207 |
# File 'lib/ruby_wasm/build/toolchain.rb', line 196 def initialize(build_dir: nil, binaryen_version: 108) @wasm_opt_path = Toolchain.find_path("wasm-opt") @need_fetch_binaryen = @wasm_opt_path.nil? if @need_fetch_binaryen if build_dir.nil? raise "build_dir is required when wasm-opt not installed in PATH" end @binaryen_path = File.join(build_dir, "toolchain", "binaryen") @binaryen_version = binaryen_version @wasm_opt_path = File.join(@binaryen_path, "bin", "wasm-opt") end end |
Instance Method Details
#binaryen_path ⇒ String
213 214 215 |
# File 'lib/ruby_wasm/build/toolchain.rb', line 213 def binaryen_path @binaryen_path end |
#binaryen_version ⇒ Integer
217 218 219 |
# File 'lib/ruby_wasm/build/toolchain.rb', line 217 def binaryen_version @binaryen_version end |
#download_url(version) ⇒ String
221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 |
# File 'lib/ruby_wasm/build/toolchain.rb', line 221 def download_url(version) assets = [ [ /x86_64-linux/, "binaryen-version_#{@binaryen_version}-x86_64-linux.tar.gz" ], [ /x86_64-darwin/, "binaryen-version_#{@binaryen_version}-x86_64-macos.tar.gz" ], [ /arm64e?-darwin/, "binaryen-version_#{@binaryen_version}-arm64-macos.tar.gz" ] ] asset = assets.find { |os, _| os =~ RUBY_PLATFORM }&.at(1) if asset.nil? raise "unsupported platform for fetching Binaryen: #{RUBY_PLATFORM}" end "https://github.com/WebAssembly/binaryen/releases/download/version_#{@binaryen_version}/#{asset}" end |
#install(executor) ⇒ void
This method returns an undefined value.
243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 |
# File 'lib/ruby_wasm/build/toolchain.rb', line 243 def install(executor) return unless @need_fetch_binaryen binaryen_tarball = File.("../binaryen.tar.gz", @binaryen_path) unless File.exist? binaryen_tarball FileUtils.mkdir_p File.dirname(binaryen_tarball) executor.system "curl", "-L", "-o", binaryen_tarball, self.download_url(@binaryen_version) end unless File.exist? @binaryen_path FileUtils.mkdir_p @binaryen_path executor.system "tar", "-C", @binaryen_path, "--strip-component", "1", "-xzf", binaryen_tarball end end |
#wasm_opt ⇒ String
209 210 211 |
# File 'lib/ruby_wasm/build/toolchain.rb', line 209 def wasm_opt @wasm_opt_path end |