mini_portile2 2.8.5.rc1 → 2.8.5.rc2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 235fc41ae2e4aab6133eb8edb741bb535194af46c1aca4e70f0785d2c1253322
4
- data.tar.gz: 4ffdc351e59c3cec669361e0fb7b50b536d113363a7ed1c91d8fb681453df4fa
3
+ metadata.gz: ca5eb330aa4b2b6093e3cbe77641dfd14b3eff2601dce6c97f7de69f42fffcb5
4
+ data.tar.gz: ad64c2536ab3e978c22d71bc380144f1fa579cf01993e97bf63553ec4732b851
5
5
  SHA512:
6
- metadata.gz: 03deed0dd932686706f7956fda4f167fb46c73f87f443c058163226019de21d16252c509b453fccfaa8b661bf3f9667b0c1f2fec66edcef042a968fcd847811f
7
- data.tar.gz: a5d574f3b181ed8303ae0c799e6092fde2166fd1dc5937961f7b8016eef441a287cf80c4abf1bb2ec0f036894a12ea80f12edb30cec631981f6d8f042ad87959
6
+ metadata.gz: 67530e1e366cb1605a272234bbfe7ccd6d8659ebd081352a93848de694c03ad0bac23425f2a13c94f67b5c0a55273f178577f31ad088d452f4bfa810e8445c45
7
+ data.tar.gz: 47e6b00a089e83e422f51c833744226c275af1a8700a21fa11a7f81c70b952da78fbf6df3a0cd8e1347be89b8c1ce6ac0f430a6339b3d0f3340aa2fe1efa0afb
data/CHANGELOG.md CHANGED
@@ -1,12 +1,14 @@
1
1
  ## mini_portile changelog
2
2
 
3
- ### 2.8.5.rc1 / 2023-09-13
3
+ ### 2.8.5.rc2 / 2023-09-17
4
4
 
5
5
  #### Added
6
6
 
7
7
  - New method `MiniPortile#mkmf_config` will set up MakeMakefile variables to properly link against the recipe. This should make it easier for C extensions to package third-party libraries.
8
8
  - With no arguments, will set up just `$INCFLAGS`, `$libs`, and `$LIBPATH`.
9
9
  - Optionally, if provided a pkg-config file, will use that config to more precisely set `$INCFLAGS`, `$libs`, `$LIBPATH`, and `$CFLAGS`/`$CXXFLAGS`.
10
+ - Optionally, if provided the name of a static archive, will rewrite linker flags to ensure correct linkage.
11
+ - New methods `#lib_path` and `#include_path` which point at the installed directories under `ports`.
10
12
 
11
13
 
12
14
  ### 2.8.4 / 2023-07-18
@@ -27,6 +27,8 @@ class Net::HTTP
27
27
  end
28
28
  end
29
29
 
30
+ $MINI_PORTILE_STATIC_LIBS = {}
31
+
30
32
  class MiniPortile
31
33
  DEFAULT_TIMEOUT = 10
32
34
 
@@ -237,11 +239,10 @@ class MiniPortile
237
239
  end
238
240
 
239
241
  def activate
240
- lib_path = File.join(port_path, "lib")
241
242
  vars = {
242
243
  'PATH' => File.join(port_path, 'bin'),
243
- 'CPATH' => File.join(port_path, 'include'),
244
- 'LIBRARY_PATH' => lib_path
244
+ 'CPATH' => include_path,
245
+ 'LIBRARY_PATH' => lib_path,
245
246
  }.reject { |env, path| !File.directory?(path) }
246
247
 
247
248
  output "Activating #{@name} #{@version} (from #{port_path})..."
@@ -268,11 +269,19 @@ class MiniPortile
268
269
  end
269
270
  end
270
271
 
271
- def mkmf_config(pkg: nil, dir: nil)
272
+ # pkg: the pkg-config file name (without the .pc extension)
273
+ # dir: inject the directory path for the pkg-config file (probably only useful for tests)
274
+ # static: the name of the static library archive (without the "lib" prefix or the file extension), or nil for dynamic linking
275
+ #
276
+ # we might be able to be terribly clever and infer the name of the static archive file, but
277
+ # unfortunately projects have so much freedom in what they can report (for name, for libs, etc.)
278
+ # that it feels unreliable to try to do so, so I'm preferring to just have the developer make it
279
+ # explicit.
280
+ def mkmf_config(pkg: nil, dir: nil, static: nil)
272
281
  require "mkmf"
273
282
 
274
283
  if pkg
275
- dir ||= File.join(path, "lib", "pkgconfig")
284
+ dir ||= File.join(lib_path, "pkgconfig")
276
285
  pcfile = File.join(dir, "#{pkg}.pc")
277
286
  unless File.exist?(pcfile)
278
287
  raise ArgumentError, "pkg-config file '#{pcfile}' does not exist"
@@ -288,42 +297,81 @@ class MiniPortile
288
297
 
289
298
  incflags = minimal_pkg_config(pcfile, "cflags-only-I")
290
299
  cflags = minimal_pkg_config(pcfile, "cflags-only-other")
291
- ldflags = minimal_pkg_config(pcfile, "libs-only-L", "static")
292
- libflags = minimal_pkg_config(pcfile, "libs-only-l", "static")
300
+ if static
301
+ ldflags = minimal_pkg_config(pcfile, "libs-only-L", "static")
302
+ libflags = minimal_pkg_config(pcfile, "libs-only-l", "static")
303
+ else
304
+ ldflags = minimal_pkg_config(pcfile, "libs-only-L")
305
+ libflags = minimal_pkg_config(pcfile, "libs-only-l")
306
+ end
293
307
  else
294
308
  output "Configuring MakeMakefile for #{@name} #{@version} (from #{path})\n"
295
309
 
296
- include_path = File.join(path, "include")
297
- lib_path = File.join(path, "lib")
298
-
299
310
  lib_name = name.sub(/\Alib/, "") # TODO: use delete_prefix when we no longer support ruby 2.4
300
311
 
301
- incflags = "-I#{include_path}" if Dir.exist?(include_path)
302
- ldflags = "-L#{lib_path}" if Dir.exist?(lib_path)
303
- libflags = "-l#{lib_name}" if Dir.exist?(lib_path)
312
+ incflags = Dir.exist?(include_path) ? "-I#{include_path}" : ""
313
+ cflags = ""
314
+ ldflags = Dir.exist?(lib_path) ? "-L#{lib_path}" : ""
315
+ libflags = Dir.exist?(lib_path) ? "-l#{lib_name}" : ""
304
316
  end
305
317
 
306
- if ldflags
307
- libpaths = ldflags.split.map { |f| f.sub(/\A-L/, "") }
318
+ if static
319
+ libdir = lib_path
320
+ if pcfile
321
+ variables = minimal_pkg_config(pcfile, "print-variables").split("\n").map(&:strip)
322
+ if variables.include?("libdir")
323
+ libdir = minimal_pkg_config(pcfile, "variable=libdir")
324
+ end
325
+ end
326
+
327
+ #
328
+ # keep track of the libraries we're statically linking against, and fix up ldflags and
329
+ # libflags to make sure we link statically against the recipe's libaries.
330
+ #
331
+ # this avoids the unintentionally dynamically linking against system libraries, and makes sure
332
+ # that if multiple pkg-config files reference each other that we are able to intercept flags
333
+ # from dependent packages that reference the static archive.
334
+ #
335
+ $MINI_PORTILE_STATIC_LIBS[static] = libdir
336
+ static_ldflags = $MINI_PORTILE_STATIC_LIBS.values.map { |v| "-L#{v}" }
337
+ static_libflags = $MINI_PORTILE_STATIC_LIBS.keys.map { |v| "-l#{v}" }
338
+
339
+ # remove `-L#{libdir}` and `-lfoo`. we don't need them since we link against the static
340
+ # archive using the full path.
341
+ ldflags = ldflags.shellsplit.reject { |f| static_ldflags.include?(f) }.shelljoin
342
+ libflags = libflags.shellsplit.reject { |f| static_libflags.include?(f) }.shelljoin
343
+
344
+ # prepend the full path to the static archive to the linker flags
345
+ static_archive = File.join(libdir, "lib#{static}.#{$LIBEXT}")
346
+ libflags = [static_archive, libflags].join(" ").strip
308
347
  end
309
348
 
310
- # prefer this package by prepending directories to the search path
349
+ # prefer this package by prepending to search paths and library flags
311
350
  #
312
- # use $LIBPATH instead of $LDFLAGS to ensure we get the `-Wl,-rpath` linker flag for re-finding
313
- # shared libraries
314
- $INCFLAGS = [incflags, $INCFLAGS].join(" ").strip if incflags
315
- $LIBPATH = libpaths | $LIBPATH if libpaths
351
+ # convert the ldflags into a list of directories and append to $LIBPATH (instead of just using
352
+ # $LDFLAGS) to ensure we get the `-Wl,-rpath` linker flag for re-finding shared libraries.
353
+ $INCFLAGS = [incflags, $INCFLAGS].join(" ").strip
354
+ libpaths = ldflags.shellsplit.map { |f| f.sub(/\A-L/, "") }
355
+ $LIBPATH = libpaths | $LIBPATH
356
+ $libs = [libflags, $libs].join(" ").strip
316
357
 
317
- # prefer this package's flags by appending them to the command line
318
- $CFLAGS = [$CFLAGS, cflags].join(" ").strip if cflags
319
- $CXXFLAGS = [$CXXFLAGS, cflags].join(" ").strip if cflags
320
- $libs = [$libs, libflags].join(" ").strip if libflags
358
+ # prefer this package's compiler flags by appending them to the command line
359
+ $CFLAGS = [$CFLAGS, cflags].join(" ").strip
360
+ $CXXFLAGS = [$CXXFLAGS, cflags].join(" ").strip
321
361
  end
322
362
 
323
363
  def path
324
364
  File.expand_path(port_path)
325
365
  end
326
366
 
367
+ def include_path
368
+ File.join(path, "include")
369
+ end
370
+
371
+ def lib_path
372
+ File.join(path, "lib")
373
+ end
374
+
327
375
  def gcc_cmd
328
376
  (ENV["CC"] || @gcc_command || RbConfig::CONFIG["CC"] || "gcc").dup
329
377
  end
@@ -1,3 +1,3 @@
1
1
  class MiniPortile
2
- VERSION = "2.8.5.rc1"
2
+ VERSION = "2.8.5.rc2"
3
3
  end
@@ -3,11 +3,17 @@ require File.expand_path('../helper', __FILE__)
3
3
  require "mkmf" # initialize $LDFLAGS et al here, instead of in the middle of a test
4
4
 
5
5
  class TestMkmfConfig < TestCase
6
- attr_reader :recipe, :include_path, :lib_path
6
+ attr_reader :recipe
7
7
 
8
8
  LIBXML_PCP = File.join(__dir__, "assets", "pkgconf", "libxml2")
9
9
  LIBXSLT_PCP = File.join(__dir__, "assets", "pkgconf", "libxslt")
10
10
 
11
+ def make_recipe(name, version)
12
+ MiniPortile.new(name, version).tap do |recipe|
13
+ recipe.logger = StringIO.new # hush output
14
+ end
15
+ end
16
+
11
17
  def setup
12
18
  super
13
19
 
@@ -19,14 +25,11 @@ class TestMkmfConfig < TestCase
19
25
  $CFLAGS = "-xxx"
20
26
  $CXXFLAGS = "-xxx"
21
27
  $libs = "-lxxx"
28
+ $MINI_PORTILE_STATIC_LIBS = {}
22
29
 
23
30
  FileUtils.rm_rf(["tmp", "ports"]) # remove any previous test files
24
31
 
25
- @recipe = MiniPortile.new("libfoo", "1.0.0").tap do |recipe|
26
- recipe.logger = StringIO.new
27
- end
28
- @include_path = File.join(@recipe.path, "include")
29
- @lib_path = File.join(@recipe.path, "lib")
32
+ @recipe = make_recipe("libfoo", "1.0.0")
30
33
  end
31
34
 
32
35
  def teardown
@@ -37,6 +40,7 @@ class TestMkmfConfig < TestCase
37
40
  $CFLAGS = ""
38
41
  $CXXFLAGS = ""
39
42
  $libs = ""
43
+ $MINI_PORTILE_STATIC_LIBS = {}
40
44
  @save_env.each do |var, val|
41
45
  ENV[var] = val
42
46
  end
@@ -47,35 +51,48 @@ class TestMkmfConfig < TestCase
47
51
  def test_mkmf_config_recipe_LIBPATH_global_lib_dir_does_not_exist
48
52
  recipe.mkmf_config
49
53
 
50
- refute_includes($LIBPATH, lib_path)
51
- refute_includes($libs.split, "-lfoo")
54
+ refute_includes($LIBPATH, recipe.lib_path)
55
+ refute_includes($libs.shellsplit, "-lfoo")
52
56
  end
53
57
 
54
- def test_mkmf_config_recipe_LIBPATH_global
55
- FileUtils.mkdir_p(lib_path)
58
+ def test_mkmf_config_recipe_LIBPATH_global_not_static
59
+ FileUtils.mkdir_p(recipe.lib_path)
56
60
 
57
61
  recipe.mkmf_config
58
62
 
59
- assert_includes($LIBPATH, lib_path)
60
- assert_operator($LIBPATH.index(lib_path), :<, $LIBPATH.index("xxx")) # prepend
63
+ assert_includes($LIBPATH, recipe.lib_path)
64
+ assert_operator($LIBPATH.index(recipe.lib_path), :<, $LIBPATH.index("xxx")) # prepend
65
+
66
+ assert_includes($libs.shellsplit, "-lfoo") # note the recipe name is "libfoo"
67
+ assert_match(%r{-lfoo.*-lxxx}, $libs) # prepend
68
+ end
69
+
70
+ def test_mkmf_config_recipe_LIBPATH_global_static
71
+ FileUtils.mkdir_p(recipe.lib_path)
72
+ static_lib_path = File.join(recipe.lib_path, "libfoo.#{$LIBEXT}")
73
+
74
+ recipe.mkmf_config(static: "foo")
75
+
76
+ refute_includes($LIBPATH, recipe.lib_path)
61
77
 
62
- assert_includes($libs.split, "-lfoo") # note the recipe name is "libfoo"
63
- assert_match(%r{-lxxx.*-lfoo}, $libs) # append
78
+ refute_includes($libs.shellsplit, "-lfoo") # note the recipe name is "libfoo"
79
+ assert_includes($libs.shellsplit, static_lib_path)
80
+ assert_match(%r{#{static_lib_path}.*-lxxx}, $libs) # prepend
64
81
  end
65
82
 
66
83
  def test_mkmf_config_recipe_INCFLAGS_global_include_dir_does_not_exist
67
84
  recipe.mkmf_config
68
85
 
69
- refute_includes($INCFLAGS.split, "-I#{include_path}")
86
+ refute_includes($INCFLAGS.shellsplit, "-I#{recipe.include_path}")
70
87
  end
71
88
 
72
89
  def test_mkmf_config_recipe_INCFLAGS_global
73
- FileUtils.mkdir_p(include_path)
90
+ FileUtils.mkdir_p(recipe.include_path)
74
91
 
75
92
  recipe.mkmf_config
76
93
 
77
- assert_includes($INCFLAGS.split, "-I#{include_path}")
78
- assert_match(%r{-I#{include_path}.*-I/xxx}, $INCFLAGS) # prepend
94
+ assert_includes($INCFLAGS.shellsplit, "-I#{recipe.include_path}")
95
+ assert_match(%r{-I#{recipe.include_path}.*-I/xxx}, $INCFLAGS) # prepend
79
96
  end
80
97
 
81
98
  def test_mkmf_config_pkgconf_does_not_exist
@@ -84,7 +101,7 @@ class TestMkmfConfig < TestCase
84
101
  end
85
102
  end
86
103
 
87
- def test_mkmf_config_pkgconf_LIBPATH_global
104
+ def test_mkmf_config_pkgconf_LIBPATH_global_not_static
88
105
  # can't get the pkgconf utility to install on windows with ruby 2.3 in CI
89
106
  skip if MiniPortile.windows? && RUBY_VERSION < "2.4"
90
107
 
@@ -92,9 +109,28 @@ class TestMkmfConfig < TestCase
92
109
 
93
110
  assert_includes($LIBPATH, "/foo/libxml2/2.11.5/lib")
94
111
  assert_operator($LIBPATH.index("/foo/libxml2/2.11.5/lib"), :<, $LIBPATH.index("xxx")) # prepend
112
+ refute_includes($LIBPATH, "/foo/zlib/1.3/lib")
113
+
114
+ assert_includes($libs.shellsplit, "-lxml2")
115
+ assert_match(%r{-lxml2.*-lxxx}, $libs) # prepend
116
+ refute_includes($libs.shellsplit, "-lz")
117
+ end
118
+
119
+ def test_mkmf_config_pkgconf_LIBPATH_global_static
120
+ # can't get the pkgconf utility to install on windows with ruby 2.3 in CI
121
+ skip if MiniPortile.windows? && RUBY_VERSION < "2.4"
122
+
123
+ static_lib_path = "/foo/libxml2/2.11.5/lib/libxml2.#{$LIBEXT}"
95
124
 
96
- assert_includes($libs.split, "-lxml2")
97
- assert_match(%r{-lxxx.*-lxml2}, $libs) # append
125
+ recipe.mkmf_config(pkg: "libxml-2.0", dir: LIBXML_PCP, static: "xml2")
126
+
127
+ refute_includes($LIBPATH, "/foo/libxml2/2.11.5/lib")
128
+ refute_includes($libs.shellsplit, "-lxml2")
129
+ assert_includes($libs.shellsplit, static_lib_path)
130
+ assert_match(%r{#{static_lib_path}.*-lxxx}, $libs) # prepend
131
+
132
+ assert_includes($LIBPATH, "/foo/zlib/1.3/lib") # from --static
133
+ assert_includes($libs.shellsplit, "-lz") # from --static
98
134
  end
99
135
 
100
136
  def test_mkmf_config_pkgconf_CFLAGS_global
@@ -103,14 +139,14 @@ class TestMkmfConfig < TestCase
103
139
 
104
140
  recipe.mkmf_config(pkg: "libxml-2.0", dir: LIBXML_PCP)
105
141
 
106
- assert_includes($INCFLAGS.split, "-I/foo/libxml2/2.11.5/include/libxml2")
142
+ assert_includes($INCFLAGS.shellsplit, "-I/foo/libxml2/2.11.5/include/libxml2")
107
143
  assert_match(%r{-I/foo/libxml2/2.11.5/include/libxml2.*-I/xxx}, $INCFLAGS) # prepend
108
144
 
109
- assert_includes($CFLAGS.split, "-ggdb3")
110
- assert_match(%r{-xxx.*-ggdb3}, $CFLAGS) # prepend
145
+ assert_includes($CFLAGS.shellsplit, "-ggdb3")
146
+ assert_match(%r{-xxx.*-ggdb3}, $CFLAGS) # append
111
147
 
112
- assert_includes($CXXFLAGS.split, "-ggdb3")
113
- assert_match(%r{-xxx.*-ggdb3}, $CXXFLAGS) # prepend
148
+ assert_includes($CXXFLAGS.shellsplit, "-ggdb3")
149
+ assert_match(%r{-xxx.*-ggdb3}, $CXXFLAGS) # append
114
150
  end
115
151
 
116
152
  def test_mkmf_config_pkgconf_path_accumulation
@@ -122,37 +158,44 @@ class TestMkmfConfig < TestCase
122
158
  refute_includes(pcpaths, LIBXSLT_PCP)
123
159
  end
124
160
 
125
- recipe.mkmf_config(pkg: "libxml-2.0", dir: LIBXML_PCP)
161
+ make_recipe("libxml2", "2.11.5").tap do |recipe|
162
+ recipe.mkmf_config(pkg: "libxml-2.0", dir: LIBXML_PCP, static: "xml2")
126
163
 
127
- ENV["PKG_CONFIG_PATH"].split(File::PATH_SEPARATOR).tap do |pcpaths|
128
- assert_includes(pcpaths, LIBXML_PCP)
129
- refute_includes(pcpaths, LIBXSLT_PCP)
164
+ ENV["PKG_CONFIG_PATH"].split(File::PATH_SEPARATOR).tap do |pcpaths|
165
+ assert_includes(pcpaths, LIBXML_PCP)
166
+ refute_includes(pcpaths, LIBXSLT_PCP)
167
+ end
130
168
  end
131
169
 
132
- recipe.mkmf_config(pkg: "libxslt", dir: LIBXSLT_PCP)
170
+ make_recipe("libxslt", "1.13.8").tap do |recipe|
171
+ recipe.mkmf_config(pkg: "libxslt", dir: LIBXSLT_PCP, static: "xslt")
133
172
 
134
- ENV["PKG_CONFIG_PATH"].split(File::PATH_SEPARATOR).tap do |pcpaths|
135
- assert_includes(pcpaths, LIBXML_PCP)
136
- assert_includes(pcpaths, LIBXSLT_PCP)
137
- end
173
+ ENV["PKG_CONFIG_PATH"].split(File::PATH_SEPARATOR).tap do |pcpaths|
174
+ assert_includes(pcpaths, LIBXML_PCP)
175
+ assert_includes(pcpaths, LIBXSLT_PCP)
176
+ end
138
177
 
139
- recipe.mkmf_config(pkg: "libexslt", dir: LIBXSLT_PCP)
178
+ recipe.mkmf_config(pkg: "libexslt", dir: LIBXSLT_PCP, static: "exslt")
179
+ end
140
180
 
141
- $INCFLAGS.split.tap do |incflags|
181
+ $INCFLAGS.shellsplit.tap do |incflags|
142
182
  assert_includes(incflags, "-I/foo/libxml2/2.11.5/include/libxml2")
143
183
  assert_includes(incflags, "-I/foo/libxslt/1.1.38/include")
144
184
  end
145
- assert_includes($LIBPATH, "/foo/libxml2/2.11.5/lib")
146
- assert_includes($LIBPATH, "/foo/libxslt/1.1.38/lib")
147
- assert_includes($LIBPATH, "/foo/zlib/1.3/lib") # from `--static`
148
- $CFLAGS.split.tap do |cflags|
185
+ $CFLAGS.shellsplit.tap do |cflags|
149
186
  assert_includes(cflags, "-ggdb3")
150
187
  assert_includes(cflags, "-Wno-deprecated-enum-enum-conversion")
151
188
  end
152
- $libs.split.tap do |libflags|
153
- assert_includes(libflags, "-lxml2")
154
- assert_includes(libflags, "-lxslt")
155
- assert_includes(libflags, "-lexslt")
189
+ refute_includes($LIBPATH, "/foo/libxml2/2.11.5/lib")
190
+ refute_includes($LIBPATH, "/foo/libxslt/1.1.38/lib")
191
+ assert_includes($LIBPATH, "/foo/zlib/1.3/lib") # from `--static`
192
+ $libs.shellsplit.tap do |libflags|
193
+ refute_includes(libflags, "-lxml2")
194
+ assert_includes(libflags, "/foo/libxml2/2.11.5/lib/libxml2.#{$LIBEXT}")
195
+ refute_includes(libflags, "-lxslt")
196
+ assert_includes(libflags, "/foo/libxslt/1.1.38/lib/libxslt.#{$LIBEXT}")
197
+ refute_includes(libflags, "-lexslt")
198
+ assert_includes(libflags, "/foo/libxslt/1.1.38/lib/libexslt.#{$LIBEXT}")
156
199
  assert_includes(libflags, "-lz") # from `--static`
157
200
  end
158
201
  end
@@ -0,0 +1,18 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+
3
+ class TestRecipe < TestCase
4
+ def test_path
5
+ recipe = MiniPortile.new("libfoo", "1.0.0")
6
+ assert_equal(File.expand_path(File.join(recipe.target, recipe.host, recipe.name, recipe.version)), recipe.path)
7
+ end
8
+
9
+ def test_lib_path
10
+ recipe = MiniPortile.new("libfoo", "1.0.0")
11
+ assert_equal(File.join(recipe.path, "lib"), recipe.lib_path)
12
+ end
13
+
14
+ def test_include_path
15
+ recipe = MiniPortile.new("libfoo", "1.0.0")
16
+ assert_equal(File.join(recipe.path, "include"), recipe.include_path)
17
+ end
18
+ end
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.8.5.rc1
4
+ version: 2.8.5.rc2
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: 2023-09-13 00:00:00.000000000 Z
13
+ date: 2023-09-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -139,6 +139,7 @@ files:
139
139
  - test/test_execute.rb
140
140
  - test/test_mkmf_config.rb
141
141
  - test/test_proxy.rb
142
+ - test/test_recipe.rb
142
143
  homepage: https://github.com/flavorjones/mini_portile
143
144
  licenses:
144
145
  - MIT
@@ -184,3 +185,4 @@ test_files:
184
185
  - test/test_execute.rb
185
186
  - test/test_mkmf_config.rb
186
187
  - test/test_proxy.rb
188
+ - test/test_recipe.rb