aboutsummaryrefslogtreecommitdiffstats
path: root/release
diff options
context:
space:
mode:
Diffstat (limited to 'release')
-rw-r--r--release/.gitignore1
-rw-r--r--release/README.md4
-rw-r--r--release/hooks/hook-mitmproxy.py1
-rw-r--r--release/known_hosts.enc1
-rwxr-xr-xrelease/rtool.py105
-rw-r--r--release/setup.py18
6 files changed, 73 insertions, 57 deletions
diff --git a/release/.gitignore b/release/.gitignore
index 2247d5f9..905eec6e 100644
--- a/release/.gitignore
+++ b/release/.gitignore
@@ -1,2 +1,3 @@
/build
/dist
+known_hosts
diff --git a/release/README.md b/release/README.md
index a60b7f98..7bb89638 100644
--- a/release/README.md
+++ b/release/README.md
@@ -5,6 +5,10 @@ Make sure run all these steps on the correct branch you want to create a new rel
- Update CHANGELOG
- Verify that all CI tests pass
- Tag the release and push to Github
+ - For alphas, betas, and release candidates, use lightweight tags.
+ This is necessary so that the .devXXXX counter does not reset.
+ - For final releases, use annotated tags.
+ This makes the .devXXXX counter reset.
- Wait for tag CI to complete
## GitHub Release
diff --git a/release/hooks/hook-mitmproxy.py b/release/hooks/hook-mitmproxy.py
new file mode 100644
index 00000000..21932507
--- /dev/null
+++ b/release/hooks/hook-mitmproxy.py
@@ -0,0 +1 @@
+hiddenimports = ["mitmproxy.script"]
diff --git a/release/known_hosts.enc b/release/known_hosts.enc
new file mode 100644
index 00000000..585ee678
--- /dev/null
+++ b/release/known_hosts.enc
@@ -0,0 +1 @@
+gAAAAABaTif138dCP2-G3sAJxqh5icnwM0Zy7qh4HFCxeKQBMiVDr4nJyf9T82U677M_QKWRJmp_PsbnrshHXPylq0FuHwak7Yx7kdiLue6d85VQ7_kkMs-MlPM7_Xn54_zyuj1c0b3TVAuix2xHfFLdSd_mCxygFukLzf47OyYbno7lMY_-q0HZfVPz3PBZdk95wDcbYprmgEkVJZd64Tu_LG1JDDiz56LlqADMA4znMcSAoRmbVtHu-II09HMcX3TkmcqJsNv-IVHMs4fxW_DFsq9w5ARggL6ANMfhnFQPyMtgVHjGLkSjOMRshLkQUBVYx8yWEGaQOkP0doVtDS3fZ-MKc6OJC_NSs6gkm1rswjVsQsmgZGPIqjcVf9oCbFYcw0m-JrfB1irdsLoGzpfJaSGxveC7XqOd9ArBpCHFPVO-6ilu-E1qZelvL0HiplrFvJCMEev1U2YvznC1BWKpy81vJfH--64QKZ35yQBHMV_VoH-wi80EfWtz4ISvCMQWdjRAvhLHKHSYYhUSIgBZvCCQcPySdFpbDtwsQnzIqC8MQKG787w1FiYAwzdIHTWZuanENaPMALo0t0GgMSqPV4UUyw7dto8XSMqoUXOCuZNYjunVh7AzAKS7oMUYjDs38o92sWh5sZUpPfv2WYIiecTiQw4uPae7PdSwMhkI3WIOsSb8LURnG484vvgFc2jMpQThw-BHJx7tGYC0yFLouRH2O7m9x6xgiCiVA_u_BdOj_2PFufvOCaB9wno5Vo7C1hUERGWqoBZH0htBqxYci27hh8GFwkvj6OjFUyV_kk920cBYBDG4jS4bTrTzn_znJ9TNw2XkP98nA8cwlRYhDQG9FypJG0WwYkft3TVLSQ3Hq7t0nhvhSZvXts-3LR4S0_Hm0QgFUpUc-VHViinwK8_vQH3ZjvVlEWiXnzPdpAujjX_tQXsi13UE1Zp90wGeLrmdxGXq2K76Shytu8IwTcLNZ7m0jh8KmmfNwn6oZv-czqNmC4hh0OqRDFBrv3nnjDg2Vw74uKSZmXgtZlF_Zj9hPqxVWzj7lJUcyRqABBFbBH6lTSWPHLrzQ4eTex5dnOkXC8c3hRYDUt06xUkmDqaLK0rGFcfNXawZj1YqpUJW0qaNgbtBZRsSs92kblkETxCzcwxOfupmAhWdSkmCoxt019crodz3heREcyN2xcD9qHvdY49_FD3l3U6UhrWvmkDkzyLMd7VmRPWqlW0lkzrwav8e92leIq-xKFcvbnWgSdSCWWbXvIVJKcQ6hML3jX4oY7SoBs33U1Q0HfC7SuS5lqTASuRIOVCfIGeFfRwlIfEszbWg_WDoUjR6StaVq9tbtIC3mimWND82Z9r1NfUNxr8kFYIpH_6hbxhcW26HNBKr4wLxWFFE9l1QZORPM3s6z-lT4LzUPCkFExd_eYFx3X6yUJ3cHZhkQQzCLQqG7jQqvcMwDIfM-MXkJnttLfpBq0yiq0-mc-SEas5uy27iSJgbXnsV7G3YiKEelKW_uWP2bw-rQGG_AXMGNGF2A_aREsvGrEqPnyeHAxfS1bBcnqslpIzEwr9vyyJ5v_bxfHFQC4bwYMUvPGkjHVFc0Wrk7ss9P5Kd1bzh46H7OfroUbocmYBmHMMWEg-LvsG0RZil3KWh_CSyIIPETkDjuC3W7teT-wZK0zbTEaKCuz99Dg-tjzT6fP25ipoI70cX5R3KPwrLP3XNODRTsg_Jh7IpaXo9O3o8yLV9R6_rST_1KKJwzR2MMIXIvKaJQD9w2DZIaYx3tcVsXGCDnU4Tw2hhdB5wMCl3vHx83UHfjLxnc1tJ6ObpQUjwHM1SgHK8wLW409SVHphBbSjSilX5mIaR1S1SOTK53iFj5z6asZHY9JgDj11rng1uLKeirbrNZDnUme3NNYU-HX8Ret6oOesn3374uIHux1giqgR8VsPdkcMhvunx2oTP9R2fRBTSQ8sKNqDznRC8_qlQaRC94RnWO6VRNXVBT24cXq7HTepNp4f02UvUqQRyaIUmyn2S02mjLFECDm1iMxRhuacCKbI-WSKwJcm-7p39_Uh7m_nTl2VTseeQ-3NS6i-BiGmCHt3iDxR1Fkm31b50kWW3jCe6fcwMDeu3I_8mkQs_7mCFUjSDbvFUr2Y45a5guRlw63_KUW_mNN9td9hk8POWfxWEGhcZ9eRXh_eEdEaYZmviZdHi0I8pV52CqiEO-ZrnMw-w4rSpUQeRn9oKwp3GgB9j51RNlLqK9LTp-jfSGGi5GM-ab9sPgFCJLQ-HvHdGu0tQsF2wTD3qbJwNqapx28yNVfY6e8F2jOWjmP-zzFez8VNXcfoS--Ji_zI-VqsDx-cfz3DccWEjL6vjQOvaQTRwzhI7 \ No newline at end of file
diff --git a/release/rtool.py b/release/rtool.py
index 271392ba..9050107e 100755
--- a/release/rtool.py
+++ b/release/rtool.py
@@ -4,6 +4,7 @@ import contextlib
import fnmatch
import os
import platform
+import re
import runpy
import shlex
import shutil
@@ -79,26 +80,21 @@ def git(args: str) -> str:
return subprocess.check_output(["git"] + shlex.split(args)).decode()
-def get_version() -> str:
- return runpy.run_path(VERSION_FILE)["VERSION"]
+def get_version(dev: bool = False, build: bool = False) -> str:
+ x = runpy.run_path(VERSION_FILE)
+ return x["get_version"](dev, build, True)
-def get_snapshot_version() -> str:
- last_tag, tag_dist, commit = git("describe --tags --long").strip().rsplit("-", 2)
- tag_dist = int(tag_dist)
- if tag_dist == 0:
- return get_version()
- else:
- # remove the 'g' prefix added by recent git versions
- if commit.startswith('g'):
- commit = commit[1:]
-
- # The wheel build tag (we use the commit) must start with a digit, so we include "0x"
- return "{version}dev{tag_dist:04}-0x{commit}".format(
- version=get_version(), # this should already be the next version
- tag_dist=tag_dist,
- commit=commit
- )
+def set_version(dev: bool) -> None:
+ """
+ Update version information in mitmproxy's version.py to either include hardcoded information or not.
+ """
+ version = get_version(dev, dev)
+ with open(VERSION_FILE, "r") as f:
+ content = f.read()
+ content = re.sub(r'^VERSION = ".+?"', 'VERSION = "{}"'.format(version), content, flags=re.M)
+ with open(VERSION_FILE, "w") as f:
+ f.write(content)
def archive_name(bdist: str) -> str:
@@ -116,7 +112,7 @@ def archive_name(bdist: str) -> str:
def wheel_name() -> str:
return "mitmproxy-{version}-py3-none-any.whl".format(
- version=get_version(),
+ version=get_version(True),
)
@@ -179,6 +175,23 @@ def contributors():
f.write(contributors_data.encode())
+@cli.command("wheel")
+def make_wheel():
+ """
+ Build a Python wheel
+ """
+ set_version(True)
+ try:
+ subprocess.check_call([
+ "tox", "-e", "wheel",
+ ], env={
+ **os.environ,
+ "VERSION": get_version(True),
+ })
+ finally:
+ set_version(False)
+
+
@cli.command("bdist")
def make_bdist():
"""
@@ -206,24 +219,30 @@ def make_bdist():
excludes.append("mitmproxy.tools.web")
if tool != "mitmproxy_main":
excludes.append("mitmproxy.tools.console")
- subprocess.check_call(
- [
- "pyinstaller",
- "--clean",
- "--workpath", PYINSTALLER_TEMP,
- "--distpath", PYINSTALLER_DIST,
- "--additional-hooks-dir", PYINSTALLER_HOOKS,
- "--onefile",
- "--console",
- "--icon", "icon.ico",
- # This is PyInstaller, so setting a
- # different log level obviously breaks it :-)
- # "--log-level", "WARN",
- ]
- + [x for e in excludes for x in ["--exclude-module", e]]
- + PYINSTALLER_ARGS
- + [tool]
- )
+
+ # Overwrite mitmproxy/version.py to include commit info
+ set_version(True)
+ try:
+ subprocess.check_call(
+ [
+ "pyinstaller",
+ "--clean",
+ "--workpath", PYINSTALLER_TEMP,
+ "--distpath", PYINSTALLER_DIST,
+ "--additional-hooks-dir", PYINSTALLER_HOOKS,
+ "--onefile",
+ "--console",
+ "--icon", "icon.ico",
+ # This is PyInstaller, so setting a
+ # different log level obviously breaks it :-)
+ # "--log-level", "WARN",
+ ]
+ + [x for e in excludes for x in ["--exclude-module", e]]
+ + PYINSTALLER_ARGS
+ + [tool]
+ )
+ finally:
+ set_version(False)
# Delete the spec file - we're good without.
os.remove("{}.spec".format(tool))
@@ -280,11 +299,15 @@ def upload_snapshot(host, port, user, private_key, private_key_password, wheel,
"""
Upload snapshot to snapshot server
"""
+ cnopts = pysftp.CnOpts(
+ knownhosts=join(RELEASE_DIR, 'known_hosts')
+ )
with pysftp.Connection(host=host,
port=port,
username=user,
private_key=private_key,
- private_key_pass=private_key_password) as sftp:
+ private_key_pass=private_key_password,
+ cnopts=cnopts) as sftp:
dir_name = "snapshots/v{}".format(get_version())
sftp.makedirs(dir_name)
with sftp.cd(dir_name):
@@ -299,7 +322,11 @@ def upload_snapshot(host, port, user, private_key, private_key_password, wheel,
for f in files:
local_path = join(DIST_DIR, f)
- remote_filename = f.replace(get_version(), get_snapshot_version())
+ remote_filename = re.sub(
+ r"{version}(\.dev\d+(-0x[0-9a-f]+)?)?".format(version=get_version()),
+ get_version(True, True),
+ f
+ )
symlink_path = "../{}".format(f.replace(get_version(), "latest"))
# Upload new version
diff --git a/release/setup.py b/release/setup.py
deleted file mode 100644
index 0c4e6605..00000000
--- a/release/setup.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from setuptools import setup
-
-setup(
- name='mitmproxy-rtool',
- version="1.0",
- py_modules=["rtool"],
- install_requires=[
- "click>=6.2, <7.0",
- "twine>=1.6.5, <1.10",
- "pysftp==0.2.8",
- "cryptography>=2.0.0, <2.1",
- ],
- entry_points={
- "console_scripts": [
- "rtool=rtool:cli",
- ],
- },
-)