Skip to content

Commit 91b42ae

Browse files
committed
Update package json with tolls matching the ESP-IDF version
1 parent e18eecd commit 91b42ae

File tree

3 files changed

+143
-0
lines changed

3 files changed

+143
-0
lines changed

build.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,12 @@ for target_json in `jq -c '.targets[]' configs/builds.json`; do
187187
done
188188
done
189189

190+
# update package_esp32_index.template.json
191+
if [ "$BUILD_TYPE" = "all" ]; then
192+
python3 ./tools/gen_tools_json.py -i "$IDF_PATH" -j "$AR_COMPS/arduino/package/package_esp32_index.template.json" -o "$AR_OUT/"
193+
if [ $? -ne 0 ]; then exit 1; fi
194+
fi
195+
190196
# archive the build
191197
if [ "$BUILD_TYPE" = "all" ]; then
192198
./tools/archive-build.sh

tools/copy-to-arduino.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ echo "Installing new libraries to $ESP32_ARDUINO"
1919
rm -rf $ESP32_ARDUINO/tools/sdk $ESP32_ARDUINO/tools/gen_esp32part.py $ESP32_ARDUINO/tools/platformio-build-*.py $ESP32_ARDUINO/platform.txt
2020

2121
cp -f $AR_OUT/platform.txt $ESP32_ARDUINO/
22+
cp -f $AR_OUT/package_esp32_index.template.json $ESP32_ARDUINO/package/package_esp32_index.template.json
2223
cp -Rf $AR_TOOLS/sdk $ESP32_ARDUINO/tools/
2324
cp -f $AR_TOOLS/gen_esp32part.py $ESP32_ARDUINO/tools/
2425
cp -f $AR_TOOLS/platformio-build-*.py $ESP32_ARDUINO/tools/

tools/gen_tools_json.py

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
#!/usr/bin/env python
2+
# python tools/gen_tools_json.py -i $IDF_PATH -j components/arduino/package/package_esp32_index.template.json -o out/
3+
4+
from __future__ import print_function
5+
6+
__author__ = "Hristo Gochkov"
7+
__version__ = "2023"
8+
9+
import os
10+
import shutil
11+
import errno
12+
import os.path
13+
import json
14+
import platform
15+
import sys
16+
import stat
17+
import argparse
18+
19+
if sys.version_info[0] == 3:
20+
unicode = lambda s: str(s)
21+
22+
if __name__ == '__main__':
23+
24+
parser = argparse.ArgumentParser(
25+
prog = 'gen_tools_json',
26+
description = 'Update Arduino package index with the tolls found in ESP-IDF')
27+
parser.add_argument('-i', '--esp-idf', dest='idf_path', required=True, help='Path to ESP-IDF')
28+
parser.add_argument('-j', '--pkg-json', dest='arduino_json', required=True, help='path to Arduino package json')
29+
parser.add_argument('-o', '--out-path', dest='out_path', required=True, help='Output path to store the update package json')
30+
args = parser.parse_args()
31+
32+
idf_path = args.idf_path;
33+
arduino_json = args.arduino_json;
34+
out_path = args.out_path;
35+
36+
# settings
37+
arduino_tools = ["xtensa-esp32-elf","xtensa-esp32s2-elf","xtensa-esp32s3-elf","riscv32-esp-elf","openocd-esp32"]
38+
39+
# code start
40+
farray = json.load(open(arduino_json))
41+
42+
idf_tools = json.load(open(idf_path + '/tools/tools.json'))
43+
for tool in idf_tools['tools']:
44+
try:
45+
tool_index = arduino_tools.index(tool['name'])
46+
except:
47+
continue
48+
tool_name = tool['name']
49+
tool_version = tool['versions'][0]['name']
50+
if tool_name.endswith('-elf'):
51+
tool_name += '-gcc'
52+
print('Found {0}, version: {1}'.format(tool_name, tool_version))
53+
54+
dep_found = False
55+
dep_skip = False
56+
for dep in farray['packages'][0]['platforms'][0]['toolsDependencies']:
57+
if dep['name'] == tool_name:
58+
if dep['version'] == tool_version:
59+
print('Skipping {0}. Same version {1}'.format(tool_name, tool_version))
60+
dep_skip = True
61+
break
62+
print('Updating dependency version of {0} from {1} to {2}'.format(tool_name, dep['version'], tool_version))
63+
dep['version'] = tool_version
64+
dep_found = True
65+
if dep_skip == True:
66+
continue
67+
if dep_found == False:
68+
print('Adding new dependency: {0} version {1}'.format(tool_name, tool_version))
69+
deps = {
70+
"packager": "esp32",
71+
"name": tool_name,
72+
"version": tool_version
73+
}
74+
farray['packages'][0]['platforms'][0]['toolsDependencies'].append(deps)
75+
76+
systems = []
77+
for arch in tool['versions'][0]:
78+
if arch == 'name' or arch == 'status':
79+
continue
80+
tool_data = tool['versions'][0][arch]
81+
82+
system = {
83+
"host": '',
84+
"url": tool_data['url'],
85+
"archiveFileName": os.path.basename(tool_data['url']),
86+
"checksum": "SHA-256:"+tool_data['sha256'],
87+
"size": tool_data['size']
88+
}
89+
90+
if arch == "win32":
91+
system["host"] = "i686-mingw32";
92+
elif arch == "win64":
93+
system["host"] = "x86_64-mingw32";
94+
elif arch == "macos-arm64":
95+
system["host"] = "arm64-apple-darwin";
96+
elif arch == "macos":
97+
system["host"] = "x86_64-apple-darwin";
98+
elif arch == "linux-amd64":
99+
system["host"] = "x86_64-pc-linux-gnu";
100+
elif arch == "linux-i686":
101+
system["host"] = "i686-pc-linux-gnu";
102+
elif arch == "linux-arm64":
103+
system["host"] = "aarch64-linux-gnu";
104+
elif arch == "linux-armel":
105+
system["host"] = "arm-linux-gnueabihf";
106+
elif arch == "linux-armhf":
107+
# system["host"] = "arm-linux-gnueabihf";
108+
continue
109+
else :
110+
continue
111+
112+
systems.append(system)
113+
114+
tool_found = False
115+
for t in farray['packages'][0]['tools']:
116+
if t['name'] == tool_name:
117+
t['version'] = tool_version
118+
t['systems'] = systems
119+
tool_found = True
120+
print('Updating binaries of {0} to version {1}'.format(tool_name, tool_version))
121+
if tool_found == False:
122+
print('Adding new tool: {0} version {1}'.format(tool_name, tool_version))
123+
tools = {
124+
"name": tool_name,
125+
"version": tool_version,
126+
"systems": systems
127+
}
128+
farray['packages'][0]['tools'].append(tools)
129+
130+
json_str = json.dumps(farray, indent=2)
131+
out_file = out_path + os.path.basename(arduino_json)
132+
with open(out_file, "w") as f:
133+
f.write(json_str+"\n")
134+
f.close()
135+
# print(json_str)
136+
print('{0} generated'.format(out_file))

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy