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

Use introspection to generate wheel tags #190

Closed
dnicolodi opened this issue Oct 30, 2022 · 2 comments
Closed

Use introspection to generate wheel tags #190

dnicolodi opened this issue Oct 30, 2022 · 2 comments
Labels
enhancement New feature or request

Comments

@dnicolodi
Copy link
Member

In #189 it become clear that it is not really possible to map extension filenames to wheel tags in a robust way: the file names do not contain ABI tags. However, the python implementation which is running meson-python is the same as the one for which the extensions are being built. Therefore, we can introspect the interpreter to get the wheel tags. Using the packaging module seems the most straightforward way to do this.

The only open question is how to decide to go for an implementation ABI tag or a stable ABI tag. I don't think that Meson python module has a way to generate extension modules for the stable ABI, so maybe this is not important right now. But the current meson-python has some support to auto-detect this, so maybe it should be supported somehow.

Should we keep validating the extension filename suffixes against the suffixes accepted by the Python interpreter? The list of accepted suffixes is provided in importlib.machinery.EXTENSION_SUFFIXES thus the check is easily implemented. Should deeper checks be done?

@FFY00
Copy link
Member

FFY00 commented Oct 31, 2022

We should do both. Look at the wheel tags to decide if the stable ABI should be used, and use introspection to generate the tags.

@FFY00 FFY00 added the enhancement New feature or request label Oct 31, 2022
@dnicolodi
Copy link
Member Author

I'll have a look at implementing this.

dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 1, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 1, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 1, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 1, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 1, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 1, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 1, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 1, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 1, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 1, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 1, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 1, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 1, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 1, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 1, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 2, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 2, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 2, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 2, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 2, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 2, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 3, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 4, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#142, mesonbuild#189, mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 4, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 4, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 4, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 9, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 9, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 10, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 10, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 10, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 11, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 11, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 11, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 11, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 11, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 11, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 11, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 11, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 11, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 11, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 11, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 11, 2022
Use the wheel contents only to determine whether the wheel contains
python ABI dependent modules or other platform dependent code.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 12, 2022
The extension modules filename suffixes do not contain enough
information to correctly determine the wheel tags. Instead introspect
the Python interpreter to derive the wheel tags. This is the same
approach used by other PEP517 backends, most notably wheel. The wheel
contents only to determine whether the wheel contains python ABI
dependent modules or other platform dependent code.

The packaging module is the reference wheel tags derivation
implementation and it is used (or vendored) by most python packages
dealing with wheels. However, the API provided by packaging is
cumbersome to use for our purposes and, with the goal of merging this
code into Meson in the future, it is good to avoid an additional
dependency. Therefore, the tags derivation code is reimplemented.

Tests are added to verify that the tags produced by meson-python agree
with the ones produced by packaging to ensure that the two
implementations will not diverge.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 13, 2022
The extension modules filename suffixes do not contain enough
information to correctly determine the wheel tags. Instead introspect
the Python interpreter to derive the wheel tags. This is the same
approach used by other PEP517 backends, most notably wheel. The wheel
contents only to determine whether the wheel contains python ABI
dependent modules or other platform dependent code.

The packaging module is the reference wheel tags derivation
implementation and it is used (or vendored) by most python packages
dealing with wheels. However, the API provided by packaging is
cumbersome to use for our purposes and, with the goal of merging this
code into Meson in the future, it is good to avoid an additional
dependency. Therefore, the tags derivation code is reimplemented.

Tests are added to verify that the tags produced by meson-python agree
with the ones produced by packaging to ensure that the two
implementations will not diverge.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 15, 2022
The extension modules filename suffixes do not contain enough
information to correctly determine the wheel tags. Instead introspect
the Python interpreter to derive the wheel tags. This is the same
approach used by other PEP517 backends, most notably wheel. The wheel
contents only to determine whether the wheel contains python ABI
dependent modules or other platform dependent code.

The packaging module is the reference wheel tags derivation
implementation and it is used (or vendored) by most python packages
dealing with wheels. However, the API provided by packaging is
cumbersome to use for our purposes and, with the goal of merging this
code into Meson in the future, it is good to avoid an additional
dependency. Therefore, the tags derivation code is reimplemented.

Tests are added to verify that the tags produced by meson-python agree
with the ones produced by packaging to ensure that the two
implementations will not diverge.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 15, 2022
The extension modules filename suffixes do not contain enough
information to correctly determine the wheel tags. Instead introspect
the Python interpreter to derive the wheel tags. This is the same
approach used by other PEP517 backends, most notably wheel. The wheel
contents only to determine whether the wheel contains python ABI
dependent modules or other platform dependent code.

The packaging module is the reference wheel tags derivation
implementation and it is used (or vendored) by most python packages
dealing with wheels. However, the API provided by packaging is
cumbersome to use for our purposes and, with the goal of merging this
code into Meson in the future, it is good to avoid an additional
dependency. Therefore, the tags derivation code is reimplemented.

Tests are added to verify that the tags produced by meson-python agree
with the ones produced by packaging to ensure that the two
implementations will not diverge.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 15, 2022
The extension modules filename suffixes do not contain enough
information to correctly determine the wheel tags. Instead introspect
the Python interpreter to derive the wheel tags. This is the same
approach used by other PEP517 backends, most notably wheel. The wheel
contents only to determine whether the wheel contains python ABI
dependent modules or other platform dependent code.

The packaging module is the reference wheel tags derivation
implementation and it is used (or vendored) by most python packages
dealing with wheels. However, the API provided by packaging is
cumbersome to use for our purposes and, with the goal of merging this
code into Meson in the future, it is good to avoid an additional
dependency. Therefore, the tags derivation code is reimplemented.

Tests are added to verify that the tags produced by meson-python agree
with the ones produced by packaging to ensure that the two
implementations will not diverge.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 15, 2022
The extension modules filename suffixes do not contain enough
information to correctly determine the wheel tags. Instead introspect
the Python interpreter to derive the wheel tags. This is the same
approach used by other PEP517 backends, most notably wheel. The wheel
contents only to determine whether the wheel contains python ABI
dependent modules or other platform dependent code.

The packaging module is the reference wheel tags derivation
implementation and it is used (or vendored) by most python packages
dealing with wheels. However, the API provided by packaging is
cumbersome to use for our purposes and, with the goal of merging this
code into Meson in the future, it is good to avoid an additional
dependency. Therefore, the tags derivation code is reimplemented.

Tests are added to verify that the tags produced by meson-python agree
with the ones produced by packaging to ensure that the two
implementations will not diverge.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 15, 2022
The extension modules filename suffixes do not contain enough
information to correctly determine the wheel tags. Instead introspect
the Python interpreter to derive the wheel tags. This is the same
approach used by other PEP517 backends, most notably wheel. The wheel
contents only to determine whether the wheel contains python ABI
dependent modules or other platform dependent code.

The packaging module is the reference wheel tags derivation
implementation and it is used (or vendored) by most python packages
dealing with wheels. However, the API provided by packaging is
cumbersome to use for our purposes and, with the goal of merging this
code into Meson in the future, it is good to avoid an additional
dependency. Therefore, the tags derivation code is reimplemented.

Tests are added to verify that the tags produced by meson-python agree
with the ones produced by packaging to ensure that the two
implementations will not diverge.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 15, 2022
The extension modules filename suffixes do not contain enough
information to correctly determine the wheel tags. Instead introspect
the Python interpreter to derive the wheel tags. This is the same
approach used by other PEP517 backends, most notably wheel. The wheel
contents only to determine whether the wheel contains python ABI
dependent modules or other platform dependent code.

The packaging module is the reference wheel tags derivation
implementation and it is used (or vendored) by most python packages
dealing with wheels. However, the API provided by packaging is
cumbersome to use for our purposes and, with the goal of merging this
code into Meson in the future, it is good to avoid an additional
dependency. Therefore, the tags derivation code is reimplemented.

Tests are added to verify that the tags produced by meson-python agree
with the ones produced by packaging to ensure that the two
implementations will not diverge.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 15, 2022
The extension modules filename suffixes do not contain enough
information to correctly determine the wheel tags. Instead introspect
the Python interpreter to derive the wheel tags. This is the same
approach used by other PEP517 backends, most notably wheel. The wheel
contents only to determine whether the wheel contains python ABI
dependent modules or other platform dependent code.

The packaging module is the reference wheel tags derivation
implementation and it is used (or vendored) by most python packages
dealing with wheels. However, the API provided by packaging is
cumbersome to use for our purposes and, with the goal of merging this
code into Meson in the future, it is good to avoid an additional
dependency. Therefore, the tags derivation code is reimplemented.

Tests are added to verify that the tags produced by meson-python agree
with the ones produced by packaging to ensure that the two
implementations will not diverge.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 16, 2022
The extension modules filename suffixes do not contain enough
information to correctly determine the wheel tags. Instead introspect
the Python interpreter to derive the wheel tags. This is the same
approach used by other PEP517 backends, most notably wheel. The wheel
contents only to determine whether the wheel contains python ABI
dependent modules or other platform dependent code.

The packaging module is the reference wheel tags derivation
implementation and it is used (or vendored) by most python packages
dealing with wheels. However, the API provided by packaging is
cumbersome to use for our purposes and, with the goal of merging this
code into Meson in the future, it is good to avoid an additional
dependency. Therefore, the tags derivation code is reimplemented.

Tests are added to verify that the tags produced by meson-python agree
with the ones produced by packaging to ensure that the two
implementations will not diverge.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
dnicolodi added a commit to dnicolodi/meson-python that referenced this issue Nov 16, 2022
The extension modules filename suffixes do not contain enough
information to correctly determine the wheel tags. Instead introspect
the Python interpreter to derive the wheel tags. This is the same
approach used by other PEP517 backends, most notably wheel. The wheel
contents only to determine whether the wheel contains python ABI
dependent modules or other platform dependent code.

The packaging module is the reference wheel tags derivation
implementation and it is used (or vendored) by most python packages
dealing with wheels. However, the API provided by packaging is
cumbersome to use for our purposes and, with the goal of merging this
code into Meson in the future, it is good to avoid an additional
dependency. Therefore, the tags derivation code is reimplemented.

Tests are added to verify that the tags produced by meson-python agree
with the ones produced by packaging to ensure that the two
implementations will not diverge.

Fixes mesonbuild#142, fixes mesonbuild#189, fixes mesonbuild#190.
@FFY00 FFY00 closed this as completed in 9e84bd9 Nov 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants