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>

Reply via email to