deps: Update win64 openssl provisioning script (#4636)

This commit is contained in:
M Amin 2018-07-02 19:56:44 +01:00 committed by Nick Anderson
parent e622f62d8a
commit 9075d7265c
3 changed files with 62 additions and 43 deletions

View File

@ -15,38 +15,6 @@ if (-not (Test-Path $utils)) {
}
. $utils
# A helper function to derive the latest VS install and call vcvarsall.bat
function Invoke-VcVarsAll {
$vsinfo = Get-VSInfo
$vsLoc = $vsinfo.location
$vsVersion = $vsinfo.version
if ($vsLoc -ne '') {
$vcvarsall = Join-Path $vsLoc 'VC'
if ($vsVersion -eq '15') {
$vcvarsall = Join-Path $vcvarsall '\Auxiliary\Build\vcvarsall.bat'
} else {
$vcvarsall = Join-Path $vcvarsall 'vcvarsall.bat'
}
# Lastly invoke the environment provisioning script
$null = Invoke-BatchFile "$vcvarsall" "amd64"
return $true
}
# As a last ditch effort, attempt to find the env variables set by VS2015
# in order to derive the location of vcvarsall
$vsComnTools = [environment]::GetEnvironmentVariable("VS140COMNTOOLS")
if ($vsComnTools -eq '') {
return $false
}
$vcvarsall = Resolve-Path $(Join-Path "$vsComnTools" "..\..\VC")
$vcvarsall = Join-Path $vcvarsall 'vcvarsall.bat'
$null = Invoke-BatchFile "$vcvarsall" "amd64"
return $true
}
# A helper function to call CMake and generate our solution file
function Invoke-OsqueryCmake {
$vsinfo = Get-VSInfo

View File

@ -30,8 +30,15 @@ $curlCertsShaSum =
# Invoke our utilities file
. "$(Split-Path -Parent $MyInvocation.MyCommand.Definition)\osquery_utils.ps1"
# Keep current loc to restore later
$currentLoc = Get-Location
# Invoke the MSVC developer tools/env
Invoke-BatchFile "$env:VS140COMNTOOLS\..\..\vc\vcvarsall.bat" amd64
$ret = Invoke-VcVarsAll
if ($ret -ne $true) {
Write-Host "[-] vcvarsall.bat failed to run" -ForegroundColor Red
exit
}
if (-not
(
@ -46,7 +53,8 @@ if (-not
}
# Check that Perl is installed
if (-not (Get-Command 'perl' -ErrorAction SilentlyContinue)) {
$checkPerl = Get-Command 'perl' -ErrorAction SilentlyContinue
if (-not ($checkPerl -and $checkPerl.Source.StartsWith('C:\Perl64\bin\'))) {
$msg = "[-] This build requires perl which was not found. Please install " +
"perl from http://www.activestate.com/activeperl/downloads and add " +
"to the SYSTEM path before continuing"
@ -88,18 +96,26 @@ if (-not (Test-Path $zipFile)) {
Invoke-WebRequest $url -OutFile "$zipFile"
}
$7z = (Get-Command '7z' -ErrorAction SilentlyContinue).Source
$7zargs = @(
'x',
$zipFile
)
$perl = (Get-Command 'perl' -ErrorAction SilentlyContinue).Source
$nmake = (Get-Command 'nmake' -ErrorAction SilentlyContinue).Source
# Extract the source
7z x $zipFile
Start-OsqueryProcess $7z $7zargs $false
$sourceDir = "$packageName-OpenSSL_$version"
Set-Location $sourceDir
# Build the libraries
perl Configure VC-WIN64A
ms\do_win64a
nmake -f ms\nt.mak
Start-OsqueryProcess $perl 'Configure VC-WIN64A' $false
Invoke-BatchFile 'ms\do_win64a.bat'
Start-OsqueryProcess $nmake '-f ms\nt.mak' $false
#$buildDir = New-Item -Force -ItemType Directory -Path 'osquery-win-build'
#Set-Location $buildDir
$buildDir = New-Item -Force -ItemType Directory -Path 'osquery-win-build'
Set-Location $buildDir
# Construct the Chocolatey Package
$chocoDir = New-Item -ItemType Directory -Path 'osquery-choco'
@ -112,9 +128,9 @@ $certsDir = New-Item -ItemType Directory -Path 'local\certs'
Write-NuSpec $packageName $chocoVersion $authors $owners $projectSource $packageSourceUrl $copyright $license
# Copy the libs and headers to their correct location
Copy-Item "..\out32\ssleay32.lib" $libDir
Copy-Item "..\out32\libeay32.lib" $libDir
Copy-Item -Recurse "..\inc32\openssl" $includeDir
Copy-Item "..\..\out32\ssleay32.lib" $libDir
Copy-Item "..\..\out32\libeay32.lib" $libDir
Copy-Item -Recurse "..\..\inc32\openssl" $includeDir
# Grab the OpenSSL Curl cert bundle
Invoke-WebRequest $curlCerts -Outfile "$certsDir\certs.pem"
@ -132,3 +148,4 @@ if (Test-Path "$packageName.$chocoVersion.nupkg") {
else {
Write-Host "[-] Failed to build $packageName v$chocoVersion." -foregroundcolor Red
}
Set-Location $currentLoc

View File

@ -6,6 +6,9 @@
# in the COPYING file in the root directory of this source tree).
# You may select, at your option, one of the above-listed licenses.
# Force Powershell to use TLS 1.2
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12
# Helper function to add an explicit Deny-Write ACE for the Everyone group
function Set-DenyWriteAcl {
[CmdletBinding(SupportsShouldProcess = $true, ConfirmImpact = "Medium")]
@ -251,4 +254,35 @@ function Get-VSInfo {
$vsinfo.location = $vsinfo.location.trim()
$vsinfo.version = $vsinfo.version.trim()
return $vsinfo
}
# A helper function to derive the latest VS install and call vcvarsall.bat
function Invoke-VcVarsAll {
$vsinfo = Get-VSInfo
$vsLoc = $vsinfo.location
$vsVersion = $vsinfo.version
if ($vsLoc -ne '') {
$vcvarsall = Join-Path $vsLoc 'VC'
if ($vsVersion -eq '15') {
$vcvarsall = Join-Path $vcvarsall '\Auxiliary\Build\vcvarsall.bat'
} else {
$vcvarsall = Join-Path $vcvarsall 'vcvarsall.bat'
}
# Lastly invoke the environment provisioning script
$null = Invoke-BatchFile "$vcvarsall" "amd64"
return $true
}
# As a last ditch effort, attempt to find the env variables set by VS2015
# in order to derive the location of vcvarsall
$vsComnTools = [environment]::GetEnvironmentVariable("VS140COMNTOOLS")
if ($vsComnTools -eq '') {
return $false
}
$vcvarsall = Resolve-Path $(Join-Path "$vsComnTools" "..\..\VC")
$vcvarsall = Join-Path $vcvarsall 'vcvarsall.bat'
$null = Invoke-BatchFile "$vcvarsall" "amd64"
return $true
}