vanagon 0.5.7 → 0.5.9
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
- data/lib/vanagon/component.rb +2 -1
- data/lib/vanagon/component/dsl.rb +10 -0
- data/lib/vanagon/project.rb +25 -1
- data/lib/vanagon/project/dsl.rb +10 -0
- data/resources/deb/control.erb +1 -1
- data/resources/osx/postinstall.erb +4 -0
- data/resources/osx/preinstall.erb +3 -0
- data/resources/rpm/project.spec.erb +4 -1
- data/spec/lib/vanagon/component/dsl_spec.rb +17 -0
- data/spec/lib/vanagon/project/dsl_spec.rb +31 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb77baf3c8dca42c4cec74d3a31c74af63ee37df
|
4
|
+
data.tar.gz: 32949fe6e83be1972bc91057b5a522b116de0bc2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e2a8b0411fc595f95b40c8f63229f73ed4324f9712c9c04dab01340a95fa27246e305cc0d44b7a7c7b7b2a5725ac6991971607d31eb7313a4953baf60fe7bb98
|
7
|
+
data.tar.gz: 5b6ee385067ff48a3befb3f2d5abc796a3b7589ef389534c2ab3d2a0840a85982f1eca22a3365c2a4f875a1619cc722fc1f7655118c273e47793d63f596d9c28
|
data/lib/vanagon/component.rb
CHANGED
@@ -10,7 +10,7 @@ class Vanagon
|
|
10
10
|
attr_accessor :name, :version, :source, :url, :configure, :build, :check, :install
|
11
11
|
attr_accessor :environment, :extract_with, :dirname, :build_requires, :build_dir
|
12
12
|
attr_accessor :settings, :platform, :patches, :requires, :service, :options
|
13
|
-
attr_accessor :directories, :replaces, :provides, :cleanup_source
|
13
|
+
attr_accessor :directories, :replaces, :provides, :conflicts, :cleanup_source
|
14
14
|
attr_accessor :sources, :preinstall_actions, :postinstall_actions
|
15
15
|
attr_accessor :preremove_actions, :postremove_actions, :license
|
16
16
|
|
@@ -57,6 +57,7 @@ class Vanagon
|
|
57
57
|
@directories = []
|
58
58
|
@replaces = []
|
59
59
|
@provides = []
|
60
|
+
@conflicts = []
|
60
61
|
@environment = {}
|
61
62
|
@sources = []
|
62
63
|
@preinstall_actions = []
|
@@ -151,6 +151,16 @@ class Vanagon
|
|
151
151
|
@component.provides << OpenStruct.new(:provide => provide, :version => version)
|
152
152
|
end
|
153
153
|
|
154
|
+
# Indicates that this component conflicts with another package,
|
155
|
+
# so both cannot be installed at the same time. Conflicts can be
|
156
|
+
# collected and used by the project and package.
|
157
|
+
#
|
158
|
+
# @param pkgname [String] name of the package which conflicts with this component
|
159
|
+
# @param version [String] the version of the package that conflicts with this component
|
160
|
+
def conflicts(pkgname, version = nil)
|
161
|
+
@component.conflicts << OpenStruct.new(:pkgname => pkgname, :version => version)
|
162
|
+
end
|
163
|
+
|
154
164
|
# install_service adds the commands to install the various files on
|
155
165
|
# disk during the package build and registers the service with the project
|
156
166
|
#
|
data/lib/vanagon/project.rb
CHANGED
@@ -11,7 +11,7 @@ class Vanagon
|
|
11
11
|
attr_accessor :version, :directories, :license, :description, :vendor
|
12
12
|
attr_accessor :homepage, :requires, :user, :repo, :noarch, :identifier
|
13
13
|
attr_accessor :cleanup, :version_file, :release, :replaces, :provides
|
14
|
-
attr_accessor :bill_of_materials, :retry_count, :timeout
|
14
|
+
attr_accessor :conflicts, :bill_of_materials, :retry_count, :timeout
|
15
15
|
|
16
16
|
# Loads a given project from the configdir
|
17
17
|
#
|
@@ -50,6 +50,7 @@ class Vanagon
|
|
50
50
|
@release = "1"
|
51
51
|
@replaces = []
|
52
52
|
@provides = []
|
53
|
+
@conflicts = []
|
53
54
|
end
|
54
55
|
|
55
56
|
# Magic getter to retrieve settings in the project
|
@@ -101,6 +102,21 @@ class Vanagon
|
|
101
102
|
replaces.flatten.uniq
|
102
103
|
end
|
103
104
|
|
105
|
+
def has_replaces?
|
106
|
+
!get_replaces.empty?
|
107
|
+
end
|
108
|
+
|
109
|
+
# Collects all of the conflicts for the project and its components
|
110
|
+
def get_conflicts
|
111
|
+
conflicts = @components.flat_map(&:conflicts) + @conflicts
|
112
|
+
# Mash the whole thing down into a flat Array
|
113
|
+
conflicts.flatten.uniq
|
114
|
+
end
|
115
|
+
|
116
|
+
def has_conflicts?
|
117
|
+
!get_conflicts.empty?
|
118
|
+
end
|
119
|
+
|
104
120
|
# Grabs a specific service based on which name is passed in
|
105
121
|
# note that if the name is wrong or there was no
|
106
122
|
# @component.install_service call in the component, this
|
@@ -127,6 +143,10 @@ class Vanagon
|
|
127
143
|
provides.flatten.uniq
|
128
144
|
end
|
129
145
|
|
146
|
+
def has_provides?
|
147
|
+
!get_provides.empty?
|
148
|
+
end
|
149
|
+
|
130
150
|
# Collects the preinstall packaging actions for the project and it's components
|
131
151
|
# for the specified packaging state
|
132
152
|
#
|
@@ -199,6 +219,10 @@ class Vanagon
|
|
199
219
|
@components.map(&:configfiles).flatten.uniq
|
200
220
|
end
|
201
221
|
|
222
|
+
def has_configfiles?
|
223
|
+
!get_configfiles.empty?
|
224
|
+
end
|
225
|
+
|
202
226
|
# Collects any directories declared by the project and components
|
203
227
|
#
|
204
228
|
# @return [Array] the directories in the project and components
|
data/lib/vanagon/project/dsl.rb
CHANGED
@@ -108,6 +108,16 @@ class Vanagon
|
|
108
108
|
@project.provides << OpenStruct.new(:provide => provide, :version => version)
|
109
109
|
end
|
110
110
|
|
111
|
+
# Indicates that this component conflicts with another package,
|
112
|
+
# so both cannot be installed at the same time. Conflicts can be
|
113
|
+
# collected and used by the project and package.
|
114
|
+
#
|
115
|
+
# @param pkgname [String] name of the package which conflicts with this component
|
116
|
+
# @param version [String] the version of the package that conflicts with this component
|
117
|
+
def conflicts(pkgname, version = nil)
|
118
|
+
@project.conflicts << OpenStruct.new(:pkgname => pkgname, :version => version)
|
119
|
+
end
|
120
|
+
|
111
121
|
# Sets the version for the project. Mainly for use in packaging.
|
112
122
|
#
|
113
123
|
# @param ver [String] version of the project
|
data/resources/deb/control.erb
CHANGED
@@ -11,7 +11,7 @@ Architecture: <%= @noarch ? 'all' : 'any' %>
|
|
11
11
|
Section: admin
|
12
12
|
Priority: optional
|
13
13
|
Replaces: <%= get_replaces.map { |replace| "#{replace.replacement} #{replace.version ? "(<< #{replace.version})" : ""}" }.join(", ") %>
|
14
|
-
Conflicts: <%=
|
14
|
+
Conflicts: <%= get_conflicts.map { |conflict| "#{conflict.pkgname} #{conflict.version ? "(<< #{conflict.version})" : ""}" }.join(", ") %>
|
15
15
|
Depends: <%= get_requires.join(", ") %>
|
16
16
|
Provides: <%= get_provides.map { |prov| prov.provide }.join(", ") %>
|
17
17
|
Description: <%= @description.lines.first.chomp %>
|
@@ -1,5 +1,6 @@
|
|
1
1
|
#!/bin/bash
|
2
2
|
|
3
|
+
<%- if has_configfiles? -%>
|
3
4
|
# Move any new configfiles into place
|
4
5
|
<%- get_configfiles.each do |config|
|
5
6
|
dest_file = config.path.gsub(/\.pristine$/, '') -%>
|
@@ -10,7 +11,9 @@ else
|
|
10
11
|
mv '<%= config.path %>' '<%= dest_file %>'
|
11
12
|
fi
|
12
13
|
<%- end -%>
|
14
|
+
<%- end -%>
|
13
15
|
|
16
|
+
<%- if has_services? -%>
|
14
17
|
if [ -d "/tmp/.<%= @name %>.upgrade" ]; then
|
15
18
|
<%- get_services.each do |service| -%>
|
16
19
|
if [ -f "/tmp/.<%= @name %>.upgrade/<%= service.name %>" ]; then
|
@@ -18,6 +21,7 @@ if [ -d "/tmp/.<%= @name %>.upgrade" ]; then
|
|
18
21
|
fi
|
19
22
|
<%- end -%>
|
20
23
|
fi
|
24
|
+
<%- end -%>
|
21
25
|
|
22
26
|
<%= File.read("resources/osx/postinstall-extras") if File.exist?("resources/osx/postinstall-extras") %>
|
23
27
|
|
@@ -13,6 +13,7 @@ if [ -n "$foundpkg" ]; then
|
|
13
13
|
mkdir -p "/tmp/.<%= @name %>.upgrade"
|
14
14
|
chmod 0700 "/tmp/.<%= @name %>.upgrade"
|
15
15
|
|
16
|
+
<%- if has_services? -%>
|
16
17
|
<%- get_services.each do |service| -%>
|
17
18
|
if /bin/launchctl list "<%= service.name %>" &> /dev/null; then
|
18
19
|
touch "/tmp/.<%= @name %>.upgrade/<%= service.name %>"
|
@@ -22,6 +23,8 @@ if [ -n "$foundpkg" ]; then
|
|
22
23
|
/bin/rm "$oldbom"
|
23
24
|
fi
|
24
25
|
<%- end -%>
|
26
|
+
<%- end -%>
|
25
27
|
fi
|
26
28
|
|
29
|
+
|
27
30
|
<%= File.read("resources/osx/preinstall-extras") if File.exist?("resources/osx/preinstall-extras") %>
|
@@ -48,10 +48,13 @@ Requires: chkconfig
|
|
48
48
|
<%- end -%>
|
49
49
|
|
50
50
|
<%- get_replaces.each do |replace| -%>
|
51
|
-
Conflicts: <%= replace.replacement %><%= replace.version ? " < #{replace.version}" : "" %>
|
52
51
|
Obsoletes: <%= replace.replacement %><%= replace.version ? " < #{replace.version}" : "" %>
|
53
52
|
<%- end -%>
|
54
53
|
|
54
|
+
<%- get_conflicts.each do |conflict| -%>
|
55
|
+
Conflicts: <%= conflict.pkgname %><%= conflict.version ? " < #{conflict.version}" : "" %>
|
56
|
+
<%- end -%>
|
57
|
+
|
55
58
|
<%- get_provides.each do |prov| -%>
|
56
59
|
Provides: <%= prov.provide %><%= prov.version ? " >= #{prov.version}" : "" %>
|
57
60
|
<%- end -%>
|
@@ -269,6 +269,23 @@ end" }
|
|
269
269
|
end
|
270
270
|
end
|
271
271
|
|
272
|
+
describe '#conflicts' do
|
273
|
+
it 'adds the package conflict to the list of conflicts' do
|
274
|
+
comp = Vanagon::Component::DSL.new('conflicts-test', {}, {})
|
275
|
+
comp.conflicts('thing1')
|
276
|
+
comp.conflicts('thing2')
|
277
|
+
expect(comp._component.conflicts.first.pkgname).to eq('thing1')
|
278
|
+
expect(comp._component.conflicts.last.pkgname).to eq('thing2')
|
279
|
+
end
|
280
|
+
|
281
|
+
it 'supports versioned conflicts' do
|
282
|
+
comp = Vanagon::Component::DSL.new('conflicts-test', {}, {})
|
283
|
+
comp.conflicts('thing1', '1.2.3')
|
284
|
+
expect(comp._component.conflicts.first.pkgname).to eq('thing1')
|
285
|
+
expect(comp._component.conflicts.first.version).to eq('1.2.3')
|
286
|
+
end
|
287
|
+
end
|
288
|
+
|
272
289
|
describe '#add_actions' do
|
273
290
|
it 'adds the corect preinstall action to the component' do
|
274
291
|
comp = Vanagon::Component::DSL.new('action-test', {}, dummy_platform_sysv)
|
@@ -167,6 +167,37 @@ end" }
|
|
167
167
|
end
|
168
168
|
end
|
169
169
|
|
170
|
+
describe "#conflicts" do
|
171
|
+
it 'adds the package conflict to the list of conflicts' do
|
172
|
+
proj = Vanagon::Project::DSL.new('test-fixture', {})
|
173
|
+
proj.instance_eval(project_block)
|
174
|
+
proj.conflicts('thing1')
|
175
|
+
proj.conflicts('thing2')
|
176
|
+
expect(proj._project.get_conflicts.count).to eq(2)
|
177
|
+
expect(proj._project.get_conflicts.first.pkgname).to eq('thing1')
|
178
|
+
expect(proj._project.get_conflicts.last.pkgname).to eq('thing2')
|
179
|
+
end
|
180
|
+
|
181
|
+
it 'supports versioned conflicts' do
|
182
|
+
proj = Vanagon::Project::DSL.new('test-fixture', {})
|
183
|
+
proj.instance_eval(project_block)
|
184
|
+
proj.conflicts('thing1', '1.2.3')
|
185
|
+
expect(proj._project.get_conflicts.count).to eq(1)
|
186
|
+
expect(proj._project.get_conflicts.first.pkgname).to eq('thing1')
|
187
|
+
expect(proj._project.get_conflicts.first.version).to eq('1.2.3')
|
188
|
+
end
|
189
|
+
|
190
|
+
it 'gets rid of duplicates' do
|
191
|
+
proj = Vanagon::Project::DSL.new('test-fixture', {})
|
192
|
+
proj.instance_eval(project_block)
|
193
|
+
proj.conflicts('thing1', '1.2.3')
|
194
|
+
proj.conflicts('thing1', '1.2.3')
|
195
|
+
expect(proj._project.get_conflicts.count).to eq(1)
|
196
|
+
expect(proj._project.get_conflicts.first.pkgname).to eq('thing1')
|
197
|
+
expect(proj._project.get_conflicts.first.version).to eq('1.2.3')
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
170
201
|
describe "#component" do
|
171
202
|
let(:project_block) {
|
172
203
|
"project 'test-fixture' do |proj|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vanagon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppet Labs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|