mini_portile2 2.8.4 → 2.8.5.rc1

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: 999335cad76fefd8e0ec313bb0bd7260a0259ef37760a01ee34153754ea2661f
4
- data.tar.gz: 472586aad90ab8c61df7fffd60f6507206d3900fb71d505edef100ceef6e7e2f
3
+ metadata.gz: 235fc41ae2e4aab6133eb8edb741bb535194af46c1aca4e70f0785d2c1253322
4
+ data.tar.gz: 4ffdc351e59c3cec669361e0fb7b50b536d113363a7ed1c91d8fb681453df4fa
5
5
  SHA512:
6
- metadata.gz: c978de2664efdee0bd9b89a842d33844c7ab6ee5d9dce45baaa53e061ab04777fcfb0ecc4900b772e4a2cf64c80c615b727d1227f9d09e223e30834f1dbf5ddc
7
- data.tar.gz: 58a18c5ee2c34ab370dd0d30449aa2bf06e40d7e070ab1bd5e8fcf4226e8e390516718b2b6aed0e17ee3736aa04eea45917cee53a5a1b117b78ffcb12dc4bfd3
6
+ metadata.gz: 03deed0dd932686706f7956fda4f167fb46c73f87f443c058163226019de21d16252c509b453fccfaa8b661bf3f9667b0c1f2fec66edcef042a968fcd847811f
7
+ data.tar.gz: a5d574f3b181ed8303ae0c799e6092fde2166fd1dc5937961f7b8016eef441a287cf80c4abf1bb2ec0f036894a12ea80f12edb30cec631981f6d8f042ad87959
@@ -67,5 +67,22 @@ jobs:
67
67
  - uses: actions/cache@v3
68
68
  with:
69
69
  path: examples/ports/archives
70
- key: ${{ matrix.platform }}-examples-${{ hashFiles('examples/Rakefile') }}
70
+ key: examples-${{ hashFiles('examples/Rakefile') }}
71
+ - run: bundle exec rake test:examples
72
+
73
+ fedora: # see https://github.com/flavorjones/mini_portile/issues/118
74
+ runs-on: ubuntu-latest
75
+ container:
76
+ image: fedora:35
77
+ steps:
78
+ - run: |
79
+ dnf group install -y "C Development Tools and Libraries"
80
+ dnf install -y ruby ruby-devel libyaml-devel git-all patch cmake xz
81
+ - uses: actions/checkout@v3
82
+ - uses: actions/cache@v3
83
+ with:
84
+ path: examples/ports/archives
85
+ key: examples-${{ hashFiles('examples/Rakefile') }}
86
+ - run: bundle install
87
+ - run: bundle exec rake test:unit
71
88
  - run: bundle exec rake test:examples
data/.gitignore CHANGED
@@ -3,3 +3,4 @@ Gemfile.lock
3
3
  pkg
4
4
  ports
5
5
  tmp
6
+ mkmf.log
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  ## mini_portile changelog
2
2
 
3
+ ### 2.8.5.rc1 / 2023-09-13
4
+
5
+ #### Added
6
+
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
+ - With no arguments, will set up just `$INCFLAGS`, `$libs`, and `$LIBPATH`.
9
+ - Optionally, if provided a pkg-config file, will use that config to more precisely set `$INCFLAGS`, `$libs`, `$LIBPATH`, and `$CFLAGS`/`$CXXFLAGS`.
10
+
11
+
3
12
  ### 2.8.4 / 2023-07-18
4
13
 
5
14
  - cmake: set CMAKE compile flags to configure cross-compilation similarly to `autotools` `--host` flag: `SYSTEM_NAME`, `SYSTEM_PROCESSOR`, `C_COMPILER`, and `CXX_COMPILER`. [#130] (Thanks, @stanhu!)
@@ -76,6 +76,24 @@ class MiniPortile
76
76
  RbConfig::CONFIG['target_cpu']
77
77
  end
78
78
 
79
+ def self.native_path(path)
80
+ path = File.expand_path(path)
81
+ if File::ALT_SEPARATOR
82
+ path.tr(File::SEPARATOR, File::ALT_SEPARATOR)
83
+ else
84
+ path
85
+ end
86
+ end
87
+
88
+ def self.posix_path(path)
89
+ path = File.expand_path(path)
90
+ if File::ALT_SEPARATOR
91
+ "/" + path.tr(File::ALT_SEPARATOR, File::SEPARATOR).tr(":", File::SEPARATOR)
92
+ else
93
+ path
94
+ end
95
+ end
96
+
79
97
  def initialize(name, version, **kwargs)
80
98
  @name = name
81
99
  @version = version
@@ -86,12 +104,12 @@ class MiniPortile
86
104
  @logger = STDOUT
87
105
  @source_directory = nil
88
106
 
89
- @original_host = @host = detect_host
90
-
91
107
  @gcc_command = kwargs[:gcc_command]
92
108
  @make_command = kwargs[:make_command]
93
109
  @open_timeout = kwargs[:open_timeout] || DEFAULT_TIMEOUT
94
110
  @read_timeout = kwargs[:read_timeout] || DEFAULT_TIMEOUT
111
+
112
+ @original_host = @host = detect_host
95
113
  end
96
114
 
97
115
  def source_directory=(path)
@@ -240,7 +258,7 @@ class MiniPortile
240
258
 
241
259
  # rely on LDFLAGS when cross-compiling
242
260
  if File.exist?(lib_path) && (@host != @original_host)
243
- full_path = File.expand_path(lib_path)
261
+ full_path = native_path(lib_path)
244
262
 
245
263
  old_value = ENV.fetch("LDFLAGS", "")
246
264
 
@@ -250,6 +268,58 @@ class MiniPortile
250
268
  end
251
269
  end
252
270
 
271
+ def mkmf_config(pkg: nil, dir: nil)
272
+ require "mkmf"
273
+
274
+ if pkg
275
+ dir ||= File.join(path, "lib", "pkgconfig")
276
+ pcfile = File.join(dir, "#{pkg}.pc")
277
+ unless File.exist?(pcfile)
278
+ raise ArgumentError, "pkg-config file '#{pcfile}' does not exist"
279
+ end
280
+
281
+ output "Configuring MakeMakefile for #{File.basename(pcfile)} (in #{File.dirname(pcfile)})\n"
282
+
283
+ # on macos, pkg-config will not return --cflags without this
284
+ ENV["PKG_CONFIG_ALLOW_SYSTEM_CFLAGS"] = "t"
285
+
286
+ # append to PKG_CONFIG_PATH as we go, so later pkg-config files can depend on earlier ones
287
+ ENV["PKG_CONFIG_PATH"] = [ENV["PKG_CONFIG_PATH"], dir].compact.join(File::PATH_SEPARATOR)
288
+
289
+ incflags = minimal_pkg_config(pcfile, "cflags-only-I")
290
+ 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")
293
+ else
294
+ output "Configuring MakeMakefile for #{@name} #{@version} (from #{path})\n"
295
+
296
+ include_path = File.join(path, "include")
297
+ lib_path = File.join(path, "lib")
298
+
299
+ lib_name = name.sub(/\Alib/, "") # TODO: use delete_prefix when we no longer support ruby 2.4
300
+
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)
304
+ end
305
+
306
+ if ldflags
307
+ libpaths = ldflags.split.map { |f| f.sub(/\A-L/, "") }
308
+ end
309
+
310
+ # prefer this package by prepending directories to the search path
311
+ #
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
316
+
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
321
+ end
322
+
253
323
  def path
254
324
  File.expand_path(port_path)
255
325
  end
@@ -265,21 +335,11 @@ class MiniPortile
265
335
  private
266
336
 
267
337
  def native_path(path)
268
- path = File.expand_path(path)
269
- if File::ALT_SEPARATOR
270
- path.tr(File::SEPARATOR, File::ALT_SEPARATOR)
271
- else
272
- path
273
- end
338
+ MiniPortile.native_path(path)
274
339
  end
275
340
 
276
341
  def posix_path(path)
277
- path = File.expand_path(path)
278
- if File::ALT_SEPARATOR
279
- "/" + path.tr(File::ALT_SEPARATOR, File::SEPARATOR).tr(":", File::SEPARATOR)
280
- else
281
- path
282
- end
342
+ MiniPortile.posix_path(path)
283
343
  end
284
344
 
285
345
  def tmp_path
@@ -648,4 +708,29 @@ class MiniPortile
648
708
  FileUtils.mkdir_p File.dirname(full_path)
649
709
  FileUtils.mv temp_file.path, full_path, :force => true
650
710
  end
711
+
712
+ #
713
+ # this minimal version of pkg_config is based on ruby 29dc9378 (2023-01-09)
714
+ #
715
+ # specifically with the fix from b90e56e6 to support multiple pkg-config options, and removing
716
+ # code paths that aren't helpful for mini-portile's use case of parsing pc files.
717
+ #
718
+ def minimal_pkg_config(pkg, *pcoptions)
719
+ if pcoptions.empty?
720
+ raise ArgumentError, "no pkg-config options are given"
721
+ end
722
+
723
+ if ($PKGCONFIG ||=
724
+ (pkgconfig = MakeMakefile.with_config("pkg-config") {MakeMakefile.config_string("PKG_CONFIG") || "pkg-config"}) &&
725
+ MakeMakefile.find_executable0(pkgconfig) && pkgconfig)
726
+ pkgconfig = $PKGCONFIG
727
+ else
728
+ raise RuntimeError, "pkg-config is not found"
729
+ end
730
+
731
+ pcoptions = Array(pcoptions).map { |o| "--#{o}" }
732
+ response = IO.popen([pkgconfig, *pcoptions, pkg], err:[:child, :out], &:read)
733
+ raise RuntimeError, response unless $?.success?
734
+ response.strip
735
+ end
651
736
  end
@@ -1,3 +1,3 @@
1
1
  class MiniPortile
2
- VERSION = "2.8.4"
2
+ VERSION = "2.8.5.rc1"
3
3
  end
@@ -0,0 +1,13 @@
1
+ prefix=/foo/libxml2/2.11.5
2
+ exec_prefix=${prefix}
3
+ libdir=/foo/libxml2/2.11.5/lib
4
+ includedir=${prefix}/include
5
+ modules=1
6
+
7
+ Name: libXML
8
+ Version: 2.11.5
9
+ Description: libXML library version2.
10
+ Requires:
11
+ Libs: -L${libdir} -lxml2
12
+ Libs.private: -L/foo/zlib/1.3/lib -lz -lm
13
+ Cflags: -I${includedir}/libxml2 -ggdb3
@@ -0,0 +1,13 @@
1
+ prefix=/foo/libxslt/1.1.38
2
+ exec_prefix=${prefix}
3
+ libdir=/foo/libxslt/1.1.38/lib
4
+ includedir=${prefix}/include
5
+
6
+
7
+ Name: libexslt
8
+ Version: 0.8.21
9
+ Description: EXSLT Extension library
10
+ Requires: libxml-2.0, libxslt
11
+ Cflags: -I${includedir}
12
+ Libs: -L${libdir} -lexslt
13
+ Libs.private: -lm
@@ -0,0 +1,13 @@
1
+ prefix=/foo/libxslt/1.1.38
2
+ exec_prefix=${prefix}
3
+ libdir=/foo/libxslt/1.1.38/lib
4
+ includedir=${prefix}/include
5
+
6
+
7
+ Name: libxslt
8
+ Version: 1.1.38
9
+ Description: XSLT library version 2.
10
+ Requires: libxml-2.0
11
+ Cflags: -I${includedir} -Wno-deprecated-enum-enum-conversion
12
+ Libs: -L${libdir} -lxslt
13
+ Libs.private: -lm
@@ -0,0 +1,139 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+
3
+ class TestActivate < TestCase
4
+ attr_reader :recipe
5
+
6
+ def setup
7
+ super
8
+
9
+ @save_env = %w[PATH CPATH LIBRARY_PATH LDFLAGS].inject({}) do |env, var|
10
+ env.update(var => ENV[var])
11
+ end
12
+
13
+ FileUtils.rm_rf(["tmp", "ports"]) # remove any previous test files
14
+
15
+ @recipe = MiniPortile.new("foo", "1.0.0").tap do |recipe|
16
+ recipe.logger = StringIO.new
17
+ end
18
+ end
19
+
20
+ def teardown
21
+ FileUtils.rm_rf(["tmp", "ports"]) # remove any previous test files
22
+
23
+ @save_env.each do |var, val|
24
+ ENV[var] = val
25
+ end
26
+
27
+ super
28
+ end
29
+
30
+ def test_PATH_env_var_when_bin_does_not_exist
31
+ ENV["PATH"] = "foo"
32
+ refute(Dir.exist?(bin_path))
33
+ refute_includes(path_elements('PATH'), bin_path)
34
+
35
+ recipe.activate
36
+
37
+ refute_includes(path_elements('PATH'), bin_path)
38
+ end
39
+
40
+ def test_PATH_env_var_when_bin_exists
41
+ ENV["PATH"] = "foo"
42
+ FileUtils.mkdir_p(bin_path)
43
+ refute_includes(path_elements('PATH'), bin_path)
44
+
45
+ recipe.activate
46
+
47
+ assert_includes(path_elements('PATH'), bin_path)
48
+ assert_equal(path_elements('PATH').first, bin_path)
49
+ end
50
+
51
+ def test_CPATH_env_var_when_include_does_not_exist
52
+ ENV["CPATH"] = "foo"
53
+ refute(Dir.exist?(include_path))
54
+ refute_includes(path_elements('CPATH'), include_path)
55
+
56
+ recipe.activate
57
+
58
+ refute_includes(path_elements('CPATH'), include_path)
59
+ end
60
+
61
+ def test_CPATH_env_var_when_include_exists
62
+ ENV["CPATH"] = "foo"
63
+ FileUtils.mkdir_p(include_path)
64
+ refute_includes(path_elements('CPATH'), include_path)
65
+
66
+ recipe.activate
67
+
68
+ assert_includes(path_elements('CPATH'), include_path)
69
+ assert_equal(path_elements('CPATH').first, include_path)
70
+ end
71
+
72
+ def test_LIBRARY_PATH_env_var_when_lib_does_not_exist
73
+ ENV["LIBRARY_PATH"] = "foo"
74
+ refute(Dir.exist?(lib_path))
75
+ refute_includes(path_elements('LIBRARY_PATH'), lib_path)
76
+
77
+ recipe.activate
78
+
79
+ refute_includes(path_elements('LIBRARY_PATH'), lib_path)
80
+ end
81
+
82
+ def test_LIBRARY_PATH_env_var_when_lib_exists
83
+ ENV["LIBRARY_PATH"] = "foo"
84
+ FileUtils.mkdir_p(lib_path)
85
+ refute_includes(path_elements('LIBRARY_PATH'), lib_path)
86
+
87
+ recipe.activate
88
+
89
+ assert_includes(path_elements('LIBRARY_PATH'), lib_path)
90
+ assert_equal(path_elements('LIBRARY_PATH').first, lib_path)
91
+ end
92
+
93
+ def test_LDFLAGS_env_var_when_not_cross_compiling
94
+ ENV["LDFLAGS"] = "-lfoo"
95
+ FileUtils.mkdir_p(lib_path)
96
+ assert_equal(recipe.host, recipe.original_host) # assert on setup)
97
+
98
+ refute_includes(flag_elements('LDFLAGS'), "-L#{lib_path}")
99
+
100
+ recipe.activate
101
+
102
+ refute_includes(flag_elements('LDFLAGS'), "-L#{lib_path}")
103
+ end
104
+
105
+ def test_LDFLAGS_env_var_when_cross_compiling
106
+ ENV["LDFLAGS"] = "-lfoo"
107
+ recipe.host = recipe.original_host + "-x" # make them not-equal
108
+ FileUtils.mkdir_p(lib_path)
109
+
110
+ refute_includes(flag_elements('LDFLAGS'), "-L#{lib_path}")
111
+
112
+ recipe.activate
113
+
114
+ assert_includes(flag_elements('LDFLAGS'), "-L#{lib_path}")
115
+ assert_equal(flag_elements('LDFLAGS').first, "-L#{lib_path}")
116
+ end
117
+
118
+ private
119
+
120
+ def path_elements(varname)
121
+ ENV.fetch(varname, "").split(File::PATH_SEPARATOR)
122
+ end
123
+
124
+ def flag_elements(varname)
125
+ ENV.fetch(varname, "").split
126
+ end
127
+
128
+ def bin_path
129
+ MiniPortile.native_path(File.join(recipe.path, "bin"))
130
+ end
131
+
132
+ def include_path
133
+ MiniPortile.native_path(File.join(recipe.path, "include"))
134
+ end
135
+
136
+ def lib_path
137
+ MiniPortile.native_path(File.join(recipe.path, "lib"))
138
+ end
139
+ end
@@ -0,0 +1,159 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+
3
+ require "mkmf" # initialize $LDFLAGS et al here, instead of in the middle of a test
4
+
5
+ class TestMkmfConfig < TestCase
6
+ attr_reader :recipe, :include_path, :lib_path
7
+
8
+ LIBXML_PCP = File.join(__dir__, "assets", "pkgconf", "libxml2")
9
+ LIBXSLT_PCP = File.join(__dir__, "assets", "pkgconf", "libxslt")
10
+
11
+ def setup
12
+ super
13
+
14
+ @save_env = %w[PATH CPATH LIBRARY_PATH LDFLAGS PKG_CONFIG_PATH].inject({}) do |env, var|
15
+ env.update(var => ENV[var])
16
+ end
17
+ $INCFLAGS = "-I/xxx"
18
+ $LIBPATH = ["xxx"]
19
+ $CFLAGS = "-xxx"
20
+ $CXXFLAGS = "-xxx"
21
+ $libs = "-lxxx"
22
+
23
+ FileUtils.rm_rf(["tmp", "ports"]) # remove any previous test files
24
+
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")
30
+ end
31
+
32
+ def teardown
33
+ FileUtils.rm_rf(["tmp", "ports"]) # remove any previous test files
34
+
35
+ $INCFLAGS = ""
36
+ $LIBPATH = []
37
+ $CFLAGS = ""
38
+ $CXXFLAGS = ""
39
+ $libs = ""
40
+ @save_env.each do |var, val|
41
+ ENV[var] = val
42
+ end
43
+
44
+ super
45
+ end
46
+
47
+ def test_mkmf_config_recipe_LIBPATH_global_lib_dir_does_not_exist
48
+ recipe.mkmf_config
49
+
50
+ refute_includes($LIBPATH, lib_path)
51
+ refute_includes($libs.split, "-lfoo")
52
+ end
53
+
54
+ def test_mkmf_config_recipe_LIBPATH_global
55
+ FileUtils.mkdir_p(lib_path)
56
+
57
+ recipe.mkmf_config
58
+
59
+ assert_includes($LIBPATH, lib_path)
60
+ assert_operator($LIBPATH.index(lib_path), :<, $LIBPATH.index("xxx")) # prepend
61
+
62
+ assert_includes($libs.split, "-lfoo") # note the recipe name is "libfoo"
63
+ assert_match(%r{-lxxx.*-lfoo}, $libs) # append
64
+ end
65
+
66
+ def test_mkmf_config_recipe_INCFLAGS_global_include_dir_does_not_exist
67
+ recipe.mkmf_config
68
+
69
+ refute_includes($INCFLAGS.split, "-I#{include_path}")
70
+ end
71
+
72
+ def test_mkmf_config_recipe_INCFLAGS_global
73
+ FileUtils.mkdir_p(include_path)
74
+
75
+ recipe.mkmf_config
76
+
77
+ assert_includes($INCFLAGS.split, "-I#{include_path}")
78
+ assert_match(%r{-I#{include_path}.*-I/xxx}, $INCFLAGS) # prepend
79
+ end
80
+
81
+ def test_mkmf_config_pkgconf_does_not_exist
82
+ assert_raises(ArgumentError) do
83
+ recipe.mkmf_config(pkg: "foo")
84
+ end
85
+ end
86
+
87
+ def test_mkmf_config_pkgconf_LIBPATH_global
88
+ # can't get the pkgconf utility to install on windows with ruby 2.3 in CI
89
+ skip if MiniPortile.windows? && RUBY_VERSION < "2.4"
90
+
91
+ recipe.mkmf_config(pkg: "libxml-2.0", dir: LIBXML_PCP)
92
+
93
+ assert_includes($LIBPATH, "/foo/libxml2/2.11.5/lib")
94
+ assert_operator($LIBPATH.index("/foo/libxml2/2.11.5/lib"), :<, $LIBPATH.index("xxx")) # prepend
95
+
96
+ assert_includes($libs.split, "-lxml2")
97
+ assert_match(%r{-lxxx.*-lxml2}, $libs) # append
98
+ end
99
+
100
+ def test_mkmf_config_pkgconf_CFLAGS_global
101
+ # can't get the pkgconf utility to install on windows with ruby 2.3 in CI
102
+ skip if MiniPortile.windows? && RUBY_VERSION < "2.4"
103
+
104
+ recipe.mkmf_config(pkg: "libxml-2.0", dir: LIBXML_PCP)
105
+
106
+ assert_includes($INCFLAGS.split, "-I/foo/libxml2/2.11.5/include/libxml2")
107
+ assert_match(%r{-I/foo/libxml2/2.11.5/include/libxml2.*-I/xxx}, $INCFLAGS) # prepend
108
+
109
+ assert_includes($CFLAGS.split, "-ggdb3")
110
+ assert_match(%r{-xxx.*-ggdb3}, $CFLAGS) # prepend
111
+
112
+ assert_includes($CXXFLAGS.split, "-ggdb3")
113
+ assert_match(%r{-xxx.*-ggdb3}, $CXXFLAGS) # prepend
114
+ end
115
+
116
+ def test_mkmf_config_pkgconf_path_accumulation
117
+ # can't get the pkgconf utility to install on windows with ruby 2.3 in CI
118
+ skip if MiniPortile.windows? && RUBY_VERSION < "2.4"
119
+
120
+ (ENV["PKG_CONFIG_PATH"] || "").split(File::PATH_SEPARATOR).tap do |pcpaths|
121
+ refute_includes(pcpaths, LIBXML_PCP)
122
+ refute_includes(pcpaths, LIBXSLT_PCP)
123
+ end
124
+
125
+ recipe.mkmf_config(pkg: "libxml-2.0", dir: LIBXML_PCP)
126
+
127
+ ENV["PKG_CONFIG_PATH"].split(File::PATH_SEPARATOR).tap do |pcpaths|
128
+ assert_includes(pcpaths, LIBXML_PCP)
129
+ refute_includes(pcpaths, LIBXSLT_PCP)
130
+ end
131
+
132
+ recipe.mkmf_config(pkg: "libxslt", dir: LIBXSLT_PCP)
133
+
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
138
+
139
+ recipe.mkmf_config(pkg: "libexslt", dir: LIBXSLT_PCP)
140
+
141
+ $INCFLAGS.split.tap do |incflags|
142
+ assert_includes(incflags, "-I/foo/libxml2/2.11.5/include/libxml2")
143
+ assert_includes(incflags, "-I/foo/libxslt/1.1.38/include")
144
+ 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|
149
+ assert_includes(cflags, "-ggdb3")
150
+ assert_includes(cflags, "-Wno-deprecated-enum-enum-conversion")
151
+ end
152
+ $libs.split.tap do |libflags|
153
+ assert_includes(libflags, "-lxml2")
154
+ assert_includes(libflags, "-lxslt")
155
+ assert_includes(libflags, "-lexslt")
156
+ assert_includes(libflags, "-lz") # from `--static`
157
+ end
158
+ end
159
+ 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.4
4
+ version: 2.8.5.rc1
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-07-18 00:00:00.000000000 Z
13
+ date: 2023-09-13 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -123,16 +123,21 @@ files:
123
123
  - test/assets/gpg-fixtures/data.asc
124
124
  - test/assets/gpg-fixtures/data.invalid.asc
125
125
  - test/assets/patch 1.diff
126
+ - test/assets/pkgconf/libxml2/libxml-2.0.pc
127
+ - test/assets/pkgconf/libxslt/libexslt.pc
128
+ - test/assets/pkgconf/libxslt/libxslt.pc
126
129
  - test/assets/test mini portile-1.0.0/configure
127
130
  - test/assets/test-cmake-1.0/CMakeLists.txt
128
131
  - test/assets/test-cmake-1.0/hello.c
129
132
  - test/assets/test-download-archive.tar.gz
130
133
  - test/helper.rb
134
+ - test/test_activate.rb
131
135
  - test/test_cmake.rb
132
136
  - test/test_cook.rb
133
137
  - test/test_digest.rb
134
138
  - test/test_download.rb
135
139
  - test/test_execute.rb
140
+ - test/test_mkmf_config.rb
136
141
  - test/test_proxy.rb
137
142
  homepage: https://github.com/flavorjones/mini_portile
138
143
  licenses:
@@ -149,11 +154,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
149
154
  version: 2.3.0
150
155
  required_rubygems_version: !ruby/object:Gem::Requirement
151
156
  requirements:
152
- - - ">="
157
+ - - ">"
153
158
  - !ruby/object:Gem::Version
154
- version: '0'
159
+ version: 1.3.1
155
160
  requirements: []
156
- rubygems_version: 3.4.10
161
+ rubygems_version: 3.4.19
157
162
  signing_key:
158
163
  specification_version: 4
159
164
  summary: Simplistic port-like solution for developers
@@ -163,14 +168,19 @@ test_files:
163
168
  - test/assets/gpg-fixtures/data.asc
164
169
  - test/assets/gpg-fixtures/data.invalid.asc
165
170
  - test/assets/patch 1.diff
171
+ - test/assets/pkgconf/libxml2/libxml-2.0.pc
172
+ - test/assets/pkgconf/libxslt/libexslt.pc
173
+ - test/assets/pkgconf/libxslt/libxslt.pc
166
174
  - test/assets/test mini portile-1.0.0/configure
167
175
  - test/assets/test-cmake-1.0/CMakeLists.txt
168
176
  - test/assets/test-cmake-1.0/hello.c
169
177
  - test/assets/test-download-archive.tar.gz
170
178
  - test/helper.rb
179
+ - test/test_activate.rb
171
180
  - test/test_cmake.rb
172
181
  - test/test_cook.rb
173
182
  - test/test_digest.rb
174
183
  - test/test_download.rb
175
184
  - test/test_execute.rb
185
+ - test/test_mkmf_config.rb
176
186
  - test/test_proxy.rb