Update libpq to version 18.3 (#50345)

Co-authored-by: Billy Robert O'Neal III <bion@microsoft.com>
This commit is contained in:
Frank Hale 2026-03-25 14:06:29 -04:00 committed by GitHub
parent 67f167b2f7
commit 717e7d7195
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 353 additions and 619 deletions

View File

@ -23,6 +23,9 @@ all:
$(MAKE) -C src/interfaces/ecpg/pgtypeslib
$(MAKE) -C src/interfaces/ecpg/ecpglib
$(MAKE) -C src/interfaces/ecpg/compatlib
ifeq ($(LIBPQ_LIBRARY_TYPE), static)
$(AR) $(AROPT) src/interfaces/libpq/libpq.a src/common/encnames_shlib.o
endif
ifeq ($(LIBPQ_ENABLE_TOOLS), yes)
$(MAKE) -C src/interfaces/ecpg/preproc
$(MAKE) -C src/fe_utils
@ -34,7 +37,7 @@ endif
.PHONY: install-stlib
install-stlib:
$(MAKE) -C src/common install -o all
rm -f '$(DESTDIR)$(libdir)/libpgcommon_shlib.a'
mv -f '$(DESTDIR)$(libdir)/libpgcommon_shlib.a' '$(DESTDIR)$(libdir)/libpgcommon.a'
$(MAKE) -C src/port install -o all
rm -f '$(DESTDIR)$(libdir)/libpgport_shlib.a'

View File

@ -1,16 +0,0 @@
diff --git a/src/Makefile.shlib b/src/Makefile.shlib
index f94d59d1c597..8ca51ca03f75 100644
--- a/src/Makefile.shlib
+++ b/src/Makefile.shlib
@@ -183,6 +183,11 @@ endif
ifeq ($(PORTNAME), linux)
LINK.shared = $(COMPILER) -shared
ifdef soname
+ ifneq (,$(findstring linux-android,$(host_os)))
+ # Android uses unversioned shared libraries
+ shlib = $(shlib_bare)
+ soname = $(shlib_bare)
+ endif
LINK.shared += -Wl,-soname,$(soname)
endif
BUILD.exports = ( echo '{ global:'; $(AWK) '/^[^\#]/ {printf "%s;\n",$$1}' $<; echo ' local: *; };' ) >$@

View File

@ -1,80 +1,221 @@
function(build_msvc build_type source_path)
if(build_type STREQUAL "DEBUG")
set(vcpkg_configuration "Debug")
set(label "${TARGET_TRIPLET}-dbg")
set(packages_dir "${CURRENT_PACKAGES_DIR}/debug")
else()
set(vcpkg_configuration "Release")
set(label "${TARGET_TRIPLET}-rel")
set(packages_dir "${CURRENT_PACKAGES_DIR}")
function(build_msvc source_path)
# Strip meson build to only compile client libraries and tools.
# The full PostgreSQL meson build includes the server backend, timezone data,
# PL languages, contrib modules, and tests - none of which we need.
# src/meson.build: keep only bin (client tools) and interfaces (ecpg)
file(WRITE "${source_path}/src/meson.build" [=[
subdir('bin')
subdir('interfaces')
]=])
# src/bin/meson.build: only client tools (mirrors unix/no-server-tools.patch)
file(WRITE "${source_path}/src/bin/meson.build" [=[
subdir('pg_amcheck')
subdir('pg_basebackup')
subdir('pg_config')
subdir('pg_dump')
subdir('pg_verifybackup')
subdir('pgbench')
subdir('pgevent')
subdir('psql')
subdir('scripts')
]=])
# Truncate meson.build before the test/pseudo-target sections that reference
# variables from skipped subdirs (pg_regress, regress_module, docs, etc.).
# The subdirs themselves are already commented out by windows/meson-vcpkg.patch,
# but the test infrastructure section still references variables from them.
file(READ "${source_path}/meson.build" meson_content)
string(FIND "${meson_content}" "# all targets that require building code" truncate_pos)
if(NOT truncate_pos EQUAL -1)
string(SUBSTRING "${meson_content}" 0 ${truncate_pos} meson_content)
file(WRITE "${source_path}/meson.build" "${meson_content}")
endif()
set(build_path "${CURRENT_BUILDTREES_DIR}/${label}")
file(REMOVE_RECURSE "${build_path}")
file(COPY "${source_path}/" DESTINATION "${build_path}")
# For static builds, remove __declspec(dllimport) from installed headers
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
vcpkg_replace_string("${build_path}/src/include/port/win32.h" "__declspec (dllimport)" "")
vcpkg_replace_string("${source_path}/src/include/port/win32.h"
"__declspec (dllimport)" "")
endif()
vcpkg_replace_string("${build_path}/src/tools/msvc/MSBuildProject.pm" "perl " "\"${PERL}\" ")
configure_file("${CURRENT_PORT_DIR}/libpq.props.in" "${build_path}/libpq.props" @ONLY)
configure_file("${CURRENT_PORT_DIR}/vcpkg-libs.props.in" "${build_path}/vcpkg-libs.props" @ONLY)
set(config "# Generated by ${CMAKE_CURRENT_LIST_FILE}\n\n")
foreach(var IN ITEMS VCPKG_TARGET_ARCHITECTURE VCPKG_LIBRARY_LINKAGE VCPKG_CRT_LINKAGE)
string(APPEND config "\$config->{${var}} = \"${${var}}\";\n")
endforeach()
foreach(option IN ITEMS icu lz4 nls openssl python tcl xml xslt zlib zstd)
# The meson build compiles the static pgcommon with -DUSE_PRIVATE_ENCODING_FUNCS,
# which renames pg_char_to_encoding -> pg_char_to_encoding_private. But libpq
# (compiled as FRONTEND without that flag) calls the non-private names, causing
# unresolved symbols for consumers. The autoconf Makefile works around this by
# installing pgcommon_shlib (non-private names) as pgcommon. Since we don't build
# the server backend, there's no symbol conflict risk, so just remove the flag.
vcpkg_replace_string("${source_path}/src/common/meson.build"
"'c_args': ['-DUSE_PRIVATE_ENCODING_FUNCS'],"
"# 'c_args': ['-DUSE_PRIVATE_ENCODING_FUNCS'], # vcpkg: use non-private names")
# Map vcpkg features to meson options
vcpkg_list(SET MESON_OPTIONS)
# Disable auto-detection so we don't pick up random system libraries
list(APPEND MESON_OPTIONS -Dauto_features=disabled)
# Features that map directly to meson option names
foreach(option IN ITEMS icu lz4 zlib zstd)
if(option IN_LIST FEATURES)
string(APPEND config "\$config->{${option}} = \"${CURRENT_INSTALLED_DIR}\";\n")
list(APPEND MESON_OPTIONS -D${option}=enabled)
endif()
endforeach()
# Features with different meson option names
if("openssl" IN_LIST FEATURES)
file(STRINGS "${CURRENT_INSTALLED_DIR}/lib/pkgconfig/openssl.pc" OPENSSL_VERSION REGEX "Version:")
string(APPEND config "\$config->{openssl_version} = '${OPENSSL_VERSION}';\n")
list(APPEND MESON_OPTIONS -Dssl=openssl)
else()
list(APPEND MESON_OPTIONS -Dssl=none)
endif()
string(APPEND config "\$config->{python_version} = '3.${PYTHON_VERSION_MINOR}';\n")
string(APPEND config "\$config->{tcl_version} = '90';\n")
file(WRITE "${build_path}/src/tools/msvc/config.pl" "${config}")
set(build_in_parallel "-m")
set(build_targets libpq libecpg_compat)
set(install_target core)
if(HAS_TOOLS AND NOT build_type STREQUAL "DEBUG")
set(build_in_parallel "") # mitigate winflex races
set(build_targets client)
set(install_target client)
if("xml" IN_LIST FEATURES)
list(APPEND MESON_OPTIONS -Dlibxml=enabled)
endif()
if("xslt" IN_LIST FEATURES)
list(APPEND MESON_OPTIONS -Dlibxslt=enabled)
endif()
if("nls" IN_LIST FEATURES)
list(APPEND MESON_OPTIONS -Dnls=enabled)
# Static intl depends on iconv, but PostgreSQL's meson build uses
# cc.find_library('intl') which doesn't resolve transitive deps.
# Patch to also link iconv when intl is found.
vcpkg_replace_string("${source_path}/meson.build"
"i18n = import('i18n')"
"iconv_dep = cc.find_library('iconv', required: false, dirs: test_lib_d)\n if iconv_dep.found()\n libintl = declare_dependency(dependencies: [libintl, iconv_dep])\n endif\n i18n = import('i18n')")
endif()
# plpython requires matching debug/release Python libraries.
# vcpkg's Python is release-only, so only enable for release builds.
vcpkg_list(SET MESON_OPTIONS_RELEASE)
vcpkg_list(SET MESON_OPTIONS_DEBUG)
if("python" IN_LIST FEATURES)
if(VCPKG_CROSSCOMPILING)
# plpython can't be configured when cross-compiling because meson
# needs to run the Python interpreter at configure time, but the
# target binary won't execute on the build host.
message(STATUS "Disabling plpython for cross-compilation build")
list(APPEND MESON_OPTIONS -Dplpython=disabled)
else()
# Use the vcpkg python3 interpreter (which has matching dev libraries)
# instead of the standalone tools Python (which has no SDK).
string(REPLACE [[\]] [[/]] VCPKG_PYTHON3_PATH "${CURRENT_INSTALLED_DIR}/tools/python3/python.exe")
list(APPEND MESON_OPTIONS_RELEASE -Dplpython=enabled "-DPYTHON=${VCPKG_PYTHON3_PATH}")
list(APPEND MESON_OPTIONS_DEBUG -Dplpython=disabled)
endif()
endif()
if("tcl" IN_LIST FEATURES)
list(APPEND MESON_OPTIONS -Dpltcl=enabled)
# The vcpkg tcl port doesn't generate pkg-config files on Windows,
# so meson's dependency('tcl90') fails. Its fallback cc.find_library()
# also fails because meson's link-test probe doesn't work reliably
# with vcpkg's directory layout. Generate .pc files so meson can
# find Tcl through its preferred pkg-config path.
# Tcl naming: tcl90 (dynamic), tcl90s (static), +g suffix for debug.
set(_tcl_pc_name "tcl90")
# Determine the release library name
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
set(_tcl_rel_libname "tcl90s")
else()
set(_tcl_rel_libname "tcl90")
endif()
# Generate release .pc file
set(_tcl_pc_dir "${CURRENT_INSTALLED_DIR}/lib/pkgconfig")
file(MAKE_DIRECTORY "${_tcl_pc_dir}")
file(WRITE "${_tcl_pc_dir}/${_tcl_pc_name}.pc"
"prefix=${CURRENT_INSTALLED_DIR}\nlibdir=\${prefix}/lib\nincludedir=\${prefix}/include\n\nName: ${_tcl_pc_name}\nDescription: Tcl scripting language\nVersion: 9.0\nLibs: -L\${libdir} -l${_tcl_rel_libname}\nCflags: -I\${includedir}\n")
# Determine the debug library name
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
set(_tcl_dbg_libname "tcl90sg")
else()
set(_tcl_dbg_libname "tcl90g")
endif()
# Generate debug .pc file
if(NOT VCPKG_BUILD_TYPE)
set(_tcl_pc_dbg_dir "${CURRENT_INSTALLED_DIR}/debug/lib/pkgconfig")
file(MAKE_DIRECTORY "${_tcl_pc_dbg_dir}")
file(WRITE "${_tcl_pc_dbg_dir}/${_tcl_pc_name}.pc"
"prefix=${CURRENT_INSTALLED_DIR}/debug\nlibdir=\${prefix}/lib\nincludedir=${CURRENT_INSTALLED_DIR}/include\n\nName: ${_tcl_pc_name}\nDescription: Tcl scripting language\nVersion: 9.0\nLibs: -L\${libdir} -l${_tcl_dbg_libname}\nCflags: -I\${includedir}\n")
endif()
list(APPEND MESON_OPTIONS "-Dtcl_version=${_tcl_pc_name}")
endif()
string(REPLACE "x86" "Win32" platform "${VCPKG_TARGET_ARCHITECTURE}")
vcpkg_get_windows_sdk(VCPKG_TARGET_PLATFORM_VERSION)
set(ENV{MSBFLAGS} "\
/p:Platform=${platform} \
/p:PlatformToolset=${VCPKG_PLATFORM_TOOLSET} \
/p:VCPkgLocalAppDataDisabled=true \
/p:UseIntelMKL=No \
/p:WindowsTargetPlatformVersion=${VCPKG_TARGET_PLATFORM_VERSION} \
/p:VcpkgConfiguration=${vcpkg_configuration} \
${build_in_parallel} \
/p:ForceImportBeforeCppTargets=\"${SCRIPTS}/buildsystems/msbuild/vcpkg.targets;${build_path}/vcpkg-libs.props\" \
/p:VcpkgTriplet=${TARGET_TRIPLET} \
/p:VcpkgCurrentInstalledDir=\"${CURRENT_INSTALLED_DIR}\" \
/p:ForceImportAfterCppTargets=\"${build_path}/libpq.props\" \
")
message(STATUS "Building ${label}")
foreach(target IN LISTS build_targets)
string(REPLACE "client" "" target "${target}")
vcpkg_execute_required_process(
COMMAND "${PERL}" build.pl ${build_type} ${target}
WORKING_DIRECTORY "${build_path}/src/tools/msvc"
LOGNAME "build-${target}-${label}"
)
endforeach()
message(STATUS "Installing ${label}")
vcpkg_execute_required_process(
COMMAND "${PERL}" install.pl "${packages_dir}" ${install_target}
WORKING_DIRECTORY "${build_path}/src/tools/msvc"
LOGNAME "install-${label}"
# Provide paths to required tools
vcpkg_list(SET ADDITIONAL_BINARIES)
string(REPLACE [[\]] [[/]] BISON_PATH "${BISON}")
string(REPLACE [[\]] [[/]] FLEX_PATH "${FLEX}")
string(REPLACE [[\]] [[/]] PERL_PATH "${PERL}")
list(APPEND ADDITIONAL_BINARIES
"bison = ['${BISON_PATH}']"
"flex = ['${FLEX_PATH}']"
"perl = ['${PERL_PATH}']"
)
# Extra include/lib dirs for vcpkg dependencies (only if they exist;
# with no optional deps installed, CURRENT_INSTALLED_DIR may lack these).
# Debug and release use different lib dirs (debug libs have different
# suffixes, e.g. tcl90g.lib vs tcl90.lib).
if(EXISTS "${CURRENT_INSTALLED_DIR}/include")
list(APPEND MESON_OPTIONS "-Dextra_include_dirs=['${CURRENT_INSTALLED_DIR}/include']")
endif()
if(EXISTS "${CURRENT_INSTALLED_DIR}/lib")
list(APPEND MESON_OPTIONS_RELEASE "-Dextra_lib_dirs=['${CURRENT_INSTALLED_DIR}/lib']")
endif()
if(EXISTS "${CURRENT_INSTALLED_DIR}/debug/lib")
list(APPEND MESON_OPTIONS_DEBUG "-Dextra_lib_dirs=['${CURRENT_INSTALLED_DIR}/debug/lib']")
endif()
vcpkg_configure_meson(
SOURCE_PATH "${source_path}"
OPTIONS
${MESON_OPTIONS}
OPTIONS_RELEASE
${MESON_OPTIONS_RELEASE}
OPTIONS_DEBUG
${MESON_OPTIONS_DEBUG}
LANGUAGES C
ADDITIONAL_BINARIES
${ADDITIONAL_BINARIES}
)
vcpkg_install_meson()
# Remove _shlib variants of pgcommon/pgport that consumers don't need
file(GLOB _shlib_libs
"${CURRENT_PACKAGES_DIR}/lib/*pgcommon_shlib*"
"${CURRENT_PACKAGES_DIR}/lib/*pgport_shlib*"
"${CURRENT_PACKAGES_DIR}/debug/lib/*pgcommon_shlib*"
"${CURRENT_PACKAGES_DIR}/debug/lib/*pgport_shlib*"
)
if(_shlib_libs)
file(REMOVE ${_shlib_libs})
endif()
# Remove server-related installed files we don't need
file(REMOVE_RECURSE
"${CURRENT_PACKAGES_DIR}/lib/postgresql"
"${CURRENT_PACKAGES_DIR}/debug/lib/postgresql"
"${CURRENT_PACKAGES_DIR}/share/postgresql"
)
if(HAS_TOOLS)
set(TOOL_NAMES
clusterdb createdb createuser dropdb dropuser ecpg pgbench
pg_amcheck pg_basebackup pg_config pg_createsubscriber
pg_dump pg_dumpall pg_isready pg_receivewal pg_recvlogical
pg_restore pg_verifybackup psql reindexdb vacuumdb
)
vcpkg_copy_tools(TOOL_NAMES ${TOOL_NAMES} AUTO_CLEAN)
else()
# Remove all executables (keep DLLs in bin/ for dynamic linkage)
file(GLOB exe_files
"${CURRENT_PACKAGES_DIR}/bin/*.exe"
"${CURRENT_PACKAGES_DIR}/debug/bin/*.exe"
)
if(exe_files)
file(REMOVE ${exe_files})
endif()
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/tools")
endif()
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin")
endif()
endfunction()

View File

@ -2,7 +2,7 @@ vcpkg_download_distfile(ARCHIVE
URLS "https://ftp.postgresql.org/pub/source/v${VERSION}/postgresql-${VERSION}.tar.bz2"
"https://www.mirrorservice.org/sites/ftp.postgresql.org/source/v${VERSION}/postgresql-${VERSION}.tar.bz2"
FILENAME "postgresql-${VERSION}.tar.bz2"
SHA512 23a3d983c5be49c3daabbbde35db2920bd2e2ba8d9baba805e7908da1f43153ff438c76c253ea8ee8ac6f8a9313fbf0348a1e9b45ef530c5e156fee0daceb814
SHA512 fdbe6d726f46738cf14acab96e5c05f7d65aefe78563281b416bb14a27c7c42e4df921e26b32816a5030ddbe506b95767e2c74a35afc589916504df38d1cb11c
)
vcpkg_extract_source_archive(
@ -17,11 +17,10 @@ vcpkg_extract_source_archive(
unix/mingw-static-importlib-fix.patch
unix/python.patch
windows/macro-def.patch
windows/win_bison_flex.patch
windows/msbuild.patch
windows/spin_delay.patch
windows/tcl-9.0-alpha.patch
android/unversioned_so.patch
windows/meson-vcpkg.patch
windows/getopt.patch
)
file(GLOB _py3_include_path "${CURRENT_HOST_INSTALLED_DIR}/include/python3*")
@ -48,51 +47,39 @@ foreach(program_name IN LISTS required_programs)
endforeach()
if(VCPKG_DETECTED_MSVC)
if("xml" IN_LIST FEATURES)
x_vcpkg_pkgconfig_get_modules(
PREFIX PC_LIBXML2
MODULES --msvc-syntax libxml-2.0
LIBS
)
separate_arguments(LIBXML2_LIBS_DEBUG NATIVE_COMMAND "${PC_LIBXML2_LIBS_DEBUG}")
separate_arguments(LIBXML2_LIBS_RELEASE NATIVE_COMMAND "${PC_LIBXML2_LIBS_RELEASE}")
endif()
if("xslt" IN_LIST FEATURES)
x_vcpkg_pkgconfig_get_modules(
PREFIX PC_LIBXSLT
MODULES --msvc-syntax libxslt
LIBS
)
separate_arguments(LIBXSLT_LIBS_DEBUG NATIVE_COMMAND "${PC_LIBXSLT_LIBS_DEBUG}")
separate_arguments(LIBXSLT_LIBS_RELEASE NATIVE_COMMAND "${PC_LIBXSLT_LIBS_RELEASE}")
endif()
include("${CMAKE_CURRENT_LIST_DIR}/build-msvc.cmake")
if(NOT VCPKG_BUILD_TYPE)
build_msvc(DEBUG "${SOURCE_PATH}")
endif()
build_msvc(RELEASE "${SOURCE_PATH}")
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin")
endif()
if(HAS_TOOLS)
vcpkg_copy_tool_dependencies("${CURRENT_PACKAGES_DIR}/tools/${PORT}")
else()
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/tools")
endif()
build_msvc("${SOURCE_PATH}")
else()
file(COPY "${CMAKE_CURRENT_LIST_DIR}/Makefile" DESTINATION "${SOURCE_PATH}")
vcpkg_list(SET BUILD_OPTS)
foreach(option IN ITEMS icu lz4 nls openssl readline xml xslt zlib zstd)
foreach(option IN ITEMS bonjour icu lz4 readline zlib zstd)
if(option IN_LIST FEATURES)
list(APPEND BUILD_OPTS --with-${option})
else()
list(APPEND BUILD_OPTS --without-${option})
endif()
endforeach()
if("openssl" IN_LIST FEATURES)
list(APPEND BUILD_OPTS --with-openssl)
else()
list(APPEND BUILD_OPTS --without-openssl)
endif()
if("xml" IN_LIST FEATURES)
list(APPEND BUILD_OPTS --with-libxml)
else()
list(APPEND BUILD_OPTS --without-libxml)
endif()
if("xslt" IN_LIST FEATURES)
list(APPEND BUILD_OPTS --with-libxslt)
else()
list(APPEND BUILD_OPTS --without-libxslt)
endif()
if("nls" IN_LIST FEATURES)
list(APPEND BUILD_OPTS --enable-nls)
else()
list(APPEND BUILD_OPTS --disable-nls)
endif()
if("nls" IN_LIST FEATURES)
set(ENV{MSGFMT} "${CURRENT_HOST_INSTALLED_DIR}/tools/gettext/bin/msgfmt${VCPKG_HOST_EXECUTABLE_SUFFIX}")
endif()
@ -107,6 +94,9 @@ else()
if(VCPKG_DETECTED_CMAKE_OSX_SYSROOT)
list(APPEND BUILD_OPTS "PG_SYSROOT=${VCPKG_DETECTED_CMAKE_OSX_SYSROOT}")
endif()
if(VCPKG_TARGET_IS_OSX)
set(ENV{LDFLAGS} "$ENV{LDFLAGS} -headerpad_max_install_names")
endif()
vcpkg_configure_make(
SOURCE_PATH "${SOURCE_PATH}"
COPY_SOURCE

View File

@ -1,79 +1,61 @@
diff --git a/configure.ac b/configure.ac
index 7f97248..48ff1a1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -19,7 +19,8 @@ m4_pattern_forbid(^PGAC_)dnl to catch undefined macros
AC_INIT([PostgreSQL], [16.9], [pgsql-bugs@lists.postgresql.org], [], [https://www.postgresql.org/])
@@ -20,7 +20,8 @@ AC_INIT([PostgreSQL], [18.3], [pgsql-bugs@lists.postgresql.org], [], [https://ww
-m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.69], [], [m4_fatal([Autoconf version 2.69 is required.
-Untested combinations of 'autoconf' and PostgreSQL versions are not
-recommended. You can remove the check from 'configure.ac' but it is then
-your responsibility whether the result works or not.])])
+cross_compiling=yes # Avoid conftest loading shared objects
+m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.69], [], [m4_warn([unsupported],[Autoconf version 2.69 is required.
Untested combinations of 'autoconf' and PostgreSQL versions are not
recommended. You can remove the check from 'configure.ac' but it is then
your responsibility whether the result works or not.])])
@@ -1311,7 +1312,8 @@ if test "$enable_thread_safety" = yes; then
fi
+Untested combinations of 'autoconf' and PostgreSQL versions are not
+recommended. You can remove the check from 'configure.ac' but it is then
+your responsibility whether the result works or not.])])
AC_COPYRIGHT([Copyright (c) 1996-2025, PostgreSQL Global Development Group])
AC_CONFIG_SRCDIR([src/backend/access/common/heaptuple.c])
@@ -1347,3 +1348,4 @@ AC_SEARCH_LIBS(pthread_barrier_wait, pthread)
if test "$with_readline" = yes; then
- PGAC_CHECK_READLINE
+ PKG_CHECK_MODULES([READLINE], [readline], [HAVE_LIBREADLINE=1], [pgac_cv_check_readline=no])
+ LIBS="$READLINE_LIBS $LIBS"
if test x"$pgac_cv_check_readline" = x"no"; then
AC_MSG_ERROR([readline library not found
If you have readline already installed, see config.log for details on the
@@ -1321,7 +1323,7 @@ Use --without-readline to disable readline support.])
fi
@@ -1357,3 +1359,3 @@ fi
if test "$with_zlib" = yes; then
- AC_CHECK_LIB(z, inflate, [],
+ PKG_CHECK_MODULES([ZLIB], [zlib], [LIBS="$ZLIB_LIBS $LIBS"],
[AC_MSG_ERROR([zlib library not found
If you have zlib already installed, see config.log for details on the
failure. It is possible the compiler isn't looking in the proper directory.
@@ -1370,6 +1372,9 @@ if test "$with_ssl" = openssl ; then
# Minimum required OpenSSL version is 1.0.1
AC_DEFINE(OPENSSL_API_COMPAT, [0x10001000L],
@@ -1394,5 +1396,9 @@ fi
AC_DEFINE(OPENSSL_API_COMPAT, [0x10101000L],
[Define to the OpenSSL API version in use. This avoids deprecation warnings from newer OpenSSL versions.])
+ PKG_CHECK_MODULES([CRYPTO_new_ex_data], [libcrypto], [LIBS="$CRYPTO_new_ex_data_LIBS $LIBS"], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])])
+ PKG_CHECK_MODULES([SSL_new], [libssl], [LIBS="$SSL_new_LIBS $LIBS"], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])])
+ if false ; then
if test "$PORTNAME" != "win32"; then
AC_CHECK_LIB(crypto, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])])
AC_CHECK_LIB(ssl, SSL_new, [], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])])
@@ -1377,6 +1382,7 @@ if test "$with_ssl" = openssl ; then
AC_SEARCH_LIBS(CRYPTO_new_ex_data, [eay32 crypto], [], [AC_MSG_ERROR([library 'eay32' or 'crypto' is required for OpenSSL])])
AC_SEARCH_LIBS(SSL_new, [ssleay32 ssl], [], [AC_MSG_ERROR([library 'ssleay32' or 'ssl' is required for OpenSSL])])
fi
AC_CHECK_LIB(crypto, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])])
AC_CHECK_LIB(ssl, SSL_new, [], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])])
+ fi
# Functions introduced in OpenSSL 1.0.2. LibreSSL does not have
# SSL_CTX_set_cert_cb().
AC_CHECK_FUNCS([X509_get_signature_nid SSL_CTX_set_cert_cb])
@@ -1403,19 +1409,23 @@ if test "$with_pam" = yes ; then
fi
# Functions introduced in OpenSSL 1.1.1.
@@ -1415,3 +1421,4 @@ fi
if test "$with_libxml" = yes ; then
- AC_CHECK_LIB(xml2, xmlSaveToBuffer, [], [AC_MSG_ERROR([library 'xml2' (version >= 2.6.23) is required for XML support])])
+ PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6.23], [AC_DEFINE(HAVE_LIBXML2,1,[Define to 1 if with xml2])], [AC_MSG_ERROR([library 'xml2' (version >= 2.6.23) is required for XML support])])
+ LIBS="$LIBXML2_LIBS $LIBS"
fi
@@ -1419,3 +1426,4 @@ fi
if test "$with_libxslt" = yes ; then
- AC_CHECK_LIB(xslt, xsltCleanupGlobals, [], [AC_MSG_ERROR([library 'xslt' is required for XSLT support])])
+ PKG_CHECK_MODULES([LIBXSLT], [libxslt], [AC_DEFINE(HAVE_LIBXSLT,1,[Define to 1 if with xslt])], [AC_MSG_ERROR([library 'xslt' is required for XSLT support])])
+ LIBS="$LIBXSLT_LIBS $LIBS"
fi
@@ -1430,3 +1438,4 @@ fi
if test "$with_lz4" = yes ; then
- AC_CHECK_LIB(lz4, LZ4_compress_default, [], [AC_MSG_ERROR([library 'lz4' is required for LZ4 support])])
+ PKG_CHECK_MODULES([LZ4], [liblz4], [AC_DEFINE(HAVE_LIBLZ4,1,[Define to 1 if with lz4])], [AC_MSG_ERROR([library 'lz4' is required for LZ4 support])])
+ LIBS="$LZ4_LIBS $LIBS"
fi
@@ -1434,3 +1443,4 @@ fi
if test "$with_zstd" = yes ; then
- AC_CHECK_LIB(zstd, ZSTD_compress, [], [AC_MSG_ERROR([library 'zstd' is required for ZSTD support])])
+ PKG_CHECK_MODULES([ZSTD], [libzstd], [AC_DEFINE(HAVE_LIBZSTD,1,[Define to 1 if with zstd])], [AC_MSG_ERROR([library 'zstd' is required for ZSTD support])])
+ LIBS="$ZSTD_LIBS $LIBS"
fi
# Note: We can test for libldap_r only after we know PTHREAD_LIBS;

View File

@ -1,10 +1,7 @@
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index 5dacc4d..a9a797e 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -100,14 +100,14 @@ datarootdir := @datarootdir@
bindir := @bindir@
@@ -113,42 +113,42 @@ bindir := @bindir@
-datadir := @datadir@
+datadir := @datadir@/postgresql
@ -19,7 +16,8 @@ index 5dacc4d..a9a797e 100644
ifeq "$(findstring pgsql, $(sysconfdir))" ""
ifeq "$(findstring postgres, $(sysconfdir))" ""
override sysconfdir := $(sysconfdir)/postgresql
@@ -116,7 +116,7 @@ endif
endif
endif
libdir := @libdir@
@ -28,7 +26,8 @@ index 5dacc4d..a9a797e 100644
ifeq "$(findstring pgsql, $(pkglibdir))" ""
ifeq "$(findstring postgres, $(pkglibdir))" ""
override pkglibdir := $(pkglibdir)/postgresql
@@ -125,7 +125,7 @@ endif
endif
endif
includedir := @includedir@
@ -37,7 +36,8 @@ index 5dacc4d..a9a797e 100644
ifeq "$(findstring pgsql, $(pkgincludedir))" ""
ifeq "$(findstring postgres, $(pkgincludedir))" ""
override pkgincludedir := $(pkgincludedir)/postgresql
@@ -134,7 +134,7 @@ endif
endif
endif
mandir := @mandir@
@ -46,3 +46,7 @@ index 5dacc4d..a9a797e 100644
ifeq "$(findstring pgsql, $(docdir))" ""
ifeq "$(findstring postgres, $(docdir))" ""
override docdir := $(docdir)/postgresql
endif
endif
htmldir := @htmldir@

View File

@ -2,7 +2,7 @@ diff --git a/src/bin/Makefile b/src/bin/Makefile
index 7f9dde9..bc6d835 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -13,29 +13,20 @@ subdir = src/bin
@@ -13,31 +13,20 @@ subdir = src/bin
top_builddir = ../..
include $(top_builddir)/src/Makefile.global
@ -15,6 +15,7 @@ index 7f9dde9..bc6d835 100644
- pg_archivecleanup \
pg_basebackup \
- pg_checksums \
- pg_combinebackup \
pg_config \
- pg_controldata \
- pg_ctl \
@ -26,6 +27,7 @@ index 7f9dde9..bc6d835 100644
- pg_upgrade \
pg_verifybackup \
- pg_waldump \
- pg_walsummary \
pgbench \
psql \
scripts

View File

@ -42,8 +42,8 @@ index 8abdb09..185461e 100644
+ifeq ($(LIBPQ_LIBRARY_TYPE), shared)
libpq-refs-stamp: $(shlib)
ifneq ($(enable_coverage), yes)
ifeq (,$(filter aix solaris,$(PORTNAME)))
@@ -124,6 +125,10 @@ ifeq (,$(filter aix solaris,$(PORTNAME)))
ifeq (,$(filter solaris,$(PORTNAME)))
@@ -124,6 +125,10 @@ ifeq (,$(filter solaris,$(PORTNAME)))
endif
endif
touch $@

View File

@ -1,7 +1,6 @@
{
"name": "libpq",
"version": "16.9",
"port-version": 3,
"version": "18.3",
"description": "The official database access API of postgresql",
"homepage": "https://www.postgresql.org/",
"license": "PostgreSQL",
@ -20,7 +19,7 @@
"host": true
},
{
"name": "vcpkg-pkgconfig-get-modules",
"name": "vcpkg-tool-meson",
"host": true,
"platform": "windows & !mingw"
}

View File

@ -0,0 +1,21 @@
diff --git a/meson.build b/meson.build
--- a/meson.build
+++ b/meson.build
@@ -2624,7 +2624,7 @@ header_checks = [
'copyfile.h',
'crtdefs.h',
'execinfo.h',
- 'getopt.h',
+ # 'getopt.h', # vcpkg: skip to avoid getopt-win32 header pollution
'ifaddrs.h',
'mbarrier.h',
'strings.h',
@@ -2714,7 +2714,7 @@ endforeach
if cc.has_type('struct option',
args: test_c_args, include_directories: postgres_inc,
- prefix: '@0@'.format(cdata.get('HAVE_GETOPT_H')) == '1' ? '#include <getopt.h>' : '')
+ prefix: '@0@'.format(cdata.get('HAVE_GETOPT_H', 0)) == '1' ? '#include <getopt.h>' : '')
cdata.set('HAVE_STRUCT_OPTION', 1)
endif

View File

@ -2,7 +2,7 @@ diff --git a/src/include/common/checksum_helper.h b/src/include/common/checksum_
index cac7570ea..d0ca1243c 100644
--- a/src/include/common/checksum_helper.h
+++ b/src/include/common/checksum_helper.h
@@ -33,7 +28,13 @@
@@ -28,7 +28,13 @@
*/
typedef enum pg_checksum_type
{

View File

@ -0,0 +1,45 @@
diff --git a/meson.build b/meson.build
--- a/meson.build
+++ b/meson.build
@@ -83,7 +83,7 @@ endif
###############################################################
postgres_inc_d = ['src/include']
-postgres_inc_d += get_option('extra_include_dirs')
+# postgres_inc_d += get_option('extra_include_dirs') # vcpkg: moved below
postgres_lib_d = get_option('extra_lib_dirs')
@@ -316,6 +316,7 @@ elif host_system == 'windows'
postgres_inc_d += 'src/include/port/win32'
if cc.get_id() == 'msvc'
postgres_inc_d += 'src/include/port/win32_msvc'
+ postgres_inc_d += get_option('extra_include_dirs') # vcpkg: moved here for correct priority
endif
windows = import('windows')
@@ -3218,6 +3219,7 @@ endif
generated_headers = []
# headers that the backend build depends on
generated_backend_headers = []
+generated_backend_sources = []
# configure_files() output, needs a way of converting to file names
configure_files = []
@@ -3372,12 +3374,12 @@ test_install_libs = []
subdir('src')
-subdir('contrib')
+# subdir('contrib') # vcpkg: skip
-subdir('src/test')
-subdir('src/interfaces/ecpg/test')
+# subdir('src/test') # vcpkg: skip
+# subdir('src/interfaces/ecpg/test') # vcpkg: skip
-subdir('doc/src/sgml')
+# subdir('doc/src/sgml') # vcpkg: skip
generated_sources_ac += {'': ['GNUmakefile']}

View File

@ -1,398 +0,0 @@
diff --git a/src/tools/msvc/Install.pm b/src/tools/msvc/Install.pm
index 05548d7..097db91 100644
--- a/src/tools/msvc/Install.pm
+++ b/src/tools/msvc/Install.pm
@@ -53,6 +53,11 @@ sub Install
my $target = shift;
$insttype = shift;
$insttype = "all" unless ($insttype);
+ if ($insttype eq 'core')
+ {
+ $insttype = 'client';
+ @client_program_files = ( 'libecpg','libecpg_compat', 'libpgtypes', 'libpq' );
+ }
# if called from vcregress, the config will be passed to us
# so no need to re-include these
@@ -89,7 +94,7 @@ sub Install
my $majorver = DetermineMajorVersion();
print "Installing version $majorver for $conf in $target\n";
- my @client_dirs = ('bin', 'lib', 'share', 'symbols');
+ my @client_dirs = ('bin', 'lib', 'share', 'tools', 'share/libpq', 'tools/libpq');
my @all_dirs = (
@client_dirs, 'doc', 'doc/contrib', 'doc/extension', 'share/contrib',
'share/extension', 'share/timezonesets', 'share/tsearch_data');
@@ -117,11 +122,11 @@ sub Install
}
},
@top_dir);
- CopySetOfFiles('config files', $sample_files, $target . '/share/');
+ CopySetOfFiles('config files', $sample_files, $target . '/share/libpq/');
CopyFiles(
'Import libraries',
$target . '/lib/',
- "$conf\\", "postgres\\postgres.lib", "libpgcommon\\libpgcommon.lib",
+ "$conf\\", "libpgcommon\\libpgcommon.lib",
"libpgport\\libpgport.lib");
CopyContribFiles($config, $target);
CopyIncludeFiles($target);
@@ -293,7 +298,16 @@ sub CopySolutionOutput
{
if ($1 == 1)
{
- push(@{ $install_list{'bin'} }, "exe");
+ push(@{ $install_list{'tools\\libpq'} }, "exe");
+ }
+ elsif ($1 == 2)
+ {
+ push(@{ $install_list{'bin'} }, "dll");
+ push(@{ $install_list{'lib'} }, "lib") if $is_sharedlib; # not for plugins
+ }
+ elsif ($is_sharedlib) # forced to static lib by vcpkg triplet
+ {
+ push(@{ $install_list{'lib'} }, "lib");
}
elsif ($1 == 2)
{
@@ -317,7 +331,16 @@ sub CopySolutionOutput
{
if ($1 eq 'Application')
{
- push(@{ $install_list{'bin'} }, "exe");
+ push(@{ $install_list{'tools\\libpq'} }, "exe");
+ }
+ elsif ($1 eq 'DynamicLibrary')
+ {
+ push(@{ $install_list{'bin'} }, "dll");
+ push(@{ $install_list{'lib'} }, "lib") if $is_sharedlib; # not for plugins
+ }
+ elsif ($is_sharedlib) # forced to static lib by vcpkg triplet
+ {
+ push(@{ $install_list{'lib'} }, "lib");
}
elsif ($1 eq 'DynamicLibrary')
{
@@ -350,7 +373,8 @@ sub CopySolutionOutput
|| croak "Could not copy $pf.$ext\n";
}
}
- lcopy("$conf\\$pf\\$pf.pdb", "$target\\symbols\\$pf.pdb")
+ $1 ne 'DynamicLibrary' ||
+ lcopy("$conf\\$pf\\$pf.pdb", "$target\\bin\\$pf.pdb")
|| croak "Could not copy $pf.pdb\n";
print ".";
}
@@ -453,7 +477,7 @@ sub CopySubdirFiles
foreach my $f (split /\s+/, $flist)
{
lcopy("$subdir/$module/$f.control",
- "$target/share/extension/$f.control")
+ "$target/share/libpq/extension/$f.control")
|| croak("Could not copy file $f.control in contrib $module");
print '.';
}
@@ -471,7 +495,7 @@ sub CopySubdirFiles
foreach my $f (split /\s+/, $flist)
{
lcopy("$subdir/$module/$f",
- "$target/share/$moduledir/" . basename($f))
+ "$target/share/libpq/$moduledir/" . basename($f))
|| croak("Could not copy file $f in contrib $module");
print '.';
}
@@ -486,7 +510,7 @@ sub CopySubdirFiles
foreach my $f (split /\s+/, $flist)
{
lcopy("$subdir/$module/$f",
- "$target/share/tsearch_data/" . basename($f))
+ "$target/share/libpq/tsearch_data/" . basename($f))
|| croak("Could not copy file $f in $subdir $module");
print '.';
}
@@ -549,7 +573,7 @@ sub CopySubdirFiles
if ($module eq 'spi');
foreach my $f (split /\s+/, $flist)
{
- lcopy("$subdir/$module/$f", "$target/doc/$moduledir/$f")
+ lcopy("$subdir/$module/$f", "$target/share/libpq/doc/$moduledir/$f")
|| croak("Could not copy file $f in contrib $module");
print '.';
}
@@ -675,7 +699,7 @@ sub GenerateNLSFiles
my $majorver = shift;
print "Installing NLS files...";
- EnsureDirectories($target, "share/locale");
+ EnsureDirectories($target, "share/libpq/locale");
my @flist;
File::Find::find(
{
@@ -697,12 +721,12 @@ sub GenerateNLSFiles
next unless /([^\/]+)\.po/;
$lang = $1;
- EnsureDirectories($target, "share/locale/$lang",
- "share/locale/$lang/LC_MESSAGES");
+ EnsureDirectories($target, "share/libpq/locale/$lang",
+ "share/libpq/locale/$lang/LC_MESSAGES");
my @args = (
- "$nlspath\\bin\\msgfmt",
+ "msgfmt",
'-o',
- "$target\\share\\locale\\$lang\\LC_MESSAGES\\$prgm-$majorver.mo",
+ "$target\\share\\libpq\\locale\\$lang\\LC_MESSAGES\\$prgm-$majorver.mo",
$_);
system(@args) && croak("Could not run msgfmt on $dir\\$_");
print ".";
diff --git a/src/tools/msvc/MSBuildProject.pm b/src/tools/msvc/MSBuildProject.pm
index 62fec1f..ecb1b86 100644
--- a/src/tools/msvc/MSBuildProject.pm
+++ b/src/tools/msvc/MSBuildProject.pm
@@ -80,14 +80,14 @@ EOF
print $f <<EOF;
</PropertyGroup>
EOF
-
+ my $maybe_dll = $self->{solution}->{options}->{VCPKG_CRT_LINKAGE} eq 'dynamic' ? "DLL" : '';
$self->WriteItemDefinitionGroup(
$f, 'Debug',
{
defs => "_DEBUG;DEBUG=1",
opt => 'Disabled',
strpool => 'false',
- runtime => 'MultiThreadedDebugDLL'
+ runtime => 'MultiThreadedDebug' . $maybe_dll
});
$self->WriteItemDefinitionGroup(
$f,
@@ -96,7 +96,7 @@ EOF
defs => "",
opt => 'Full',
strpool => 'true',
- runtime => 'MultiThreadedDLL'
+ runtime => 'MultiThreaded' . $maybe_dll
});
return;
}
@@ -266,6 +266,8 @@ sub WriteConfigurationPropertyGroup
($self->{type} eq "exe")
? 'Application'
: ($self->{type} eq "dll" ? 'DynamicLibrary' : 'StaticLibrary');
+ if ($self->{solution}->{options}->{VCPKG_LIBRARY_LINKAGE} eq 'static')
+ { $cfgtype =~ s/DynamicLibrary/StaticLibrary/; }
print $f <<EOF;
<PropertyGroup Condition="'\$(Configuration)|\$(Platform)'=='$cfgname|$self->{platform}'" Label="Configuration">
@@ -311,7 +313,9 @@ sub WriteItemDefinitionGroup
my $libs = $self->GetAdditionalLinkerDependencies($cfgname, ';');
my $targetmachine =
- $self->{platform} eq 'Win32' ? 'MachineX86' : 'MachineX64';
+ 'Machine' . uc($self->{platform});
+ $targetmachine =~ s/WIN32/X86/;
+ my $randomizebase = ($self->{platform} =~ /^ARM/) ? 'true' : 'false';
my $arch = $self->{platform} eq 'Win32' ? 'x86' : 'x86_64';
my $includes = join ';', @{ $self->{includes} }, "";
diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm
index 9e05eb9..8ac0a5d 100644
--- a/src/tools/msvc/Mkvcbuild.pm
+++ b/src/tools/msvc/Mkvcbuild.pm
@@ -125,8 +125,10 @@ sub mkvcbuild
if ($vsVersion >= '9.00')
{
+ if ($solution->{platform} !~ /^ARM/) {
push(@pgportfiles, 'pg_crc32c_sse42_choose.c');
push(@pgportfiles, 'pg_crc32c_sse42.c');
+ }
push(@pgportfiles, 'pg_crc32c_sb8.c');
}
else
@@ -208,6 +210,7 @@ sub mkvcbuild
'syncrep_gram.y');
$postgres->AddFiles('src/backend/utils/adt', 'jsonpath_scan.l',
'jsonpath_gram.y');
+ ($config->{VCPKG_LIBRARY_LINKAGE} eq 'dynamic') &&
$postgres->AddDefine('BUILDING_DLL');
$postgres->AddLibrary('secur32.lib');
$postgres->AddLibrary('ws2_32.lib');
@@ -252,12 +255,13 @@ sub mkvcbuild
$pltcl->AddIncludeDir($solution->{options}->{tcl} . '/include');
$pltcl->AddReference($postgres);
- for my $tclver (qw(86t 86 85 84))
+ my $v = $solution->{options}->{tcl_version};
+ for my $tclver ( ("${v}","${v}s","${v}sx") )
{
my $tcllib = $solution->{options}->{tcl} . "/lib/tcl$tclver.lib";
if (-e $tcllib)
{
- $pltcl->AddLibrary($tcllib);
+ $pltcl->AddLibrary("\$(VcpkgTcl${tclver}Libs)");
$found = 1;
last;
}
@@ -512,8 +516,7 @@ sub mkvcbuild
. "print(str(sys.version_info[0])+str(sys.version_info[1]))";
my $prefixcmd =
qq("$solution->{options}->{python}\\python" -c "$pythonprog");
- my $pyout = `$prefixcmd`;
- die "Could not query for python version!\n" if $?;
+ my $pyout = "$solution->{options}->{python}\n$solution->{options}->{python_version}";
my ($pyprefix, $pyver) = split(/\r?\n/, $pyout);
# Sometimes (always?) if python is not present, the execution
@@ -529,8 +532,8 @@ sub mkvcbuild
my $plpython = $solution->AddProject('plpython' . $pymajorver,
'dll', 'PLs', 'src/pl/plpython');
- $plpython->AddIncludeDir($pyprefix . '/include');
- $plpython->AddLibrary($pyprefix . "/Libs/python$pyver.lib");
+ $plpython->AddIncludeDir($pyprefix . "/include/python$pyver");
+ $plpython->AddLibrary('$(VcpkgPythonLibs)');
$plpython->AddReference($postgres);
# Add transform modules dependent on plpython
diff --git a/src/tools/msvc/Project.pm b/src/tools/msvc/Project.pm
index 0507ad0..48caab9 100644
--- a/src/tools/msvc/Project.pm
+++ b/src/tools/msvc/Project.pm
@@ -167,6 +167,11 @@ sub AddReference
}
$self->AddLibrary(
"__CFGNAME__/" . $ref->{name} . "/" . $ref->{name} . ".lib");
+
+ if ($self->{solution}->{options}->{VCPKG_LIBRARY_LINKAGE} eq 'static')
+ {
+ map { $self->AddLibrary($_) } @{ $ref->{libraries} };
+ }
}
return;
}
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index b6d31c3..27d89fc 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -63,6 +63,11 @@ sub DeterminePlatform
my $self = shift;
if ($^O eq "MSWin32")
+ {
+ $self->{platform} = uc($self->{options}->{VCPKG_TARGET_ARCHITECTURE});
+ $self->{platform} =~ s/^X86$/Win32/;
+ }
+ elsif (0)
{
# Examine CL help output to determine if we are in 32 or 64-bit mode.
my $output = `cl /help 2>&1`;
@@ -124,6 +129,9 @@ sub copyFile
sub GetOpenSSLVersion
{
my $self = shift;
+ if ($self->{options}->{openssl_version} =~ /(\d+)\.(\d+)\.(\d+)/m) {
+ return ($1, $2, $3);
+ }
# Attempt to get OpenSSL version and location. This assumes that
# openssl.exe is in the specified directory.
@@ -148,7 +156,7 @@ sub GetOpenSSLVersion
sub GenerateFiles
{
my $self = shift;
- my $bits = $self->{platform} eq 'Win32' ? 32 : 64;
+ my $bits = $self->{platform} =~ /64/ ? 64 : 32;
my $ac_init_found = 0;
my $package_name;
my $package_version;
@@ -440,7 +448,7 @@ sub GenerateFiles
USE_PAM => undef,
USE_SLICING_BY_8_CRC32C => undef,
USE_SSE42_CRC32C => undef,
- USE_SSE42_CRC32C_WITH_RUNTIME_CHECK => 1,
+ USE_SSE42_CRC32C_WITH_RUNTIME_CHECK => $self->{platform} =~ /^ARM/ ? undef : 1,
USE_SYSTEMD => undef,
USE_SYSV_SEMAPHORES => undef,
USE_SYSV_SHARED_MEMORY => undef,
@@ -725,14 +733,14 @@ sub GenerateFiles
|| confess "Could not open pg_config_paths.h";
print $o <<EOF;
#define PGBINDIR "/bin"
-#define PGSHAREDIR "/share"
+#define PGSHAREDIR "/share/libpq"
#define SYSCONFDIR "/etc"
#define INCLUDEDIR "/include"
#define PKGINCLUDEDIR "/include"
#define INCLUDEDIRSERVER "/include/server"
#define LIBDIR "/lib"
#define PKGLIBDIR "/lib"
-#define LOCALEDIR "/share/locale"
+#define LOCALEDIR "/share/libpq/locale"
#define DOCDIR "/doc"
#define HTMLDIR "/doc"
#define MANDIR "/man"
@@ -957,11 +965,15 @@ sub AddProject
if ($self->{options}->{zlib})
{
$proj->AddIncludeDir($self->{options}->{zlib} . '\include');
- $proj->AddLibrary($self->{options}->{zlib} . '\lib\zdll.lib');
+ $proj->AddLibrary('$(VcpkgZlibLibs)');
}
if ($self->{options}->{openssl})
{
$proj->AddIncludeDir($self->{options}->{openssl} . '\include');
+ $proj->AddLibrary('$(VcpkgOpensslLibs)');
+ }
+ elsif (0)
+ {
my ($digit1, $digit2, $digit3) = $self->GetOpenSSLVersion();
# Starting at version 1.1.0 the OpenSSL installers have
@@ -1032,7 +1044,7 @@ sub AddProject
if ($self->{options}->{nls})
{
$proj->AddIncludeDir($self->{options}->{nls} . '\include');
- $proj->AddLibrary($self->{options}->{nls} . '\lib\libintl.lib');
+ $proj->AddLibrary('$(VcpkgNlsLibs)');
}
if ($self->{options}->{gss})
{
@@ -1065,6 +1077,10 @@ sub AddProject
if ($self->{options}->{icu})
{
$proj->AddIncludeDir($self->{options}->{icu} . '\include');
+ $proj->AddLibrary('$(VcpkgIcuLibs)');
+ }
+ elsif (0)
+ {
if ($self->{platform} eq 'Win32')
{
$proj->AddLibrary($self->{options}->{icu} . '\lib\icuin.lib');
@@ -1082,22 +1098,22 @@ sub AddProject
{
$proj->AddIncludeDir($self->{options}->{xml} . '\include');
$proj->AddIncludeDir($self->{options}->{xml} . '\include\libxml2');
- $proj->AddLibrary($self->{options}->{xml} . '\lib\libxml2.lib');
+ $proj->AddLibrary('$(VcpkgXmlLibs)');
}
if ($self->{options}->{xslt})
{
$proj->AddIncludeDir($self->{options}->{xslt} . '\include');
- $proj->AddLibrary($self->{options}->{xslt} . '\lib\libxslt.lib');
+ $proj->AddLibrary('$(VcpkgXsltLibs)');
}
if ($self->{options}->{lz4})
{
$proj->AddIncludeDir($self->{options}->{lz4} . '\include');
- $proj->AddLibrary($self->{options}->{lz4} . '\lib\liblz4.lib');
+ $proj->AddLibrary('$(VcpkgLz4Libs)');
}
if ($self->{options}->{zstd})
{
$proj->AddIncludeDir($self->{options}->{zstd} . '\include');
- $proj->AddLibrary($self->{options}->{zstd} . '\lib\libzstd.lib');
+ $proj->AddLibrary('$(VcpkgZstdLibs)');
}
if ($self->{options}->{uuid})
{

View File

@ -1,42 +0,0 @@
diff --git a/src/tools/msvc/pgbison.pl b/src/tools/msvc/pgbison.pl
index 25df669..373bedd 100644
--- a/src/tools/msvc/pgbison.pl
+++ b/src/tools/msvc/pgbison.pl
@@ -13,7 +13,7 @@ use File::Basename;
do './src/tools/msvc/buildenv.pl' if -e 'src/tools/msvc/buildenv.pl';
-my ($bisonver) = `bison -V`; # grab first line
+my ($bisonver) = `win_bison -V`; # grab first line
$bisonver = (split(/\s+/, $bisonver))[3]; # grab version number
unless ($bisonver ge '2.3')
@@ -51,5 +51,5 @@ my $headerflag = ($make =~ /^$basetarg:\s+BISONFLAGS\b.*-d/m ? '-d' : '');
my $nodep = $bisonver ge '3.0' ? "-Wno-deprecated" : "";
-system("bison $nodep $headerflag $input -o $output");
+system("win_bison $nodep $headerflag $input -o $output");
exit $? >> 8;
diff --git a/src/tools/msvc/pgflex.pl b/src/tools/msvc/pgflex.pl
index c308a08..0807ce7 100644
--- a/src/tools/msvc/pgflex.pl
+++ b/src/tools/msvc/pgflex.pl
@@ -16,7 +16,7 @@ $ENV{CYGWIN} = 'nodosfilewarning';
do './src/tools/msvc/buildenv.pl' if -e 'src/tools/msvc/buildenv.pl';
-my ($flexver) = `flex -V`; # grab first line
+my ($flexver) = `win_flex -V`; # grab first line
$flexver = (split(/\s+/, $flexver))[1];
$flexver =~ s/[^0-9.]//g;
my @verparts = split(/\./, $flexver);
@@ -52,7 +52,7 @@ close($mf);
my $basetarg = basename($output);
my $flexflags = ($make =~ /^$basetarg:\s*FLEXFLAGS\s*=\s*(\S.*)/m ? $1 : '');
-system("flex $flexflags -o$output $input");
+system("win_flex $flexflags -o$output $input");
if ($? == 0)
{

View File

@ -682,8 +682,6 @@ libpmemobj-cpp[benchmark]:arm64-windows=cascade
libpmemobj-cpp[benchmark]:x64-linux=cascade
libpmemobj-cpp[benchmark]:x64-windows-static=cascade
libpmemobj-cpp[benchmark]:x86-windows=cascade
libpq[all]:arm64-linux=cascade
libpq[python]:arm64-linux=cascade
libproxy[bindings-csharp](!windows & !osx)=feature-fails # No C# compiler installed (brew install mono on osx)
libproxy[tests]:arm64-linux=feature-fails # tests expect a system-deployed z.so
libpsl[libidn2,libicu]=options # "At least one of libidn2 and libicu should be selected."

View File

@ -5389,8 +5389,8 @@
"port-version": 18
},
"libpq": {
"baseline": "16.9",
"port-version": 3
"baseline": "18.3",
"port-version": 0
},
"libpqxx": {
"baseline": "8.0.0",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "fc832da8b65bf0a3b12a174b3b100ab256692eee",
"version": "18.3",
"port-version": 0
},
{
"git-tree": "efbe73e3eb02f7ad96a35763a9270872ca78f4cf",
"version": "16.9",