pkgsrc-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
pkg/59895: bash-completion-2.17.0 started to error out `bash: warning: setlocale: LC_COLLATE: cannot change locale (en_US.UTF-8)`
>Number: 59895
>Category: pkg
>Synopsis: bash-completion-2.17.0 started to erroring out `bash: warning: setlocale: LC_COLLATE: cannot change locale (en_US.UTF-8)`
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: pkg-manager
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Jan 06 22:55:00 +0000 2026
>Originator: Leonardo Taccari
>Release: NetBSD 10.1_STABLE
>Organization:
The NetBSD Foundation
>Environment:
System: NetBSD pinebookpro 10.1_STABLE NetBSD 10.1_STABLE (GENERIC64) #0: Fri Dec 26 12:53:23 UTC 2025 mkrepro%mkrepro.NetBSD.org@localhost:/usr/src/sys/arch/evbarm/compile/GENERIC64 evbarm
Architecture: aarch64
Machine: evbarm
>Description:
When using shells/bash-completion and having set LANG="en_US.UTF-8"
trying to complete possible globs spams the terminal with:
bash: warning: setlocale: LC_COLLATE: cannot change locale (en_US.UTF-8)
This seems a problem introduced with bash-completion-2.17.0.
Previous bash-completion-2.11 did not had such problem.
The completions are usable but this is pretty annoying.
>How-To-Repeat:
A simple reproducer that directly calls problematic function:
$ export LANG=en_US.UTF-8 # or assume that it is present in ~/.profile
[...]
$ _comp_expand_glob files '/tmp/reproducer-*'
bash: warning: setlocale: LC_COLLATE: cannot change locale (en_US.UTF-8)
Interactively this can be reproduced via e.g.
man m<tab>
So, by typing "man m" and the tab character to complete.
>Fix:
Yes, please!
_comp_expand_glob() function of share/bash-completion/bash_completion
now have:
# To canonicalize the sorting order of the generated paths, we set
# LC_COLLATE=C and unset LC_ALL while preserving LC_CTYPE.
local LC_COLLATE=C LC_CTYPE=${LC_ALL:-${LC_CTYPE:-${LANG-}}} LC_ALL=
NetBSD setlocale(3) says under RETURN VALUES:
Currently, setlocale() returns NULL and fails to change the locale when
LC_COLLATE is modified independently of other values.
...and under CAVEATS:
LC_COLLATE is unimplemented (but does not make sense for many languages).
Probably this can be due that.
Getting rid of "LC_COLLATE=C" on that local remove that warnings.
Maybe we should conditionalize that for [[ $OSTYPE != *netbsd* ]] so
that such local is not set on NetBSD.
Home |
Main Index |
Thread Index |
Old Index