-
Notifications
You must be signed in to change notification settings - Fork 87
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
cmake build and cross-platform github CI (test, wheels, conda) #91
base: master
Are you sure you want to change the base?
Conversation
* decouple from submodule and use system libdatrie/dev-package instead * chg: add test from installed wheel (ci only on ubuntu for now)
#2) * add cmake module to find libdatrie, remove git submodule * remove vcpkg install from macos, only use lib pkg on linux * add more workflows for manylinux wheels and release
Why should we introduce a yet another pretty large dependency, if as it is it is already builds pretty fine? CMake is usually needed for projects that rely on CMake modules (usually in its stdlib) heavily. But libdatrie is not built with CMake and doesn't use CMake routines to generate a CMake module for its autodiscovery. I see no point in using CMake here. |
BTW, |
That was more-or-less the most workable thing I could come up with, BUT, it's already gone now (the submodule is back). In this case, the main reason for the whole cmake thing is having a consistent and portable build across multiple platforms and toolchains. Sadly the state of libdatrie OS packages (either lacking or broken) makes it somewhat less of a "win", but it does the right things in the ci examples:
|
Well, between your feedback and some conda-forge discussion I changed my mind about the git submodule thing. I'm going to put that back and adjust the cmake bits. |
Generated a random (flaky CI) error with hypothesis on macos:
|
* restore git submodule, set commit d1dfdb8, make sure path uses https url * switch cmake bits to use submodule hdrs/srcs, let cmake init the submodule if empty * add updated conda recipe and corresponding ci workflow
Signed-off-by: Stephen L Arnold <nerdboy@gentoo.org>
Signed-off-by: Stephen L Arnold <nerdboy@gentoo.org>
Signed-off-by: Stephen L Arnold <nerdboy@gentoo.org>
You're absolutely right about upstream not using cmake BUT cmake is used by thirdparty packagers (eg, vcpkg and brew) and in this case we have to use cmake pkg-config or a custom findDatrie module. The bigger "win" is what I mentioned previously (ie, clean and consumable cross-platform builds/pkgs). I really don't mean to seem like I'm pushing this on you, I just found it very beneficial for a couple of projects (with big dependency chains and cross-platform reqs) so I'm just trying to share it back upstream. |
Signed-off-by: Stephen L Arnold <nerdboy@gentoo.org>
Signed-off-by: Stephen L Arnold <nerdboy@gentoo.org>
Signed-off-by: Stephen L Arnold <nerdboy@gentoo.org>
Signed-off-by: Stephen L Arnold <nerdboy@gentoo.org>
Signed-off-by: Stephen L Arnold <nerdboy@gentoo.org>
Signed-off-by: Stephen L Arnold <nerdboy@gentoo.org>
Signed-off-by: Stephen L Arnold <nerdboy@gentoo.org>
* new: add updated conda recipe and corresponding ci workflow * chg: restore git submodule, set commit d1dfdb8 (uses github relative path) * new: dev: add support for generating test coverage data * update cmake build flags for cython if WITH_COVERAGE * ci uses platform host pybind11, libdatrie (linux-only) * update cmake option handling, set version info * add cmake cmd to copy inplace extension to src/ (coverage only) * fix: dev: add test decorator for macos taking longer on a test * fix: dev: add missing vcpkg action param (not in the readme) * setupOnly *requires* vcpkgGitCommitId (only in hosted examples) * use environment.devenv.yml with condadev * fix: dev: "flaky" test failed again, extend deadline to 2500 ms * macos has occasional lag issues with disk I/O ?
This actually takes care of several issues/PRs (some open, some closed).
Changes: