fpm 0.1.5 → 0.1.6
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.
- data/bin/fpm +0 -1
- data/lib/fpm/builder.rb +11 -4
- data/lib/fpm/source.rb +3 -2
- data/lib/fpm/source/gem.rb +9 -5
- data/templates/deb.erb +11 -1
- metadata +3 -3
data/bin/fpm
CHANGED
data/lib/fpm/builder.rb
CHANGED
@@ -40,6 +40,7 @@ class FPM::Builder
|
|
40
40
|
@paths = paths
|
41
41
|
|
42
42
|
@output = settings.package_path
|
43
|
+
@recurse_dependencies = settings.recurse_dependencies
|
43
44
|
end # def initialize
|
44
45
|
|
45
46
|
def tar_path
|
@@ -48,7 +49,7 @@ class FPM::Builder
|
|
48
49
|
|
49
50
|
# Assemble the package
|
50
51
|
def assemble!
|
51
|
-
output.gsub!(/VERSION/, "#{@source[:version]}-#{@
|
52
|
+
output.gsub!(/VERSION/, "#{@source[:version]}-#{@package.iteration}")
|
52
53
|
output.gsub!(/ARCH/, @package.architecture)
|
53
54
|
|
54
55
|
File.delete(output) if File.exists?(output) && !File.directory?(output)
|
@@ -70,15 +71,17 @@ class FPM::Builder
|
|
70
71
|
end
|
71
72
|
|
72
73
|
cleanup!
|
74
|
+
|
73
75
|
end # def assemble!
|
74
76
|
|
75
|
-
private
|
77
|
+
private
|
76
78
|
def builddir
|
77
79
|
@builddir ||= File.expand_path(
|
78
80
|
"#{Dir.pwd}/build-#{@package.type}-#{File.basename(output)}"
|
79
81
|
)
|
80
82
|
end
|
81
83
|
|
84
|
+
private
|
82
85
|
def make_builddir!
|
83
86
|
FileUtils.rm_rf builddir
|
84
87
|
garbage << builddir
|
@@ -86,6 +89,7 @@ private
|
|
86
89
|
end
|
87
90
|
|
88
91
|
# TODO: [Jay] make this better.
|
92
|
+
private
|
89
93
|
def package_class_for(type)
|
90
94
|
type = FPM::Target::constants.find { |c| c.downcase == type }
|
91
95
|
if !type
|
@@ -96,6 +100,7 @@ private
|
|
96
100
|
end
|
97
101
|
|
98
102
|
# TODO: [Jay] make this better.
|
103
|
+
private
|
99
104
|
def source_class_for(type)
|
100
105
|
type = FPM::Source::constants.find { |c| c.downcase == type }
|
101
106
|
if !type
|
@@ -105,29 +110,31 @@ private
|
|
105
110
|
return FPM::Source.const_get(type)
|
106
111
|
end
|
107
112
|
|
113
|
+
private
|
108
114
|
def cleanup!
|
109
115
|
return [] if garbage.empty?
|
110
116
|
FileUtils.rm_rf(garbage) && garbage.clear
|
111
117
|
end
|
112
118
|
|
119
|
+
private
|
113
120
|
def generate_specfile
|
114
121
|
File.open(@package.specfile(builddir), "w") do |f|
|
115
122
|
f.puts @package.render_spec
|
116
123
|
end
|
117
124
|
end
|
118
125
|
|
126
|
+
private
|
119
127
|
def generate_md5sums
|
120
128
|
md5sums = checksum(paths)
|
121
129
|
File.open("#{builddir}/md5sums", "w") { |f| f.puts md5sums }
|
122
130
|
md5sums
|
123
131
|
end
|
124
132
|
|
133
|
+
private
|
125
134
|
def checksum(paths)
|
126
135
|
md5sums = []
|
127
136
|
paths.each do |path|
|
128
137
|
md5sums += %x{find #{path} -type f -print0 | xargs -0 md5sum}.split("\n")
|
129
138
|
end
|
130
139
|
end # def checksum
|
131
|
-
|
132
|
-
|
133
140
|
end
|
data/lib/fpm/source.rb
CHANGED
@@ -28,7 +28,7 @@ class FPM::Source
|
|
28
28
|
@paths = paths
|
29
29
|
@root = root
|
30
30
|
|
31
|
-
get_source
|
31
|
+
get_source(params)
|
32
32
|
get_metadata
|
33
33
|
|
34
34
|
# override the inferred data with the passed-in data
|
@@ -46,9 +46,10 @@ class FPM::Source
|
|
46
46
|
|
47
47
|
# This method should be overridden by package sources that need to do any
|
48
48
|
# kind of fetching.
|
49
|
-
def get_source
|
49
|
+
def get_source(params)
|
50
50
|
# noop by default
|
51
51
|
end # def get_source
|
52
|
+
|
52
53
|
def make_tarball!(tar_path)
|
53
54
|
raise NoMethodError,
|
54
55
|
"Please subclass FPM::Source and define make_tarball!(tar_path)"
|
data/lib/fpm/source/gem.rb
CHANGED
@@ -5,19 +5,22 @@ require "rubygems"
|
|
5
5
|
require "fileutils"
|
6
6
|
|
7
7
|
class FPM::Source::Gem < FPM::Source
|
8
|
-
def get_source
|
8
|
+
def get_source(params)
|
9
9
|
gem = @paths.first
|
10
10
|
looks_like_name_re = /^[A-Za-z0-9_-]+$/
|
11
11
|
if !File.exists?(gem)
|
12
12
|
if gem =~ looks_like_name_re
|
13
|
-
|
14
|
-
download(gem)
|
13
|
+
download(gem, params[:version])
|
15
14
|
else
|
16
15
|
raise "Path '#{gem}' is not a file and does not appear to be the name of a rubygem."
|
17
16
|
end
|
18
17
|
end
|
19
18
|
end # def get_source
|
20
19
|
|
20
|
+
def can_recurse_dependencies
|
21
|
+
true
|
22
|
+
end
|
23
|
+
|
21
24
|
def download(gem_name, version=nil)
|
22
25
|
# This code mostly mutated from rubygem's fetch_command.rb
|
23
26
|
# Code use permissible by rubygems's "GPL or these conditions below"
|
@@ -27,11 +30,12 @@ class FPM::Source::Gem < FPM::Source
|
|
27
30
|
dep = ::Gem::Dependency.new gem_name, version
|
28
31
|
# How to handle prerelease? Some extra magic options?
|
29
32
|
#dep.prerelease = options[:prerelease]
|
30
|
-
|
33
|
+
|
31
34
|
specs_and_sources, errors =
|
32
35
|
::Gem::SpecFetcher.fetcher.fetch_with_errors(dep, false, true, false)
|
33
36
|
spec, source_uri = specs_and_sources.sort_by { |s,| s.version }.last
|
34
37
|
|
38
|
+
|
35
39
|
if spec.nil? then
|
36
40
|
raise "Invalid gem? Name: #{gem_name}, Version: #{version}, Errors: #{errors}"
|
37
41
|
end
|
@@ -75,7 +79,7 @@ class FPM::Source::Gem < FPM::Source
|
|
75
79
|
installdir = "#{tmpdir}/#{::Gem::dir}"
|
76
80
|
::FileUtils.mkdir_p(installdir)
|
77
81
|
args = ["gem", "install", "--quiet", "--no-ri", "--no-rdoc",
|
78
|
-
"--install-dir", installdir, @paths.first]
|
82
|
+
"--install-dir", installdir, "--ignore-dependencies", @paths.first]
|
79
83
|
system(*args)
|
80
84
|
tar(tar_path, ".", tmpdir)
|
81
85
|
|
data/templates/deb.erb
CHANGED
@@ -3,7 +3,17 @@ Version: <%= version %>-<%= iteration %>
|
|
3
3
|
Architecture: <%= architecture %>
|
4
4
|
Maintainer: <%= maintainer or "<unknown>" %>
|
5
5
|
<% if dependencies.size > 0 %>
|
6
|
-
|
6
|
+
<%
|
7
|
+
properdeps = dependencies.collect do |d|
|
8
|
+
if d =~ /\(/
|
9
|
+
d
|
10
|
+
else
|
11
|
+
# Convert strings 'foo >= bar' to 'foo (>= bar)'
|
12
|
+
da = d.split(/ +/)
|
13
|
+
"#{da[0]} (#{da[1]} #{da[2]})"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
%>Depends: <%= properdeps.join(", ") %>
|
7
17
|
<% end %>
|
8
18
|
Standards-Version: 3.9.1
|
9
19
|
Section: <%= category or "unknown" %>
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fpm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 6
|
10
|
+
version: 0.1.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jordan Sissel
|