New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Build non-conda-forge dependencies with vcpkg. #242
Conversation
Hi! This is the friendly automated conda-forge-linting service. I just wanted to let you know that I linted all conda-recipes in your PR ( |
-DTILEDB_AZURE=ON ^ | ||
-DTILEDB_GCS=%TILEDB_GCS% ^ | ||
-DTILEDB_S3=ON ^ | ||
-DTILEDB_HDFS=OFF ^ | ||
-DCOMPILER_SUPPORTS_AVX2=OFF ^ | ||
-DTILEDB_SKIP_S3AWSSDK_DIR_LENGTH_CHECK=ON ^ | ||
-DTILEDB_SERIALIZATION=ON ^ | ||
-Dlibxml2_DIR="%LIBRARY_PREFIX%" ^ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
libxml2 is not used on Windows.
CI on linux-arm64 fails when vcpkg tries to find a compiler, with:
|
That's a strange error. tiledb-feedstock/recipe/build.sh Line 8 in c44154a
Is there any reason why this |
The lz4 feedstock does not yet provide a CMake config.
On Windows the same change is a bit more tricky to apply, but we are not using custom compilers either way.
Vcpkg overrides the compiler paths without considering the |
CI is green! 🎉 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Now that #244 was merged, could you please rebase your changes onto main and then rerender?
@conda-forge-admin, please rerender |
…nda-forge-pinning 2024.03.02.14.00.21
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From a conda-build perspective, this looks good to me
@@ -0,0 +1,68 @@ | |||
## vcpkg system ports for TileDB |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This documentation is great. Thanks!
And to make sure I understand, currently the only dependencies being installed with vcpkg are capnproto and libwebp, right? And all the other dependencies are installed from conda-forge. Are there known issues with migrating to the conda-forge versions of capnproto and libwebp? The following packages will be built and installed:
abseil[core,cxx17]:x64-linux -> system -- $SRC_DIR/system-ports/abseil
aws-sdk-cpp[core,identity-management,s3,sts]:x64-linux -> system -- $SRC_DIR/system-ports/aws-sdk-cpp
azure-storage-blobs-cpp:x64-linux -> system -- $SRC_DIR/system-ports/azure-storage-blobs-cpp
bzip2:x64-linux -> system -- $SRC_DIR/system-ports/bzip2
capnproto:x64-linux -> 1.0.1 -- $SRC_DIR/build/_deps/vcpkg-src/buildtrees/versioning_/versions/capnproto/4a615543c6406b84fc52a931335d7fdb70037627
curl[core,zstd]:x64-linux -> system -- $SRC_DIR/system-ports/curl
* fmt:x64-linux -> 9.1.0#1 -- $SRC_DIR/ports/fmt
google-cloud-cpp[core,storage]:x64-linux -> system -- $SRC_DIR/system-ports/google-cloud-cpp
libmagic:x64-linux -> 5.40#1 -- $SRC_DIR/ports/libmagic
libwebp[core,libwebpmux,nearlossless,simd]:x64-linux -> 1.3.2 -- $SRC_DIR/build/_deps/vcpkg-src/buildtrees/versioning_/versions/libwebp/0b981028589375097039d5e39e7d87659cdfa824
libxml2[core,lzma,zlib]:x64-linux -> system -- $SRC_DIR/system-ports/libxml2
lz4:x64-linux -> system -- $SRC_DIR/system-ports/lz4
openssl:x64-linux -> system -- $SRC_DIR/system-ports/openssl
* pcre2[core,jit,platform-default-features]:x64-linux -> 10.42#1 -- $SRC_DIR/ports/pcre2
spdlog:x64-linux -> 1.11.0 -- $SRC_DIR/ports/spdlog
* vcpkg-cmake:x64-linux -> 2022-10-30 -- $SRC_DIR/ports/vcpkg-cmake
* vcpkg-cmake-config:x64-linux -> 2022-02-06#1 -- $SRC_DIR/ports/vcpkg-cmake-config
zlib:x64-linux -> system -- $SRC_DIR/system-ports/zlib
zstd:x64-linux -> system -- $SRC_DIR/system-ports/zstd |
There is also libmagic, whose feedstock is unmaintained and does not support Windows. I took a look at capnproto and libwebp. The former does not support Linux on arm64 and ppcle64 (conda-forge/capnproto-feedstock#40), and the latter does not provide CMake targets on non-Windows (I can fix it). Either way I would prefer to address these dependencies in a subsequent PR. |
Absolutely
Oh, I didn't realize the And I know |
Oh I forgot about
A better indicator to see if a dependency is provided by Conda is if the version is |
We can use the upstream libwebp after conda-forge/libwebp-base-feedstock#20 is merged. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, if the pipelines pass.
I don't think it's a good idea to use vcpkg. Let's use conda-forge packages for all dependencies. |
@isuruf our goal is to use conda-forge packages as much as possible. And when a conda-forge package is not suitable for our needs, we plan to make a good faith effort to update it, eg conda-forge/libwebp-base-feedstock#20. Using vcpkg is the last-resort, fallback option. Currently the following dependencies are installed via vcpkg: capnproto, fmt, libmagic, libwebp, pcre2, spdlog I propose we merge this PR as is and then update the dependencies to use conda-forge according to these criteria:
|
@conda-forge-admin, please rerender |
Hi! This is the friendly automated conda-forge-webservice. I tried to rerender for you, but it looks like there was nothing to do. This message was generated by GitHub actions workflow run https://github.com/conda-forge/tiledb-feedstock/actions/runs/8204058822. |
CI failures are transient. I don't know how to rerun it. |
@teo-tsirpanis, the better way is to get a maintainer to hit the |
Thanks! |
Merging. We'll proceed with the plan in #242 (comment) to continue migrating as many dependencies to use conda-forge as they become available |
Note to self: this PR didn't bump the build number, so no new binaries will be uploaded for this change (which is fine, the purpose of this PR was to improve the build process). The vcpkg-enabled builds will be uploaded with the next version or build number bump |
Checklist
0
(if the version changed)conda-smithy
(Use the phrase@conda-forge-admin, please rerender
in a comment in this PR for automated rerendering)This PR enables TileDB's support for acquiring dependencies with vcpkg. To prevent vcpkg for building even dependencies already provided by conda-forge, I added empty overlay ports for these dependencies as recommended by the vcpkg team. These ports are in a
recipe/tiledb-patches
folder that gets copied to the downloaded sources.While there is a vcpkg Conda package we cannot use it for two reasons. First, that package does not provide the vcpkg executable in a way CMake can find it. Second the vcpkg folder must be a cloned git repository to allow getting the requested port version from past commits. For these reasons we rely on TileDB's automatic mechanism that clones vcpkg.
I also added a document that explains how these port overlays get added.