PMXBOT Log file Viewer

Help | Karma | Search:

#pypa-dev logs for Monday the 30th of March, 2015

(Back to #pypa-dev overview) (Back to channel listing) (Animate logs)
[01:41:26] <pmxbot> arfrever pushed 1 commit to setuptools (https://bitbucket.org/pypa/setuptools/) :
[01:41:26] <pmxbot> Fix some typos.
[02:10:47] <lifeless> is there a bug open for 'build wheels in pip install' ?
[02:27:38] <pmxbot> arfrever pushed 1 commit to setuptools (https://bitbucket.org/pypa/setuptools/) :
[02:27:38] <pmxbot> Fix setuptools.sandbox._execfile() with Python 3.1.
[03:06:07] <lifeless> dstufft: ok PR 2616 should be good to merge if it passes tests
[03:06:12] <lifeless> dstufft: 2617 is being worked on still
[18:23:38] <xafer> qwcode, it you have some time, https://github.com/pypa/pip/pull/2614 should be ready :)
[18:39:26] <sigmavirus24> lifeless: 2616 is an auspicious PR number
[19:00:36] <qwcode> xafer, ah, yes, I'll look later
[19:57:14] <lifeless> morning
[19:57:16] <lifeless> sigmavirus24: it is
[19:59:13] <sigmavirus24> morning
[20:34:35] <lifeless> is there home dir isolation around the pip tests? e.g. does each test get a unique ~ ?
[20:35:32] <lifeless> ah yes, good
[21:19:01] <etcdctlftw> Is there any advice to work around broken relative local paths in pip requirement.txt files? http://stackoverflow.com/a/12921216
[21:21:41] <lifeless> fix the requirement.txt files?
[21:22:33] <lifeless> [not being facetious - they are intended for local use, so should be locally editable]
[21:30:16] <carljm> etcdctlftw: That answer references a quite old pip version as "the current version of pip", so I wouldn't be surprised if the information there is outdated.
[21:30:29] <carljm> Have you tried the latest version of pip? What specific problem are you having with relative paths?
[21:32:43] <etcdctlftw> lifeless: I can edit the requirements.txt file no problem, my question is that I can't find a working method for referencing a local relative path for one of my eggs. carljm: pip --version gives 1.5.6.
[21:33:10] <lifeless> etcdctlftw: you probably want to upgrade that pip as a first step :)
[21:35:59] <etcdctlftw> lifeless: Ok, I'll try that.
[21:42:40] <lifeless> dstufft: is no_cache no longer honoured ?
[21:43:04] <dstufft> lifeless: you mean --no-cache-dir?
[21:43:14] <lifeless> yeah
[21:43:21] <lifeless> just trying to see where its used
[21:43:23] <dstufft> should be honored, if not it's a bug
[21:43:27] <lifeless> ah ok
[21:43:30] <lifeless> will poke harder
[21:43:46] <lifeless> ahh
[21:43:49] <dstufft> it sets the cache_dir to None
[21:43:50] <dstufft> IIRC
[21:43:50] <lifeless> stashed in PipSession
[21:44:10] <dstufft> yea sounds about right
[21:46:45] <lifeless> dstufft: have a look at my latest commit in https://github.com/pypa/pip/pull/2618
[21:49:34] <dstufft> lifeless: is this just toa void calling normalize twice?
[21:52:15] <lifeless> dstufft: no, its so we have a place to put the wheels we're going to build in install
[21:52:39] <lifeless> dstufft: I figured we needed to be able to disable this, didn't think it was conceptually big enough to warrant its own option
[21:54:19] <dstufft> lifeless: yea that makes sense, I just wasn't sure about https://github.com/rbtcollins/pip/commit/77df2702c1b9856adead6aa9a00c59e3018cb820
[21:54:43] <lifeless> dstufft: oh, that - duplicate code offends me
[21:55:01] <lifeless> dstufft: particularly when it can lead to skew which this widely separated use could
[21:55:13] <dstufft> and I just realized that wasn't the last commit
[21:55:16] <lifeless> dstufft: :)
[21:55:22] <lifeless> dstufft: yeah the UI is tricksy there.
[21:55:44] <lifeless> dstufft: hav eyou looked at https://github.com/pypa/pip/pull/2616
[21:56:14] <dstufft> not yet, it's in my TODO list for today/tomorrow. This weekend I was super busy
[21:56:46] <dstufft> lifeless: yea, tying things into --no-cache-dir makes sense to me, we probably want to also disable it if --no-use-wheels is set too
[21:58:15] <dstufft> (that's another flag inside of pip from the 1.4 era when wheels were opt in, now it's used as an opt out of wheels)
[21:58:39] <etcdctlftw> lifeless: carljm: I upgraded to pip 6.0.8 and I still can't get relative local paths to work.
[21:58:52] <etcdctlftw> Here's what I'm trying to do:
[21:58:59] <etcdctlftw> I have a child project (storing cross-app server configs, credentials etc) that is a git submodule inside my current project. In my requirement.txt, I've tried a few combinations:
[21:59:04] <etcdctlftw> -e file:./externals/childproject#egg=my-child
[21:59:09] <etcdctlftw> -e file:externals/childproject#egg=my-child
[21:59:13] <etcdctlftw> -e ./externals/childproject#egg=my-child
[21:59:17] <etcdctlftw> -e externals/childproject#egg=my-child
[21:59:21] <etcdctlftw> All of these don't work.
[21:59:31] <lifeless> dstufft: added that to the conditional in commands/install.py
[22:00:34] <dstufft> lifeless: i'm abit nervous about turning this on by default in the first version it exists in, but I'm not sure it's worth the overhead of yet another flag to opt in to it for one release, so honoring those two flags is probably good enough
[22:00:50] <lifeless> dstufft: folk test betas right? :)
[22:03:22] <dstufft> lifeless: if it breaks openstack I'm totally blaming you
[22:03:23] <dstufft> :D
[22:05:15] <sigmavirus24> dstufft: pretty sure at this point we should just totally remove support for relative file paths
[22:07:59] <lifeless> updated 2616
[22:08:14] <sigmavirus24> lifeless: is it now 7230?
[22:10:21] <etcdctlftw> Any takers on my question above?
[22:10:55] <sigmavirus24> etcdctlftw: file://./externals/childproject doesn't work?
[22:11:12] <sigmavirus24> (Because the file protocol is actually file:// not file:barf)
[22:14:40] <etcdctlftw> sigmavirus24: hm. every tutorial I saw said file:blah not file://blah. I'll try the second one, thanks for the suggestion!
[22:18:13] <etcdctlftw> sigmavirus24: -e file://./externals/childproject#egg=my-child didn't work: Error [Errno 2] No such file or directory: '\\\\./externals/childproject' while executing command python setup.py egg_info
[22:20:44] <etcdctlftw> Similar message when trying file://externals/childproject: No such file or directory: '\\\\externals/childproject'
[22:22:30] <etcdctlftw> In my particular situation, do I really need the editable -e argument? (pardon my newbie python question....) Because I think I saw somewhere that relative paths work if the eggs aren't installed as editable.
[22:22:55] <lifeless> sigmavirus24: droll :)
[22:23:33] <sigmavirus24> etcdctlftw: I have no clue what your situation is so I can't answer that
[22:23:37] <sigmavirus24> You can try without -e
[22:24:25] <lifeless> etcdctlftw: can I ask why you want a relative path?
[22:24:39] <lifeless> etcdctlftw: eggs - projects - are conceptualy global artifacts
[22:25:44] <etcdctlftw> sigmavirus24: I just started at a new company where they set up internal "projects" that are collections of configs that are shared between python and other languages, and these projects are configured as python eggs when used in a python project
[22:27:31] <etcdctlftw> sigmavirus24: lifeless: It's working fine because currently they have it hit the company github account using an ssh key. However, now I'm trying to deploy it to a clean environment that doesn't have the ssh key and therefore need to pre-clone those config projects into the current project's dir
[22:27:38] <etcdctlftw> Does this make sense?
[22:28:33] <lifeless> I don't follow, sorry
[22:28:49] <sigmavirus24> If you're doing a deployment, why do you want the installations to be editable?
[22:29:18] <lifeless> if its a clean, isolated environment, I'd be giving it a devpi server or some such to point to
[22:29:29] <sigmavirus24> lifeless: yeah but etcdctlftw just started there
[22:29:32] <etcdctlftw> Because I want the devs to be able to check out this exact requirements.txt file and have it "just work"
[22:29:35] <sigmavirus24> So etcdctlftw can't fix lazy
[22:29:54] <lifeless> etcdctlftw: the devs have access to the company github, right?
[22:30:07] <etcdctlftw> lifeless: yes
[22:30:27] <lifeless> so you should be able to use the git vcs url to the project
[22:30:42] <sigmavirus24> etcdctlftw: currently anything installing from github shouldn't be installing as editable
[22:30:53] <sigmavirus24> so to preserve that behaviour, you shouldn't be installing from local sources as editable
[22:31:26] <etcdctlftw> lifeless: currently we do install from github. but I'm trying to change that because in the deploy environment (a docker container actually) I don't want to have to install the ssh jey
[22:31:35] <etcdctlftw> s/jek/key/
[22:31:53] <lifeless> why would you have to?
[22:32:09] <lifeless> you build a docker container, with the stuff installed, right?
[22:32:12] <etcdctlftw> sigmavirus24: the projects are being installed as editable from github.
[22:33:21] <etcdctlftw> lifeless: I'm trying to have jenkins check out the main project with all child config projects in an "./externals" subdir, then in docker I run "pip install -r requirements.txt"
[22:34:01] <lifeless> ok, so do this instead
[22:34:07] <lifeless> have jenkins run pip wheel
[22:34:17] <lifeless> and in docker do pip install ... -f wheelhouse
[22:34:33] <etcdctlftw> I guess I need to research pip wheel
[22:34:42] <etcdctlftw> I'm a devop, not a python dev :)
[22:34:54] <lifeless> its a bit surprising to me that you'd build a partially-ready docker image
[22:35:03] <lifeless> the whole point there is to separate build and run :)
[22:35:25] <lifeless> but if you want to do that, and you want access to privileged data within the container without, you need to cache it somehow
[22:35:41] <lifeless> pip wheel builds binary packages for a set of packages and their deps
[22:35:49] <etcdctlftw> that's actually exactly what I'm going for. step 1 is checkout, step 2 is build, step 3 is run.
[22:35:58] <tomprince> etcdctlftw: Have you seen https://glyph.twistedmatrix.com/2015/03/docker-deploy-double-dutch.html ?
[22:36:00] <etcdctlftw> currently, there is checking out being done in step 2
[22:37:02] <lifeless> etcdctlftw: well, pip install is build, but you said you're doing that in the container
[22:38:30] <etcdctlftw> lifeless: sorry for misrepresenting, when I said "in docker I run pip install -r requirements.txt" I meant in the dockerfile, so during the *building* of the container.
[22:38:39] <lifeless> ok
[22:38:51] <lifeless> so when you're building the container you should have access to github
[22:39:05] <etcdctlftw> tomprince: thank for the link! is this basically a tutorial to do what lifeless is suggesting with pip wheel?
[22:39:14] <etcdctlftw> lifeless: why is that necessary?
[22:39:26] <etcdctlftw> I don't want to import any private keys into the container
[22:39:43] <lifeless> etcdctlftw: I didn't suggest importing private keys
[22:39:54] <lifeless> etcdctlftw: I think I'm saying one thing and you're hearing another.
[22:40:26] <etcdctlftw> lifeless: possibly :) What do you mean by "access to github"?
[22:41:03] <lifeless> etcdctlftw: ssh as you said before
[22:42:07] <etcdctlftw> those child projects on the company github are private repos, so I couldn't ssh to them in my dockerfile unless I first import the private key... unless I'm misunderstanding you?
[22:43:21] <lifeless> etcdctlftw: SSH agents allow you to access a private key without having it within a file tree
[22:43:41] <lifeless> etcdctlftw: Thus ssh access doesn't imply importing a private key
[22:43:53] <lifeless> tomprince: nice link btw glyph FTW
[22:46:23] <etcdctlftw> lifeless: That's an interesting trick, I never thought of that. Just to clarify, you're suggesting to use ssh-agent on the Jenkins host so that when the docker daemon that it starts tries to ssh into the company github (inside the dockerfile), ssh-agent will do key forwarding?
[22:47:00] <lifeless> I'm suggesting to use ssh-agent within the Jenkins build process that builds the container image.
[22:47:16] <lifeless> Because jenkins already has either the key or a running agent, letting it get at github.
[22:47:48] <lifeless> and to access that agent within the docker build process
[22:48:16] <etcdctlftw> Very interesting. Thank you for the creative hack :)
[22:48:31] <lifeless> YW
[22:49:33] <etcdctlftw> Have you seen this work before? When I include a line like "RUN ssh ubuntu@server" inside my dockerfile, the docker daemon building this dockerfile will use the ssh-agent configured on the host?
[22:50:24] <lifeless> I'm fairly sure its isolated by default
[22:50:33] <lifeless> --env appears to be the way out
[22:50:43] <lifeless> google has lots of hits ;)
[22:50:59] <etcdctlftw> Ok, I'll try it out, thank again.
[22:57:40] <lifeless> lunch
[23:05:24] <lifeless> dstufft: is there a test package that won't build a wheel today ?
[23:05:41] <lifeless> dstufft: if not, can you suggest what I need to do to knobble bdist_wheel ?
[23:59:11] <lifeless> dstufft: ping?