gem-dependencies 0.1.9 → 0.2.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 +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�
|