<div>Re: buildout and pip and wheel</div><div><br></div><div>"<span style="color:rgb(51,51,51);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px">Add support for installing wheels"</span></div><div><a href="https://github.com/buildout/buildout/issues/144">https://github.com/buildout/buildout/issues/144</a><br></div><div><br></div>It's been awhile since I've worked with buildout (for Zope 2, Plone, AppEngine zipimports).<div><br></div><div>This reads #egg= links from pip requirements files:</div><div><br></div><div>- <a href="https://github.com/collective/collective.recipe.pip/blob/master/collective/recipe/pip/__init__.py">https://github.com/collective/collective.recipe.pip/blob/master/collective/recipe/pip/__init__.py</a><br><br>This installs packages with buildout and pip (instead of zc.recipe.egg) into the eggs/ directory. IDK if it supports wheels? (it specifies --egg):</div><div><br></div><div>- <a href="https://github.com/k4ml/mk.recipe.pip/blob/master/mk/recipe/pip/__init__.py">https://github.com/k4ml/mk.recipe.pip/blob/master/mk/recipe/pip/__init__.py</a><br><br>... this builds a usable merged namespace with symlinks to eggs:</div><div><br></div><div>- <a href="https://github.com/collective/collective.recipe.omelette/">https://github.com/collective/collective.recipe.omelette/</a><br><br><br>On Tuesday, August 16, 2016, Daniel Holth <<a href="mailto:dholth@gmail.com">dholth@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">There are two proposals to add pluggable build systems to Python sdists, and one of them will probably be implemented. You add a pyproject.toml to the root of your sdist, which the installer uses to install dependencies that setup.py itself needs to run. Second, you also tell pip which build system you are using, once you have done that, setup.py is no longer necessary - instead, pip could install and then invoke flit for example.<div><br></div><div>This isn't quite the situation you've outlined as setuptools will likely continue to have all its features. Instead, packages that don't use setuptools will also proliferate. It causes about the same problem for buildout without breaking older packages.</div><div><br></div><div>In this scenario buildout will need to be able to install wheels however it wishes to do so because that is the output of the pluggable build system. I don't have advice for you on the implementation, except perhaps it could call out to pip.</div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Aug 16, 2016 at 12:59 PM Leonardo Rochael Almeida <<a href="javascript:_e(%7B%7D,'cvml','leorochael@gmail.com');" target="_blank">leorochael@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Spinning this off into its own thread...<br><div class="gmail_extra"><br><div class="gmail_quote">On 16 August 2016 at 13:10, Donald Stufft <span dir="ltr"><<a href="javascript:_e(%7B%7D,'cvml','donald@stufft.io');" target="_blank">donald@stufft.io</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><span><br><div><blockquote type="cite"><div>On Aug 16, 2016, at 11:15 AM, Leonardo Rochael Almeida <<a href="javascript:_e(%7B%7D,'cvml','leorochael@gmail.com');" target="_blank">leorochael@gmail.com</a>> wrote:</div><br><div><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">Specifically, buildout right now has setuptools as its only dependence, and buildout uses it to locate, download and build sdist dependencies, or directly download and use .egg dependencies, which are important for Windows platforms in the communities that use buildout and depend on compiled extensions.</span></div></blockquote></div><br><div><br></div></span><div>Ah, I knew I was forgetting something. I think we should hold off on preventing egg uploads until setuptools can download and install wheels.</div></div></blockquote><div><br></div><div>Which brings us to a question that I'm meaning to ask for a while.</div><div><br></div><div>It looks like we're close to removing all mentions of setuptools in pip. When this happens, it looks like pressure is going to start to mount on setuptools to drop the ability to install packages and limit itself on being just a build tool.</div><div><br></div><div>It makes sense that it should be so, considering that there would be no incentive to keep around two distinct implementations of how to locate, download and install stuff, one in pip (or whatever library pip uses for locating and installing packages) and another in setuptools.</div><div><br></div><div>In this future, I can imagine setuptools will simply complain loudly when the packages it requires to do its work are not installed yet, perhaps with a plugin mechanism for allowing another package to automatically resolve and installing packages, (like today setuptools-git extends setuptools to recognize files from git to be included in a package).</div><div><br></div><div>And people will promptly write a pip implementation of this plugin (or whatever it is that pip will use as a library to do it)... thereby inverting the dependency between setuptools and pip.</div><div><br></div><div>When this future arrives, buildout will be out of a mechanism for locating, downloading and installing packages (not counting old versions of setuptools, of course).</div><div><br></div><div>Questions:</div><div><br></div><div>1. Is the future outlined above considered likely?</div><div><br></div><div>2. If this future arrives, what package should buildout be ported to use? It should provide:</div><div><br></div><div> * The ability to locate packages and their versions, resolve their dependencies, and download them, whether they're sdists or wheels (or eggs, while we still have them)</div><div> * Install each package separately into it's own directory that, if added to `sys.path`, allows this same package (or perhaps another one) to read information from entry points so that buildout can locate its own extensions and install console scripts.</div><div><br></div><div>Regards,</div><div><br></div><div>Leo</div></div></div></div>
______________________________<wbr>_________________<br>
Distutils-SIG maillist  -  <a href="javascript:_e(%7B%7D,'cvml','Distutils-SIG@python.org');" target="_blank">Distutils-SIG@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/distutils-sig" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/distutils-sig</a><br>
</blockquote></div>
</blockquote></div>