gem-dependencies 0.1.9 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/README.md +5 -10
- data/gem-dependencies.gemspec +1 -1
- data/lib/rubygems/gem_dependencies.rb +28 -9
- metadata +2 -2
- metadata.gz.sig +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 82454adc88a4b3b11ab715a20615a44c4e4e581b
|
4
|
+
data.tar.gz: b99d0dcc685fe2c51b123da8ec2a223f6e2f4a20
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ddb9b340194a31bf3efc8ab19839970e7b2faf569b83887b156aa91f0a32e54ba07d233a1ce02cfc487cfd90ab7bc31077f9e314c2d9c64741eaeb93a6fe5bcc
|
7
|
+
data.tar.gz: ef5c81bb07d0433acb9152816ce34de3a3d5089f639ac82df797f8b8a8638384b8716e9c3742259b2ec61eaf1a185b482c704457c86beb65f08a4a309c78da3b
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/README.md
CHANGED
@@ -25,17 +25,12 @@ gems:
|
|
25
25
|
"*":
|
26
26
|
command: sudo apk --update add ${packages}
|
27
27
|
bcrypt:
|
28
|
-
"~> 2.0, <= 3.
|
28
|
+
"~> 2.0, <= 3.3":
|
29
29
|
- bcrypt-2.1
|
30
|
-
-
|
31
|
-
- libyagni-1.0c
|
32
|
-
"~> 3.1.5": "bcrypt-3.1.10.tar.gz tree"
|
30
|
+
- "*"
|
33
31
|
nokogiri:
|
34
|
-
"~> 2
|
35
|
-
|
36
|
-
- libxml2-3.4
|
37
|
-
- libyagni-1.0c
|
38
|
-
"~> 3.1.5": "s3://one:two@s3.amazon.com/three/bcrypt-3.1.10.tar.gz tree"
|
32
|
+
"~> 1.6.2, < 1.8": "* libxml2-dev libxslt-dev"
|
33
|
+
"1.2.8": "s3://one:two@s3.amazon.com/three/* tree"
|
39
34
|
```
|
40
35
|
|
41
36
|
After determining the runtime dependencies and creating a compiled extensions tarball, edit the dependency index to add a key with the name of the new gem and sub-keys to indicate the version requirements. The values of these sub-key are either an array of package dependencies and extension tarballs or a space-delimited string of the same. All items ending in ```.tar.gz``` are considered to be extension tarballs and everything else is considered to be a package dependency. Extension tarballs can also be given as a file system path or an http, https, git, or s3 url.
|
@@ -59,7 +54,7 @@ The dependency index will be downloaded and searched for the requested gem and v
|
|
59
54
|
Note that a version requirement can also be specified in the ```gem install``` command. For example, the following are all valid:
|
60
55
|
|
61
56
|
```shell
|
62
|
-
bcrypt, bcrypt:3.1.4, "bcrypt:~>3.1.8", "bcrypt > 3.1.4,
|
57
|
+
bcrypt, bcrypt:3.1.4, "bcrypt:~>3.1.8", "bcrypt > 3.1.4, ~> 3.2, < 3.8"
|
63
58
|
```
|
64
59
|
|
65
60
|
Using this approach, a runtime system can quickly and efficiently install dependencies and extensions without the need to compile them locally.
|
data/gem-dependencies.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "gem-dependencies"
|
5
|
-
s.version = "0.
|
5
|
+
s.version = "0.2.0"
|
6
6
|
s.summary = "RubyGems plugin to simplify installing binary gems on runtime systems."
|
7
7
|
s.description = "This gem makes it easy to install binary gems on machines without a compiler."
|
8
8
|
s.homepage = "https://github.com/shreeve/gem-dependencies"
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# gem_dependencies.rb: Simplifies installing binary gems on runtime systems
|
3
3
|
#
|
4
4
|
# Author: Steve Shreeve <steve.shreeve@gmail.com>
|
5
|
-
# Date: June
|
5
|
+
# Date: June 12, 2015
|
6
6
|
# Legal: MIT License
|
7
7
|
# =============================================================================
|
8
8
|
|
@@ -37,26 +37,45 @@ module Gem
|
|
37
37
|
true
|
38
38
|
end
|
39
39
|
|
40
|
-
#
|
40
|
+
# return a gem's packages and extensions
|
41
41
|
def find_dependencies(env)
|
42
42
|
require 'rubygems/remote_fetcher'
|
43
43
|
@@deps = YAML.load(fetch(env))['gems'] unless defined?(@@deps)
|
44
|
+
@@deps.key?[spec.name] or return
|
44
45
|
|
46
|
+
# find dependencies
|
45
47
|
case deps = @@deps[spec.name]
|
46
|
-
when nil #
|
47
|
-
|
48
|
-
path << "?raw=true" if path.start_with?("https://github.com/")
|
49
|
-
deps = [path]
|
48
|
+
when nil, "*" # for nil or '*', use the default extension name
|
49
|
+
deps = ["*"]
|
50
50
|
when String # string of space-delimited dependencies and extensions
|
51
51
|
when Array # array of dependencies and extensions
|
52
52
|
when Hash # hash of dependencies and extensions, indexed by version requirements
|
53
|
-
reqs, deps = deps.find do |reqs, info|
|
53
|
+
reqs, deps = deps.find do |reqs, info| # deps is an array or space-delimited string
|
54
54
|
Gem::Requirement.new(reqs.split(',')).satisfied_by?(spec.version)
|
55
55
|
end
|
56
|
+
deps or return #!# what about nil here? should it be the same as non-hash version?
|
56
57
|
end
|
57
|
-
deps or return
|
58
58
|
deps = deps.strip.split(/\s+/) if deps.is_a?(String)
|
59
|
-
deps.compact.uniq
|
59
|
+
deps = deps.compact.uniq
|
60
|
+
|
61
|
+
# helpful variables
|
62
|
+
bcwd = Dir.pwd
|
63
|
+
benv = File.dirname(env.split(/[?;#]/,2).first)
|
64
|
+
name = "#{spec.full_name}.tar.gz"
|
65
|
+
|
66
|
+
# return packages and extensions
|
67
|
+
exts, pkgs = deps.partition {|item| item.include?("*") || item =~ REGEXP_SCHEMA || item.include?(".tar.gz")}
|
68
|
+
exts.map! do |item|
|
69
|
+
case item
|
70
|
+
when "*" then item = File.join(benv, name) # use complete default tarball name
|
71
|
+
when /\A\*/ then item[0,1] = benv # path relative to env variable
|
72
|
+
when /\A[^\/]/ then item[0,0] = bcwd + "/" # path relative to current directory
|
73
|
+
end
|
74
|
+
item.gsub!("*", name) # swap inline wildcards with default tarball name
|
75
|
+
item << "?raw=true" if item.start_with?("https://github.com/")
|
76
|
+
item
|
77
|
+
end
|
78
|
+
[pkgs, exts]
|
60
79
|
end
|
61
80
|
|
62
81
|
def install_os_packages(*args)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gem-dependencies
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steve Shreeve
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
30
30
|
4PkbTeqnzZJmSZjUBwvnQFNhXY08hPUs7aASHu9deACBbOBY+Hg6tiSOdfw50uYS
|
31
31
|
ksjokeQosImFuxgjMrlyoRcpbZmyfQ33yImqtLH6FMWF3hpoxJq9wPk=
|
32
32
|
-----END CERTIFICATE-----
|
33
|
-
date: 2015-06-
|
33
|
+
date: 2015-06-13 00:00:00.000000000 Z
|
34
34
|
dependencies: []
|
35
35
|
description: This gem makes it easy to install binary gems on machines without a compiler.
|
36
36
|
email: steve.shreeve@gmail.com
|
metadata.gz.sig
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
7
|
1
|
+
$�#��BT3������T�*����2�7�����v'z��}�L�?�ޥm�����H�=N��uk`�o���~8���}z�u��"
|
2
|
+
��6�2u�ABv�^#[X�N�Z8 #���8�
|