From 7784b0e17e2d54fd130e274bdb3aba4a2d1b2e9a Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Wed, 5 Sep 2018 23:45:55 -0400 Subject: [PATCH] Move installer to its own repo. https://github.com/denoland/deno_install 1. This allows the installer to use a more aggressive CI build matrix with different version of python. 2. Running the installer during tools/test.py artificially inflates our download stats. 3. Running the installer during tools/test.py makes the test script dependent on having an internet connection. 4. Running the installer during tools/test.py introduces a race condition during release - where it tries and fails to download the latest release in build process that should be uploading that release. --- README.md | 2 +- tools/install.py | 91 ------------------------------------------- tools/install_test.py | 33 ---------------- tools/test.py | 3 -- 4 files changed, 1 insertion(+), 128 deletions(-) delete mode 100755 tools/install.py delete mode 100755 tools/install_test.py diff --git a/README.md b/README.md index db50a0dbb9..8edfacc6f8 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ ## Install ``` -curl -sSf https://raw.githubusercontent.com/denoland/deno/master/tools/install.py | python +curl -sSf https://raw.githubusercontent.com/denoland/deno_install/master/install.py | python ``` diff --git a/tools/install.py b/tools/install.py deleted file mode 100755 index 81036d199b..0000000000 --- a/tools/install.py +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/env python -# Copyright 2018 the Deno authors. All rights reserved. MIT license. -from __future__ import print_function - -import io -import json -import os -import re -import shutil -import sys -import tempfile -import zipfile -import zlib - -try: - from urllib.request import urlopen -except ImportError: - from urllib2 import urlopen - -RELEASES_URL = "https://github.com/denoland/deno/releases/latest" -FILENAME_LOOKUP = { - "darwin": "deno_osx_x64.gz", - "linux": "deno_linux_x64.gz", # python3 - "linux2": "deno_linux_x64.gz", # python2 - "win32": "deno_win_x64.zip", - "cygwin": "deno_win_x64.zip" -} - - -def release_url(platform): - try: - filename = FILENAME_LOOKUP[platform] - except KeyError: - print("Unable to locate appropriate filename for", platform) - sys.exit(1) - - html = urlopen(RELEASES_URL).read().decode('utf-8') - urls = re.findall(r'href=[\'"]?([^\'" >]+)', html) - matching = [u for u in urls if filename in u] - - if len(matching) != 1: - print("Unable to find download url for", filename) - sys.exit(1) - - return "https://github.com" + matching[0] - - -def main(): - bin_dir = deno_bin_dir() - exe_fn = os.path.join(bin_dir, "deno") - - url = release_url(sys.platform) - print("Downloading", url) - compressed = urlopen(url).read() - - if url.endswith(".zip"): - with zipfile.ZipFile(io.BytesIO(compressed), 'r') as z: - with open(exe_fn, 'wb+') as exe: - exe.write(z.read('deno.exe')) - else: - # Note: gzip.decompress is not available in python2. - content = zlib.decompress(compressed, 15 + 32) - with open(exe_fn, 'wb+') as exe: - exe.write(content) - os.chmod(exe_fn, 0o744) - - print("DENO_EXE: " + exe_fn) - print("Now manually add %s to your $PATH" % bin_dir) - print("Example:") - print() - print(" echo export PATH=\"%s\":\\$PATH >> $HOME/.bash_profile" % bin_dir) - print() - - -def mkdir(d): - if not os.path.exists(d): - print("mkdir", d) - os.mkdir(d) - - -def deno_bin_dir(): - home = os.path.expanduser("~") - deno = os.path.join(home, ".deno") - mkdir(deno) - deno_bin = os.path.join(deno, "bin") - mkdir(deno_bin) - return deno_bin - - -if __name__ == '__main__': - main() diff --git a/tools/install_test.py b/tools/install_test.py deleted file mode 100755 index 4a7221102b..0000000000 --- a/tools/install_test.py +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env python -# Copyright 2018 the Deno authors. All rights reserved. MIT license. -import util -import sys -import shutil -import os -import subprocess - - -def main(): - PATTERN = "DENO_EXE: " - home = os.path.expanduser("~") - expected_bin_dir = os.path.join(home, ".deno", "bin") - print "Testing tools/install.py ... Expect deno installed to ", expected_bin_dir - if os.path.exists(expected_bin_dir): - shutil.rmtree(expected_bin_dir) - expected_fn = os.path.join(expected_bin_dir, "deno") - - cmd = [sys.executable, "tools/install.py"] - out = subprocess.check_output(cmd, universal_newlines=True) - actual_fn = None - for line in out.splitlines(): - print line - if PATTERN in line: - print "set actual" - actual_fn = line[len(PATTERN):] - assert actual_fn == expected_fn, "actual %s != expected %s" % (actual_fn, - expected_fn) - assert os.path.exists(actual_fn) - - -if __name__ == '__main__': - main() diff --git a/tools/test.py b/tools/test.py index c06c9a28bb..6e5cb548b9 100755 --- a/tools/test.py +++ b/tools/test.py @@ -4,7 +4,6 @@ import os import sys from check_output_test import check_output_test -import install_test from util import executable_suffix, run, build_path from unit_tests import unit_tests from util_test import util_test @@ -52,8 +51,6 @@ def main(argv): check_exists(deno_ns_exe) check_output_test(deno_ns_exe) - install_test.main() - if __name__ == '__main__': sys.exit(main(sys.argv))