You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The srcs attribute for this cc_library for os:windows is ["python3.dll", "libs/python{python_version_nodot}.lib"]. It is missing the version-specific binary, eg python311.dll.
I have resolved this locally by globbing *.dll into the libpython cc_library.
A similar issue occurs if the user defines #Py_DEBUG, which causes msvc to attempt linking against the debug binary python3xy_d.dll. I did not see a way to request debug binaries using the python_repository rule but if that were enabled, I think globbing *.dll would fix that case too.
Affected Rule
python_repository
Is this a regression?
Unsure.
Description
See above.
馃敩 Minimal Reproduction
See above.
馃敟 Exception or Error
Runtime error python3xy.dll not found
馃實 Your Environment
Operating System:
Windows 10
Output of bazel version:
7.0.2
Rules_python version:
0.31.0
Anything else relevant?
The text was updated successfully, but these errors were encountered:
axbycc-mark
changed the title
Missing srcs in python_repository's libpython rule for os:windows
Runtime error python3xy.dll not found: Missing srcs in python_repository's libpython rule for os:windows
Mar 24, 2024
For the same reason as in this example, statically linking a Python extension on Windows fails when Py_LIMITED_API is defined because the unversioned libs/python3.lib is not in that list. That is fixed in #1820, depending on the feedback on that PR, I suppose I could easily integrate this case there as well.
Similarly, any cc_library depending on @rules_python//python/cc:current_py_cc_headers and including <Python.h> will also break when compiled with -c dbg, since this also causes Python.h to attempt to link to the python3[xy]_d.lib, which is not available.
馃悶 bug report
The srcs attribute for this cc_library for os:windows is
["python3.dll", "libs/python{python_version_nodot}.lib"]
. It is missing the version-specific binary, eg python311.dll.rules_python/python/repositories.bzl
Lines 318 to 326 in c5c03b2
This will result in a runtime error (python311.dll not found) in the following scenario.
#include <Python.h>
and which depends on the libpython above.#Py_LIMITED_ABI
The Python.h includes the pyconfig.h, which causes msvc to attempt linking against python3xy.dll via the
#pragma comment(lib, ...)
mechanism. The relevant code from the cpython project is here.https://github.com/python/cpython/blob/d610d821fd210dce63a1132c274ffdf8acc510bc/PC/pyconfig.h.in#L315-L331
I have resolved this locally by globbing *.dll into the libpython cc_library.
A similar issue occurs if the user defines
#Py_DEBUG
, which causes msvc to attempt linking against the debug binary python3xy_d.dll. I did not see a way to request debug binaries using the python_repository rule but if that were enabled, I think globbing *.dll would fix that case too.Affected Rule
python_repository
Is this a regression?
Unsure.
Description
See above.
馃敩 Minimal Reproduction
See above.
馃敟 Exception or Error
Runtime error python3xy.dll not found
馃實 Your Environment
Operating System:
Output of
bazel version
:Rules_python version:
Anything else relevant?
The text was updated successfully, but these errors were encountered: