Class: RubyWasm::LibYAMLProduct

Inherits:
AutoconfProduct show all
Defined in:
lib/ruby_wasm/build/product/libyaml.rb,
sig/ruby_wasm/build.rbs

Constant Summary collapse

LIBYAML_VERSION =

Returns:

  • (String)
"0.2.5"

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from AutoconfProduct

#configure_args, #system_triplet_args, #tools_args

Constructor Details

#initialize(build_dir, target, toolchain) ⇒ LibYAMLProduct

Returns a new instance of LibYAMLProduct.

Parameters:



9
10
11
12
13
# File 'lib/ruby_wasm/build/product/libyaml.rb', line 9

def initialize(build_dir, target, toolchain)
  @build_dir = build_dir
  @target = target
  super(target, toolchain)
end

Instance Attribute Details

#targetTarget (readonly)

Returns the value of attribute target.

Returns:



5
6
7
# File 'lib/ruby_wasm/build/product/libyaml.rb', line 5

def target
  @target
end

Instance Method Details

#build(executor) ⇒ void

This method returns an undefined value.

Parameters:



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/ruby_wasm/build/product/libyaml.rb', line 31

def build(executor)
  return if Dir.exist?(install_root)

  executor.mkdir_p File.dirname(product_build_dir)
  executor.rm_rf product_build_dir
  executor.mkdir_p product_build_dir
  tarball_path =
    File.join(product_build_dir, "libyaml-#{LIBYAML_VERSION}.tar.gz")
  executor.system "curl",
                  "-o",
                  tarball_path,
                  "-L",
                  "https://github.com/yaml/libyaml/releases/download/#{LIBYAML_VERSION}/yaml-#{LIBYAML_VERSION}.tar.gz"
  executor.system "tar",
                  "xzf",
                  tarball_path,
                  "-C",
                  product_build_dir,
                  "--strip-components=1"

  # obtain the latest config.guess and config.sub for Emscripten and WASI triple support
  executor.system "curl",
                  "-o",
                  "#{product_build_dir}/config/config.guess",
                  "https://cdn.jsdelivr.net/gh/gcc-mirror/gcc@master/config.guess"
  executor.system "curl",
                  "-o",
                  "#{product_build_dir}/config/config.sub",
                  "https://cdn.jsdelivr.net/gh/gcc-mirror/gcc@master/config.sub"

  configure_args = self.configure_args.dup
  configure_args << "CFLAGS=-fPIC" if target.pic?
  executor.system "./configure", *configure_args, chdir: product_build_dir
  executor.system "make",
                  "install",
                  "DESTDIR=#{destdir}",
                  chdir: product_build_dir
end

#destdirString

Returns:

  • (String)


19
20
21
# File 'lib/ruby_wasm/build/product/libyaml.rb', line 19

def destdir
  File.join(product_build_dir, "opt")
end

#install_rootString

Returns:

  • (String)


23
24
25
# File 'lib/ruby_wasm/build/product/libyaml.rb', line 23

def install_root
  File.join(destdir, "usr", "local")
end

#nameString

Returns:

  • (String)


27
28
29
# File 'lib/ruby_wasm/build/product/libyaml.rb', line 27

def name
  "libyaml-#{LIBYAML_VERSION}-#{target}"
end

#product_build_dirString

Returns:

  • (String)


15
16
17
# File 'lib/ruby_wasm/build/product/libyaml.rb', line 15

def product_build_dir
  File.join(@build_dir, target.to_s, "yaml-#{LIBYAML_VERSION}")
end