From b246ec86f3881ddc9eacbc8465fe7c2c1d54a06f Mon Sep 17 00:00:00 2001 From: Tian Yunhao Date: Mon, 15 Nov 2021 15:06:18 +0800 Subject: [PATCH 1/2] ldgen: override LC_ALL to C before running objdump MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When using a Linux system configured with `zh_CN.UTF-8` as `$LANG`, and running raw cmake command to build the project (rather than using `idf.py build`), output of objdump will be Chinese (like `在归档文件 libesp_pm.a 中`), resulting in parsing error `pyparsing.ParseException: Expected "In archive" (at char 0), (line:1, col:1)` at entity.py line 129. This commit forces objdump to use raw locale setting (`C`), to ensure it always make English output that's able to be parsed. Closes https://github.com/espressif/esp-idf/pull/7903 --- tools/ldgen/ldgen.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/ldgen/ldgen.py b/tools/ldgen/ldgen.py index a0a8ca4b5b..1bdd5af26d 100755 --- a/tools/ldgen/ldgen.py +++ b/tools/ldgen/ldgen.py @@ -131,7 +131,9 @@ def main(): for library in libraries_file: library = library.strip() if library: - dump = StringIO(subprocess.check_output([objdump, '-h', library]).decode()) + new_env = os.environ.copy() + new_env['LC_ALL']='C' + dump = StringIO(subprocess.check_output([objdump, '-h', library], env=new_env).decode()) dump.name = library sections_infos.add_sections_info(dump) From 909ae908677a196cb721a537b1b02ec13c58adcd Mon Sep 17 00:00:00 2001 From: Simon Chupin Date: Mon, 15 Nov 2021 18:03:33 +0100 Subject: [PATCH 2/2] replace the old header in ldgen.py with a new SPDX header style and delete it from check_copyright_ignore.txt to complete pipelines without errors --- tools/ci/check_copyright_ignore.txt | 1 - tools/ldgen/ldgen.py | 17 +++-------------- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/tools/ci/check_copyright_ignore.txt b/tools/ci/check_copyright_ignore.txt index 9321876f3c..c736e851ea 100644 --- a/tools/ci/check_copyright_ignore.txt +++ b/tools/ci/check_copyright_ignore.txt @@ -3621,7 +3621,6 @@ tools/kconfig_new/test/gen_kconfig_doc/test_kconfig_out.py tools/kconfig_new/test/gen_kconfig_doc/test_target_visibility.py tools/ldgen/entity.py tools/ldgen/fragments.py -tools/ldgen/ldgen.py tools/ldgen/ldgen_common.py tools/ldgen/output_commands.py tools/ldgen/samples/template.ld diff --git a/tools/ldgen/ldgen.py b/tools/ldgen/ldgen.py index 1bdd5af26d..aba52f2c28 100755 --- a/tools/ldgen/ldgen.py +++ b/tools/ldgen/ldgen.py @@ -1,18 +1,7 @@ #!/usr/bin/env python # -# Copyright 2021 Espressif Systems (Shanghai) CO LTD -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: Apache-2.0 # import argparse @@ -132,7 +121,7 @@ def main(): library = library.strip() if library: new_env = os.environ.copy() - new_env['LC_ALL']='C' + new_env['LC_ALL'] = 'C' dump = StringIO(subprocess.check_output([objdump, '-h', library], env=new_env).decode()) dump.name = library sections_infos.add_sections_info(dump)