Mercurial > libervia-web
annotate ez_setup.py @ 918:96a56856d357
pages (blog_new/articles): first concert Libervia page, blog articles:
This page is for now called blog_new to avoid conflict with former blog static page, but it will replace the older one when ready.
The page get target profile from URL, the request 10 last blog from it, and display it using blog/articles template.
Errors are not correctly handled for now (specially blog retrieval errors).
author | Goffi <goffi@goffi.org> |
---|---|
date | Mon, 06 Mar 2017 00:05:31 +0100 |
parents | 77bf2654ca0a |
children |
rev | line source |
---|---|
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
1 #!/usr/bin/env python |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
2 """Bootstrap setuptools installation |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
3 |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
4 To use setuptools in your package's setup.py, include this |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
5 file in the same directory and add this to the top of your setup.py:: |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
6 |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
7 from ez_setup import use_setuptools |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
8 use_setuptools() |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
9 |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
10 To require a specific version of setuptools, set a download |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
11 mirror, or use an alternate download directory, simply supply |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
12 the appropriate options to ``use_setuptools()``. |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
13 |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
14 This file can also be run as a script to install or upgrade setuptools. |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
15 """ |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
16 import os |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
17 import shutil |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
18 import sys |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
19 import tempfile |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
20 import zipfile |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
21 import optparse |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
22 import subprocess |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
23 import platform |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
24 import textwrap |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
25 import contextlib |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
26 |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
27 from distutils import log |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
28 |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
29 try: |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
30 from urllib.request import urlopen |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
31 except ImportError: |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
32 from urllib2 import urlopen |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
33 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
34 try: |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
35 from site import USER_SITE |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
36 except ImportError: |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
37 USER_SITE = None |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
38 |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
39 DEFAULT_VERSION = "5.5" |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
40 DEFAULT_URL = "https://pypi.python.org/packages/source/s/setuptools/" |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
41 |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
42 def _python_cmd(*args): |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
43 """ |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
44 Return True if the command succeeded. |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
45 """ |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
46 args = (sys.executable,) + args |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
47 return subprocess.call(args) == 0 |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
48 |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
49 |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
50 def _install(archive_filename, install_args=()): |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
51 with archive_context(archive_filename): |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
52 # installing |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
53 log.warn('Installing Setuptools') |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
54 if not _python_cmd('setup.py', 'install', *install_args): |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
55 log.warn('Something went wrong during the installation.') |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
56 log.warn('See the error message above.') |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
57 # exitcode will be 2 |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
58 return 2 |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
59 |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
60 |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
61 def _build_egg(egg, archive_filename, to_dir): |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
62 with archive_context(archive_filename): |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
63 # building an egg |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
64 log.warn('Building a Setuptools egg in %s', to_dir) |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
65 _python_cmd('setup.py', '-q', 'bdist_egg', '--dist-dir', to_dir) |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
66 # returning the result |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
67 log.warn(egg) |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
68 if not os.path.exists(egg): |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
69 raise IOError('Could not build the egg.') |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
70 |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
71 |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
72 class ContextualZipFile(zipfile.ZipFile): |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
73 """ |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
74 Supplement ZipFile class to support context manager for Python 2.6 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
75 """ |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
76 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
77 def __enter__(self): |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
78 return self |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
79 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
80 def __exit__(self, type, value, traceback): |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
81 self.close() |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
82 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
83 def __new__(cls, *args, **kwargs): |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
84 """ |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
85 Construct a ZipFile or ContextualZipFile as appropriate |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
86 """ |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
87 if hasattr(zipfile.ZipFile, '__exit__'): |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
88 return zipfile.ZipFile(*args, **kwargs) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
89 return super(ContextualZipFile, cls).__new__(cls) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
90 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
91 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
92 @contextlib.contextmanager |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
93 def archive_context(filename): |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
94 # extracting the archive |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
95 tmpdir = tempfile.mkdtemp() |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
96 log.warn('Extracting in %s', tmpdir) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
97 old_wd = os.getcwd() |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
98 try: |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
99 os.chdir(tmpdir) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
100 with ContextualZipFile(filename) as archive: |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
101 archive.extractall() |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
102 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
103 # going in the directory |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
104 subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0]) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
105 os.chdir(subdir) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
106 log.warn('Now working in %s', subdir) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
107 yield |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
108 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
109 finally: |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
110 os.chdir(old_wd) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
111 shutil.rmtree(tmpdir) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
112 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
113 |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
114 def _do_download(version, download_base, to_dir, download_delay): |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
115 egg = os.path.join(to_dir, 'setuptools-%s-py%d.%d.egg' |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
116 % (version, sys.version_info[0], sys.version_info[1])) |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
117 if not os.path.exists(egg): |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
118 archive = download_setuptools(version, download_base, |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
119 to_dir, download_delay) |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
120 _build_egg(egg, archive, to_dir) |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
121 sys.path.insert(0, egg) |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
122 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
123 # Remove previously-imported pkg_resources if present (see |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
124 # https://bitbucket.org/pypa/setuptools/pull-request/7/ for details). |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
125 if 'pkg_resources' in sys.modules: |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
126 del sys.modules['pkg_resources'] |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
127 |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
128 import setuptools |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
129 setuptools.bootstrap_install_from = egg |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
130 |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
131 |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
132 def use_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL, |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
133 to_dir=os.curdir, download_delay=15): |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
134 to_dir = os.path.abspath(to_dir) |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
135 rep_modules = 'pkg_resources', 'setuptools' |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
136 imported = set(sys.modules).intersection(rep_modules) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
137 try: |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
138 import pkg_resources |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
139 except ImportError: |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
140 return _do_download(version, download_base, to_dir, download_delay) |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
141 try: |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
142 pkg_resources.require("setuptools>=" + version) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
143 return |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
144 except pkg_resources.DistributionNotFound: |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
145 return _do_download(version, download_base, to_dir, download_delay) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
146 except pkg_resources.VersionConflict as VC_err: |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
147 if imported: |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
148 msg = textwrap.dedent(""" |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
149 The required version of setuptools (>={version}) is not available, |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
150 and can't be installed while this script is running. Please |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
151 install a more recent version first, using |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
152 'easy_install -U setuptools'. |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
153 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
154 (Currently using {VC_err.args[0]!r}) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
155 """).format(VC_err=VC_err, version=version) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
156 sys.stderr.write(msg) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
157 sys.exit(2) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
158 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
159 # otherwise, reload ok |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
160 del pkg_resources, sys.modules['pkg_resources'] |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
161 return _do_download(version, download_base, to_dir, download_delay) |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
162 |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
163 def _clean_check(cmd, target): |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
164 """ |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
165 Run the command to download target. If the command fails, clean up before |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
166 re-raising the error. |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
167 """ |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
168 try: |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
169 subprocess.check_call(cmd) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
170 except subprocess.CalledProcessError: |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
171 if os.access(target, os.F_OK): |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
172 os.unlink(target) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
173 raise |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
174 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
175 def download_file_powershell(url, target): |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
176 """ |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
177 Download the file at url to target using Powershell (which will validate |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
178 trust). Raise an exception if the command cannot complete. |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
179 """ |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
180 target = os.path.abspath(target) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
181 ps_cmd = ( |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
182 "[System.Net.WebRequest]::DefaultWebProxy.Credentials = " |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
183 "[System.Net.CredentialCache]::DefaultCredentials; " |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
184 "(new-object System.Net.WebClient).DownloadFile(%(url)r, %(target)r)" |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
185 % vars() |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
186 ) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
187 cmd = [ |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
188 'powershell', |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
189 '-Command', |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
190 ps_cmd, |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
191 ] |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
192 _clean_check(cmd, target) |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
193 |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
194 def has_powershell(): |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
195 if platform.system() != 'Windows': |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
196 return False |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
197 cmd = ['powershell', '-Command', 'echo test'] |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
198 with open(os.path.devnull, 'wb') as devnull: |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
199 try: |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
200 subprocess.check_call(cmd, stdout=devnull, stderr=devnull) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
201 except Exception: |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
202 return False |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
203 return True |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
204 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
205 download_file_powershell.viable = has_powershell |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
206 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
207 def download_file_curl(url, target): |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
208 cmd = ['curl', url, '--silent', '--output', target] |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
209 _clean_check(cmd, target) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
210 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
211 def has_curl(): |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
212 cmd = ['curl', '--version'] |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
213 with open(os.path.devnull, 'wb') as devnull: |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
214 try: |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
215 subprocess.check_call(cmd, stdout=devnull, stderr=devnull) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
216 except Exception: |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
217 return False |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
218 return True |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
219 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
220 download_file_curl.viable = has_curl |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
221 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
222 def download_file_wget(url, target): |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
223 cmd = ['wget', url, '--quiet', '--output-document', target] |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
224 _clean_check(cmd, target) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
225 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
226 def has_wget(): |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
227 cmd = ['wget', '--version'] |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
228 with open(os.path.devnull, 'wb') as devnull: |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
229 try: |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
230 subprocess.check_call(cmd, stdout=devnull, stderr=devnull) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
231 except Exception: |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
232 return False |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
233 return True |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
234 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
235 download_file_wget.viable = has_wget |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
236 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
237 def download_file_insecure(url, target): |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
238 """ |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
239 Use Python to download the file, even though it cannot authenticate the |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
240 connection. |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
241 """ |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
242 src = urlopen(url) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
243 try: |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
244 # Read all the data in one block. |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
245 data = src.read() |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
246 finally: |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
247 src.close() |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
248 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
249 # Write all the data in one block to avoid creating a partial file. |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
250 with open(target, "wb") as dst: |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
251 dst.write(data) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
252 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
253 download_file_insecure.viable = lambda: True |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
254 |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
255 def get_best_downloader(): |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
256 downloaders = ( |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
257 download_file_powershell, |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
258 download_file_curl, |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
259 download_file_wget, |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
260 download_file_insecure, |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
261 ) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
262 viable_downloaders = (dl for dl in downloaders if dl.viable()) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
263 return next(viable_downloaders, None) |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
264 |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
265 def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL, |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
266 to_dir=os.curdir, delay=15, downloader_factory=get_best_downloader): |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
267 """ |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
268 Download setuptools from a specified location and return its filename |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
269 |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
270 `version` should be a valid setuptools version number that is available |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
271 as an sdist for download under the `download_base` URL (which should end |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
272 with a '/'). `to_dir` is the directory where the egg will be downloaded. |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
273 `delay` is the number of seconds to pause before an actual download |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
274 attempt. |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
275 |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
276 ``downloader_factory`` should be a function taking no arguments and |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
277 returning a function for downloading a URL to a target. |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
278 """ |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
279 # making sure we use the absolute path |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
280 to_dir = os.path.abspath(to_dir) |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
281 zip_name = "setuptools-%s.zip" % version |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
282 url = download_base + zip_name |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
283 saveto = os.path.join(to_dir, zip_name) |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
284 if not os.path.exists(saveto): # Avoid repeated downloads |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
285 log.warn("Downloading %s", url) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
286 downloader = downloader_factory() |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
287 downloader(url, saveto) |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
288 return os.path.realpath(saveto) |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
289 |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
290 def _build_install_args(options): |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
291 """ |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
292 Build the arguments to 'python setup.py install' on the setuptools package |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
293 """ |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
294 return ['--user'] if options.user_install else [] |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
295 |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
296 def _parse_args(): |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
297 """ |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
298 Parse the command line for options |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
299 """ |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
300 parser = optparse.OptionParser() |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
301 parser.add_option( |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
302 '--user', dest='user_install', action='store_true', default=False, |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
303 help='install in user site package (requires Python 2.6 or later)') |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
304 parser.add_option( |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
305 '--download-base', dest='download_base', metavar="URL", |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
306 default=DEFAULT_URL, |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
307 help='alternative URL from where to download the setuptools package') |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
308 parser.add_option( |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
309 '--insecure', dest='downloader_factory', action='store_const', |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
310 const=lambda: download_file_insecure, default=get_best_downloader, |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
311 help='Use internal, non-validating downloader' |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
312 ) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
313 parser.add_option( |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
314 '--version', help="Specify which version to download", |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
315 default=DEFAULT_VERSION, |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
316 ) |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
317 options, args = parser.parse_args() |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
318 # positional arguments are ignored |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
319 return options |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
320 |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
321 def main(): |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
322 """Install or upgrade setuptools and EasyInstall""" |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
323 options = _parse_args() |
560
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
324 archive = download_setuptools( |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
325 version=options.version, |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
326 download_base=options.download_base, |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
327 downloader_factory=options.downloader_factory, |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
328 ) |
77bf2654ca0a
installation: replaced the deprecated distribute_setup.py by ez_setup.py
Goffi <goffi@goffi.org>
parents:
360
diff
changeset
|
329 return _install(archive, _build_install_args(options)) |
360
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
330 |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
331 if __name__ == '__main__': |
9834136b15ed
added setup.py for the installation with setuptools
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
332 sys.exit(main()) |