Mercurial > hg > carton
comparison carton.py @ 29:533a4f9718d9
improve documentation
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Mon, 11 Jul 2011 09:09:48 -0700 |
parents | dabf5e1bdf92 |
children | 0b9c124f128b |
comparison
equal
deleted
inserted
replaced
28:dabf5e1bdf92 | 29:533a4f9718d9 |
---|---|
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 | 2 |
3 """ | 3 """ |
4 make a self-extracting virtualenv from directories or URLs | 4 make a self-extracting virtualenv from directories or URLs of packages |
5 of packages | 5 |
6 | 6 To package up all files in a virtualenvs source directory (e.g.):: |
7 To package up all files in a virtualenvs source directory (e.g.): | 7 |
8 | 8 python path/to/carton.py myproject project/src/* |
9 python path/to/carton.py mozmill mozmill/src/* | 9 |
10 | 10 This will create a self-extracting file, `myproject.py`, that will unfold |
11 This will create a self-extracting file, `mozmill.py`, that will unfold | |
12 a virtualenv with the specified packages setup for development | 11 a virtualenv with the specified packages setup for development |
12 | |
13 The sources may be directories, local or HTTP-accessible tarballs, or ordinary | |
14 files. The `setup.py`s found in the `src` directory after extraction will be | |
15 run (via `python setup.py develop`) in the order they are provided. This makes | |
16 it possible to have completely local dependencies (without touching the net) | |
17 by correctly specifying the source order. If a `setup.py` is overwritten from | |
18 a later source, it will not be rerun (known limitation). | |
19 | |
20 The extracted virtualenv will be created in the current directory and will have | |
21 the same name as provided initially (e.g. `myproject`) unless `--env` is | |
22 specified. | |
23 | |
24 Normally, the entire contents of source directories are compressed and | |
25 packaged as-is. When running with the `--package` flag, a source tarball is | |
26 produced via `python setup.py sdist` if the directory contains a top-level | |
27 `setup.py`. | |
28 | |
29 Since directories are compressed as-is, portable file-based VCS repositories, | |
30 such a mercurial and git, may be cartoned this way (though note that newer | |
31 repositories may not be backwards-compatible with older clients). | |
13 """ | 32 """ |
14 | 33 |
15 # imports | 34 # imports |
16 import os | 35 import os |
17 import sys | 36 import sys |
114 if i in setup_pys: | 133 if i in setup_pys: |
115 continue | 134 continue |
116 subdir = os.path.join(srcdir, i) | 135 subdir = os.path.join(srcdir, i) |
117 if os.path.exists(os.path.join(srcdir, i, 'setup.py')): | 136 if os.path.exists(os.path.join(srcdir, i, 'setup.py')): |
118 call([python, 'setup.py', 'develop'], cwd=subdir) | 137 call([python, 'setup.py', 'develop'], cwd=subdir) |
138 # TODO: try `setup.py install` if develop fails for distutils packages | |
119 setup_pys.add(i) | 139 setup_pys.add(i) |
120 | 140 |
121 # add virtualenv to the virtualenv (!) | 141 # add virtualenv to the virtualenv (!) |
122 virtualenv_dir = os.path.dirname(virtualenv) | 142 virtualenv_dir = os.path.dirname(virtualenv) |
123 if os.path.exists(os.path.join(virtualenv_dir, 'setup.py')): | 143 if os.path.exists(os.path.join(virtualenv_dir, 'setup.py')): |