mini_portile2 2.0.0 → 2.1.0

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
  SHA1:
3
- metadata.gz: 18908b52170939949755ecd06dd8819c232f9947
4
- data.tar.gz: aaa234f0e1feca51917d4dda32e4926cdef42f3e
3
+ metadata.gz: b90aadf075467a1583841db365f7bd1aafb26790
4
+ data.tar.gz: 7689b3b467a964185225509458770aa60e1214e7
5
5
  SHA512:
6
- metadata.gz: b438313c3863eae80ce90fa88e97229dc23327f58e3047e548563d3e1af8ea55581373b7b5795f1717fe5488dac7327d6969420e7f7c432b6bda45d823fc48b8
7
- data.tar.gz: 9caff9af6ed769c3d075a4b10b2e7750a139c4231edc41ac734c335c47a27ef699a33e33952964ee8db61f1cd3491ebad03719063514d643aee5339842d5e514
6
+ metadata.gz: 7b0296b213f1e3b0edb2238a660489379ae084beef21ae3dc2b6f22a677d8053111ac0a130f5638c097149294c028676d06b199b8473dd1496552ab62b230e80
7
+ data.tar.gz: 1a3762db4b474760297a93c9a4a17f29cc96b0999ffca256da2f9124f1fe2a597121ca8d7ef2cb5ace853a569c679a2e6df032d6039741920df3927ec2189ef8
data/.gitignore CHANGED
@@ -1,3 +1,5 @@
1
1
  pkg
2
2
  tmp
3
3
  Gemfile.lock
4
+ .bundle
5
+ ports
@@ -7,5 +7,5 @@ rvm:
7
7
  - 2.1
8
8
  - 2.2
9
9
  - ruby-head
10
- - jruby-1.7.22
11
- - jruby-9.0.1.0
10
+ - jruby-1.7.23
11
+ - jruby-9.0.4.0
@@ -1,3 +1,16 @@
1
+ ### 2.1.0 / 2016-01-06
2
+
3
+ #### Enhancements
4
+
5
+ * Add support for `file:` protocol for tarballs
6
+
7
+
8
+ #### Bugfixes
9
+
10
+ * Raise exception on unsupported URI protocols
11
+ * Ignore git whitespace config when patching (Thanks, @e2!) (#67)
12
+
13
+
1
14
  ### 2.0.0 / 2015-11-30
2
15
 
3
16
  Many thanks to @larskanis, @knu, and @kirikak2, who all contributed
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011-2015 Luis Lavena and Mike Dalessio
1
+ Copyright (c) 2011-2016 Luis Lavena and Mike Dalessio
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -68,7 +68,7 @@ class MiniPortile
68
68
  message "Running git apply with #{file}... "
69
69
  # By --work-tree=. git-apply uses the current directory as
70
70
  # the project root and will not search upwards for .git.
71
- execute('patch', ["git", "--work-tree=.", "apply", file], :initial_message => false)
71
+ execute('patch', ["git", "--work-tree=.", "apply", "--whitespace=warn", file], :initial_message => false)
72
72
  }
73
73
  when which('patch')
74
74
  lambda { |file|
@@ -393,18 +393,20 @@ private
393
393
  def download_file(url, full_path, count = 3)
394
394
  return if File.exist?(full_path)
395
395
  uri = URI.parse(url)
396
- begin
397
- case uri.scheme.downcase
398
- when /ftp/
399
- download_file_ftp(uri, full_path)
400
- when /http|https/
401
- download_file_http(url, full_path, count)
402
- end
403
- rescue Exception => e
404
- File.unlink full_path if File.exist?(full_path)
405
- output "ERROR: #{e.message}"
406
- raise "Failed to complete download task"
396
+
397
+ case uri.scheme.downcase
398
+ when /ftp/
399
+ download_file_ftp(uri, full_path)
400
+ when /http|https/
401
+ download_file_http(url, full_path, count)
402
+ when /file/
403
+ download_file_file(uri, full_path)
404
+ else
405
+ raise ArgumentError.new("Unsupported protocol for #{url}")
407
406
  end
407
+ rescue Exception => e
408
+ File.unlink full_path if File.exist?(full_path)
409
+ raise e
408
410
  end
409
411
 
410
412
  def download_file_http(url, full_path, count = 3)
@@ -448,6 +450,11 @@ private
448
450
  end
449
451
  end
450
452
 
453
+ def download_file_file(uri, full_path)
454
+ FileUtils.mkdir_p File.dirname(full_path)
455
+ FileUtils.cp uri.path, full_path
456
+ end
457
+
451
458
  def download_file_ftp(uri, full_path)
452
459
  filename = File.basename(uri.path)
453
460
  with_tempfile(filename, full_path) do |temp_file|
@@ -1,3 +1,3 @@
1
1
  class MiniPortile
2
- VERSION = "2.0.0"
2
+ VERSION = "2.1.0"
3
3
  end
@@ -17,13 +17,20 @@ Gem::Specification.new do |spec|
17
17
  spec.licenses = ['MIT']
18
18
 
19
19
  spec.files = `git ls-files -z`.split("\x0")
20
+
21
+ # omit the `examples` directory from the gem, because it's large and
22
+ # not necessary to be packaged in the gem.
23
+ example_files = spec.files.grep(%r{^examples/})
24
+ spec.files -= example_files
25
+
20
26
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
21
27
  spec.test_files = spec.files.grep(%r{^(test|spec|features|examples)/})
22
28
  spec.require_paths = ["lib"]
23
29
 
24
30
  spec.add_development_dependency "bundler", "~> 1.7"
25
31
  spec.add_development_dependency "rake", "~> 10.0"
26
- spec.add_development_dependency "test-unit", "~> 3.0"
32
+ spec.add_development_dependency "minitest", "~> 5.8.0"
33
+ spec.add_development_dependency "minitest-hooks", "~> 1.4.0"
27
34
  spec.add_development_dependency "minitar", "~> 0.5.4"
28
35
 
29
36
  spec.required_ruby_version = ">= 1.9.2"
@@ -0,0 +1,4 @@
1
+ [core]
2
+ whitespace=tab-in-indent,-indent-with-non-tab
3
+ [apply]
4
+ whitespace=fix
@@ -4,4 +4,4 @@ index 0000000..70885e4
4
4
  --- /dev/null
5
5
  +++ "b/patch 1.txt"
6
6
  @@ -0,0 +1 @@
7
- +change 1
7
+ + change 1
@@ -0,0 +1 @@
1
+ TEST FILE
@@ -1,4 +1,7 @@
1
- require 'test/unit'
1
+ require 'minitest/autorun'
2
+ require 'minitest/unit'
3
+ require 'minitest/spec'
4
+ require 'minitest/hooks/test'
2
5
  require 'webrick'
3
6
  require 'fileutils'
4
7
  require 'zlib'
@@ -7,43 +10,43 @@ require 'fileutils'
7
10
  require 'erb'
8
11
  require 'mini_portile2'
9
12
 
10
- class TestCase < Test::Unit::TestCase
11
- class << self
12
- HTTP_PORT = 23523
13
+ class TestCase < Minitest::Test
14
+ include Minitest::Hooks
13
15
 
14
- attr_accessor :webrick
16
+ HTTP_PORT = 23523
15
17
 
16
- def start_webrick(path)
17
- @webrick = WEBrick::HTTPServer.new(:Port => HTTP_PORT, :DocumentRoot => path).tap do |w|
18
- Thread.new do
19
- w.start
20
- end
21
- until w.status==:Running
22
- sleep 0.1
23
- end
18
+ attr_accessor :webrick
19
+
20
+ def start_webrick(path)
21
+ @webrick = WEBrick::HTTPServer.new(:Port => HTTP_PORT, :DocumentRoot => path).tap do |w|
22
+ Thread.new do
23
+ w.start
24
+ end
25
+ until w.status==:Running
26
+ sleep 0.1
24
27
  end
25
28
  end
29
+ end
26
30
 
27
- def stop_webrick
28
- if w=@webrick
29
- w.shutdown
30
- until w.status==:Stop
31
- sleep 0.1
32
- end
31
+ def stop_webrick
32
+ if w=@webrick
33
+ w.shutdown
34
+ until w.status==:Stop
35
+ sleep 0.1
33
36
  end
34
37
  end
38
+ end
35
39
 
36
- def create_tar(tar_path, assets_path)
37
- FileUtils.mkdir_p(File.dirname(tar_path))
38
- Zlib::GzipWriter.open(tar_path) do |fdtgz|
39
- Dir.chdir(assets_path) do
40
- Archive::Tar::Minitar.pack("test mini portile-1.0.0", fdtgz)
41
- end
40
+ def create_tar(tar_path, assets_path)
41
+ FileUtils.mkdir_p(File.dirname(tar_path))
42
+ Zlib::GzipWriter.open(tar_path) do |fdtgz|
43
+ Dir.chdir(assets_path) do
44
+ Archive::Tar::Minitar.pack("test mini portile-1.0.0", fdtgz)
42
45
  end
43
46
  end
47
+ end
44
48
 
45
- def work_dir(r=recipe)
46
- "tmp/#{r.host}/ports/#{r.name}/#{r.version}/#{r.name}-#{r.version}"
47
- end
49
+ def work_dir(r=recipe)
50
+ "tmp/#{r.host}/ports/#{r.name}/#{r.version}/#{r.name}-#{r.version}"
48
51
  end
49
52
  end
@@ -1,33 +1,42 @@
1
1
  require File.expand_path('../helper', __FILE__)
2
2
 
3
3
  class TestCook < TestCase
4
- class << self
5
- attr_accessor :assets_path
6
- attr_accessor :tar_path
7
- attr_accessor :recipe
4
+ attr_accessor :assets_path, :tar_path, :recipe
8
5
 
9
- def startup
10
- @assets_path = File.expand_path("../assets", __FILE__)
11
- @tar_path = File.expand_path("../../tmp/test mini portile-1.0.0.tar.gz", __FILE__)
6
+ def with_custom_git_dir(dir)
7
+ old = ENV['GIT_DIR']
8
+ ENV['GIT_DIR'] = dir
9
+ yield
10
+ ensure
11
+ ENV['GIT_DIR'] = old
12
+ end
13
+
14
+ def before_all
15
+ super
16
+ @assets_path = File.expand_path("../assets", __FILE__)
17
+ @tar_path = File.expand_path("../../tmp/test mini portile-1.0.0.tar.gz", __FILE__)
12
18
 
13
- # remove any previous test files
14
- FileUtils.rm_rf("tmp")
19
+ # remove any previous test files
20
+ FileUtils.rm_rf("tmp")
15
21
 
16
- create_tar(@tar_path, @assets_path)
17
- start_webrick(File.dirname(@tar_path))
22
+ create_tar(@tar_path, @assets_path)
23
+ start_webrick(File.dirname(@tar_path))
18
24
 
19
- @recipe = MiniPortile.new("test mini portile", "1.0.0").tap do |recipe|
20
- recipe.files << "http://localhost:#{HTTP_PORT}/#{ERB::Util.url_encode(File.basename(@tar_path))}"
21
- recipe.patch_files << File.join(@assets_path, "patch 1.diff")
22
- recipe.configure_options << "--option=\"path with 'space'\""
25
+ @recipe = MiniPortile.new("test mini portile", "1.0.0").tap do |recipe|
26
+ recipe.files << "http://localhost:#{HTTP_PORT}/#{ERB::Util.url_encode(File.basename(@tar_path))}"
27
+ recipe.patch_files << File.join(@assets_path, "patch 1.diff")
28
+ recipe.configure_options << "--option=\"path with 'space'\""
29
+ git_dir = File.join(@assets_path, "git")
30
+ with_custom_git_dir(git_dir) do
23
31
  recipe.cook
24
32
  end
25
33
  end
34
+ end
26
35
 
27
- def shutdown
28
- stop_webrick
29
- # leave test files for inspection
30
- end
36
+ def after_all
37
+ super
38
+ stop_webrick
39
+ # leave test files for inspection
31
40
  end
32
41
 
33
42
  def test_download
@@ -36,32 +45,32 @@ class TestCook < TestCase
36
45
  end
37
46
 
38
47
  def test_untar
39
- configure = File.join(self.class.work_dir, "configure")
48
+ configure = File.join(work_dir, "configure")
40
49
  assert File.exist?(configure), configure
41
50
  assert_match( /^#!\/bin\/sh/, IO.read(configure) )
42
51
  end
43
52
 
44
53
  def test_patch
45
- patch1 = File.join(self.class.work_dir, "patch 1.txt")
54
+ patch1 = File.join(work_dir, "patch 1.txt")
46
55
  assert File.exist?(patch1), patch1
47
- assert_match( /^change 1/, IO.read(patch1) )
56
+ assert_match( /^\tchange 1/, IO.read(patch1) )
48
57
  end
49
58
 
50
59
  def test_configure
51
- txt = File.join(self.class.work_dir, "configure.txt")
60
+ txt = File.join(work_dir, "configure.txt")
52
61
  assert File.exist?(txt), txt
53
- opts = self.class.recipe.configure_options + ["--prefix=#{self.class.recipe.path}"]
62
+ opts = recipe.configure_options + ["--prefix=#{recipe.path}"]
54
63
  assert_equal( opts.inspect, IO.read(txt).chomp )
55
64
  end
56
65
 
57
66
  def test_compile
58
- txt = File.join(self.class.work_dir, "compile.txt")
67
+ txt = File.join(work_dir, "compile.txt")
59
68
  assert File.exist?(txt), txt
60
69
  assert_equal( ["all"].inspect, IO.read(txt).chomp )
61
70
  end
62
71
 
63
72
  def test_install
64
- txt = File.join(self.class.work_dir, "install.txt")
73
+ txt = File.join(work_dir, "install.txt")
65
74
  assert File.exist?(txt), txt
66
75
  assert_equal( ["install"].inspect, IO.read(txt).chomp )
67
76
  end
@@ -1,49 +1,45 @@
1
1
  require File.expand_path('../helper', __FILE__)
2
2
 
3
3
  class TestDigest < TestCase
4
- class << self
5
- attr_accessor :assets_path
6
- attr_accessor :tar_path
7
- attr_accessor :recipe
4
+ attr :assets_path, :tar_path, :recipe
8
5
 
9
- def startup
10
- @assets_path = File.expand_path("../assets", __FILE__)
11
- @tar_path = File.expand_path("../../tmp/test-digest-1.0.0.tar.gz", __FILE__)
6
+ def before_all
7
+ super
8
+ @assets_path = File.expand_path("../assets", __FILE__)
9
+ @tar_path = File.expand_path("../../tmp/test-digest-1.0.0.tar.gz", __FILE__)
12
10
 
13
- # remove any previous test files
14
- FileUtils.rm_rf("tmp")
11
+ # remove any previous test files
12
+ FileUtils.rm_rf("tmp")
15
13
 
16
- create_tar(@tar_path, @assets_path)
17
- start_webrick(File.dirname(@tar_path))
18
- end
14
+ create_tar(@tar_path, @assets_path)
15
+ start_webrick(File.dirname(@tar_path))
16
+ end
19
17
 
20
- def shutdown
21
- stop_webrick
22
- # leave test files for inspection
23
- end
18
+ def after_all
19
+ stop_webrick
20
+ # leave test files for inspection
24
21
  end
25
22
 
26
23
  def setup
27
- # remove any download files
24
+ super
28
25
  FileUtils.rm_rf("ports/archives")
29
-
30
26
  @recipe = MiniPortile.new("test-digest", "1.0.0")
31
27
  end
32
28
 
33
29
  def download_with_digest(key, klass)
34
30
  @recipe.files << {
35
- :url => "http://localhost:#{self.class.webrick.config[:Port]}/#{ERB::Util.url_encode(File.basename(self.class.tar_path))}",
36
- key => klass.file(self.class.tar_path).hexdigest,
31
+ :url => "http://localhost:#{webrick.config[:Port]}/#{ERB::Util.url_encode(File.basename(tar_path))}",
32
+ key => klass.file(tar_path).hexdigest,
37
33
  }
38
34
  @recipe.download
39
35
  end
40
36
 
41
37
  def download_with_wrong_digest(key)
42
38
  @recipe.files << {
43
- :url => "http://localhost:#{self.class.webrick.config[:Port]}/#{ERB::Util.url_encode(File.basename(self.class.tar_path))}",
39
+ :url => "http://localhost:#{webrick.config[:Port]}/#{ERB::Util.url_encode(File.basename(tar_path))}",
44
40
  key => "0011223344556677",
45
41
  }
46
- assert_raise(RuntimeError){ @recipe.download }
42
+ assert_raises(RuntimeError){ @recipe.download }
47
43
  end
48
44
 
49
45
  def test_sha256
@@ -70,3 +66,4 @@ class TestDigest < TestCase
70
66
  download_with_wrong_digest(:md5)
71
67
  end
72
68
  end
69
+
@@ -0,0 +1,71 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+
3
+ cert_name = [['CN', 'localhost', OpenSSL::ASN1::PRINTABLESTRING]]
4
+
5
+ describe "recipe download" do
6
+ include Minitest::Hooks
7
+
8
+ attr :recipe
9
+
10
+ def server_must_receive_connection &block
11
+ request_count = 0
12
+
13
+ server = TCPServer.open('localhost', TestCase::HTTP_PORT)
14
+ thread = Thread.new do
15
+ conn = server.accept
16
+ request_count += 1
17
+ conn.puts "CONNECTION SUCESSFULLY MADE"
18
+ conn.close
19
+ end
20
+
21
+ block.call
22
+
23
+ thread.kill
24
+ server.close
25
+
26
+ request_count.must_be :>, 0
27
+ end
28
+
29
+ before do
30
+ @request_count = 0
31
+ @recipe = MiniPortile.new("test-download", "1.1.1")
32
+ end
33
+
34
+ describe "urls" do
35
+ it "ftp" do
36
+ @recipe.files << "ftp://localhost:#{TestCase::HTTP_PORT}/foo"
37
+ server_must_receive_connection do
38
+ @recipe.download
39
+ end
40
+ end
41
+
42
+ it "handles http" do
43
+ @recipe.files << "http://localhost:#{TestCase::HTTP_PORT}/foo"
44
+ server_must_receive_connection do
45
+ @recipe.download
46
+ end
47
+ end
48
+
49
+ it "handles https" do
50
+ @recipe.files << "https://localhost:#{TestCase::HTTP_PORT}/foo"
51
+ server_must_receive_connection do
52
+ @recipe.download
53
+ end
54
+ end
55
+
56
+ it "file" do
57
+ dest = "ports/archives/test-download-archive.tar.gz"
58
+ FileUtils.rm_f dest
59
+ path = File.expand_path(File.join(File.dirname(__FILE__), "assets", "test-download-archive.tar.gz"))
60
+ @recipe.files << "file://#{path}"
61
+ @recipe.download
62
+ assert File.exist?(dest)
63
+ Digest::MD5.file(dest).hexdigest.must_equal "5deffb997041bbb5f11bdcafdbb47975"
64
+ end
65
+
66
+ it "other" do
67
+ @recipe.files << "foo://foo"
68
+ proc { @recipe.download }.must_raise ArgumentError
69
+ end
70
+ end
71
+ 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.0.0
4
+ version: 2.1.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: 2015-11-30 00:00:00.000000000 Z
13
+ date: 2016-01-06 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -41,19 +41,33 @@ dependencies:
41
41
  - !ruby/object:Gem::Version
42
42
  version: '10.0'
43
43
  - !ruby/object:Gem::Dependency
44
- name: test-unit
44
+ name: minitest
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: '3.0'
49
+ version: 5.8.0
50
50
  type: :development
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - "~>"
55
55
  - !ruby/object:Gem::Version
56
- version: '3.0'
56
+ version: 5.8.0
57
+ - !ruby/object:Gem::Dependency
58
+ name: minitest-hooks
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: 1.4.0
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: 1.4.0
57
71
  - !ruby/object:Gem::Dependency
58
72
  name: minitar
59
73
  requirement: !ruby/object:Gem::Requirement
@@ -84,18 +98,18 @@ files:
84
98
  - README.md
85
99
  - Rakefile
86
100
  - appveyor.yml
87
- - examples/.gitignore
88
- - examples/Rakefile
89
- - examples/libiconv-patches/1-avoid-gets-error.patch
90
101
  - lib/mini_portile2.rb
91
102
  - lib/mini_portile2/mini_portile.rb
92
103
  - lib/mini_portile2/version.rb
93
104
  - mini_portile2.gemspec
105
+ - test/assets/git/config
94
106
  - test/assets/patch 1.diff
95
107
  - test/assets/test mini portile-1.0.0/configure
108
+ - test/assets/test-download-archive.tar.gz
96
109
  - test/helper.rb
97
110
  - test/test_cook.rb
98
111
  - test/test_digest.rb
112
+ - test/test_download.rb
99
113
  - test/test_proxy.rb
100
114
  homepage: http://github.com/flavorjones/mini_portile
101
115
  licenses:
@@ -122,12 +136,12 @@ signing_key:
122
136
  specification_version: 4
123
137
  summary: Simplistic port-like solution for developers
124
138
  test_files:
125
- - examples/.gitignore
126
- - examples/Rakefile
127
- - examples/libiconv-patches/1-avoid-gets-error.patch
139
+ - test/assets/git/config
128
140
  - test/assets/patch 1.diff
129
141
  - test/assets/test mini portile-1.0.0/configure
142
+ - test/assets/test-download-archive.tar.gz
130
143
  - test/helper.rb
131
144
  - test/test_cook.rb
132
145
  - test/test_digest.rb
146
+ - test/test_download.rb
133
147
  - test/test_proxy.rb
@@ -1,2 +0,0 @@
1
- ports
2
- tmp
@@ -1,127 +0,0 @@
1
- require 'rbconfig'
2
-
3
- $: << File.expand_path(File.join(File.dirname(__FILE__), "../lib"))
4
- require "mini_portile2"
5
-
6
- recipes = []
7
-
8
- def windows?
9
- RbConfig::CONFIG['target_os'] =~ /mswin|mingw32/
10
- end
11
-
12
- # libiconv
13
- libiconv = MiniPortile.new "libiconv", "1.14"
14
- libiconv.files << "ftp://ftp.gnu.org/pub/gnu/#{libiconv.name}/#{libiconv.name}-#{libiconv.version}.tar.gz"
15
- unless windows?
16
- libiconv.patch_files = Dir["libiconv-patches/*.patch"].map { |dir| File.expand_path dir }
17
- end
18
-
19
- recipes.push libiconv
20
-
21
- # sqlite3
22
- sqlite3 = MiniPortile.new "sqlite3", "3.8.4.1"
23
- sqlite3.files << "http://sqlite.org/2014/sqlite-autoconf-3080401.tar.gz"
24
-
25
- recipes.push sqlite3
26
-
27
- # c-ares
28
- c_ares = MiniPortile.new "c-ares", "1.7.5"
29
- c_ares.files << "http://distfiles.openknapsack.org/#{c_ares.name}/#{c_ares.name}-#{c_ares.version}.tar.gz"
30
-
31
- recipes.push c_ares
32
-
33
- # zlib
34
- class ZlibRecipe < MiniPortile
35
- def windows?
36
- !(host =~ /mswin|mingw/).nil?
37
- end
38
-
39
- def configure
40
- return super unless windows?
41
-
42
- Dir.chdir work_path do
43
- mk = File.read 'win32/Makefile.gcc'
44
- File.open 'win32/Makefile.gcc', 'wb' do |f|
45
- f.puts "BINARY_PATH = #{path}/bin"
46
- f.puts "LIBRARY_PATH = #{path}/lib"
47
- f.puts "INCLUDE_PATH = #{path}/include"
48
-
49
- cross_build? and
50
- mk.sub!(/^PREFIX\s*=\s*$/, "PREFIX = #{host}-")
51
-
52
- f.puts mk
53
- end
54
- end
55
- end
56
-
57
- def configure_defaults
58
- ["--static"]
59
- end
60
-
61
- def configured?
62
- return super unless windows?
63
-
64
- !!(File.read(File.join(work_path, 'win32/Makefile.gcc')) =~ /^BINARY_PATH/)
65
- end
66
-
67
- def compile
68
- return super unless windows?
69
-
70
- execute "compile", "make -f win32/Makefile.gcc"
71
- end
72
-
73
- def install
74
- return if installed?
75
- return super unless windows?
76
-
77
- execute "install", %Q(#{make_cmd} -f win32/Makefile.gcc install)
78
- end
79
-
80
- def cross_build?
81
- host != original_host
82
- end
83
- end
84
-
85
- zlib = ZlibRecipe.new "zlib", "1.2.8"
86
- zlib.files << {
87
- url: "http://zlib.net/#{zlib.name}-#{zlib.version}.tar.gz",
88
- md5: "44d667c142d7cda120332623eab69f40",
89
- }
90
-
91
-
92
- recipes.push zlib
93
-
94
- namespace :ports do
95
- directory "ports"
96
-
97
- recipes.each do |recipe|
98
- desc "Install port #{recipe.name} #{recipe.version}"
99
- task recipe.name => ["ports"] do |t|
100
- checkpoint = "ports/.#{recipe.name}-#{recipe.version}-#{recipe.host}.installed"
101
-
102
- unless File.exist?(checkpoint)
103
- recipe.cook
104
- touch checkpoint
105
- end
106
-
107
- recipe.activate
108
- end
109
-
110
- task :all => recipe.name
111
- end
112
-
113
- desc "Install all ports and display installation location"
114
- task :all do
115
- recipes.each do |recipe|
116
- puts "Artifacts of '#{recipe.name}' in '#{recipe.path}'"
117
- end
118
- puts "LDFLAGS: " << ENV['LDFLAGS'].inspect
119
- end
120
- end
121
-
122
- desc "Adjust all recipes host for cross-compilation"
123
- task :cross do
124
- recipes.each do |recipe|
125
- recipe.host = "i686-w64-mingw32"
126
- end
127
- end
@@ -1,16 +0,0 @@
1
- This file tests the 'patch' functionality, as well as working around a
2
- libiconv compilation issue with glibc >= 2.16.
3
-
4
- --- a/srclib/stdio.in.h 2015-08-23 13:59:57.395880263 -0400
5
- +++ b/srclib/stdio.in.h 2015-08-23 14:00:00.047880153 -0400
6
- @@ -695,8 +695,10 @@
7
- /* It is very rare that the developer ever has full control of stdin,
8
- so any use of gets warrants an unconditional warning. Assume it is
9
- always declared, since it is required by C89. */
10
- +#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)
11
- _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
12
- #endif
13
- +#endif
14
-
15
-
16
- #if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@