depend 0.0.1.pre.rc1 → 0.0.1.pre.rc2
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 +4 -4
- data/README.md +22 -1
- data/Rakefile +1 -0
- data/depend.gemspec +2 -2
- data/lib/depend/configuration.rb +23 -0
- data/lib/depend/dependent.rb +13 -0
- data/lib/depend/installer.rb +46 -0
- data/lib/depend/package_provider/apt.rb +15 -0
- data/lib/depend/package_provider/common.rb +57 -0
- data/lib/depend/package_provider/homebrew.rb +15 -0
- data/lib/depend/registerable.rb +47 -0
- data/lib/depend/version.rb +1 -1
- data/lib/depend.rb +51 -2
- data/lib/rubygems_plugin.rb +6 -1
- metadata +15 -20
- data/data/fedora.yml +0 -154
- data/lib/depend/bundler.rb +0 -9
- data/lib/rubygems/depend/dependency.rb +0 -7
- data/lib/rubygems/depend/host_detection/package_provider.rb +0 -83
- data/lib/rubygems/depend/host_detection/platform.rb +0 -34
- data/lib/rubygems/depend/host_detection.rb +0 -25
- data/lib/rubygems/depend/installer/apt_installer.rb +0 -8
- data/lib/rubygems/depend/installer/base_installer.rb +0 -8
- data/lib/rubygems/depend/installer/homebrew_installer.rb +0 -8
- data/lib/rubygems/depend/installer/yum_installer.rb +0 -8
- data/lib/rubygems/depend/installer.rb +0 -20
- data/lib/rubygems/depend.rb +0 -48
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d369724bdd4e5ea3265934ee5f331f5700f9c3b
|
4
|
+
data.tar.gz: a9938335cf39d63612e20e4d36cd19c1dac4382a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3251fc990c16bd0e639ab417c26d221c12e21240cc3809b6c218529d6a5cf0cc42bfafb6858e3b2d19489022c369c9b196254cacb1901fd586c080742374ee3f
|
7
|
+
data.tar.gz: 78646ddec97d5aa9273296227dcd6f1806e7b2040f00d8b5ce201003def95ecefbd934ef855655be1b662b94e83482353b48b9b5a35faaeffb66c9cab3604a92
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/depend`. To experiment with that code, run `bin/console` for an interactive prompt.
|
4
4
|
|
5
|
-
With Depend, you can handle native dependent more easily
|
5
|
+
With Depend, you can handle native dependent more easily
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
@@ -22,6 +22,27 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
+
```ruby
|
26
|
+
class YourGem::Depend < Depend::Base
|
27
|
+
def mac_os_x
|
28
|
+
case package_provider
|
29
|
+
when 'homebrew'
|
30
|
+
%w{mysql-dev}
|
31
|
+
when 'macports'
|
32
|
+
%w{mysql-dev}
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def ubuntu
|
37
|
+
%w{mysql-dev}
|
38
|
+
end
|
39
|
+
|
40
|
+
def fedora
|
41
|
+
%w{mysql-devel}
|
42
|
+
end
|
43
|
+
end
|
44
|
+
```
|
45
|
+
|
25
46
|
## Development
|
26
47
|
|
27
48
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/Rakefile
CHANGED
data/depend.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ["Newell Zhu"]
|
10
10
|
spec.email = ["zlx.star@gmail.com"]
|
11
11
|
spec.license = 'MIT'
|
12
|
-
spec.summary = %q{RubyGems Native Depend Solution
|
12
|
+
spec.summary = %q{RubyGems Native Depend Solution}
|
13
13
|
spec.description = %q{RubyGems Native Depend Solution.}
|
14
14
|
spec.homepage = "https://github.com/zlx/depend"
|
15
15
|
|
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency "
|
21
|
+
spec.add_dependency "os_platform"
|
22
22
|
|
23
23
|
spec.add_development_dependency "bundler", "~> 1.9"
|
24
24
|
spec.add_development_dependency "rake", "~> 10.0"
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Depend
|
2
|
+
class Configuration
|
3
|
+
attr_accessor :default_dependencies, :homebrew_dependencies, :apt_dependencies
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@default_dependencies = []
|
7
|
+
@homebrew_dependencies = []
|
8
|
+
@apt_dependencies = []
|
9
|
+
end
|
10
|
+
|
11
|
+
def dependencies_for_default=(deps = [])
|
12
|
+
@default_dependencies = deps
|
13
|
+
end
|
14
|
+
|
15
|
+
def dependencies_for_homebrew=(deps = [])
|
16
|
+
@homebrew_dependencies = deps
|
17
|
+
end
|
18
|
+
|
19
|
+
def dependencies_for_apt=(deps = [])
|
20
|
+
@apt_dependencies = deps
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Depend
|
2
|
+
module Dependent
|
3
|
+
|
4
|
+
def dependencies_for(platform, package_provider)
|
5
|
+
if Depend.configuration.send("#{package_provider.display_name.downcase}_dependencies").empty?
|
6
|
+
Depend.configuration.default_dependencies
|
7
|
+
else
|
8
|
+
Depend.configuration.send("#{package_provider.display_name.downcase}_dependencies")
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'os_platform'
|
2
|
+
|
3
|
+
module Depend
|
4
|
+
class Installer
|
5
|
+
|
6
|
+
def self.install
|
7
|
+
install_platform_dependencies
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.install_platform_dependencies
|
11
|
+
puts "install dependency for gem"
|
12
|
+
os_platform = OSPlatform.local
|
13
|
+
depend_instance = Depend::Base.new(os_platform.platform, os_platform.platform_version)
|
14
|
+
package_providers = depend_instance.package_providers
|
15
|
+
unless package_providers.empty?
|
16
|
+
package_provider = decide(package_providers)
|
17
|
+
deps = depend_instance.dependencies_for(package_provider)
|
18
|
+
|
19
|
+
unless deps.empty?
|
20
|
+
puts "Trying to install native dependencies for Gem '#{spec.name}': #{deps.join ' '}"
|
21
|
+
deps.each do |dep|
|
22
|
+
unless package_provider.install(spec.name, dep)
|
23
|
+
raise Gem::InstallError, "Failed to install native dependencies for '#{spec.name}'."
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def self.decide(package_providers)
|
33
|
+
if package_providers.size > 1
|
34
|
+
puts "You have installed many package_providers, which do your want to install dependency for #{spec.name}"
|
35
|
+
puts package_providers.map.each_with_index do |p, i|
|
36
|
+
"#{i+1}: #{p.display_name}\n"
|
37
|
+
end.join
|
38
|
+
index = STDIN.getc
|
39
|
+
(package_providers[index] || package_providers.shift).new
|
40
|
+
else
|
41
|
+
package_providers.shift.new
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module Depend
|
2
|
+
module PackageProvider
|
3
|
+
module Common
|
4
|
+
# Install dep for spec
|
5
|
+
#
|
6
|
+
def install(spec, dep)
|
7
|
+
unless installed?(dep)
|
8
|
+
print "#{spec} need #{dep} installed, Install it with #{display_name} now? y(y/n)"
|
9
|
+
y = STDIN.getc
|
10
|
+
exec_install(dep) unless y.downcase == 'n'
|
11
|
+
end
|
12
|
+
installed?(dep)
|
13
|
+
end
|
14
|
+
|
15
|
+
# exec install command
|
16
|
+
#
|
17
|
+
# command: command for package_provider
|
18
|
+
# dep: library need installed
|
19
|
+
def exec_install(dep)
|
20
|
+
`#{command} install #{dep}`
|
21
|
+
end
|
22
|
+
|
23
|
+
# command for package_provider
|
24
|
+
#
|
25
|
+
def command
|
26
|
+
fail NotImplementedError, "Implement #command in subclass"
|
27
|
+
end
|
28
|
+
|
29
|
+
# Check package_provider exist in this system
|
30
|
+
#
|
31
|
+
def exist?
|
32
|
+
paths = (
|
33
|
+
ENV['PATH'].split(::File::PATH_SEPARATOR) +
|
34
|
+
%w(/bin /usr/bin /sbin /usr/sbin /opt/local/bin)
|
35
|
+
)
|
36
|
+
|
37
|
+
paths.each do |path|
|
38
|
+
possible = File.join(path, command)
|
39
|
+
return possible if File.executable?(possible)
|
40
|
+
end
|
41
|
+
|
42
|
+
false
|
43
|
+
end
|
44
|
+
|
45
|
+
# display_name for package_provider
|
46
|
+
#
|
47
|
+
def display_name
|
48
|
+
self.class.to_s.split("::").last.capitalize
|
49
|
+
end
|
50
|
+
|
51
|
+
# check dep installed in this system
|
52
|
+
def installed?(dep)
|
53
|
+
fail NotImplementedError, "Implement #installed in subclass"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Depend
|
2
|
+
class PlatformNotSupportedError < StandardError; end
|
3
|
+
|
4
|
+
module Registerable
|
5
|
+
OPERATION_SYSTEMS = %w{ Ubuntu MacOS }.freeze
|
6
|
+
attr_accessor :platforms
|
7
|
+
|
8
|
+
def acceptable_operations_systems
|
9
|
+
OPERATION_SYSTEMS
|
10
|
+
end
|
11
|
+
|
12
|
+
def register(package_provider, platform, platform_version = nil)
|
13
|
+
puts "in register"
|
14
|
+
fail PlatformNotSupportedError unless platform_accepted?(platform)
|
15
|
+
@platforms ||= {}
|
16
|
+
if @platforms[platform]
|
17
|
+
@platforms[platform] << [platform_version, package_provider]
|
18
|
+
else
|
19
|
+
@platforms[platform] = [[platform_version, package_provider]]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def package_providers_for(platform, platform_version)
|
24
|
+
return [] if @platforms.nil? || @platforms.empty?
|
25
|
+
_platform = @platforms[platform]
|
26
|
+
_platform.select{|plat| version_include?(plat.shift, platform_version)}.map(&:last)
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def version_include?(version_string, platform_version)
|
32
|
+
return true if version_string.nil?
|
33
|
+
min_version, max_version = version_string.split(",").map(&:strip)
|
34
|
+
return unless min_version
|
35
|
+
if max_version
|
36
|
+
Gem::Version.new(min_version) <= Gem::Version.new(platform_version) &&
|
37
|
+
Gem::Version.new(platform_version) <= Gem::Version.new(max_version)
|
38
|
+
else
|
39
|
+
Gem::Version.new(platform_version) >= Gem::Version.new(min_version)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def platform_accepted?(platform)
|
44
|
+
OPERATION_SYSTEMS.map(&:downcase).include?(platform.downcase)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/depend/version.rb
CHANGED
data/lib/depend.rb
CHANGED
@@ -1,6 +1,55 @@
|
|
1
1
|
require "depend/version"
|
2
|
-
require "depend/bundler"
|
3
2
|
|
4
3
|
module Depend
|
5
|
-
|
4
|
+
autoload :Registerable, "depend/registerable"
|
5
|
+
autoload :Dependent, "depend/dependent"
|
6
|
+
autoload :Configuration, "depend/configuration"
|
7
|
+
|
8
|
+
module PackageProvider
|
9
|
+
autoload :Common, "depend/package_provider/common"
|
10
|
+
autoload :Apt, "depend/package_provider/apt"
|
11
|
+
autoload :Homebrew, "depend/package_provider/homebrew"
|
12
|
+
end
|
13
|
+
|
14
|
+
class << self
|
15
|
+
attr_writer :configuration
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.configuration
|
19
|
+
@configuration ||= Configuration.new
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.reset_configuration
|
23
|
+
@configuration = Configuration.new
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.configure
|
27
|
+
puts "in configure"
|
28
|
+
yield(configuration)
|
29
|
+
end
|
30
|
+
|
31
|
+
class Base
|
32
|
+
extend Registerable
|
33
|
+
extend Dependent
|
34
|
+
|
35
|
+
self.register PackageProvider::Apt, 'Ubuntu'
|
36
|
+
self.register PackageProvider::Homebrew, 'MacOS'
|
37
|
+
|
38
|
+
OPERATION_SYSTEMS = %w{ Ubuntu MacOS }.freeze
|
39
|
+
|
40
|
+
def initialize(platform, platform_version = nil)
|
41
|
+
@platform = platform
|
42
|
+
@platform_version = platform_version
|
43
|
+
end
|
44
|
+
|
45
|
+
def package_providers
|
46
|
+
self.class.package_providers_for(@platform, @platform_version)
|
47
|
+
end
|
48
|
+
|
49
|
+
def dependencies_for(package_provider)
|
50
|
+
self.class.dependencies_for(@platform, package_provider)
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
6
55
|
end
|
data/lib/rubygems_plugin.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: depend
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1.pre.
|
4
|
+
version: 0.0.1.pre.rc2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Newell Zhu
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: os_platform
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,21 +80,16 @@ files:
|
|
80
80
|
- Rakefile
|
81
81
|
- bin/console
|
82
82
|
- bin/setup
|
83
|
-
- data/fedora.yml
|
84
83
|
- depend.gemspec
|
85
84
|
- lib/depend.rb
|
86
|
-
- lib/depend/
|
85
|
+
- lib/depend/configuration.rb
|
86
|
+
- lib/depend/dependent.rb
|
87
|
+
- lib/depend/installer.rb
|
88
|
+
- lib/depend/package_provider/apt.rb
|
89
|
+
- lib/depend/package_provider/common.rb
|
90
|
+
- lib/depend/package_provider/homebrew.rb
|
91
|
+
- lib/depend/registerable.rb
|
87
92
|
- lib/depend/version.rb
|
88
|
-
- lib/rubygems/depend.rb
|
89
|
-
- lib/rubygems/depend/dependency.rb
|
90
|
-
- lib/rubygems/depend/host_detection.rb
|
91
|
-
- lib/rubygems/depend/host_detection/package_provider.rb
|
92
|
-
- lib/rubygems/depend/host_detection/platform.rb
|
93
|
-
- lib/rubygems/depend/installer.rb
|
94
|
-
- lib/rubygems/depend/installer/apt_installer.rb
|
95
|
-
- lib/rubygems/depend/installer/base_installer.rb
|
96
|
-
- lib/rubygems/depend/installer/homebrew_installer.rb
|
97
|
-
- lib/rubygems/depend/installer/yum_installer.rb
|
98
93
|
- lib/rubygems_plugin.rb
|
99
94
|
homepage: https://github.com/zlx/depend
|
100
95
|
licenses:
|
@@ -119,5 +114,5 @@ rubyforge_project:
|
|
119
114
|
rubygems_version: 2.2.0
|
120
115
|
signing_key:
|
121
116
|
specification_version: 4
|
122
|
-
summary: RubyGems Native Depend Solution
|
117
|
+
summary: RubyGems Native Depend Solution
|
123
118
|
test_files: []
|
data/data/fedora.yml
DELETED
@@ -1,154 +0,0 @@
|
|
1
|
-
basic_build_deps:
|
2
|
-
- gcc
|
3
|
-
- ruby-devel
|
4
|
-
- make
|
5
|
-
gems:
|
6
|
-
atk:
|
7
|
-
- atk-devel
|
8
|
-
atk-devel:
|
9
|
-
- atk-devel
|
10
|
-
bigdecimal:
|
11
|
-
- db4-devel
|
12
|
-
- gdbm-devel
|
13
|
-
- libffi-devel
|
14
|
-
- libyaml-devel
|
15
|
-
- ncurses-devel
|
16
|
-
- openssl-devel
|
17
|
-
- readline-devel
|
18
|
-
- tk-devel
|
19
|
-
cairo:
|
20
|
-
- cairo-devel
|
21
|
-
cairo-devel:
|
22
|
-
- cairo-devel
|
23
|
-
curb:
|
24
|
-
- libcurl-devel
|
25
|
-
eventmachine:
|
26
|
-
- openssl-devel
|
27
|
-
ffi:
|
28
|
-
- libffi-devel
|
29
|
-
gdk_pixbuf2:
|
30
|
-
- gdk-pixbuf2-devel
|
31
|
-
- rubygem-cairo-devel
|
32
|
-
gdk_pixbuf2-devel:
|
33
|
-
- gdk-pixbuf2-devel
|
34
|
-
- rubygem-cairo-devel
|
35
|
-
glib2:
|
36
|
-
- glib2-devel
|
37
|
-
glib2-devel:
|
38
|
-
- glib2-devel
|
39
|
-
gtk2:
|
40
|
-
- gtk2-devel
|
41
|
-
- rubygem-cairo-devel
|
42
|
-
gtk2-devel:
|
43
|
-
- gtk2-devel
|
44
|
-
- rubygem-cairo-devel
|
45
|
-
gtksourceview2:
|
46
|
-
- gtksourceview2-devel
|
47
|
-
gtksourceview2-devel:
|
48
|
-
- gtksourceview2-devel
|
49
|
-
idn:
|
50
|
-
- libidn-devel
|
51
|
-
io-console:
|
52
|
-
- db4-devel
|
53
|
-
- gdbm-devel
|
54
|
-
- libffi-devel
|
55
|
-
- libyaml-devel
|
56
|
-
- ncurses-devel
|
57
|
-
- openssl-devel
|
58
|
-
- readline-devel
|
59
|
-
- tk-devel
|
60
|
-
krb5-auth:
|
61
|
-
- krb5-devel
|
62
|
-
mkrf:
|
63
|
-
- libxml2-devel
|
64
|
-
nokogiri:
|
65
|
-
- libxml2-devel
|
66
|
-
- libxslt-devel
|
67
|
-
pango:
|
68
|
-
- pango-devel
|
69
|
-
- rubygem-cairo-devel
|
70
|
-
pango-devel:
|
71
|
-
- pango-devel
|
72
|
-
- rubygem-cairo-devel
|
73
|
-
passenger:
|
74
|
-
- httpd-devel
|
75
|
-
- libcurl-devel
|
76
|
-
- libev-devel
|
77
|
-
- zlib-devel
|
78
|
-
passenger-devel:
|
79
|
-
- httpd-devel
|
80
|
-
- libcurl-devel
|
81
|
-
- libev-devel
|
82
|
-
- zlib-devel
|
83
|
-
passenger-native:
|
84
|
-
- httpd-devel
|
85
|
-
- libcurl-devel
|
86
|
-
- libev-devel
|
87
|
-
- zlib-devel
|
88
|
-
passenger-native-libs:
|
89
|
-
- httpd-devel
|
90
|
-
- libcurl-devel
|
91
|
-
- libev-devel
|
92
|
-
- zlib-devel
|
93
|
-
pg:
|
94
|
-
- postgresql-devel
|
95
|
-
pkg-config:
|
96
|
-
- cairo-devel
|
97
|
-
poppler:
|
98
|
-
- poppler-glib-devel
|
99
|
-
- rubygem-cairo-devel
|
100
|
-
- rubygem-gtk2-devel
|
101
|
-
poppler-devel:
|
102
|
-
- poppler-glib-devel
|
103
|
-
- rubygem-cairo-devel
|
104
|
-
- rubygem-gtk2-devel
|
105
|
-
qpid:
|
106
|
-
- qpid-cpp-client-devel
|
107
|
-
rake:
|
108
|
-
- db4-devel
|
109
|
-
- gdbm-devel
|
110
|
-
- libffi-devel
|
111
|
-
- libyaml-devel
|
112
|
-
- ncurses-devel
|
113
|
-
- openssl-devel
|
114
|
-
- readline-devel
|
115
|
-
- tk-devel
|
116
|
-
rdoc:
|
117
|
-
- db4-devel
|
118
|
-
- gdbm-devel
|
119
|
-
- libffi-devel
|
120
|
-
- libyaml-devel
|
121
|
-
- ncurses-devel
|
122
|
-
- openssl-devel
|
123
|
-
- readline-devel
|
124
|
-
- tk-devel
|
125
|
-
rsvg2:
|
126
|
-
- librsvg2-devel
|
127
|
-
- rubygem-cairo-devel
|
128
|
-
rsvg2-devel:
|
129
|
-
- librsvg2-devel
|
130
|
-
- rubygem-cairo-devel
|
131
|
-
ruby-libvirt:
|
132
|
-
- libvirt-devel
|
133
|
-
ruby-opengl:
|
134
|
-
- freeglut-devel
|
135
|
-
- libGL-devel
|
136
|
-
- libGLU-devel
|
137
|
-
sqlite3:
|
138
|
-
- sqlite-devel
|
139
|
-
thin:
|
140
|
-
- libcurl-devel
|
141
|
-
typhoeus:
|
142
|
-
- libcurl-devel
|
143
|
-
vte:
|
144
|
-
- vte-devel
|
145
|
-
vte-devel:
|
146
|
-
- vte-devel
|
147
|
-
xmlparser:
|
148
|
-
- expat-devel
|
149
|
-
zoom:
|
150
|
-
- libgcrypt-devel
|
151
|
-
- libgpg-error-devel
|
152
|
-
- libxslt-devel
|
153
|
-
- libyaz-devel
|
154
|
-
- tcp_wrappers-devel
|
data/lib/depend/bundler.rb
DELETED
@@ -1,83 +0,0 @@
|
|
1
|
-
module Depend
|
2
|
-
class HostDetection
|
3
|
-
class PackageProvider
|
4
|
-
COMMANDS = {
|
5
|
-
'aix' => 'installp',
|
6
|
-
'yum' => 'yum',
|
7
|
-
'packman' => 'packman',
|
8
|
-
'apt' => 'apt-get',
|
9
|
-
'feebsd' => 'pkg_add',
|
10
|
-
'portage' => 'emerge',
|
11
|
-
'homebrew' => 'brew',
|
12
|
-
'macports' => 'port',
|
13
|
-
'solaris' => 'pkg_add',
|
14
|
-
'ips' => 'pkg',
|
15
|
-
'zypper' => 'zypper',
|
16
|
-
'smartos' => 'pkgin'
|
17
|
-
}.freeze
|
18
|
-
|
19
|
-
PROVIDERS = {
|
20
|
-
'aix' => 'aix',
|
21
|
-
'amazon' => 'yum',
|
22
|
-
'arch' => 'pacman',
|
23
|
-
'centos' => 'yum',
|
24
|
-
'debian' => 'apt',
|
25
|
-
'fedora' => 'yum',
|
26
|
-
'freebsd' => 'freebsd',
|
27
|
-
'gcel' => 'apt',
|
28
|
-
'gentoo' => 'portage',
|
29
|
-
'linaro' => 'apt',
|
30
|
-
'linuxmint' => 'apt',
|
31
|
-
'mac_os_x' => ['homebrew', 'macports'],
|
32
|
-
'mac_os_x_server' => 'macports',
|
33
|
-
'nexentacore' => 'solaris',
|
34
|
-
'omnios' => 'ips',
|
35
|
-
'openindiana' => 'ips',
|
36
|
-
'opensolaris' => 'ips',
|
37
|
-
'opensuse' => 'zypper',
|
38
|
-
'oracle' => 'yum',
|
39
|
-
'raspbian' => 'apt',
|
40
|
-
'redhat' => 'yum',
|
41
|
-
'scientific' => 'yum',
|
42
|
-
'smartos' => 'smartos',
|
43
|
-
'solaris2' => 'ips',
|
44
|
-
'suse' => 'zypper',
|
45
|
-
'ubuntu' => 'apt',
|
46
|
-
'xcp' => 'yum',
|
47
|
-
'xenserver' => 'yum'
|
48
|
-
}.freeze
|
49
|
-
|
50
|
-
def initialize(platform)
|
51
|
-
@platform = platform
|
52
|
-
end
|
53
|
-
|
54
|
-
def name
|
55
|
-
providers = Array(PROVIDERS[@platform.name])
|
56
|
-
return providers.first if providers.count < 2
|
57
|
-
|
58
|
-
providers.find do |provider|
|
59
|
-
which(COMMANDS[provider]) != nil
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
protected
|
64
|
-
|
65
|
-
# copied from Chef cookbook 'apt'
|
66
|
-
# source: apt/libraries/helpers.rb
|
67
|
-
def which(cmd)
|
68
|
-
paths = (
|
69
|
-
ENV['PATH'].split(::File::PATH_SEPARATOR) +
|
70
|
-
%w(/bin /usr/bin /sbin /usr/sbin /opt/local/bin)
|
71
|
-
)
|
72
|
-
|
73
|
-
paths.each do |path|
|
74
|
-
possible = File.join(path, cmd)
|
75
|
-
return possible if File.executable?(possible)
|
76
|
-
end
|
77
|
-
|
78
|
-
nil
|
79
|
-
end
|
80
|
-
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
require 'ohai'
|
2
|
-
|
3
|
-
module Depend
|
4
|
-
class HostDetection
|
5
|
-
class Platform
|
6
|
-
|
7
|
-
def initialize
|
8
|
-
@ohai = build_ohai
|
9
|
-
end
|
10
|
-
|
11
|
-
def name
|
12
|
-
ohai_hash[:platform]
|
13
|
-
end
|
14
|
-
|
15
|
-
def version
|
16
|
-
ohai_hash[:platform_version]
|
17
|
-
end
|
18
|
-
|
19
|
-
def ohai_hash
|
20
|
-
@ohai
|
21
|
-
end
|
22
|
-
|
23
|
-
protected
|
24
|
-
|
25
|
-
def build_ohai
|
26
|
-
ohai = Ohai::System.new
|
27
|
-
ohai.require_plugin 'os'
|
28
|
-
ohai.require_plugin 'platform'
|
29
|
-
ohai
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'rubygems/depend/host_detection/platform'
|
2
|
-
require 'rubygems/depend/host_detection/package_provider'
|
3
|
-
|
4
|
-
module Depend
|
5
|
-
class HostDetection
|
6
|
-
|
7
|
-
def initialize(opts={})
|
8
|
-
@detect_platform = opts.fetch(:detect_platform) { Platform.new }
|
9
|
-
@detect_package_provider = opts.fetch(:detect_package_provider) {
|
10
|
-
PackageProvider.new(@detect_platform) }
|
11
|
-
end
|
12
|
-
|
13
|
-
def platform
|
14
|
-
@detect_platform.name
|
15
|
-
end
|
16
|
-
|
17
|
-
def platform_version
|
18
|
-
@detect_platform.version
|
19
|
-
end
|
20
|
-
|
21
|
-
def package_provider
|
22
|
-
@detect_package_provider.name
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'rubygems/depend/installer/base_installer'
|
2
|
-
require 'rubygems/depend/installer/yum_installer'
|
3
|
-
require 'rubygems/depend/installer/homebrew_installer'
|
4
|
-
require 'rubygems/depend/installer/apt_installer'
|
5
|
-
|
6
|
-
module Depend
|
7
|
-
class Installer
|
8
|
-
|
9
|
-
package_installers = {
|
10
|
-
'yum' => YumInstaller,
|
11
|
-
'homebrew' => HomebrewInstaller,
|
12
|
-
'apt' => AptInstaller
|
13
|
-
}.freeze
|
14
|
-
|
15
|
-
def self.installer(package_provider)
|
16
|
-
package_installers[package_provider]
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
end
|
data/lib/rubygems/depend.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
module Gem
|
2
|
-
pre_install do |gem_installer|
|
3
|
-
puts "install some gem append depend module"
|
4
|
-
unless gem_installer.spec.extensions.empty?
|
5
|
-
gem_installer.extend Gem::Installer::Depend
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
|
10
|
-
class Installer
|
11
|
-
module Depend
|
12
|
-
require 'rubygems/user_interaction'
|
13
|
-
require 'rubygems/depend/host_detection'
|
14
|
-
require 'rubygems/depend/installer'
|
15
|
-
|
16
|
-
include Gem::UserInteraction
|
17
|
-
|
18
|
-
def build_extensions
|
19
|
-
super
|
20
|
-
puts "in build extension"
|
21
|
-
rescue ExtensionBuildError => e
|
22
|
-
# Install platform dependencies and try the build again.
|
23
|
-
if install_platform_dependencies
|
24
|
-
super
|
25
|
-
else
|
26
|
-
raise
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def install_platform_dependencies
|
31
|
-
puts "install dependency for gem"
|
32
|
-
platform = Depend::HostDetection.new.platform
|
33
|
-
package_provider = Depend::HostDetection.new.package_provider
|
34
|
-
if installer = Depend::Installer.installer_for(package_provider)
|
35
|
-
missing_deps = Depend::Dependency.dependencies_for(platform, spec.name)
|
36
|
-
|
37
|
-
unless missing_deps.empty?
|
38
|
-
say "Trying to install native dependencies for Gem '#{spec.name}': #{missing_deps.join ' '}"
|
39
|
-
unless installer.install(spec.name, missing_deps)
|
40
|
-
raise Gem::InstallError, "Failed to install native dependencies for '#{spec.name}'."
|
41
|
-
end
|
42
|
-
end
|
43
|
-
return true
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|