Re: poudriere-devel's implicit LC_COLLATE use (a default): does it mix well with python3?

From: Mark Millard via freebsd-ports <freebsd-ports_at_freebsd.org>
Date: Sat, 02 Oct 2021 09:50:40 UTC
On 2021-Oct-1, at 21:52, Mark Millard <marklmi at yahoo.com> wrote:

> I've a case of my poudriere-devel builds of www/chromium in
> python code that is executing but the builds on the FreeBSD
> servers do not get the error.
> 
> This lead me to look at my log vs. one from the servers
> and I found a difference that I think might change python
> behavior, not that I've proved that the specifics are
> involved in my issue. (The bulk -a with the failure still
> has days to go.)
> 
> From what I read locale.strcoll(string1,string2) and
> locale.strxfrm(string) are based on LC_COLLATE. From
> what I gather, for python3, this LC_COLLATE assignment
> may be rather unusual (i.e., not some UTF mode). (I do
> not claim to have found all uses of LC_COLLATE, just
> a couple of examples.)
> 
> The difference is having the LC_COLLATE assignment, as
> shown in the log from my build but not in the one from
> the FreeBSD servers that I looked at (that bulk -a also
> still running). My log shows:
> 
> POUDRIERE_VERSION=3.3.99.20210907_1
> MASTERMNT=/usr/local/poudriere/data/.m/main-CA72-default/ref
> LC_COLLATE=C
> POUDRIERE_BUILD_TYPE=bulk
> PACKAGE_BUILDING=yes
> 
> LC_COLLATE=C seems to be from:
> 
> . . .
> ${BUILDNAME_FORMAT:="%Y-%m-%d_%Hh%Mm%Ss"}
> : ${BUILDNAME:=$(date +${BUILDNAME_FORMAT})}
> 
> : ${HTML_TYPE:=inline}
> : ${LC_COLLATE:=C}
> export LC_COLLATE
> 
> if [ -n "${MAX_MEMORY}" ]; then
>        MAX_MEMORY_BYTES="$((MAX_MEMORY * 1024 * 1024 * 1024))"
> fi
> . . .
> 
> in /usr/local/share/poudriere/common.sh from
> poudriere-devel (i.e., the main branch). The two
> LC_COLLATE lines are not in the release branch
> that I looked at.
> 
> Eventually I'll probably test if this is involved in my context's
> failure, unless I figure out something else that might make the
> difference first.
> 

I used a faster system (ThradRipper 1950X) to test my context for
www/chromium builds and removing the two lines:

: ${LC_COLLATE:=C}
export LC_COLLATE

made no difference: python3.8 still stops where it did before, with
the same reported errors. I've no evidence that poudriere-devel is
what leads to the issue at this point.

That still leaves me wondering about the LC_COLLATE usage, but I've
no specific failure associated.

===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)