classification
Title: Broken python-config generated with Estonian locale
Type: compile error Stage: resolved
Components: Build Versions: Python 3.7, Python 3.6, Python 3.5, Python 2.7
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: serhiy.storchaka Nosy List: Arfrever, python-dev, serhiy.storchaka, twouters, vstinner
Priority: normal Keywords: patch

Created on 2016-09-23 13:31 by Arfrever, last changed 2017-03-31 16:36 by dstufft. This issue is now closed.

Files
File name Uploaded Description Edit
python-use_C_locale.patch Arfrever, 2016-09-23 13:31 Use C locale review
Pull Requests
URL Status Linked Edit
PR 552 closed dstufft, 2017-03-31 16:36
Messages (10)
msg277277 - (view) Author: Arfrever Frehtes Taifersar Arahesis (Arfrever) * (Python triager) Date: 2016-09-23 13:31
When Estonian locale (e.g. et_EE.UTF-8) is set, then the following line in Makefile.pre.in does not match all required strings:

sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' < Misc/python-config.sh >python-config

In Estonian locale:
[A-Z] does not match: T, U, V, W, X, Y
[a-z] does not match: t, u, v, w, x, y
https://en.wikipedia.org/wiki/Estonian_orthography

Run-time result without fix applied:

$ LC_ALL=C bash python-config --help
python-config: line 45: LDVERSION: command not found
python-config: line 49: VERSION: command not found
python-config: line 51: prefix: command not found
python-config: line 51: VERSION: command not found
Usage: python-config --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|--configdir

I attach patch (also fixing distclean target).
msg277280 - (view) Author: Arfrever Frehtes Taifersar Arahesis (Arfrever) * (Python triager) Date: 2016-09-23 14:30
I get "500 Server Error" page when trying to write response in Rietveld, so I will write here...

On 2016/09/23 16:00:58, storchaka wrote:
> https://bugs.python.org/review/28258/diff/18650/Makefile.pre.in
> File Makefile.pre.in (right):
> 
> https://bugs.python.org/review/28258/diff/18650/Makefile.pre.in#newcode1633
> Makefile.pre.in:1633: LC_ALL=C; find $(srcdir)/[a-zA-Z]* '(' -name '*.fdc' -o
> -name '*~' \
> Does it work with ";"?

Yes.
Expansion is performed here by shell (spawned by make) itself before arguments are passed to find.
So LC_ALL=C must be set as a separate command.

$ export LC_ALL=et_EE.UTF-8
$ mkdir -p /tmp/test/{a,t,z}
$ find /tmp/test/[a-zA-Z]*
/tmp/test/a
/tmp/test/z
$ LC_ALL=C find /tmp/test/[a-zA-Z]*
/tmp/test/a
/tmp/test/z
$ LC_ALL=C; find /tmp/test/[a-zA-Z]*
/tmp/test/a
/tmp/test/t
/tmp/test/z
$
msg277281 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2016-09-23 14:55
Thanks for your explanation, now I see this. The patch LGTM.
msg277711 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2016-09-29 17:48
New changeset 6110997dd6e7 by Serhiy Storchaka in branch '3.5':
Issue #28258: Fixed build with Estonian locale (python-config and distclean
https://hg.python.org/cpython/rev/6110997dd6e7

New changeset 1b9e71f5de83 by Serhiy Storchaka in branch '3.6':
Issue #28258: Fixed build with Estonian locale (python-config and distclean
https://hg.python.org/cpython/rev/1b9e71f5de83

New changeset a2c5179bce01 by Serhiy Storchaka in branch 'default':
Issue #28258: Fixed build with Estonian locale (python-config and distclean
https://hg.python.org/cpython/rev/a2c5179bce01

New changeset f2247d1cb884 by Serhiy Storchaka in branch '2.7':
Issue #28258: Fixed build with Estonian locale (distclean target in
https://hg.python.org/cpython/rev/f2247d1cb884
msg277712 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2016-09-29 18:19
"LC_ALL=C; find" are you sure for ";"?
msg277714 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2016-09-29 18:47
This is the question that I asked Arfrever.
msg277716 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2016-09-29 19:36
"Expansion is performed here by shell (spawned by make) itself before arguments are passed to find. So LC_ALL=C must be set as a separate command."

Oh. I expected at least "export LANG" somewhere. IMHO it deserves a comment explaining the surprising ";".

Does it work if it's written on two lines?
msg277720 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2016-09-29 19:51
> Oh. I expected at least "export LANG" somewhere. IMHO it deserves a comment
> explaining the surprising ";".

I don't know if export is needed. I see the same behavior with and without 
export.

> Does it work if it's written on two lines?

No, it doesn't work.
msg277726 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2016-09-29 20:33
New changeset 17f2b6b2e24c by Victor Stinner in branch '3.5':
Issue #28258: Explain the LC_ALL change in a comment
https://hg.python.org/cpython/rev/17f2b6b2e24c

New changeset f256bd5b8418 by Victor Stinner in branch '2.7':
Issue #28258: Explain the LC_ALL change in a comment
https://hg.python.org/cpython/rev/f256bd5b8418
msg277810 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2016-10-01 12:23
Thanks Victor!
History
Date User Action Args
2017-03-31 16:36:25dstufftsetpull_requests: + pull_request989
2016-10-01 12:23:40serhiy.storchakasetmessages: + msg277810
2016-09-29 20:33:44python-devsetmessages: + msg277726
2016-09-29 19:51:19serhiy.storchakasetmessages: + msg277720
2016-09-29 19:36:53vstinnersetmessages: + msg277716
2016-09-29 18:47:43serhiy.storchakasetmessages: + msg277714
2016-09-29 18:19:19vstinnersetmessages: + msg277712
2016-09-29 17:48:56serhiy.storchakasetstatus: open -> closed
versions: + Python 2.7
resolution: fixed
assignee: twouters -> serhiy.storchaka
type: compile error
stage: resolved
2016-09-29 17:48:08python-devsetnosy: + python-dev
messages: + msg277711
2016-09-23 14:55:52serhiy.storchakasetmessages: + msg277281
2016-09-23 14:30:40Arfreversetmessages: + msg277280
2016-09-23 14:01:33serhiy.storchakasetnosy: + serhiy.storchaka
2016-09-23 13:38:40vstinnersetnosy: + vstinner
2016-09-23 13:31:38Arfrevercreate