Show More
@@ -1,79 +1,82 b'' | |||||
1 | #!/bin/bash |
|
1 | #!/bin/bash | |
2 | set -e |
|
2 | set -e | |
3 | set -x |
|
3 | set -x | |
4 |
|
4 | |||
5 | cleanup() |
|
5 | cleanup() | |
6 | { |
|
6 | { | |
7 | echo "Removing venv $venv" |
|
7 | echo "Removing venv $venv" | |
8 | rm -rf "$venv" |
|
8 | rm -rf "$venv" | |
9 | } |
|
9 | } | |
10 |
|
10 | |||
11 | echo "Checking that you are NOT inside a virtualenv" |
|
11 | echo "Checking that you are NOT inside a virtualenv" | |
12 | [ -z "$VIRTUAL_ENV" ] |
|
12 | [ -z "$VIRTUAL_ENV" ] | |
13 |
|
13 | |||
14 | venv=$(mktemp -d --tmpdir kallithea-release-XXXXX) |
|
14 | venv=$(mktemp -d --tmpdir kallithea-release-XXXXX) | |
15 | trap cleanup EXIT |
|
15 | trap cleanup EXIT | |
16 |
|
16 | |||
17 | echo "Setting up a fresh virtualenv in $venv" |
|
17 | echo "Setting up a fresh virtualenv in $venv" | |
18 | virtualenv -p python2 "$venv" |
|
18 | virtualenv -p python2 "$venv" | |
19 | . "$venv/bin/activate" |
|
19 | . "$venv/bin/activate" | |
20 |
|
20 | |||
21 | echo "Install/verify tools needed for building and uploading stuff" |
|
21 | echo "Install/verify tools needed for building and uploading stuff" | |
22 | pip install --upgrade -e . |
|
22 | pip install --upgrade -e . | |
23 | pip install --upgrade -r dev_requirements.txt twine |
|
23 | pip install --upgrade -r dev_requirements.txt twine | |
24 |
|
24 | |||
25 | echo "Cleanup and update copyrights ... and clean checkout" |
|
25 | echo "Cleanup and update copyrights ... and clean checkout" | |
26 | scripts/run-all-cleanup |
|
26 | scripts/run-all-cleanup | |
27 | scripts/update-copyrights.py |
|
27 | scripts/update-copyrights.py | |
28 | hg up -cr . |
|
28 | hg up -cr . | |
29 |
|
29 | |||
30 | echo "Make release build from clean checkout in build/" |
|
30 | echo "Make release build from clean checkout in build/" | |
31 | rm -rf build dist |
|
31 | rm -rf build dist | |
32 | hg archive build |
|
32 | hg archive build | |
33 | cd build |
|
33 | cd build | |
34 |
|
34 | |||
35 | echo "Check that each entry in MANIFEST.in match something" |
|
35 | echo "Check that each entry in MANIFEST.in match something" | |
36 | sed -e 's/[^ ]*[ ]*\([^ ]*\).*/\1/g' MANIFEST.in | xargs ls -lad |
|
36 | sed -e 's/[^ ]*[ ]*\([^ ]*\).*/\1/g' MANIFEST.in | xargs ls -lad | |
37 |
|
37 | |||
38 | echo "Build dist" |
|
38 | echo "Build dist" | |
39 | python2 setup.py compile_catalog |
|
39 | python2 setup.py compile_catalog | |
40 | python2 setup.py sdist |
|
40 | python2 setup.py sdist | |
41 |
|
41 | |||
42 | echo "Verify VERSION from kallithea/__init__.py" |
|
42 | echo "Verify VERSION from kallithea/__init__.py" | |
43 | namerel=$(cd dist && echo Kallithea-*.tar.gz) |
|
43 | namerel=$(cd dist && echo Kallithea-*.tar.gz) | |
44 | namerel=${namerel%.tar.gz} |
|
44 | namerel=${namerel%.tar.gz} | |
45 | version=${namerel#Kallithea-} |
|
45 | version=${namerel#Kallithea-} | |
46 | ls -l $(pwd)/dist/$namerel.tar.gz |
|
46 | ls -l $(pwd)/dist/$namerel.tar.gz | |
47 | echo "Releasing Kallithea $version in directory $namerel" |
|
47 | echo "Releasing Kallithea $version in directory $namerel" | |
48 |
|
48 | |||
49 | echo "Verify dist file content" |
|
49 | echo "Verify dist file content" | |
50 | diff -u <((hg mani | grep -v '^\.hg') | LANG=C sort) <(tar tf dist/Kallithea-$version.tar.gz | sed "s|^$namerel/||" | grep . | grep -v '^kallithea/i18n/.*/LC_MESSAGES/kallithea.mo$\|^Kallithea.egg-info/\|^PKG-INFO$\|/$' | LANG=C sort) |
|
50 | diff -u <((hg mani | grep -v '^\.hg') | LANG=C sort) <(tar tf dist/Kallithea-$version.tar.gz | sed "s|^$namerel/||" | grep . | grep -v '^kallithea/i18n/.*/LC_MESSAGES/kallithea.mo$\|^Kallithea.egg-info/\|^PKG-INFO$\|/$' | LANG=C sort) | |
51 |
|
51 | |||
52 | echo "Verify docs build" |
|
52 | echo "Verify docs build" | |
53 | python2 setup.py build_sphinx # the results are not actually used, but we want to make sure it builds |
|
53 | python2 setup.py build_sphinx # the results are not actually used, but we want to make sure it builds | |
54 |
|
54 | |||
|
55 | echo "Shortlog for inclusion in the release announcement" | |||
|
56 | scripts/shortlog.py "only('.', branch('stable') & tagged() & public() & not '.')" | |||
|
57 | ||||
55 | cat - << EOT |
|
58 | cat - << EOT | |
56 |
|
59 | |||
57 | Now, make sure |
|
60 | Now, make sure | |
58 | * all tests are passing |
|
61 | * all tests are passing | |
59 | * release note is ready |
|
62 | * release note is ready | |
60 | * announcement is ready |
|
63 | * announcement is ready | |
61 | * source has been pushed to https://kallithea-scm.org/repos/kallithea |
|
64 | * source has been pushed to https://kallithea-scm.org/repos/kallithea | |
62 |
|
65 | |||
63 | EOT |
|
66 | EOT | |
64 |
|
67 | |||
65 | echo "Verify current revision is tagged for $version" |
|
68 | echo "Verify current revision is tagged for $version" | |
66 | hg log -r "'$version'&." | grep . |
|
69 | hg log -r "'$version'&." | grep . | |
67 |
|
70 | |||
68 | echo -n "Enter \"pypi\" to upload Kallithea $version to pypi: " |
|
71 | echo -n "Enter \"pypi\" to upload Kallithea $version to pypi: " | |
69 | read answer |
|
72 | read answer | |
70 | [ "$answer" = "pypi" ] |
|
73 | [ "$answer" = "pypi" ] | |
71 |
|
74 | |||
72 | echo "Rebuild readthedocs for docs.kallithea-scm.org" |
|
75 | echo "Rebuild readthedocs for docs.kallithea-scm.org" | |
73 | xdg-open https://readthedocs.org/projects/kallithea/ |
|
76 | xdg-open https://readthedocs.org/projects/kallithea/ | |
74 | curl -X POST http://readthedocs.org/build/kallithea |
|
77 | curl -X POST http://readthedocs.org/build/kallithea | |
75 | xdg-open https://readthedocs.org/builds/kallithea/ |
|
78 | xdg-open https://readthedocs.org/builds/kallithea/ | |
76 | xdg-open http://docs.kallithea-scm.org/en/latest/ # or whatever the branch is |
|
79 | xdg-open http://docs.kallithea-scm.org/en/latest/ # or whatever the branch is | |
77 |
|
80 | |||
78 | twine upload dist/* |
|
81 | twine upload dist/* | |
79 | xdg-open https://pypi.python.org/pypi/Kallithea |
|
82 | xdg-open https://pypi.python.org/pypi/Kallithea |
General Comments 0
You need to be logged in to leave comments.
Login now