Hi,
We deploy OAK apps to cameras in the field, some connected only over LTE, and we're looking for a way to reduce transfer size. Each .oakapp is ~1.9G, and even when only our application code changes, the entire file is re-sent.
Inspecting the .oakapp, I can see the per-build-stage layers. I expected the large dependency layer to be stable across builds, but its hash changes every time. Comparing the largest layer (lower-1.tar.lz4, ~1.6G) between two builds of identical source (v2.8.2 vs v2.8.2_rev1), the uncompressed contents are byte-for-byte identical — a diff of tar tv output shows same path, same size, only the mtime differs (e.g. 14:55 vs 15:14). Since mtime is stored in the tar header, the compressed layer and its hash differ, so the full 1.6G re-transfers despite no real change.
Questions:
Does oakctl support delta/content-addressed layer transfer, so unchanged layers are skipped when deploying to a device?
Can the build be made reproducible (e.g. normalized mtimes in the tar step) so unchanged layers keep a stable hash?
Is moving stable dependencies into a pre-baked private base image the recommended pattern to keep only the app layer changing between releases?
Any guidance or planned improvements here would be very helpful.
Kind regards,
Ryan