New issue 112: support setup.py scripts that build multiple packages
https://bitbucket.org/hpk42/tox/issue/112/support-setuppy-scripts-that-build
Peter Feiner:
I'd like to be able to use tox with setup.py scripts that build multiple
packages (i.e., they make multiple setup() calls). The problem is that tox only
installs the sdist zip archive from _one_ package into the venv instead of
installing all of them. Here's a minimal example:
```
#!sh
peter@gremlin ~/foobar % find .
.
./tox.ini
./setup.py
peter@gremlin ~/foobar % cat tox.ini
[tox]
envlist=py27
[testenv]
whitelist_externals=true
commands=true
peter@gremlin ~/foobar % cat setup.py
#!/usr/bin/env python
from distutils.core import setup
setup(name='foo', install_requires=['bar'])
setup(name='bar')
peter@gremlin ~/foobar % tox -v
using tox.ini: /home/peter/foobar/tox.ini
using tox-1.5.0 from /usr/local/lib/python2.7/dist-packages/tox/__init__.pyc
GLOB sdist-make: /home/peter/foobar/setup.py
/home/peter/foobar$ /usr/bin/python /home/peter/foobar/setup.py sdist
--formats=zip --dist-dir /home/peter/foobar/.tox/dist
>/home/peter/foobar/.tox/log/tox-0.log
py27 create: /home/peter/foobar/.tox/py27
/home/peter/foobar/.tox$ /usr/bin/python2.7
/usr/local/lib/python2.7/dist-packages/virtualenv.py --setuptools py27
>/home/peter/foobar/.tox/py27/log/py27-0.log
py27 inst: /home/peter/foobar/.tox/dist/foo-0.0.0.zip
/home/peter/foobar/.tox/py27/log$ /home/peter/foobar/.tox/py27/bin/pip
install /home/peter/foobar/.tox/dist/foo-0.0.0.zip
>/home/peter/foobar/.tox/py27/log/py27-1.log
ERROR: invocation failed, logfile: /home/peter/foobar/.tox/py27/log/py27-1.log
ERROR: actionid=py27
msg=installpkg
cmdargs=[local('/home/peter/foobar/.tox/py27/bin/pip'), 'install',
'/home/peter/foobar/.tox/dist/foo-0.0.0.zip']
env={'PYTHONIOENCODING': 'utf_8', 'SSH_CLIENT': '192.168.1.207 59563 22',
'LOGNAME': 'peter', 'USER': 'peter', 'HOME': '/home/peter', 'PATH':
'/home/peter/foobar/.tox/py27/bin:/home/peter/test:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games',
'LANG': 'en_US.UTF-8', 'TERM': 'xterm-256color', 'SHELL': '/bin/zsh', 'SHLVL':
'1', 'PWD': '/home/peter/foobar', 'EDITOR': 'vim', 'OS_USERNAME': 'admin',
'OS_TENANT_NAME': 'admin', 'OS_PASSWORD': 'admin', '_': '/usr/local/bin/tox',
'SSH_CONNECTION': '192.168.1.207 59563 96.45.203.162 22', 'SSH_TTY':
'/dev/pts/74', 'OLDPWD': '/home/peter', 'OS_AUTH_URL':
'http://192.168.16.3:5000/v2.0/', 'MAIL': '/var/mail/peter', 'LS_COLORS':
'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=
01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=0
0;36:', 'PAGER': 'less'}
Unpacking /home/peter/foobar/.tox/dist/foo-0.0.0.zip
Running setup.py egg_info for package from
file:///home/peter/foobar/.tox/dist/foo-0.0.0.zip
Downloading/unpacking bar (from foo==0.0.0)
Could not find any downloads that satisfy the requirement bar (from
foo==0.0.0)
Cleaning up...
No distributions at all found for bar (from foo==0.0.0)
Storing complete log in /home/peter/.pip/pip.log
_______________________________________________________________________________________________________________________________________
summary
_______________________________________________________________________________________________________________________________________
ERROR: py27: InvocationError: /home/peter/foobar/.tox/py27/bin/pip install
/home/peter/foobar/.tox/dist/foo-0.0.0.zip (see
/home/peter/foobar/.tox/py27/log/py27-1.log)
```
Here's a hacky patch to get the job done:
```
#!sh
diff -r 3be5bca16f8b tox/_venv.py
--- a/tox/_venv.py Thu Aug 08 13:27:01 2013 +0200
+++ b/tox/_venv.py Thu Aug 08 14:48:38 2013 -0400
@@ -245,7 +245,9 @@
else:
action.setactivity("inst-nodeps", sdistpath)
extraopts = ['-U', '--no-deps']
- self._install([sdistpath], extraopts=extraopts, action=action)
+ import glob
+ sdistpaths = glob.glob('%s/*.zip' % sdistpath.dirname)
+ self._install(sdistpaths, extraopts=extraopts, action=action)
def install_deps(self, action=None):
if action is None:
```
I could prepare a proper patch if there's interest.
_______________________________________________
pytest-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pytest-commit