Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.debian.bugs.dist > #1143827 > unrolled thread

Bug#1028002: dash: sid dash globs no longer allow [^...] to negate a class; upcoming breaking change from bullseye

Started bySantiago Ruano Rincón <santiagorr@riseup.net>
First post2023-04-12 17:10 +0200
Last post2023-05-29 13:10 +0200
Articles 6 — 3 participants

Back to article view | Back to linux.debian.bugs.dist

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Bug#1028002: dash: sid dash globs no longer allow [^...] to negate a class; upcoming breaking change from bullseye Santiago Ruano Rincón <santiagorr@riseup.net> - 2023-04-12 17:10 +0200
    Bug#1028002: dash: sid dash globs no longer allow [^...] to negate a class; upcoming breaking change from bullseye Paul Gevers <elbrus@debian.org> - 2023-04-13 12:00 +0200
      Bug#1034344: Bug#1028002: dash: sid dash globs no longer allow [^...] to negate a class; upcoming breaking change from bullseye Maxim Nikulin <m.a.nikulin@gmail.com> - 2023-04-19 12:30 +0200
      Bug#1034344: Bug#1028002: dash: sid dash globs no longer allow [^...] to negate a class; upcoming breaking change from bullseye Paul Gevers <elbrus@debian.org> - 2023-05-28 22:00 +0200
        Bug#1034344: Bug#1028002: dash: sid dash globs no longer allow [^...] to negate a class; upcoming breaking change from bullseye Paul Gevers <elbrus@debian.org> - 2023-05-29 12:40 +0200
          Bug#1034344: Bug#1028002: dash: sid dash globs no longer allow [^...] to negate a class; upcoming breaking change from bullseye Paul Gevers <elbrus@debian.org> - 2023-05-29 13:10 +0200

#1143827 — Bug#1028002: dash: sid dash globs no longer allow [^...] to negate a class; upcoming breaking change from bullseye

FromSantiago Ruano Rincón <santiagorr@riseup.net>
Date2023-04-12 17:10 +0200
SubjectBug#1028002: dash: sid dash globs no longer allow [^...] to negate a class; upcoming breaking change from bullseye
Message-ID<GjKgF-1yIU-1@gated-at.bofh.it>

[Multipart message — attachments visible in raw view] — view raw

Control: severity -1 important

Hi!

On Fri, 6 Jan 2023 12:31:47 +0100 =?utf-8?B?0L3QsNCx?= <nabijaczleweli@nabijaczleweli.xyz> wrote:
> Hi!
> 
> On Fri, Jan 06, 2023 at 10:52:31AM +0100, Andrej Shadura wrote:
> > On Thu, 5 Jan 2023, at 21:32, наб wrote:
> > > Bisecting over the upstream git, I got
> > >   commit 8f9cca055bc661c4c690a5f5e1ca71370d129bc3 (HEAD, refs/bisect/bad)
> > >   Author: Herbert Xu <herbert@gondor.apana.org.au>
> > >   Date:   Wed Jan 19 16:37:54 2022 +1100
> > >  
> > >       expand: Always quote caret when using fnmatch
> > 
> > > as the first bad commit with default configuration (HAVE_FNMATCH=1).
> > >
> > > I /cannot/ find a set-up where configuring like Debian
> > > (--disable-fnmatch --disable-lineno --disable-glob)
> > > isn't broken.
> > 
> > I’m not sure why this also affects configurations with --disable-fnmatch — from the description of it, it shouldn’t?
> 
> Well, dash's built-in globs Just Don't Support ^. Never have.
> (Defined as "current code doesn't and it blames to start-of-git".)
> They're strictly POSIX, and ^ is a regular character for them.
> 
> 8f9cca0 fixes the fact that glibc fnmatch() has a special meaning for ^
> by unconditionally escaping it (if configured for libc fnmatch) ‒
> it normalises [^0-9] to always mean [0-9^],
> regardless of --with-fnmatch/--disable-fnmatch.
> 
> > > Y'know what, I bisected the Salsa git, too, but then I consulted POSIX.
> > > Apparently, this is fine.
> > 
> > > Please for the love of god add this to the NEWS.
> > > I /guarantee/ people are using '[^0-9]' to mean "not 0-9",
> > > and similar constructs, even if they are well-versed in the shell language.
> > >
> > > This is a breaking change going from bullseye, and quite an insidious one.
> > > I assume my reaction is gonna mirror others' quite well.
> > >
> > > /Please/ add this to the NEWS.
> > 
> > I’m actually considering reverting that patch, as it seems a bit too late in the release cycle to introduce such a breaking change.
> 
> I've bisected across snapshot.d.o, and the first Debian version
> that exhibits this behaviour is 0.5.11+git20210903+057cd650a4ed-4:
>   http://snapshot.debian.org/package/dash/0.5.11%2Bgit20210903%2B057cd650a4ed-4/
> 
> Which, if I understand it right, has landed in sid on 2022-03-04.
> Since march of last year, sid and testing have been using this;
> quoth tracker.d.o:
>   [2022-03-07] dash 0.5.11+git20210903+057cd650a4ed-7 MIGRATED to testing (Debian testing watch) 
> 
> So it's been a good part of a year and no-one's complained
> (maybe I'm the idiot what doesn't know globs are negated with !s),
> from the point of view of "system compatibility",
> I think this has passed the test.
> 
> From the point of user code, a NEWS entry I'd consider sufficient,
> as usual for breaking-for-compat user-observable changes.
> 
> Reverting this now would probably have the opposite effect

I am taking the liberty to increase the severity of this bug. I'd say it
is serious, but I'd let the maintainer or the release team to decide on
that.

I am aware of at least one user hit by this. If the current behaviour
would be part of bookworm, a NEWS entry would be great.

Thanks,

 -- Santiago

[toc] | [next] | [standalone]


#1143892

FromPaul Gevers <elbrus@debian.org>
Date2023-04-13 12:00 +0200
Message-ID<Gk1Ud-1J4F-3@gated-at.bofh.it>
In reply to#1143827

[Multipart message — attachments visible in raw view] — view raw

Control: clone -1 -2
Control: reassign -2 release-notes

On 12-04-2023 16:57, Santiago Ruano Rincón wrote:
> If the current behaviour
> would be part of bookworm, a NEWS entry would be great.

And a release note would be worth it too I guess.

Paul

[toc] | [prev] | [next] | [standalone]


#1144387 — Bug#1034344: Bug#1028002: dash: sid dash globs no longer allow [^...] to negate a class; upcoming breaking change from bullseye

FromMaxim Nikulin <m.a.nikulin@gmail.com>
Date2023-04-19 12:30 +0200
SubjectBug#1034344: Bug#1028002: dash: sid dash globs no longer allow [^...] to negate a class; upcoming breaking change from bullseye
Message-ID<Gmdey-33FF-7@gated-at.bofh.it>
In reply to#1143892
On Thu, 13 Apr 2023 11:48:10 +0200 Paul Gevers wrote:
> On 12-04-2023 16:57, Santiago Ruano Rincón wrote:
> > If the current behaviour
> > would be part of bookworm, a NEWS entry would be great.
> 
> And a release note would be worth it too I guess.

Shellcheck static analyzer detects the issue with [^c] for pattern 
matching. I think, it may be recommended for installation 
https://packages.debian.org/bookworm/shellcheck or as an online tool 
https://www.shellcheck.net/

The warning concerning globs recommends to visit the following page:

https://www.shellcheck.net/wiki/SC3026
SC3026 In POSIX sh, ^ in place of ! in glob bracket expressions is 
undefined.

[toc] | [prev] | [next] | [standalone]


#1148222 — Bug#1034344: Bug#1028002: dash: sid dash globs no longer allow [^...] to negate a class; upcoming breaking change from bullseye

FromPaul Gevers <elbrus@debian.org>
Date2023-05-28 22:00 +0200
SubjectBug#1034344: Bug#1028002: dash: sid dash globs no longer allow [^...] to negate a class; upcoming breaking change from bullseye
Message-ID<GAuIx-c4AL-3@gated-at.bofh.it>
In reply to#1143892

[Multipart message — attachments visible in raw view] — view raw

Control: tags -1 pending patch

Hi,

On Thu, 13 Apr 2023 11:48:10 +0200 Paul Gevers <elbrus@debian.org> wrote:
> On 12-04-2023 16:57, Santiago Ruano Rincón wrote:
> > If the current behaviour
> > would be part of bookworm, a NEWS entry would be great.
> 
> And a release note would be worth it too I guess.

Our (crafted with Andrej) proposal is here:
https://salsa.debian.org/ddp-team/release-notes/-/merge_requests/181

Paul

[toc] | [prev] | [next] | [standalone]


#1148271 — Bug#1034344: Bug#1028002: dash: sid dash globs no longer allow [^...] to negate a class; upcoming breaking change from bullseye

FromPaul Gevers <elbrus@debian.org>
Date2023-05-29 12:40 +0200
SubjectBug#1034344: Bug#1028002: dash: sid dash globs no longer allow [^...] to negate a class; upcoming breaking change from bullseye
Message-ID<GAIsa-cdEb-5@gated-at.bofh.it>
In reply to#1148222

[Multipart message — attachments visible in raw view] — view raw

Hi,

On 29-05-2023 12:02, Max Nikulin wrote:
> Strictly speaking, behavior of circumflex is *unspecified* in POSIX:
> 
>> ... A bracket expression
>>     starting with an unquoted <circumflex> character produces unspecified
>>     results.

Right. Maybe better to say it now matches the other implementation (dash 
has two implementations and they were behaving differently).

Paul

[toc] | [prev] | [next] | [standalone]


#1148272 — Bug#1034344: Bug#1028002: dash: sid dash globs no longer allow [^...] to negate a class; upcoming breaking change from bullseye

FromPaul Gevers <elbrus@debian.org>
Date2023-05-29 13:10 +0200
SubjectBug#1034344: Bug#1028002: dash: sid dash globs no longer allow [^...] to negate a class; upcoming breaking change from bullseye
Message-ID<GAIVb-ce2V-1@gated-at.bofh.it>
In reply to#1148271

[Multipart message — attachments visible in raw view] — view raw

Hi,

On 29-05-2023 12:51, Max Nikulin wrote:
> I am unaware of another dash implementation. Do you mean ash from which 
> dash was forked?

No, I understood from Andrej that dash *internally* has two ways to do 
the matching. One embedded implementation, and one using system library 
calls. Which one is used depends on the configure options during the 
build. Both code paths are now made consistent (with the way dash 
maintainers always ment it to be).

Paul

[toc] | [prev] | [standalone]


Back to top | Article view | linux.debian.bugs.dist


csiph-web