From 4dd02d449c3ee116e91a509a414a23d28f47dae9 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 18 Apr 2014 13:42:51 +0530 Subject: [PATCH] Use an explicit command to trnasition instead of relying a post checkout hook --- setup/git_post_checkout_hook.py | 66 ++++++++++++++++++++------------- 1 file changed, 40 insertions(+), 26 deletions(-) diff --git a/setup/git_post_checkout_hook.py b/setup/git_post_checkout_hook.py index 5af6f41da8..a223aaa720 100755 --- a/setup/git_post_checkout_hook.py +++ b/setup/git_post_checkout_hook.py @@ -11,29 +11,11 @@ import os, subprocess, sys, shutil prev_rev, current_rev, flags = [x.decode('utf-8') if isinstance(x, bytes) else x for x in sys.argv[1:]] def get_branch_name(rev): return subprocess.check_output(['git', 'name-rev', '--name-only', rev]).decode('utf-8').strip() +base = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) +os.chdir(base) if flags == '1': # A branch checkout - base = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) - os.chdir(base) - prev_branch, cur_branch = map(get_branch_name, (prev_rev, current_rev)) - is_qt5_transition = 'qt5' in (prev_branch, cur_branch) - print ('Transitioning from', prev_branch, 'to', cur_branch) - - if is_qt5_transition: - # Remove compiled .ui files as they must be re-generated - for dirpath, dirnames, filenames in os.walk('.'): - for f in filenames: - if f.endswith('_ui.py'): - os.remove(os.path.join(dirpath, f)) - - # Rebuild PyQt extensions - if not os.path.exists('.git/rebase-merge'): # Dont rebuild if we are rebasing - for ext in ('progress_indicator',): - extdir = os.path.join('build', 'pyqt', ext) - if os.path.exists(extdir): - shutil.rmtree(extdir) - subprocess.check_call(['python', 'setup.py', 'build', '--only', ext]) subprocess.check_call(['python', 'setup.py', 'gui', '--summary']) @@ -43,11 +25,43 @@ if flags == '1': # A branch checkout fpath = os.path.join(dirpath, f) if f.endswith('.pyc'): os.remove(fpath) - elif cur_branch == 'qt5' and f.endswith('.py') and 'qtcurve' not in fpath and (b'PyQt' + b'4') in open(fpath, 'rb').read(): - red = ('\033[%dm'%31).encode('ascii') - reset = ('\033[%dm'%31).encode('ascii') - sys.stdout.write(red) - print ('\nPyQt' + '4 present in:', fpath) - sys.stdout.write(reset) + +elif flags in ('master', 'qt5'): + cur_branch = get_branch_name('HEAD') + next_branch = flags + if cur_branch == next_branch: + print ('Already on branch', next_branch, file=sys.stderr) + raise SystemExit(1) + is_qt5_transition = 'qt5' in (next_branch, cur_branch) + print ('Transitioning from', cur_branch, 'to', next_branch) + + if is_qt5_transition: + # Remove compiled .ui files as they must be re-generated + for dirpath, dirnames, filenames in os.walk('.'): + for f in filenames: + if f.endswith('_ui.py'): + os.remove(os.path.join(dirpath, f)) + + subprocess.check_call(['git', 'checkout', next_branch]) + + if is_qt5_transition: + # Rebuild PyQt extensions + if not os.path.exists('.git/rebase-merge'): # Dont rebuild if we are rebasing + for ext in ('progress_indicator',): + extdir = os.path.join('build', 'pyqt', ext) + if os.path.exists(extdir): + shutil.rmtree(extdir) + subprocess.check_call(['python', 'setup.py', 'build', '--only', ext]) + + if next_branch == 'qt5': + for dirpath, dirnames, filenames in os.walk('.'): + for f in filenames: + fpath = os.path.join(dirpath, f) + if f.endswith('.py') and 'qtcurve' not in fpath and (b'PyQt' + b'4') in open(fpath, 'rb').read(): + red = ('\033[%dm'%31).encode('ascii') + reset = ('\033[%dm'%31).encode('ascii') + sys.stdout.write(red) + print ('\nPyQt' + '4 present in:', fpath) + sys.stdout.write(reset)