Port mkdist.py to Python 3

This commit is contained in:
William S Fulton 2019-04-08 18:35:32 +01:00
commit 320254eb14

View file

@ -1,15 +1,11 @@
#!/usr/bin/env python #!/usr/bin/env python
# This script builds a swig-x.y.z distribution.
# Usage: mkdist.py version branch, where version should be x.y.z and branch is normally 'master'
import sys import sys
import string
import os import os
import subprocess import subprocess
def failed(): def failed():
print "mkdist.py failed to complete" print("mkdist.py failed to complete")
sys.exit(2) sys.exit(2)
import argparse import argparse
@ -27,82 +23,81 @@ force_tag = args.force_tag
skip_checks = args.skip_checks skip_checks = args.skip_checks
if sys.version_info[0:2] < (2, 7): if sys.version_info[0:2] < (2, 7):
print "Error: Python 2.7 is required" print("Error: Python 2.7 or higher is required")
sys.exit(3) sys.exit(3)
# Check name matches normal unix conventions # Check name matches normal unix conventions
if string.lower(dirname) != dirname: if dirname.lower() != dirname:
print "directory name ("+dirname+") should be in lowercase" print("directory name (" + dirname + ") should be in lowercase")
sys.exit(3) sys.exit(3)
# If directory and tarball exist, remove it # If directory and tarball exist, remove it
print "Removing ", dirname print("Removing " + dirname)
os.system("rm -rf "+dirname) os.system("rm -rf " + dirname)
print "Removing "+dirname+".tar if exists" print("Removing " + dirname + ".tar if exists")
os.system("rm -f "+dirname+".tar.gz") os.system("rm -f " + dirname + ".tar.gz")
print "Removing "+dirname+".tar.gz if exists" print("Removing " + dirname + ".tar.gz if exists")
os.system("rm -f "+dirname+".tar") os.system("rm -f " + dirname + ".tar")
# Grab the code from git # Grab the code from git
print "Checking there are no local changes in git repo" print("Checking there are no local changes in git repo")
os.system("git remote update origin") == 0 or failed() os.system("git remote update origin") == 0 or failed()
command = ["git", "status", "--porcelain", "-uno"] command = ["git", "status", "--porcelain", "-uno"]
out = subprocess.check_output(command) out = subprocess.check_output(command)
if out.strip() != "": if out.strip() != "":
print "Local git repository has modifications" print("Local git repository has modifications")
print " ".join(command) print(" ".join(command))
print out print(out)
sys.exit(3) sys.exit(3)
if not skip_checks: if not skip_checks:
print "Checking git repository is in sync with remote repository" print("Checking git repository is in sync with remote repository")
command = ["git", "log", "--oneline", branch + "..origin/" + branch] command = ["git", "log", "--oneline", branch + "..origin/" + branch]
out = subprocess.check_output(command) out = subprocess.check_output(command)
if out.strip() != "": if out.strip() != "":
print "Remote repository has additional modifications to local repository" print("Remote repository has additional modifications to local repository")
print " ".join(command) print(" ".join(command))
print out print(out)
sys.exit(3) sys.exit(3)
command = ["git", "log", "--oneline", "origin/" + branch + ".." + branch] command = ["git", "log", "--oneline", "origin/" + branch + ".." + branch]
out = subprocess.check_output(command) out = subprocess.check_output(command)
if out.strip() != "": if out.strip() != "":
print "Local repository has modifications not pushed to the remote repository" print("Local repository has modifications not pushed to the remote repository")
print "These should be pushed and checked that they pass Continuous Integration testing before continuing" print("These should be pushed and checked that they pass Continuous Integration testing before continuing")
print " ".join(command) print(" ".join(command))
print out print(out)
sys.exit(3) sys.exit(3)
print "Tagging release" print("Tagging release")
tag = "'rel-" + version + "'" tag = "'rel-" + version + "'"
force = "-f " if force_tag else "" force = "-f " if force_tag else ""
print("force {}".format(force))
os.system("git tag -a -m " + tag + " " + force + tag) == 0 or failed() os.system("git tag -a -m " + tag + " " + force + tag) == 0 or failed()
outdir = os.path.basename(os.getcwd()) + "/" + dirname + "/" outdir = os.path.basename(os.getcwd()) + "/" + dirname + "/"
print "Grabbing tagged release git repository using 'git archive' into " + outdir print("Grabbing tagged release git repository using 'git archive' into " + outdir)
os.system("(cd .. && git archive --prefix=" + outdir + " " + tag + " . | tar -xf -)") == 0 or failed() os.system("(cd .. && git archive --prefix=" + outdir + " " + tag + " . | tar -xf -)") == 0 or failed()
# Go build the system # Go build the system
print "Building system" print("Building system")
os.system("cd "+dirname+" && ./autogen.sh") == 0 or failed() os.system("cd " + dirname + " && ./autogen.sh") == 0 or failed()
os.system("cd "+dirname+"/Source/CParse && bison -y -d parser.y && mv y.tab.c parser.c && mv y.tab.h parser.h") == 0 or failed() os.system("cd " + dirname + "/Source/CParse && bison -y -d parser.y && mv y.tab.c parser.c && mv y.tab.h parser.h") == 0 or failed()
os.system("cd "+dirname+" && make -f Makefile.in libfiles srcdir=./") == 0 or failed() os.system("cd " + dirname + " && make -f Makefile.in libfiles srcdir=./") == 0 or failed()
# Remove autoconf files # Remove autoconf files
os.system("find "+dirname+" -name autom4te.cache -exec rm -rf {} \\;") os.system("find " + dirname + " -name autom4te.cache -exec rm -rf {} \\;")
# Build documentation # Build documentation
print "Building html documentation" print("Building html documentation")
os.system("cd "+dirname+"/Doc/Manual && make all clean-baks") == 0 or failed() os.system("cd " + dirname + "/Doc/Manual && make all clean-baks") == 0 or failed()
# Build the tar-ball # Build the tar-ball
os.system("tar -cf "+dirname+".tar "+dirname) == 0 or failed() os.system("tar -cf " + dirname + ".tar " + dirname) == 0 or failed()
os.system("gzip "+dirname+".tar") == 0 or failed() os.system("gzip " + dirname + ".tar") == 0 or failed()
print "Finished building "+dirname+".tar.gz" print("Finished building " + dirname + ".tar.gz")