-
Notifications
You must be signed in to change notification settings - Fork 183
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
Feature design proposal/prototype: pixi build
#1654
Comments
pixi build
pixi build
How do you see the build tasks interact with regular pixi tasks? I wonder if having a build task may confuse users, given the existence of more generic pixi tasks. edit: I see also that #1653 adds dependencies to the build section. wouldn't this risk confusing users? Would there be a way to 'promote' a given environment to be used for a build task? I assume we could also infer automatically a |
As a user, I would get confused if the package building task were named anything other than |
Hi @olivier-lacroix, I've updated the description with the latest discussed idea. If hopefully getting your worries out of the way. Automatically infer what build to run is of course an interesting idea, which shouldn't be to complex. The wheel building is an interesting part as we can already do that with the |
For those following the issue. The current prototype plan is:
|
Following up on this, I wanted to understand what you mean exactly by Does this mean that if you have a project that has both conda and pypi deps, this initial version of |
I think this will do pretty much exactly what I'd like to do, especially if it includes the last bullet point from gh-793 ("Have a workflow like What I have in mind is working on a stack of related packages (e.g., meson, meson-python, cython, numpy, scipy) where each of those have their own One question I have is whether you are planning to make a distinction between building a package that's relocatable locally vs. one that is portable to other machines. Or will To clarify, say I'm linking to a system library like Apple Accelerate (the new one, in macOS >=13.3) or I'm using
For conda packages there's no analogy to (1), but there is for (2) and (3). I'd mostly use (2) I think, because (3) is usually happening in CI for the things I work on - but I can see (3) being useful as well for team-based projects and private conda channels (perhaps avoiding the work to set up separate CI). |
@rgommers Thanks for your input! What you are describing is what we call the workspace workflow where you can have multiple local (or remote) pixi projects reference each-other. And this is something we aim to specifically support in the future. Besides pixi projects we also want to support both conda-builds This will require a lot more thinking and experimenting though. :) Fun times!
I see at last two workflows that we need to support:
I think by design we want the artifacts that are produced for those two workflows to be as much the same as possible so that you can't get into a situation where it works as a source dependency but not when the source dependency is first published as a binary (through CI or otherwise) and you would consume that. In that sense, we should always generate binaries that are relocatable to other machines as well. However, I recognize that for local development this might not be ideal. Debug vs release builds, or pythons editable installs are another example of this. This is something we are going to have to figure out. Currently, we are working towards an initial solution that, although still far from ideal, will work and will still allow for enough flexibility to add more advanced use cases or optimizations for speeding up local development. Does that answer your questions? |
Yes! And Ideally, if at some point, we have a way to tell pixi to interpret your |
Thanks for the detailed answer @baszalmstra, that answers my questions and all makes perfect sense to me. |
As #793 didn't give us enough discussion to finalize a design that fit our ideas, so we've started an ultra simple prototype. This issue is to share the status and hopefully fetch more input from our contributors.
The goal:
Out of scope
conda
andpypi
projects.The
build
section in the manifest fileThe
build
commandpixi build conda
build.conda.task
in that environment.The build tool.
We want users to not get locked in by our build backend for which tools they can use to build packages.
Building a backend should be simple and straight forward, with a small communication layer between pixi and the tool.
But most logic should happen in the build tool.
[tool.pixi-build-python]
)rattler-build
.Related work
pixi_manifest
#1656: Extract manifest into a crate for possible reuseHasFeatures
trait #1717pixi_spec
crate #1741[build]
section to pixi manifest.build
command #1728The text was updated successfully, but these errors were encountered: