mirror of
https://github.com/espressif/esp-idf.git
synced 2025-09-30 19:19:21 +00:00
docs: Refactor extensions into packages, update the add-ons-reference docs page
Includes converting some of the remaining standalone scripts into Sphinx extensions. Make flake8 clean
This commit is contained in:

committed by
Angus Gratton

parent
cbede3a3a4
commit
a148d8e6ba
86
docs/idf_extensions/gen_toolchain_links.py
Normal file
86
docs/idf_extensions/gen_toolchain_links.py
Normal file
@@ -0,0 +1,86 @@
|
||||
# Generate toolchain download links from toolchain info makefile
|
||||
from __future__ import print_function
|
||||
import os.path
|
||||
from collections import namedtuple
|
||||
from util import copy_if_modified
|
||||
|
||||
BASE_URL = 'https://dl.espressif.com/dl/'
|
||||
|
||||
PlatformInfo = namedtuple("PlatformInfo", [
|
||||
"platform_name",
|
||||
"platform_archive_suffix",
|
||||
"extension",
|
||||
"unpack_cmd",
|
||||
"unpack_code"
|
||||
])
|
||||
|
||||
|
||||
def setup(app):
|
||||
# we don't actually need idf-info, just a convenient event to trigger this on
|
||||
app.connect('idf-info', generate_toolchain_download_links)
|
||||
|
||||
return {'parallel_read_safe': True, 'parallel_write_safe': True, 'version': '0.1'}
|
||||
|
||||
|
||||
def generate_toolchain_download_links(app, project_description):
|
||||
print("Generating toolchain download links")
|
||||
toolchain_tmpdir = '{}/toolchain_inc'.format(app.config.build_dir)
|
||||
toolchain_versions = os.path.join(app.config.idf_path, "tools/toolchain_versions.mk")
|
||||
gen_toolchain_links(toolchain_versions, toolchain_tmpdir)
|
||||
copy_if_modified(toolchain_tmpdir, '{}/inc'.format(app.config.build_dir))
|
||||
|
||||
|
||||
def gen_toolchain_links(versions_file, out_dir):
|
||||
version_vars = {}
|
||||
with open(versions_file) as f:
|
||||
for line in f:
|
||||
name, var = line.partition("=")[::2]
|
||||
version_vars[name.strip()] = var.strip()
|
||||
|
||||
gcc_version = version_vars["CURRENT_TOOLCHAIN_GCC_VERSION"]
|
||||
toolchain_desc = version_vars["CURRENT_TOOLCHAIN_COMMIT_DESC_SHORT"]
|
||||
|
||||
unpack_code_linux_macos = """
|
||||
::
|
||||
|
||||
mkdir -p ~/esp
|
||||
cd ~/esp
|
||||
tar -x{}f ~/Downloads/{}
|
||||
"""
|
||||
|
||||
scratch_build_code_linux_macos = """
|
||||
::
|
||||
|
||||
git clone https://github.com/espressif/crosstool-NG.git
|
||||
cd crosstool-NG
|
||||
git checkout {}
|
||||
git submodule update --init
|
||||
./bootstrap && ./configure --enable-local && make
|
||||
"""
|
||||
|
||||
platform_info = [
|
||||
PlatformInfo("linux64", "linux-amd64", "tar.gz", "z", unpack_code_linux_macos),
|
||||
PlatformInfo("linux32", "linux-i686","tar.gz", "z", unpack_code_linux_macos),
|
||||
PlatformInfo("osx", "macos", "tar.gz", "z", unpack_code_linux_macos),
|
||||
PlatformInfo("win32", "win32", "zip", None, None)
|
||||
]
|
||||
|
||||
try:
|
||||
os.mkdir(out_dir)
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
with open(os.path.join(out_dir, 'download-links.inc'), "w") as links_file:
|
||||
for p in platform_info:
|
||||
archive_name = 'xtensa-esp32-elf-gcc{}-{}-{}.{}'.format(
|
||||
gcc_version.replace('.', '_'), toolchain_desc, p.platform_archive_suffix, p.extension)
|
||||
|
||||
print('.. |download_link_{}| replace:: {}{}'.format(
|
||||
p.platform_name, BASE_URL, archive_name), file=links_file)
|
||||
|
||||
if p.unpack_code is not None:
|
||||
with open(os.path.join(out_dir, 'unpack-code-%s.inc' % p.platform_name), "w") as f:
|
||||
print(p.unpack_code.format(p.unpack_cmd, archive_name), file=f)
|
||||
|
||||
with open(os.path.join(out_dir, 'scratch-build-code.inc'), "w") as code_file:
|
||||
print(scratch_build_code_linux_macos.format(toolchain_desc), file=code_file)
|
Reference in New Issue
Block a user