buildizer 0.0.6 → 0.0.7
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 +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
|