Start explanations on "compiler concepts"#2701
Conversation
✅ Deploy Preview for conda-forge-previews ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
docs/maintainer/understanding_conda_forge/compilation-concepts.md
Outdated
Show resolved
Hide resolved
h-vetinari
left a comment
There was a problem hiding this comment.
This is an amazing start, thanks a lot @mgorny!
I left one big comment about (potentially) increasing the scope here a tad, especially around the existence/role of symbols. I'd also like to explain the sysroot a bit more. It's fine to leave some of that to other PRs, this one's already pretty hefty, but feel free to keep going.
For the environment stuff (+cross-compilation) I have a certain pedagogy in mind, if you want I can prepare a draft of that based on what you wrote up here. I'd like to split that out though
| object file separately to enable running multiple compiler processes simultaneously to benefit from | ||
| multiple logical CPUs. | ||
|
|
||
| ## Build systems |
There was a problem hiding this comment.
I'd kinda prefer to make a distinction between "Build system generators" / "Build orchestrators" / "Build management tools" (CMake etc.) and "Build systems" / "Build executors" (ninja etc.).
Open to other naming suggestions, as long as we can somehow keep them separate (perhaps with an admission that CMake etc. are often called build systems when that distinction is irrelevant).
There was a problem hiding this comment.
Yeah, it's a complex topic. That said, I'd avoid uncommon terms like "orchestrators"; if only because this would mean we're inventing new nomenclature (never heard anyone talking about "build orchestrator".
Overall, I've tried to bunch them all together because there are many different ways in which people use them: a Makefile can either be a simple output of a "generator", or a full-fledged build system with lots of GNU extensions to make it work. Also, at least cmake and meson seem to be aiming towards hiding the underlying builder as an implementation detail: cmake --build, meson compile).
There was a problem hiding this comment.
I see that CMake and Meson both call themselves a "build system". GNU makes describes itself as a "tool which controls the generation of executables and other non-source files of a program from the program's source files." Wikipedia seems to arbitrarily talk of "software development tools", "build automation tools".
| Projects usually adapt one of the existing build systems, such as GNU autotools, CMake or Meson. | ||
| These build systems in turn generate Makefiles, Ninja build scripts or project files for IDEs to use | ||
| and perform the actual build. |
There was a problem hiding this comment.
Let's turn this into a short section
| Projects usually adapt one of the existing build systems, such as GNU autotools, CMake or Meson. | |
| These build systems in turn generate Makefiles, Ninja build scripts or project files for IDEs to use | |
| and perform the actual build. | |
| ## Build executor | |
| The build orchestrator usually does not execute the actual commands itself, but calls a dedicated | |
| build executor such Ninja, make, etc. Orchestrators may support generating instructions for several | |
| build executors, or different executors per platform. Projects often have a preferred executor. | |
| In almost all cases, build orchestrator and build orchestrator can be considered as if they were | |
| acting as a single unit. |
docs/maintainer/understanding_conda_forge/compilation-concepts.md
Outdated
Show resolved
Hide resolved
docs/maintainer/understanding_conda_forge/compilation-concepts.md
Outdated
Show resolved
Hide resolved
docs/maintainer/understanding_conda_forge/compilation-concepts.md
Outdated
Show resolved
Hide resolved
docs/maintainer/understanding_conda_forge/compilation-concepts.md
Outdated
Show resolved
Hide resolved
docs/maintainer/understanding_conda_forge/compilation-concepts.md
Outdated
Show resolved
Hide resolved
docs/maintainer/understanding_conda_forge/compilation-concepts.md
Outdated
Show resolved
Hide resolved
Note that there's also https://conda-forge.org/docs/maintainer/understanding_conda_forge/cross-compilation/ with some overlap. |
docs/maintainer/understanding_conda_forge/compilation-concepts.md
Outdated
Show resolved
Hide resolved
docs/maintainer/understanding_conda_forge/compilation-concepts.md
Outdated
Show resolved
Hide resolved
docs/maintainer/understanding_conda_forge/compilation-concepts.md
Outdated
Show resolved
Hide resolved
docs/maintainer/understanding_conda_forge/compilation-concepts.md
Outdated
Show resolved
Hide resolved
docs/maintainer/understanding_conda_forge/compilation-concepts.md
Outdated
Show resolved
Hide resolved
docs/maintainer/understanding_conda_forge/compilation-concepts.md
Outdated
Show resolved
Hide resolved
docs/maintainer/understanding_conda_forge/compilation-concepts.md
Outdated
Show resolved
Hide resolved
docs/maintainer/understanding_conda_forge/compilation-concepts.md
Outdated
Show resolved
Hide resolved
docs/maintainer/understanding_conda_forge/compilation-concepts.md
Outdated
Show resolved
Hide resolved
docs/maintainer/understanding_conda_forge/compilation-concepts.md
Outdated
Show resolved
Hide resolved
docs/maintainer/understanding_conda_forge/compilation-concepts.md
Outdated
Show resolved
Hide resolved
docs/maintainer/understanding_conda_forge/compilation-concepts.md
Outdated
Show resolved
Hide resolved
docs/maintainer/understanding_conda_forge/compilation-concepts.md
Outdated
Show resolved
Hide resolved
docs/maintainer/understanding_conda_forge/compilation-concepts.md
Outdated
Show resolved
Hide resolved
|
Such a great read, @mgorny! Thanks for the write up. I left some comments as a non-expert who has only had limited contact with this contact through (intuition-driven at best) practice. 🙏 |
|
I've tried to add a bit of explanation of interface/implementation and API/ABI split. I have consulted the pypackaging docs, but tried to keep things much shorter and simpler. |
Signed-off-by: Michał Górny <[email protected]>
Signed-off-by: Michał Górny <[email protected]>
Signed-off-by: Michał Górny <[email protected]>
Signed-off-by: Michał Górny <[email protected]>
Signed-off-by: Michał Górny <[email protected]>
Co-authored-by: h-vetinari <[email protected]> Co-authored-by: jaimergp <[email protected]>
Signed-off-by: Michał Górny <[email protected]>
Signed-off-by: Michał Górny <[email protected]>
Signed-off-by: Michał Górny <[email protected]>
Signed-off-by: Michał Górny <[email protected]>
Signed-off-by: Michał Górny <[email protected]>
2a39988 to
550e15c
Compare
Signed-off-by: Michał Górny <[email protected]>
Signed-off-by: Michał Górny <[email protected]>
docs/maintainer/understanding_conda_forge/compilation-concepts.md
Outdated
Show resolved
Hide resolved
Signed-off-by: Michał Górny <[email protected]>
Signed-off-by: Michał Górny <[email protected]>
Signed-off-by: Michał Górny <[email protected]>
Signed-off-by: Michał Górny <[email protected]>
Signed-off-by: Michał Górny <[email protected]>
Signed-off-by: Michał Górny <[email protected]>
|
Okay, I think this is ready for another review. I've tried to cover most of your suggestions, while keeping it reasonably focused. Still a bit on the edge over talking a bit more about the filesystem hierarchy. I've also managed to integrate the Python part while keeping it reasonably generic and treating various aspects of Python as examples of arch-dep/indep and ABI. I've also removed the bits considered out of scope. |
h-vetinari
left a comment
There was a problem hiding this comment.
I think this PR is excellent work, and it would likely be more helpful to just get it merged as a baseline, and continue any remaining points in follow-ups.
Thank you very much @mgorny!

PR Checklist:
docs/orcommunity/, you have added it to the sidebar in the corresponding_sidebar.jsonfileFixes Quansight-Labs/conda-ecosystem-sta-mgmt#67
Per @jaimergp 's suggestions.