Git Product home page Git Product logo

Comments (5)

AbrilRBS avatar AbrilRBS commented on August 18, 2024

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.

jacobfriedman avatar jacobfriedman commented on August 18, 2024

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.

jcar87 avatar jcar87 commented on August 18, 2024

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.

jacobfriedman avatar jacobfriedman commented on August 18, 2024

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.

jacobfriedman avatar jacobfriedman commented on August 18, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.