mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-22 05:57:54 +00:00
parallel: Fixed: --filter-hosts and -0.
This commit is contained in:
parent
63bfd1b9dc
commit
f485a24df3
38
src/parallel
38
src/parallel
|
@ -2219,9 +2219,7 @@ sub parse_options(@) {
|
||||||
$Global::cache_replacement_eval = 0;
|
$Global::cache_replacement_eval = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(defined $opt::interactive) {
|
if(defined $opt::interactive) { $Global::interactive = $opt::interactive; }
|
||||||
$Global::interactive = $opt::interactive;
|
|
||||||
}
|
|
||||||
if(defined $opt::quote) { $Global::quoting = 1; }
|
if(defined $opt::quote) { $Global::quoting = 1; }
|
||||||
if(defined $opt::r) { $Global::ignore_empty = 1; }
|
if(defined $opt::r) { $Global::ignore_empty = 1; }
|
||||||
if(defined $opt::verbose) { $Global::stderr_verbose = 1; }
|
if(defined $opt::verbose) { $Global::stderr_verbose = 1; }
|
||||||
|
@ -2329,8 +2327,7 @@ sub parse_options(@) {
|
||||||
$opt::memsuspend = multiply_binary_prefix($opt::memsuspend);
|
$opt::memsuspend = multiply_binary_prefix($opt::memsuspend);
|
||||||
$Global::memlimit = $opt::memsuspend + $opt::memfree;
|
$Global::memlimit = $opt::memsuspend + $opt::memfree;
|
||||||
check_invalid_option_combinations();
|
check_invalid_option_combinations();
|
||||||
if((defined $opt::fifo or defined $opt::cat)
|
if((defined $opt::fifo or defined $opt::cat) and not $opt::pipepart) {
|
||||||
and not $opt::pipepart) {
|
|
||||||
$opt::pipe = 1;
|
$opt::pipe = 1;
|
||||||
}
|
}
|
||||||
if(defined $opt::minversion) {
|
if(defined $opt::minversion) {
|
||||||
|
@ -2661,7 +2658,7 @@ sub check_invalid_option_combinations() {
|
||||||
|
|
||||||
sub init_globals() {
|
sub init_globals() {
|
||||||
# Defaults:
|
# Defaults:
|
||||||
$Global::version = 20220622;
|
$Global::version = 20220722;
|
||||||
$Global::progname = 'parallel';
|
$Global::progname = 'parallel';
|
||||||
$::name = "GNU Parallel";
|
$::name = "GNU Parallel";
|
||||||
$Global::infinity = 2**31;
|
$Global::infinity = 2**31;
|
||||||
|
@ -2789,7 +2786,9 @@ sub init_globals() {
|
||||||
# no warnings to allow for undefined $XDG_*
|
# no warnings to allow for undefined $XDG_*
|
||||||
no warnings 'uninitialized';
|
no warnings 'uninitialized';
|
||||||
# If $PARALLEL_HOME is set, but does not exist, try making it.
|
# If $PARALLEL_HOME is set, but does not exist, try making it.
|
||||||
eval { File::Path::mkpath($ENV{'PARALLEL_HOME'}); };
|
if(defined $ENV{'PARALLEL_HOME'}) {
|
||||||
|
eval { File::Path::mkpath($ENV{'PARALLEL_HOME'}); };
|
||||||
|
}
|
||||||
# $xdg_config_home is needed to make env_parallel.fish stop complaining
|
# $xdg_config_home is needed to make env_parallel.fish stop complaining
|
||||||
my $xdg_config_home = $ENV{'XDG_CONFIG_HOME'};
|
my $xdg_config_home = $ENV{'XDG_CONFIG_HOME'};
|
||||||
# config_dirs = $PARALLEL_HOME, $XDG_CONFIG_HOME/parallel,
|
# config_dirs = $PARALLEL_HOME, $XDG_CONFIG_HOME/parallel,
|
||||||
|
@ -5032,6 +5031,8 @@ sub parallelized_host_filtering() {
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
close $in;
|
close $in;
|
||||||
|
# If -0: $/ must be \n
|
||||||
|
local $/ = "\n";
|
||||||
for(<$host_fh>) {
|
for(<$host_fh>) {
|
||||||
# TODO incompatible with '-quoting. Needs to be fixed differently
|
# TODO incompatible with '-quoting. Needs to be fixed differently
|
||||||
#if(/\'$/) {
|
#if(/\'$/) {
|
||||||
|
@ -5534,8 +5535,8 @@ sub usage() {
|
||||||
"If you use programs that use GNU Parallel to process data for an article in a",
|
"If you use programs that use GNU Parallel to process data for an article in a",
|
||||||
"scientific publication, please cite:",
|
"scientific publication, please cite:",
|
||||||
"",
|
"",
|
||||||
" Tange, O. (2022, June 22). GNU Parallel 20220622 ('Bongbong').",
|
" Tange, O. (2022, July 22). GNU Parallel 20220722 ('Roe vs Wade').",
|
||||||
" Zenodo. https://doi.org/10.5281/zenodo.6682930",
|
" Zenodo. https://doi.org/10.5281/zenodo.6891516",
|
||||||
"",
|
"",
|
||||||
# Before changing these lines, please read
|
# Before changing these lines, please read
|
||||||
# https://www.gnu.org/software/parallel/parallel_design.html#citation-notice
|
# https://www.gnu.org/software/parallel/parallel_design.html#citation-notice
|
||||||
|
@ -5567,8 +5568,8 @@ sub citation_notice() {
|
||||||
"If you use programs that use GNU Parallel to process data for an article in a",
|
"If you use programs that use GNU Parallel to process data for an article in a",
|
||||||
"scientific publication, please cite:",
|
"scientific publication, please cite:",
|
||||||
"",
|
"",
|
||||||
" Tange, O. (2022, June 22). GNU Parallel 20220622 ('Bongbong').",
|
" Tange, O. (2022, July 22). GNU Parallel 20220722 ('Roe vs Wade').",
|
||||||
" Zenodo. https://doi.org/10.5281/zenodo.6682930",
|
" Zenodo. https://doi.org/10.5281/zenodo.6891516",
|
||||||
"",
|
"",
|
||||||
# Before changing these line, please read
|
# Before changing these line, please read
|
||||||
# https://www.gnu.org/software/parallel/parallel_design.html#citation-notice and
|
# https://www.gnu.org/software/parallel/parallel_design.html#citation-notice and
|
||||||
|
@ -5695,20 +5696,20 @@ sub citation() {
|
||||||
"If you use programs that use GNU Parallel to process data for an article in a",
|
"If you use programs that use GNU Parallel to process data for an article in a",
|
||||||
"scientific publication, please cite:",
|
"scientific publication, please cite:",
|
||||||
"",
|
"",
|
||||||
"\@software{tange_2022_6682930,",
|
"\@software{tange_2022_6891516,",
|
||||||
" author = {Tange, Ole},",
|
" author = {Tange, Ole},",
|
||||||
" title = {GNU Parallel 20220622 ('Bongbong')},",
|
" title = {GNU Parallel 20220722 ('Roe vs Wade')},",
|
||||||
" month = Jun,",
|
" month = Jul,",
|
||||||
" year = 2022,",
|
" year = 2022,",
|
||||||
" note = {{GNU Parallel is a general parallelizer to run",
|
" note = {{GNU Parallel is a general parallelizer to run",
|
||||||
" multiple serial command line programs in parallel",
|
" multiple serial command line programs in parallel",
|
||||||
" without changing them.}},",
|
" without changing them.}},",
|
||||||
" publisher = {Zenodo},",
|
" publisher = {Zenodo},",
|
||||||
" doi = {10.5281/zenodo.6682930},",
|
" doi = {10.5281/zenodo.6891516},",
|
||||||
" url = {https://doi.org/10.5281/zenodo.6682930}",
|
" url = {https://doi.org/10.5281/zenodo.6891516}",
|
||||||
"}",
|
"}",
|
||||||
"",
|
"",
|
||||||
"(Feel free to use \\nocite{tange_2022_6682930})",
|
"(Feel free to use \\nocite{tange_2022_6891516})",
|
||||||
"",
|
"",
|
||||||
# Before changing these lines, please read
|
# Before changing these lines, please read
|
||||||
# https://www.gnu.org/software/parallel/parallel_design.html#citation-notice and
|
# https://www.gnu.org/software/parallel/parallel_design.html#citation-notice and
|
||||||
|
@ -12887,6 +12888,7 @@ sub max_length($) {
|
||||||
my $len_cache = $Global::cache_dir . "/tmp/sshlogin/" . ::hostname() .
|
my $len_cache = $Global::cache_dir . "/tmp/sshlogin/" . ::hostname() .
|
||||||
"/linelen";
|
"/linelen";
|
||||||
my $cached_limit;
|
my $cached_limit;
|
||||||
|
local $/ = undef;
|
||||||
if(open(my $fh, "<", $len_cache)) {
|
if(open(my $fh, "<", $len_cache)) {
|
||||||
$cached_limit = <$fh>;
|
$cached_limit = <$fh>;
|
||||||
$cached_limit || ::die_bug("Cannot read $len_cache");
|
$cached_limit || ::die_bug("Cannot read $len_cache");
|
||||||
|
@ -13438,7 +13440,7 @@ sub nest_get($) {
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(not $dos_crnl_determined and not $opt::d) {
|
if(not $dos_crnl_determined and not defined $opt::d) {
|
||||||
# Warn if input has CR-NL and -d is not set
|
# Warn if input has CR-NL and -d is not set
|
||||||
if($arg =~ /\r$/) {
|
if($arg =~ /\r$/) {
|
||||||
$cr_count++;
|
$cr_count++;
|
||||||
|
|
|
@ -209,6 +209,16 @@ par_PARALLEL_SSHLOGIN_SSHHOST() {
|
||||||
LANG=C sort
|
LANG=C sort
|
||||||
}
|
}
|
||||||
|
|
||||||
|
par_d_filter_hosts() {
|
||||||
|
echo '### --filter-hosts and -0'
|
||||||
|
echo '### https://lists.gnu.org/archive/html/parallel/2022-07/msg00002.html'
|
||||||
|
printf 'OKa OKb ' | parallel -k -d ' ' --filter-hosts -S lo echo
|
||||||
|
printf 'OKa1OKb1' | parallel -k -d 1 --filter-hosts -S lo echo
|
||||||
|
printf 'OKa0OKb0' | parallel -k -d 0 --filter-hosts -S lo echo
|
||||||
|
printf 'OKa\0OKb\0' | parallel -k -d '\0' --filter-hosts -S lo echo
|
||||||
|
printf 'OKa\0OKb\0' | parallel -k -0 --filter-hosts -S lo echo
|
||||||
|
}
|
||||||
|
|
||||||
export -f $(compgen -A function | grep par_)
|
export -f $(compgen -A function | grep par_)
|
||||||
#compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1'
|
#compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1'
|
||||||
#compgen -A function | grep par_ | sort |
|
#compgen -A function | grep par_ | sort |
|
||||||
|
|
|
@ -100,6 +100,18 @@ par_fish_embed Not implemented
|
||||||
par_env_parallel_big_env ### bug #54128: command too long when exporting big env
|
par_env_parallel_big_env ### bug #54128: command too long when exporting big env
|
||||||
par_env_parallel_big_env should not fail
|
par_env_parallel_big_env should not fail
|
||||||
par_env_parallel_big_env OK
|
par_env_parallel_big_env OK
|
||||||
|
par_d_filter_hosts ### --filter-hosts and -0
|
||||||
|
par_d_filter_hosts ### https://lists.gnu.org/archive/html/parallel/2022-07/msg00002.html
|
||||||
|
par_d_filter_hosts OKa
|
||||||
|
par_d_filter_hosts OKb
|
||||||
|
par_d_filter_hosts OKa
|
||||||
|
par_d_filter_hosts OKb
|
||||||
|
par_d_filter_hosts OKa
|
||||||
|
par_d_filter_hosts OKb
|
||||||
|
par_d_filter_hosts OKa
|
||||||
|
par_d_filter_hosts OKb
|
||||||
|
par_d_filter_hosts OKa
|
||||||
|
par_d_filter_hosts OKb
|
||||||
par_csh_embed Not implemented
|
par_csh_embed Not implemented
|
||||||
par_bash_embed --embed
|
par_bash_embed --embed
|
||||||
par_bash_embed Redirect the output to a file and add your changes at the end:
|
par_bash_embed Redirect the output to a file and add your changes at the end:
|
||||||
|
|
Loading…
Reference in a new issue