openvox 8.28.1 → 8.30.0
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/CHANGELOG.md +63 -1
- data/Gemfile +2 -2
- data/Rakefile +1 -1
- data/ext/redhat/client.sysconfig +1 -0
- data/lib/puppet/agent.rb +79 -7
- data/lib/puppet/application/ssl.rb +7 -6
- data/lib/puppet/functions/tree_each.rb +1 -1
- data/lib/puppet/generate/type.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +13 -12
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +4 -1
- data/lib/puppet/provider/package/pacman.rb +1 -1
- data/lib/puppet/reference/metaparameter.rb +1 -1
- data/lib/puppet/util/rdoc.rb +6 -3
- data/lib/puppet/util/selinux.rb +16 -1
- data/lib/puppet/version.rb +1 -1
- data/tasks/vox.rake +2 -2
- metadata +10 -6
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +0 -902
- data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +0 -1068
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bcf52c4710584e363c52de7ad3edcf6ee510cfc3117fa3bf87aa1e082f33ca56
|
|
4
|
+
data.tar.gz: 1a2c01a5f3fe5fc187acc86b98638e44ae9840ff8d7f546f2c8ebf3d31739043
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 34a0255bb2676b55da6ea8a5059074f25b578f2f70d8ed0cbf008e4ab0e30b8826a69a83688c6a8eea52c764b598edb731019eac55cb36b95f42422a40dcd9d7
|
|
7
|
+
data.tar.gz: 6d7d4d889feb3b7495f2674c8cf1a232e03c6b7b49fde5cde13ab84062378d24069c087b0f1049a405e4551ae6999642c574ea1b55a137262ffe94fdc931bc04
|
data/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,69 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
-
## [8.
|
|
5
|
+
## [8.30.0](https://github.com/openvoxproject/openvox/tree/8.30.0) (2026-10-07)
|
|
6
|
+
|
|
7
|
+
[Full Changelog](https://github.com/openvoxproject/openvox/compare/8.29.0...8.30.0)
|
|
8
|
+
|
|
9
|
+
**Fixed bugs:**
|
|
10
|
+
|
|
11
|
+
- \[Bug\]: use of "server\_list" \(instead of server\) throws an error [\#658](https://github.com/OpenVoxProject/openvox/issues/658)
|
|
12
|
+
- \[Bug\]: Ruby crashes on child side of fork pre-exec macOS 26 \(Tahoe\) [\#538](https://github.com/OpenVoxProject/openvox/issues/538)
|
|
13
|
+
- \[Backport 8.x\] Pin json below 3 to unblock CI [\#676](https://github.com/OpenVoxProject/openvox/pull/676) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
14
|
+
- \[backport 8.x\] fix: `Deferred` resolution of Puppet-language functions \(e.g. mocks in tests\) failing due to lack of `:global_scope` [\#671](https://github.com/OpenVoxProject/openvox/pull/671) ([griggi-ws](https://github.com/griggi-ws))
|
|
15
|
+
- \[Backport 8.x\] print "Loading facts" just once [\#663](https://github.com/OpenVoxProject/openvox/pull/663) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
16
|
+
|
|
17
|
+
**Closed issues:**
|
|
18
|
+
|
|
19
|
+
- json 3.0.0 breaks Puppet::Util::Json and the test suite [\#654](https://github.com/OpenVoxProject/openvox/issues/654)
|
|
20
|
+
|
|
21
|
+
**Merged pull requests:**
|
|
22
|
+
|
|
23
|
+
- \[Backport 8.x\] Skip the tests that need jruby-openssl in FIPS mode [\#714](https://github.com/OpenVoxProject/openvox/pull/714) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
24
|
+
- Promote openfact 5.7.2 into 8.x [\#711](https://github.com/OpenVoxProject/openvox/pull/711) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
25
|
+
- Promote puppet-runtime 2026.09.29.1 into 8.x [\#704](https://github.com/OpenVoxProject/openvox/pull/704) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
26
|
+
- \[Backport 8.x\] Kill the forked agent run if it outlives runtimeout [\#698](https://github.com/OpenVoxProject/openvox/pull/698) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
27
|
+
- \[Backport 8.x\] Wait for certificates in the forked child, not in the daemon [\#697](https://github.com/OpenVoxProject/openvox/pull/697) ([nmburgan](https://github.com/nmburgan))
|
|
28
|
+
- openfact: Update 5.7.0 -\> 5.7.1 [\#678](https://github.com/OpenVoxProject/openvox/pull/678) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
29
|
+
- \[Backport 8.x\] Proper markdown for alias reference documentation. [\#650](https://github.com/OpenVoxProject/openvox/pull/650) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
30
|
+
|
|
31
|
+
## [8.29.0](https://github.com/openvoxproject/openvox/tree/8.29.0) (2026-09-04)
|
|
32
|
+
|
|
33
|
+
[Full Changelog](https://github.com/openvoxproject/openvox/compare/8.28.1...8.29.0)
|
|
34
|
+
|
|
35
|
+
**Implemented enhancements:**
|
|
36
|
+
|
|
37
|
+
- openfact: Allow 6.x [\#578](https://github.com/OpenVoxProject/openvox/pull/578) ([bastelfreak](https://github.com/bastelfreak))
|
|
38
|
+
|
|
39
|
+
**Fixed bugs:**
|
|
40
|
+
|
|
41
|
+
- \[Bug\]: Sometimes Error "This 'if' statement has no effect", sometimes not [\#542](https://github.com/OpenVoxProject/openvox/issues/542)
|
|
42
|
+
- \[Bug\]: Centralized filebucket not working properly [\#367](https://github.com/OpenVoxProject/openvox/issues/367)
|
|
43
|
+
- \[Bug\]: lines in file resource content looking like a checksum throws an error [\#169](https://github.com/OpenVoxProject/openvox/issues/169)
|
|
44
|
+
- \[Backport 8.x\] Fix excessive reads of /proc/mounts [\#621](https://github.com/OpenVoxProject/openvox/pull/621) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
45
|
+
- \[Backport 8.x\] Report errors when renewing a certificate fails [\#611](https://github.com/OpenVoxProject/openvox/pull/611) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
46
|
+
- \[Backport 8.x\] fix: Pacman provider uses unrecognized option '--update' [\#565](https://github.com/OpenVoxProject/openvox/pull/565) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
47
|
+
|
|
48
|
+
**Security fixes:**
|
|
49
|
+
|
|
50
|
+
- Promote puppet-runtime 2026.09.02.1 into 8.x [\#629](https://github.com/OpenVoxProject/openvox/pull/629) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
51
|
+
|
|
52
|
+
**Closed issues:**
|
|
53
|
+
|
|
54
|
+
- \[Deprecation\] Replace `puppet master` Terminology in User-Facing Docs/Help [\#347](https://github.com/OpenVoxProject/openvox/issues/347)
|
|
55
|
+
- \[Deprecation\] Fine-Grained `filetimeout` Control [\#345](https://github.com/OpenVoxProject/openvox/issues/345)
|
|
56
|
+
- \[Deprecation\] Data-Binding Settings [\#338](https://github.com/OpenVoxProject/openvox/issues/338)
|
|
57
|
+
- \[Deprecation\] `file { content => <checksum> }` Filebucket Retrieval Behavior [\#335](https://github.com/OpenVoxProject/openvox/issues/335)
|
|
58
|
+
- \[Deprecation\] `Puppet::Indirector::Hiera` Terminus [\#332](https://github.com/OpenVoxProject/openvox/issues/332)
|
|
59
|
+
|
|
60
|
+
**Merged pull requests:**
|
|
61
|
+
|
|
62
|
+
- \[Backport 8.x\] puppet generate: print module directory when types are missing [\#618](https://github.com/OpenVoxProject/openvox/pull/618) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
63
|
+
- \[Backport 8.x\] Fix a small typo in the markdown docs \(redux\) [\#606](https://github.com/OpenVoxProject/openvox/pull/606) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
64
|
+
- Remove unloadable CC-BY-1.0 RDoc template and generator [\#588](https://github.com/OpenVoxProject/openvox/pull/588) ([silug](https://github.com/silug))
|
|
65
|
+
- \[Backport 8.x\] Set `PUPPET_EXTRA_OPTS` variable to empty [\#561](https://github.com/OpenVoxProject/openvox/pull/561) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
66
|
+
|
|
67
|
+
## [8.28.1](https://github.com/openvoxproject/openvox/tree/8.28.1) (2026-07-07)
|
|
6
68
|
|
|
7
69
|
[Full Changelog](https://github.com/openvoxproject/openvox/compare/8.28.0...8.28.1)
|
|
8
70
|
|
data/Gemfile
CHANGED
|
@@ -16,7 +16,7 @@ end
|
|
|
16
16
|
# the runtime_dependencies in openvox.gemspec match the runtime dependencies here
|
|
17
17
|
# (like openfact, semantic_puppet, and puppet-resource_api)
|
|
18
18
|
|
|
19
|
-
gem "openfact", *location_for(ENV['OPENFACT_LOCATION'] || ["
|
|
19
|
+
gem "openfact", *location_for(ENV['OPENFACT_LOCATION'] || [">= 5.0", "< 7"])
|
|
20
20
|
gem "semantic_puppet", *location_for(ENV['SEMANTIC_PUPPET_LOCATION'] || ["~> 1.0"])
|
|
21
21
|
gem "puppet-resource_api", *location_for(ENV['RESOURCE_API_LOCATION'] || ["~> 2.0"])
|
|
22
22
|
# Need to update the openssl gem on MacOS to avoid SSL errors.
|
|
@@ -77,7 +77,7 @@ group(:packaging) do
|
|
|
77
77
|
gem 'vanagon', *location_for(ENV['VANAGON_LOCATION'] || 'https://github.com/openvoxproject/vanagon#main')
|
|
78
78
|
end
|
|
79
79
|
gem 'artifactory'
|
|
80
|
-
gem 'json'
|
|
80
|
+
gem 'json', '< 3'
|
|
81
81
|
gem 'octokit'
|
|
82
82
|
end
|
|
83
83
|
|
data/Rakefile
CHANGED
|
@@ -159,7 +159,7 @@ begin
|
|
|
159
159
|
HEADER
|
|
160
160
|
config.user = "openvoxproject"
|
|
161
161
|
config.project = "openvox"
|
|
162
|
-
config.exclude_labels = %w[dependencies duplicate question invalid wontfix wont-fix modulesync skip-changelog]
|
|
162
|
+
config.exclude_labels = %w[dependencies duplicate question invalid wontfix wont-fix modulesync skip-changelog skip-8.x-changelog]
|
|
163
163
|
config.since_tag = "8.18.1"
|
|
164
164
|
config.future_release = Puppet::PUPPETVERSION
|
|
165
165
|
config.exclude_tags_regex = /\A[7,9]\./
|
data/ext/redhat/client.sysconfig
CHANGED
data/lib/puppet/agent.rb
CHANGED
|
@@ -22,6 +22,12 @@ class Puppet::Agent
|
|
|
22
22
|
class RunTimeoutError < Exception # rubocop:disable Lint/InheritException
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
+
# Exit status the forked child uses to tell the daemon that the SSL state
|
|
26
|
+
# machine gave up waiting for a certificate, so the daemon can exit as it
|
|
27
|
+
# did when the wait happened in the parent. Must not collide with the
|
|
28
|
+
# detailed exit codes returned by a run (0, 1, 2, 4, 6) or with 254 (NoMemoryError).
|
|
29
|
+
CERTIFICATE_FAILURE_EXIT_STATUS = 253
|
|
30
|
+
|
|
25
31
|
attr_reader :client_class, :client, :should_fork
|
|
26
32
|
|
|
27
33
|
def initialize(client_class, should_fork = true)
|
|
@@ -60,12 +66,28 @@ class Puppet::Agent
|
|
|
60
66
|
end
|
|
61
67
|
end
|
|
62
68
|
|
|
63
|
-
# waiting for certs may sleep for awhile depending on onetime, waitforcert and maxwaitforcert!
|
|
64
|
-
# this needs to happen before forking so that if we fail to obtain certs and try to exit, then
|
|
65
|
-
# we exit the main process and not the forked child.
|
|
66
|
-
ssl_context = wait_for_certificates(client_options)
|
|
67
|
-
|
|
68
69
|
result = run_in_fork(should_fork) do
|
|
70
|
+
# waiting for certs may sleep for awhile depending on onetime, waitforcert and maxwaitforcert!
|
|
71
|
+
#
|
|
72
|
+
# This happens in the forked child, not in the long-lived daemon. Refreshing
|
|
73
|
+
# the CRL or renewing the certificate resolves the server's name, and on
|
|
74
|
+
# Ruby 3.3+ that runs in short-lived native threads. If the daemon forks
|
|
75
|
+
# while one of those threads is exiting, the child inherits glibc's
|
|
76
|
+
# resolv.conf lock in the locked state and every name lookup in the run
|
|
77
|
+
# hangs (#485). Keeping the lookups out of the parent avoids that.
|
|
78
|
+
#
|
|
79
|
+
# The state machine calls exit when it gives up waiting for a certificate
|
|
80
|
+
# (waitforcert 0 or maxwaitforcert exceeded). Report that back so the
|
|
81
|
+
# daemon exits, as it did when the wait happened in the parent.
|
|
82
|
+
begin
|
|
83
|
+
ssl_context = wait_for_certificates(client_options)
|
|
84
|
+
rescue SystemExit
|
|
85
|
+
next CERTIFICATE_FAILURE_EXIT_STATUS
|
|
86
|
+
rescue StandardError => detail
|
|
87
|
+
Puppet.log_exception(detail, _("Could not obtain certificates: %{detail}") % { detail: detail })
|
|
88
|
+
next nil
|
|
89
|
+
end
|
|
90
|
+
|
|
69
91
|
with_client(client_options[:transaction_uuid], client_options[:job_id]) do |client|
|
|
70
92
|
client_args = client_options.merge(:pluginsync => Puppet::Configurer.should_pluginsync?)
|
|
71
93
|
begin
|
|
@@ -115,6 +137,9 @@ class Puppet::Agent
|
|
|
115
137
|
end
|
|
116
138
|
end
|
|
117
139
|
end
|
|
140
|
+
# The child could not obtain a certificate and the state machine asked to exit.
|
|
141
|
+
exit(1) if result == CERTIFICATE_FAILURE_EXIT_STATUS
|
|
142
|
+
|
|
118
143
|
true
|
|
119
144
|
end
|
|
120
145
|
Puppet.notice _("Shutdown/restart in progress (%{status}); skipping run") % { status: Puppet::Application.run_status.inspect } unless block_run
|
|
@@ -146,8 +171,55 @@ class Puppet::Agent
|
|
|
146
171
|
atForkHandler.parent
|
|
147
172
|
end
|
|
148
173
|
|
|
149
|
-
|
|
150
|
-
|
|
174
|
+
_, status = wait_for_child(child_pid)
|
|
175
|
+
status.exitstatus
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
# Wait for the forked child to exit. The child enforces `runtimeout` on its
|
|
179
|
+
# own run, but it may fail to exit afterwards (a stranded thread, a hung
|
|
180
|
+
# subprocess, etc.). Without a deadline here, the parent blocks forever and
|
|
181
|
+
# the agent stops checking in. Once the run timeout plus a grace period has
|
|
182
|
+
# elapsed, the child is killed so the daemon can carry on.
|
|
183
|
+
def wait_for_child(child_pid)
|
|
184
|
+
deadline = child_deadline
|
|
185
|
+
return Process.waitpid2(child_pid) unless deadline
|
|
186
|
+
|
|
187
|
+
loop do
|
|
188
|
+
result = Process.waitpid2(child_pid, Process::WNOHANG)
|
|
189
|
+
return result if result
|
|
190
|
+
|
|
191
|
+
if monotonic_now >= deadline
|
|
192
|
+
Puppet.err _("Agent run (pid %{pid}) did not exit within %{timeout} seconds of the run timeout, killing it") %
|
|
193
|
+
{ pid: child_pid, timeout: child_grace_period }
|
|
194
|
+
begin
|
|
195
|
+
Process.kill(:KILL, child_pid)
|
|
196
|
+
rescue Errno::ESRCH
|
|
197
|
+
# The child exited between the last check and the kill.
|
|
198
|
+
end
|
|
199
|
+
return Process.waitpid2(child_pid)
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
sleep 1
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
# After the run timeout fires inside the child, it may still need to send
|
|
207
|
+
# its report, which is bounded by the HTTP connect and read timeouts.
|
|
208
|
+
def child_grace_period
|
|
209
|
+
Puppet[:http_connect_timeout] + Puppet[:http_read_timeout]
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
# Returns the absolute monotonic deadline for the child, or nil when
|
|
213
|
+
# `runtimeout` is disabled.
|
|
214
|
+
def child_deadline
|
|
215
|
+
runtimeout = Puppet[:runtimeout]
|
|
216
|
+
return nil if runtimeout.nil? || runtimeout <= 0
|
|
217
|
+
|
|
218
|
+
monotonic_now + runtimeout + child_grace_period
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
def monotonic_now
|
|
222
|
+
Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
|
151
223
|
end
|
|
152
224
|
|
|
153
225
|
private
|
|
@@ -304,13 +304,14 @@ class Puppet::Application::Ssl < Puppet::Application
|
|
|
304
304
|
@cert_provider.delete_request(certname)
|
|
305
305
|
cert
|
|
306
306
|
rescue Puppet::HTTP::ResponseError => e
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
307
|
+
body = e.response.body.to_s.strip
|
|
308
|
+
raise Puppet::Error.new(_("Failed to renew certificate: %{code} %{reason}%{body}") % {
|
|
309
|
+
code: e.response.code,
|
|
310
|
+
reason: e.response.reason,
|
|
311
|
+
body: body.empty? ? '' : ": #{body}"
|
|
312
|
+
}, e)
|
|
312
313
|
rescue => e
|
|
313
|
-
raise Puppet::Error.new(_("Failed to
|
|
314
|
+
raise Puppet::Error.new(_("Failed to renew certificate: %{message}") % { message: e.message }, e)
|
|
314
315
|
end
|
|
315
316
|
|
|
316
317
|
def verify(certname)
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
# `tree_each($data) |$value| { <PUPPET CODE BLOCK> }`
|
|
31
31
|
#
|
|
32
32
|
# The parameter `$path` is always given as an `Array` containing the path that when applied to
|
|
33
|
-
# the tree as `$data.dig(*$path) yields the `$value`.
|
|
33
|
+
# the tree as `$data.dig(*$path)` yields the `$value`.
|
|
34
34
|
# The `$value` is the value at that path.
|
|
35
35
|
#
|
|
36
36
|
# For `Array` values, the path will contain `Integer` entries with the array index,
|
data/lib/puppet/generate/type.rb
CHANGED
|
@@ -124,7 +124,7 @@ module Puppet
|
|
|
124
124
|
environment.modules.each do |mod|
|
|
125
125
|
directory = File.join(Puppet::Util::Autoload.cleanpath(mod.plugin_directory), 'puppet', 'type')
|
|
126
126
|
unless Puppet::FileSystem.exist?(directory)
|
|
127
|
-
Puppet.debug "Skipping '#{mod.name}' module because
|
|
127
|
+
Puppet.debug "Skipping '#{mod.name}' module because there is no readable puppet/type/ directory under: #{directory}"
|
|
128
128
|
next
|
|
129
129
|
end
|
|
130
130
|
|
|
@@ -62,21 +62,22 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
|
|
|
62
62
|
end
|
|
63
63
|
end.flatten + Puppet[:factpath].split(File::PATH_SEPARATOR)
|
|
64
64
|
|
|
65
|
-
dirs
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
65
|
+
dirs.select! { |dir| FileTest.directory?(dir) }
|
|
66
|
+
|
|
67
|
+
# Even though we no longer directly load facts in the terminus,
|
|
68
|
+
# print out each .rb in the facts directory as module
|
|
69
|
+
# developers may find that information useful for debugging purposes
|
|
70
|
+
unless dirs.empty?
|
|
71
|
+
Puppet.info _("Loading facts")
|
|
72
|
+
if Puppet::Util::Log.sendlevel?(:debug)
|
|
73
|
+
dirs.each do |dir|
|
|
74
|
+
Dir.glob("#{dir}/*.rb").each do |file|
|
|
75
|
+
Puppet.debug { "Loading facts from #{file}" }
|
|
76
|
+
end
|
|
75
77
|
end
|
|
76
78
|
end
|
|
77
|
-
|
|
78
|
-
true
|
|
79
79
|
end
|
|
80
|
+
|
|
80
81
|
dirs << request.options[:custom_dir] if request.options[:custom_dir]
|
|
81
82
|
Puppet.runtime[:facter].search(*dirs)
|
|
82
83
|
end
|
|
@@ -48,7 +48,10 @@ class DeferredResolver
|
|
|
48
48
|
# # Server facts are always about the local node's version etc.
|
|
49
49
|
# @scope.set_server_facts(node.server_facts)
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
# Must be wrapped in with_context_overrides to ensure global_scope is valid for Puppet-language functions
|
|
52
|
+
compiler.with_context_overrides do
|
|
53
|
+
resolver.resolve_futures(catalog)
|
|
54
|
+
end
|
|
52
55
|
nil
|
|
53
56
|
end
|
|
54
57
|
|
|
@@ -248,7 +248,7 @@ Puppet::Type.type(:package).provide :pacman, :parent => Puppet::Provider::Packag
|
|
|
248
248
|
else
|
|
249
249
|
fail _("Source %{source} is not supported by pacman") % { source: source }
|
|
250
250
|
end
|
|
251
|
-
pacman "--noconfirm", "--noprogressbar", "--
|
|
251
|
+
pacman "--noconfirm", "--noprogressbar", "--upgrade", source
|
|
252
252
|
end
|
|
253
253
|
|
|
254
254
|
def install_from_repo
|
data/lib/puppet/util/rdoc.rb
CHANGED
|
@@ -16,9 +16,12 @@ module Puppet::Util::RDoc
|
|
|
16
16
|
|
|
17
17
|
r = RDoc::RDoc.new
|
|
18
18
|
|
|
19
|
-
#
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
# Documentation is rendered by RDoc's default generator using our custom
|
|
20
|
+
# parser. The historical custom "puppet" generator and its HTML template
|
|
21
|
+
# targeted RDoc 1.x and could not be loaded under any supported RDoc; the
|
|
22
|
+
# template also carried a CC-BY-1.0 license, which is incompatible with
|
|
23
|
+
# the Debian Free Software Guidelines. Both were removed.
|
|
24
|
+
options = ["--quiet",
|
|
22
25
|
"--exclude", "/modules/[^/]*/spec/.*$",
|
|
23
26
|
"--exclude", "/modules/[^/]*/files/.*$",
|
|
24
27
|
"--exclude", "/modules/[^/]*/tests/.*$",
|
data/lib/puppet/util/selinux.rb
CHANGED
|
@@ -18,6 +18,9 @@ module Puppet::Util::SELinux
|
|
|
18
18
|
S_IFDIR = 0o040000
|
|
19
19
|
S_IFLNK = 0o120000
|
|
20
20
|
|
|
21
|
+
@@mounts_cache = nil
|
|
22
|
+
@@mounts_mtime = nil
|
|
23
|
+
|
|
21
24
|
def self.selinux_support?
|
|
22
25
|
return false unless defined?(Selinux)
|
|
23
26
|
if Selinux.is_selinux_enabled == 1
|
|
@@ -259,6 +262,16 @@ module Puppet::Util::SELinux
|
|
|
259
262
|
|
|
260
263
|
# Internal helper function to read and parse /proc/mounts
|
|
261
264
|
def read_mounts
|
|
265
|
+
current_mtime = begin
|
|
266
|
+
File.mtime('/proc/mounts')
|
|
267
|
+
rescue Errno::ENOENT, Errno::ENOTDIR
|
|
268
|
+
nil
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
if @@mounts_cache && current_mtime && @@mounts_mtime == current_mtime
|
|
272
|
+
return @@mounts_cache
|
|
273
|
+
end
|
|
274
|
+
|
|
262
275
|
mounts = ''.dup
|
|
263
276
|
begin
|
|
264
277
|
if File.method_defined? "read_nonblock"
|
|
@@ -292,7 +305,9 @@ module Puppet::Util::SELinux
|
|
|
292
305
|
|
|
293
306
|
mntpoint[params[1]] = params[2]
|
|
294
307
|
end
|
|
295
|
-
|
|
308
|
+
|
|
309
|
+
@@mounts_mtime = current_mtime
|
|
310
|
+
@@mounts_cache = mntpoint
|
|
296
311
|
end
|
|
297
312
|
|
|
298
313
|
# Internal helper function to return which type of filesystem a given file
|
data/lib/puppet/version.rb
CHANGED
data/tasks/vox.rake
CHANGED
|
@@ -9,8 +9,8 @@ namespace :vox do
|
|
|
9
9
|
puts "Setting version to #{version}"
|
|
10
10
|
|
|
11
11
|
data = File.read('lib/puppet/version.rb')
|
|
12
|
-
new_data = data.sub(/PUPPETVERSION = '\d+\.\d+\.\d+(
|
|
13
|
-
|
|
12
|
+
new_data = data.sub(/PUPPETVERSION = '\d+\.\d+\.\d+(-(alpha|beta|rc)\d+)?'/, "PUPPETVERSION = '#{version}'")
|
|
13
|
+
fail 'Failed to update version in lib/puppet/version.rb' if data == new_data
|
|
14
14
|
|
|
15
15
|
File.write('lib/puppet/version.rb', new_data)
|
|
16
16
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: openvox
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 8.
|
|
4
|
+
version: 8.30.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- OpenVox Project
|
|
@@ -143,16 +143,22 @@ dependencies:
|
|
|
143
143
|
name: openfact
|
|
144
144
|
requirement: !ruby/object:Gem::Requirement
|
|
145
145
|
requirements:
|
|
146
|
-
- - "
|
|
146
|
+
- - ">="
|
|
147
147
|
- !ruby/object:Gem::Version
|
|
148
148
|
version: '5.0'
|
|
149
|
+
- - "<"
|
|
150
|
+
- !ruby/object:Gem::Version
|
|
151
|
+
version: '7'
|
|
149
152
|
type: :runtime
|
|
150
153
|
prerelease: false
|
|
151
154
|
version_requirements: !ruby/object:Gem::Requirement
|
|
152
155
|
requirements:
|
|
153
|
-
- - "
|
|
156
|
+
- - ">="
|
|
154
157
|
- !ruby/object:Gem::Version
|
|
155
158
|
version: '5.0'
|
|
159
|
+
- - "<"
|
|
160
|
+
- !ruby/object:Gem::Version
|
|
161
|
+
version: '7'
|
|
156
162
|
- !ruby/object:Gem::Dependency
|
|
157
163
|
name: ostruct
|
|
158
164
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -1257,8 +1263,6 @@ files:
|
|
|
1257
1263
|
- lib/puppet/util/psych_support.rb
|
|
1258
1264
|
- lib/puppet/util/rdoc.rb
|
|
1259
1265
|
- lib/puppet/util/rdoc/code_objects.rb
|
|
1260
|
-
- lib/puppet/util/rdoc/generators/puppet_generator.rb
|
|
1261
|
-
- lib/puppet/util/rdoc/generators/template/puppet/puppet.rb
|
|
1262
1266
|
- lib/puppet/util/rdoc/parser.rb
|
|
1263
1267
|
- lib/puppet/util/rdoc/parser/puppet_parser_core.rb
|
|
1264
1268
|
- lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb
|
|
@@ -1366,7 +1370,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
1366
1370
|
- !ruby/object:Gem::Version
|
|
1367
1371
|
version: 1.3.1
|
|
1368
1372
|
requirements: []
|
|
1369
|
-
rubygems_version: 4.0.
|
|
1373
|
+
rubygems_version: 4.0.16
|
|
1370
1374
|
specification_version: 4
|
|
1371
1375
|
summary: OpenVox, a community implementation of Puppet -- an automated configuration
|
|
1372
1376
|
management tool
|