mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-21 13:37:56 +00:00
parallel: rsync version 3.2.7 support.
This commit is contained in:
parent
d53a4b044c
commit
bbfb4a8d4e
19
doc/haikus
19
doc/haikus
|
@ -4,7 +4,26 @@
|
|||
|
||||
Quote of the month:
|
||||
|
||||
Recently learned how to use GNU parallel (from ChatGPT, no less!) and I've gone mad with power
|
||||
-- Mark, Anthropomorphic Anuran @reject_resubmit@twitter
|
||||
|
||||
gnu parallel is actually like. really easy
|
||||
-- tom (era) @slimefiend@twitter
|
||||
|
||||
GNU parallel is magic, half of my work uses it, to the point where they're referenced and thanked in my thesis
|
||||
-- Best Catboy Key Grip @alamogordoglass@twitter
|
||||
|
||||
Love to make a dual processor workstation absolutely whir running dozens of analysis scripts at once
|
||||
-- Best Catboy Key Grip @alamogordoglass@twitter
|
||||
|
||||
i really didn't expect it to be as simple as it is, took me all of 5 minutes to implement and the results are exactly what i wanted
|
||||
|
||||
gnu parallel babey, it's really simple actually lol
|
||||
-- tom (era) @slimefiend@twitter
|
||||
|
||||
GNU parallel is your friend. Unleash your cores! #GNU
|
||||
-- Blake L @BlakeDL@twitter
|
||||
|
||||
|
||||
--line-buffer, a flag
|
||||
parallel, now more precise
|
||||
|
|
|
@ -262,9 +262,9 @@ from:tange@gnu.org
|
|||
to:parallel@gnu.org, bug-parallel@gnu.org
|
||||
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
|
||||
|
||||
Subject: GNU Parallel 20230222 ('Gaziantep') released
|
||||
Subject: GNU Parallel 20230322 ('Grækenland Larissa tog/Tiktok?') released
|
||||
|
||||
GNU Parallel 20230222 ('Gaziantep') has been released. It is available for download at: lbry://@GnuParallel:4
|
||||
GNU Parallel 20230322 ('<<>>') has been released. It is available for download at: lbry://@GnuParallel:4
|
||||
|
||||
Quote of the month:
|
||||
|
||||
|
|
53
src/parallel
53
src/parallel
|
@ -5876,9 +5876,6 @@ sub citation() {
|
|||
"https://lists.gnu.org/archive/html/parallel/2013-11/msg00006.html",
|
||||
"https://www.gnu.org/software/parallel/parallel_design.html#citation-notice",
|
||||
"https://git.savannah.gnu.org/cgit/parallel.git/tree/doc/citation-notice-faq.txt",
|
||||
"",
|
||||
"If you send a copy of your published article to tange\@gnu.org, it will be",
|
||||
"mentioned in the release notes of next version of GNU Parallel.",
|
||||
""
|
||||
);
|
||||
while(not grep { -e "$_/will-cite" } @Global::config_dirs) {
|
||||
|
@ -8833,15 +8830,17 @@ sub rsync_transfer_cmd($) {
|
|||
}
|
||||
|
||||
{
|
||||
my $rsync_protocol;
|
||||
my $rsync_fix;
|
||||
my $rsync_version;
|
||||
|
||||
sub rsync($) {
|
||||
sub rsync_protocol {
|
||||
# rsync 3.1.x uses protocol 31 which is unsupported by 2.5.7.
|
||||
# If the version >= 3.1.0: downgrade to protocol 30
|
||||
# Returns:
|
||||
# $rsync = "rsync" or "rsync --protocol 30"
|
||||
if(not $rsync_protocol) {
|
||||
# rsync 3.1.x uses protocol 31 which is unsupported by 2.5.7.
|
||||
# If the version >= 3.1.0: downgrade to protocol 30
|
||||
# rsync 3.2.4 introduces a quoting bug: Add --old-args for that
|
||||
# Returns:
|
||||
# $rsync = "rsync" or "rsync --protocol 30 --old-args"
|
||||
sub rsync_version {
|
||||
if(not $rsync_version) {
|
||||
my @out = `rsync --version`;
|
||||
if(not @out) {
|
||||
if(::which("rsync")) {
|
||||
|
@ -8854,23 +8853,37 @@ sub rsync_transfer_cmd($) {
|
|||
for (@out) {
|
||||
# rsync version 3.1.3 protocol version 31
|
||||
# rsync version v3.2.3 protocol version 31
|
||||
if(/version v?(\d+.\d+)(.\d+)?/) {
|
||||
if($1 >= 3.1) {
|
||||
# Version 3.1.0 or later: Downgrade to protocol 30
|
||||
$rsync_protocol = "rsync --protocol 30";
|
||||
} else {
|
||||
$rsync_protocol = "rsync";
|
||||
}
|
||||
if(/version v?(\d+)\.(\d+)(\.(\d+))?/) {
|
||||
# 3.2.27 => 03.0227
|
||||
$rsync_version = sprintf "%02d.%02d%02d",$1,$2,$4;
|
||||
}
|
||||
}
|
||||
$rsync_protocol or
|
||||
$rsync_version or
|
||||
::die_bug("Cannot figure out version of rsync: @out");
|
||||
}
|
||||
return $rsync_protocol;
|
||||
}
|
||||
|
||||
sub rsync_fixup {
|
||||
# rsync 3.1.x uses protocol 31 which is unsupported by 2.5.7.
|
||||
# If the version >= 3.1.0: downgrade to protocol 30
|
||||
# Returns:
|
||||
# $rsync = "rsync" or "rsync --protocol 30"
|
||||
if(not $rsync_fix) {
|
||||
rsync_version();
|
||||
if($rsync_version >= 3.01) {
|
||||
# Version 3.1.0 or later: Downgrade to protocol 30
|
||||
$rsync_fix .= " --protocol 30";
|
||||
}
|
||||
if($rsync_version >= 3.0204) {
|
||||
# Version 3.2.4 .. 3.2.8: --old-args
|
||||
$rsync_fix .= " --old-args";
|
||||
}
|
||||
}
|
||||
return $rsync_fix;
|
||||
}
|
||||
my $self = shift;
|
||||
|
||||
return rsync_protocol()." ".$ENV{'PARALLEL_RSYNC_OPTS'}.
|
||||
return "rsync".rsync_fixup()." ".$ENV{'PARALLEL_RSYNC_OPTS'}.
|
||||
" -e".::Q($self->sshcmd());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,6 +21,27 @@ par_z_sshloginfile() {
|
|||
rm -f "$tmp"
|
||||
}
|
||||
|
||||
par__test_different_rsync_versions() {
|
||||
echo '### different versions of rsync need fixups'
|
||||
echo '### no output is good'
|
||||
doit() {
|
||||
rm -f 'a`b`c\<d\$e\{#\}g\"h\ i'$2 'a`b`c\<d\$e\{#\}g\"h\ i'$2.out
|
||||
touch 'a`b`c\<d\$e\{#\}g\"h\ i'$2
|
||||
TMPDIR=/tmp tmp=$(mktemp -d)
|
||||
(
|
||||
echo "#!/bin/bash"
|
||||
echo $1' "$@"'
|
||||
) > "$tmp"/rsync
|
||||
chmod +x "$tmp"/rsync
|
||||
PATH="$tmp":"$PATH"
|
||||
parallel --trc {}.out -S sh@lo cp {} {}.out ::: 'a`b`c\<d\$e\{#\}g\"h\ i'$2
|
||||
rm 'a`b`c\<d\$e\{#\}g\"h\ i'$2 'a`b`c\<d\$e\{#\}g\"h\ i'$2.out
|
||||
rm -rf "$tmp"
|
||||
}
|
||||
export -f doit
|
||||
stdout parallel --tagstring {/} -k doit {} {/} ::: /usr/local/bin/rsync-v*
|
||||
}
|
||||
|
||||
par_--nonall_results() {
|
||||
echo '### --results --onall'
|
||||
tmp="$TMPDIR"/onall
|
||||
|
|
Loading…
Reference in a new issue