mini_portile2 2.1.0 → 2.8.7
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 +5 -5
- data/.github/FUNDING.yml +2 -0
- data/.github/workflows/ci.yml +163 -0
- data/.github/workflows/downstream.yml +66 -0
- data/.gitignore +4 -3
- data/CHANGELOG.md +166 -0
- data/Gemfile +2 -0
- data/README.md +164 -9
- data/Rakefile +4 -6
- data/SECURITY.md +13 -0
- data/lib/mini_portile2/mini_portile.rb +384 -96
- data/lib/mini_portile2/mini_portile_cmake.rb +119 -0
- data/lib/mini_portile2/version.rb +1 -1
- data/lib/mini_portile2.rb +1 -0
- data/mini_portile2.gemspec +28 -22
- data/test/assets/gpg-fixtures/data +1 -0
- data/test/assets/gpg-fixtures/data.asc +9 -0
- data/test/assets/gpg-fixtures/data.invalid.asc +9 -0
- data/test/assets/pkgconf/libxml2/libxml-2.0.pc +13 -0
- data/test/assets/pkgconf/libxslt/libexslt.pc +13 -0
- data/test/assets/pkgconf/libxslt/libxslt.pc +13 -0
- data/test/assets/test-cmake-1.0/CMakeLists.txt +7 -0
- data/test/assets/test-cmake-1.0/hello.c +4 -0
- data/test/assets/test-download-archive.tar.gz +0 -0
- data/test/helper.rb +38 -3
- data/test/test_activate.rb +139 -0
- data/test/test_cmake.rb +266 -0
- data/test/test_cook.rb +134 -12
- data/test/test_digest.rb +147 -3
- data/test/test_download.rb +22 -19
- data/test/test_execute.rb +40 -0
- data/test/test_mkmf_config.rb +202 -0
- data/test/test_proxy.rb +9 -8
- data/test/test_recipe.rb +18 -0
- metadata +70 -27
- data/.travis.yml +0 -11
- data/appveyor.yml +0 -24
@@ -0,0 +1,119 @@
|
|
1
|
+
require 'mini_portile2/mini_portile'
|
2
|
+
require 'open3'
|
3
|
+
|
4
|
+
class MiniPortileCMake < MiniPortile
|
5
|
+
attr_accessor :system_name
|
6
|
+
|
7
|
+
def configure_prefix
|
8
|
+
"-DCMAKE_INSTALL_PREFIX=#{File.expand_path(port_path)}"
|
9
|
+
end
|
10
|
+
|
11
|
+
def initialize(name, version, **kwargs)
|
12
|
+
super(name, version, **kwargs)
|
13
|
+
@cmake_command = kwargs[:cmake_command]
|
14
|
+
@cmake_build_type = kwargs[:cmake_build_type]
|
15
|
+
end
|
16
|
+
|
17
|
+
def configure_defaults
|
18
|
+
[
|
19
|
+
generator_defaults,
|
20
|
+
cmake_compile_flags,
|
21
|
+
].flatten
|
22
|
+
end
|
23
|
+
|
24
|
+
def configure
|
25
|
+
return if configured?
|
26
|
+
|
27
|
+
cache_file = File.join(tmp_path, 'configure.options_cache')
|
28
|
+
File.open(cache_file, "w") { |f| f.write computed_options.to_s }
|
29
|
+
|
30
|
+
execute('configure', [cmake_cmd] + computed_options + ["."])
|
31
|
+
end
|
32
|
+
|
33
|
+
def configured?
|
34
|
+
configure = File.join(work_path, 'configure')
|
35
|
+
makefile = File.join(work_path, 'CMakefile')
|
36
|
+
cache_file = File.join(tmp_path, 'configure.options_cache')
|
37
|
+
|
38
|
+
stored_options = File.exist?(cache_file) ? File.read(cache_file) : ""
|
39
|
+
current_options = computed_options.to_s
|
40
|
+
|
41
|
+
(current_options == stored_options) && newer?(makefile, configure)
|
42
|
+
end
|
43
|
+
|
44
|
+
def make_cmd
|
45
|
+
return "nmake" if MiniPortile.mswin?
|
46
|
+
super
|
47
|
+
end
|
48
|
+
|
49
|
+
def cmake_cmd
|
50
|
+
(ENV["CMAKE"] || @cmake_command || "cmake").dup
|
51
|
+
end
|
52
|
+
|
53
|
+
def cmake_build_type
|
54
|
+
(ENV["CMAKE_BUILD_TYPE"] || @cmake_build_type || "Release").dup
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def generator_defaults
|
60
|
+
if MiniPortile.mswin? && generator_available?('NMake')
|
61
|
+
['-G', 'NMake Makefiles']
|
62
|
+
elsif MiniPortile.mingw? && generator_available?('MSYS')
|
63
|
+
['-G', 'MSYS Makefiles']
|
64
|
+
else
|
65
|
+
[]
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def cmake_compile_flags
|
70
|
+
# RbConfig::CONFIG['CC'] and RbConfig::CONFIG['CXX'] can contain additional flags, for example
|
71
|
+
# "clang++ -std=gnu++11" or "clang -fdeclspec". CMake is just looking for the command name.
|
72
|
+
cc_compiler = cc_cmd.split.first
|
73
|
+
cxx_compiler = cxx_cmd.split.first
|
74
|
+
|
75
|
+
# needed to ensure cross-compilation with CMake targets the right CPU and compilers
|
76
|
+
[
|
77
|
+
"-DCMAKE_SYSTEM_NAME=#{cmake_system_name}",
|
78
|
+
"-DCMAKE_SYSTEM_PROCESSOR=#{cpu_type}",
|
79
|
+
"-DCMAKE_C_COMPILER=#{cc_compiler}",
|
80
|
+
"-DCMAKE_CXX_COMPILER=#{cxx_compiler}",
|
81
|
+
"-DCMAKE_BUILD_TYPE=#{cmake_build_type}",
|
82
|
+
]
|
83
|
+
end
|
84
|
+
|
85
|
+
# Full list: https://gitlab.kitware.com/cmake/cmake/-/blob/v3.26.4/Modules/CMakeDetermineSystem.cmake?ref_type=tags#L12-31
|
86
|
+
def cmake_system_name
|
87
|
+
return system_name if system_name
|
88
|
+
|
89
|
+
if MiniPortile.linux?
|
90
|
+
'Linux'
|
91
|
+
elsif MiniPortile.darwin?
|
92
|
+
'Darwin'
|
93
|
+
elsif MiniPortile.windows?
|
94
|
+
'Windows'
|
95
|
+
elsif MiniPortile.freebsd?
|
96
|
+
'FreeBSD'
|
97
|
+
elsif MiniPortile.openbsd?
|
98
|
+
'OpenBSD'
|
99
|
+
elsif MiniPortile.solaris?
|
100
|
+
'SunOS'
|
101
|
+
else
|
102
|
+
raise "Unable to set CMAKE_SYSTEM_NAME for #{MiniPortile.target_os}"
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def generator_available?(generator_type)
|
107
|
+
stdout_str, status = Open3.capture2("#{cmake_cmd} --help")
|
108
|
+
|
109
|
+
raise 'Unable to determine whether CMake supports #{generator_type} Makefile generator' unless status.success?
|
110
|
+
|
111
|
+
stdout_str.include?("#{generator_type} Makefiles")
|
112
|
+
end
|
113
|
+
|
114
|
+
def cpu_type
|
115
|
+
return 'x86_64' if MiniPortile.target_cpu == 'x64'
|
116
|
+
|
117
|
+
MiniPortile.target_cpu
|
118
|
+
end
|
119
|
+
end
|
data/lib/mini_portile2.rb
CHANGED
data/mini_portile2.gemspec
CHANGED
@@ -1,37 +1,43 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'mini_portile2/version'
|
1
|
+
require_relative "lib/mini_portile2/version"
|
5
2
|
|
6
3
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name
|
8
|
-
spec.version
|
4
|
+
spec.name = "mini_portile2"
|
5
|
+
spec.version = MiniPortile::VERSION
|
9
6
|
|
10
|
-
spec.authors
|
11
|
-
spec.email
|
7
|
+
spec.authors = ["Luis Lavena", "Mike Dalessio", "Lars Kanis"]
|
8
|
+
spec.email = "mike.dalessio@gmail.com"
|
12
9
|
|
13
|
-
spec.summary
|
14
|
-
spec.description
|
10
|
+
spec.summary = "Simple autoconf and cmake builder for developers"
|
11
|
+
spec.description = <<~TEXT
|
12
|
+
Simple autoconf and cmake builder for developers. It provides a standard way to compile against
|
13
|
+
dependency libraries without requiring system-wide installation. It also simplifies
|
14
|
+
vendoring and cross-compilation by providing a consistent build interface.
|
15
|
+
TEXT
|
15
16
|
|
16
|
-
spec.homepage
|
17
|
-
spec.licenses
|
17
|
+
spec.homepage = "https://github.com/flavorjones/mini_portile"
|
18
|
+
spec.licenses = ["MIT"]
|
18
19
|
|
19
|
-
|
20
|
+
begin
|
21
|
+
spec.files = `git ls-files -z`.split("\x0")
|
22
|
+
rescue Exception => e
|
23
|
+
warn "WARNING: could not set spec.files: #{e.class}: #{e}"
|
24
|
+
end
|
20
25
|
|
21
26
|
# omit the `examples` directory from the gem, because it's large and
|
22
27
|
# not necessary to be packaged in the gem.
|
23
|
-
example_files
|
28
|
+
example_files = spec.files.grep(%r{^examples/})
|
24
29
|
spec.files -= example_files
|
25
30
|
|
26
|
-
spec.executables
|
27
|
-
spec.test_files
|
31
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
32
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features|examples)/})
|
28
33
|
spec.require_paths = ["lib"]
|
29
34
|
|
30
|
-
spec.
|
31
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
32
|
-
spec.add_development_dependency "minitest", "~> 5.8.0"
|
33
|
-
spec.add_development_dependency "minitest-hooks", "~> 1.4.0"
|
34
|
-
spec.add_development_dependency "minitar", "~> 0.5.4"
|
35
|
+
spec.required_ruby_version = ">= 2.3.0"
|
35
36
|
|
36
|
-
spec.
|
37
|
+
spec.add_development_dependency "bundler", "~> 2.2"
|
38
|
+
spec.add_development_dependency "minitar", "~> 0.9"
|
39
|
+
spec.add_development_dependency "minitest", "~> 5.15"
|
40
|
+
spec.add_development_dependency "minitest-hooks", "~> 1.5"
|
41
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
42
|
+
spec.add_development_dependency "webrick", "~> 1.7"
|
37
43
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
test
|
@@ -0,0 +1,9 @@
|
|
1
|
+
-----BEGIN PGP SIGNATURE-----
|
2
|
+
Version: GnuPG v1
|
3
|
+
|
4
|
+
iJwEAAECAAYFAlcFOD8ACgkQZeg+SWTDcLNIswP/XvVRoJ+eQ2u2v+WjXdBBKBSW
|
5
|
+
pzM216aJPRBxPl98xNUUKjqga+tjKmIHJn5T4CIxHqis1toPxtE5tKnc6cVO1aqY
|
6
|
+
bCUfkWyt/A3qRHQuniRUWSBKZWdk+j3AopTpd3i/r/s0pDj3bMHJ7bDOTsEskNcM
|
7
|
+
KpgFfNM1ieFRQmIWPWg=
|
8
|
+
=kbKc
|
9
|
+
-----END PGP SIGNATURE-----
|
@@ -0,0 +1,9 @@
|
|
1
|
+
-----BEGIN PGP SIGNATURE-----
|
2
|
+
Version: GnuPG v1
|
3
|
+
|
4
|
+
iJwEAQECAAYFAlcFLEgACgkQZeg+SWTDcLPVwgQAg8KTI91Ryx38YplzgWV9tUPj
|
5
|
+
o7J7IEzb8faE7m2mgtq8m62DvA4h/PJzmbh1EJJ4VkO+A4O2LVh/bTgnyYXv+kMu
|
6
|
+
sEmvK35PnAC8r7pv98VSbMEXyV/rK3+uGhTvnXZYkULvMVYkN/EHIh2bCQJ3R14X
|
7
|
+
MY8El95QST8/dR/yBkw=
|
8
|
+
=qbod
|
9
|
+
-----END PGP SIGNATURE-----
|
@@ -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,7 @@
|
|
1
|
+
# CMakeLists files in this project can
|
2
|
+
# refer to the root source directory of the project as ${HELLO_SOURCE_DIR} and
|
3
|
+
# to the root binary directory of the project as ${HELLO_BINARY_DIR}.
|
4
|
+
cmake_minimum_required (VERSION 2.8.7)
|
5
|
+
project (HELLO)
|
6
|
+
add_executable (hello hello.c)
|
7
|
+
install (TARGETS hello DESTINATION bin)
|
Binary file
|
data/test/helper.rb
CHANGED
@@ -9,6 +9,12 @@ require 'archive/tar/minitar'
|
|
9
9
|
require 'fileutils'
|
10
10
|
require 'erb'
|
11
11
|
require 'mini_portile2'
|
12
|
+
require 'logger'
|
13
|
+
|
14
|
+
puts "#{__FILE__}:#{__LINE__}: relevant RbConfig::CONFIG values:"
|
15
|
+
%w[target_os target_cpu CC CXX].each do |key|
|
16
|
+
puts "- #{key}: #{RbConfig::CONFIG[key].inspect}"
|
17
|
+
end
|
12
18
|
|
13
19
|
class TestCase < Minitest::Test
|
14
20
|
include Minitest::Hooks
|
@@ -18,7 +24,12 @@ class TestCase < Minitest::Test
|
|
18
24
|
attr_accessor :webrick
|
19
25
|
|
20
26
|
def start_webrick(path)
|
21
|
-
@webrick = WEBrick::HTTPServer.new(
|
27
|
+
@webrick = WEBrick::HTTPServer.new(
|
28
|
+
:Port => HTTP_PORT,
|
29
|
+
:DocumentRoot => path,
|
30
|
+
:Logger => Logger.new(File::NULL),
|
31
|
+
:AccessLog => [],
|
32
|
+
).tap do |w|
|
22
33
|
Thread.new do
|
23
34
|
w.start
|
24
35
|
end
|
@@ -37,11 +48,11 @@ class TestCase < Minitest::Test
|
|
37
48
|
end
|
38
49
|
end
|
39
50
|
|
40
|
-
def create_tar(tar_path, assets_path)
|
51
|
+
def create_tar(tar_path, assets_path, directory)
|
41
52
|
FileUtils.mkdir_p(File.dirname(tar_path))
|
42
53
|
Zlib::GzipWriter.open(tar_path) do |fdtgz|
|
43
54
|
Dir.chdir(assets_path) do
|
44
|
-
Archive::Tar::Minitar.pack(
|
55
|
+
Archive::Tar::Minitar.pack(directory, fdtgz)
|
45
56
|
end
|
46
57
|
end
|
47
58
|
end
|
@@ -49,4 +60,28 @@ class TestCase < Minitest::Test
|
|
49
60
|
def work_dir(r=recipe)
|
50
61
|
"tmp/#{r.host}/ports/#{r.name}/#{r.version}/#{r.name}-#{r.version}"
|
51
62
|
end
|
63
|
+
|
64
|
+
def with_custom_git_dir(dir)
|
65
|
+
old = ENV['GIT_DIR']
|
66
|
+
ENV['GIT_DIR'] = dir
|
67
|
+
yield
|
68
|
+
ensure
|
69
|
+
ENV['GIT_DIR'] = old
|
70
|
+
end
|
71
|
+
|
72
|
+
def with_env(env)
|
73
|
+
before = ENV.to_h.dup
|
74
|
+
env.each { |k, v| ENV[k] = v }
|
75
|
+
yield
|
76
|
+
ensure
|
77
|
+
ENV.replace(before)
|
78
|
+
end
|
79
|
+
|
80
|
+
def without_env(*keys, &blk)
|
81
|
+
before = ENV.to_h.dup
|
82
|
+
keys.flatten.each { |k| ENV.delete(k) }
|
83
|
+
yield
|
84
|
+
ensure
|
85
|
+
ENV.replace(before)
|
86
|
+
end
|
52
87
|
end
|
@@ -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
|