gem2pkg 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/README.md +4 -1
  2. data/gem2pkg.gemspec +1 -1
  3. data/lib/gem2pkg.rb +31 -27
  4. metadata +3 -3
data/README.md CHANGED
@@ -6,7 +6,9 @@ My primary motivation for creating this was to bundle the 'chef' gem and its dep
6
6
 
7
7
  ## Requirements
8
8
 
9
- This gem requires rubygems 1.8.11 to be installed. While it will probably work with older versions of rubygems, and hasn't been tested with them yet, so the requirement is set high for now
9
+ This gem requires rubygems 1.3.6 to be installed. While it will probably work with older versions of rubygems, and hasn't been tested with them yet, so the requirement is set high for now
10
+
11
+ If rvm is installed, use gem2pkg with the system ruby (rvm use system). Since we're building packages to be installed on OSX systems that do not not have RVM installed, we want to be safe and use the same environment to build the package.
10
12
 
11
13
  ## Usage
12
14
 
@@ -31,3 +33,4 @@ The package will be outputted in the current folder, named chef-0.10.4.pkg (if t
31
33
  ## Known Issues
32
34
 
33
35
  * Does not build flat packages
36
+ * Only tested so far on OSX Lion
data/gem2pkg.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'gem2pkg'
3
- s.version = '0.1.2'
3
+ s.version = '0.1.3'
4
4
  s.date = '2011-11-21'
5
5
  s.summary = "OSX packages from Ruby Gems!"
6
6
  s.description = "Creates Mac OSX installer packages for 10.5 and up from ruby gems"
data/lib/gem2pkg.rb CHANGED
@@ -7,6 +7,35 @@ require 'erb'
7
7
  require 'tmpdir'
8
8
 
9
9
  class Gem2Pkg
10
+ def gather_dependencies(specs)
11
+ dependency_list = Gem::DependencyList.new
12
+ dependency_list.add(*specs)
13
+
14
+ to_do = specs.dup
15
+ seen = {}
16
+
17
+ until to_do.empty? do
18
+ spec = to_do.shift
19
+ next if spec.nil? or seen[spec.name]
20
+ seen[spec.name] = true
21
+
22
+ deps = spec.runtime_dependencies
23
+ deps.each do |dep|
24
+ result = dep.to_spec
25
+ if result == nil
26
+ puts "Could not find local gem to satisfy dependency #{dep.name} (#{dep.requirement})"
27
+ next
28
+ end
29
+ next if seen[result.name]
30
+ to_do.push(result)
31
+ dependency_list.add result
32
+ end
33
+ end
34
+
35
+ dependency_list.dependency_order.reverse
36
+ end
37
+
38
+
10
39
  def build(gemname)
11
40
  if gemname == nil
12
41
  puts "Please specify the name of the gem to package."
@@ -41,32 +70,6 @@ class Gem2Pkg
41
70
 
42
71
  puts "Building dependency list from dependency tree..."
43
72
 
44
- def gather_dependencies(specs)
45
- dependency_list = Gem::DependencyList.new
46
- dependency_list.add(*specs)
47
-
48
- to_do = specs.dup
49
- seen = {}
50
-
51
- until to_do.empty? do
52
- spec = to_do.shift
53
- next if spec.nil? or seen[spec.name]
54
- seen[spec.name] = true
55
-
56
- deps = spec.runtime_dependencies
57
- deps.each do |dep|
58
- result = dep.to_spec
59
- if result == nil
60
- puts "Could not find local gem to satisfy dependency #{dep.name} (#{dep.requirement})"
61
- end
62
- next if seen[result.name]
63
- dependency_list.add result
64
- end
65
- end
66
-
67
- dependency_list.dependency_order.reverse
68
- end
69
-
70
73
  puts "We will be bundling up the following gems into our installer:"
71
74
  dependencies = gather_dependencies([gemspec])
72
75
  dependencies.each do |dependency|
@@ -91,7 +94,8 @@ class Gem2Pkg
91
94
  `mkbom #{payload_staging_dir} #{pkg_name}.pkg/Contents/Archive.bom`
92
95
 
93
96
  puts "Archiving payload..."
94
- `pax -wz -x cpio \"#{payload_staging_dir}\" > #{pkg_name}.pkg/Contents/Archive.pax.gz`
97
+ `cd #{payload_staging_dir} && pax -wz -x cpio . > Archive.pax.gz`
98
+ `cp #{payload_staging_dir}/Archive.pax.gz #{pkg_name}.pkg/Contents/Archive.pax.gz`
95
99
 
96
100
  installed_size = (`/usr/bin/du -k -s #{payload_staging_dir}`.split(' ')[0]).to_i * 1024
97
101
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem2pkg
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 2
10
- version: 0.1.2
9
+ - 3
10
+ version: 0.1.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Justin Schumacher