<div dir="ltr"><div>I think its worth getting a cctbx-light pip build..  I think modules like cctbx miller, sgtbx are extremely  useful. Also simtbx.nanoBragg. <br></div><div><br></div><div>-Derek<br> </div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Aug 18, 2019 at 10:48 PM <a href="mailto:Graeme.Winter@Diamond.ac.uk">Graeme.Winter@Diamond.ac.uk</a> &lt;<a href="mailto:Graeme.Winter@diamond.ac.uk">Graeme.Winter@diamond.ac.uk</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Aaron<br>
<br>
Re: talk about if interest<br>
<br>
I think it would be very useful to have a roadmap of where this is going, the intentions and how we expect it to play with other cctbx-dependent projects - have I missed this? Having it somewhere e.g. on the wiki would be a big help<br>
<br>
Thanks Graeme<br>
<br>
On 17 Aug 2019, at 00:36, Aaron Brewster &lt;<a href="mailto:asbrewster@lbl.gov" target="_blank">asbrewster@lbl.gov</a>&lt;mailto:<a href="mailto:asbrewster@lbl.gov" target="_blank">asbrewster@lbl.gov</a>&gt;&gt; wrote:<br>
<br>
Hi Luc, thanks.  I did recall someone working on this a while back.<br>
<br>
For conda, there are a couple more things to finish and then we hope to have cctbx available through conda.<br>
<br>
1) There is work being done in a branch to make cctbx use boost in standard locations (e.g. the system boost, or a conda boost).  That will allow us to use install boost by conda and not build it ourselves.  (<a href="https://github.com/cctbx/cctbx_project/tree/conda_boost" rel="noreferrer" target="_blank">https://github.com/cctbx/cctbx_project/tree/conda_boost</a>).  Also, newer versions of boost are being tested (up through 1.70).  (This will also enable python 3.7 support.)<br>
2) We need to work on getting a make install step in place so that we can build the conda package and upload it.<br>
3) We want to split the dependencies up by builder (cctbx, cctbx-lite, dials, phenix, etc.) into meta packages and their associated manifests.  I can talk more about this if there is interest.<br>
<br>
Thanks,<br>
-Aaron<br>
<br>
<br>
<br>
On Fri, Aug 16, 2019 at 1:48 PM Luc Bourhis &lt;<a href="mailto:luc_j_bourhis@mac.com" target="_blank">luc_j_bourhis@mac.com</a>&lt;mailto:<a href="mailto:luc_j_bourhis@mac.com" target="_blank">luc_j_bourhis@mac.com</a>&gt;&gt; wrote:<br>
Hi,<br>
<br>
I did look into that many years ago, and even toyed with building a pip installer. What stopped me is the exact conclusion you reached too: the user would not have the pip experience he expects. You are right that it is a lot of effort but is it worth it? Considering that remark, I don’t think so. Now, Conda was created specifically to go beyond pip pure-python-only support. Since cctbx has garnered support for Conda, the best avenue imho is to go the extra length to have a package on Anaconda.org&lt;<a href="http://anaconda.org/" rel="noreferrer" target="_blank">http://anaconda.org/</a>&gt;, and then to advertise it hard to every potential user out there.<br>
<br>
Best wishes,<br>
<br>
Luc<br>
<br>
<br>
On 16 Aug 2019, at 21:45, Aaron Brewster &lt;<a href="mailto:asbrewster@lbl.gov" target="_blank">asbrewster@lbl.gov</a>&lt;mailto:<a href="mailto:asbrewster@lbl.gov" target="_blank">asbrewster@lbl.gov</a>&gt;&gt; wrote:<br>
<br>
Hi, to avoid clouding Dorothee&#39;s documentation email thread, which I think is a highly useful enterprise, here&#39;s some thoughts about putting cctbx into pip.  Pip doesn&#39;t install non-python dependencies well.  I don&#39;t think boost is available as a package on pip (at least the package version we use).  wxPython4 isn&#39;t portable through pip (<a href="https://wiki.wxpython.org/How%20to%20install%20wxPython#Installing_wxPython-Phoenix_using_pip" rel="noreferrer" target="_blank">https://wiki.wxpython.org/How%20to%20install%20wxPython#Installing_wxPython-Phoenix_using_pip</a>).  MPI libraries are system dependent.  If cctbx were a pure python package, pip would be fine, but cctbx is not.<br>
<br>
All that said, we could build a manylinux1 version of cctbx and upload it to PyPi (I&#39;m just learning about this).  For a pip package to be portable (which is a requirement for cctbx), it needs to conform to PEP513, the manylinux1 standard (<a href="https://www.python.org/dev/peps/pep-0513/" rel="noreferrer" target="_blank">https://www.python.org/dev/peps/pep-0513/</a>).  For example, numpy is built according to this standard (see <a href="https://pypi.org/project/numpy/#files" rel="noreferrer" target="_blank">https://pypi.org/project/numpy/#files</a>, where you&#39;ll see the manylinux1 wheel).  Note, the manylinux1 standard is built with Centos 5.11 which we no longer support.<br>
<br>
There is also a manylinux2010 standard, which is based on Centos 6 (<a href="https://www.python.org/dev/peps/pep-0571/" rel="noreferrer" target="_blank">https://www.python.org/dev/peps/pep-0571/</a>).  This is likely a more attainable target (note though by default C++11 is not supported on Centos 6).<br>
<br>
If we built a manylinuxX version of cctbx and uploaded it to PyPi, the user would need all the non-python dependencies.  There&#39;s no way to specify these in pip.  For example, cctbx requires boost 1.63 or better.  The user will need to have it in a place their python can find it, or we could package it ourselves and supply it, similar to how the pip h5py package now comes with an hd5f library, or how the pip numpy package includes an openblas library.  We&#39;d have to do the same for any packages we depend on that aren&#39;t on pip using the manylinux standards, such as wxPython4.<br>
<br>
Further, we need to think about how dials and other cctbx-based packages interact.  If pip install cctbx is set up, how does pip install dials work, such that any dials shared libraries can find the cctbx libraries?  Can shared libraries from one pip package link against libraries in another pip package?  Would each package need to supply its own boost?  Possibly this is well understood in the pip field, but not by me :)<br>
<br>
Finally, there&#39;s the option of providing a source pip package.  This would require the full compiler toolchain for any given platform (macOS, linux, windows).  These are likely available for developers, but not for general users.<br>
<br>
Anyway, these are some of the obstacles.  Not saying it isn&#39;t possible, it&#39;s just a lot of effort.<br>
<br>
Thanks,<br>
-Aaron<br>
<br>
_______________________________________________<br>
cctbxbb mailing list<br>
<a href="mailto:cctbxbb@phenix-online.org" target="_blank">cctbxbb@phenix-online.org</a>&lt;mailto:<a href="mailto:cctbxbb@phenix-online.org" target="_blank">cctbxbb@phenix-online.org</a>&gt;<br>
<a href="http://phenix-online.org/mailman/listinfo/cctbxbb" rel="noreferrer" target="_blank">http://phenix-online.org/mailman/listinfo/cctbxbb</a><br>
<br>
_______________________________________________<br>
cctbxbb mailing list<br>
<a href="mailto:cctbxbb@phenix-online.org" target="_blank">cctbxbb@phenix-online.org</a>&lt;mailto:<a href="mailto:cctbxbb@phenix-online.org" target="_blank">cctbxbb@phenix-online.org</a>&gt;<br>
<a href="http://phenix-online.org/mailman/listinfo/cctbxbb" rel="noreferrer" target="_blank">http://phenix-online.org/mailman/listinfo/cctbxbb</a><br>
_______________________________________________<br>
cctbxbb mailing list<br>
<a href="mailto:cctbxbb@phenix-online.org" target="_blank">cctbxbb@phenix-online.org</a>&lt;mailto:<a href="mailto:cctbxbb@phenix-online.org" target="_blank">cctbxbb@phenix-online.org</a>&gt;<br>
<a href="http://phenix-online.org/mailman/listinfo/cctbxbb" rel="noreferrer" target="_blank">http://phenix-online.org/mailman/listinfo/cctbxbb</a><br>
<br>
<br>
-- <br>
This e-mail and any attachments may contain confidential, copyright and or privileged material, and are for the use of the intended addressee only. If you are not the intended addressee or an authorised recipient of the addressee please notify us of receipt by returning the e-mail and do not use, copy, retain, distribute or disclose the information in or attached to the e-mail.<br>
Any opinions expressed within this e-mail are those of the individual and not necessarily of Diamond Light Source Ltd. <br>
Diamond Light Source Ltd. cannot guarantee that this e-mail or any attachments are free from viruses and we cannot accept liability for any damage which you may sustain as a result of software viruses which may be transmitted in or with the message.<br>
Diamond Light Source Limited (company no. 4375679). Registered in England and Wales with its registered office at Diamond House, Harwell Science and Innovation Campus, Didcot, Oxfordshire, OX11 0DE, United Kingdom<br>
<br>
_______________________________________________<br>
cctbxbb mailing list<br>
<a href="mailto:cctbxbb@phenix-online.org" target="_blank">cctbxbb@phenix-online.org</a><br>
<a href="http://phenix-online.org/mailman/listinfo/cctbxbb" rel="noreferrer" target="_blank">http://phenix-online.org/mailman/listinfo/cctbxbb</a><br>
</blockquote></div>