From 20bc01d6d8083d807a0169e05394ad5e80f74a6c Mon Sep 17 00:00:00 2001 From: jcant0n Date: Tue, 11 Aug 2026 18:12:24 +0200 Subject: [PATCH] List the Embree headers individually instead of the directory The first CD run refused to publish: - vendored: v4.4.1 - resolved: v4.4.1 (up to date) - EmbreeGen/Headers/embree4 (c-header): updated Result: sources changed. ::error::upstream moved and Evergine.Bindings.Embree/runtimes exists, but no native artifacts were supplied The release had not moved; the directory source had. A directory is compared by hashing everything under its path, and this tree can never match upstream's: include/embree4 also carries eight .isph files for ISPC that this binding does not use, and it carries a rtcore_config.h that upstream does not have at all, because CMake generates it. So the comparison reported a change on every run with the release sitting still. The visible cost is a CD that cannot publish. The quieter one is that binding-updater would have read the same report every month, concluded upstream moved, and opened a pull request regenerating nothing. Listed one per header, each source is hashed as a single file, so what is not listed is not compared. Verified all nine match upstream at v4.4.1. --- binding.yml | 46 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/binding.yml b/binding.yml index 17f0209..869207b 100644 --- a/binding.yml +++ b/binding.yml @@ -27,10 +27,52 @@ upstream: track: stable current: v4.4.1 + # One entry per header rather than the directory, which is what this used to be. A + # directory source is compared by hashing everything under `path`, and this tree can + # never match upstream's: include/embree4 also carries eight .isph files for ISPC, which + # this binding does not use, and it carries a rtcore_config.h that upstream does not have + # (see the NOTE below). The comparison therefore reported "sources changed" on every run, + # even with the release sitting still — which fails the CD's native-coherence guard and + # would have the binding-updater open a pull request every month for nothing. + # + # Listed individually, each source is hashed as a single file, so what is not listed is + # simply not compared. sources: - repo: RenderKit/embree - remote-path: include/embree4 - path: EmbreeGen/Headers/embree4 + remote-path: include/embree4/rtcore.h + path: EmbreeGen/Headers/embree4/rtcore.h + format: c-header + - repo: RenderKit/embree + remote-path: include/embree4/rtcore_common.h + path: EmbreeGen/Headers/embree4/rtcore_common.h + format: c-header + - repo: RenderKit/embree + remote-path: include/embree4/rtcore_device.h + path: EmbreeGen/Headers/embree4/rtcore_device.h + format: c-header + - repo: RenderKit/embree + remote-path: include/embree4/rtcore_buffer.h + path: EmbreeGen/Headers/embree4/rtcore_buffer.h + format: c-header + - repo: RenderKit/embree + remote-path: include/embree4/rtcore_ray.h + path: EmbreeGen/Headers/embree4/rtcore_ray.h + format: c-header + - repo: RenderKit/embree + remote-path: include/embree4/rtcore_geometry.h + path: EmbreeGen/Headers/embree4/rtcore_geometry.h + format: c-header + - repo: RenderKit/embree + remote-path: include/embree4/rtcore_scene.h + path: EmbreeGen/Headers/embree4/rtcore_scene.h + format: c-header + - repo: RenderKit/embree + remote-path: include/embree4/rtcore_builder.h + path: EmbreeGen/Headers/embree4/rtcore_builder.h + format: c-header + - repo: RenderKit/embree + remote-path: include/embree4/rtcore_quaternion.h + path: EmbreeGen/Headers/embree4/rtcore_quaternion.h format: c-header generator: