Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
---
name: Build puppet-runtime

permissions:
contents: read

on:
workflow_dispatch:
inputs:
Expand All @@ -15,15 +18,36 @@ on:
description: 'A comma-separated list of platforms to build for. Do not include spaces. If not provided, will use the default list of platform supported by OpenVox.'
required: false
type: string
vanagon_branch:
description: 'The branch of the vanagon repository to use'
required: false
type: string
default: 'main'
use_dev:
description: 'Use the "dev" branch of the shared-actions repo'
required: false
type: boolean
default: false

permissions:
contents: read # minimal required permissions to clone repo

jobs:
build:
if: ${{ github.event.inputs.use_dev == 'false' }}
uses: 'openvoxproject/shared-actions/.github/workflows/build_vanagon.yml@main'
with:
ref: ${{ inputs.ref }}
project_name: ${{ inputs.project_name }}
platform_list: ${{ inputs.platform_list }}
vanagon_branch: ${{ inputs.vanagon_branch }}
secrets: inherit
build_dev:
if: ${{ github.event.inputs.use_dev == 'true' }}
uses: 'openvoxproject/shared-actions/.github/workflows/build_vanagon.yml@dev'
with:
ref: ${{ inputs.ref }}
project_name: ${{ inputs.project_name }}
platform_list: ${{ inputs.platform_list }}
vanagon_branch: ${{ inputs.vanagon_branch }}
secrets: inherit
10 changes: 7 additions & 3 deletions configs/components/_base-ruby-augeas.rb
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,14 @@
ruby = "#{host_ruby} -r#{settings[:datadir]}/doc/rbconfig-#{ruby_version}-orig.rb"
pkg.environment "LDFLAGS", settings[:ldflags]
end
elsif platform.is_macos? && platform.architecture == 'arm64' && platform.os_version.to_i >= 13
pkg.environment "PATH", "$(PATH):/opt/homebrew/bin"
pkg.environment 'CC', 'clang'
elsif platform.is_macos?
if platform.architecture == 'arm64'
pkg.environment "PATH", "$(PATH):/opt/homebrew/bin"
end
pkg.environment 'CC', settings[:cc]
pkg.environment 'CFLAGS', settings[:cflags]
pkg.environment "LDFLAGS", settings[:ldflags]
pkg.environment 'MACOSX_DEPLOYMENT_TARGET', settings[:deployment_target]
ruby = File.join(ruby_bindir, 'ruby')
else
ruby = File.join(ruby_bindir, 'ruby')
Expand Down
10 changes: 3 additions & 7 deletions configs/components/_base-ruby.rb
Original file line number Diff line number Diff line change
Expand Up @@ -65,13 +65,9 @@
pkg.environment 'CFLAGS', optflags
elsif platform.is_macos?
pkg.environment 'optflags', settings[:cflags]
if platform.is_cross_compiled?
pkg.build_requires "ruby@#{ruby_version_y}"
pkg.environment 'CC', 'clang -target arm64-apple-macos11' if platform.name =~ /osx-11/
pkg.environment 'CC', 'clang -target arm64-apple-macos12' if platform.name =~ /osx-12/
elsif platform.architecture == 'arm64' && platform.os_version.to_i >= 13
pkg.environment 'CC', 'clang'
end
pkg.environment 'CFLAGS', settings[:cflags]
pkg.environment 'CC', settings[:cc]
pkg.environment 'MACOSX_DEPLOYMENT_TARGET', settings[:deployment_target]
elsif settings[:supports_pie]
pkg.environment 'LDFLAGS', settings[:ldflags]
pkg.environment 'optflags', settings[:cflags]
Expand Down
11 changes: 4 additions & 7 deletions configs/components/augeas.rb
Original file line number Diff line number Diff line change
Expand Up @@ -116,12 +116,9 @@
pkg.environment 'CFLAGS', settings[:cflags]
pkg.environment 'CPPFLAGS', settings[:cppflags]
pkg.environment "LDFLAGS", settings[:ldflags]
if platform.is_cross_compiled?
pkg.environment 'CC', 'clang -target arm64-apple-macos11' if platform.name =~ /osx-11/
pkg.environment 'CC', 'clang -target arm64-apple-macos12' if platform.name =~ /osx-12/
elsif platform.architecture == 'arm64' && platform.os_version.to_i >= 13
pkg.environment 'CC', 'clang'
end
pkg.environment 'CC', settings[:cc]
pkg.environment 'CXX', settings[:cxx]
pkg.environment 'MACOSX_DEPLOYMENT_TARGET', settings[:deployment_target]
end

if settings[:supports_pie]
Expand All @@ -132,7 +129,7 @@

# fix libtool linking on big sur
if platform.is_macos?
if platform.os_version.to_i >= 13 && platform.architecture == 'arm64'
if platform.architecture == 'arm64'
pkg.configure { ["/opt/homebrew/bin/autoreconf --force --install"] }
else
pkg.configure { ["/usr/local/bin/autoreconf --force --install"] }
Expand Down
16 changes: 9 additions & 7 deletions configs/components/curl.rb
Original file line number Diff line number Diff line change
Expand Up @@ -67,17 +67,19 @@
configure_options << "--disable-ntlm"
end

extra_cflags = []
if platform.is_cross_compiled? && platform.is_macos?
extra_cflags << '-mmacosx-version-min=11.0 -arch arm64' if platform.name =~ /osx-11/
extra_cflags << '-mmacosx-version-min=12.0 -arch arm64' if platform.name =~ /osx-12/
end

if (platform.is_solaris? && platform.os_version == '11') || platform.is_aix?
# Makefile generation with automatic dependency tracking fails on these platforms
configure_options << "--disable-dependency-tracking"
end

if platform.is_macos?
pkg.environment 'MACOSX_DEPLOYMENT_TARGET', settings[:deployment_target]
pkg.environment 'CFLAGS', settings[:cflags]
pkg.environment 'CC', settings[:cc]
pkg.environment 'CPPFLAGS', settings[:cppflags]
pkg.environment 'CXX', settings[:cxx]
end

pkg.configure do
["CPPFLAGS='#{settings[:cppflags]}' \
LDFLAGS='#{ldflags}' \
Expand All @@ -89,7 +91,7 @@
--with-ca-bundle=#{settings[:prefix]}/ssl/cert.pem \
--with-ca-path=#{settings[:prefix]}/ssl/certs \
--without-nghttp2 \
CFLAGS='#{settings[:cflags]} #{extra_cflags.join(" ")}' \
CFLAGS='#{settings[:cflags]}' \
#{settings[:host]}"]
end

Expand Down
6 changes: 2 additions & 4 deletions configs/components/libffi.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,8 @@
elsif platform.is_macos?
pkg.environment "LDFLAGS", settings[:ldflags]
pkg.environment "CFLAGS", settings[:cflags]
if platform.is_cross_compiled?
pkg.environment 'CC', 'clang -target arm64-apple-macos11' if platform.name =~ /osx-11/
pkg.environment 'CC', 'clang -target arm64-apple-macos12' if platform.name =~ /osx-12/
end
pkg.environment 'CC', settings[:cc]
pkg.environment 'MACOSX_DEPLOYMENT_TARGET', settings[:deployment_target]
elsif platform.is_windows?
pkg.environment "PATH", "$(shell cygpath -u #{settings[:gcc_bindir]}):$(PATH)"
pkg.environment "LDFLAGS", settings[:ldflags]
Expand Down
6 changes: 2 additions & 4 deletions configs/components/libxml2.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,8 @@
elsif platform.is_macos?
pkg.environment "LDFLAGS", settings[:ldflags]
pkg.environment "CFLAGS", settings[:cflags]
if platform.is_cross_compiled?
pkg.environment 'CC', 'clang -target arm64-apple-macos11' if platform.name =~ /osx-11/
pkg.environment 'CC', 'clang -target arm64-apple-macos12' if platform.name =~ /osx-12/
end
pkg.environment 'CC', settings[:cc]
pkg.environment 'MACOSX_DEPLOYMENT_TARGET', settings[:deployment_target]
else
pkg.environment "LDFLAGS", settings[:ldflags]
pkg.environment "CFLAGS", settings[:cflags]
Expand Down
6 changes: 2 additions & 4 deletions configs/components/libxslt.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,10 @@
pkg.environment "CFLAGS", settings[:cflags]
pkg.environment "LDFLAGS", settings[:ldflags]
elsif platform.is_macos?
if platform.is_cross_compiled?
pkg.environment 'CC', 'clang -target arm64-apple-macos11' if platform.name =~ /osx-11/
pkg.environment 'CC', 'clang -target arm64-apple-macos12' if platform.name =~ /osx-12/
end
pkg.environment "LDFLAGS", settings[:ldflags]
pkg.environment "CFLAGS", settings[:cflags]
pkg.environment 'CC', settings[:cc]
pkg.environment 'MACOSX_DEPLOYMENT_TARGET', settings[:deployment_target]
else
pkg.environment "LDFLAGS", settings[:ldflags]
pkg.environment "CFLAGS", settings[:cflags]
Expand Down
6 changes: 2 additions & 4 deletions configs/components/libyaml.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,8 @@
elsif platform.is_macos?
pkg.environment "LDFLAGS", settings[:ldflags]
pkg.environment "CFLAGS", settings[:cflags]
if platform.is_cross_compiled?
pkg.environment 'CC', 'clang -target arm64-apple-macos11' if platform.name =~ /osx-11/
pkg.environment 'CC', 'clang -target arm64-apple-macos12' if platform.name =~ /osx-12/
end
pkg.environment 'CC', settings[:cc]
pkg.environment 'MACOSX_DEPLOYMENT_TARGET', settings[:deployment_target]
elsif platform.is_windows?
pkg.environment "PATH", "$(shell cygpath -u #{settings[:gcc_bindir]}):$(PATH)"
pkg.environment "LDFLAGS", settings[:ldflags]
Expand Down
2 changes: 1 addition & 1 deletion configs/components/openssl-1.1.1.rb
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@
ldflags = "-R/opt/pl-build-tools/#{settings[:platform_triple]}/lib -Wl,-rpath=#{settings[:libdir]} -L/opt/pl-build-tools/#{settings[:platform_triple]}/lib"
target = platform.architecture =~ /86/ ? 'solaris-x86-gcc' : 'solaris-sparcv9-gcc'
elsif platform.is_macos?
if platform.os_version.to_i >= 13 && platform.architecture == 'arm64'
if platform.architecture == 'arm64'
pkg.environment 'PATH', '/opt/homebrew/bin:$(PATH):/usr/local/bin'
else
pkg.environment 'PATH', '/opt/pl-build-tools/bin:$(PATH):/usr/local/bin'
Expand Down
10 changes: 4 additions & 6 deletions configs/components/openssl-3.0.rb
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,10 @@
ldflags = "-R#{gcc_lib} -Wl,-rpath=#{settings[:libdir]} -L#{gcc_lib}"
target = platform.architecture =~ /86/ ? 'solaris-x86-gcc' : 'solaris-sparcv9-gcc'
elsif platform.is_macos?

if platform.os_version.to_i >= 13 && platform.architecture == 'arm64'
pkg.environment 'PATH', '$(PATH):/opt/homebrew/bin:/usr/local/bin'
else
pkg.environment 'PATH', '/opt/pl-build-tools/bin:$(PATH):/usr/local/bin'
end
pkg.environment 'PATH', '$(PATH):/opt/homebrew/bin:/usr/local/bin'
pkg.environment "CFLAGS", settings[:cflags]
pkg.environment 'CC', settings[:cc]
pkg.environment 'MACOSX_DEPLOYMENT_TARGET', settings[:deployment_target]

target = if platform.architecture == "arm64"
'darwin64-arm64'
Expand Down
6 changes: 2 additions & 4 deletions configs/components/readline.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,8 @@
elsif platform.is_macos?
pkg.environment "LDFLAGS", settings[:ldflags]
pkg.environment "CFLAGS", settings[:cflags]
if platform.is_cross_compiled?
pkg.environment 'CC', 'clang -target arm64-apple-macos11' if platform.name =~ /osx-11/
pkg.environment 'CC', 'clang -target arm64-apple-macos12' if platform.name =~ /osx-12/
end
pkg.environment 'CC', settings[:cc]
pkg.environment 'MACOSX_DEPLOYMENT_TARGET', settings[:deployment_target]
else
pkg.environment "LDFLAGS", settings[:ldflags]
pkg.environment "CFLAGS", settings[:cflags]
Expand Down
34 changes: 17 additions & 17 deletions configs/components/ruby-3.2.rb
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,19 @@
# ENVIRONMENT, FLAGS
####################

cflags = settings[:cflags]
cppflags = settings[:cppflags]
if platform.is_macos?
pkg.environment 'optflags', settings[:cflags]
pkg.environment 'optflags', cflags
pkg.environment 'CFLAGS', cflags
pkg.environment 'CPPFLAGS', cppflags
pkg.environment 'LDFLAGS', settings[:ldflags]
pkg.environment 'CC', settings[:cc]
pkg.environment 'CXX', settings[:cxx]
pkg.environment 'MACOSX_DEPLOYMENT_TARGET', settings[:deployment_target]
pkg.environment 'PATH', '$(PATH):/opt/homebrew/bin:/usr/local/bin'
elsif platform.is_windows?
optflags = settings[:cflags] + ' -O3'
optflags = cflags + ' -O3'
pkg.environment 'optflags', optflags
pkg.environment 'CFLAGS', optflags
pkg.environment 'MAKE', 'make'
Expand All @@ -78,12 +86,11 @@

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

cflags = settings[:cflags]
if (platform.is_debian? && platform.os_version.to_i >= 13) || (platform.is_ubuntu? && platform.os_version =~ /25.04/)
# A problem with --enable-dtrace, which I suspect may be because of GCC on the Trixie image.
# Check if this is still needed next time we bump Ruby and/or bump the Debian 13
# container to the release version.
cflags += ' -Wno-error=implicit-function-declaration'
cflags += ' -Wno-error=implicit-function-declaration '
end

if settings[:supports_pie]
Expand Down Expand Up @@ -144,8 +151,8 @@
'aix-7.1-ppc',
'aix-7.2-ppc',
'el-7-ppc64le',
'osx-11-arm64',
'osx-12-arm64',
'macos-all-arm64',
'macos-all-x86_64',
'redhatfips-7-x86_64',
'sles-11-x86_64',
'sles-12-ppc64le',
Expand Down Expand Up @@ -225,7 +232,6 @@
target_doubles = {
'powerpc-ibm-aix7.1.0.0' => 'powerpc-aix7.1.0.0',
'powerpc-ibm-aix7.2.0.0' => 'powerpc-aix7.2.0.0',
'aarch64-apple-darwin' => 'arm64-darwin',
'aarch64-redhat-linux' => 'aarch64-linux',
'ppc64-redhat-linux' => 'powerpc64-linux',
'ppc64le-redhat-linux' => 'powerpc64le-linux',
Expand Down Expand Up @@ -257,14 +263,8 @@
rbconfig_changes["CC"] = "gcc"
elsif platform.is_cross_compiled? || (platform.is_solaris? && platform.architecture != 'sparc')
# REMIND: why are we overriding rbconfig for solaris intel?
if platform.name =~ /osx-11/
rbconfig_changes["CC"] = 'clang -target arm64-apple-macos11'
elsif platform.name =~ /osx-12/
rbconfig_changes["CC"] = 'clang -target arm64-apple-macos12'
else
rbconfig_changes["CC"] = 'gcc'
rbconfig_changes["warnflags"] = "-Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized"
end
rbconfig_changes["CC"] = 'gcc'
rbconfig_changes["warnflags"] = "-Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized"
if platform.name =~ /el-7-ppc64/
# EL 7 on POWER will fail with -Wl,--compress-debug-sections=zlib so this
# will remove that entry
Expand All @@ -274,8 +274,8 @@
# the ancient gcc version on sles-12-ppc64le does not understand -fstack-protector-strong, so remove the `strong` part
rbconfig_changes["LDFLAGS"] = "-L. -Wl,-rpath=/opt/puppetlabs/puppet/lib -fstack-protector -rdynamic -Wl,-export-dynamic -L/opt/puppetlabs/puppet/lib"
end
elsif platform.is_macos? && platform.architecture == 'arm64' && platform.os_version.to_i >= 13
rbconfig_changes["CC"] = 'clang'
elsif platform.is_macos?
rbconfig_changes["CC"] = "#{settings[:cc]} #{cflags}"
elsif platform.is_windows?
if platform.architecture == "x64"
rbconfig_changes["CC"] = "x86_64-w64-mingw32-gcc"
Expand Down
2 changes: 1 addition & 1 deletion configs/components/rubygem-nokogiri.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
pkg.version '1.18.7'
pkg.sha256sum '6b63ff5defe48f30d1d3b3122f65255ca91df2caf5378c6e0482ce73ff46fb31'

cflags = platform.is_macos? ? '--with-cflags="-Wno-incompatible-function-pointer-types"' : ''
cflags = platform.is_macos? ? settings[:cflags] + '--with-cflags="-Wno-incompatible-function-pointer-types"' : ''
settings["#{pkg.get_name}_gem_install_options".to_sym] = "--platform=ruby -- \
--use-system-libraries \
--with-xml2-lib=#{settings[:libdir]} \
Expand Down
14 changes: 14 additions & 0 deletions configs/platforms/macos-all-arm64.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
platform 'macos-all-arm64' do |plat|
plat.inherit_from_default

packages = %w[automake cmake pkg-config]
# We uninstall in case they are already installed, since GitHub Actions runners
# will already have their own version and we want the homebrew core version.
# We do || true so it doesn't fail if the packages don't exist. We have to do
# it one by one because brew will not process the rest if one doesn't exist.
packages.each do |pkg|
plat.provision_with "brew uninstall #{pkg} 2>/dev/null || true && brew install #{pkg}"
end

plat.output_dir File.join('macos', 'all', 'arm64')
end
8 changes: 8 additions & 0 deletions configs/platforms/macos-all-x86_64.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
platform 'macos-all-x86_64' do |plat|
plat.inherit_from_default

packages = %w[cmake pkg-config]
plat.provision_with "brew install #{packages.join(' ')}"

plat.output_dir File.join('macos', 'all', 'x86_64')
end
8 changes: 0 additions & 8 deletions configs/platforms/osx-13-arm64.rb

This file was deleted.

8 changes: 0 additions & 8 deletions configs/platforms/osx-13-x86_64.rb

This file was deleted.

8 changes: 0 additions & 8 deletions configs/platforms/osx-14-arm64.rb

This file was deleted.

8 changes: 0 additions & 8 deletions configs/platforms/osx-14-x86_64.rb

This file was deleted.

8 changes: 0 additions & 8 deletions configs/platforms/osx-15-arm64.rb

This file was deleted.

Loading