Skip to content

Commit 3eedb9e

Browse files
authored
Merge pull request #806 from nmburgan/issue/master/pe-36494_installer_gem_deps
(PE-36494,PE-37833) Standardize pe-installer-runtime on shared format with more deps
2 parents f23dc6b + a1ed0f0 commit 3eedb9e

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)