Skip to content
3 changes: 3 additions & 0 deletions configs/components/_base-ruby.rb
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,9 @@
elsif platform.architecture == 'arm64' && platform.os_version.to_i >= 13
pkg.environment 'CC', 'clang'
end
else
pkg.environment 'LDFLAGS', settings[:ldflags]
pkg.environment 'optflags', settings[:cflags]
end

####################
Expand Down
10 changes: 9 additions & 1 deletion configs/components/augeas.rb
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,15 @@
end
end

if platform.name =~ /sles-15|el-8|debian-10/ || platform.is_fedora?
# conditional taken from projects/_shared-compiler-settings
# TODO: refactor condition
if ((platform.is_sles? && platform.os_version.to_i >= 15) ||
(platform.is_el? && platform.os_version.to_i >= 8) ||
platform.is_debian? ||
(platform.is_ubuntu? && platform.os_version.to_i >= 20) ||
(platform.is_amazon? && platform.os_version.to_i >= 2023) ||
platform.is_fedora?
)
pkg.environment 'CFLAGS', settings[:cflags]
pkg.environment 'CPPFLAGS', settings[:cppflags]
pkg.environment "LDFLAGS", settings[:ldflags]
Expand Down
5 changes: 2 additions & 3 deletions configs/components/libedit.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,8 @@
elsif platform.is_aix?
pkg.environment "CC", "/opt/pl-build-tools/bin/gcc"
pkg.environment "LDFLAGS", settings[:ldflags]
end

if platform.is_macos?
else
pkg.environment "LDFLAGS", settings[:ldflags]
pkg.environment "CFLAGS", settings[:cflags]
end

Expand Down
10 changes: 9 additions & 1 deletion configs/components/ruby-2.7.8.rb
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,15 @@

special_flags = " --prefix=#{ruby_dir} --with-opt-dir=#{settings[:prefix]} "

if platform.name =~ /sles-15|el-8|debian-10/
# conditional taken from projects/_shared-compiler-settings
# TODO: refactor condition
if ((platform.is_sles? && platform.os_version.to_i >= 15) ||
(platform.is_el? && platform.os_version.to_i >= 8) ||
platform.is_debian? ||
(platform.is_ubuntu? && platform.os_version.to_i >= 20) ||
(platform.is_amazon? && platform.os_version.to_i >= 2023) ||
platform.is_fedora?
)
special_flags += " CFLAGS='#{settings[:cflags]}' LDFLAGS='#{settings[:ldflags]}' CPPFLAGS='#{settings[:cppflags]}' "
end

Expand Down
10 changes: 9 additions & 1 deletion configs/components/ruby-3.2.3.rb
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,15 @@

special_flags = " --prefix=#{ruby_dir} --with-opt-dir=#{settings[:prefix]} "

if platform.name =~ /sles-15|el-8|debian-10/
# conditional taken from projects/_shared-compiler-settings
# TODO: refactor condition
if ((platform.is_sles? && platform.os_version.to_i >= 15) ||
(platform.is_el? && platform.os_version.to_i >= 8) ||
platform.is_debian? ||
(platform.is_ubuntu? && platform.os_version.to_i >= 20) ||
(platform.is_amazon? && platform.os_version.to_i >= 2023) ||
platform.is_fedora?
)
special_flags += " CFLAGS='#{settings[:cflags]}' LDFLAGS='#{settings[:ldflags]}' CPPFLAGS='#{settings[:cppflags]}' "
end

Expand Down
2 changes: 1 addition & 1 deletion configs/components/runtime-bolt.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
pkg.install_file "#{settings[:tools_root]}/bin/libgdbm_compat-4.dll", "#{settings[:ruby_bindir]}/libgdbm_compat-4.dll"
pkg.install_file "#{settings[:tools_root]}/bin/libiconv-2.dll", "#{settings[:ruby_bindir]}/libiconv-2.dll"
pkg.install_file "#{settings[:tools_root]}/bin/libffi-6.dll", "#{settings[:ruby_bindir]}/libffi-6.dll"
elsif platform.is_macos? or platform.name =~ /sles-15|el-8|debian-10|ubuntu-20.04|ubuntu-22.04/ || platform.is_fedora?
elsif platform.is_macos? || (platform.is_sles? && platform.os_version.to_i >= 15) || (platform.is_el? && platform.os_version.to_i >= 8) || platform.is_debian? || (platform.is_ubuntu? && platform.os_version.to_i >= 20) || platform.is_fedora?

# Do nothing for distros that have a suitable compiler do not use pl-build-tools

Expand Down
19 changes: 2 additions & 17 deletions configs/projects/_shared-agent-settings.rb
Original file line number Diff line number Diff line change
Expand Up @@ -140,23 +140,8 @@
proj.setting(:platform_triple, platform_triple)
proj.setting(:host, host)

# Define default CFLAGS and LDFLAGS for most platforms, and then
# tweak or adjust them as needed.
proj.setting(:cppflags, "-I#{proj.includedir} -I/opt/pl-build-tools/include")
proj.setting(:cflags, "#{proj.cppflags}")
proj.setting(:ldflags, "-L#{proj.libdir} -L/opt/pl-build-tools/lib -Wl,-rpath=#{proj.libdir}")

# Platform specific overrides or settings, which may override the defaults

# Harden Linux ELF binaries by compiling with PIE (Position Independent Executables) support,
# stack canary and full RELRO.
# We only do this on platforms that use their default OS toolchain since pl-gcc versions
# are too old to support these flags.
if platform.name =~ /sles-15|el-8|debian-10/ || platform.is_fedora?
proj.setting(:cppflags, "-I#{proj.includedir} -D_FORTIFY_SOURCE=2")
proj.setting(:cflags, '-fstack-protector-strong -fno-plt -O2')
proj.setting(:ldflags, "-L#{proj.libdir} -Wl,-rpath=#{proj.libdir},-z,relro,-z,now")
end
# Load default compiler settings
instance_eval File.read('configs/projects/_shared-compiler-settings.rb')

if ruby_version_x == "3"
proj.setting(:openssl_version, '3.0')
Expand Down
6 changes: 2 additions & 4 deletions configs/projects/_shared-client-tools-runtime.rb
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,8 @@
proj.setting(:ldflags, "-L#{proj.tools_root}/lib -L#{proj.gcc_root}/lib -L#{proj.libdir} -Wl,--nxcompat -Wl,--dynamicbase")
proj.setting(:cygwin, "nodosfilewarning winsymlinks:native")
else
proj.setting(:tools_root, "/opt/pl-build-tools")
proj.setting(:cppflags, "-I#{proj.includedir} -I/opt/pl-build-tools/include")
proj.setting(:cflags, "#{proj.cppflags}")
proj.setting(:ldflags, "-L#{proj.libdir} -L/opt/pl-build-tools/lib -Wl,-rpath=#{proj.libdir}")
# Load default compiler settings
instance_eval File.read('configs/projects/_shared-compiler-settings.rb')
end

# What to build?
Expand Down
23 changes: 23 additions & 0 deletions configs/projects/_shared-compiler-settings.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Define default CFLAGS and LDFLAGS for most platforms, and then
# tweak or adjust them as needed.
proj.setting(:cppflags, "-I#{proj.includedir} -I/opt/pl-build-tools/include")
proj.setting(:cflags, "-frecord-gcc-switches #{proj.cppflags}")
proj.setting(:ldflags, "-L#{proj.libdir} -L/opt/pl-build-tools/lib -Wl,-rpath=#{proj.libdir}")

# Platform specific overrides or settings, which may override the defaults

# Harden Linux ELF binaries by compiling with PIE (Position Independent Executables) support,
# stack canary and full RELRO.
# We only do this on platforms that use their default OS toolchain since pl-gcc versions
# are too old to support these flags.
if ((platform.is_sles? && platform.os_version.to_i >= 15) ||
(platform.is_el? && platform.os_version.to_i >= 8) ||
platform.is_debian? ||
(platform.is_ubuntu? && platform.os_version.to_i >= 20) ||
(platform.is_amazon? && platform.os_version.to_i >= 2023) ||
platform.is_fedora?
)
proj.setting(:cppflags, "-I#{proj.includedir} -D_FORTIFY_SOURCE=2")
proj.setting(:cflags, '-frecord-gcc-switches -fstack-protector-strong -fno-plt -O2')
proj.setting(:ldflags, "-L#{proj.libdir} -Wl,-rpath=#{proj.libdir},-z,relro,-z,now")
end
19 changes: 2 additions & 17 deletions configs/projects/_shared-pe-bolt-server_with_ruby.rb
Original file line number Diff line number Diff line change
Expand Up @@ -75,23 +75,8 @@
ruby_base_version = proj.ruby_version.gsub(/(\d+)\.(\d+)\.(\d+)/, '\1.\2.0')
proj.setting(:gem_home, File.join(proj.libdir, 'ruby', 'gems', ruby_base_version))

# Define default CFLAGS and LDFLAGS for most platforms, and then
# tweak or adjust them as needed.
proj.setting(:cppflags, "-I#{proj.includedir} -I/opt/pl-build-tools/include")
proj.setting(:cflags, "#{proj.cppflags}")
proj.setting(:ldflags, "-L#{proj.libdir} -L/opt/pl-build-tools/lib -Wl,-rpath=#{proj.libdir}")

# Platform specific overrides or settings, which may override the defaults

# Harden Linux ELF binaries by compiling with PIE (Position Independent Executables) support,
# stack canary and full RELRO.
# We only do this on platforms that use their default OS toolchain since pl-gcc versions
# are too old to support these flags.
if platform.name =~ /sles-15|el-8|debian-10/ || platform.is_fedora?
proj.setting(:cppflags, "-I#{proj.includedir} -D_FORTIFY_SOURCE=2")
proj.setting(:cflags, '-fstack-protector-strong -fno-plt -O2')
proj.setting(:ldflags, "-L#{proj.libdir} -Wl,-rpath=#{proj.libdir},-z,relro,-z,now")
end
# Load default compiler settings
instance_eval File.read('configs/projects/_shared-compiler-settings.rb')

# Required to build ruby
proj.component 'libffi'
Expand Down
7 changes: 2 additions & 5 deletions configs/projects/_shared-pe-installer-runtime.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,8 @@
proj.setting(:artifactory_url, "https://artifactory.delivery.puppetlabs.net/artifactory")
proj.setting(:buildsources_url, "#{proj.artifactory_url}/generic/buildsources")

# Define default CFLAGS and LDFLAGS for most platforms, and then
# tweak or adjust them as needed.
proj.setting(:cppflags, "-I#{proj.includedir} -I/opt/pl-build-tools/include")
proj.setting(:cflags, "#{proj.cppflags}")
proj.setting(:ldflags, "-L#{proj.libdir} -L/opt/pl-build-tools/lib -Wl,-rpath=#{proj.libdir}")
# Load default compiler settings
instance_eval File.read('configs/projects/_shared-compiler-settings.rb')

# These flags are applied in addition to the defaults in configs/component/openssl.rb.
proj.setting(:openssl_extra_configure_flags, [
Expand Down
7 changes: 2 additions & 5 deletions configs/projects/bolt-runtime.rb
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,8 @@
proj.setting(:artifactory_url, "https://artifactory.delivery.puppetlabs.net/artifactory")
proj.setting(:buildsources_url, "#{proj.artifactory_url}/generic/buildsources")

# Define default CFLAGS and LDFLAGS for most platforms, and then
# tweak or adjust them as needed.
proj.setting(:cppflags, "-I#{proj.includedir} -I/opt/pl-build-tools/include")
proj.setting(:cflags, "#{proj.cppflags}")
proj.setting(:ldflags, "-L#{proj.libdir} -L/opt/pl-build-tools/lib -Wl,-rpath=#{proj.libdir}")
# Load default compiler settings
instance_eval File.read(File.join(File.dirname(__FILE__), '_shared-compiler-settings.rb'))

# Platform specific overrides or settings, which may override the defaults
if platform.is_windows?
Expand Down
7 changes: 2 additions & 5 deletions configs/projects/pdk-runtime.rb
Original file line number Diff line number Diff line change
Expand Up @@ -111,11 +111,8 @@
proj.setting(:host, "--host #{platform.platform_triple}")
end

# Define default CFLAGS and LDFLAGS for most platforms, and then
# tweak or adjust them as needed.
proj.setting(:cppflags, "-I#{proj.includedir} -I/opt/pl-build-tools/include")
proj.setting(:cflags, proj.cppflags.to_s)
proj.setting(:ldflags, "-L#{proj.libdir} -L/opt/pl-build-tools/lib -Wl,-rpath=#{proj.libdir}")
# Load default compiler settings
instance_eval File.read(File.join(File.dirname(__FILE__), '_shared-compiler-settings.rb'))

if platform.is_windows?
proj.setting(:gcc_root, 'C:/tools/mingw64')
Expand Down