Skip to content

Commit a1ed0f0

Browse files
author
Nick Burgan-Illig
committed
(PE-36494) Standardize pe-installer-runtime on shared format with more deps
This standardizes the pe-installer-runtime definition to the format used by the other runtimes, using a shared definition for common things between 2021.7.x and main. It also expands the list of components so we are providing all dependencies to Bolt and Puppet. This is so that we don't get surprised when pe-installer-vanagon gem installs Bolt and pulls in dependencies that may break on the version of Ruby we're using.
1 parent f23dc6b commit a1ed0f0

File tree

3 files changed

+158
-196
lines changed

3 files changed

+158
-196
lines changed
Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
platform = proj.get_platform
2+
proj.version_from_git
3+
proj.generate_archives true
4+
proj.generate_packages false
5+
6+
proj.description "The PE Installer runtime contains third-party components needed for PE Installer standalone packaging"
7+
proj.license "See components"
8+
proj.vendor "Puppet, Inc. <[email protected]>"
9+
proj.homepage "https://puppet.com"
10+
proj.identifier "com.puppetlabs"
11+
12+
# Used in component configurations to conditionally include dependencies
13+
proj.setting(:runtime_project, 'pe-installer')
14+
15+
proj.setting(:prefix, "/opt/puppetlabs/installer")
16+
proj.setting(:ruby_dir, proj.prefix)
17+
proj.setting(:bindir, File.join(proj.prefix, 'bin'))
18+
proj.setting(:ruby_bindir, proj.bindir)
19+
proj.setting(:libdir, File.join(proj.prefix, 'lib'))
20+
proj.setting(:includedir, File.join(proj.prefix, "include"))
21+
proj.setting(:datadir, File.join(proj.prefix, "share"))
22+
proj.setting(:mandir, File.join(proj.datadir, "man"))
23+
24+
proj.setting(:host_ruby, File.join(proj.ruby_bindir, "ruby"))
25+
proj.setting(:host_gem, File.join(proj.ruby_bindir, "gem"))
26+
27+
ruby_base_version = proj.ruby_version.gsub(/(\d+)\.(\d+)\.(\d+)/, '\1.\2.0')
28+
proj.setting(:gem_home, File.join(proj.libdir, 'ruby', 'gems', ruby_base_version))
29+
proj.setting(:gem_install, "#{proj.host_gem} install --no-document --local --bindir=#{proj.ruby_bindir}")
30+
31+
proj.setting(:artifactory_url, "https://artifactory.delivery.puppetlabs.net/artifactory")
32+
proj.setting(:buildsources_url, "#{proj.artifactory_url}/generic/buildsources")
33+
34+
# Define default CFLAGS and LDFLAGS for most platforms, and then
35+
# tweak or adjust them as needed.
36+
proj.setting(:cppflags, "-I#{proj.includedir} -I/opt/pl-build-tools/include")
37+
proj.setting(:cflags, "#{proj.cppflags}")
38+
proj.setting(:ldflags, "-L#{proj.libdir} -L/opt/pl-build-tools/lib -Wl,-rpath=#{proj.libdir}")
39+
40+
# These flags are applied in addition to the defaults in configs/component/openssl.rb.
41+
proj.setting(:openssl_extra_configure_flags, [
42+
'no-dtls',
43+
'no-dtls1',
44+
'no-idea',
45+
'no-seed',
46+
'no-weak-ssl-ciphers',
47+
'-DOPENSSL_NO_HEARTBEATS',
48+
])
49+
50+
proj.setting(:augeas_version, '1.14.1')
51+
52+
########
53+
# Load shared agent components
54+
# When we want to run Bolt from the pe-installer package, we want our
55+
# puppet to have the same gems as the default puppet agent install.
56+
########
57+
instance_eval File.read('configs/projects/_shared-agent-components.rb')
58+
59+
# pl-build-tools
60+
proj.component 'runtime-pe-installer'
61+
62+
# Below are copied from pe-bolt-server, since we're shipping much the same thing.
63+
# Deps in _shared-agent-components are removed, and we do not include the
64+
# agent gem.
65+
66+
# R10k dependencies
67+
proj.component('rubygem-gettext-setup')
68+
69+
# hiera-eyaml and its dependencies
70+
proj.component('rubygem-highline')
71+
proj.component('rubygem-optimist')
72+
proj.component('rubygem-hiera-eyaml')
73+
74+
# faraday and its dependencies
75+
proj.component('rubygem-faraday')
76+
proj.component('rubygem-faraday-em_http')
77+
proj.component('rubygem-faraday-em_synchrony')
78+
proj.component('rubygem-faraday-excon')
79+
proj.component('rubygem-faraday-httpclient')
80+
proj.component('rubygem-faraday-multipart')
81+
proj.component('rubygem-faraday-net_http')
82+
proj.component('rubygem-faraday-net_http_persistent')
83+
proj.component('rubygem-faraday-patron')
84+
proj.component('rubygem-faraday-rack')
85+
proj.component('rubygem-faraday-retry')
86+
proj.component('rubygem-faraday_middleware')
87+
proj.component('rubygem-ruby2_keywords')
88+
89+
# Core dependencies
90+
proj.component('rubygem-addressable')
91+
proj.component('rubygem-aws-eventstream')
92+
proj.component('rubygem-aws-partitions')
93+
proj.component('rubygem-aws-sdk-core')
94+
proj.component('rubygem-aws-sdk-ec2')
95+
proj.component('rubygem-aws-sigv4')
96+
proj.component('rubygem-bcrypt_pbkdf')
97+
proj.component('rubygem-bindata')
98+
proj.component('rubygem-builder')
99+
proj.component('rubygem-CFPropertyList')
100+
proj.component('rubygem-colored2')
101+
proj.component('rubygem-concurrent-ruby')
102+
proj.component('rubygem-connection_pool')
103+
proj.component('rubygem-cri')
104+
proj.component('rubygem-ed25519')
105+
proj.component('rubygem-erubi')
106+
proj.component('rubygem-facter')
107+
proj.component('rubygem-ffi')
108+
proj.component('rubygem-gssapi')
109+
proj.component('rubygem-gyoku')
110+
proj.component('rubygem-hiera')
111+
proj.component('rubygem-httpclient')
112+
proj.component('rubygem-jmespath')
113+
proj.component('rubygem-jwt')
114+
proj.component('rubygem-little-plugger')
115+
proj.component('rubygem-log4r')
116+
proj.component('rubygem-logging')
117+
proj.component('rubygem-minitar')
118+
proj.component('rubygem-molinillo')
119+
proj.component('rubygem-multi_json')
120+
proj.component('rubygem-multipart-post')
121+
proj.component('rubygem-net-http-persistent')
122+
proj.component('rubygem-net-scp')
123+
proj.component('rubygem-net-ssh-krb')
124+
proj.component('rubygem-nori')
125+
proj.component('rubygem-rubyntlm')
126+
proj.component('rubygem-orchestrator_client')
127+
proj.component('rubygem-public_suffix')
128+
proj.component('rubygem-paint')
129+
proj.component('rubygem-puppet_forge')
130+
proj.component('rubygem-puppet-resource_api')
131+
proj.component('rubygem-puppet-strings')
132+
proj.component('rubygem-puppetfile-resolver')
133+
proj.component('rubygem-r10k')
134+
proj.component('rubygem-rgen')
135+
proj.component('rubygem-rubyntlm')
136+
proj.component('rubygem-ruby_smb')
137+
proj.component('rubygem-rubyzip')
138+
proj.component('rubygem-scanf')
139+
proj.component('rubygem-terminal-table')
140+
proj.component('rubygem-thor')
141+
proj.component('rubygem-unicode-display_width')
142+
proj.component('rubygem-webrick')
143+
proj.component('rubygem-yard')
144+
145+
# Core Windows dependencies
146+
proj.component('rubygem-windows_error')
147+
proj.component('rubygem-winrm')
148+
proj.component('rubygem-winrm-fs')
149+
150+
# What to include in package?
151+
proj.directory proj.prefix
152+
153+
# Export the settings for the current project and platform as yaml during builds
154+
proj.publish_yaml_settings
155+
156+
proj.timeout 7200 if platform.is_windows?
Lines changed: 1 addition & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
project 'pe-installer-runtime-2021.7.x' do |proj|
2-
# Used in component configurations to conditionally include dependencies
3-
proj.setting(:runtime_project, 'pe-installer')
42
proj.setting(:ruby_version, '2.7.8')
5-
proj.setting(:augeas_version, '1.11.0')
63
# We need to explicitly define 1.1.1k here to avoid
74
# build dep conflicts between openssl-1.1.1 needed by curl
85
# and krb5-devel
@@ -11,101 +8,5 @@
118
else
129
proj.setting(:openssl_version, '1.1.1')
1310
end
14-
platform = proj.get_platform
15-
16-
proj.version_from_git
17-
proj.generate_archives true
18-
proj.generate_packages false
19-
20-
proj.description "The PE Installer runtime contains third-party components needed for PE Installer standalone packaging"
21-
proj.license "See components"
22-
proj.vendor "Puppet, Inc. <[email protected]>"
23-
proj.homepage "https://puppet.com"
24-
proj.identifier "com.puppetlabs"
25-
26-
proj.setting(:prefix, "/opt/puppetlabs/installer")
27-
28-
proj.setting(:ruby_dir, proj.prefix)
29-
proj.setting(:bindir, File.join(proj.prefix, 'bin'))
30-
proj.setting(:ruby_bindir, proj.bindir)
31-
proj.setting(:libdir, File.join(proj.prefix, 'lib'))
32-
proj.setting(:includedir, File.join(proj.prefix, "include"))
33-
proj.setting(:datadir, File.join(proj.prefix, "share"))
34-
proj.setting(:mandir, File.join(proj.datadir, "man"))
35-
36-
proj.setting(:host_ruby, File.join(proj.ruby_bindir, "ruby"))
37-
proj.setting(:host_gem, File.join(proj.ruby_bindir, "gem"))
38-
39-
ruby_base_version = proj.ruby_version.gsub(/(\d+)\.(\d+)\.(\d+)/, '\1.\2.0')
40-
proj.setting(:gem_home, File.join(proj.libdir, 'ruby', 'gems', ruby_base_version))
41-
proj.setting(:gem_install, "#{proj.host_gem} install --no-document --local --bindir=#{proj.ruby_bindir}")
42-
43-
proj.setting(:artifactory_url, "https://artifactory.delivery.puppetlabs.net/artifactory")
44-
proj.setting(:buildsources_url, "#{proj.artifactory_url}/generic/buildsources")
45-
46-
# Define default CFLAGS and LDFLAGS for most platforms, and then
47-
# tweak or adjust them as needed.
48-
proj.setting(:cppflags, "-I#{proj.includedir} -I/opt/pl-build-tools/include")
49-
proj.setting(:cflags, "#{proj.cppflags}")
50-
proj.setting(:ldflags, "-L#{proj.libdir} -L/opt/pl-build-tools/lib -Wl,-rpath=#{proj.libdir}")
51-
52-
# These flags are applied in addition to the defaults in configs/component/openssl.rb.
53-
proj.setting(:openssl_extra_configure_flags, [
54-
'no-dtls',
55-
'no-dtls1',
56-
'no-idea',
57-
'no-seed',
58-
'no-weak-ssl-ciphers',
59-
'-DOPENSSL_NO_HEARTBEATS',
60-
])
61-
62-
# What to build?
63-
# --------------
64-
#
65-
66-
# rubygem-net-ssh included in shared-agent-components
67-
proj.setting(:rubygem_net_ssh_version, '5.2.0')
68-
69-
########
70-
# Load shared agent components
71-
# When we want to run Bolt from the pe-installer package, we want our
72-
# puppet to have the same gems as the default puppet agent install.
73-
########
74-
75-
instance_eval File.read(File.join(File.dirname(__FILE__), '_shared-agent-components.rb'))
76-
77-
78-
# pl-build-tools
79-
proj.component 'runtime-pe-installer'
80-
81-
# R10k dependencies
82-
proj.component 'rubygem-gettext-setup'
83-
84-
# net-ssh dependencies for el8's OpenSSH default key format
85-
proj.component 'rubygem-bcrypt_pbkdf'
86-
proj.component 'rubygem-ed25519'
87-
88-
# main puppet agent components
89-
# boost and yaml-cpp omitted since we don't need
90-
# pxp-agent deps
91-
proj.component 'rubygem-concurrent-ruby'
92-
proj.component 'rubygem-ffi'
93-
proj.component 'rubygem-multi_json'
94-
proj.component 'rubygem-optimist'
95-
proj.component 'rubygem-highline'
96-
proj.component 'rubygem-hiera-eyaml'
97-
proj.component 'rubygem-httpclient'
98-
proj.component 'rubygem-thor'
99-
proj.component 'rubygem-sys-filesystem'
100-
proj.component 'rubygem-prime'
101-
proj.component 'rubygem-erubi'
102-
proj.component 'rubygem-nori'
103-
104-
# What to include in package?
105-
proj.directory proj.prefix
106-
107-
# Export the settings for the current project and platform as yaml during builds
108-
proj.publish_yaml_settings
109-
110-
proj.timeout 7200 if platform.is_windows?
11+
instance_eval File.read(File.join(File.dirname(__FILE__), '_shared-pe-installer-runtime.rb'))
11112
end
Lines changed: 1 addition & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -1,107 +1,12 @@
11
project 'pe-installer-runtime-main' do |proj|
2-
# Used in component configurations to conditionally include dependencies
3-
proj.setting(:runtime_project, 'pe-installer')
42
proj.setting(:ruby_version, '3.2.3')
5-
proj.setting(:augeas_version, '1.14.1')
63
proj.setting(:openssl_version, '3.0')
74
# NLTM uses MD4 unconditionally in its protocol, so legacy algos must be
85
# enabled in OpenSSL >= 3.0 for Bolt's WinRM transport to work.
96
# We DO NOT WANT legacy algos enabled for the Puppet Agent runtime.
107
proj.setting(:use_legacy_openssl_algos, true)
11-
platform = proj.get_platform
12-
13-
proj.version_from_git
14-
proj.generate_archives true
15-
proj.generate_packages false
16-
17-
proj.description "The PE Installer runtime contains third-party components needed for PE Installer standalone packaging"
18-
proj.license "See components"
19-
proj.vendor "Puppet, Inc. <[email protected]>"
20-
proj.homepage "https://puppet.com"
21-
proj.identifier "com.puppetlabs"
22-
23-
proj.setting(:prefix, "/opt/puppetlabs/installer")
24-
25-
proj.setting(:ruby_dir, proj.prefix)
26-
proj.setting(:bindir, File.join(proj.prefix, 'bin'))
27-
proj.setting(:ruby_bindir, proj.bindir)
28-
proj.setting(:libdir, File.join(proj.prefix, 'lib'))
29-
proj.setting(:includedir, File.join(proj.prefix, "include"))
30-
proj.setting(:datadir, File.join(proj.prefix, "share"))
31-
proj.setting(:mandir, File.join(proj.datadir, "man"))
32-
33-
proj.setting(:host_ruby, File.join(proj.ruby_bindir, "ruby"))
34-
proj.setting(:host_gem, File.join(proj.ruby_bindir, "gem"))
35-
36-
ruby_base_version = proj.ruby_version.gsub(/(\d+)\.(\d+)\.(\d+)/, '\1.\2.0')
37-
proj.setting(:gem_home, File.join(proj.libdir, 'ruby', 'gems', ruby_base_version))
38-
proj.setting(:gem_install, "#{proj.host_gem} install --no-document --local --bindir=#{proj.ruby_bindir}")
39-
40-
proj.setting(:artifactory_url, "https://artifactory.delivery.puppetlabs.net/artifactory")
41-
proj.setting(:buildsources_url, "#{proj.artifactory_url}/generic/buildsources")
42-
43-
# Define default CFLAGS and LDFLAGS for most platforms, and then
44-
# tweak or adjust them as needed.
45-
proj.setting(:cppflags, "-I#{proj.includedir} -I/opt/pl-build-tools/include")
46-
proj.setting(:cflags, "#{proj.cppflags}")
47-
proj.setting(:ldflags, "-L#{proj.libdir} -L/opt/pl-build-tools/lib -Wl,-rpath=#{proj.libdir}")
48-
49-
# These flags are applied in addition to the defaults in configs/component/openssl.rb.
50-
proj.setting(:openssl_extra_configure_flags, [
51-
'no-dtls',
52-
'no-dtls1',
53-
'no-idea',
54-
'no-seed',
55-
'no-weak-ssl-ciphers',
56-
'-DOPENSSL_NO_HEARTBEATS',
57-
])
58-
59-
# What to build?
60-
# --------------
61-
#
628

639
# rubygem-net-ssh included in shared-agent-components
6410
proj.setting(:rubygem_net_ssh_version, '7.0.1')
65-
66-
########
67-
# Load shared agent components
68-
# When we want to run Bolt from the pe-installer package, we want our
69-
# puppet to have the same gems as the default puppet agent install.
70-
########
71-
72-
instance_eval File.read(File.join(File.dirname(__FILE__), '_shared-agent-components.rb'))
73-
74-
75-
# pl-build-tools
76-
proj.component 'runtime-pe-installer'
77-
78-
# R10k dependencies
79-
proj.component 'rubygem-gettext-setup'
80-
81-
# net-ssh dependencies for el8's OpenSSH default key format
82-
proj.component 'rubygem-bcrypt_pbkdf'
83-
proj.component 'rubygem-ed25519'
84-
85-
# main puppet agent components
86-
# boost and yaml-cpp omitted since we don't need
87-
# pxp-agent deps
88-
proj.component 'rubygem-concurrent-ruby'
89-
proj.component 'rubygem-ffi'
90-
proj.component 'rubygem-multi_json'
91-
proj.component 'rubygem-optimist'
92-
proj.component 'rubygem-highline'
93-
proj.component 'rubygem-hiera-eyaml'
94-
proj.component 'rubygem-httpclient'
95-
proj.component 'rubygem-thor'
96-
proj.component 'rubygem-sys-filesystem'
97-
proj.component 'rubygem-prime'
98-
proj.component 'rubygem-erubi'
99-
100-
# What to include in package?
101-
proj.directory proj.prefix
102-
103-
# Export the settings for the current project and platform as yaml during builds
104-
proj.publish_yaml_settings
105-
106-
proj.timeout 7200 if platform.is_windows?
11+
instance_eval File.read(File.join(File.dirname(__FILE__), '_shared-pe-installer-runtime.rb'))
10712
end

0 commit comments

Comments
 (0)