gear 0.0.3 → 0.0.4

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: 445603b1e01a4640e1961abf51b9fee905cda6a3
4
- data.tar.gz: bbdc3d2eecbf4a8d572646bf500c96b4d870ad0c
3
+ metadata.gz: 34a0f33ba31dc188dbed79ba6fe362d2160a7102
4
+ data.tar.gz: 2d1c2b6dced79059cec1dc13b0fbd97f8047a5ea
5
5
  SHA512:
6
- metadata.gz: 2811ae13eafa601a8891ce094275b5d9c24582a86026ed8d5a50127b52864b84c7f00196048145bba8b4a075bca15dd4d2af8cb136ceb63dcea54a21c1ad3a71
7
- data.tar.gz: 363bc374f3b826c76cd3c0ab416d6c1fc8e3c29e44a8927f76b4e6d0df1057d46b6ffcaaf393c642a6adf67a8d393d79314a439bf477bb825f77c5b6634975cd
6
+ metadata.gz: 36c41d48bf7007acdc105c7ceb58413584644a99c2a41fe50f485d6f585ea255fd8e78fc9bb7c06e3ee953d980bed7d33205562ba353a1af26cbe58f4e0192a7
7
+ data.tar.gz: 779b3ae98314e59cd1fb28cf5702945325980b222702f37eb03b7d5634247630d1cbefdf87077457ba1188a118995c773184e89679982346f9a53c18c4e33fcf
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'gear'
3
- s.version = '0.0.3'
3
+ s.version = '0.0.4'
4
4
  s.license = 'GPL-3'
5
5
  s.summary = 'modular dependency build system for native extensions'
6
6
  s.description = 'gear provides a modular framework to encapsulate build tasks for native ' +
@@ -46,8 +46,9 @@ class Gear
46
46
 
47
47
  def initialize()
48
48
  @obtained = @built = @installed = @checked = false
49
- @build_path = _root_dir() + "/build/#{name()}"
49
+ @build_path = _root_path() + "/build/#{name()}"
50
50
  _setup_paths()
51
+ Dir.chdir(_root_path() + "/build")
51
52
 
52
53
  @@initialized = true
53
54
  end
@@ -85,6 +86,7 @@ class Gear
85
86
  end
86
87
 
87
88
  def remove()
89
+ Dir.chdir(_root_path + '/build')
88
90
  FileUtils.rm_rf("#{@build_path}")
89
91
  @obtained = false
90
92
  return true
@@ -103,6 +105,7 @@ class Gear
103
105
 
104
106
  #======== obtain helpers ========#
105
107
  def git_obtain(repository, branch)
108
+ Dir.chdir(_root_path + '/build')
106
109
  begin
107
110
  if Dir.exist? build_path
108
111
  @git = Git.open(build_path)
@@ -139,6 +142,7 @@ class Gear
139
142
  end
140
143
 
141
144
  def std_make_install()
145
+ Dir.chdir(@build_path)
142
146
  `make install`
143
147
  @installed = true
144
148
  return true
@@ -149,8 +153,12 @@ class Gear
149
153
  `LD_LIBRARY_PATH=#{@@install_path}/lib:$LD_LIBRARY_PATH C_INCLUDE_PATH=#{@@install_path}/include:$C_INCLUDE_PATH PATH=#{@@install_path}/bin:$PATH #{command}`
150
154
  end
151
155
 
156
+ def gear_exec_mac()
157
+ `mdfind -onlyin #{@@install_path} -name #{name} -count`.chomp.to_i
158
+ end
159
+
152
160
  private
153
- def _root_dir()
161
+ def _root_path()
154
162
  File.expand_path('../..', __FILE__)
155
163
  end
156
164
 
@@ -158,6 +166,8 @@ class Gear
158
166
  def _setup_paths()
159
167
  #puts "⚙Preparing directory structure in #{@@install_path}"
160
168
  return if @@initialized
169
+
170
+ FileUtils.mkdir_p("#{_root_path}/build")
161
171
  FileUtils.mkdir_p("#{@@install_path}/bin")
162
172
  FileUtils.mkdir_p("#{@@install_path}/include")
163
173
  FileUtils.mkdir_p("#{@@install_path}/lib")
@@ -8,37 +8,48 @@ module Gears
8
8
  @gear_name = "APNGAsm"
9
9
 
10
10
  def check()
11
- gear_exec 'ldconfig -p | grep libapngasm'
12
- if $?.exitstatus == 0
13
- @checked = true
14
- return true
11
+ puts 'Checking for APNGAsm libraries'
12
+ if RUBY_PLATFORM.match(/darwin/)
13
+ @checked = gear_exec_mac > 0 ? true : false
14
+ else
15
+ gear_exec 'ldconfig -p | grep libapngasm'
16
+ @checked = $?.exitstatus == 0 ? true : false
15
17
  end
16
- @checked = false
17
- return false
18
+ @checked
18
19
  end
19
20
 
20
21
  def obtain()
22
+ puts 'Obtaining APNGAsm sources'
21
23
  github_obtain('apngasm', 'apngasm')
22
24
  end
23
25
 
24
26
  def build()
25
- # prerequisites
27
+ puts 'Engaging APNGAsm dependencies'
26
28
  cm = Gears::CMake.new
27
- cm.engage
29
+ cm_run = Thread.new { cm.engage }
28
30
  boost = Gears::Boost.new
29
- boost.engage
31
+ boost_run = Thread.new { boost.engage }
32
+ cm_run.join
33
+ boost_run.join
30
34
 
35
+ puts "Building APNGAsm in #{@build_path}"
31
36
  Dir.chdir(@build_path)
37
+ `git checkout swig_interfaces`
32
38
  FileUtils.mkdir_p('build') # `mkdir build`
33
39
  Dir.chdir('build') # `cd build`
34
- gear_exec 'cmake -DCMAKE_INSTALL_PREFIX:PATH=#{@@install_path} ..'
35
- gear_exec 'make'
40
+ puts "cmake -DCMAKE_INSTALL_PREFIX=#{@@install_path} .."
41
+ `cmake -DCMAKE_INSTALL_PREFIX=#{@@install_path} ..`
42
+ `make`
36
43
  @built = true
37
- return true
44
+ true
38
45
  end
39
46
 
40
47
  def install()
41
- std_make_install
48
+ puts "Installing APNGAsm to #{@@install_path}"
49
+ Dir.chdir(@build_path + '/build')
50
+ `make install`
51
+ @installed = true
52
+ true
42
53
  end
43
54
 
44
55
  #TODO uninstall
@@ -5,35 +5,55 @@ module Gears
5
5
  @gear_name = "Boost"
6
6
 
7
7
  def check()
8
- gear_exec 'ldconfig -p | grep libboost'
9
- if $?.exitstatus == 0
10
- @checked = true
11
- return true
8
+ puts 'Checking for Boost'
9
+ if RUBY_PLATFORM.match(/darwin/)
10
+ @checked = gear_exec_mac > 0 ? true : false
11
+ else
12
+ gear_exec 'ldconfig -p | grep libboost'
13
+ @checked = $?.exitstatus == 0 ? true : false
12
14
  end
13
- @checked = false
14
- return false
15
+ @checked
15
16
  end
16
17
 
17
18
  def obtain()
18
- github_obtain('boostorg', 'boost')
19
+ puts 'Obtaining Boost'
20
+ # github_obtain('boostorg', 'boost')
21
+ Dir.chdir(_root_path + '/build')
22
+ return true if Dir.exist? 'Boost'
23
+
24
+ `wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.zip`
25
+ `unzip boost_1_59_0.zip`
26
+ `mv boost_1_59_0 Boost`
27
+ FileUtils.rm('boost_1_59_0.zip')
28
+ true
19
29
  end
20
30
 
21
31
  def build()
32
+ puts "Building Boost in #{@build_path}"
22
33
  Dir.chdir(@build_path)
34
+ puts '...boostrapping'
23
35
  `./bootstrap.sh --without-libraries=python --prefix=#{@@install_path}`
36
+ puts '...compiling headers'
24
37
  `./b2 headers`
38
+ puts '...building'
25
39
  `./b2`
26
- `./b2 install --prefix=#{@@install_path}`
27
40
  @built = true
28
41
  return true
29
42
  end
30
43
 
31
44
  def install()
32
- std_make_install
45
+ puts "Installing Boost to #{@@install_path}"
46
+ Dir.chdir(@build_path)
47
+ `./b2 install --prefix=#{@@install_path}`
48
+ @installed = true
49
+ true
33
50
  end
34
51
 
35
52
  def uninstall()
36
- #TODO
53
+ FileUtils.rm_f(Dir.glob("#{@@install_path}/lib/libboost.*"))
54
+ FileUtils.rm_rf("#{@@install_path}/include/boost")
55
+ @installed = false
56
+ true
37
57
  end
38
58
  end
39
59
  end
@@ -7,35 +7,41 @@ module Gears
7
7
  @gear_name = "CMake"
8
8
 
9
9
  def check()
10
- gear_exec 'cmake --version'
11
- if $?.exitstatus == 0
12
- @checked = true
13
- return true
10
+ puts 'Checking for CMake'
11
+ if RUBY_PLATFORM.match(/darwin/)
12
+ @checked = gear_exec_mac > 0 ? true : false
13
+ else
14
+ gear_exec 'cmake --version'
15
+ @checked = $?.exitstatus == 0 ? true : false
14
16
  end
15
- @checked = false
16
- return false
17
+ return @checked
17
18
  end
18
19
 
19
20
  def obtain()
21
+ puts 'Obtaining CMake'
20
22
  github_obtain('Kitware', 'CMake')
21
23
  end
22
24
 
23
25
  def build()
26
+ puts 'Engaging CMake dependencies'
24
27
  la = Gears::LibArchive.new
25
28
  la.engage
26
29
 
30
+ puts "Building CMake in #{@build_path}"
27
31
  Dir.chdir(@build_path)
28
- `sh bootstrap --prefix=#{@@install_path}`
32
+ `./configure --prefix=#{@@install_path}`
29
33
  `make`
30
34
  @built = true
31
35
  return true
32
36
  end
33
37
 
34
38
  def install()
39
+ puts "Installing CMake to #{@@install_path}"
35
40
  std_make_install
36
41
  end
37
42
 
38
43
  def uninstall()
44
+ puts 'Uninstalling CMake'
39
45
  FileUtils.rm_f("#{@@install_path}/bin/ccmake")
40
46
  FileUtils.rm_f("#{@@install_path}/bin/cmake")
41
47
  FileUtils.rm_f("#{@@install_path}/bin/cmakexbuild")
@@ -5,26 +5,38 @@ module Gears
5
5
  @gear_name = "libarchive"
6
6
 
7
7
  def check()
8
- gear_exec 'ldconfig -p | grep libarchive'
9
- if $?.exitstatus == 0
10
- @checked = true
11
- return true
8
+ puts 'Checking for libarchive'
9
+ if RUBY_PLATFORM.match(/darwin/)
10
+ @checked = gear_exec_mac > 0 ? true : false
11
+ else
12
+ gear_exec 'ldconfig -p | grep libarchive'
13
+ @checked = $?.exitstatus == 0 ? true : false
12
14
  end
13
- @checked = false
14
- return false
15
+ @checked
15
16
  end
16
17
 
17
18
  def obtain()
18
- github_obtain('libarchive', 'libarchive')
19
+ puts 'Obtaining libarchive'
20
+ # github_obtain('libarchive', 'libarchive', 'release')
21
+ return true if File.exist? 'libarchive'
22
+ Dir.chdir(_root_path + '/build')
23
+ `wget http://www.libarchive.org/downloads/libarchive-3.1.2.zip`
24
+ `unzip libarchive-3.1.2.zip`
25
+ `mv libarchive-3.1.2 libarchive`
19
26
  end
20
27
 
21
28
  def build()
29
+ puts "Building libarchive in #{@build_path}"
30
+ # TODO: fix build error
22
31
  Dir.chdir(@build_path)
23
- `sh build/autogen.sh`
24
- `./configure --prefix=#{@@install_path}`
32
+ # `git checkout release`
33
+ # `sh build/autogen.sh`
34
+ puts '...configuring'
35
+ `./configure --prefix=#{@@install_path} --without-lzo2 --without-nettle --without-xml2`
36
+ puts '...making'
25
37
  `make`
26
38
  @built = true
27
- return true
39
+ true
28
40
  end
29
41
 
30
42
  def install()
@@ -45,7 +57,7 @@ module Gears
45
57
  FileUtils.rm_rf("#{@@install_path}/share/man/man3")
46
58
  FileUtils.rm_rf("#{@@install_path}/share/man/man5")
47
59
  @installed = false
48
- return true
60
+ true
49
61
  end
50
62
  end
51
- end
63
+ end
@@ -5,39 +5,48 @@ module Gears
5
5
  @gear_name = "SWIG"
6
6
 
7
7
  def check()
8
- gear_exec 'swig -version'
9
- if $?.exitstatus == 0
10
- @checked = true
11
- return true
8
+ puts 'Checking for SWIG'
9
+ if RUBY_PLATFORM.match(/darwin/)
10
+ @checked = gear_exec_mac > 0 ? true : false
11
+ else
12
+ gear_exec 'swig -version'
13
+ @checked = $?.exitstatus == 0 ? true : false
12
14
  end
13
- @checked = false
14
- return false
15
+ @checked
15
16
  end
16
17
 
17
18
  def obtain()
19
+ puts 'Obtaining SWIG'
18
20
  github_obtain('swig', 'swig')
19
21
  end
20
22
 
21
23
  def build()
24
+ puts "Building SWIG in #{@build_path}"
22
25
  Dir.chdir(@build_path)
23
- `sh autogen.sh`
24
- `sh configure --prefix=#{@@install_path}`
26
+ `./autogen.sh`
27
+ `./configure --prefix=#{@@install_path}`
25
28
  `make`
26
29
  @built = true
27
- return true
30
+ true
28
31
  end
29
32
 
30
33
  def install()
31
- std_make_install
34
+ puts "Installing SWIG to #{@@install_path}"
35
+ Dir.chdir(@build_path)
36
+ `make install-main`
37
+ `make install-lib`
38
+ @installed = true
39
+ true
32
40
  end
33
41
 
34
42
  def uninstall()
43
+ puts 'Uninstalling SWIG'
35
44
  FileUtils.rm_f("#{@@install_path}/bin/swig")
36
45
  FileUtils.rm_f("#{@@install_path}/bin/ccache-swig")
37
46
  FileUtils.rm_rf("#{@@install_path}/share/swig")
38
47
  FileUtils.rm_f("#{@@install_path}/share/man/man1/ccache-swig.1")
39
48
  @installed = false
40
- return true
49
+ true
41
50
  end
42
51
  end
43
52
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gear
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rei Kagetsuki
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-19 00:00:00.000000000 Z
11
+ date: 2015-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: git