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
{{ message }}
Repository navigation
_ctypes and other modules not built with msbuild on vs2010 solution #59026
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee='https://github.com/briancurtin'closed_at=<Date2012-05-24.12:28:21.758>created_at=<Date2012-05-16.00:10:11.565>labels= ['build']
title='_ctypes and other modules not built with msbuild on vs2010 solution'updated_at=<Date2012-05-24.12:28:21.757>user='https://github.com/jaraco'
It appears with the latest changes (cdcc816dea85), ctypes builds as _ctypes_test.pyd, not _ctypes.pyd. This causes 'import ctypes' to fail with an ImportError and thus causes tests to fail that depend on test.support (which imports ctypes).
I first noticed this issue in features/pep-420, but the same behavior is present in the main repository. I cannot test it because Python fails to start altogether, but I see _ctypes_test.pyd in the pcbuild/amd64 directory.
I see now that _ctypes is in fact in the solution, and if I open the solution in visual studio and build it manually, it gets built. Even if I just build the solution in visual studio, it gets built.
However, if I run the following command, _ctypes doesn't get built:
The output log doesn't mention "ctypes.", so it appears as if it's not attempting to build it at all.
This would work for me a week or two ago, prior to the VS2010 conversion (though I would convert the project before building), so this behavior feels a bit like a regression.
other projects that depend on pythoncore are not built by msbuild.
If I remove the dependency of _ctypes on pythoncore and then do the build with msbuild, _ctypes is built and I can import ctypes.
If instead I explicitly specify _ctypes as a target, it gets built (and along with a regular build, I can import ctypes).
I see why that ctypes does depend on pythoncore, because it needs python33.lib to link.
In trying to discover how to have msbuild attempt to build the entire solution, I ran across this article which says that best practice is not to declare project dependencies in a solution file at all but instead declare project dependencies in the project files themselves (so _ctypes should <Include> pythoncore, for example).
changed the title [-]Ctypes extension module builds as _ctypes_test.pyd[/-][+]_ctypes_test fails to build from the command line with VS 2010[/+]on May 19, 2012
changed the title [-]_ctypes_test fails to build from the command line with VS 2010[/-][+]_ctypes and other modules not built with msbuild on vs2010 solution[/+]on May 20, 2012
kristjanvalur commented on May 20, 2012
kristjanvalurmannequin
Mannequin
More actions
I'm able to reproduce this problem with the latest changes to PCBuild.
Are you saying that there are other projects like _ctypes that are not built?
I'm not able to see any different between _ctypes_test and _ctypes on the .vcxsproj level that would explain this, or in the sln.
Perhaps there is another bug in msbuild?
kristjanvalur commented on May 20, 2012
kristjanvalurmannequin
Mannequin
More actions
Hm, I see that this applies to _decimal, _testbuffer and xxlimited too. When msbuild is invoked with MSBUILDEMITSOLUTION=1, it leaves a .metaproj file in place for those projects.
kristjanvalur commented on May 20, 2012
kristjanvalurmannequin
Mannequin
More actions
Found the issue. Manual dependencies in the .sln file had to be removed.
Activity
jaraco commentedon May 16, 2012
It appears with the latest changes (cdcc816dea85), ctypes builds as _ctypes_test.pyd, not _ctypes.pyd. This causes 'import ctypes' to fail with an ImportError and thus causes tests to fail that depend on test.support (which imports ctypes).
I first noticed this issue in features/pep-420, but the same behavior is present in the main repository. I cannot test it because Python fails to start altogether, but I see _ctypes_test.pyd in the pcbuild/amd64 directory.
jaraco commentedon May 16, 2012
I see now that _ctypes is in fact in the solution, and if I open the solution in visual studio and build it manually, it gets built. Even if I just build the solution in visual studio, it gets built.
However, if I run the following command, _ctypes doesn't get built:
msbuild pcbuild.sln /p:Configuration=Release /p:Platform=x64
The output log doesn't mention "ctypes.", so it appears as if it's not attempting to build it at all.
This would work for me a week or two ago, prior to the VS2010 conversion (though I would convert the project before building), so this behavior feels a bit like a regression.
jaraco commentedon May 16, 2012
I've discovered a few things:
I see why that ctypes does depend on pythoncore, because it needs python33.lib to link.
In trying to discover how to have msbuild attempt to build the entire solution, I ran across this article which says that best practice is not to declare project dependencies in a solution file at all but instead declare project dependencies in the project files themselves (so _ctypes should <Include> pythoncore, for example).
I plan to look into this issue more later.
briancurtin commentedon May 16, 2012
Can you try http://bugs.python.org/file25583/pcbuildpatch.patch from bpo-13210?
[-]Ctypes extension module builds as _ctypes_test.pyd[/-][+]_ctypes_test fails to build from the command line with VS 2010[/+][-]_ctypes_test fails to build from the command line with VS 2010[/-][+]_ctypes and other modules not built with msbuild on vs2010 solution[/+]kristjanvalur commentedon May 20, 2012
I'm able to reproduce this problem with the latest changes to PCBuild.
Are you saying that there are other projects like _ctypes that are not built?
I'm not able to see any different between _ctypes_test and _ctypes on the .vcxsproj level that would explain this, or in the sln.
Perhaps there is another bug in msbuild?
kristjanvalur commentedon May 20, 2012
Hm, I see that this applies to _decimal, _testbuffer and xxlimited too. When msbuild is invoked with MSBUILDEMITSOLUTION=1, it leaves a .metaproj file in place for those projects.
kristjanvalur commentedon May 20, 2012
Found the issue. Manual dependencies in the .sln file had to be removed.
python-dev commentedon May 20, 2012
New changeset 2e96629c6dab by Kristján Valur Jónsson in branch 'default':
bpo-14821:
http://hg.python.org/cpython/rev/2e96629c6dab
jaraco commentedon May 24, 2012
Excellent! The latest tip now builds nicely using msbuild.