mirror of
https://github.com/postgres/postgres.git
synced 2026-01-26 09:41:40 +03:00
Enable Python Limited API for PL/Python on MSVC
Previously, the Python Limited API was disabled on MSVC due to build failures caused by Meson not knowing to link against python3.lib instead of python3XX.lib when using the Limited API. This commit works around the Meson limitation by explicitly finding and linking against python3.lib on MSVC, and removes the preprocessor guard that was disabling the Limited API on MSVC in plpython.h. This requires python3.lib to be present in the Python installation, which is included when Python is installed. Author: Bryan Green <dbryan.green@gmail.com> Discussion: https://www.postgresql.org/message-id/flat/ee410de1-1e0b-4770-b125-eeefd4726a24%40eisentraut.org
This commit is contained in:
16
meson.build
16
meson.build
@@ -1336,7 +1336,21 @@ if not pyopt.disabled()
|
|||||||
pm = import('python')
|
pm = import('python')
|
||||||
python3_inst = pm.find_installation(python.full_path(), required: pyopt)
|
python3_inst = pm.find_installation(python.full_path(), required: pyopt)
|
||||||
if python3_inst.found()
|
if python3_inst.found()
|
||||||
python3_dep = python3_inst.dependency(embed: true, required: pyopt)
|
# On MSVC, link against python3.lib instead of python3XX.lib for
|
||||||
|
# Python Limited API. Right now, this is the only platform that
|
||||||
|
# needs this workaround. In the long run, Meson should handle
|
||||||
|
# this internally:
|
||||||
|
# <https://github.com/mesonbuild/meson/issues/13824>.
|
||||||
|
if host_system == 'windows' and cc.get_id() == 'msvc'
|
||||||
|
python3_libdir = python3_inst.get_variable('prefix') / 'libs'
|
||||||
|
python3_lib = cc.find_library('python3', dirs: python3_libdir, required: pyopt)
|
||||||
|
python3_dep = declare_dependency(
|
||||||
|
include_directories: include_directories(python3_inst.get_variable('prefix') / 'include'),
|
||||||
|
dependencies: python3_lib,
|
||||||
|
)
|
||||||
|
else
|
||||||
|
python3_dep = python3_inst.dependency(embed: true, required: pyopt)
|
||||||
|
endif
|
||||||
# Remove this check after we depend on Meson >= 1.1.0
|
# Remove this check after we depend on Meson >= 1.1.0
|
||||||
if not cc.check_header('Python.h', dependencies: python3_dep, required: pyopt, include_directories: postgres_inc)
|
if not cc.check_header('Python.h', dependencies: python3_dep, required: pyopt, include_directories: postgres_inc)
|
||||||
python3_dep = not_found_dep
|
python3_dep = not_found_dep
|
||||||
|
|||||||
@@ -25,12 +25,8 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Enable Python Limited API
|
* Enable Python Limited API
|
||||||
*
|
|
||||||
* XXX currently not enabled on MSVC because of build failures
|
|
||||||
*/
|
*/
|
||||||
#if !defined(_MSC_VER)
|
|
||||||
#define Py_LIMITED_API 0x03020000
|
#define Py_LIMITED_API 0x03020000
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Pull in Python headers via a wrapper header, to control the scope of
|
* Pull in Python headers via a wrapper header, to control the scope of
|
||||||
|
|||||||
Reference in New Issue
Block a user