I&#39;m following up on this thread without checking if there were other following negating a need to respond... If so, ignore as needed.<br><br>+1 from me.&nbsp; Always build on windows into an architecture specific PCBuild/XXX directory.&nbsp; A bonus if the directory name matches the return value of platform.machine() but I don&#39;t care too much about that part.&nbsp; (that&#39;d mean &#39;i686&#39; and &#39;x86_64&#39; and who knows what for Itanic users)<br>
<br><div class="gmail_quote">On Wed, Jan 30, 2008 at 11:25 PM, Mark Hammond &lt;<a href="mailto:mhammond@skippinet.com.au">mhammond@skippinet.com.au</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I&#39;m wondering if anyone has any comment on this issue? &nbsp;Its currently<br>
impossible to use distutils as documented to build x64 extensions, either<br>
natively or cross-compiled using the trunk and while I&#39;m keen to help fix<br>
this, I&#39;d like agreement on the direction.<br>
<br>
Can I assume silence means general agreement on the compromise proposal I<br>
outlined?<br>
<br>
Thanks,<br>
<br>
Mark<br>
<div><div></div><div class="Wj3C7c"><br>
&gt; -----Original Message-----<br>
&gt; From: python-dev-bounces+mhammond=<a href="mailto:keypoint.com.au@python.org">keypoint.com.au@python.org</a><br>
&gt; [mailto:<a href="mailto:python-dev-bounces+mhammond=keypoint.com.au@python.org">python-dev-bounces+mhammond=keypoint.com.au@python.org</a>] On<br>
&gt; Behalf Of Mark Hammond<br>
&gt; Sent: Tuesday, 22 January 2008 9:06 PM<br>
&gt; To: &#39;&quot;Martin v. Löwis&quot;&#39;<br>
&gt; Cc: <a href="mailto:distutils-sig@python.org">distutils-sig@python.org</a>; <a href="mailto:python-dev@python.org">python-dev@python.org</a><br>
&gt; Subject: Re: [Python-Dev] Adventures with x64, VS7 and VS8 on Windows<br>
&gt;<br>
&gt; Hi Martin,<br>
&gt;<br>
&gt; Way back on Monday, 21 May 2007, you wrote:<br>
&gt;<br>
&gt; &gt; This is an issue to be discussed for Python 2.6. I&#39;m personally<br>
&gt; &gt; hesitant to have the &quot;official&quot; build infrastructure deviate<br>
&gt; &gt; from the layout that has been in-use for so many years, as a lot<br>
&gt; &gt; of things depend on it.<br>
&gt; &gt;<br>
&gt; &gt; I don&#39;t find the need to have separate object directories convincing:<br>
&gt; &gt; For building the Win32/Win64 binaries, I have separate checkouts<br>
&gt; &gt; *anyway*, since all the add-on libraries would have to support<br>
&gt; &gt; multi-arch builds, but I think they don&#39;t.<br>
&gt; ...<br>
&gt; &gt; &gt; * Re the x64 directory used by the PCBuild8 process. &nbsp;IMO, it makes<br>
&gt; &gt; &gt; sense to generate x64 binaries to their own directory - my<br>
&gt; expectation<br>
&gt; &gt; &gt; is that cross-compiling between platforms is a reasonable use-case,<br>
&gt; &gt; &gt; and we should support multiple achitectures for the same compiler<br>
&gt; &gt; &gt; version.<br>
&gt; &gt;<br>
&gt; &gt; See above; I disagree.<br>
&gt;<br>
&gt; [For additional context; the question was regarding where the output<br>
&gt; binaries were created for each platform, and specifically if x64 build<br>
&gt; should use something like &#39;PCBuild/x64&#39;]<br>
&gt;<br>
&gt; I&#39;m bringing this topic up again as I noticed the AMD64 builds for<br>
&gt; Python<br>
&gt; 2.6 create their output in the PCBuild/x64 directory, not directly into<br>
&gt; the<br>
&gt; PCBuild directory. &nbsp;When I raised this with Christian, he also<br>
&gt; expressed a<br>
&gt; desire to be able to cross-compile in the same directory structure and<br>
&gt; was<br>
&gt; unaware of this discussion (but I made him aware of it :)<br>
&gt;<br>
&gt; You made excellent points about how tools currently recognize the<br>
&gt; PCBuild<br>
&gt; directory, and we can&#39;t break them, and I agree. &nbsp;I&#39;d like to propose a<br>
&gt; compromise that might be able to keep everyone happy.<br>
&gt;<br>
&gt; The main problem I see with all platforms using &#39;PCBuild&#39; is that in a<br>
&gt; cross-compilation scenario, it is impossible for the distutils to<br>
&gt; determine<br>
&gt; the location of the correct Python libraries to link with (stuff in its<br>
&gt; own<br>
&gt; PYTHONHOME is no good; it&#39;s for the wrong platform). &nbsp;Obviously, we can<br>
&gt; change the distutils so that the location of the correct libraries can<br>
&gt; be<br>
&gt; specified, but that implies all other build systems that currently<br>
&gt; assume<br>
&gt; PCBuild must also change to work in a cross-compilation scenario.<br>
&gt; While<br>
&gt; those external tools *will* work today in a native build on x64,<br>
&gt; eventually<br>
&gt; they may need to be upgraded to deal with cross-compilation - and this<br>
&gt; means<br>
&gt; that all such tools will also be unable to automatically determine the<br>
&gt; location of the libraries. &nbsp;They will all need to take the library dir<br>
&gt; as a<br>
&gt; user-specified option, which seems a pain (eg, buildbots would seem to<br>
&gt; need<br>
&gt; site-specific configuration information to make this work). &nbsp;If<br>
&gt; eventually<br>
&gt; all such tools are likely to upgrade, it would be ideal if we can offer<br>
&gt; them<br>
&gt; a way to upgrade so the correct libraries can be determined<br>
&gt; automatically,<br>
&gt; as they can now for native builds.<br>
&gt;<br>
&gt; My compromise proposal is this: Each platform builds in its own<br>
&gt; directory<br>
&gt; (ie, PCBuild/x86_64, PCBuild/x86). &nbsp;Every single build configuration<br>
&gt; has a<br>
&gt; post-build step that copies the result of the build to the PCBuild<br>
&gt; directory. &nbsp;We then add an option to the distutils so that a cross-<br>
&gt; compile<br>
&gt; platform can be specified and when it is, to use &#39;PCBuild/{platform}&quot;<br>
&gt; instead of PCBuild, and we encourage other tools to use the same<br>
&gt; directory<br>
&gt; should they want to support &quot;configure-less&quot; cross-compilation (if<br>
&gt; distutils<br>
&gt; on the trunk is not still trying to maintain b/w compat, it should just<br>
&gt; *always* look in PCBuild/{platform}, and I&#39;d suggest py3k not bother<br>
&gt; with<br>
&gt; PCBuild at all; build systems will be touched to upgrade to py3k, so<br>
&gt; that<br>
&gt; change isn&#39;t painful. &nbsp;But I digress :)<br>
&gt;<br>
&gt; The main advantage of the compromise is that it allows for the status<br>
&gt; quo to<br>
&gt; remain in place - just continue to use separate source trees for each<br>
&gt; platform, and only ever build a single platform in each tree, and tools<br>
&gt; are<br>
&gt; free to have ways of specifying which directory should be used. &nbsp;The<br>
&gt; official build process need not change. &nbsp;However, it also supports a<br>
&gt; way to<br>
&gt; do cross-compilation in a way that build tools can *automatically*<br>
&gt; locate<br>
&gt; the correct platform&#39;s libraries, and this will be particularly useful<br>
&gt; for<br>
&gt; extension authors.<br>
&gt;<br>
&gt; Would something like that be acceptable?<br>
&gt;<br>
&gt; Thanks,<br>
&gt;<br>
&gt; Mark<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Python-Dev mailing list<br>
&gt; <a href="mailto:Python-Dev@python.org">Python-Dev@python.org</a><br>
&gt; <a href="http://mail.python.org/mailman/listinfo/python-dev" target="_blank">http://mail.python.org/mailman/listinfo/python-dev</a><br>
&gt; Unsubscribe: <a href="http://mail.python.org/mailman/options/python-" target="_blank">http://mail.python.org/mailman/options/python-</a><br>
</div></div>&gt; dev/mhammond%40keypoint.com.au<br>
<div><div></div><div class="Wj3C7c"><br>
_______________________________________________<br>
Python-Dev mailing list<br>
<a href="mailto:Python-Dev@python.org">Python-Dev@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-dev" target="_blank">http://mail.python.org/mailman/listinfo/python-dev</a><br>
Unsubscribe: <a href="http://mail.python.org/mailman/options/python-dev/greg%40krypto.org" target="_blank">http://mail.python.org/mailman/options/python-dev/greg%40krypto.org</a><br>
</div></div></blockquote></div><br>