Skip to content
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

Add an option to create arch specific, python version independent pkgs #5456

Open
wants to merge 18 commits into
base: main
Choose a base branch
from

Conversation

isuruf
Copy link
Contributor

@isuruf isuruf commented Aug 12, 2024

Description

Checklist - did you ...

  • Add a file to the news directory (using the template) for the next release's release notes?
  • Add / update necessary tests?
  • Add / update outdated documentation?

Implementation for ABI3 as described in https://github.com/conda/ceps/blob/main/cep-0020.md
This implementation depends on a specific python-abi3 package (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

@conda-bot conda-bot added the cla-signed [bot] added once the contributor has signed the CLA label Aug 12, 2024
Copy link

codspeed-hq bot commented Aug 12, 2024

CodSpeed Performance Report

Merging #5456 will not alter performance

Comparing isuruf:python-ver-indep (efe1e9c) with main (caa6d2f)

Summary

✅ 5 untouched benchmarks

conda_build/metadata.py Outdated Show resolved Hide resolved
conda_build/metadata.py Outdated Show resolved Hide resolved
Copy link
Contributor

@beckermr beckermr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@isuruf isuruf marked this pull request as ready for review January 3, 2025 08:09
@isuruf isuruf requested a review from a team as a code owner January 3, 2025 08:09
@isuruf isuruf requested review from beckermr and jaimergp January 6, 2025 12:43
@jaimergp
Copy link
Contributor

jaimergp commented Jan 9, 2025

Thanks for the docs! We are missing the news/ entry and perhaps a short description in the PR linking to the relevant issues, discussions, CEPs, etc. I'll review once those are in.

@isuruf
Copy link
Contributor Author

isuruf commented Jan 9, 2025

Thanks. Added a news entry and updated the PR description.

@wolfv
Copy link
Contributor

wolfv commented Jan 9, 2025

Awesome work!

Copy link
Contributor

@jaimergp jaimergp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have some suggestions and comments that need to be addressed, but nothing major. Once that's in, I'll be happy to approve!

conda_build/build.py Outdated Show resolved Hide resolved
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 (
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this include the slash to prevent matches with paths like binocular.dat?

Suggested change
if target_file.startswith("bin") and (
if target_file.startswith("bin/") and (

(And in that case, update the replace below?)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's leave it for a different PR?

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 (
target_file not in entry_point_script_names
):
return target_file.replace("bin", "python-scripts")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
return target_file.replace("bin", "python-scripts")
return target_file.replace("bin/", "python-scripts/")

Comment on lines 1858 to 1859
# 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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Which versions require this hack? All of them?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a clarification to the comment here.

conda_build/metadata.py Show resolved Hide resolved
conda_build/render.py Show resolved Hide resolved
python_version_independent: true

A package builder also has to indicate which standard is supported by
the package, i.e., for ABI3,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should add it to defaults too.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@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.

docs/source/resources/define-metadata.rst Outdated Show resolved Hide resolved
news/5456-python-version-independent.rst Outdated Show resolved Hide resolved
@isuruf isuruf requested a review from jaimergp January 14, 2025 13:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cla-signed [bot] added once the contributor has signed the CLA
Projects
Status: Approved
Development

Successfully merging this pull request may close these issues.

6 participants