Hi Dirk, First let me answer a few of your questions that I just realized I missed:
Can you explain (to a cmake newb) the logic behind > > ++if (TILEDB_UPDATE_SERIALIZATION) > ++ add_dependencies(tiledb_shared update-serialization) > ++endif() > + if (TILEDB_STATIC) > + set_target_properties(tiledb_static > + PROPERTIES > + PUBLIC_HEADER "${TILEDB_PUBLIC_HEADERS}" > + ) > ++ if (TILEDB_UPDATE_SERIALIZATION) > ++ add_dependencies(tiledb_static update-serialization) > ++ endif() > + endif() > So the tiledb upstream sources include *pre-generated *capnproto sources that were generated using 0.8.0. The *update-serialization* target will 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. 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. 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. 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*: 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$ 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 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) 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) You can skip the TILEDB_UPDATE_SERIALIZATION stuff if it's getting in the way. Cheers, Tom On Fri, Feb 25, 2022 at 1:14 PM Tom Lee <deb...@tomlee.co> wrote: > Hi Dirk, > > Thanks for giving it a shot. Surprised to hear the patch didn't apply > cleanly, believe I worked directly from the source pulled via > > dget -a http://deb.debian.org/debian/pool/main/t/tiledb/tiledb_2.6.2-2.dsc > > I even had a DD co-maintainer try the patch before I sent it your way so > not quite sure what I messed up. In terms of testing, tested by myself and > the co-maintainer. I'm not sure what to suggest here but I can try > regenerating the patch, perhaps I should try again using dpkg-source > --commit. > > Can't speak to the build failure, perhaps send through your own patch and > the full build log and I'll take a look. > > Cheers, > Tom > > > On Fri, Feb 25, 2022 at 5:17 AM Dirk Eddelbuettel <e...@debian.org> wrote: > >> >> Tom, >> >> Sad news. The build fails for me in unstable as is (using an updated >> pbuilder chroot). I log these to file and what I see is >> >> cd /build/tiledb-2.6.2/obj-x86_64-linux-gnu/tiledb/tiledb && /usr/bin/cc >> -DFMT_LOCALE -DFMT_SHARED -DSPDLOG_COMPILED_LIB -DSPDLOG_FMT_EXTERNAL >> -DSPDLOG_FMT_EXTERNAL=1 -DSPDLOG_SHARED_LIB -DTILEDB_CORE_OBJECTS_EXPORTS >> -DTILEDB_SERIALIZATION -DTILEDB_STATS -D_FILE_OFFSET_BITS=64 >> -I/build/tiledb-2.6.2/tiledb/.. >> -I/build/tiledb-2.6.2/tiledb/../tiledb/sm/c_api >> -I/build/tiledb-2.6.2/tiledb/../external/include >> -I/build/tiledb-2.6.2/tiledb/../external/include/bitshuffle >> -I/build/tiledb-2.6.2/tiledb/../external/include/blosc >> -I/build/tiledb-2.6.2/external/blosc/include >> -I/build/tiledb-2.6.2/obj-x86_64-linux-gnu/tiledb/tiledb/.. >> -I/build/tiledb-2.6.2/tiledb/../tiledb/sm/cpp_api >> -I/build/tiledb-2.6.2/obj-x86_64-linux-gnu/tiledb/tiledb -g -O2 >> -ffile-prefix-map=/build/tiledb-2.6.2=. -fstack-protector-strong -Wformat >> -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC >> -fvisibility=hidden -Wall -Wextra -mavx2 -w -DPTHREAD_AVAILABLE -MD -MT >> tiledb/CMakeFiles/TILEDB_CORE_OBJECTS.dir/__/external/blosc/src/shuffle-avx2.c.o >> -MF >> CMakeFiles/TILEDB_CORE_OBJECTS.dir/__/external/blosc/src/shuffle-avx2.c.o.d >> -o >> CMakeFiles/TILEDB_CORE_OBJECTS.dir/__/external/blosc/src/shuffle-avx2.c.o >> -c /build/tiledb-2.6.2/external/blosc/src/shuffle-avx2.c >> [ 96%] Building CXX object >> tiledb/CMakeFiles/TILEDB_CORE_OBJECTS.dir/sm/serialization/posix/tiledb-rest.capnp.c++.o >> cd /build/tiledb-2.6.2/obj-x86_64-linux-gnu/tiledb/tiledb && /usr/bin/c++ >> -DFMT_LOCALE -DFMT_SHARED -DSPDLOG_COMPILED_LIB -DSPDLOG_FMT_EXTERNAL >> -DSPDLOG_FMT_EXTERNAL=1 -DSPDLOG_SHARED_LIB -DTILEDB_CORE_OBJECTS_EXPORTS >> -DTILEDB_SERIALIZATION -DTILEDB_STATS -D_FILE_OFFSET_BITS=64 >> -I/build/tiledb-2.6.2/tiledb/.. >> -I/build/tiledb-2.6.2/tiledb/../tiledb/sm/c_api >> -I/build/tiledb-2.6.2/tiledb/../external/include >> -I/build/tiledb-2.6.2/tiledb/../external/include/bitshuffle >> -I/build/tiledb-2.6.2/tiledb/../external/include/blosc >> -I/build/tiledb-2.6.2/external/blosc/include >> -I/build/tiledb-2.6.2/obj-x86_64-linux-gnu/tiledb/tiledb/.. >> -I/build/tiledb-2.6.2/tiledb/../tiledb/sm/cpp_api >> -I/build/tiledb-2.6.2/obj-x86_64-linux-gnu/tiledb/tiledb -g -O2 >> -ffile-prefix-map=/build/tiledb-2.6.2=. -fstack-protector-strong -Wformat >> -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC >> -fvisibility=hidden -Wall -Wextra -Wno-literal-suffix -mavx2 -std=c++17 -MD >> -MT >> tiledb/CMakeFiles/TILEDB_CORE_OBJECTS.dir/sm/serialization/posix/tiledb-rest.capnp.c++.o >> -MF >> CMakeFiles/TILEDB_CORE_OBJECTS.dir/sm/serialization/posix/tiledb-rest.capnp.c++.o.d >> -o >> CMakeFiles/TILEDB_CORE_OBJECTS.dir/sm/serialization/posix/tiledb-rest.capnp.c++.o >> -c /build/tiledb-2.6.2/tiledb/sm/serialization/posix/tiledb-rest.capnp.c++ >> make[7]: Leaving directory >> '/build/tiledb-2.6.2/obj-x86_64-linux-gnu/tiledb' >> [ 96%] Built target TILEDB_CORE_OBJECTS >> make[6]: Leaving directory >> '/build/tiledb-2.6.2/obj-x86_64-linux-gnu/tiledb' >> make[5]: *** [Makefile:146: all] Error 2 >> make[5]: Leaving directory >> '/build/tiledb-2.6.2/obj-x86_64-linux-gnu/tiledb' >> make[4]: *** [CMakeFiles/tiledb.dir/build.make:89: >> tiledb-prefix/src/tiledb-stamp/tiledb-build] Error 2 >> make[4]: Leaving directory '/build/tiledb-2.6.2/obj-x86_64-linux-gnu' >> make[3]: *** [CMakeFiles/Makefile2:90: CMakeFiles/tiledb.dir/all] Error 2 >> make[3]: Leaving directory '/build/tiledb-2.6.2/obj-x86_64-linux-gnu' >> make[2]: *** [Makefile:94: all] Error 2 >> make[2]: Leaving directory '/build/tiledb-2.6.2/obj-x86_64-linux-gnu' >> dh_auto_build: error: cd obj-x86_64-linux-gnu && make -j12 >> "INSTALL=install --strip-program=true" VERBOSE=1 returned exit code 2 >> make[1]: *** [debian/rules:47: override_dh_auto_build] Error 25 >> make[1]: Leaving directory '/build/tiledb-2.6.2' >> make: *** [debian/rules:22: binary] Error 2 >> dpkg-buildpackage: error: debian/rules binary subprocess returned exit >> status 2 >> >> which makes no sense to me as I see no error. >> >> I would appreciate some help here. >> >> Dirk >> >> -- >> https://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org > > > > -- > *Tom Lee */ http://tomlee.co / @tglee <http://twitter.com/tglee> > > -- *Tom Lee */ http://tomlee.co / @tglee <http://twitter.com/tglee>