Re: hyphens (-) and underscores (_) are not treated as equivalent with completion-map-case and completion-ignore-case enabled

2021-01-19 Thread Chet Ramey

On 1/19/21 8:30 AM, aw...@cdak.net wrote:


Bash Version: 5.1
Patch Level: 4
Release Status: release

Description:

man bash says:
 > completion-map-case (Off)
 > If set to On, and completion-ignore-case is enabled, readline treats 
hyphens (-) and underscores (_) as equivalent when performing 
case-insensitive filename matching and completion.


$ bind -v|grep case
set completion-ignore-case on
set completion-map-case on


Repeat-By:

So it should be enabled and when I type

$ touch _test
$ chmod +x -t

it completes to

$ chmod +x _test

But neither

$ ./-t
$ ls -t

complete.

If I turn off progcomp with `shopt -u progcomp` (as suggested here 
https://unix.stackexchange.com/questions/629844/bash-completion) it allows 
the `ls` example to complete but not the other.


Thanks for the report. Those two options work for filename completion, but
not command completion (the bulk of which is handled outside readline).
I'll take a look at exposing that functionality outside readline, since
it's currently part of readline's filename completion, but that will take
some time and probably require a version bump.

--
``The lyf so short, the craft so long to lerne.'' - Chaucer
 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRUc...@case.eduhttp://tiswww.cwru.edu/~chet/



Re: Parallel make race in 5.1

2021-01-19 Thread Chet Ramey

On 1/19/21 9:19 AM, Richard Purdie wrote:

Hi,

In bash 5.1 we're seeing a parallel make race during build, as found a
couple of times in our automated CI for Yocto Project:


Thanks for the report. Interesting. I haven't seen this one either.


The issue is around pipesize.h which in 5.1 can be built by two
different triggers, builtins/ulimit.o or redir.o.

They can race against each other and rewrite files causing the above
failure.


I suppose that workaround will do, since it should only be built one time,
no matter how many times you run make.

--
``The lyf so short, the craft so long to lerne.'' - Chaucer
 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRUc...@case.eduhttp://tiswww.cwru.edu/~chet/



Parallel make race in 5.1

2021-01-19 Thread Richard Purdie
Hi,

In bash 5.1 we're seeing a parallel make race during build, as found a
couple of times in our automated CI for Yocto Project:

https://autobuilder.yoctoproject.org/typhoon/#/builders/80/builds/1720/steps/14/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/44/builds/2969/steps/25/logs/stdio

The issue is around pipesize.h which in 5.1 can be built by two
different triggers, builtins/ulimit.o or redir.o.

They can race against each other and rewrite files causing the above
failure.

We added a bit of a hacky workaround:

Index: bash-5.1/Makefile.in
===
--- bash-5.1.orig/Makefile.in
+++ bash-5.1/Makefile.in
@@ -746,7 +746,7 @@ ${DEFDIR}/bashgetopt.o: $(BUILTIN_SRCDIR
 ${DEFDIR}/builtext.h: $(BUILTIN_DEFS)
@(cd $(DEFDIR) && $(MAKE) $(MFLAGS) builtext.h ) || exit 1
 
-${DEFDIR}/pipesize.h:
+${DEFDIR}/pipesize.h: $(BUILTINS_LIBRARY)
@(cd $(DEFDIR) && $(MAKE) $(MFLAGS) pipesize.h ) || exit 1
 
 $(SDIR)/man2html$(EXEEXT): ${SUPPORT_SRC}/man2html.c

Cheers,

Richard




hyphens (-) and underscores (_) are not treated as equivalent with completion-map-case and completion-ignore-case enabled

2021-01-19 Thread awa54

Configuration Information [Automatically generated, do not change]:
Machine: x86_64
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS: -march=x86-64 -mtune=generic -O2 -pipe -fno-plt 
-DDEFAULT_PATH_VALUE='/usr/local/sbin:/usr/local/bin:/usr/bin' 
-DSTANDARD_UTILS_PATH='/usr/bin' -DSYS_BASHRC='/etc/bash.bashrc' 
-DSYS_BASH_LOGOUT='/etc/bash.bash_logout' -DNON_INTERACTIVE_LOGIN_SHELLS
uname output: Linux w-arch 5.10.7-arch1-1 #1 SMP PREEMPT Wed, 13 Jan 
2021 12:02:01 + x86_64 GNU/Linux

Machine Type: x86_64-pc-linux-gnu

Bash Version: 5.1
Patch Level: 4
Release Status: release

Description:

man bash says:
> completion-map-case (Off)
> If set to On, and completion-ignore-case is enabled, readline treats 
hyphens (-) and underscores (_) as equivalent when performing 
case-insensitive filename matching and completion.


$ bind -v|grep case
set completion-ignore-case on
set completion-map-case on


Repeat-By:

So it should be enabled and when I type

$ touch _test
$ chmod +x -t

it completes to

$ chmod +x _test

But neither

$ ./-t
$ ls -t

complete.

If I turn off progcomp with `shopt -u progcomp` (as suggested here 
https://unix.stackexchange.com/questions/629844/bash-completion) it 
allows the `ls` example to complete but not the other.




Re: nameref to array[@] doesn't always expand to multiple words

2021-01-19 Thread Oğuz
19 Ocak 2021 Salı tarihinde Greg Wooledge  yazdı:

> On Tue, Jan 19, 2021 at 01:38:13PM +0300, Oğuz wrote:
> > $ declare -n c=a[@]
>
> "However,  nameref  variables can reference array variables and
> subscripted array variables."
>
> Is a[@] a "subscripted array variable"?
>

It is, `@' is the subscript here.


-- 
Oğuz


Re: nameref to array[@] doesn't always expand to multiple words

2021-01-19 Thread Greg Wooledge
On Tue, Jan 19, 2021 at 01:38:13PM +0300, Oğuz wrote:
> $ declare -n c=a[@]

"However,  nameref  variables can reference array variables and
subscripted array variables."

Is a[@] a "subscripted array variable"?



nameref to array[@] doesn't always expand to multiple words

2021-01-19 Thread Oğuz
See:

$ a=(1 2 3)
$ b=a[@]
$ declare -n c=a[@]
$
$ printf '<%s>\n' "${!b}"
<1>
<2>
<3>
$ printf '<%s>\n' "$c"
<1 2 3>
$ printf '<%s>\n' "${!b}$c"
<1>
<2>
<31>
<2>
<3>

This is reproducible on devel too.

Oğuz