The branch, master has been updated via 37350027 Some improvements to the release mechanism from d47a80c0 Move the CSUM defines.
https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 37350027514026d410515e90fe7d94b8444c95c1 Author: Wayne Davison <wa...@opencoder.net> Date: Tue Jun 2 12:43:38 2020 -0700 Some improvements to the release mechanism - Some manpage changes to make them more consistent and to add a section that the release script expects in rsync-ssl. - Fixed some issues in release-rsync pertaining to various file changes, such as the .md file changes. - Change the gpg handling to stop prompting for a passphrase since gpg now makes use of gpg-agent (and the old gpg script is apparently not passing through fd 2 that git needs to get status). ----------------------------------------------------------------------- Summary of changes: OLDNEWS.md | 2 +- packaging/bin/gpg | 6 ----- packaging/release-rsync | 71 +++++++++++++++++-------------------------------- rsync-ssl.yo | 31 +++++++++++++++++++++ rsync.yo | 2 +- rsyncd.conf.yo | 4 +-- 6 files changed, 59 insertions(+), 57 deletions(-) delete mode 100755 packaging/bin/gpg Changeset truncated at 500 lines: diff --git a/OLDNEWS.md b/OLDNEWS.md index 717ff18b..6cde4f45 100644 --- a/OLDNEWS.md +++ b/OLDNEWS.md @@ -3794,7 +3794,7 @@ Protocol: 25 (changed) | RELEASE DATE | VER. | DATE OF COMMIT\* | PROTOCOL | |--------------|--------|------------------|-------------| -| ?? May 2020 | 3.2.0 | | ?? | +| ?? Jun 2020 | 3.2.0 | | ?? | | 28 Jan 2018 | 3.1.3 | | 31 | | 21 Dec 2015 | 3.1.2 | | 31 | | 22 Jun 2014 | 3.1.1 | | 31 | diff --git a/packaging/bin/gpg b/packaging/bin/gpg deleted file mode 100755 index e5d8f476..00000000 --- a/packaging/bin/gpg +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -e -# This script gets git to run gpg with a --passphrase-file option. - -PATH=`echo $PATH | sed 's/^[^:]*://'` - -gpg --batch --passphrase-file=$GPG_PASSFILE "${@}" diff --git a/packaging/release-rsync b/packaging/release-rsync index 8c84f848..fbfd83d3 100755 --- a/packaging/release-rsync +++ b/packaging/release-rsync @@ -5,7 +5,7 @@ # the git repository in the current directory will be updated, and the local # ~/samba-rsync-ftp dir will be ready to be rsynced to samba.org. -import os, sys, re, argparse, glob, shutil, atexit, signal +import os, sys, re, argparse, glob, shutil, signal from datetime import datetime from getpass import getpass @@ -14,7 +14,6 @@ sys.path = ['packaging'] + sys.path from pkglib import * dest = os.environ['HOME'] + '/samba-rsync-ftp' -passfile = os.environ['HOME'] + '/.rsyncpass' ORIGINAL_PATH = os.environ['PATH'] MAKE_GEN_CMDS = [ 'make -f prepare-source.mak conf'.split(), @@ -31,7 +30,6 @@ def main(): curdir = os.getcwd() - atexit.register(remove_passfile) signal.signal(signal.SIGINT, signal_handler) extra_files = get_extra_files() @@ -60,7 +58,7 @@ def main(): confversion = get_configure_version() # All version values are strings! - last_version, last_protocol_version = get_OLDNEWS_version_info() + lastversion, last_protocol_version = get_OLDNEWS_version_info() protocol_version, subprotocol_version = get_protocol_versions() version = confversion @@ -117,7 +115,7 @@ def main(): finalversion = re.sub(r'pre\d+', '', version) if protocol_version == last_protocol_version: proto_changed = 'unchanged' - proto_change_date = "\t\t" + proto_change_date = ' ' * 11 else: proto_changed = 'changed' if finalversion in pdate: @@ -127,7 +125,7 @@ def main(): ans = input("On what date did the protocol change to {protocol_version} get checked in? (dd Mmm yyyy) ") if re.match(r'^\d\d \w\w\w \d\d\d\d$', ans): break - proto_change_date = ans + "\t" + proto_change_date = ans if 'pre' in lastversion: if not pre: @@ -208,9 +206,10 @@ About to: + f"Protocol: {protocol_version} ({proto_changed})") txt = replace_or_die(x_re, repl, txt, msg) elif fn == 'OLDNEWS.md': - x_re = re.compile(r'^(\t\S\S\s\S\S\S\s\d\d\d\d)(\t%s\t).*' % re.escape(finalversion), re.M) - repl = lambda m: (m[1] if pre else "\t" + ztoday) + m[2] + proto_change_date + protocol_version - txt = replace_or_die(x_re, repl, txt, f'Unable to find "?? ??? {year}\t{finalversion}" line in {fn}') + efv = re.escape(finalversion) + x_re = re.compile(r'^(\| )(\S{2} \S{3} \d{4})(\s+\|\s+%s\s+\| ).{11}(\s+\| )\S{2}(\s+\|+)$' % efv, re.M) + repl = lambda m: m[1] + (m[2] if pre else ztoday) + m[3] + proto_change_date + m[4] + protocol_version + m[5] + txt = replace_or_die(x_re, repl, txt, f'Unable to find "| ?? ??? {year} | {finalversion} | ... |" line in {fn}') else: die(f"Unrecognized file in tweak_files: {fn}") @@ -283,42 +282,25 @@ About to: """) ans = input("<Press Enter to continue> ") - # We want to use our passphrase-providing "gpg" script, so modify the PATH. - os.environ['PATH'] = f"{curdir}/packaging/bin:{ORIGINAL_PATH}" + # TODO: is there a better way to ensure that our passphrase is in the agent? + cmd_run("touch TeMp; gpg --sign TeMp; rm TeMp*") - while True: - passphrase = getpass("\nEnter your GPG pass-phrase: ") - - # Briefly create a temp file with the passphrase for git's tagging use. - oldmask = os.umask(0o077) - if os.path.lexists(passfile): - os.unlink(passfile) - with open(passfile, 'w', encoding='utf-8') as fh: - fh.write(passphrase + "\n") - os.umask(oldmask) - os.environ['GPG_PASSFILE'] = passfile + out = cmd_txt(f"git tag -s -m 'Version {version}.' {v_ver}", capture='combined') + print(out, end='') + if 'bad passphrase' in out or 'failed' in out: + die('Aborting') - out = cmd_txt(f"git tag -s -m 'Version {version}.' {v_ver}") + if os.path.isdir('patches/.git'): + out = cmd_txt(f"cd patches && git tag -s -m 'Version {version}.' {v_ver}", capture='combined') print(out, end='') - if 'bad passphrase' in out: - continue - if 'failed' in out: + if 'bad passphrase' in out or 'failed' in out: die('Aborting') - if os.path.isdir('patches/.git'): - out = cmd_txt(f"cd patches && git tag -s -m 'Version {version}.' {v_ver}") - print(out, end='') - if 'bad passphrase' in out or 'failed' in out: - die('Aborting') - - os.unlink(passfile) - break - os.environ['PATH'] = ORIGINAL_PATH # Extract the generated files from the old tar. tweaked_extra_files = [ f"{rsync_lastver}/{x}" for x in extra_files ] - cmd_chk(['tar', 'xzf', lasttar_file, *tweaked_extra_files]) + cmd_run(['tar', 'xzf', lasttar_file, *tweaked_extra_files]) os.rename(rsync_lastver, 'a') print(f"Creating {diff_file} ...") @@ -327,23 +309,23 @@ About to: cmd_chk(['rsync', '-a', *extra_files, 'b/']) sed_script = r's:^((---|\+\+\+) [ab]/[^\t]+)\t.*:\1:' # CAUTION: must not contain any single quotes! - cmd_chk(f"(git diff v{lastversion} {v_ver}; diff -upN a b | sed -r '{sed_script}') | gzip -9 >{diff_file}") + cmd_chk(f"(git diff v{lastversion} {v_ver} -- ':!.github'; diff -upN a b | sed -r '{sed_script}') | gzip -9 >{diff_file}") shutil.rmtree('a') os.rename('b', rsync_ver) print(f"Creating {srctar_file} ...") cmd_chk(f"git archive --format=tar --prefix={rsync_ver}/ {v_ver} | tar xf -") cmd_chk(f"support/git-set-file-times --quiet --prefix={rsync_ver}/") - cmd_chk(['fakeroot', 'tar', 'czf', srctar_file, rsync_ver]) + cmd_chk(['fakeroot', 'tar', 'czf', srctar_file, '--exclude=.github', rsync_ver]) shutil.rmtree(rsync_ver) print(f'Updating files in "{rsync_ver}/patches" dir ...') os.mkdir(rsync_ver, 0o755) os.mkdir(f"{rsync_ver}/patches", 0o755) - cmd_chk(f"packaging/patch-update --skip-check --branch={args.master_branch} --gen={rsync_ver}/patches") + cmd_chk(f"packaging/patch-update --skip-check --branch={args.master_branch} --gen={rsync_ver}/patches".split()) print(f"Creating {pattar_file} ...") - cmd_chk(f"fakeroot tar chzf {pattar_file} {rsync_ver}/patches") + cmd_chk(['fakeroot', 'tar', 'chzf', pattar_file, rsync_ver + '/patches']) shutil.rmtree(rsync_ver) print(f"Updating the other files in {dest} ...") @@ -361,7 +343,9 @@ About to: asc_fn = fn + '.asc' if os.path.lexists(asc_fn): os.unlink(asc_fn) - cmd_chk(['gpg', '--batch', '--passphrase-fd=0', '-ba', fn], input=passphrase) + res = cmd_run(['gpg', '--batch', '-ba', fn]) + if res.returncode != 0 and res.returncode != 2: + die("gpg signing failed") if not pre: for find in f'{dest}/rsync-*.gz {dest}/rsync-*.asc {dest}/rsync-*-NEWS.md {dest}/src-previews/rsync-*diffs.gz*'.split(): @@ -392,11 +376,6 @@ def replace_or_die(regex, repl, txt, die_msg): return regex.sub(repl, txt, 1) -def remove_passfile(): - if passfile and os.path.lexists(passfile): - os.unlink(passfile) - - def signal_handler(sig, frame): die("\nAborting due to SIGINT.") diff --git a/rsync-ssl.yo b/rsync-ssl.yo index c23b3798..29d311df 100644 --- a/rsync-ssl.yo +++ b/rsync-ssl.yo @@ -23,6 +23,10 @@ bf(rsync) manpage for more information on how it works. Note that the stunnel connection type requires at least version 4 of stunnel, which should be the case on modern systems. +This script requires that a helper script named bf(rsync-ssl-rsh) be installed +in the same directory as this bf(rsync-ssl) script so that rsync can use it as +its remote-shell command. + manpagesection(ENVIRONMENT VARIABLES) The ssl helper scripts are affected by the following environment variables: @@ -61,6 +65,33 @@ verb( rsync-ssl -aiv example.com::src/ dest) verb( rsync-ssl --type=openssl -aiv example.com::src/ dest) +manpagefiles() + +rsync-ssl-rsh + +manpageseealso() + +bf(rsync)(1), bf(rsyncd.conf)(5) + +manpagebugs() + +Please report bugs! See the web site at +url(http://rsync.samba.org/)(http://rsync.samba.org/) + +manpagesection(VERSION) + +This man page is current for version 3.1.3 of rsync. + +manpagesection(CREDITS) + +rsync is distributed under the GNU General Public License. See the file +COPYING for details. + +A WEB site is available at +url(http://rsync.samba.org/)(http://rsync.samba.org/). The site +includes an FAQ-O-Matic which may cover questions unanswered by this +manual page. + manpageauthor() This manpage was written by Wayne Davison. diff --git a/rsync.yo b/rsync.yo index 02481084..72812930 100644 --- a/rsync.yo +++ b/rsync.yo @@ -3634,7 +3634,7 @@ manpagefiles() manpageseealso() -bf(rsyncd.conf)(5) +bf(rsync-ssl)(1), bf(rsyncd.conf)(5) manpagebugs() diff --git a/rsyncd.conf.yo b/rsyncd.conf.yo index 08d198a1..d57d0277 100644 --- a/rsyncd.conf.yo +++ b/rsyncd.conf.yo @@ -1016,9 +1016,7 @@ manpagefiles() manpageseealso() -bf(rsync)(1) - -manpagediagnostics() +bf(rsync)(1), bf(rsync-ssl)(1) manpagebugs() -- The rsync repository. _______________________________________________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs