[Rd] test fails when requesting LC_CTYPE

Kasper Daniel Hansen kasperdanielhansen at gmail.com
Mon May 22 04:18:11 CEST 2017


Thanks, works for me.

Best,
Kasper

On Sat, May 20, 2017 at 9:35 AM, Martin Maechler <maechler at stat.math.ethz.ch
> wrote:

> >>>>> Kasper Daniel Hansen <kasperdanielhansen at gmail.com>
> >>>>>     on Fri, 19 May 2017 20:09:24 -0400 writes:
>
>     > I rebuilt R with
>     > export LC_CTYPE=en_US.UTF-8
>     > and the test still fail.  Surprisingly, when I run R from the bin
> directory
>     > and execute the test code, it runs without error:
>
>   >> oloc <- Sys.getlocale("LC_CTYPE")
>   >> mbyte.lc <- {
>   > +     if(.Platform$OS.type == "windows")
>   > +       "English_United States.28605"
>   > +     else if(grepl("[.]UTF-8$", oloc, ignore.case=TRUE)) # typically
> nowadays
>   > +       oloc
>   > +     else
>   > +       "C.UTF-8" # or rather "en_US.UTF-8" (? from  system("locale
> -a| fgrep .UTF-8") )
>   > + }
>   >> stopifnot(identical(Sys.setlocale("LC_CTYPE", mbyte.lc), mbyte.lc))
>   >> oloc
>   > [1] "en_US.UTF-8"
>   >> mbyte.lc
>   > [1] "en_US.UTF-8"
>
> I had been making these changes in R-devel after offline
> discussions with Linux users for which the original check (using
> "en_UK.UTF-8")
> failed.
>
> What I read below is suggesting that "C.UTF-8" is not okay
> either, as a fallback.
>
> It seems we should use "en_US.UTF-8" as fallback instead
> (though I assume that won't work in North Korea).
>
> I've committed a version that does that _and_ no longer stops
> when that identical() does not give a 'TRUE'.
>
> Martin
>
>     > On Fri, May 19, 2017 at 7:29 PM, Kasper Daniel Hansen <
>     > kasperdanielhansen at gmail.com> wrote:
>
>     >> On RedHat Enterprise Linux 6, the test below fails (this is using
> the
>     >> stock GCC 4.4.7) from R-devel r72707.  LC_CTYPE is unset when I run
> it, but
>     >> LANG=en_US.UTF-8
>     >>
>     >> It also failed "yesterday" where as far as I recall the test code
> looked a
>     >> bit different.
>     >>
>     >> Best,
>     >> Kasper
>     >>
>     >> > ## Results differed by platform, but some gave incorrect results
> on
>     >> string 10.
>     >> >
>     >> >
>     >> > ## str() on large strings (in multibyte locales; changing locale
> may not
>     >> work everywhere
>     >> > oloc <- Sys.getlocale("LC_CTYPE")
>     >> > mbyte.lc <- {
>     >> +     if(.Platform$OS.type == "windows")
>     >> +       "English_United States.28605"
>     >> +     else if(grepl("[.]UTF-8$", oloc, ignore.case=TRUE)) #
> typically
>     >> nowadays
>     >> +       oloc
>     >> +     else
>     >> +       "C.UTF-8" # or rather "en_US.UTF-8" (? from  system("locale
> -a|
>     >> fgrep .UTF-8") )
>     >> + }
>     >> > stopifnot(identical(Sys.setlocale("LC_CTYPE", mbyte.lc), mbyte.lc
> ))
>     >> Error: identical(Sys.setlocale("LC_CTYPE", mbyte.lc), mbyte.lc) is
> not
>     >> TRUE
>     >> In addition: Warning message:
>     >> In Sys.setlocale("LC_CTYPE", mbyte.lc) :
>     >> OS reports request to set locale to "C.UTF-8" cannot be honored
>     >> Execution halted
>     >>
>

	[[alternative HTML version deleted]]



More information about the R-devel mailing list