[MacPorts] #71237: sed: RE error: illegal byte sequence

MacPorts noreply at macports.org
Mon Nov 4 11:39:14 UTC 2024


#71237: sed: RE error: illegal byte sequence
-----------------------+--------------------------
 Reporter:  ballapete  |      Owner:  (none)
     Type:  defect     |     Status:  new
 Priority:  Normal     |  Milestone:
Component:  ports      |    Version:  2.10.2
 Keywords:             |       Port:  Perl modules
-----------------------+--------------------------
 While trying to proof that Perl 5.38 is ready for production use I tried
 in a final step to patch all the test files that start with
 `#!/usr/bin/perl` (or similarly) to start with `#!/usr/bin/env perl` or
 `${perl5.bin}` and ran into that `sed` problem. On the command line it
 gives:

 {{{
 pete 313 /\ head -20
 /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5
 -dbd-csv/p5.38-dbd-csv/work/DBD-CSV-0.60/t/80_rt.t | tail -3 | sed -e
 's:/usr/bin/perl:/usr/bin/env perl:'
 while (<DATA>) {
 sed: RE error: illegal byte sequence
 Exit 1
 pete 314 /\ which sed
 }}}

 and also:

 {{{
 pete 312 /\ head -20
 /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5
 -dbd-csv/p5.38-dbd-csv/work/DBD-CSV-0.60/t/80_rt.t | tail -3 | gsed -e
 's:/usr/bin/perl:/usr/bin/env perl:'
 while (<DATA>) {
     if (s/^\253(\d+)\273\s*-?\s*//) {
         chomp;
 }}}

 So it's likely that using `gsed` instead of the `system's sed` will solve
 the problem.

 How can I make `port` use `gsed` instead of the `system's sed`?

 Another example:

 {{{
 pete 318 /\ head -47
 /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5
 -dbd-csv/p5.38-dbd-csv/work/DBD-CSV-0.60/t/42_bindparam.t | tail -3 | sed
 -e 's:/usr/bin/perl:/usr/bin/env perl:'
 # Now try the explicit type settings
 ok ($sth->bind_param (1, " 4", &SQL_INTEGER),   "bind 4 int");
 sed: RE error: illegal byte sequence
 Exit 1

 pete 319 /\ head -47
 /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5
 -dbd-csv/p5.38-dbd-csv/work/DBD-CSV-0.60/t/42_bindparam.t | tail -3 | gsed
 -e 's:/usr/bin/perl:/usr/bin/env perl:'
 # Now try the explicit type settings
 ok ($sth->bind_param (1, " 4", &SQL_INTEGER),   "bind 4 int");
 ok ($sth->bind_param (2, "Andreas K\366nig"),   "bind str");
 }}}

 Another one would be

 {{{
 head -55
 /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-encode/p5.38-encode/work/Encode-3.21/t
 /at-cn.t  | tail -7 | {g,}sed -e 's:/usr/bin/perl:/usr/bin/env perl:'
 }}}

 where Chinese characters are somehow "encoded".

 Obviously `sed` "knows" some "forbidden" characters it cannot work on, and
 obviously it has problems with encodings other than 7 or 8 bit that gsed
 has learned to overcome.
 }}}

-- 
Ticket URL: <https://trac.macports.org/ticket/71237>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list