@@ -55,6 +55,7 @@ Boost: v$($Env:BOOST_VERSION)
5555libssh2: v$ ( $Env: LIBSSH2_VERSION )
5656libuv: v$ ( $Env: LIBUV_VERSION )
5757OpenSSL: v$ ( Get-OpenSSL - Version)
58+ zlib: v$ ( $Env: ZLIB_VERSION )
5859Build Number: $ ( $Env: APPVEYOR_BUILD_NUMBER )
5960Branch: $ ( $Env: APPVEYOR_REPO_BRANCH )
6061SHA: $ ( Get-Commit - Sha)
@@ -104,6 +105,7 @@ Function Initialize-Build-Environment {
104105 $libuv_version = $Env: LIBUV_VERSION
105106 $openssl_version = Get-OpenSSL - Version
106107 $Env: OPENSSL_VERSION = $openssl_version
108+ $zlib_version = $Env: ZLIB_VERSION
107109 $kerberos_version = " 4.1"
108110 $bison_version = " 2.4.1"
109111 $perl_version = " 5.26.2.1"
@@ -149,13 +151,15 @@ Function Initialize-Build-Environment {
149151 $Env: LIBUV_ROOT_DIR = " $ ( $dependencies_location_prefix ) /libuv-$ ( $libuv_version ) "
150152 $Env: OPENSSL_BASE_DIR = " $ ( $dependencies_location_prefix ) /openssl-$ ( $openssl_version ) "
151153 $Env: OPENSSL_ROOT_DIR = " $ ( $Env: OPENSSL_BASE_DIR ) /shared"
154+ $Env: ZLIB_ROOT_DIR = " $ ( $dependencies_location_prefix ) /zlib-$ ( $zlib_version ) "
152155 $Env: DRIVER_INSTALL_DIR = " C:/projects/driver/lib"
153156 $Env: DRIVER_ARTIFACTS_DIR = " C:/projects/driver/artifacts"
154157 $Env: DRIVER_ARTIFACTS_LOGS_DIR = " $ ( $Env: DRIVER_ARTIFACTS_DIR ) /logs"
155158
156159 # Generate the environment variables for the third party archives
157160 $Env: LIBUV_ARTIFACT_ARCHIVE = " libuv-$ ( $libuv_version ) -win$ ( $architecture ) -msvc$ ( $Env: VISUAL_STUDIO_INTERNAL_VERSION ) .zip"
158161 $Env: OPENSSL_ARTIFACT_ARCHIVE = " openssl-$ ( $openssl_version ) -win$ ( $architecture ) -msvc$ ( $Env: VISUAL_STUDIO_INTERNAL_VERSION ) .zip"
162+ $Env: ZLIB_ARTIFACT_ARCHIVE = " zlib-$ ( $zlib_version ) -win$ ( $architecture ) -msvc$ ( $Env: VISUAL_STUDIO_INTERNAL_VERSION ) .zip"
159163
160164 # Generate DataStax Enterprise specific environment variables
161165 If ($Env: DRIVER_TYPE -Like " dse" ) {
@@ -423,6 +427,53 @@ add_dependencies(`${PROJECT_NAME} `${OPENSSL_LIBRARY_NAME})
423427 }
424428 }
425429
430+ If (-Not (Test-Path - Path " $ ( $Env: ZLIB_ROOT_DIR ) /lib" )) {
431+ New-Item - ItemType Directory - Force - Path " $ ( $dependencies_build_location_prefix ) /zlib" | Out-Null
432+ Push-Location - Path " $ ( $dependencies_build_location_prefix ) /zlib"
433+
434+ $cmakelists_contents = @"
435+ cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
436+ project(zlib)
437+ set(PROJECT_DISPLAY_NAME "AppVeyor CI Build for zlib")
438+ set(PROJECT_MODULE_DIR $cmake_modules_dir )
439+ set(CMAKE_MODULE_PATH `$ {CMAKE_MODULE_PATH} `$ {PROJECT_MODULE_DIR})
440+ include(ExternalProject-zlib)
441+ set(GENERATED_SOURCE_FILE `$ {CMAKE_CURRENT_BINARY_DIR}/main.cpp)
442+ file(REMOVE `$ {GENERATED_SOURCE_FILE})
443+ file(WRITE `$ {GENERATED_SOURCE_FILE} "int main () { return 0; }")
444+ add_executable(`$ {PROJECT_NAME} `$ {GENERATED_SOURCE_FILE})
445+ add_dependencies(`$ {PROJECT_NAME} `$ {ZLIB_LIBRARY_NAME})
446+ "@
447+ $cmakelists_contents | Out-File - FilePath " CMakeLists.txt" - Encoding Utf8 - Force
448+
449+ Write-Host " Configuring zlib"
450+ cmake - G " $ ( $cmake_generator ) " - DBUILD_SHARED_LIBS= On " -DZLIB_VERSION=$ ( $Env: ZLIB_VERSION ) " " -DZLIB_INSTALL_PREFIX=$ ( $Env: ZLIB_ROOT_DIR ) " .
451+ If ($LastExitCode -ne 0 ) {
452+ If (Test-Path - Path " build/CMakeFiles/CMakeOutput.log" ) {
453+ Push-AppveyorArtifact " build/CMakeFiles/CMakeOutput.log" - DeploymentName " zlib Output Log"
454+ }
455+ If (Test-Path - Path " build/CMakeFiles/CMakeError.log" ) {
456+ Push-AppveyorArtifact " build/CMakeFiles/CMakeError.log" - DeploymentName " zlib Error Log"
457+ }
458+ Pop-Location
459+ Throw " Failed to configure zlib for MSVC $ ( $Env: VISUAL_STUDIO_INTERNAL_VERSION ) -$ ( $Env: Platform ) "
460+ }
461+ Write-Host " Building and Installing zlib"
462+ cmake -- build . -- config RelWithDebInfo
463+ If ($LastExitCode -ne 0 ) {
464+ If (Test-Path - Path " build/CMakeFiles/CMakeOutput.log" ) {
465+ Push-AppveyorArtifact " build/CMakeFiles/CMakeOutput.log" - DeploymentName " zlib Output Log"
466+ }
467+ If (Test-Path - Path " build/CMakeFiles/CMakeError.log" ) {
468+ Push-AppveyorArtifact " build/CMakeFiles/CMakeError.log" - DeploymentName " zlib Error Log"
469+ }
470+ Pop-Location
471+ Throw " Failed to build zlib for MSVC $ ( $Env: VISUAL_STUDIO_INTERNAL_VERSION ) -$ ( $Env: Platform ) "
472+ }
473+
474+ Pop-Location
475+ }
476+
426477 # Handle installation of DataStax Enterprise dependencies
427478 If ($Env: DRIVER_TYPE -Like " dse" ) {
428479 # Determine if Kerberos for Windows should be installed (cached)
@@ -583,7 +634,7 @@ Function Build-Driver {
583634 New-Item - ItemType Directory - Force - Path " $ ( $Env: APPVEYOR_BUILD_FOLDER ) /build"
584635 Push-Location " $ ( $Env: APPVEYOR_BUILD_FOLDER ) /build"
585636 Write-Host " Configuring DataStax C/C++ $ ( $driver_type ) Driver"
586- cmake - G " $ ( $cmake_generator ) " " -D$ ( $Env: DRIVER_TYPE ) _MULTICORE_COMPILATION=On" " -D$ ( $Env: DRIVER_TYPE ) _USE_OPENSSL=On" " -D$ ( $Env: DRIVER_TYPE ) _USE_BOOST_ATOMIC=$ ( $use_boost_atomic ) " " -D$ ( $Env: DRIVER_TYPE ) _BUILD_EXAMPLES=On" " -D$ ( $Env: DRIVER_TYPE ) _BUILD_TESTS=On" " -D$ ( $Env: DRIVER_TYPE ) _USE_LIBSSH2=On" " -DCMAKE_INSTALL_PREFIX=`" $ ( $Env: DRIVER_INSTALL_DIR ) `" " ..
637+ cmake - G " $ ( $cmake_generator ) " " -D$ ( $Env: DRIVER_TYPE ) _MULTICORE_COMPILATION=On" " -D$ ( $Env: DRIVER_TYPE ) _USE_OPENSSL=On" " -D$ ( $Env: DRIVER_TYPE ) _USE_ZLIB=On " " -D $ ( $ Env: DRIVER_TYPE ) _USE_BOOST_ATOMIC=$ ( $use_boost_atomic ) " " -D$ ( $Env: DRIVER_TYPE ) _BUILD_EXAMPLES=On" " -D$ ( $Env: DRIVER_TYPE ) _BUILD_TESTS=On" " -D$ ( $Env: DRIVER_TYPE ) _USE_LIBSSH2=On" " -DCMAKE_INSTALL_PREFIX=`" $ ( $Env: DRIVER_INSTALL_DIR ) `" " ..
587638 If ($LastExitCode -ne 0 ) {
588639 Pop-Location
589640 Throw " Failed to configure DataStax C/C++ $ ( $driver_type ) Driver for MSVC $ ( $Env: VISUAL_STUDIO_INTERNAL_VERSION ) -$ ( $Env: Platform ) "
@@ -707,6 +758,17 @@ a -tzip "$($Env:DRIVER_ARTIFACTS_DIR)/$($Env:OPENSSL_ARTIFACT_ARCHIVE)" -r "$($E
707758 If ($process.ExitCode -ne 0 ) {
708759 Throw " Failed to archive OpenSSL for MSVC $ ( $Env: VISUAL_STUDIO_INTERNAL_VERSION ) -$ ( $Env: Platform ) "
709760 }
761+
762+ # Clean up the library dependency directories for zlib packaging
763+ New-Item - ItemType Directory - Force - Path " $ ( $Env: DRIVER_ARTIFACTS_DIR ) /zlib" | Out-Null
764+ Copy-Item - Force - Recurse - Path " $ ( $Env: ZLIB_ROOT_DIR ) /*" " $ ( $Env: DRIVER_ARTIFACTS_DIR ) /zlib" | Out-Null
765+ $argument_list = @"
766+ a -tzip "$ ( $Env: DRIVER_ARTIFACTS_DIR ) /$ ( $Env: ZLIB_ARTIFACT_ARCHIVE ) " -r "$ ( $Env: DRIVER_ARTIFACTS_DIR ) /zlib/*"
767+ "@
768+ $process = Start-Process - FilePath 7z - ArgumentList $argument_list - PassThru - Wait - NoNewWindow
769+ If ($process.ExitCode -ne 0 ) {
770+ Throw " Failed to archive zlib for MSVC $ ( $Env: VISUAL_STUDIO_INTERNAL_VERSION ) -$ ( $Env: Platform ) "
771+ }
710772}
711773
712774Function Push-Artifacts {
@@ -721,6 +783,7 @@ Function Push-Artifacts {
721783 Push-AppveyorArtifact " $ ( $Env: DRIVER_ARTIFACTS_DIR ) /$ ( $Env: DRIVER_ARTIFACT_TESTS_ARCHIVE ) " - DeploymentName " DataStax C/C++ $ ( $driver_type ) Driver Tests"
722784 Push-AppveyorArtifact " $ ( $Env: DRIVER_ARTIFACTS_DIR ) /$ ( $Env: LIBUV_ARTIFACT_ARCHIVE ) " - DeploymentName " libuv v$ ( $Env: LIBUV_VERSION ) "
723785 Push-AppveyorArtifact " $ ( $Env: DRIVER_ARTIFACTS_DIR ) /$ ( $Env: OPENSSL_ARTIFACT_ARCHIVE ) " - DeploymentName " OpenSSL v$ ( $Env: OPENSSL_VERSION ) "
786+ Push-AppveyorArtifact " $ ( $Env: DRIVER_ARTIFACTS_DIR ) /$ ( $Env: ZLIB_ARTIFACT_ARCHIVE ) " - DeploymentName " zlib v$ ( $Env: ZLIB_VERSION ) "
724787 }
725788}
726789
@@ -781,6 +844,8 @@ Function Publish-Artifacts {
781844 # TODO: Need to handle OpenSSL v1.1.x if enabled
782845 $openssl_uri = " $ ( $base_uri ) /dependencies/openssl/v$ ( $Env: OPENSSL_VERSION ) /$ ( $Env: OPENSSL_ARTIFACT_ARCHIVE ) "
783846 $openssl_archive = " $ ( $Env: DRIVER_ARTIFACTS_DIR ) /$ ( $Env: OPENSSL_ARTIFACT_ARCHIVE ) "
847+ $zlib_uri = " $ ( $base_uri ) /dependencies/zlib/v$ ( $Env: ZLIB_VERSION ) /$ ( $Env: ZLIB_ARTIFACT_ARCHIVE ) "
848+ $zlib_archive = " $ ( $Env: DRIVER_ARTIFACTS_DIR ) /$ ( $Env: ZLIB_ARTIFACT_ARCHIVE ) "
784849
785850 # Publish/Upload the driver and it dependencies to Artifactory
786851 $is_failure = $False
@@ -798,6 +863,10 @@ Function Publish-Artifacts {
798863 $is_failure = $True
799864 $failed_upload += " OpenSSL"
800865 }
866+ If ((Publish-Artifact - To- Artifactory - Uri " $ ( $zlib_uri ) " - FilePath " $ ( $zlib_archive ) " ) -ne 0 ) {
867+ $is_failure = $True
868+ $failed_upload += " zlib"
869+ }
801870
802871 # Check to see if there was a failure uploading the artifacts
803872 If ($is_failure ) {
0 commit comments