Windows: Start using a `vcpkg export` bundle.

Create a library bundle using `vcpkg export ... --zip` as described at
https://vcpkg.readthedocs.io/en/latest/users/integration/#export-command.

The bundle includes the following packages:

gettext     0.19-8
glib        2.52.3-13
libffi      3.1-4
libiconv    1.15-5
liblzma     5.2.4
libxml2     2.9.9-4
pcre        8.41-1
zlib        1.2.11-5

It also includes a CMake toolchain file which we might want to make use
of in the future.

This means we no longer compile Zlib locally. Update the CMake environment
accordingly and remove zlib from win-setup.ps1.

It includes PDBs, so add them to the PDB .zip.

Change-Id: I0a94904a86d836e990019dab62af506573be1f35
Reviewed-on: https://code.wireshark.org/review/31377
Petri-Dish: Gerald Combs <gerald@wireshark.org>
Tested-by: Petri Dish Buildbot
Reviewed-by: Gerald Combs <gerald@wireshark.org>
This commit is contained in:
Gerald Combs 2019-01-04 15:37:46 -08:00
parent f57a73d688
commit acc96e5206
8 changed files with 109 additions and 81 deletions

View File

@ -1096,31 +1096,7 @@ ws_find_package(KERBEROS ENABLE_KERBEROS HAVE_KERBEROS)
ws_find_package(CARES ENABLE_CARES HAVE_C_ARES "1.5.0") ws_find_package(CARES ENABLE_CARES HAVE_C_ARES "1.5.0")
# Zlib compression # Zlib compression
if(ENABLE_ZLIB)
if (WIN32)
# On Windows we build our own version of zlib, so add the paths
set(ZLIB_SRC_DIR "${_PROJECT_LIB_DIR}/zlib-1.2.11-2-ws")
set(SKIP_INSTALL_STATIC True)
set(SKIP_INSTALL_HEADERS True)
set(SKIP_INSTALL_FILES True)
set(ZLIB_EXPORTS "WiresharkTargets")
add_subdirectory("${ZLIB_SRC_DIR}" "${CMAKE_BINARY_DIR}/zlib")
unset(SKIP_INSTALL_STATIC)
unset(SKIP_INSTALL_HEADERS)
unset(SKIP_INSTALL_FILES)
set(ZLIB_INCLUDE_DIR "${ZLIB_SRC_DIR}" "${CMAKE_BINARY_DIR}/zlib")
set(ZLIB_LIBRARY zlib)
set(ZLIB_DLL "zlib1.dll")
set_target_properties(zlib PROPERTIES FOLDER "Libs/zlib")
# Annoyingly zlib also builds some other stuff we aren't interested in
set_target_properties(zlibstatic PROPERTIES
FOLDER "Libs/zlib"
EXCLUDE_FROM_ALL True
EXCLUDE_FROM_DEFAULT_BUILD True
)
endif()
ws_find_package(ZLIB ENABLE_ZLIB HAVE_ZLIB) ws_find_package(ZLIB ENABLE_ZLIB HAVE_ZLIB)
endif()
# LZ4 compression # LZ4 compression
ws_find_package(LZ4 ENABLE_LZ4 HAVE_LZ4) ws_find_package(LZ4 ENABLE_LZ4 HAVE_LZ4)
@ -1715,13 +1691,11 @@ if(WIN32)
# XXX Can (and should) we iterate over these similar to the way # XXX Can (and should) we iterate over these similar to the way
# the top-level CMakeLists.txt iterates over the package list? # the top-level CMakeLists.txt iterates over the package list?
# Required DLLs. # Required DLLs and their corresponding PDBs.
# The gio, gnutls, png, and other OBS-generated DLLs depend on
# zlib1.dll. We compile zlib locally but the Debug configuration
# (the default) creates zlibd1.dll.
add_custom_command(TARGET copy_cli_dlls PRE_BUILD add_custom_command(TARGET copy_cli_dlls PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different COMMAND ${CMAKE_COMMAND} -E copy_if_different
${GLIB2_DLLS} $<$<CONFIG:Debug>:zlib1.dll> ${GLIB2_DLLS}
${GLIB2_PDBS}
"${_dll_output_dir}" "${_dll_output_dir}"
WORKING_DIRECTORY "${GLIB2_DLL_DIR}" WORKING_DIRECTORY "${GLIB2_DLL_DIR}"
) )
@ -1770,7 +1744,12 @@ if(WIN32)
list (APPEND OPTIONAL_DLLS "${BCG729_DLL_DIR}/${BCG729_DLL}") list (APPEND OPTIONAL_DLLS "${BCG729_DLL_DIR}/${BCG729_DLL}")
endif(BCG729_FOUND) endif(BCG729_FOUND)
if (LIBXML2_FOUND) if (LIBXML2_FOUND)
list (APPEND OPTIONAL_DLLS "${LIBXML2_DLL_DIR}/${LIBXML2_DLL}") foreach( _dll ${LIBXML2_DLLS} )
list (APPEND OPTIONAL_DLLS "${LIBXML2_DLL_DIR}/${_dll}")
endforeach(_dll)
foreach( _pdb ${LIBXML2_PDBS} )
list (APPEND OPTIONAL_PDBS "${LIBXML2_DLL_DIR}/${_pdb}")
endforeach(_pdb)
endif(LIBXML2_FOUND) endif(LIBXML2_FOUND)
if (SMI_FOUND) if (SMI_FOUND)
list (APPEND OPTIONAL_DLLS "${SMI_DLL_DIR}/${SMI_DLL}") list (APPEND OPTIONAL_DLLS "${SMI_DLL_DIR}/${SMI_DLL}")
@ -1819,6 +1798,10 @@ if(WIN32)
if (WINSPARKLE_FOUND) if (WINSPARKLE_FOUND)
list (APPEND OPTIONAL_DLLS "${WINSPARKLE_DLL_DIR}/${WINSPARKLE_DLL}") list (APPEND OPTIONAL_DLLS "${WINSPARKLE_DLL_DIR}/${WINSPARKLE_DLL}")
endif(WINSPARKLE_FOUND) endif(WINSPARKLE_FOUND)
if (ZLIB_FOUND)
list (APPEND OPTIONAL_DLLS "${ZLIB_DLL_DIR}/${ZLIB_DLL}")
list (APPEND OPTIONAL_PDBS "${ZLIB_DLL_DIR}/${ZLIB_PDB}")
endif(ZLIB_FOUND)
# With libs downloaded to c:/wireshark-win64-libs this currently # With libs downloaded to c:/wireshark-win64-libs this currently
# (early 2018) expands to about 1900 characters. # (early 2018) expands to about 1900 characters.

View File

@ -20,7 +20,7 @@ if( GLIB2_MAIN_INCLUDE_DIR AND GLIB2_LIBRARIES )
endif() endif()
include( FindWSWinLibs ) include( FindWSWinLibs )
FindWSWinLibs( "glib2-*" "GLIB2_HINTS" ) FindWSWinLibs( "vcpkg-export-*" "GLIB2_HINTS" )
if (NOT WIN32) if (NOT WIN32)
find_package(PkgConfig) find_package(PkgConfig)
@ -74,6 +74,7 @@ find_path( GLIB2_INTERNAL_INCLUDE_DIR
glibconfig.h glibconfig.h
HINTS HINTS
"${GLIB2_INCLUDEDIR}" "${GLIB2_INCLUDEDIR}"
"${GLIB2_HINTS}/include"
"${glib2LibDir}" "${glib2LibDir}"
${CMAKE_SYSTEM_LIBRARY_PATH} ${CMAKE_SYSTEM_LIBRARY_PATH}
PATH_SUFFIXES PATH_SUFFIXES
@ -102,23 +103,43 @@ if( GLIB2_FOUND )
set ( GLIB2_DLL_DIR "${GLIB2_HINTS}/bin" set ( GLIB2_DLL_DIR "${GLIB2_HINTS}/bin"
CACHE PATH "Path to GLib2 DLLs" CACHE PATH "Path to GLib2 DLLs"
) )
# XXX Are GIO and GObject really necessary? # GTK+ required GObject and GIO. We probably don't.
# libglib and libgio in glib2-2.52.2-1.34-win32ws depend on
# libgcc_s_sjlj-1.dll, now included with gnutls-3.6.3-1-win32ws.
# (64-bit GLib does not depend on libgcc_s).
file( GLOB _glib2_dlls RELATIVE "${GLIB2_DLL_DIR}" file( GLOB _glib2_dlls RELATIVE "${GLIB2_DLL_DIR}"
"${GLIB2_DLL_DIR}/libglib-*.dll" # "${GLIB2_DLL_DIR}/gio-2.dll"
"${GLIB2_DLL_DIR}/libgio-*.dll" "${GLIB2_DLL_DIR}/glib-2.dll"
"${GLIB2_DLL_DIR}/libgmodule-*.dll" "${GLIB2_DLL_DIR}/gmodule-2.dll"
"${GLIB2_DLL_DIR}/libgobject-*.dll" # "${GLIB2_DLL_DIR}/gobject-2.dll"
"${GLIB2_DLL_DIR}/libintl-*.dll" "${GLIB2_DLL_DIR}/gthread-2.dll"
#"${GLIB2_DLL_DIR}/libgcc_s_*.dll" "${GLIB2_DLL_DIR}/libcharset.dll"
# gnutls-3.6.3-1-win64ws ships with libffi-6.dll
# "${GLIB2_DLL_DIR}/libffi.dll"
"${GLIB2_DLL_DIR}/libiconv.dll"
"${GLIB2_DLL_DIR}/libintl.dll"
"${GLIB2_DLL_DIR}/pcre.dll"
# "${GLIB2_DLL_DIR}/pcre16.dll"
# "${GLIB2_DLL_DIR}/pcre32.dll"
# "${GLIB2_DLL_DIR}/pcrecpp.dll"
# "${GLIB2_DLL_DIR}/pcreposix.dll"
) )
set ( GLIB2_DLLS ${_glib2_dlls} set ( GLIB2_DLLS ${_glib2_dlls}
# We're storing filenames only. Should we use STRING instead? # We're storing filenames only. Should we use STRING instead?
CACHE FILEPATH "GLib 2 DLL list" CACHE FILEPATH "GLib 2 DLL list"
) )
mark_as_advanced( GLIB2_DLL_DIR GLIB2_DLLS )
file( GLOB _glib2_pdbs RELATIVE "${GLIB2_DLL_DIR}"
"${GLIB2_DLL_DIR}/glib-2.pdb"
"${GLIB2_DLL_DIR}/gmodule-2.pdb"
"${GLIB2_DLL_DIR}/gthread-2.pdb"
"${GLIB2_DLL_DIR}/libcharset.pdb"
"${GLIB2_DLL_DIR}/libiconv.pdb"
"${GLIB2_DLL_DIR}/libintl.pdb"
"${GLIB2_DLL_DIR}/pcre.pdb"
)
set ( GLIB2_PDBS ${_glib2_pdbs}
CACHE FILEPATH "GLib2 PDB list"
)
mark_as_advanced( GLIB2_DLL_DIR GLIB2_DLLS GLIB2_PDBS )
endif() endif()
elseif( GLIB2_FIND_REQUIRED ) elseif( GLIB2_FIND_REQUIRED )
message( SEND_ERROR "Package required but not found" ) message( SEND_ERROR "Package required but not found" )

View File

@ -8,7 +8,7 @@
# #
include(FindWSWinLibs) include(FindWSWinLibs)
FindWSWinLibs("glib2-*" "GMODULE2_HINTS") FindWSWinLibs("vcpkg-export-*" "GMODULE2_HINTS")
if(NOT WIN32) if(NOT WIN32)
find_package(PkgConfig QUIET) find_package(PkgConfig QUIET)

View File

@ -8,7 +8,7 @@
# #
include(FindWSWinLibs) include(FindWSWinLibs)
FindWSWinLibs("glib2-*" "GTHREAD2_HINTS") FindWSWinLibs("vcpkg-export-*" "GTHREAD2_HINTS")
if(NOT WIN32) if(NOT WIN32)
find_package(PkgConfig QUIET) find_package(PkgConfig QUIET)

View File

@ -48,7 +48,7 @@ The following cache variables may also be set:
#]=======================================================================] #]=======================================================================]
include(FindWSWinLibs) include(FindWSWinLibs)
FindWSWinLibs("libxml2-.*" LIBXML2_HINTS) FindWSWinLibs("vcpkg-export-.*" LIBXML2_HINTS)
# use pkg-config to get the directories and then use these values # use pkg-config to get the directories and then use these values
# in the find_path() and find_library() calls # in the find_path() and find_library() calls
@ -112,4 +112,4 @@ if(LibXml2_FOUND AND NOT TARGET LibXml2::LibXml2)
set_property(TARGET LibXml2::LibXml2 APPEND PROPERTY IMPORTED_LOCATION "${LIBXML2_LIBRARY}") set_property(TARGET LibXml2::LibXml2 APPEND PROPERTY IMPORTED_LOCATION "${LIBXML2_LIBRARY}")
endif() endif()
AddWSWinDLL(LibXml2 LIBXML2_HINTS "libxml2-*") AddWSWinDLLS(LibXml2 LIBXML2_HINTS "libxml2*" "lzma*")

View File

@ -42,6 +42,7 @@ function( FindWSWinLibs _WS_LIB_SEARCH_PATH _LIB_HINT_VAR )
endif() endif()
endfunction() endfunction()
# Add a single DLL
function(AddWSWinDLL _PKG_NAME _PKG_HINTS _DLL_GLOB) function(AddWSWinDLL _PKG_NAME _PKG_HINTS _DLL_GLOB)
if(WIN32 AND ${_PKG_NAME}_FOUND) if(WIN32 AND ${_PKG_NAME}_FOUND)
string(TOUPPER ${_PKG_NAME} _PKG_VAR) string(TOUPPER ${_PKG_NAME} _PKG_VAR)
@ -54,9 +55,51 @@ function(AddWSWinDLL _PKG_NAME _PKG_HINTS _DLL_GLOB)
set ( ${_PKG_VAR}_DLL ${_pkg_dll} set ( ${_PKG_VAR}_DLL ${_pkg_dll}
CACHE STRING "${_PKG_NAME} DLL file name" CACHE STRING "${_PKG_NAME} DLL file name"
) )
mark_as_advanced( ${_PKG_VAR}_DLL_DIR ${_PKG_VAR}_DLL ) file( GLOB _pkg_pdb RELATIVE "${${_PKG_VAR}_DLL_DIR}"
"${${_PKG_VAR}_DLL_DIR}/${_DLL_GLOB}.pdb"
)
set ( ${_PKG_VAR}_PDB ${_pkg_pdb}
CACHE STRING "${_PKG_NAME} PDB file name"
)
mark_as_advanced( ${_PKG_VAR}_DLL_DIR ${_PKG_VAR}_DLL ${_PKG_VAR}_PDB )
else() else()
set( ${_PKG_VAR}_DLL_DIR ) set( ${_PKG_VAR}_DLL_DIR )
set( ${_PKG_VAR}_DLL ) set( ${_PKG_VAR}_DLL )
endif() endif()
endfunction() endfunction()
# Add a list of DLLs
function(AddWSWinDLLS _PKG_NAME _PKG_HINTS) # ...DLL globs
if(WIN32 AND ${_PKG_NAME}_FOUND)
string(TOUPPER ${_PKG_NAME} _PKG_VAR)
set ( ${_PKG_VAR}_DLL_DIR "${${_PKG_HINTS}}/bin"
CACHE PATH "Path to ${_PKG_NAME} DLLs"
)
set (_pkg_dlls)
set (_pkg_pdbs)
foreach(_dll_glob ${ARGN})
file( GLOB _pkg_dll RELATIVE "${${_PKG_VAR}_DLL_DIR}"
"${${_PKG_VAR}_DLL_DIR}/${_dll_glob}.dll"
)
list(APPEND _pkg_dlls "${_pkg_dll}")
file( GLOB _pkg_pdb RELATIVE "${${_PKG_VAR}_DLL_DIR}"
"${${_PKG_VAR}_DLL_DIR}/${_dll_glob}.pdb"
)
list(APPEND _pkg_pdbs "${_pkg_pdb}")
endforeach()
set ( ${_PKG_VAR}_DLLS ${_pkg_dlls}
CACHE FILEPATH "${_PKG_NAME} DLL list"
)
set ( ${_PKG_VAR}_PDBS ${_pkg_pdbs}
CACHE FILEPATH "${_PKG_NAME} PDB list"
)
mark_as_advanced( ${_PKG_VAR}_DLL_DIR ${_PKG_VAR}_DLLS ${_PKG_VAR}_PDBS )
else()
set( ${_PKG_VAR}_DLL_DIR )
set( ${_PKG_VAR}_DLLS )
set( ${_PKG_VAR}_PDBS )
endif()
endfunction()

View File

@ -8,6 +8,7 @@
# ZLIB_FOUND - True if zlib found. # ZLIB_FOUND - True if zlib found.
# ZLIB_DLL_DIR - (Windows) Path to the zlib DLL. # ZLIB_DLL_DIR - (Windows) Path to the zlib DLL.
# ZLIB_DLL - (Windows) Name of the zlib DLL. # ZLIB_DLL - (Windows) Name of the zlib DLL.
# ZLIB_PDB - (Windows) Name of the zlib PDB.
# #
# ZLIB_VERSION_STRING - The version of zlib found (x.y.z) # ZLIB_VERSION_STRING - The version of zlib found (x.y.z)
# ZLIB_VERSION_MAJOR - The major version of zlib # ZLIB_VERSION_MAJOR - The major version of zlib
@ -34,9 +35,9 @@
# (To distribute this file outside of CMake, substitute the full # (To distribute this file outside of CMake, substitute the full
# License text for the above reference.) # License text for the above reference.)
# We set these manually on Windows. include( FindWSWinLibs )
#INCLUDE(FindWSWinLibs) # Zlib is included with GLib2
#FindWSWinLibs("zlib" "ZLIB_HINTS") FindWSWinLibs( "vcpkg-export-*" "ZLIB_HINTS" )
if (NOT ZLIB_INCLUDE_DIR OR NOT ZLIB_LIBRARY) if (NOT ZLIB_INCLUDE_DIR OR NOT ZLIB_LIBRARY)
find_package(PkgConfig) find_package(PkgConfig)
@ -88,16 +89,10 @@ IF(ZLIB_INCLUDE_DIR AND EXISTS "${ZLIB_INCLUDE_DIR}/zlib.h")
ENDIF() ENDIF()
# #
# Sigh. On Windows, we build libz as part of the Wireshark build # inflatePrime was added in zlib 1.2.2.4 in 2005. We're guaranteed
# process, so we don't necessarily *have* a libz library to search # to have it on Windows.
# for inflatePrime() at this point; the search fails on the buildbots,
# for example. See bug 13850.
#
# So, on Windows, we just assume we have a new enough version of
# libz, so that it has inflatePrime().
# #
IF(WIN32) IF(WIN32)
MESSAGE(STATUS "Zlib might not be built yet; assume it contains inflatePrime")
SET(HAVE_INFLATEPRIME ON) SET(HAVE_INFLATEPRIME ON)
ELSE() ELSE()
INCLUDE(CMakePushCheckState) INCLUDE(CMakePushCheckState)
@ -133,24 +128,14 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(ZLIB REQUIRED_VARS ZLIB_LIBRARY ZLIB_INCLUDE_D
VERSION_VAR ZLIB_VERSION_STRING) VERSION_VAR ZLIB_VERSION_STRING)
IF(ZLIB_FOUND) IF(ZLIB_FOUND)
AddWSWinDLL(ZLIB ZLIB_HINTS "zlib*")
SET(ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR}) SET(ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR})
SET(ZLIB_LIBRARIES ${ZLIB_LIBRARY}) SET(ZLIB_LIBRARIES ${ZLIB_LIBRARY})
#if (WIN32)
# set ( ZLIB_DLL_DIR "${ZLIB_HINTS}"
# CACHE PATH "Path to the Zlib DLL"
# )
# file( GLOB _zlib_dll RELATIVE "${ZLIB_DLL_DIR}"
# "${ZLIB_DLL_DIR}/zlib1.dll"
# )
# set ( ZLIB_DLL ${_zlib_dll}
# # We're storing filenames only. Should we use STRING instead?
# CACHE FILEPATH "Zlib DLL file name"
# )
# mark_as_advanced( ZLIB_DLL_DIR ZLIB_DLL )
#endif()
ELSE() ELSE()
SET(ZLIB_INCLUDE_DIRS ) SET(ZLIB_INCLUDE_DIRS )
SET(ZLIB_LIBRARIES ) SET(ZLIB_LIBRARIES )
SET(ZLIB_DLL_DIR ) SET(ZLIB_DLL_DIR )
SET(ZLIB_DLL ) SET(ZLIB_DLL )
SET(ZLIB_PDB )
ENDIF() ENDIF()

View File

@ -69,8 +69,8 @@ Param(
# trouble instead of trying to catch exceptions everywhere. # trouble instead of trying to catch exceptions everywhere.
$ErrorActionPreference = "Stop" $ErrorActionPreference = "Stop"
$Win64CurrentTag = "2019-02-08" $Win64CurrentTag = "2019-03-18"
$Win32CurrentTag = "2019-02-08" $Win32CurrentTag = "2019-03-18"
# Archive file / SHA256 # Archive file / SHA256
$Win64Archives = @{ $Win64Archives = @{
@ -78,12 +78,10 @@ $Win64Archives = @{
"bcg729-1.0.4-win64ws.zip" = "9a095fda4c39860d96f0c568830faa6651cd17635f68e27aa6de46c689aa0ee2"; "bcg729-1.0.4-win64ws.zip" = "9a095fda4c39860d96f0c568830faa6651cd17635f68e27aa6de46c689aa0ee2";
"c-ares-1.15.0-win64ws.zip" = "ade864fd08e887d353a9c939fa6e68b0bf3e08761b6e81f60ce15e6543256552"; "c-ares-1.15.0-win64ws.zip" = "ade864fd08e887d353a9c939fa6e68b0bf3e08761b6e81f60ce15e6543256552";
"gnutls-3.6.3-1-win64ws.zip" = "994ac2578e7b4ca01e589ab2598927d53f7370bc3ff679f3006b0e6bb7a06df4"; "gnutls-3.6.3-1-win64ws.zip" = "994ac2578e7b4ca01e589ab2598927d53f7370bc3ff679f3006b0e6bb7a06df4";
"glib2-2.52.2-1.31-win64ws.zip" = "e19a7812db6715c632a5bbf96452ab474a4eaf0c6aaee999323ac7beb7ebe6db";
"krb5-1.17-1-win64ws.zip" = "1f4a7ab86ae331ea9e58c9776a60def81ae9fe622882b2e8da2ad6ce6f6fb1d8"; "krb5-1.17-1-win64ws.zip" = "1f4a7ab86ae331ea9e58c9776a60def81ae9fe622882b2e8da2ad6ce6f6fb1d8";
"libgcrypt-1.8.3-win64ws.zip" = "53b1c636cb89de308ca4ea01b4990cf1deca7f6c2446189c7ff6e971137ffd76"; "libgcrypt-1.8.3-win64ws.zip" = "53b1c636cb89de308ca4ea01b4990cf1deca7f6c2446189c7ff6e971137ffd76";
"libsmi-svn-40773-win64ws.zip" = "571fcee71d741bf847c3247d4c2e1c42388ca6a9feebe08fc0d4ce053571d15d"; "libsmi-svn-40773-win64ws.zip" = "571fcee71d741bf847c3247d4c2e1c42388ca6a9feebe08fc0d4ce053571d15d";
"libssh-0.7.3-1-win64ws.zip" = "3a81b9f4a914a46f15243bbb13b6919ef1c20d4bf502c47646caeccff2cbd75c"; "libssh-0.7.3-1-win64ws.zip" = "3a81b9f4a914a46f15243bbb13b6919ef1c20d4bf502c47646caeccff2cbd75c";
"libxml2-2.9.9-win64ws.zip" = "4ee89f74f650e52c1ba524fea3dd8529030c94e1ac5b91af34f22376f438fc43";
"lua-5.2.4-unicode-win64-vc14.zip" = "e8968d2c7871ce1ea82cbd29ac1b3a2c59d3dec25e483c5e12de85df66f5d928"; "lua-5.2.4-unicode-win64-vc14.zip" = "e8968d2c7871ce1ea82cbd29ac1b3a2c59d3dec25e483c5e12de85df66f5d928";
"lz4-1.7.5-win64ws.zip" = "dc946b68238c25cbc216901332d608d7f4b084be2d401210f74ce68b9b93207f"; "lz4-1.7.5-win64ws.zip" = "dc946b68238c25cbc216901332d608d7f4b084be2d401210f74ce68b9b93207f";
"MaxMindDB-1.3.2-win64ws.zip" = "9025c43e9b21ff0bfbaf206b8ed96e2920ef1434107f789e4c7c0c1d8b508952"; "MaxMindDB-1.3.2-win64ws.zip" = "9025c43e9b21ff0bfbaf206b8ed96e2920ef1434107f789e4c7c0c1d8b508952";
@ -91,9 +89,9 @@ $Win64Archives = @{
"sbc-1.3-1-win64ws.zip" = "08cef6898c421277a6582ef3225d8820f74a037cbd5b6e673a4d8f4593ce80a1"; "sbc-1.3-1-win64ws.zip" = "08cef6898c421277a6582ef3225d8820f74a037cbd5b6e673a4d8f4593ce80a1";
"snappy-1.1.3-1-win64ws.zip" = "692a15e70f2cdeca621988a46e936d3651e7feb5176981f2656a5e913c394bcc"; "snappy-1.1.3-1-win64ws.zip" = "692a15e70f2cdeca621988a46e936d3651e7feb5176981f2656a5e913c394bcc";
"spandsp-0.0.6-1-win64ws.zip" = "0e46c61a5a8dca562c36e88a8962a50c1ec1a9fcf89dd05996dac5a79e454527"; "spandsp-0.0.6-1-win64ws.zip" = "0e46c61a5a8dca562c36e88a8962a50c1ec1a9fcf89dd05996dac5a79e454527";
"vcpkg-export-20190318-win64ws.zip" = "72c2c43594b0581de2bc86517870a561cc40df294662502536b2a6c06cace87e";
"WinSparkle-0.5.7.zip" = "56d396ef0c4e8b0589ea74134e484376ca6459d972cd1ab1da6b9624d82e6d04"; "WinSparkle-0.5.7.zip" = "56d396ef0c4e8b0589ea74134e484376ca6459d972cd1ab1da6b9624d82e6d04";
"WpdPack_4_1_2.zip" = "ea799cf2f26e4afb1892938070fd2b1ca37ce5cf75fec4349247df12b784edbd"; "WpdPack_4_1_2.zip" = "ea799cf2f26e4afb1892938070fd2b1ca37ce5cf75fec4349247df12b784edbd";
"zlib-1.2.11-2-ws.zip" = "82764f71649cdc1e5467686289936ca7f632966186e2fce35df94037e4ecb596";
} }
$Win32Archives = @{ $Win32Archives = @{
@ -101,12 +99,10 @@ $Win32Archives = @{
"bcg729-1.0.4-win32ws.zip" = "b785ec78dec6bca8252130eb884bfa28c1140001dd7369a535579176de9e4271"; "bcg729-1.0.4-win32ws.zip" = "b785ec78dec6bca8252130eb884bfa28c1140001dd7369a535579176de9e4271";
"c-ares-1.15.0-win32ws.zip" = "a54151203a631b478470aaa21b3a1fde6178f2fea9f15a1a6da4bfcecc92cfcd"; "c-ares-1.15.0-win32ws.zip" = "a54151203a631b478470aaa21b3a1fde6178f2fea9f15a1a6da4bfcecc92cfcd";
"gnutls-3.6.3-1-win32ws.zip" = "42d8313ffb888f525d6c39330c39bcc2182e68ee8433a09dd85e1f1e1474f592"; "gnutls-3.6.3-1-win32ws.zip" = "42d8313ffb888f525d6c39330c39bcc2182e68ee8433a09dd85e1f1e1474f592";
"glib2-2.52.2-1.34-win32ws.zip" = "28c426a7b64c1cd5b058c2f25685ddfaebca29083bd8f94fec2a8910ece6faf0";
"krb5-1.17-1-win32ws.zip" = "f90cac08355ccfe624652d3e05f8e2e077b8830382315d4ea0a6fa52af08260b"; "krb5-1.17-1-win32ws.zip" = "f90cac08355ccfe624652d3e05f8e2e077b8830382315d4ea0a6fa52af08260b";
"libgcrypt-1.8.3-win32ws.zip" = "409b72f2809019050cca91b9e670047c50a0752ff52999089178da54ef926393"; "libgcrypt-1.8.3-win32ws.zip" = "409b72f2809019050cca91b9e670047c50a0752ff52999089178da54ef926393";
"libsmi-svn-40773-win32ws.zip" = "44bc81edfeb8948322ca365fc632e419383907c305cc922e6b74fdbb13827958"; "libsmi-svn-40773-win32ws.zip" = "44bc81edfeb8948322ca365fc632e419383907c305cc922e6b74fdbb13827958";
"libssh-0.7.3-1-win32ws.zip" = "b02f0d318175194ac538a24c9c9fc280a0ecad69fb3afd4945c106b4b7c4fa6f"; "libssh-0.7.3-1-win32ws.zip" = "b02f0d318175194ac538a24c9c9fc280a0ecad69fb3afd4945c106b4b7c4fa6f";
"libxml2-2.9.9-win32ws.zip" = "af41d0869533f06c6878cd49146253acb4dd58c4987bfd579803c42ee10ca7b2";
"lua-5.2.4-unicode-win32-vc14.zip" = "ca2368a83f623674178e9441f71fb791e3c0b46f208e3dac28c6ac735f034bff"; "lua-5.2.4-unicode-win32-vc14.zip" = "ca2368a83f623674178e9441f71fb791e3c0b46f208e3dac28c6ac735f034bff";
"lz4-1.7.5-win32ws.zip" = "1b2e4b509163bc5039c0694369b9e40ba27cdbf4c4c88fcd454ba6a34c79b41b"; "lz4-1.7.5-win32ws.zip" = "1b2e4b509163bc5039c0694369b9e40ba27cdbf4c4c88fcd454ba6a34c79b41b";
"MaxMindDB-1.3.2-win32ws.zip" = "5c8b4bf3092da8fad6edb005a5283c6a74b7e115a50da010953eed77d33c11b7"; "MaxMindDB-1.3.2-win32ws.zip" = "5c8b4bf3092da8fad6edb005a5283c6a74b7e115a50da010953eed77d33c11b7";
@ -114,9 +110,9 @@ $Win32Archives = @{
"sbc-1.3-1-win32ws.zip" = "ad37825e9ace4b849a5442c08f1ed7e30634e6b774bba4307fb86f35f82e71ba"; "sbc-1.3-1-win32ws.zip" = "ad37825e9ace4b849a5442c08f1ed7e30634e6b774bba4307fb86f35f82e71ba";
"snappy-1.1.3-1-win32ws.zip" = "2508ef7c5d27655c356d7b86a00ac887fc178eab5df63595b8793953dae5c379"; "snappy-1.1.3-1-win32ws.zip" = "2508ef7c5d27655c356d7b86a00ac887fc178eab5df63595b8793953dae5c379";
"spandsp-0.0.6-1-win32ws.zip" = "3c25f2f4d641d4257ec9922f6db77346a8eed2e360e7d0e27b828ade19c4705b"; "spandsp-0.0.6-1-win32ws.zip" = "3c25f2f4d641d4257ec9922f6db77346a8eed2e360e7d0e27b828ade19c4705b";
"vcpkg-export-20190318-win32ws.zip" = "5f9eb78b1ea9e6762c2a4104e0126f1f5453919dc9df66fef2b1e0be8d8c5829";
"WinSparkle-0.5.7.zip" = "56d396ef0c4e8b0589ea74134e484376ca6459d972cd1ab1da6b9624d82e6d04"; "WinSparkle-0.5.7.zip" = "56d396ef0c4e8b0589ea74134e484376ca6459d972cd1ab1da6b9624d82e6d04";
"WpdPack_4_1_2.zip" = "ea799cf2f26e4afb1892938070fd2b1ca37ce5cf75fec4349247df12b784edbd"; "WpdPack_4_1_2.zip" = "ea799cf2f26e4afb1892938070fd2b1ca37ce5cf75fec4349247df12b784edbd";
"zlib-1.2.11-2-ws.zip" = "82764f71649cdc1e5467686289936ca7f632966186e2fce35df94037e4ecb596";
} }
# Subdirectory to extract an archive to # Subdirectory to extract an archive to