-
Notifications
You must be signed in to change notification settings - Fork 87
(PA-6324) Add windowsfips-2016-x64 to agent-runtime-main and agent-runtime-7.x #900
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
platform "windowsfips-2016-x64" do |plat| | ||
plat.vmpooler_template 'win-2016-fips-x86_64' | ||
|
||
plat.servicetype 'windows' | ||
visual_studio_version = '2017' | ||
visual_studio_sdk_version = 'win8.1' | ||
|
||
# We need to ensure we install chocolatey prior to adding any nuget repos. Otherwise, everything will fall over | ||
plat.add_build_repository "https://artifactory.delivery.puppetlabs.net/artifactory/generic/buildsources/windows/chocolatey/install-chocolatey-1.4.0.ps1" | ||
plat.provision_with "C:/ProgramData/chocolatey/bin/choco.exe feature enable -n useFipsCompliantChecksums" | ||
|
||
plat.add_build_repository "https://artifactory.delivery.puppetlabs.net/artifactory/api/nuget/nuget" | ||
|
||
# C:\tools is likely added by mingw, however because we also want to use that | ||
# dir for vsdevcmd.bat we create it for safety | ||
plat.provision_with "mkdir -p C:/tools" | ||
# We don't want to install any packages from the chocolatey repo by accident | ||
plat.provision_with "C:/ProgramData/chocolatey/bin/choco.exe sources remove -name chocolatey" | ||
|
||
packages = [ | ||
"cmake", | ||
"pl-gdbm-#{self._platform.architecture}", | ||
"pl-iconv-#{self._platform.architecture}", | ||
"pl-libffi-#{self._platform.architecture}", | ||
"pl-pdcurses-#{self._platform.architecture}", | ||
"pl-toolchain-#{self._platform.architecture}", | ||
"pl-zlib-#{self._platform.architecture}", | ||
"mingw-w64 -version 5.2.0 -debug", | ||
] | ||
|
||
packages.each do |name| | ||
plat.provision_with("C:/ProgramData/chocolatey/bin/choco.exe install -y --no-progress #{name}") | ||
end | ||
# We use cache-location in the following install because msvc has several long paths | ||
# if we do not update the cache location choco will fail because paths get too long | ||
plat.provision_with "C:/ProgramData/chocolatey/bin/choco.exe install msvc.#{visual_studio_version}-#{visual_studio_sdk_version}.sdk.en-us -y --cache-location=\"C:\\msvc\" --no-progress" | ||
# The following creates a batch file that will execute the vsdevcmd batch file located within visual studio. | ||
# We create the following batch file under C:\tools\vsdevcmd.bat so we can avoid using both the %ProgramFiles(x86)% | ||
# evironment var, as well as any spaces in the path when executing things with cygwin. This makes command execution | ||
# through cygwin much easier. | ||
# | ||
# Note that the unruly \'s in the following string escape the following sequence to literal chars: "\" and then \"" | ||
plat.provision_with "touch C:/tools/vsdevcmd.bat && echo \"\\\"%ProgramFiles(x86)%\\Microsoft Visual Studio\\#{visual_studio_version}\\BuildTools\\Common7\\Tools\\vsdevcmd\\\"\" >> C:/tools/vsdevcmd.bat" | ||
|
||
plat.install_build_dependencies_with "C:/ProgramData/chocolatey/bin/choco.exe install -y --no-progress" | ||
|
||
plat.make "/usr/bin/make" | ||
plat.patch "TMP=/var/tmp /usr/bin/patch.exe --binary" | ||
|
||
plat.platform_triple "x86_64-w64-mingw32" | ||
|
||
plat.package_type "archive" | ||
plat.output_dir "windows" | ||
end |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
diff --git a/rbconfig.rb b/rbconfig.rb | ||
index de4f173..87459fe 100644 | ||
--- a/rbconfig.rb | ||
+++ b/rbconfig.rb | ||
@@ -13,7 +13,7 @@ module RbConfig | ||
raise "ruby lib version (2.7.8) doesn't match executable version (#{RUBY_VERSION})" | ||
|
||
# Ruby installed directory. | ||
- TOPDIR = File.dirname(__FILE__).chomp!("/lib/ruby/2.7.0\r/x64-mingw32") | ||
+ TOPDIR = File.dirname(__FILE__).chomp!("/lib/ruby/2.7.0/x64-mingw32") | ||
# DESTDIR on make install. | ||
DESTDIR = TOPDIR && TOPDIR[/\A[a-z]:/i] || '' unless defined? DESTDIR | ||
# The hash configurations stored. | ||
@@ -54,7 +54,7 @@ module RbConfig | ||
CONFIG["sitedir"] = "$(rubylibprefix)/site_ruby" | ||
CONFIG["rubyarchdir"] = "$(rubylibdir)/$(arch)" | ||
CONFIG["rubylibdir"] = "$(rubylibprefix)/$(ruby_version)" | ||
- CONFIG["ruby_version"] = "2.7.0\r" | ||
+ CONFIG["ruby_version"] = "2.7.0" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I believe |
||
CONFIG["sitearch"] = "x64-msvcrt" | ||
CONFIG["arch"] = "x64-mingw32" | ||
CONFIG["sitearchincludedir"] = "$(includedir)/$(sitearch)" |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
diff --git a/rbconfig.rb b/rbconfig.rb | ||
index 592dd52..a994b0a 100644 | ||
--- a/rbconfig.rb | ||
+++ b/rbconfig.rb | ||
@@ -13,7 +13,7 @@ module RbConfig | ||
raise "ruby lib version (3.2.5) doesn't match executable version (#{RUBY_VERSION})" | ||
|
||
# Ruby installed directory. | ||
- TOPDIR = File.dirname(__FILE__).chomp!("/lib/ruby/3.2.0\r/x64-mingw32") | ||
+ TOPDIR = File.dirname(__FILE__).chomp!("/lib/ruby/3.2.0/x64-mingw32") | ||
# DESTDIR on make install. | ||
DESTDIR = TOPDIR && TOPDIR[/\A[a-z]:/i] || '' unless defined? DESTDIR | ||
# The hash configurations stored. | ||
@@ -55,7 +55,7 @@ module RbConfig | ||
CONFIG["sitedir"] = "$(rubylibprefix)/site_ruby" | ||
CONFIG["rubyarchdir"] = "$(rubylibdir)/$(arch)" | ||
CONFIG["rubylibdir"] = "$(rubylibprefix)/$(ruby_version)" | ||
- CONFIG["ruby_version"] = "3.2.0\r" | ||
+ CONFIG["ruby_version"] = "3.2.0" | ||
CONFIG["sitearch"] = "x64-msvcrt" | ||
CONFIG["arch"] = "x64-mingw32" | ||
CONFIG["sitearchincludedir"] = "$(includedir)/$(sitearch)" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure what the implications are of using Cygwin
nm
with binaries built by mingw... I assume this problem would go away if we were using a newer version of mingw tool chain?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was able to find 13.2.0 in the default repository(https://chocolatey.org/api/v2) of choco: https://community.chocolatey.org/packages/mingw
I think this is the latest version. It ships with nm 2.39. Unfortunately, it still results in the
global_symbol_pipe
variable being empty with this version.The system nm (
/usr/bin/nm
) is version 2.42 which doesn't result theglobal_symbol_pipe
issue. So, I manually set it to system nm.I also tried with mingw 8.1.0 (nm version 2.25) which was available in the default repo, that also fails with the same error.