[15:30:09] <DanielHolth> I don't mind it, but the ~/.config/pip seems a little redundant. Not wrong but a little confusing.
[15:30:42] <apollo13> that's standard layout for any up2date linux program
[15:31:01] <DanielHolth> Do we have a "pip wheel --dont-build-already-installed-dependencies" option yet?
[15:31:39] <dstufft> no, and it doesn't seem generally useful
[15:32:13] <DanielHolth> running into errors with setup.py depending on in-house packages. Now trying to just use devpi instead.
[15:32:31] <DanielHolth> "use pre-built wheel if available" would also work
[15:35:03] <DanielHolth> So when building all the dependent wheels for an in-house package pip errors out on my handful of installed-for-development in house packages that obviously can't be found on pypi.
[15:47:22] <dstufft> DanielHolth: pipw heel will download a wheel if one is available, including from a --find-links
[15:51:21] <DanielHolth> dstufft even if the named package does not exist on pypi?
[15:52:10] <dstufft> might need to include your local devpi in --extra-index-url, but yea
[15:52:40] <DanielHolth> I think that will wind up being the solution, just publishing my internal packages to my shiny new internal inde.
[17:07:29] <ysionneau> Hi, how can I specify the optional requirements I want to install when doing "pip3 install url"? I can only get it to work with "edit/develop" mode with "pip3 install -e .[option]"
[17:07:54] <carljm> ysionneau: i'm not sure that pip supports extras syntax with a url.
[17:08:12] <ysionneau> I tried pip3 install git+https://....../repo.git[option] or with a space but it thinks option is part of the url :/
[17:08:22] <dstufft> it might work if you add #egg=name[option]
[17:13:48] <ysionneau> I declared some requirements as optional behind the "GUI" keyname, but it seems setup.py only installs wihout any extra requirement
[17:14:14] <dstufft> ysionneau: I'm not aware of anything that lets setup.py install do that
[20:53:52] <agronholm> dstufft: have you seen the kinds of things people put in setup.py, especially in projects that have C extensions in them? treating it like a packaging metadata file is wishful thinking.
[21:00:22] <tomprince> agronholm: That shouldn't matter much to somebody installing the package, though?
[21:01:50] <agronholm> tomprince: with source tarballs, it matters a lot
[21:02:33] <agronholm> tomprince: because that code is crucial for compiling the C extensions
[21:03:23] <tomprince> agronholm: dstufft's point was that people shouldn't be running 'python setup.py <stuff>', put instead using pip.
[21:03:43] <tomprince> agronholm: Certainly it is critical, but that doesn't mean that people should be running it directly.
[21:07:19] <dstufft> the idea is that setuptools (or any "package builder", setuptools won't be special in a sdist 2.0 sdist), you'll get some static metadata wihch defines things like dependencies, and which defines an entry point (not setuptools entrypoints, jsut an entrypoint, probably a callable) which can be invoked as the build system, and people can add arbitrary metadata as well for their build system entrypoint
[21:08:03] <dstufft> so instead of having people cargo cult random shit around in their setup.py, they'll be able to release a build system on PyPI (or just include it as part of their package if they want) and pip will just invoke that build system to build a wheel, and then install from the wheel
[21:08:50] <agronholm> speaking of wheels, I've been doing some digging
[21:08:51] <_habnabit> dstufft, how do you indicate what third-party packages you depend on during setup, then?
[21:08:56] <agronholm> regarding linux binary wheels
[21:09:06] <ionelmc> i wonder how many competing build systems we gonna have
[21:09:23] <dstufft> _habnabit: the static metadata will include all of the dependencies, with new categories of dependencies, like "build dependencies"
[21:10:08] <agronholm> I've come up with two compatibility factors: LSB version and GLIBC version
[21:10:09] <_habnabit> dstufft, this will be setup.cfg?
[21:10:15] <dstufft> the static metadata isn't something that's designed to be user facing though, it's just what happens to get put inside of the .tar.gz, it's expected that people will use some sort of author centric build tool to build their sdists (for example, setuptools, but someone could create their own that wasn't setuptools)
[21:11:18] <dstufft> we're basically designing a format, and what people use to create or consume that format doesn't matter to us, we just define the format (and of course, pip and setuptools will both be able to consume and produce said formats, so people will be able to get it for free if their existing setup.py's, but if they want something better they can create it)
[21:11:33] <_habnabit> dstufft, i hope this is going to work for python 2, haha
[21:12:01] <dstufft> agronholm: I'm afraid I'm probably the worst person to really judge stuff about ABI compatability, I only kinda know what I'm talking about :(
[21:12:10] <_habnabit> agronholm, what about people who don't use glibc
[21:16:37] <agronholm> this relates to application binaries though -- I'm not sure what problems there will be when doing the same with dynamic libraries
[21:16:42] <dstufft> _habnabit: part of the reason why PEP 453 went to great lengths to make sure pip wasn't included in the stdlib and instead we just essentially made get-pip.py part of the stdlib (sort of kinda) was because we decided that tying improvements to the packaging system to the Python release schedule wasn't a workable solution
[21:16:59] <tomprince> agronholm: Most existing packages don't statically compile everything. And I (at least) don't want everything statically compiled. At least, not all the time.
[21:17:09] <_habnabit> dstufft, well yeah, i figured that some sensible people would know that, but
[21:17:22] <agronholm> tomprince: do you really prefer spending 30-40 minutes compiling something like pyside every time you install it?
[21:17:43] <agronholm> or would you like precompiled binaries, even if they're "fatter" than locally compiled ones?
[21:17:47] <tomprince> That isn't what I said. I'm certainly in favor of binary wheels.
[21:18:12] <dstufft> tomprince: agronholm honestly I think the answer is both things, I think we can do static compiled binaries for "generic linux" wheels, and then Distro + Distro Version specific binaries for dynamicaly linked wheels
[21:18:22] <dstufft> and authors can decide which ones they want to upload
[21:20:03] <tomprince> Or, the PSF or your distro provides a service for building them.
[21:22:04] <tomprince> agronholm: I'm not saying that statically compiling things is categorically bad. I'm just saying there are trade-offs in doing that, and the some people may want to make different ones.
[21:22:35] <tomprince> Most distros, for distro packages, aren't going to accept statically linking. So the build process will need to support that, for example.
[21:24:13] <agronholm> tomprince: I'm not saying it shouldn't
[21:24:27] <agronholm> locally compiling is usually the best option if you can afford the time
[21:25:50] <agronholm> but that requires you to have the proper -dev packages installed system wide
[21:25:58] <agronholm> and figuring out the correct ones can be a PITA
[21:28:37] <_habnabit> agronholm, well, and presumably you don't want -dev packages installed on prod webservers
[21:29:31] <agronholm> _habnabit: that would be preferable, although the -dev packages don't really do any harm either
[21:33:02] <tomprince> Having them is a possible attack vector.
[21:33:44] <ionelmc> agronholm: it's a very interesting lib but it still deosn't explain what happens when you statically link libc
[21:35:31] <agronholm> ionelmc: bad things will happen, I had another article open sometime before this that explained it all
[21:36:25] <ionelmc> i don't say i don;t believe you, i just wanna know what's going on
[21:36:42] <agronholm> "Now you might be thinking, hey what about statically linking (E)GLIBC? Let me warn you that doing so is a bad idea. Some features in (E)GLIBC will only work if the statically linked (E)GLIBC is the exact same version of (E)GLIBC installed on the system, making statically linking pointless, if not downright problematic. (E)GLIBC's libdl is quite notable in this regard, as well as several networkin
[21:36:44] <ionelmc> i do wanna avoid finding out the hard way :)
[21:37:05] <agronholm> networking functions. (E)GLIBC is also licensed under LGPL. Which essentially means that if you give out the source to your application, then in most cases you can distribute statically linked binaries with it, but otherwise, not. Also, since 99% of the functions are marked as requiring extremely old versions of (E)GLIBC, statically linking is hardly necessary in most cases."
[21:37:28] <ionelmc> i get that but they have a linking exception don't they?
[21:37:50] <agronholm> I'm mostly concerned about the technical issues