packaging: move DOWNLOADS dict to hgpackaging.downloads
We'll want to keep state in sync between multiple packaging tools.
It makes sense to share a central data structure defining downloads.
We also change the function to return the downloads entry so
callers don't have to access the global DOWNLOADS in the new
location.
Differential Revision: https://phab.mercurial-scm.org/D6085
--- a/contrib/packaging/hgpackaging/downloads.py Thu Mar 07 15:42:32 2019 -0800
+++ b/contrib/packaging/hgpackaging/downloads.py Thu Mar 07 10:20:37 2019 -0800
@@ -13,6 +13,33 @@
import urllib.request
+DOWNLOADS = {
+ 'gettext': {
+ 'url': 'https://versaweb.dl.sourceforge.net/project/gnuwin32/gettext/0.14.4/gettext-0.14.4-bin.zip',
+ 'size': 1606131,
+ 'sha256': '60b9ef26bc5cceef036f0424e542106cf158352b2677f43a01affd6d82a1d641',
+ 'version': '0.14.4',
+ },
+ 'gettext-dep': {
+ 'url': 'https://versaweb.dl.sourceforge.net/project/gnuwin32/gettext/0.14.4/gettext-0.14.4-dep.zip',
+ 'size': 715086,
+ 'sha256': '411f94974492fd2ecf52590cb05b1023530aec67e64154a88b1e4ebcd9c28588',
+ },
+ 'py2exe': {
+ 'url': 'https://versaweb.dl.sourceforge.net/project/py2exe/py2exe/0.6.9/py2exe-0.6.9.zip',
+ 'size': 149687,
+ 'sha256': '6bd383312e7d33eef2e43a5f236f9445e4f3e0f6b16333c6f183ed445c44ddbd',
+ 'version': '0.6.9',
+ },
+ 'virtualenv': {
+ 'url': 'https://files.pythonhosted.org/packages/37/db/89d6b043b22052109da35416abc3c397655e4bd3cff031446ba02b9654fa/virtualenv-16.4.3.tar.gz',
+ 'size': 3713208,
+ 'sha256': '984d7e607b0a5d1329425dd8845bd971b957424b5ba664729fab51ab8c11bc39',
+ 'version': '16.4.3',
+ },
+}
+
+
def hash_path(p: pathlib.Path):
h = hashlib.sha256()
@@ -105,7 +132,9 @@
print('successfully downloaded %s' % url)
-def download_entry(entry: dict, dest_path: pathlib.Path, local_name=None) -> pathlib.Path:
+def download_entry(name: dict, dest_path: pathlib.Path, local_name=None) -> pathlib.Path:
+ entry = DOWNLOADS[name]
+
url = entry['url']
local_name = local_name or url[url.rindex('/') + 1:]
@@ -113,4 +142,4 @@
local_path = dest_path / local_name
download_to_path(url, local_path, entry['size'], entry['sha256'])
- return local_path
+ return local_path, entry
--- a/contrib/packaging/inno/build.py Thu Mar 07 15:42:32 2019 -0800
+++ b/contrib/packaging/inno/build.py Thu Mar 07 10:20:37 2019 -0800
@@ -19,33 +19,6 @@
import tempfile
-DOWNLOADS = {
- 'gettext': {
- 'url': 'https://versaweb.dl.sourceforge.net/project/gnuwin32/gettext/0.14.4/gettext-0.14.4-bin.zip',
- 'size': 1606131,
- 'sha256': '60b9ef26bc5cceef036f0424e542106cf158352b2677f43a01affd6d82a1d641',
- 'version': '0.14.4',
- },
- 'gettext-dep': {
- 'url': 'https://versaweb.dl.sourceforge.net/project/gnuwin32/gettext/0.14.4/gettext-0.14.4-dep.zip',
- 'size': 715086,
- 'sha256': '411f94974492fd2ecf52590cb05b1023530aec67e64154a88b1e4ebcd9c28588',
- },
- 'py2exe': {
- 'url': 'https://versaweb.dl.sourceforge.net/project/py2exe/py2exe/0.6.9/py2exe-0.6.9.zip',
- 'size': 149687,
- 'sha256': '6bd383312e7d33eef2e43a5f236f9445e4f3e0f6b16333c6f183ed445c44ddbd',
- 'version': '0.6.9',
- },
- 'virtualenv': {
- 'url': 'https://files.pythonhosted.org/packages/37/db/89d6b043b22052109da35416abc3c397655e4bd3cff031446ba02b9654fa/virtualenv-16.4.3.tar.gz',
- 'size': 3713208,
- 'sha256': '984d7e607b0a5d1329425dd8845bd971b957424b5ba664729fab51ab8c11bc39',
- 'version': '16.4.3',
- },
-}
-
-
PRINT_PYTHON_INFO = '''
import platform, sys; print("%s:%d" % (platform.architecture()[0], sys.version_info[0]))
'''.strip()
@@ -128,15 +101,15 @@
build_dir.mkdir(exist_ok=True)
- gettext_pkg = download_entry(DOWNLOADS['gettext'], build_dir)
- gettext_dep_pkg = download_entry(DOWNLOADS['gettext-dep'], build_dir)
- virtualenv_pkg = download_entry(DOWNLOADS['virtualenv'], build_dir)
- py2exe_pkg = download_entry(DOWNLOADS['py2exe'], build_dir)
+ gettext_pkg, gettext_entry = download_entry('gettext', build_dir)
+ gettext_dep_pkg = download_entry('gettext-dep', build_dir)[0]
+ virtualenv_pkg, virtualenv_entry = download_entry('virtualenv', build_dir)
+ py2exe_pkg, py2exe_entry = download_entry('py2exe', build_dir)
venv_path = build_dir / ('venv-inno-%s' % ('x64' if vc_x64 else 'x86'))
gettext_root = build_dir / (
- 'gettext-win-%s' % DOWNLOADS['gettext']['version'])
+ 'gettext-win-%s' % gettext_entry['version'])
if not gettext_root.exists():
extract_zip_to_directory(gettext_pkg, gettext_root)
@@ -150,9 +123,9 @@
extract_zip_to_directory(py2exe_pkg, td)
virtualenv_src_path = td / ('virtualenv-%s' %
- DOWNLOADS['virtualenv']['version'])
+ virtualenv_entry['version'])
py2exe_source_path = td / ('py2exe-%s' %
- DOWNLOADS['py2exe']['version'])
+ py2exe_entry['version'])
virtualenv_py = virtualenv_src_path / 'virtualenv.py'