Add an option to create arch specific, python version independent pkgs#5456
Add an option to create arch specific, python version independent pkgs#5456isuruf merged 18 commits intoconda:mainfrom
Conversation
65657d8 to
0e05755
Compare
CodSpeed Performance ReportMerging #5456 will not alter performanceComparing Summary
|
beckermr
left a comment
There was a problem hiding this comment.
Is there a test here that asserts that the output package is put into an arch-specific part of the repodata (e.g., linux-64)? It is not obvious to me from the changes that this would happen, but I am still a conda-build n00b.
90a41d0 to
7f8a9ed
Compare
aa23fdd to
fa7b1bb
Compare
|
Thanks for the docs! We are missing the |
|
Thanks. Added a news entry and updated the PR description. |
|
Awesome work! |
jaimergp
left a comment
There was a problem hiding this comment.
I have some suggestions and comments that need to be addressed, but nothing major. Once that's in, I'll be happy to approve!
| if target_file.find("site-packages") >= 0: | ||
| return target_file[target_file.find("site-packages") :] | ||
| elif target_file.startswith("bin") and ( | ||
| if target_file.startswith("bin") and ( |
There was a problem hiding this comment.
Should this include the slash to prevent matches with paths like binocular.dat?
| if target_file.startswith("bin") and ( | |
| if target_file.startswith("bin/") and ( |
(And in that case, update the replace below?)
There was a problem hiding this comment.
Let's leave it for a different PR?
| if target_file.startswith("bin") and ( | ||
| target_file not in entry_point_script_names | ||
| ): | ||
| return target_file.replace("bin", "python-scripts") |
There was a problem hiding this comment.
| return target_file.replace("bin", "python-scripts") | |
| return target_file.replace("bin/", "python-scripts/") |
| # This is a hack to make conda/mamba/micromamba compile the pure python files | ||
| # and for micromamba to move the files in site-packages to the correct dir. |
There was a problem hiding this comment.
Which versions require this hack? All of them?
There was a problem hiding this comment.
I added a clarification to the comment here.
| python_version_independent: true | ||
|
|
||
| A package builder also has to indicate which standard is supported by | ||
| the package, i.e., for ABI3, |
There was a problem hiding this comment.
| the package, i.e., for ABI3, | |
| the package, i.e., for ABI3 in conda-forge |
AFAIK, python-abi3 is a conda-forge-specific package, right? Or is it in defaults too?
There was a problem hiding this comment.
We should add it to defaults too.
There was a problem hiding this comment.
@chenghlee do you think it's reasonable to add this package to defaults? Otherwise I'll update this PR to reflect that the package is only in conda-forge.
There was a problem hiding this comment.
@chenghlee let me know how you want to proceed here.
There was a problem hiding this comment.
We already introduced python_abi in main to support free threading:
$ conda search -c main python_abi
Loading channels: done
# Name Version Build Channel
python_abi 3.13 0_cp313 pkgs/main
python_abi 3.13 0_cp313t pkgs/main
So I don't see any need to say that the python_abi package is conda-forge specific.
(What I can't definitely say is when python_abi support will be extended to Python versions before 3.13, but that feels more like an Anaconda, rather than a conda community, problem.)
Co-authored-by: jaimergp <jaimergp@users.noreply.github.com>
Co-authored-by: Jannis Leidel <jannis@leidel.info> Co-authored-by: jaimergp <jaimergp@users.noreply.github.com>
Co-authored-by: jaimergp <jaimergp@users.noreply.github.com>
|
this sounds great, should save us some ci times, looking forward to this! |
|
Sorry just to clarify, is this the intention?
If so, that would be great. However, from my testing it seems that |
|
Yes, that's correct. The line you linked to doesn't matter. conda-build's relocation logic works after the link check logic. |
|
I still don't get it... with $ conda build --output-folder dist ...
$ tar tf dist/*/mypackagename-*.tar.bz2
...
lib/python3.12/site-packages/mypackagename/...
$ mamba create -n testing -c ./dist python=3.13 mypackagename
...
Could not solve for environment specs
The following packages are incompatible
├─ mypackagename * is installable and it requires
│ └─ python_abi 3.12.* *_cp312, which requires
│ └─ python 3.12.* *_cpython, which can be installed;
└─ python 3.13** is not installable because it conflicts with any installable versions previously reported. |
|
Should I open an issue? |
Description
Checklist - did you ...
newsdirectory (using the template) for the next release's release notes?Implementation for ABI3 as described in https://github.com/conda/ceps/blob/main/cep-0020.md
This implementation depends on a specific
python-abi3package (already in conda-forge at https://github.com/conda-forge/python-abi3-feedstock) in host to set the correct runtime dependencies.By being ABI3 agnostic, we leave room for other standards like ABI4, HPy to be supported.
Added documentation has an example, and a more complicated example for conda-forge is at https://github.com/conda-forge/python-abi3-feedstock/blob/main/recipe/example-meta.yaml