39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
|
"""Mbed TLS build tree information and manipulation.
|
||
|
"""
|
||
|
|
||
|
# Copyright The Mbed TLS Contributors
|
||
|
# SPDX-License-Identifier: Apache-2.0
|
||
|
#
|
||
|
# 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.
|
||
|
|
||
|
import os
|
||
|
|
||
|
def looks_like_mbedtls_root(path: str) -> bool:
|
||
|
"""Whether the given directory looks like the root of the Mbed TLS source tree."""
|
||
|
return all(os.path.isdir(os.path.join(path, subdir))
|
||
|
for subdir in ['include', 'library', 'programs', 'tests'])
|
||
|
|
||
|
def chdir_to_root() -> None:
|
||
|
"""Detect the root of the Mbed TLS source tree and change to it.
|
||
|
|
||
|
The current directory must be up to two levels deep inside an Mbed TLS
|
||
|
source tree.
|
||
|
"""
|
||
|
for d in [os.path.curdir,
|
||
|
os.path.pardir,
|
||
|
os.path.join(os.path.pardir, os.path.pardir)]:
|
||
|
if looks_like_mbedtls_root(d):
|
||
|
os.chdir(d)
|
||
|
return
|
||
|
raise Exception('Mbed TLS source tree not found')
|