summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWayne Davison <wayne@opencoder.net>2020-06-27 12:06:13 -0700
committerWayne Davison <wayne@opencoder.net>2020-06-27 17:59:04 -0700
commit0eec25f75b044b00d3ba9ac445402b130c694ccb (patch)
tree0eca2158c20d0488e0c55a649b48c15c5766ebce
parent3a6f06003cdd29e9385dba3a9673122e0e356c76 (diff)
downloadrsync-0eec25f75b044b00d3ba9ac445402b130c694ccb.tar.gz
Some patch-update & vim ft improvements
- Stash off some gen files when switching patch branches. - Set the filetype in "env -S" files that vim can't handle.
-rw-r--r--.gitignore1
-rwxr-xr-xpackaging/branch-from-patch2
-rwxr-xr-xpackaging/patch-update42
-rwxr-xr-xpackaging/release-rsync2
-rwxr-xr-xpackaging/var-checker2
5 files changed, 44 insertions, 5 deletions
diff --git a/.gitignore b/.gitignore
index 70061765..62cf9a54 100644
--- a/.gitignore
+++ b/.gitignore
@@ -49,4 +49,5 @@ aclocal.m4
/testsuite/xattrs-hlink.test
/patches
/SaVeDiR
+/.gen-stash
.deps
diff --git a/packaging/branch-from-patch b/packaging/branch-from-patch
index dfd3a29a..440b5835 100755
--- a/packaging/branch-from-patch
+++ b/packaging/branch-from-patch
@@ -171,4 +171,4 @@ if __name__ == '__main__':
args = parser.parse_args()
main()
-# vim: sw=4 et
+# vim: sw=4 et ft=python
diff --git a/packaging/patch-update b/packaging/patch-update
index c6b51527..0970d299 100755
--- a/packaging/patch-update
+++ b/packaging/patch-update
@@ -31,6 +31,10 @@ def main():
starting_branch, args.base_branch = check_git_state(args.base_branch, not args.skip_check, args.patches_dir)
+ gen_stash(starting_branch)
+ if starting_branch == 'master':
+ cmd_run('md5sum configure.ac >.gen-stash/configure.ac.sum')
+
master_commit = latest_git_hash(args.base_branch)
if args.gen:
@@ -95,6 +99,8 @@ def main():
time.sleep(1)
cmd_chk(['git', 'checkout', starting_branch])
+ gen_unstash(starting_branch)
+
def update_patch(patch):
global last_touch
@@ -115,13 +121,16 @@ def update_patch(patch):
while args.gen and last_touch >= time.time():
time.sleep(1)
- s = cmd_run(f"git checkout patch/{args.base_branch}/{patch}".split())
+
+ branch = f"patch/{args.base_branch}/{patch}"
+ s = cmd_run(['git', 'checkout', branch])
if s.returncode != 0:
return 0
s = cmd_run(['git', 'merge', based_on])
ok = s.returncode == 0
if not ok or args.shell:
+ gen_unstash(branch)
m = re.search(r'([^/]+)$', parent)
parent_dir = m[1]
if not ok:
@@ -138,6 +147,7 @@ def update_patch(patch):
if is_clean:
break
print(status_txt, end='')
+ gen_stash(branch)
with open(f"{args.patches_dir}/{patch}.diff", 'w', encoding='utf-8') as fh:
fh.write(description[patch])
@@ -191,6 +201,34 @@ def update_patch(patch):
return 1
+# The autoconf cache dir can totally mess up if 2 different *.ac files have the same mtime!
+def gen_stash_prep(branch):
+ if os.path.isdir('autom4te.cache'):
+ shutil.rmtree('autom4te.cache')
+ return '.gen-stash/' + branch.replace('/', '%') + '.tar.gz'
+
+
+def gen_stash(branch):
+ files = 'configure.sh config.h.in Makefile'.split()
+ for fn in files:
+ if not os.path.exists(fn):
+ return
+ if not os.path.isdir('.gen-stash'):
+ os.mkdir('.gen-stash', 0o700)
+ tar_fn = gen_stash_prep(branch)
+ cmd_run(['./prepare-source'])
+ cmd_chk(['tar', 'czf', tar_fn, *files])
+
+
+def gen_unstash(branch):
+ tar_fn = gen_stash_prep(branch)
+ if os.path.exists(tar_fn):
+ cmd_chk(['tar', 'xf', tar_fn])
+ out, rc = cmd_txt_status('md5sum --status -c .gen-stash/configure.ac.sum'.split())
+ if rc:
+ print('*' * 10, "configure.ac differs from master version", '*' * 10)
+
+
if __name__ == '__main__':
parser = argparse.ArgumentParser(description="Turn a git branch back into a diff files in the patches dir.", add_help=False)
parser.add_argument('--branch', '-b', dest='base_branch', metavar='BASE_BRANCH', default='master', help="The branch the patch is based on. Default: master.")
@@ -207,4 +245,4 @@ if __name__ == '__main__':
args.patches_dir = args.gen
main()
-# vim: sw=4 et
+# vim: sw=4 et ft=python
diff --git a/packaging/release-rsync b/packaging/release-rsync
index 3afa79bd..2ae5eb4c 100755
--- a/packaging/release-rsync
+++ b/packaging/release-rsync
@@ -381,4 +381,4 @@ if __name__ == '__main__':
args = parser.parse_args()
main()
-# vim: sw=4 et
+# vim: sw=4 et ft=python
diff --git a/packaging/var-checker b/packaging/var-checker
index e021127c..fe7491df 100755
--- a/packaging/var-checker
+++ b/packaging/var-checker
@@ -84,4 +84,4 @@ if __name__ == '__main__':
args = parser.parse_args()
main()
-# vim: sw=4 et
+# vim: sw=4 et ft=python