emplace 0.1.7 → 0.1.9

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/emplace.rb +49 -30
  3. data/test/emplace-test.rb +39 -2
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b144f6bb99df6ed689df617404919bb2ba11249d
4
- data.tar.gz: a88cb236d52bd5ec904545fca8912571f7861fa7
3
+ metadata.gz: a19369de0e81e097444c4f2051ecdb68f1eb7d89
4
+ data.tar.gz: 6b7e1d5c808716b70647ba236d078f28b0d0fc05
5
5
  SHA512:
6
- metadata.gz: 90367dc321118ecbc5023aa9daa100b64c5baee4b8801851699010855a4e7d8b7fd32c28ba3cc68a919732ebc926b19fcc3cdcb4e44f2359bd361781ce60a1fb
7
- data.tar.gz: 93949f99b0da4a6762dad3153770fd8c47a4c522bd4214becb42d1a73116f896f570ecf0f925cedcff8f6068eb123ebf39cbb97ee71f97ee641bee7e08eb942c
6
+ metadata.gz: 64bab951484b11dd563c780d959dad949d098518142f89bdf179a3cd84cb4a5e969a06e6f19d11c6bf2a3ed858d824a4523850251701c7255f28f2bf6e51a8ea
7
+ data.tar.gz: 74a5cc73f81178e13bb220c262078788a34a7b3bbde065db6cb269da887578452bf5b36bf02cb9bec92a96ab1237b213a25f5c309c2a7b3f96a7125545d75f64
data/lib/emplace.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'fileutils'
2
+ require 'open-uri'
2
3
 
3
4
  module Emplace
4
5
 
@@ -7,51 +8,63 @@ module Emplace
7
8
  @name = name
8
9
  @impl = impl
9
10
  end
11
+ def build_dir
12
+ 'build'
13
+ end
14
+ def dist_dir
15
+ 'dist'
16
+ end
17
+ def vendor_dir
18
+ 'vendor'
19
+ end
10
20
  def clean!
11
- @impl.clean
21
+ FileUtils.rm_rf build_dir
22
+ FileUtils.rm_rf dist_dir
23
+ FileUtils.rm_rf vendor_dir
12
24
  end
13
25
  def cmake!
14
- @impl.cmake @name
26
+ @impl.cmake @name, build_dir, dist_dir
15
27
  end
16
28
  def build!
17
- @impl.build
29
+ @impl.build build_dir
18
30
  end
19
31
  def test!
20
- @impl.test
32
+ @impl.test build_dir
21
33
  end
22
34
  def package!
23
- @impl.package @name
35
+ @impl.package @name, dist_dir
36
+ end
37
+ def extract!
38
+ @impl.extract @name, vendor_dir
39
+ end
40
+ def fetch!(url)
41
+ package = @impl.package_name(@name)
42
+ source = open(File.join(url, package))
43
+ @impl.write_file(package, vendor_dir) {|dest|
44
+ IO.copy_stream(source, dest)
45
+ }
24
46
  end
25
47
  end
26
48
 
27
49
  class CMakeBuild
28
- def build_dir
29
- 'build'
30
- end
31
- def dist_dir
32
- 'dist'
33
- end
34
- def install_dir(name)
35
- "#{dist_dir}/#{name}"
36
- end
37
- def cmake(name)
38
- sh "cmake . -B#{build_dir} -DCMAKE_INSTALL_PREFIX=#{install_dir(name)} -G \"#{cmake_generator}\""
50
+ def cmake(name, build_dir, dist_dir)
51
+ sh "cmake . -B#{build_dir} -DCMAKE_INSTALL_PREFIX=#{dist_dir}/#{name} -G \"#{cmake_generator}\""
39
52
  end
40
- def build
41
- sh "cmake --build #{build_dir} --target install"
53
+ def build(dir)
54
+ sh "cmake --build #{dir} --target install"
42
55
  end
43
- def test
44
- sh "ctest --verbose", build_dir
45
- end
46
- def clean
47
- FileUtils.rm_rf build_dir
48
- FileUtils.rm_rf dist_dir
56
+ def test(dir)
57
+ sh "ctest --verbose", dir
49
58
  end
50
59
  def sh(cmd, dir = '.')
51
60
  Dir.chdir(dir) {
52
61
  raise $? unless system cmd
53
62
  }
54
63
  end
64
+ def write_file(name, dir, &block)
65
+ FileUtils.mkdir_p(dir)
66
+ File.open(File.join(dir, name), 'wb', &block)
67
+ end
55
68
  end
56
69
 
57
70
  class Unix < CMakeBuild
@@ -64,8 +77,11 @@ module Emplace
64
77
  def package_name(name)
65
78
  "#{name}-#{system_name}.tgz"
66
79
  end
67
- def package(name)
68
- sh "tar czf #{package_name(name)} #{name}", dist_dir
80
+ def package(name, dir)
81
+ sh "tar czf #{package_name(name)} #{name}", dir
82
+ end
83
+ def extract(name, dir)
84
+ sh "tar xzf #{package_name(name)}", dir
69
85
  end
70
86
  end
71
87
 
@@ -128,15 +144,18 @@ module Emplace
128
144
  "#{super}-msvc"
129
145
  end
130
146
  end
131
- def build
147
+ def build(dir)
132
148
  if cfg = ENV['CONFIGURATION']
133
- sh "cmake --build #{build_dir} --target install --config #{cfg}"
149
+ sh "cmake --build #{dir} --target install --config #{cfg}"
134
150
  else
135
151
  super
136
152
  end
137
153
  end
138
- def package(name)
139
- sh "7z a #{package_name(name)} #{name}", dist_dir
154
+ def package(name, dir)
155
+ sh "7z a #{package_name(name)} #{name}", dir
156
+ end
157
+ def extract(name, dir)
158
+ sh "7z x #{package_name(name)}", dir
140
159
  end
141
160
  }
142
161
  end
data/test/emplace-test.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'test/unit'
2
2
 
3
3
  require 'emplace'
4
+ require 'fileutils'
4
5
 
5
6
  ENV['CC'] = 'cc'
6
7
  ENV['CONFIGURATION'] = 'CFG'
@@ -29,11 +30,13 @@ class TestEmplace < Test::Unit::TestCase
29
30
  project.build!
30
31
  project.test!
31
32
  project.package!
33
+ project.extract!
32
34
  assert_equal [
33
35
  'cmake . -Bbuild -DCMAKE_INSTALL_PREFIX=dist/foo -G "Unix Makefiles"',
34
36
  'cmake --build build --target install',
35
37
  'ctest --verbose',
36
- 'tar czf foo-linux-x86_64-cc.tgz foo'
38
+ 'tar czf foo-linux-x86_64-cc.tgz foo',
39
+ 'tar xzf foo-linux-x86_64-cc.tgz'
37
40
  ], travis.commands
38
41
  end
39
42
 
@@ -44,14 +47,48 @@ class TestEmplace < Test::Unit::TestCase
44
47
  project.build!
45
48
  project.test!
46
49
  project.package!
50
+ project.extract!
47
51
  assert_equal [
48
52
  'cmake . -Bbuild -DCMAKE_INSTALL_PREFIX=dist/foo -G "Visual Studio 14 Win64"',
49
53
  'cmake --build build --target install --config CFG',
50
54
  'ctest --verbose',
51
- '7z a foo-win-x64-msvc-cfg.zip foo'
55
+ '7z a foo-win-x64-msvc-cfg.zip foo',
56
+ '7z x foo-win-x64-msvc-cfg.zip'
52
57
  ], appveyor.commands
53
58
  end
54
59
 
60
+ def testFetchTravis
61
+ FileUtils.mkdir_p 'url_source_dir'
62
+ FileUtils.mkdir_p 'vendor_test_dir'
63
+
64
+ File.write('url_source_dir/foo-linux-x86_64-cc.tgz', 'foo')
65
+
66
+ travis = Travis.new
67
+ project = Emplace::Project.new 'foo', travis
68
+ project.fetch! 'url_source_dir'
69
+
70
+ assert_equal 'foo', File.read('vendor/foo-linux-x86_64-cc.tgz')
71
+ ensure
72
+ FileUtils.rm_rf 'url_source_dir'
73
+ FileUtils.rm_rf 'vendor'
74
+ end
75
+
76
+ def testFetchAppVeyor
77
+ FileUtils.mkdir_p 'url_source_dir'
78
+ FileUtils.mkdir_p 'vendor'
79
+
80
+ File.write('url_source_dir/foo-win-x64-msvc-cfg.zip', 'foo')
81
+
82
+ appveyor = AppVeyor.new
83
+ project = Emplace::Project.new 'foo', appveyor
84
+ project.fetch! 'url_source_dir'
85
+
86
+ assert_equal 'foo', File.read('vendor/foo-win-x64-msvc-cfg.zip')
87
+ ensure
88
+ FileUtils.rm_rf 'url_source_dir'
89
+ FileUtils.rm_rf 'vendor'
90
+ end
91
+
55
92
  class Travis < Emplace.send(:travis, Emplace::Linux)
56
93
  attr_reader :commands
57
94
  def arch
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: emplace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Calhoun
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-18 00:00:00.000000000 Z
11
+ date: 2015-12-19 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Keeps settings for running cmake builds on Travis-CI and AppVeyor.
14
14
  email: