* add libb2 as dep * remove "-Wl,--large-address-aware", default now via makepkg * remove 2to3 logic, no longer in Python
104 lines
4.7 KiB
Diff
104 lines
4.7 KiB
Diff
From f0474c664d2afc8fddd918a1043dadbf5654747e Mon Sep 17 00:00:00 2001
|
|
From: Alexey Pavlov <alexpux@gmail.com>
|
|
Date: Wed, 3 Sep 2025 15:14:22 +0300
|
|
Subject: [PATCH 155/N] Try fix building C++ modules for Python. Fixes for
|
|
WMI module
|
|
|
|
---
|
|
Makefile.pre.in | 3 +++
|
|
Modules/makesetup | 16 ++++++++--------
|
|
PC/_wmimodule.cpp | 8 ++++++--
|
|
3 files changed, 17 insertions(+), 10 deletions(-)
|
|
|
|
diff --git a/Makefile.pre.in b/Makefile.pre.in
|
|
index 1ea9558..62668fd 100644
|
|
--- a/Makefile.pre.in
|
|
+++ b/Makefile.pre.in
|
|
@@ -104,6 +104,7 @@ CONFIGURE_LDFLAGS= @LDFLAGS@
|
|
# values.
|
|
PY_CFLAGS= $(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)
|
|
PY_CFLAGS_NODIST=$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal -I$(srcdir)/Include/internal/mimalloc
|
|
+PY_CXXFLAGS_NODIST=$(filter-out -std=c11,$(PY_CFLAGS_NODIST)) -std=c++17
|
|
# Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to
|
|
# be able to build extension modules using the directories specified in the
|
|
# environment variables
|
|
@@ -121,7 +122,9 @@ ARFLAGS= @ARFLAGS@
|
|
CFLAGSFORSHARED=@CFLAGSFORSHARED@
|
|
# C flags used for building the interpreter object files
|
|
PY_STDMODULE_CFLAGS= $(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED)
|
|
+PY_STDMODULE_CXXFLAGS= $(PY_CFLAGS) $(PY_CXXFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED)
|
|
PY_BUILTIN_MODULE_CFLAGS= $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN
|
|
+PY_BUILTIN_MODULE_CXXFLAGS= $(PY_STDMODULE_CXXFLAGS) -DPy_BUILD_CORE_BUILTIN
|
|
PY_CORE_CFLAGS= $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE
|
|
# Linker flags used for building the interpreter object files
|
|
PY_CORE_LDFLAGS=$(PY_LDFLAGS) $(PY_LDFLAGS_NODIST)
|
|
diff --git a/Modules/makesetup b/Modules/makesetup
|
|
index 7f58fb0..544d1d2 100755
|
|
--- a/Modules/makesetup
|
|
+++ b/Modules/makesetup
|
|
@@ -228,13 +228,13 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' |
|
|
for src in $srcs
|
|
do
|
|
case $src in
|
|
- *.c) obj=`basename $src .c`.o; cc='$(CC)'; ccld='$(BLDSHARED)';;
|
|
- *.cc) obj=`basename $src .cc`.o; cc='$(CXX)'; ccld='$(LDCXXSHARED)';;
|
|
- *.c++) obj=`basename $src .c++`.o; cc='$(CXX)'; ccld='$(LDCXXSHARED)';;
|
|
- *.C) obj=`basename $src .C`.o; cc='$(CXX)'; ccld='$(LDCXXSHARED)';;
|
|
- *.cxx) obj=`basename $src .cxx`.o; cc='$(CXX)'; ccld='$(LDCXXSHARED)';;
|
|
- *.cpp) obj=`basename $src .cpp`.o; cc='$(CXX)'; ccld='$(LDCXXSHARED)';;
|
|
- *.m) obj=`basename $src .m`.o; cc='$(CC)'; ccld='$(BLDSHARED)';; # Obj-C
|
|
+ *.c) obj=`basename $src .c`.o; cc='$(CC)'; ccld='$(BLDSHARED)'; ccflags='$(PY_STDMODULE_CFLAGS)';;
|
|
+ *.cc) obj=`basename $src .cc`.o; cc='$(CXX)'; ccld='$(LDCXXSHARED)'; ccflags='$(PY_STDMODULE_CXXFLAGS)';;
|
|
+ *.c++) obj=`basename $src .c++`.o; cc='$(CXX)'; ccld='$(LDCXXSHARED)'; ccflags='$(PY_STDMODULE_CXXFLAGS)';;
|
|
+ *.C) obj=`basename $src .C`.o; cc='$(CXX)'; ccld='$(LDCXXSHARED)'; ccflags='$(PY_STDMODULE_CXXFLAGS)';;
|
|
+ *.cxx) obj=`basename $src .cxx`.o; cc='$(CXX)'; ccld='$(LDCXXSHARED)'; ccflags='$(PY_STDMODULE_CXXFLAGS)';;
|
|
+ *.cpp) obj=`basename $src .cpp`.o; cc='$(CXX)'; ccld='$(LDCXXSHARED)'; ccflags='$(PY_STDMODULE_CXXFLAGS)';;
|
|
+ *.m) obj=`basename $src .m`.o; cc='$(CC)'; ccld='$(BLDSHARED)'; ccflags='$(PY_STDMODULE_CFLAGS)';; # Obj-C
|
|
*) continue;;
|
|
esac
|
|
case $src in
|
|
@@ -251,7 +251,7 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' |
|
|
# custom flags first, PY_STDMODULE_CFLAGS may contain -I with system libmpdec
|
|
case $doconfig in
|
|
no)
|
|
- cc="$cc $cpps \$(PY_STDMODULE_CFLAGS) \$(CCSHARED)"
|
|
+ cc="$cc $cpps $ccflags \$(CCSHARED)"
|
|
rule="$obj: $src \$(MODULE_${mods_upper}_DEPS) \$(MODULE_DEPS_SHARED) \$(PYTHON_HEADERS); $cc -c $src -o $obj"
|
|
;;
|
|
*)
|
|
diff --git a/PC/_wmimodule.cpp b/PC/_wmimodule.cpp
|
|
index 58cb9a8..e05037d 100644
|
|
--- a/PC/_wmimodule.cpp
|
|
+++ b/PC/_wmimodule.cpp
|
|
@@ -100,10 +100,12 @@ _query_thread(LPVOID param)
|
|
hr = HRESULT_FROM_WIN32(GetLastError());
|
|
}
|
|
if (SUCCEEDED(hr)) {
|
|
+ BSTR bstr_wql = SysAllocString(L"ROOT\\CIMV2");
|
|
hr = locator->ConnectServer(
|
|
- bstr_t(L"ROOT\\CIMV2"),
|
|
+ bstr_wql,
|
|
NULL, NULL, 0, NULL, 0, 0, &services
|
|
);
|
|
+ SysFreeString(bstr_wql);
|
|
}
|
|
if (SUCCEEDED(hr) && !SetEvent(data.connectEvent)) {
|
|
hr = HRESULT_FROM_WIN32(GetLastError());
|
|
@@ -116,13 +118,15 @@ _query_thread(LPVOID param)
|
|
);
|
|
}
|
|
if (SUCCEEDED(hr)) {
|
|
+ BSTR bstr_wql = SysAllocString(L"WQL");
|
|
hr = services->ExecQuery(
|
|
- bstr_t("WQL"),
|
|
+ bstr_wql,
|
|
bstrQuery,
|
|
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
|
|
NULL,
|
|
&enumerator
|
|
);
|
|
+ SysFreeString(bstr_wql);
|
|
}
|
|
|
|
// Okay, after all that, at this stage we should have an enumerator
|