mini_portile2 2.6.1 → 2.7.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/.github/workflows/ci.yml +5 -1
- data/CHANGELOG.md +7 -0
- data/README.md +49 -0
- data/lib/mini_portile2/mini_portile.rb +12 -11
- data/lib/mini_portile2/mini_portile_cmake.rb +10 -1
- data/lib/mini_portile2/version.rb +1 -1
- data/test/helper.rb +16 -0
- data/test/test_cmake.rb +30 -0
- data/test/test_cook.rb +26 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6c8eb702f252f0d5becb6655bfc84fb67220c71c9efb3b33a0e25d86b508e733
|
4
|
+
data.tar.gz: 3be4b50bfbc904e134928aed8d4e42a124a9931d8c16ee0f5c6ee3b81749c1d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bcd57ca484c13860e745aeaa732ee89c47fef3f8950826ae1de2ceaf773972f9f4208a06929b0f5bdbf9dbad775b6a63c21f9057a18da1bef733e2de59b16406
|
7
|
+
data.tar.gz: 3ba020aaed5610663ca00690625f0c3e62b8c62646bd98ec7b8b51fb7b77471991e651debe261d6a73861bea92589212111a38296af1482e498bae3711592698
|
data/.github/workflows/ci.yml
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
name: Continuous Integration
|
2
|
-
|
2
|
+
concurrency:
|
3
|
+
group: "${{github.workflow}}-${{github.ref}}"
|
4
|
+
cancel-in-progress: true
|
3
5
|
on:
|
4
6
|
workflow_dispatch:
|
5
7
|
push:
|
@@ -20,6 +22,7 @@ jobs:
|
|
20
22
|
env:
|
21
23
|
MAKEFLAGS: -j2
|
22
24
|
strategy:
|
25
|
+
fail-fast: false
|
23
26
|
matrix:
|
24
27
|
platform: [ubuntu-latest, windows-latest]
|
25
28
|
ruby: ["2.3", "2.4", "2.5", "2.6", "2.7", "3.0", "head"]
|
@@ -43,6 +46,7 @@ jobs:
|
|
43
46
|
env:
|
44
47
|
MAKEFLAGS: -j2
|
45
48
|
strategy:
|
49
|
+
fail-fast: false
|
46
50
|
matrix:
|
47
51
|
platform: [ubuntu-latest, windows-latest]
|
48
52
|
ruby: ["3.0"]
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -83,11 +83,60 @@ library into a namespaced structure.
|
|
83
83
|
`#activate` ensures GCC will find this library and prefer it over a
|
84
84
|
system-wide installation.
|
85
85
|
|
86
|
+
Some keyword arguments can be passed to the constructor to configure the commands used:
|
87
|
+
|
88
|
+
#### `gcc_command`
|
89
|
+
|
90
|
+
The compiler command that is used is configurable, and in order of preference will use:
|
91
|
+
|
92
|
+
- the `CC` environment variable (if present)
|
93
|
+
- the `gcc_command` value passed in to the constructor
|
94
|
+
- `RbConfig::CONFIG["CC"]`
|
95
|
+
- `"gcc"`
|
96
|
+
|
97
|
+
You can pass it in like so:
|
98
|
+
|
99
|
+
``` ruby
|
100
|
+
MiniPortile.new("libiconv", "1.13.1", gcc_command: "cc")
|
101
|
+
```
|
102
|
+
|
103
|
+
#### `make_command`
|
104
|
+
|
105
|
+
The configuration/make command that is used is configurable, and in order of preference will use:
|
106
|
+
|
107
|
+
- the `MAKE` environment variable (if present)
|
108
|
+
- the `make_command` value passed in to the constructor
|
109
|
+
- the `make` environment variable (if present)
|
110
|
+
- `"make"`
|
111
|
+
|
112
|
+
You can pass it in like so:
|
113
|
+
|
114
|
+
``` ruby
|
115
|
+
MiniPortile.new("libiconv", "1.13.1", make_command: "nmake")
|
116
|
+
```
|
117
|
+
|
86
118
|
|
87
119
|
### How to use (for cmake projects)
|
88
120
|
|
89
121
|
Same as above, but instead of `MiniPortile.new`, call `MiniPortileCMake.new`.
|
90
122
|
|
123
|
+
#### `make_command`
|
124
|
+
|
125
|
+
This is configurable as above, except for Windows systems where it's hardcoded to `"nmake"`.
|
126
|
+
|
127
|
+
#### `cmake_command`
|
128
|
+
|
129
|
+
The cmake command used is configurable, and in order of preference will use:
|
130
|
+
|
131
|
+
- the `CMAKE` environment variable (if present)
|
132
|
+
- the `cmake_command` value passed in to the constructor
|
133
|
+
- `"cmake"`
|
134
|
+
|
135
|
+
You can pass it in like so:
|
136
|
+
|
137
|
+
``` ruby
|
138
|
+
MiniPortileCMake.new("libfoobar", "1.3.5", cmake_command: "cmake3")
|
139
|
+
```
|
91
140
|
|
92
141
|
### Local source directories
|
93
142
|
|
@@ -46,7 +46,7 @@ class MiniPortile
|
|
46
46
|
RbConfig::CONFIG['target_os'] =~ /mswin/
|
47
47
|
end
|
48
48
|
|
49
|
-
def initialize(name, version)
|
49
|
+
def initialize(name, version, **kwargs)
|
50
50
|
@name = name
|
51
51
|
@version = version
|
52
52
|
@target = 'ports'
|
@@ -57,6 +57,9 @@ class MiniPortile
|
|
57
57
|
@source_directory = nil
|
58
58
|
|
59
59
|
@original_host = @host = detect_host
|
60
|
+
|
61
|
+
@gcc_command = kwargs[:gcc_command]
|
62
|
+
@make_command = kwargs[:make_command]
|
60
63
|
end
|
61
64
|
|
62
65
|
def source_directory=(path)
|
@@ -222,6 +225,14 @@ class MiniPortile
|
|
222
225
|
File.expand_path(port_path)
|
223
226
|
end
|
224
227
|
|
228
|
+
def gcc_cmd
|
229
|
+
(ENV["CC"] || @gcc_command || RbConfig::CONFIG["CC"] || "gcc").dup
|
230
|
+
end
|
231
|
+
|
232
|
+
def make_cmd
|
233
|
+
(ENV["MAKE"] || @make_command || ENV["make"] || "make").dup
|
234
|
+
end
|
235
|
+
|
225
236
|
private
|
226
237
|
|
227
238
|
def tmp_path
|
@@ -583,14 +594,4 @@ private
|
|
583
594
|
FileUtils.mkdir_p File.dirname(full_path)
|
584
595
|
FileUtils.mv temp_file.path, full_path, :force => true
|
585
596
|
end
|
586
|
-
|
587
|
-
def gcc_cmd
|
588
|
-
cc = ENV["CC"] || RbConfig::CONFIG["CC"] || "gcc"
|
589
|
-
return cc.dup
|
590
|
-
end
|
591
|
-
|
592
|
-
def make_cmd
|
593
|
-
m = ENV['MAKE'] || ENV['make'] || 'make'
|
594
|
-
return m.dup
|
595
|
-
end
|
596
597
|
end
|
@@ -5,6 +5,11 @@ class MiniPortileCMake < MiniPortile
|
|
5
5
|
"-DCMAKE_INSTALL_PREFIX=#{File.expand_path(port_path)}"
|
6
6
|
end
|
7
7
|
|
8
|
+
def initialize(name, version, **kwargs)
|
9
|
+
super(name, version, **kwargs)
|
10
|
+
@cmake_command = kwargs[:cmake_command]
|
11
|
+
end
|
12
|
+
|
8
13
|
def configure_defaults
|
9
14
|
if MiniPortile.mswin?
|
10
15
|
['-G', 'NMake Makefiles']
|
@@ -21,7 +26,7 @@ class MiniPortileCMake < MiniPortile
|
|
21
26
|
cache_file = File.join(tmp_path, 'configure.options_cache')
|
22
27
|
File.open(cache_file, "w") { |f| f.write computed_options.to_s }
|
23
28
|
|
24
|
-
execute('configure',
|
29
|
+
execute('configure', [cmake_cmd] + computed_options + ["."])
|
25
30
|
end
|
26
31
|
|
27
32
|
def configured?
|
@@ -39,4 +44,8 @@ class MiniPortileCMake < MiniPortile
|
|
39
44
|
return "nmake" if MiniPortile.mswin?
|
40
45
|
super
|
41
46
|
end
|
47
|
+
|
48
|
+
def cmake_cmd
|
49
|
+
(ENV["CMAKE"] || @cmake_command || "cmake").dup
|
50
|
+
end
|
42
51
|
end
|
data/test/helper.rb
CHANGED
@@ -57,4 +57,20 @@ class TestCase < Minitest::Test
|
|
57
57
|
ensure
|
58
58
|
ENV['GIT_DIR'] = old
|
59
59
|
end
|
60
|
+
|
61
|
+
def with_env(env)
|
62
|
+
before = ENV.to_h.dup
|
63
|
+
env.each { |k, v| ENV[k] = v }
|
64
|
+
yield
|
65
|
+
ensure
|
66
|
+
ENV.replace(before)
|
67
|
+
end
|
68
|
+
|
69
|
+
def without_env(*keys, &blk)
|
70
|
+
before = ENV.to_h.dup
|
71
|
+
keys.flatten.each { |k| ENV.delete(k) }
|
72
|
+
yield
|
73
|
+
ensure
|
74
|
+
ENV.replace(before)
|
75
|
+
end
|
60
76
|
end
|
data/test/test_cmake.rb
CHANGED
@@ -58,3 +58,33 @@ class TestCMake < TestCase
|
|
58
58
|
assert File.exist?(binary), binary
|
59
59
|
end
|
60
60
|
end
|
61
|
+
|
62
|
+
class TestCMakeConfig < TestCase
|
63
|
+
def test_make_command_configuration
|
64
|
+
MiniPortile.stub(:mswin?, false) do
|
65
|
+
without_env("MAKE") do
|
66
|
+
assert_equal("make", MiniPortileCMake.new("test", "1.0.0").make_cmd)
|
67
|
+
assert_equal("xyzzy", MiniPortileCMake.new("test", "1.0.0", make_command: "xyzzy").make_cmd)
|
68
|
+
end
|
69
|
+
with_env("MAKE"=>"asdf") do
|
70
|
+
assert_equal("asdf", MiniPortileCMake.new("test", "1.0.0").make_cmd)
|
71
|
+
assert_equal("asdf", MiniPortileCMake.new("test", "1.0.0", make_command: "xyzzy").make_cmd)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
MiniPortile.stub(:mswin?, true) do
|
76
|
+
assert_equal("nmake", MiniPortileCMake.new("test", "1.0.0").make_cmd)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_cmake_command_configuration
|
81
|
+
without_env("CMAKE") do
|
82
|
+
assert_equal("cmake", MiniPortileCMake.new("test", "1.0.0").cmake_cmd)
|
83
|
+
assert_equal("xyzzy", MiniPortileCMake.new("test", "1.0.0", cmake_command: "xyzzy").cmake_cmd)
|
84
|
+
end
|
85
|
+
with_env("CMAKE"=>"asdf") do
|
86
|
+
assert_equal("asdf", MiniPortileCMake.new("test", "1.0.0").cmake_cmd)
|
87
|
+
assert_equal("asdf", MiniPortileCMake.new("test", "1.0.0", cmake_command: "xyzzy").cmake_cmd)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
data/test/test_cook.rb
CHANGED
@@ -67,6 +67,32 @@ class TestCook < TestCase
|
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
70
|
+
class TestCookConfiguration < TestCase
|
71
|
+
def test_make_command_configuration
|
72
|
+
without_env("MAKE") do
|
73
|
+
assert_equal("make", MiniPortile.new("test", "1.0.0").make_cmd)
|
74
|
+
assert_equal("xyzzy", MiniPortile.new("test", "1.0.0", make_command: "xyzzy").make_cmd)
|
75
|
+
end
|
76
|
+
with_env("MAKE"=>"asdf") do
|
77
|
+
assert_equal("asdf", MiniPortile.new("test", "1.0.0").make_cmd)
|
78
|
+
assert_equal("asdf", MiniPortile.new("test", "1.0.0", make_command: "xyzzy").make_cmd)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_gcc_command_configuration
|
83
|
+
without_env("CC") do
|
84
|
+
expected_compiler = RbConfig::CONFIG["CC"] || "gcc"
|
85
|
+
assert_equal(expected_compiler, MiniPortile.new("test", "1.0.0").gcc_cmd)
|
86
|
+
assert_equal("xyzzy", MiniPortile.new("test", "1.0.0", gcc_command: "xyzzy").gcc_cmd)
|
87
|
+
end
|
88
|
+
with_env("CC"=>"asdf") do
|
89
|
+
assert_equal("asdf", MiniPortile.new("test", "1.0.0").gcc_cmd)
|
90
|
+
assert_equal("asdf", MiniPortile.new("test", "1.0.0", gcc_command: "xyzzy").gcc_cmd)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
|
70
96
|
class TestCookWithBrokenGitDir < TestCase
|
71
97
|
#
|
72
98
|
# this is a test for #69
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mini_portile2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luis Lavena
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2021-
|
13
|
+
date: 2021-08-31 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -153,7 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
153
153
|
- !ruby/object:Gem::Version
|
154
154
|
version: '0'
|
155
155
|
requirements: []
|
156
|
-
rubygems_version: 3.
|
156
|
+
rubygems_version: 3.2.15
|
157
157
|
signing_key:
|
158
158
|
specification_version: 4
|
159
159
|
summary: Simplistic port-like solution for developers
|