mini_portile2 2.0.0 → 2.1.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 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@