aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2015-08-16 12:31:51 +1200
committerAldo Cortesi <aldo@nullcube.com>2015-08-16 12:31:51 +1200
commit7e4020213cbc8e63fe1eff1aad9af0b63540e844 (patch)
treecb1667ba3204c22c0784bf86ad702964eb23c14c
parenta9fcef868b369568163e19c73651c55ccea4604d (diff)
downloadmitmproxy-7e4020213cbc8e63fe1eff1aad9af0b63540e844.tar.gz
mitmproxy-7e4020213cbc8e63fe1eff1aad9af0b63540e844.tar.bz2
mitmproxy-7e4020213cbc8e63fe1eff1aad9af0b63540e844.zip
Remove release tools
-rwxr-xr-xrelease/build.py241
-rwxr-xr-xrelease/osx-binaries66
-rw-r--r--release/release-checklist.md55
-rwxr-xr-xrelease/test-release38
-rw-r--r--setup.py2
5 files changed, 0 insertions, 402 deletions
diff --git a/release/build.py b/release/build.py
deleted file mode 100755
index 7d0d52dc..00000000
--- a/release/build.py
+++ /dev/null
@@ -1,241 +0,0 @@
-#!/usr/bin/env python
-
-from __future__ import (absolute_import, print_function, division)
-from contextlib import contextmanager
-from os.path import dirname, realpath, join, exists, normpath
-import os
-import shutil
-import subprocess
-import glob
-import re
-from shlex import split
-import click
-
-# https://virtualenv.pypa.io/en/latest/userguide.html#windows-notes
-# scripts and executables on Windows go in ENV\Scripts\ instead of ENV/bin/
-if os.name == "nt":
- venv_bin = "Scripts"
-else:
- venv_bin = "bin"
-
-root_dir = join(dirname(realpath(__file__)), "..", "..")
-mitmproxy_dir = join(root_dir, "mitmproxy")
-dist_dir = join(mitmproxy_dir, "dist")
-test_venv_dir = join(root_dir, "venv.mitmproxy-release")
-
-all_projects = ("netlib", "pathod", "mitmproxy")
-tools = {
- "mitmproxy": ["mitmproxy", "mitmdump", "mitmweb"],
- "pathod": ["pathod", "pathoc"],
- "netlib": []
-}
-if os.name == "nt":
- tools["mitmproxy"].remove("mitmproxy")
-version_files = {
- "mitmproxy": normpath(join(root_dir, "mitmproxy/libmproxy/version.py")),
- "pathod": normpath(join(root_dir, "pathod/libpathod/version.py")),
- "netlib": normpath(join(root_dir, "netlib/netlib/version.py")),
-}
-
-
-@contextmanager
-def empty_pythonpath():
- """
- Make sure that the regular python installation is not on the python path,
- which would give us access to modules installed outside of our virtualenv.
- """
- pythonpath = os.environ["PYTHONPATH"]
- os.environ["PYTHONPATH"] = ""
- yield
- os.environ["PYTHONPATH"] = pythonpath
-
-
-@contextmanager
-def chdir(path):
- old_dir = os.getcwd()
- os.chdir(path)
- yield
- os.chdir(old_dir)
-
-
-@click.group(chain=True)
-def cli():
- """
- mitmproxy build tool
- """
- pass
-
-
-@cli.command("contributors")
-def contributors():
- """
- Update CONTRIBUTORS.md
- """
- print("Updating CONTRIBUTORS.md...")
- contributors_data = subprocess.check_output(split("git shortlog -n -s"))
- with open(join(mitmproxy_dir, "CONTRIBUTORS"), "w") as f:
- f.write(contributors_data)
-
-
-@cli.command("docs")
-def docs():
- """
- Render the docs
- """
- print("Rendering the docs...")
- subprocess.check_call([
- "cshape",
- join(mitmproxy_dir, "doc-src"),
- join(mitmproxy_dir, "doc")
- ])
-
-
-@cli.command("set-version")
-@click.option('--project', '-p', 'projects', multiple=True, type=click.Choice(all_projects), default=all_projects)
-@click.argument('version')
-def set_version(projects, version):
- """
- Update version information
- """
- print("Update versions...")
- version = ", ".join(version.split("."))
- for project, version_file in version_files.items():
- if project not in projects:
- continue
- print("Update %s..." % version_file)
- with open(version_file, "rb") as f:
- content = f.read()
- new_content = re.sub(r"IVERSION\s*=\s*\([\d,\s]+\)", "IVERSION = (%s)" % version, content)
- with open(version_file, "wb") as f:
- f.write(new_content)
-
-
-@cli.command("git")
-@click.option('--project', '-p', 'projects', multiple=True, type=click.Choice(all_projects), default=all_projects)
-@click.argument('args', nargs=-1, required=True)
-def git(projects, args):
- """
- Run a git command on every project
- """
- args = ["git"] + list(args)
- for project in projects:
- print("%s> %s..." % (project, " ".join(args)))
- subprocess.check_call(
- args,
- cwd=join(root_dir, project)
- )
-
-
-@cli.command("sdist")
-@click.option('--project', '-p', 'projects', multiple=True, type=click.Choice(all_projects), default=all_projects)
-def sdist(projects):
- """
- Build a source distribution
- """
- with empty_pythonpath():
- print("Building release...")
- if exists(dist_dir):
- shutil.rmtree(dist_dir)
- for project in projects:
- print("Creating %s source distribution..." % project)
- subprocess.check_call(
- ["python", "./setup.py", "-q", "sdist", "--dist-dir", dist_dir, "--formats=gztar"],
- cwd=join(root_dir, project)
- )
-
-
-@cli.command("test")
-@click.option('--project', '-p', 'projects', multiple=True, type=click.Choice(all_projects), default=all_projects)
-@click.pass_context
-def test(ctx, projects):
- """
- Test the source distribution
- """
- if not exists(dist_dir):
- ctx.invoke(sdist)
-
- with empty_pythonpath():
- print("Creating virtualenv for test install...")
- if exists(test_venv_dir):
- shutil.rmtree(test_venv_dir)
- subprocess.check_call(["virtualenv", "-q", test_venv_dir])
-
- pip = join(test_venv_dir, venv_bin, "pip")
- with chdir(dist_dir):
- for project in projects:
- print("Installing %s..." % project)
- dist = glob.glob("./%s*" % project)[0]
- subprocess.check_call([pip, "install", "-q", dist])
-
- print("Running binaries...")
- for project in projects:
- for tool in tools[project]:
- tool = join(test_venv_dir, venv_bin, tool)
- print(tool)
- print(subprocess.check_output([tool, "--version"]))
-
- print("Virtualenv available for further testing:")
- print("source %s" % normpath(join(test_venv_dir, venv_bin, "activate")))
-
-
-@cli.command("upload")
-@click.option('--username', prompt=True)
-@click.password_option(confirmation_prompt=False)
-@click.option('--repository', default="pypi")
-def upload_release(username, password, repository):
- """
- Upload source distributions to PyPI
- """
- print("Uploading distributions...")
- subprocess.check_call([
- "twine",
- "upload",
- "-u", username,
- "-p", password,
- "-r", repository,
- "%s/*" % dist_dir
- ])
-
-
-# TODO: Fully automate build process.
-# This wizard is missing OSX builds and updating mitmproxy.org.
-@cli.command("wizard")
-@click.option('--version', prompt=True)
-@click.option('--username', prompt="PyPI Username")
-@click.password_option(confirmation_prompt=False, prompt="PyPI Password")
-@click.option('--repository', default="pypi")
-@click.option('--project', '-p', 'projects', multiple=True, type=click.Choice(all_projects), default=all_projects)
-@click.pass_context
-def wizard(ctx, version, username, password, repository, projects):
- """
- Interactive Release Wizard
- """
- for project in projects:
- if subprocess.check_output(["git", "status", "--porcelain"], cwd=join(root_dir, project)):
- raise RuntimeError("%s repository is not clean." % project)
-
- # Build test release
- ctx.invoke(sdist, projects=projects)
- ctx.invoke(test, projects=projects)
- click.confirm("Please test the release now. Is it ok?", abort=True)
-
- # bump version, update docs and contributors
- ctx.invoke(set_version, version=version, projects=projects)
- ctx.invoke(docs)
- ctx.invoke(contributors)
-
- # version bump commit + tag
- ctx.invoke(git, args=["commit", "-a", "-m", "bump version"], projects=projects)
- ctx.invoke(git, args=["tag", "v" + version], projects=projects)
- ctx.invoke(git, args=["push"], projects=projects)
- ctx.invoke(git, args=["push", "--tags"], projects=projects)
-
- # Re-invoke sdist with bumped version
- ctx.invoke(sdist, projects=projects)
- click.confirm("All good, can upload to PyPI?", abort=True)
- ctx.invoke(upload_release, username=username, password=password, repository=repository)
- click.echo("All done!")
-
-
-if __name__ == "__main__":
- cli()
diff --git a/release/osx-binaries b/release/osx-binaries
deleted file mode 100755
index 3cfe0913..00000000
--- a/release/osx-binaries
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/bin/sh
-
-# Quick and dangerous script for building OSX binaries.
-
-# At the moment, pyinstaller has no support for entry points, except for this
-# hideous hack on the wiki:
-# https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Setuptools-Entry-Point
-# Once this is fixed, we can ditch the redundant command scripts.
-
-VENV=../venv.mitmproxy
-PYINST_CMD="$VENV/bin/pyinstaller -F --clean"
-TMPDIR=./tmp
-CACHE="~/Library/Application Support/pyinstaller"
-
-
-if [ ! -d $VENV ]
-then
- echo "Failed: set up a dev environment as described in the README"
- echo "and run from the top-level mitmproxy directory."
- exit
-fi
-
-source $VENV/bin/activate
-
-if [ ! -f $VENV/bin/pyinstaller ]
- then
- echo "Installing pyinstaller..."
- $VENV/bin/pip install \
- --force-reinstall \
- --upgrade \
- https://github.com/pyinstaller/pyinstaller/archive/develop.zip
- $VENV/bin/pip install --upgrade macholib
-fi
-
-# readline.so is actually a symlink to a Python file, which breaks PyInstaller
-# (and readline itself). Why? Who knows. Re-address this when this stupidity
-# ceases to be.
-echo "Removing broken readline..."
-rm -f $VENV/lib/python2.7/readline.so
-
-
-echo "Clearing caches..."
-rm -f dist/*
-rm -rf $TMPDIR
-rm -rf $CACHE
-
-$PYINST_CMD ./release/mitmdump.spec
-echo "Running mitmdump..."
-./dist/mitmdump --version || exit 1
-
-$PYINST_CMD ./release/mitmproxy.spec
-echo "Running mitmproxy..."
-./dist/mitmproxy --version || exit 1
-
-$PYINST_CMD ./release/mitmweb.spec
-echo "Running mitmweb..."
-./dist/mitmweb --version || exit 1
-
-DST=osx-mitmproxy-`./dist/mitmdump --shortversion 2>&1`
-mkdir -p $TMPDIR/$DST
-cp ./dist/mitmproxy $TMPDIR/$DST
-cp ./dist/mitmdump $TMPDIR/$DST
-cshape ./doc-src $TMPDIR/$DST/doc
-
-cd $TMPDIR
-tar -czvf $DST.tar.gz $DST
diff --git a/release/release-checklist.md b/release/release-checklist.md
deleted file mode 100644
index e6d9ae1f..00000000
--- a/release/release-checklist.md
+++ /dev/null
@@ -1,55 +0,0 @@
-# Release Checklist
-
-## Test
-
- - Create the source distributions, make sure the output is sensible:
- `./release/build.py release`
- All source distributions can be found in `./dist`.
-
- - Test the source distributions:
- `./release/build.py test`
- This creates a new virtualenv in `../venv.mitmproxy-release` and installs the distributions from `./dist` into it.
-
-## Release
-
- - Verify that repositories are in a clean state:
- `./release/build.py git status`
-
- - Update the version number in `version.py` for all projects:
- `./release/build.py set-version 0.13`
-
- - Ensure that the website style assets have been compiled for production, and synced to the docs.
-
- - Render the docs, update CONTRIBUTORS file:
- `./release/build.py docs contributors`
-
- - Make version bump commit for all projects, tag and push it:
- `./release/build.py git commit -am "bump version"`
- `./release/build.py git tag v0.13`
- `./release/build.py git push --tags`
-
- - Recreate the source distributions with updated version information:
- `./release/build.py sdist`
-
- - Build the OSX binaries
- - Follow instructions in osx-binaries
- - Move to download dir:
- `mv ./tmp/osx-mitmproxy-VERSION.tar.gz ~/mitmproxy/www.mitmproxy.org/src/download`
-
- - Move all source distributions from `./dist` to the server:
- `mv ./dist/* ~/mitmproxy/www.mitmproxy.org/src/download`
-
- - Upload distributions in `./dist` to PyPI:
- `./release/build.py upload`
- You can test with [testpypi.python.org](https://testpypi.python.org/pypi) by passing `--repository test`.
- ([more info](https://tom-christie.github.io/articles/pypi/))
-
- - Now bump the version number to be ready for the next cycle:
-
- **TODO**: We just shipped 0.12 - do we bump to 0.12.1 or 0.13 now?
- We should probably just leave it as-is and only bump once we actually do the next release.
-
- Also, we need a release policy. I propose the following:
- - By default, every release is a new minor (`0.x`) release and it will be pushed for all three projects.
- - Only if an emergency bugfix is needed, we push a new `0.x.y` bugfix release for a single project.
- This matches with what we do in `setup.py`: `"netlib>=%s, <%s" % (version.MINORVERSION, version.NEXT_MINORVERSION)` \ No newline at end of file
diff --git a/release/test-release b/release/test-release
deleted file mode 100755
index 8cbcea8c..00000000
--- a/release/test-release
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-
-MITMPROXY_DIR=~/mitmproxy/mitmproxy
-NETLIB_DIR=~/mitmproxy/netlib
-PATHOD_DIR=~/mitmproxy/pathod
-DST=/tmp/mitmproxy_release
-
-rm -rf $DST
-mkdir -p $DST
-
-cd $NETLIB_DIR
-echo "Creating netlib source distribution..."
-python ./setup.py -q sdist --dist-dir $DST
-
-echo "Creating mitmproxy source distribution..."
-cd $MITMPROXY_DIR
-python ./setup.py -q sdist --dist-dir $DST
-
-echo "Creating pathod source distribution..."
-cd $PATHOD_DIR
-python ./setup.py -q sdist --dist-dir $DST
-
-echo "Creating virtualenv for test install..."
-virtualenv -q $DST/venv
-
-cd $DST
-echo "Installing netlib..."
-./venv/bin/pip -q install --download-cache ~/.pipcache ./netlib*
-echo "Installing pathod..."
-./venv/bin/pip -q install --download-cache ~/.pipcache ./pathod*
-echo "Installing mitmproxy..."
-./venv/bin/pip -q install --download-cache ~/.pipcache ./mitmproxy*
-
-echo "Running binaries..."
-./venv/bin/mitmproxy --version
-./venv/bin/mitmdump --version
-./venv/bin/pathod --version
-./venv/bin/pathoc --version
diff --git a/setup.py b/setup.py
index da080bc1..847a17f9 100644
--- a/setup.py
+++ b/setup.py
@@ -38,8 +38,6 @@ dev_deps = {
"nose>=1.3.0",
"nose-cov>=1.6",
"coveralls>=0.4.1",
- "click>=4.1",
- "twine>=1.5.0",
"pathod>=%s, <%s" % (version.MINORVERSION, version.NEXT_MINORVERSION),
"countershape"
}