beni 0.0.0 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +54 -0
- data/README.md +141 -14
- data/lib/beni/build_config.rb +45 -0
- data/lib/beni/builder.rb +141 -0
- data/lib/beni/configuration.rb +12 -0
- data/lib/beni/dsl/context.rb +108 -0
- data/lib/beni/dsl/definition_context.rb +49 -0
- data/lib/beni/dsl/target_context.rb +35 -0
- data/lib/beni/dsl.rb +25 -0
- data/lib/beni/selected_toolchain.rb +11 -0
- data/lib/beni/target.rb +9 -0
- data/lib/beni/tasks.rb +159 -0
- data/lib/beni/toolchain_definition.rb +9 -0
- data/lib/beni/vendor/checksum.rb +68 -0
- data/lib/beni/vendor/downloader.rb +78 -0
- data/lib/beni/vendor/tarball.rb +72 -0
- data/lib/beni/vendor/toolchain.rb +107 -0
- data/lib/beni/vendor/toolchains/wasi.rake +30 -0
- data/lib/beni/vendor.rb +139 -0
- data/lib/beni/version.rb +1 -1
- data/lib/beni.rb +9 -1
- data/sig/beni/build_config.rbs +9 -0
- data/sig/beni/builder.rbs +39 -0
- data/sig/beni/configuration.rbs +10 -0
- data/sig/beni/dsl/context.rbs +39 -0
- data/sig/beni/dsl/definition_context.rbs +19 -0
- data/sig/beni/dsl/target_context.rbs +15 -0
- data/sig/beni/dsl.rbs +5 -0
- data/sig/beni/selected_toolchain.rbs +9 -0
- data/sig/beni/target.rbs +8 -0
- data/sig/beni/tasks.rbs +36 -0
- data/sig/beni/toolchain_definition.rbs +9 -0
- data/sig/beni/vendor/checksum.rbs +22 -0
- data/sig/beni/vendor/downloader.rbs +26 -0
- data/sig/beni/vendor/tarball.rbs +24 -0
- data/sig/beni/vendor/toolchain.rbs +33 -0
- data/sig/beni/vendor.rbs +20 -0
- data/sig/beni.rbs +3 -1
- data/sig/patches/open-uri.rbs +10 -0
- metadata +59 -9
- data/Rakefile +0 -12
data/lib/beni.rb
CHANGED
|
@@ -4,5 +4,13 @@ require_relative "beni/version"
|
|
|
4
4
|
|
|
5
5
|
module Beni
|
|
6
6
|
class Error < StandardError; end
|
|
7
|
-
# Your code goes here...
|
|
8
7
|
end
|
|
8
|
+
|
|
9
|
+
require_relative "beni/vendor"
|
|
10
|
+
require_relative "beni/builder"
|
|
11
|
+
require_relative "beni/build_config"
|
|
12
|
+
require_relative "beni/target"
|
|
13
|
+
require_relative "beni/toolchain_definition"
|
|
14
|
+
require_relative "beni/selected_toolchain"
|
|
15
|
+
require_relative "beni/configuration"
|
|
16
|
+
require_relative "beni/dsl"
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
module Beni
|
|
2
|
+
module BuildConfig
|
|
3
|
+
def self?.generate: (String dest, mruby_dir: String, version: String) -> String
|
|
4
|
+
|
|
5
|
+
def self?.staged_default_config: (String mruby_dir, String version) -> String
|
|
6
|
+
|
|
7
|
+
def self?.staged_version: (String mruby_dir) -> String?
|
|
8
|
+
end
|
|
9
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
module Beni
|
|
2
|
+
class Builder
|
|
3
|
+
DEFAULT_TARGETS: Array[String]
|
|
4
|
+
|
|
5
|
+
attr_reader vendor_dir: String
|
|
6
|
+
attr_reader build_config: String?
|
|
7
|
+
attr_reader targets: Array[String]
|
|
8
|
+
|
|
9
|
+
def initialize: (vendor_dir: String, ?build_config: String?, ?targets: Array[String]) -> void
|
|
10
|
+
|
|
11
|
+
def mruby_dir: () -> String
|
|
12
|
+
|
|
13
|
+
def libmruby_path: (String target) -> String
|
|
14
|
+
|
|
15
|
+
def libmruby_paths: () -> Array[String]
|
|
16
|
+
|
|
17
|
+
def built?: () -> bool
|
|
18
|
+
|
|
19
|
+
def ensure_built: () -> void
|
|
20
|
+
|
|
21
|
+
def build: () -> void
|
|
22
|
+
|
|
23
|
+
def clean: () -> void
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
def artifact_paths: () -> Array[String]
|
|
28
|
+
|
|
29
|
+
def run_mruby_rake: (Hash[String, String] env, Array[String] cmd) -> void
|
|
30
|
+
|
|
31
|
+
def env: () -> Hash[String, String]
|
|
32
|
+
|
|
33
|
+
def check_build_config!: () -> void
|
|
34
|
+
|
|
35
|
+
def flags_mak_paths: () -> Array[String]
|
|
36
|
+
|
|
37
|
+
def verify_artifacts!: () -> void
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
module Beni
|
|
2
|
+
class Configuration
|
|
3
|
+
attr_reader vendor_dir: String
|
|
4
|
+
attr_reader build_config: String?
|
|
5
|
+
attr_reader targets: Array[String]
|
|
6
|
+
attr_reader toolchains: Array[SelectedToolchain]
|
|
7
|
+
|
|
8
|
+
def initialize: (vendor_dir: String, build_config: String?, targets: Array[String], toolchains: Array[SelectedToolchain]) -> void
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
module Beni
|
|
2
|
+
module DSL
|
|
3
|
+
class Context
|
|
4
|
+
@settings: Hash[Symbol, String]
|
|
5
|
+
@targets: Hash[String, Target]
|
|
6
|
+
@definitions: Hash[String, ToolchainDefinition]
|
|
7
|
+
|
|
8
|
+
def initialize: () -> void
|
|
9
|
+
|
|
10
|
+
def version: (String value) -> void
|
|
11
|
+
|
|
12
|
+
def build_config: (String path) -> void
|
|
13
|
+
|
|
14
|
+
def vendor_dir: (String path) -> void
|
|
15
|
+
|
|
16
|
+
def target: (Symbol | String name) ?{ () [self: TargetContext] -> void } -> void
|
|
17
|
+
|
|
18
|
+
def toolchain: (String name) ?{ () [self: DefinitionContext] -> void } -> void
|
|
19
|
+
|
|
20
|
+
def configuration: () -> Configuration
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
def declare_scalar: (Symbol key, String value) -> void
|
|
25
|
+
|
|
26
|
+
def resolved_vendor_dir: () -> String
|
|
27
|
+
|
|
28
|
+
def resolved_build_config: () -> String?
|
|
29
|
+
|
|
30
|
+
def resolved_targets: () -> Array[String]
|
|
31
|
+
|
|
32
|
+
def selected_names: () -> Array[String]
|
|
33
|
+
|
|
34
|
+
def selected_toolchain: (String name) -> SelectedToolchain
|
|
35
|
+
|
|
36
|
+
def mruby_version: () -> String
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Beni
|
|
2
|
+
module DSL
|
|
3
|
+
class DefinitionContext
|
|
4
|
+
@name: String
|
|
5
|
+
@version: String?
|
|
6
|
+
@sha256: String?
|
|
7
|
+
|
|
8
|
+
def self.collect: (String name) { () [self: DefinitionContext] -> void } -> ToolchainDefinition
|
|
9
|
+
|
|
10
|
+
def initialize: (String name) -> void
|
|
11
|
+
|
|
12
|
+
def version: (String value) -> void
|
|
13
|
+
|
|
14
|
+
def sha256: (String value) -> void
|
|
15
|
+
|
|
16
|
+
def to_definition: () -> ToolchainDefinition
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Beni
|
|
2
|
+
module DSL
|
|
3
|
+
class TargetContext
|
|
4
|
+
@references: Array[String]
|
|
5
|
+
|
|
6
|
+
def self.collect: () { () [self: TargetContext] -> void } -> Array[String]
|
|
7
|
+
|
|
8
|
+
attr_reader references: Array[String]
|
|
9
|
+
|
|
10
|
+
def initialize: () -> void
|
|
11
|
+
|
|
12
|
+
def toolchain: (String name) ?{ () -> void } -> void
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
data/sig/beni/dsl.rbs
ADDED
data/sig/beni/target.rbs
ADDED
data/sig/beni/tasks.rbs
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module Beni
|
|
2
|
+
class Tasks < Rake::TaskLib
|
|
3
|
+
@builder: Builder?
|
|
4
|
+
@vendor_toolchains: Array[Vendor::Toolchain]?
|
|
5
|
+
|
|
6
|
+
attr_reader configuration: Configuration
|
|
7
|
+
|
|
8
|
+
def initialize: () ?{ () [self: DSL::Context] -> void } -> void
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def builder: () -> Builder
|
|
13
|
+
|
|
14
|
+
def vendor_toolchains: () -> Array[Vendor::Toolchain]
|
|
15
|
+
|
|
16
|
+
def define: () -> void
|
|
17
|
+
|
|
18
|
+
def define_vendor_namespace: () -> void
|
|
19
|
+
|
|
20
|
+
def define_vendor_setup_task: () -> void
|
|
21
|
+
|
|
22
|
+
def wasi_sdk_selected?: () -> bool
|
|
23
|
+
|
|
24
|
+
def define_vendor_clean_tasks: () -> void
|
|
25
|
+
|
|
26
|
+
def define_toolchain_tasks: (Vendor::Toolchain toolchain) -> void
|
|
27
|
+
|
|
28
|
+
def define_build_task: () -> void
|
|
29
|
+
|
|
30
|
+
def define_clean_task: () -> void
|
|
31
|
+
|
|
32
|
+
def define_config_task: () -> void
|
|
33
|
+
|
|
34
|
+
def mruby_version: () -> String
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Beni
|
|
2
|
+
module Vendor
|
|
3
|
+
class Checksum
|
|
4
|
+
@path: String
|
|
5
|
+
@expected_sha: String?
|
|
6
|
+
|
|
7
|
+
def initialize: (String path, String? expected_sha) -> void
|
|
8
|
+
|
|
9
|
+
def verify_or_pin: () -> String
|
|
10
|
+
|
|
11
|
+
private
|
|
12
|
+
|
|
13
|
+
def expected?: () -> bool
|
|
14
|
+
|
|
15
|
+
def sha256: () -> String
|
|
16
|
+
|
|
17
|
+
def verify_against_expected: (String actual, String sidecar) -> void
|
|
18
|
+
|
|
19
|
+
def verify_or_pin_sidecar: (String actual, String sidecar) -> void
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Beni
|
|
2
|
+
module Vendor
|
|
3
|
+
class Downloader
|
|
4
|
+
MAX_RETRIES: Integer
|
|
5
|
+
|
|
6
|
+
TRANSIENT_ERRORS: Array[singleton(StandardError)]
|
|
7
|
+
|
|
8
|
+
@url: String
|
|
9
|
+
@dest: String
|
|
10
|
+
|
|
11
|
+
def initialize: (String url, String dest) -> void
|
|
12
|
+
|
|
13
|
+
def download: () -> void
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
def fetch: (String tmp) -> void
|
|
18
|
+
|
|
19
|
+
def with_retry: [T] () { () -> T } -> T
|
|
20
|
+
|
|
21
|
+
def permanent?: (StandardError error) -> bool
|
|
22
|
+
|
|
23
|
+
def warn_and_sleep: (StandardError error, Integer attempt) -> void
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module Beni
|
|
2
|
+
module Vendor
|
|
3
|
+
class Tarball
|
|
4
|
+
VERSION_MARKER: String
|
|
5
|
+
|
|
6
|
+
@tarball: String
|
|
7
|
+
@top_level_dir: String
|
|
8
|
+
@final_dir: String
|
|
9
|
+
@version: String
|
|
10
|
+
|
|
11
|
+
def initialize: (tarball: String, top_level_dir: String, final_dir: String, version: String) -> void
|
|
12
|
+
|
|
13
|
+
def prepare: () -> void
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
def installed_version: () -> String?
|
|
18
|
+
|
|
19
|
+
def extract_to_staging: (String staging) -> void
|
|
20
|
+
|
|
21
|
+
def promote: (String staging) -> void
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module Beni
|
|
2
|
+
module Vendor
|
|
3
|
+
class Toolchain
|
|
4
|
+
attr_reader name: String
|
|
5
|
+
attr_reader version_label: String
|
|
6
|
+
attr_reader base_url: String
|
|
7
|
+
attr_reader tarball_name: String
|
|
8
|
+
attr_reader top_level_dir: String
|
|
9
|
+
attr_reader vendor_dir: String
|
|
10
|
+
attr_reader expected_sha256: String?
|
|
11
|
+
|
|
12
|
+
def initialize: (name: String, version_label: String, base_url: String, tarball_name: String, top_level_dir: String, vendor_dir: String, expected_sha256: String?) -> void
|
|
13
|
+
|
|
14
|
+
def task_name: () -> Symbol
|
|
15
|
+
|
|
16
|
+
def url: () -> String
|
|
17
|
+
|
|
18
|
+
def final_dir: () -> String
|
|
19
|
+
|
|
20
|
+
def tarball_path: () -> String
|
|
21
|
+
|
|
22
|
+
def fetch: () -> String
|
|
23
|
+
|
|
24
|
+
def verify: () -> String
|
|
25
|
+
|
|
26
|
+
def install: () -> void
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
def downloader: () -> Downloader
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
data/sig/beni/vendor.rbs
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module Beni
|
|
2
|
+
module Vendor
|
|
3
|
+
type built_in_pair = { version: String, sha256: String | Hash[String, String] }
|
|
4
|
+
|
|
5
|
+
BUILT_IN_PAIRS: Hash[String, built_in_pair]
|
|
6
|
+
DEPENDENCIES: Hash[String, Array[String]]
|
|
7
|
+
WASI_SDK_PLATFORM: String
|
|
8
|
+
TOOLCHAIN_FACTORIES: Hash[String, Symbol]
|
|
9
|
+
|
|
10
|
+
def self?.wasi_sdk: (vendor_dir: String, ?version: String?, ?sha256: String?) -> Toolchain
|
|
11
|
+
|
|
12
|
+
def self?.mruby: (vendor_dir: String, ?version: String?, ?sha256: String?) -> Toolchain
|
|
13
|
+
|
|
14
|
+
def self?.base_url_for: (String default) -> String
|
|
15
|
+
|
|
16
|
+
def self?.built_in_sha256: (String name, String version) -> String?
|
|
17
|
+
|
|
18
|
+
def self?.stage_wasi_toolchain_file: (vendor_dir: String) -> String
|
|
19
|
+
end
|
|
20
|
+
end
|
data/sig/beni.rbs
CHANGED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Patch: rbs' open-uri stdlib signatures only cover the module function
|
|
2
|
+
# +URI.open+; the instance form +URI::Generic#open+ (mixed in via
|
|
3
|
+
# +OpenURI::OpenRead+ for http/https/ftp URIs at runtime) is missing.
|
|
4
|
+
# Declared here so +Beni::Vendor::Downloader#download+ type-checks.
|
|
5
|
+
module URI
|
|
6
|
+
class Generic
|
|
7
|
+
def open: (?String mode) -> (StringIO & OpenURI::Meta)
|
|
8
|
+
| [T] (?String mode) { (StringIO | Tempfile) -> T } -> T
|
|
9
|
+
end
|
|
10
|
+
end
|
metadata
CHANGED
|
@@ -1,35 +1,85 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: beni
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Aotokitsuruya
|
|
8
8
|
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
10
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
-
dependencies:
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: rake
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - "~>"
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '13.0'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - "~>"
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '13.0'
|
|
26
|
+
description: Vendors a pinned mruby and builds libmruby.a through a Rake task library,
|
|
27
|
+
with generated build configs for customization. Aims to grow into a full mruby dependency
|
|
28
|
+
manager.
|
|
15
29
|
email:
|
|
16
30
|
- contact@aotoki.me
|
|
17
31
|
executables: []
|
|
18
32
|
extensions: []
|
|
19
33
|
extra_rdoc_files: []
|
|
20
34
|
files:
|
|
35
|
+
- CHANGELOG.md
|
|
21
36
|
- LICENSE
|
|
22
37
|
- README.md
|
|
23
|
-
- Rakefile
|
|
24
38
|
- lib/beni.rb
|
|
39
|
+
- lib/beni/build_config.rb
|
|
40
|
+
- lib/beni/builder.rb
|
|
41
|
+
- lib/beni/configuration.rb
|
|
42
|
+
- lib/beni/dsl.rb
|
|
43
|
+
- lib/beni/dsl/context.rb
|
|
44
|
+
- lib/beni/dsl/definition_context.rb
|
|
45
|
+
- lib/beni/dsl/target_context.rb
|
|
46
|
+
- lib/beni/selected_toolchain.rb
|
|
47
|
+
- lib/beni/target.rb
|
|
48
|
+
- lib/beni/tasks.rb
|
|
49
|
+
- lib/beni/toolchain_definition.rb
|
|
50
|
+
- lib/beni/vendor.rb
|
|
51
|
+
- lib/beni/vendor/checksum.rb
|
|
52
|
+
- lib/beni/vendor/downloader.rb
|
|
53
|
+
- lib/beni/vendor/tarball.rb
|
|
54
|
+
- lib/beni/vendor/toolchain.rb
|
|
55
|
+
- lib/beni/vendor/toolchains/wasi.rake
|
|
25
56
|
- lib/beni/version.rb
|
|
26
57
|
- sig/beni.rbs
|
|
58
|
+
- sig/beni/build_config.rbs
|
|
59
|
+
- sig/beni/builder.rbs
|
|
60
|
+
- sig/beni/configuration.rbs
|
|
61
|
+
- sig/beni/dsl.rbs
|
|
62
|
+
- sig/beni/dsl/context.rbs
|
|
63
|
+
- sig/beni/dsl/definition_context.rbs
|
|
64
|
+
- sig/beni/dsl/target_context.rbs
|
|
65
|
+
- sig/beni/selected_toolchain.rbs
|
|
66
|
+
- sig/beni/target.rbs
|
|
67
|
+
- sig/beni/tasks.rbs
|
|
68
|
+
- sig/beni/toolchain_definition.rbs
|
|
69
|
+
- sig/beni/vendor.rbs
|
|
70
|
+
- sig/beni/vendor/checksum.rbs
|
|
71
|
+
- sig/beni/vendor/downloader.rbs
|
|
72
|
+
- sig/beni/vendor/tarball.rbs
|
|
73
|
+
- sig/beni/vendor/toolchain.rbs
|
|
74
|
+
- sig/patches/open-uri.rbs
|
|
27
75
|
homepage: https://github.com/elct9620/beni
|
|
28
76
|
licenses:
|
|
29
77
|
- Apache-2.0
|
|
30
78
|
metadata:
|
|
31
79
|
homepage_uri: https://github.com/elct9620/beni
|
|
32
|
-
source_code_uri: https://github.com/elct9620/beni
|
|
80
|
+
source_code_uri: https://github.com/elct9620/beni/tree/main
|
|
81
|
+
changelog_uri: https://github.com/elct9620/beni/blob/main/CHANGELOG.md
|
|
82
|
+
rubygems_mfa_required: 'true'
|
|
33
83
|
rdoc_options: []
|
|
34
84
|
require_paths:
|
|
35
85
|
- lib
|
|
@@ -37,7 +87,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
37
87
|
requirements:
|
|
38
88
|
- - ">="
|
|
39
89
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 3.
|
|
90
|
+
version: 3.3.0
|
|
41
91
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
42
92
|
requirements:
|
|
43
93
|
- - ">="
|
|
@@ -46,5 +96,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
46
96
|
requirements: []
|
|
47
97
|
rubygems_version: 3.6.9
|
|
48
98
|
specification_version: 4
|
|
49
|
-
summary: mruby
|
|
99
|
+
summary: mruby vendoring and build toolchain
|
|
50
100
|
test_files: []
|