diff --git a/tools/pg-release.py b/tools/pg-release.py index 2aa0c114..ac32b199 100644 --- a/tools/pg-release.py +++ b/tools/pg-release.py @@ -9,7 +9,7 @@ description="Build release packages for pyqtgraph." epilog = """ Package build is done in several steps: - * Attempt to clone branch release-x.y.z from %s + * Attempt to clone branch release-x.y.z from source-repo * Merge release branch into master * Write new version numbers into the source * Roll over unreleased CHANGELOG entries @@ -37,9 +37,12 @@ Building deb packages requires several dependencies: * python-all, python3-all * python-stdeb, python3-stdeb -Building windows .exe files should be possible on any OS. Note, however, that +Note: building windows .exe files should be possible on any OS. However, Debian/Ubuntu systems do not include the necessary wininst*.exe files; these -must be manually copied from the Python source. +must be manually copied from the Python source to the distutils/command +submodule path (/usr/lib/pythonX.X/distutils/command). Additionally, it may be +necessary to rename (or copy / link) wininst-9.0-amd64.exe to +wininst-6.0-amd64.exe. """ @@ -152,7 +155,7 @@ def build(args): # Build windows executables cd {build_dir}/pyqtgraph python setup.py build bdist_wininst --plat-name=win32 - python setup.py build bdist_wininst + python setup.py build bdist_wininst --plat-name=win-amd64 cp dist/*.exe {pkg_dir} """.format(**args.__dict__)) args.exe_status = 'built' diff --git a/tools/release_instructions.md b/tools/release_instructions.md index 0a9d9d80..b3b53efa 100644 --- a/tools/release_instructions.md +++ b/tools/release_instructions.md @@ -3,26 +3,29 @@ PyQtGraph Release Procedure 1. Create a release-x.x.x branch -2. Run build-pg-release script +2. Run pyqtgraph/tools/pg-release.py script (this has only been tested on linux) - creates clone of master - merges release branch into master - updates version numbers in code - creates pyqtgraph-x.x.x tag - creates release commit - - builds source dist - - test pip install - - builds windows dists - - builds deb dist + - builds documentation + - builds source package + - tests pip install + - builds windows .exe installers (note: it may be necessary to manually + copy wininst*.exe files from the python source packages) + - builds deb package (note: official debian packages are built elsewhere; + these locally-built deb packages may be phased out) 3. test build files - test setup.py, pip on OSX - test setup.py, pip, 32/64 exe on windows - test setup.py, pip, deb on linux (py2, py3) -4. Run upload-release script - - pip upload - - github push + release +4. Run pg-release.py script again with --publish flag - website upload + - github push + release + - pip upload 5. publish - update website diff --git a/tools/shell.py b/tools/shell.py index 351f7a3d..76667980 100644 --- a/tools/shell.py +++ b/tools/shell.py @@ -11,19 +11,19 @@ def shell(cmd): for line in cmd.split('\n'): line = line.strip() if line.startswith('#'): - print '\033[33m> ' + line + '\033[0m' + print('\033[33m> ' + line + '\033[0m') else: - print '\033[32m> ' + line + '\033[0m' + print('\033[32m> ' + line + '\033[0m') if line.startswith('cd '): os.chdir(line[3:]) - proc.stdin.write(line + '\n') - proc.stdin.write('echo $? 1>&%d\n' % pout) + proc.stdin.write((line + '\n').encode('utf-8')) + proc.stdin.write(('echo $? 1>&%d\n' % pout).encode('utf-8')) ret = "" while not ret.endswith('\n'): ret += os.read(pin, 1) ret = int(ret.strip()) if ret != 0: - print "Error, bailing out." + print("\033[31mLast command returned %d; bailing out.\033[0m" % ret) sys.exit(-1) proc.stdin.close() proc.wait()