<div dir="ltr">I believe SimpleITK uses cmake to build their python wheels. Might be worth checking out so you don't have to re-invent the *ahem* wheel :-)</div><div class="gmail_extra"><br><br><div class="gmail_quote">

On Wed, Aug 6, 2014 at 11:17 AM, David Gobbi <span dir="ltr"><<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

On Tue, Aug 5, 2014 at 6:59 PM, Matthew Brett <<a href="mailto:matthew.brett@gmail.com">matthew.brett@gmail.com</a>> wrote:<br>
> On Tue, Aug 05, 2014 at 04:25 PM, David Gobbi <<a href="mailto:david.gobbi@gmail.com">david.gobbi@gmail.com</a>> wrote:<br>
>> On Tue, Aug 5, 2014 at 5:02 PM, Matthew Brett <<a href="mailto:matthew.brett@gmail.com">matthew.brett@gmail.com</a>> wrote:<br>
>>> Yes, in principle it's possible to create a directory with the correct<br>
>>> structure, then pack it into a zip file.  Did you have a chance to look<br>
>>> at the wheel file format?  Basically someone (oh dear is that me?) needs<br>
>>> to move all the files that need installing into that directory tree in<br>
>>> the correct places, and record the manifest etc in the RECORD, WHEEL and<br>
>>> METADATA sections, then zip it up with the right filename.  Maybe if you<br>
>>> could come up with a list we can see if we can get somewhere...<br>
>><br>
>> I glanced at the two PEPs.  CMake can be told where to put the python<br>
>> modules via the VTK_INSTALL_PYTHON_MODULE_DIR variable, but<br>
>> that by itself is probably not sufficient.<br>
><br>
> So the wheel usually consists of the package directory as it will be<br>
> copied into the Python installation - I guess VTK in your case, and then<br>
> a (say) VTK-<version>.data directory with files that need to be copied<br>
> elsewhere in the file system, and then the housekeeping stuff like the<br>
> manifest and so on.  So, if VTK only installs file into the VTK Python<br>
> package directory, then that would be almost enough.<br>
<br>
The relevant parts of VTK install tree look like this (on OS X):<br>
<br>
${VTK_INSTALL_PYTHON_MODULE_DIR}/vtk/(*.py|*.pyc|*.so)<br>
share/vtk-6.2/vtkDomainsChemistry/elements.xml<br>
lib/*.dylib<br>
<br>
Let me look at the wheel structure more closely, and I'll get back to you<br>
with some info on how CMake can be coerced to make the job easier.<br>
<br>
>> One tricky thing, of course, is that the python modules depend upon the<br>
>> VTK dylibs, and I'm not clear on how relocation is to be handled.  Do the<br>
>> wheel tools have the ability to change the loader path of shared objects?<br>
>> Will the dylibs always be placed at a known location relative to the<br>
>> installed python .so files?<br>
><br>
> I wrote an OSX utility to copy / relocate dynamic libs for OSX called<br>
> delocate [1] - so we could at least handle OSX that way.<br>
> [1] <a href="https://pypi.python.org/pypi/delocate" target="_blank">https://pypi.python.org/pypi/delocate</a><br>
<br>
That could definitely be useful.  CMake can also inject the path during<br>
the build process, if we end up with cmake building the wheel directly.<br>
<span class="HOEnZb"><font color="#888888"><br>
 - David<br>
</font></span><div class="HOEnZb"><div class="h5">_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the VTK FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://public.kitware.com/mailman/listinfo/vtkusers" target="_blank">http://public.kitware.com/mailman/listinfo/vtkusers</a><br>
</div></div></blockquote></div><br></div>