tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

locale confusion in package builds



lang/elixir doesn't build in most environments and I'm trying to figure
out why.

It wants to be in UTF-8, and prints out if no:

  warning: the VM is running with native name encoding of latin1 which
  may cause Elixir to malfunction as it expects utf8. Please ensure your
  locale is set to UTF-8 (which can be verified by running "locale" in
  your shell)

which is confusing as UTF-8 is an encoding not a locale, although C.UTF-8
and en_US.UTF-8 are locales.

I am not sure if the locale settings in force when erlang was built
matters, or if erlang 25.1.2 vs 25.2 or elixir 1.14.0 vs 1.42.2 matter.

The makefile does

  ALL_ENV+=      LC_ALL="en_US.UTF-8"

to set LC_CTYPE, but does it before bsd.pkg.mk so it is not effective.
So I moved it to after.

However,

  LC_CTYPE=en_US.UTF-8

in my environment ends up controlling the build.


I flipped that to British and then locale (in pre-build target) prints:

  LANG=""
  LC_CTYPE="en_GB.UTF-8"
  LC_COLLATE="C"
  LC_TIME="C"
  LC_NUMERIC="C"
  LC_MONETARY="C"
  LC_MESSAGES="C"
  LC_ALL=""

and interestingly, no warnings.

So:

  Why doesn't the ALL_ENV above work?

  Why does my environment win over what is set?


env(1) is silent about multiple values for a variable.


Home | Main Index | Thread Index | Old Index