On 25 February 2022 at 18:39, Tom Lee wrote: | So the tiledb upstream sources include *pre-generated *capnproto sources | that were generated using 0.8.0. The *update-serialization* target will
Indeed! I forgot about that. TileDB has a habit of (strongly) enforcing third-party dependencies, that conflicts somewhat with Debian best practices but is driven from cross-platform cross-OS multilanguage uses. Hard to fully change. | regenerate those sources for us using whatever version of capnproto is | installed but that target doesn't run by default. So here I'm making | *update-serialization* a dependency of tiledb_shared and tiledb_static to | ensure it runs. Very clever idea. I like it. | It could also be achieved by modifying debian/rules to invoke the | *update-serialization | *target before running the main build if you'd prefer that, I was just | trying to come up with something that upstream might be interested in to | make future upgrades more straightforward for us. The serialization format is quite important for TileDB as it governs the interchange one _can_ do from our (Open Source, MIT licensed) TileDB library and apps to the (not Open Source) TileDB Cloud service. That is conceivably a key a feature for TileDB ("the company") though of course not a strict functional requirement for the open source package. I also think CapnProto might be reliably forward-compatible so I am interested in testing this with 0.9.1. Whether or not I get my colleagues to take such a patch "in the short to medium term". | Why a second variable TILEDB_UPDATE_SERIALIZATION? To cover the 'yes well | > it | > is 0.8.0 but you will live' case from allowing 0.9.1 in the new interval | > spec | > '++set(TILEDB_CAPNPROTO_VERSION 0.8.0...0.9.1)' ? | > | | Again, by default *update-serialization *won't run so this option forces it | to run by adding it as a dependency of tiledb_shared/tiledb_static. Yup. | Now, back to the patch: if it's not clear, the patch I sent you is | something to be applied to the whole source repo, not something added to | the quilt series. It's a patch that includes a patch, if you like. :) | Should apply cleanly against 2.6.2-2 with *patch -p1 | <tiledb-capnproto-0.9.1.patch*: It's entirely possibly I failed there. Which is why I urged you to consider working in git. While we all grew up with diff and patch and emailing stuff around (hey, the kernel effectively still does, as does our BTS) I do have a preference for git pull/merge requests. Can we try this here? | tom@debian-bullseye-arm64:~/src/tiledb-2.6.2$ patch -p1 | <../tiledb-capnproto-0.9.1.patch | patching file debian/control | patching file debian/patches/capnp-0.9.1 | patching file debian/patches/series | patching file debian/rules | tom@debian-bullseye-arm64:~/src/tiledb-2.6.2$ Maybe I had a thinko and after running the above (as always with added --dry-run and --verbose) I wasn't thinking all that clearly _and just copied the whole outer patch including all patches to the debian/patches/ dir_. I then "gave up" and patches by hand. That is what blew the build. | Anyway, you don't have to use that if it's not working for you but the key | changes were: | | 1. Add *capnproto (>= 0.8.0) *to the Build-Depends in debian/control Yep | 2. Set TILEDB_CAPNPROTO_VERSION to 0.8.0...0.9.1 (either directly in the | configure step or via the cmake foo in my patch) Yep | 3. Invoke the *update-serialization* cmake target before building shared | libraries (either right before the build step or via the cmake foo in my | patch) Yep | You can skip the TILEDB_UPDATE_SERIALIZATION stuff if it's getting in the | way. Let me stash / save debian/changelog etc and try again in a bit. Best, Dirk -- https://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org