Hi @erdunbar.
Great work finding an innovative solution to the problem!
You can see the specified tool dependencies that are installed along with the "esp32_bluepad32" platform here:
https://github.com/ricardoquesada/esp32-arduino-lib-builder/blob/master/bluepad32_files/package_esp32_bluepad32_index.json#L38-L94
"toolsDependencies": [
{
"packager": "esp32",
"name": "xtensa-esp32-elf-gcc",
"version": "esp-2021r2-patch5-8.4.0"
},
{
"packager": "esp32",
"name": "xtensa-esp32s2-elf-gcc",
"version": "esp-2021r2-patch5-8.4.0"
},
{
"packager": "esp32",
"name": "xtensa-esp32s3-elf-gcc",
"version": "esp-2021r2-patch5-8.4.0"
},
{
"packager": "esp32",
"name": "xtensa-esp-elf-gdb",
"version": "11.2_20220823"
},
{
"packager": "esp32",
"name": "riscv32-esp-elf-gcc",
"version": "esp-2021r2-patch5-8.4.0"
},
{
"packager": "esp32",
"name": "riscv32-esp-elf-gdb",
"version": "11.2_20220823"
},
{
"packager": "esp32",
"name": "openocd-esp32",
"version": "v0.12.0-esp32-20230419"
},
{
"packager": "esp32",
"name": "esptool_py",
"version": "4.5.1"
},
{
"packager": "esp32",
"name": "mkspiffs",
"version": "0.2.3"
},
{
"packager": "esp32",
"name": "mklittlefs",
"version": "3.0.0-gnu12-dc7f933"
},
{
"packager": "arduino",
"name": "dfu-util",
"version": "0.11.0-arduino5"
}
]
These are referencing tools that are actually provided by other packages. Those packages are defined in the primary package index:
https://downloads.arduino.cc/packages/package_index.json
For example, this:
{
"packager": "esp32",
"name": "xtensa-esp32-elf-gcc",
"version": "esp-2021r2-patch5-8.4.0"
}
is referencing the tool defined in the primary package index like so:
{
"name": "xtensa-esp32s3-elf-gcc",
"version": "esp-2021r2-patch5-8.4.0",
"systems": [
{
"host": "aarch64-linux-gnu",
"url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
"archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-arm64.tar.gz",
"checksum": "SHA-256:b218c11122e5565b6442376ebd21a652abdfcbf90981afa3e177ce978710225d",
"size": "64233211"
},
{
"host": "arm-linux-gnueabihf",
"url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
"archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-armel.tar.gz",
"checksum": "SHA-256:967477434ad5483718915936a77ce915a10c5972a6b3fd02688a5c4e14182bfb",
"size": "63530586"
},
{
"host": "arm64-apple-darwin",
"url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
"archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos-arm64.tar.gz",
"checksum": "SHA-256:c64b05be25d26916c65dcfe11de9e60b96d58980b2df706d3074cb70b1ef6cb9",
"size": "66791095"
},
{
"host": "i686-mingw32",
"url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
"archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win32.zip",
"checksum": "SHA-256:658d3036ffdf11ddad6f0a784c8829f6ffd4dbd7c252d7f61722256d0ad43975",
"size": "82665716"
},
{
"host": "i686-pc-linux-gnu",
"url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
"archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-i686.tar.gz",
"checksum": "SHA-256:07671d01a63ebd389912787efb2b263677c7b351c07fe430ded733cdae95e81d",
"size": "70025439"
},
{
"host": "x86_64-apple-darwin",
"url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
"archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-macos.tar.gz",
"checksum": "SHA-256:99b6d44cea5aebbedc8b6965e7bf551aa4a40ed83ddbe1c0e9b7cb255564ded5",
"size": "75719772"
},
{
"host": "x86_64-mingw32",
"url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
"archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
"checksum": "SHA-256:9000be38d44bf79c39b93a2aeb99b42e956c593ccbc02fe31cb9c71ae1bbcb22",
"size": "86022563"
},
{
"host": "x86_64-pc-linux-gnu",
"url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
"archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-linux-amd64.tar.gz",
"checksum": "SHA-256:8aa17a6adf01efa5b1628c8ac578063a44d26ae9581d39486b92223a41ef262f",
"size": "68099473"
}
]
}
When the host is a 64-bit Windows machine (host ID x86_64-mingw32), this specific build of the tool is used:
{
"host": "x86_64-mingw32",
"url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2-patch5/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
"archiveFileName": "xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch5-win64.zip",
"checksum": "SHA-256:9000be38d44bf79c39b93a2aeb99b42e956c593ccbc02fe31cb9c71ae1bbcb22",
"size": "86022563"
}
Note that this is also served from GitHub.
So you would also need to set up your webserver to serve these tool dependencies.
The situation may be different for the arduino:dfu-util@0.11.0-arduino5 dependency:
{
"packager": "arduino",
"name": "dfu-util",
"version": "0.11.0-arduino5"
}
The reason is that this tool is served from downloads.arduino.cc, not GitHub:
{
"host": "i686-mingw32",
"url": "https://downloads.arduino.cc/tools/dfu-util-0.11-arduino5-windows_386.tar.gz",
"archiveFileName": "dfu-util-0.11-arduino5-windows_386.tar.gz",
"checksum": "SHA-256:6451e16bf77600fe2436c8708ab4b75077c49997cf8bedf03221d9d6726bb641",
"size": "571340"
}
(i686-mingw32 is used as a fallback on 64-bit Windows machines when there isn't a build of the tool for the x86_64-mingw32 host ID)
So if arduino.cc isn't blocked, then you might be able to get away without having to host that specific tool on your webserver.
If you would like to learn about the structure of the Arduino package index file, it is documented here:
https://arduino.github.io/arduino-cli/latest/package_index_json-specification/