Comments (5)
Hi @jacobfriedman thanks for your question.
The general Conan Center index recipe policy is to assume that there are some baseline tools installed in the system where the recipes get created
One of such tools is CMake, for which we assume CMake 3.15 is there. It's only when libraries depend on newer cmake features where you can see a explicit requirement to that upper bound, like self.tool_requires("cmake/[>=3.20 <4]")
.
We know that this is a challenge for barebones enironments that do not provide those binaries, for which Conan has some tools to help with that, namely the [tool_requires]
(Docs here) section of your profiles.
Let me know if this helps :) - Happy to discuss your use-case in which these binaries are unavailable from the start
from conan-center-index.
The use-case is a barebones install. Ignoring the use-case, I would expect each recipe to, at least, explicitly state in its build requirements that cmake 3.15 is required, if it is indeed required. Problems arise in packaging when making an assumption. I'm not sure who's has the time to scour through all the recipes, but it should be done. I can start with a pull request for zlib, stating self.tool_requires("cmake/[>=3.15 <4]")
. Would that be agreeable?
from conan-center-index.
The use-case is a barebones install.
as far as we are aware, this is not the most common use case in Conan Center based on the overall feedback.
Problems arise in packaging when making an assumption.
Apologies if this isn't clear in the documentation of Conan Center - but as my colleague is mentioning, in Conan Center there is an expectation of some minimal tooling already present in the system, CMake is included in that as well.
There are historical reasons why some recipes have tool requirements on CMake, and some don't - this is whenever a recipe requires a newer version of CMake than what we assume is the baseline - the CI in Conan Center targets CMake 3.15 - we want to keep this baseline close to "the oldest version that users are likely to be on" - which I would imagine is around whatever RHEL7 or Ubuntu 18.04 have, by now.
There is a secondary issue, which has been mitigated more recently, which each is that reach recipe in the past expressed a requirement on a different version of cmake - and solving some graphs would have required a myriad of cmake versions, which is undesirable, especially back when they had to be built from source.
I can start with a pull request for zlib, stating self.tool_requires("cmake/[>=3.15 <4]"). Would that be agreeable?
Not at the moment - we are considering in the future to express this in all recipes that require cmake - but we also need to find a solution for users that expressly want to use their system version, or have that expectation.
In the meantime, as my colleague mentions, adding the following to your host profile:
[tool_requires]
cmake/[>=3.15 <4]
To your host profile should give you the ability to operate on a barebones system, without having to modify any recipe.
from conan-center-index.
If building cmake from scratch, the addition to a global (host) profile on a local/siloed remote wouldn't necessarily do it. I wonder what else I need to add to my host profile to satisfy other packages, and if there are any other chicken-and-egg scenarios. If only those requirements were explicitly stated! From an analyst's perspective, you'd want to know what tool was used to build a program, and what tools that program requires.
Yes, this is an edge case. Yes, I could use a different profile for my cmake build. However, making assumptions about a user's configuration is not satisfactory for my particular concern. And; RHEL7 and U18 do not ship with cmake.
It may be grunt work. Aside from the time taken, what is the drawback of explicitly stating tool_requires in all recipes?
from conan-center-index.
I'm thinking of build_requirements' hyperexplicit boostrap-dependency graph down to early GCC compilers. Or, skip all that and just install bootstrap llvm. run-requirements will also need specific parts of llvm.
from conan-center-index.
Related Issues (20)
- [package] freetype/2.13.2: Could not determine type of Windows resource compiler
- [package] grpc/1.54.3: Unable to cross-compile with Android NDK HOT 1
- [question] libmysqlclient/8.1.0 cross compile error
- [package] libpq/15.5: Missing OpenSSL 3.2.x Fix Patch HOT 3
- (arrow::dataset) Not suport on Windows static library
- [package] xsimd/13.0.0: can't use with AppleClang 12 and C++17 HOT 4
- [request] mongo-cxx-driver/3.10.2
- [package] arrow/16.1.0: Version conflict if arrow*:parquet=True
- [package] libvpx/113.1: Doesn't build on VS2022
- [bug] Pulseaudio and clang 15 HOT 11
- [request] mongo-c-driver/1.27.3 HOT 1
- Qt recipe does not allow custom QT_NAMESPACE
- [request] asio-grpc/3.1.0
- [request] PySide/6.5
- [package] qt/6.7.1: "essential" submodules can not be disabled
- [question] Use OpenCV with GStreamer HOT 1
- [package] abseil/20240116.2: Fatal build failure HOT 11
- [package] icu/74.*: wrong license
- [package] arrow/*: duplicate boost::boost requirement for libarrow component
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from conan-center-index.