buildizer 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/.gitignore +1 -0
- data/Gemfile.lock +4 -4
- data/lib/buildizer.rb +5 -0
- data/lib/buildizer/builder/base.rb +112 -69
- data/lib/buildizer/builder/fpm.rb +27 -50
- data/lib/buildizer/builder/native.rb +3 -4
- data/lib/buildizer/builder/patch.rb +40 -0
- data/lib/buildizer/cli.rb +6 -0
- data/lib/buildizer/docker.rb +101 -40
- data/lib/buildizer/image/base.rb +12 -0
- data/lib/buildizer/image/centos.rb +48 -16
- data/lib/buildizer/image/ubuntu.rb +31 -0
- data/lib/buildizer/image/ubuntu1604.rb +13 -0
- data/lib/buildizer/packager.rb +39 -24
- data/lib/buildizer/refine.rb +8 -2
- data/lib/buildizer/target/base.rb +77 -5
- data/lib/buildizer/target/fpm.rb +52 -5
- data/lib/buildizer/target/native.rb +9 -0
- data/lib/buildizer/target/package_name_mod.rb +17 -0
- data/lib/buildizer/target/patch.rb +33 -0
- data/lib/buildizer/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NTgxMGMxNTEzOTg5MDhjMmExZGUwOWM3M2JjMmM0NjdhYjNkODBiOA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MjRhZjU1NzlmOGM3ZjMyMzEzMDk5NDY5ZmQ0ZGJhZGY1ZGI5YjdhMQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
Nzk3ZjIyMzVlMmNhOTczMDk5YjQ3NjA3NTIzNjVhZGE4MTY4NjQzMWY4ZjQ5
|
10
|
+
NDc2OWIxZmYyYTE3NzgxMTE4N2ZkYjNmZDQxNzVkMzFjNzc1MWNjMWNmODI0
|
11
|
+
ZmI2MzZjYzhiYzY4MmFkMjExMTM3MDJkMDA3M2MzYTNmYmU3ZDk=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YTljMjYyZmJiZDdmY2E3MDRhNTVjNjY1ZTJmMWQ3NjUyYWU5YTAxNTU4OTE3
|
14
|
+
YjRlOTJhOTA4YTc5NjExZjk0ZWQxOTE3ZmIzMThhYjU2YTc2YmQ4OGRkMmVm
|
15
|
+
OTNlNWFmZDNmMDBmYWQ2OTE2YWE3ZWQwZGRjYzhjMDQyNjJkNDg=
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
GIT
|
2
2
|
remote: https://github.com/flant/shellfold.git
|
3
|
-
revision:
|
3
|
+
revision: 7429a46664b45ab246ba7a88eac24f614d1945a7
|
4
4
|
specs:
|
5
5
|
shellfold (0.0.3)
|
6
6
|
mixlib-shellout (>= 2.2.6, < 3.0)
|
@@ -8,7 +8,7 @@ GIT
|
|
8
8
|
PATH
|
9
9
|
remote: .
|
10
10
|
specs:
|
11
|
-
buildizer (0.0.
|
11
|
+
buildizer (0.0.7)
|
12
12
|
net_status (>= 0.0.1, < 1.0)
|
13
13
|
package_cloud (>= 0.2, < 1.0)
|
14
14
|
shellfold (>= 0.0.1, < 1.0)
|
@@ -75,7 +75,7 @@ GEM
|
|
75
75
|
rspec-core (~> 3.4.0)
|
76
76
|
rspec-expectations (~> 3.4.0)
|
77
77
|
rspec-mocks (~> 3.4.0)
|
78
|
-
rspec-core (3.4.
|
78
|
+
rspec-core (3.4.4)
|
79
79
|
rspec-support (~> 3.4.0)
|
80
80
|
rspec-expectations (3.4.0)
|
81
81
|
diff-lcs (>= 1.2.0, < 2.0)
|
@@ -97,7 +97,7 @@ GEM
|
|
97
97
|
typhoeus (~> 0.6, >= 0.6.8)
|
98
98
|
typhoeus (0.8.0)
|
99
99
|
ethon (>= 0.8.0)
|
100
|
-
websocket (1.2.
|
100
|
+
websocket (1.2.3)
|
101
101
|
|
102
102
|
PLATFORMS
|
103
103
|
ruby
|
data/lib/buildizer.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'thor'
|
2
2
|
require 'yaml'
|
3
|
+
require 'json'
|
3
4
|
require 'net_status'
|
4
5
|
require 'pathname'
|
5
6
|
require 'shellfold'
|
@@ -11,13 +12,16 @@ require 'buildizer/docker'
|
|
11
12
|
require 'buildizer/cli'
|
12
13
|
require 'buildizer/packager'
|
13
14
|
require 'buildizer/target'
|
15
|
+
require 'buildizer/target/package_name_mod'
|
14
16
|
require 'buildizer/target/base'
|
15
17
|
require 'buildizer/target/fpm'
|
16
18
|
require 'buildizer/target/native'
|
19
|
+
require 'buildizer/target/patch'
|
17
20
|
require 'buildizer/builder'
|
18
21
|
require 'buildizer/builder/base'
|
19
22
|
require 'buildizer/builder/fpm'
|
20
23
|
require 'buildizer/builder/native'
|
24
|
+
require 'buildizer/builder/patch'
|
21
25
|
require 'buildizer/image'
|
22
26
|
require 'buildizer/image/base'
|
23
27
|
require 'buildizer/image/centos'
|
@@ -26,3 +30,4 @@ require 'buildizer/image/centos7'
|
|
26
30
|
require 'buildizer/image/ubuntu'
|
27
31
|
require 'buildizer/image/ubuntu1204'
|
28
32
|
require 'buildizer/image/ubuntu1404'
|
33
|
+
require 'buildizer/image/ubuntu1604'
|
@@ -1,23 +1,19 @@
|
|
1
1
|
module Buildizer
|
2
2
|
module Builder
|
3
3
|
class Base
|
4
|
+
using Refine
|
5
|
+
|
4
6
|
attr_reader :packager
|
5
|
-
attr_reader :
|
7
|
+
attr_reader :work_path
|
6
8
|
attr_reader :docker
|
7
9
|
|
8
10
|
def initialize(packager)
|
9
11
|
@packager = packager
|
10
12
|
|
11
|
-
@
|
12
|
-
|
13
|
-
build_path.mkdir rescue nil
|
13
|
+
@work_path = packager.work_path.join('builder').expand_path
|
14
|
+
work_path.mkpath
|
14
15
|
|
15
|
-
@docker = Docker.new(self,
|
16
|
-
username: packager.docker_username,
|
17
|
-
password: packager.docker_password,
|
18
|
-
email: packager.docker_email,
|
19
|
-
server: packager.docker_server,
|
20
|
-
)
|
16
|
+
@docker = Docker.new(self, cache: packager.docker_cache)
|
21
17
|
end
|
22
18
|
|
23
19
|
def build_type
|
@@ -28,24 +24,28 @@ module Buildizer
|
|
28
24
|
raise
|
29
25
|
end
|
30
26
|
|
31
|
-
def prepare_image_instructions(target)
|
32
|
-
end
|
33
|
-
|
34
27
|
def build_instructions(target)
|
35
28
|
end
|
36
29
|
|
37
|
-
def build_dep
|
30
|
+
def build_dep(target)
|
38
31
|
end
|
39
32
|
|
40
33
|
def new_target(target_name)
|
41
|
-
os_name, os_version,
|
34
|
+
os_name, os_version, target_tag = target_name.split('/', 3)
|
42
35
|
|
43
36
|
image = docker.new_image(os_name, os_version)
|
44
37
|
|
45
|
-
params =
|
46
|
-
|
47
|
-
|
48
|
-
|
38
|
+
params = initial_target_params
|
39
|
+
packager.buildizer_conf.each do |match_key, match_params|
|
40
|
+
match_os_name, match_os_version, match_target_tag = match_key.to_s.split('/', 3)
|
41
|
+
if image.os_name.match_glob?(match_os_name) and
|
42
|
+
( match_os_version.nil? or image.os_version.match_glob?(match_os_version) ) and
|
43
|
+
( match_target_tag.nil? or (not target_tag.nil? and
|
44
|
+
target_tag.match_glob?(match_target_tag)) )
|
45
|
+
params = merge_params(into: params, params: match_params)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
49
|
check_params! params
|
50
50
|
|
51
51
|
target_klass.new(self, image, name: target_name, **params).tap do |target|
|
@@ -65,6 +65,7 @@ module Buildizer
|
|
65
65
|
params[:prepare] = packager.prepare
|
66
66
|
params[:build_dep] = packager.build_dep
|
67
67
|
params[:before_build] = packager.before_build
|
68
|
+
params[:maintainer] = packager.maintainer
|
68
69
|
end
|
69
70
|
end
|
70
71
|
|
@@ -77,96 +78,138 @@ module Buildizer
|
|
77
78
|
|
78
79
|
def do_merge_params(into, params)
|
79
80
|
{}.tap do |res|
|
80
|
-
res[:package_name] =
|
81
|
-
res[:package_version] =
|
81
|
+
res[:package_name] = params['package_name'] || into[:package_name]
|
82
|
+
res[:package_version] = params['package_version'] || into[:package_version]
|
82
83
|
res[:package_cloud] = into[:package_cloud]
|
83
84
|
res[:prepare] = into[:prepare] + Array(params['prepare'])
|
84
85
|
res[:build_dep] = into[:build_dep] | Array(params['build_dep']).to_set
|
85
86
|
res[:before_build] = into[:before_build] + Array(params['before_build'])
|
87
|
+
res[:maintainer] = params['maintainer'] || into[:maintainer]
|
86
88
|
end
|
87
89
|
end
|
88
90
|
|
89
|
-
def
|
90
|
-
|
91
|
+
def check_params!(params)
|
92
|
+
_required_params! :package_name, params
|
91
93
|
end
|
92
94
|
|
93
|
-
def
|
94
|
-
|
95
|
-
|
95
|
+
def _required_params!(required_params, params)
|
96
|
+
Array(required_params).each do |param|
|
97
|
+
unless params[param] and not params[param].to_s.empty?
|
98
|
+
raise Error, error: :input_error, message: "#{param} is not defined"
|
99
|
+
end
|
100
|
+
end
|
96
101
|
end
|
97
102
|
|
98
|
-
def
|
99
|
-
|
100
|
-
merge_params(into: into,
|
101
|
-
params: {'package_name' => target_package_name,
|
102
|
-
'package_version' => target_package_version}, &blk)
|
103
|
+
def build_jobs
|
104
|
+
File.open('/proc/cpuinfo').readlines.grep(/processor/).size
|
103
105
|
end
|
104
106
|
|
105
|
-
def
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
107
|
+
def verify
|
108
|
+
targets.tap do |res|
|
109
|
+
unless res.any?
|
110
|
+
raise Error, error: :input_error, message: "target is not defined"
|
111
|
+
end
|
110
112
|
end
|
111
113
|
end
|
112
114
|
|
113
115
|
def prepare
|
114
|
-
|
116
|
+
docker.with_cache do
|
117
|
+
packager.before_prepare
|
118
|
+
.each {|cmd| packager.command! cmd, desc: "Before prepare command: #{cmd}"}
|
115
119
|
|
116
|
-
docker.login!
|
117
|
-
|
118
|
-
begin
|
119
|
-
packager.before_prepare.each {|cmd| packager.command! cmd, desc: "Before prepare command: #{cmd}"}
|
120
120
|
targets.each {|target| prepare_target_image(target)}
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
end
|
121
|
+
|
122
|
+
packager.after_prepare
|
123
|
+
.each {|cmd| packager.command! cmd, desc: "After prepare command: #{cmd}"}
|
124
|
+
end # with_cache
|
125
125
|
end
|
126
126
|
|
127
127
|
def prepare_target_image(target)
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
target.image.instruction(:RUN, "bash -lec \"#{cmd}\"")
|
132
|
-
end
|
133
|
-
target.image.build_dep(Array(build_dep).to_set + target.build_dep)
|
134
|
-
docker.build_image! target.image
|
128
|
+
target.prepare.each {|cmd| target.image.instruction(:RUN, "bash -lec \"#{cmd}\"")}
|
129
|
+
target.image.build_dep(Array(build_dep(target)).to_set + target.build_dep)
|
130
|
+
docker.build_image! target
|
135
131
|
end
|
136
132
|
|
137
133
|
def build
|
138
|
-
return unless packager.enabled?
|
139
134
|
targets.each {|target| build_target(target)}
|
140
135
|
end
|
141
136
|
|
142
|
-
def
|
143
|
-
docker.
|
137
|
+
def prepare_package_source_instructions(target)
|
138
|
+
["cp -r #{docker.container_package_mount_path} #{target.container_package_path}",
|
139
|
+
"rm -rf #{target.container_package_path.join('.git')}",
|
140
|
+
"cd #{target.container_package_path.dirname}",
|
141
|
+
["tar -zcvf #{target.container_package_archive_path} ",
|
142
|
+
"#{target.container_package_path.basename}"].join,
|
143
|
+
"ln -fs #{target.container_package_path} #{docker.container_package_path}",
|
144
|
+
"ln -fs #{target.container_package_archive_path} #{docker.container_package_archive_path}"]
|
145
|
+
end
|
144
146
|
|
147
|
+
def build_target(target)
|
145
148
|
cmd = [
|
146
|
-
|
149
|
+
*Array(prepare_package_source_instructions(target)),
|
150
|
+
"rm -rf #{docker.container_build_path.join('*')}",
|
151
|
+
"cd #{docker.container_package_path}",
|
147
152
|
*target.before_build,
|
148
153
|
*Array(build_instructions(target)),
|
149
154
|
]
|
150
155
|
|
151
|
-
docker.
|
156
|
+
docker.run_in_image!(target: target, cmd: cmd,
|
157
|
+
desc: "Run build in docker image '#{target.image.name}'")
|
152
158
|
end
|
153
159
|
|
154
160
|
def deploy
|
155
|
-
|
156
|
-
|
161
|
+
if packager.package_version_tag_required_for_deploy? and
|
162
|
+
not packager.package_version_tag
|
163
|
+
puts "package_version_tag (env TRAVIS_TAG or CI_BUILD_TAG) required: ignoring deploy"
|
164
|
+
return
|
165
|
+
elsif packager.package_cloud.empty?
|
166
|
+
warn "No package cloud settings " +
|
167
|
+
"(PACKAGECLOUD, PACKAGECLOUD_TOKEN, PACKAGECLOUD_TOKEN_<ORG>) [WARN]"
|
168
|
+
return
|
169
|
+
end
|
170
|
+
|
171
|
+
packager.package_cloud_org.each do |org, token|
|
172
|
+
unless token
|
173
|
+
warn "No packagecloud token defined for org '#{org}' " +
|
174
|
+
"(PACKAGECLOUD_TOKEN or PACKAGECLOUD_TOKEN_#{org.upcase}) [WARN]"
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
targets.map do |target|
|
179
|
+
target.tap do
|
180
|
+
if packager.package_version_tag_required_for_deploy? and
|
181
|
+
packager.package_version_tag != target.package_version_tag
|
182
|
+
raise(Error, error: :logical_error,
|
183
|
+
message: "#{target.package_version_tag_param_name} and "+
|
184
|
+
"package_version_tag (env TRAVIS_TAG or CI_BUILD_TAG) " +
|
185
|
+
"should be the same for target '#{target.name}'")
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end.each {|target| deploy_target(target)}
|
157
189
|
end
|
158
190
|
|
159
191
|
def deploy_target(target)
|
160
|
-
cmd = Dir[
|
161
|
-
|
162
|
-
|
163
|
-
.map
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
192
|
+
cmd = Dir[target.image_build_path.join("*.#{target.image.fpm_output_type}")]
|
193
|
+
.map {|p| Pathname.new(p)}.map {|package_path|
|
194
|
+
package = package_path.basename
|
195
|
+
target.package_cloud.map do |desc|
|
196
|
+
desc.merge(
|
197
|
+
package: package,
|
198
|
+
yank: "package_cloud yank #{desc[:package_path]} #{package}",
|
199
|
+
push: "package_cloud push #{desc[:package_path]} #{package_path}",
|
200
|
+
)
|
201
|
+
end
|
202
|
+
}.flatten.each {|desc|
|
203
|
+
packager.command desc[:yank],
|
204
|
+
desc: ["Package cloud yank package '#{desc[:package]}'",
|
205
|
+
" of target '#{target.name}'"].join,
|
206
|
+
environment: {'PACKAGECLOUD_TOKEN' => desc[:token]}
|
207
|
+
|
208
|
+
packager.command desc[:push],
|
209
|
+
desc: ["Package cloud push package '#{desc[:package]}'",
|
210
|
+
" of target '#{target.name}'"].join,
|
211
|
+
environment: {'PACKAGECLOUD_TOKEN' =>desc[:token]}
|
212
|
+
}
|
170
213
|
end
|
171
214
|
end # Base
|
172
215
|
end # Builder
|
@@ -15,60 +15,29 @@ module Buildizer
|
|
15
15
|
|
16
16
|
def initial_target_params
|
17
17
|
super.tap do |params|
|
18
|
-
raise(Error,
|
19
|
-
error: :input_error,
|
20
|
-
message: [
|
21
|
-
"explicit definition of package_version in #{build_type} ",
|
22
|
-
"build type is forbidden ",
|
23
|
-
"(use TRAVIS_TAG, CI_BUILD_TAG env variables)",
|
24
|
-
].join) if params[:package_version]
|
25
|
-
params[:package_version] = packager.package_version_tag
|
26
18
|
params[:fpm_script] = Array(packager.buildizer_conf['fpm_script'])
|
27
19
|
params[:fpm_config_files] = packager.buildizer_conf['fpm_config_files'].to_h
|
28
20
|
params[:fpm_files] = packager.buildizer_conf['fpm_files'].to_h
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
error: :input_error,
|
36
|
-
message: [
|
37
|
-
"cannot redefine #{param}",
|
38
|
-
redefine_for ? "for #{redefine_for}" : nil,
|
39
|
-
"in #{build_type} build_type",
|
40
|
-
].compact.join(' ')
|
41
|
-
) if params.key? param.to_s
|
21
|
+
params[:fpm_conflicts] = Array(packager.buildizer_conf['fpm_conflicts'])
|
22
|
+
params[:fpm_replaces] = Array(packager.buildizer_conf['fpm_replaces'])
|
23
|
+
params[:fpm_provides] = Array(packager.buildizer_conf['fpm_provides'])
|
24
|
+
params[:fpm_depends] = Array(packager.buildizer_conf['fpm_depends'])
|
25
|
+
params[:fpm_description] = packager.buildizer_conf['fpm_description']
|
26
|
+
params[:fpm_url] = packager.buildizer_conf['fpm_url']
|
42
27
|
end
|
43
28
|
end
|
44
29
|
|
45
30
|
def do_merge_params(into, params)
|
46
31
|
super.tap do |res|
|
47
32
|
res[:fpm_script] = into[:fpm_script] + Array(params['fpm_script'])
|
48
|
-
res[:fpm_config_files] = into[:fpm_config_files].merge
|
49
|
-
res[:fpm_files] = into[:fpm_files].merge
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
cannot_redefine_package_params!(params, redefine_for: "os '#{os_name}'")
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
def merge_os_version_params(os_name, os_version, **kwargs, &blk)
|
61
|
-
super(os_name, os_version, **kwargs) do |into, params|
|
62
|
-
yield into, params if block_given?
|
63
|
-
cannot_redefine_package_params!(params,
|
64
|
-
redefine_for: "os version '#{os_name}-#{os_version}'")
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def merge_base_target_params(target, target_package_name, target_package_version, **kwargs, &blk)
|
69
|
-
super(target, target_package_name, target_package_version, **kwargs) do |into, params|
|
70
|
-
yield into, params if block_given?
|
71
|
-
cannot_redefine_package_params!(params, redefine_for: "target '#{target}'")
|
33
|
+
res[:fpm_config_files] = into[:fpm_config_files].merge(params['fpm_config_files'].to_h)
|
34
|
+
res[:fpm_files] = into[:fpm_files].merge(params['fpm_files'].to_h)
|
35
|
+
res[:fpm_conflicts] = (into[:fpm_conflicts] + Array(params['fpm_conflicts'])).uniq
|
36
|
+
res[:fpm_replaces] = (into[:fpm_replaces] + Array(params['fpm_replaces'])).uniq
|
37
|
+
res[:fpm_provides] = (into[:fpm_provides] + Array(params['fpm_provides'])).uniq
|
38
|
+
res[:fpm_depends] = (into[:fpm_depends] + Array(params['fpm_depends'])).uniq
|
39
|
+
res[:fpm_description] = params['fpm_description'] || into[:fpm_description]
|
40
|
+
res[:fpm_url] = params['fpm_url'] || into[:fpm_url]
|
72
41
|
end
|
73
42
|
end
|
74
43
|
|
@@ -79,6 +48,7 @@ module Buildizer
|
|
79
48
|
message: ["either of fpm_files or fpm_config_files ",
|
80
49
|
"required in #{build_type} build_type"].join
|
81
50
|
end
|
51
|
+
_required_params! :package_version, params
|
82
52
|
end
|
83
53
|
|
84
54
|
def build_instructions(target)
|
@@ -96,9 +66,8 @@ module Buildizer
|
|
96
66
|
message: "unknown fpm_script event #{_when.inspect}"
|
97
67
|
) unless FPM_SCRIPT_EVENTS.include? _when
|
98
68
|
res[_when] ||= {fpm_option: "--#{_when.split('_').join('-')}",
|
99
|
-
file:
|
100
|
-
|
101
|
-
container_file: Pathname.new('/package/build').join("fpm_#{_when}.sh"),
|
69
|
+
file: target.image_extra_path.join("fpm_#{_when}.sh"),
|
70
|
+
container_file: docker.container_extra_path.join("fpm_#{_when}.sh"),
|
102
71
|
cmd: []}
|
103
72
|
res[_when][:cmd] += cmd
|
104
73
|
end
|
@@ -121,8 +90,16 @@ module Buildizer
|
|
121
90
|
"--iteration=#{release}",
|
122
91
|
*fpm_script.values.map {|desc| "#{desc[:fpm_option]}=#{desc[:container_file]}"},
|
123
92
|
*Array(target.image.fpm_extra_params),
|
124
|
-
|
125
|
-
|
93
|
+
(target.maintainer ? "--maintainer=\"#{target.maintainer}\"" : nil),
|
94
|
+
(target.fpm_description ? "--description=\"#{target.fpm_description}\"" : nil),
|
95
|
+
(target.fpm_url ? "--url=\"#{target.fpm_url}\"" : nil),
|
96
|
+
*target.fpm_conflicts.map{|pkg| "--conflicts=#{pkg}"},
|
97
|
+
*target.fpm_replaces.map{|pkg| "--replaces=#{pkg}"},
|
98
|
+
*target.fpm_provides.map{|pkg| "--provides=#{pkg}"},
|
99
|
+
*target.fpm_depends.map{|pkg| "--depends=#{pkg}"},
|
100
|
+
*target.fpm_config_files_expand.keys.map {|p| "--config-files=#{p}"},
|
101
|
+
*target.fpm_files_expand.merge(target.fpm_config_files_expand).map {|p1, p2| "#{p2}=#{p1}"},
|
102
|
+
].compact.join(' ')
|
126
103
|
end
|
127
104
|
end # Fpm
|
128
105
|
end # Builder
|