-
-
Notifications
You must be signed in to change notification settings - Fork 2
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
Rebuild for pypy37 #1
Rebuild for pypy37 #1
Conversation
Hi! This is the friendly automated conda-forge-linting service. I just wanted to let you know that I linted all conda-recipes in your PR ( |
1a7d891
to
952c830
Compare
@conda-forge/help-c-cpp @mattip
|
I wonder what |
Hey @mattip, thanks a lot for chiming in - I'm sorry, I somehow must have lost track of this notification. I also don't (yet) know what's happening here exactly... |
923ccbf
to
2ea482e
Compare
I am just wondering why this fails for pypy but not cpython? |
Yeah, so were we. To be honest, I have no idea. 😅 |
This is coming from a long chain of
Edit: this happens at compile, not runtime. |
If I do the following, all the tests pass. @bobfang1992 is this code path is hit in tests (so I can debug what is going on)?
|
yeah I think if you run |
Right, I am a PyPy dev and want to get to the bottom of this. |
If I extend a test to test a list
and run the tests, I can stop on that line. CPython has this to say
Where PyPy has this to say:
So pybind11 is wrapping the objects very differently. If I go up one level in the debugger, CPython says
and PyPy says
The difference seems to be that pybind11 "knows" that |
One thing I think we can do is simply revert pybind11 version back to 2.5, we upgraded from 2.5 to 2.8 in the 1.0.7 version but seems 1.0.6 is doing fine with all python distros including pypy. And I dont actually need 2.8 in pytomlpp. If you all agree I can publish another version (1.0.8) to fix this issue. We can then skip 1.0.7 entirely and conda user will have the latest code like pyp users. @mattip @h-vetinari thoughts? |
recipe/meta.yaml
Outdated
@@ -29,7 +29,7 @@ requirements: | |||
- python | |||
- pip | |||
- setuptools | |||
- pybind11 >=2.5,<2.6 | |||
- pybind11 >=2.5 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You could try setting this to a know "good" (for PyPy) version of pybind11
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
... and add a comment `pybind11 ==2.5 # pypy fails to build with 2.8
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@h-vetinari can you add me as collaborator to this project? Seems I dont have the permission to push changes to this branch. Thanks!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There were no pypy builds for 2.5, AFAIR. There's definitely no cpython 3.10 build for pybind 2.5, so I'd be reluctant to go back (though we can, selectively, for pypy, if necessary)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ah okay, then please ignore my suggestion 😢
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure how this all works. If there is no conda package, is there a way to pip install? If I recall correctly pybind11 does not build any c-extensions, so the install should be cheap.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no no, we'll try. 🙃
And if it's really a specific pybind11-version that's bad for pypy, we could also rebuild the (missing) old pybind versions for pypy on the respective feedstock.
2ea482e
to
fdef215
Compare
Normally this goes through a normal PR, but I've pushed a commit to make you a collaborator directly (even though you now have the rights, please don't push to master directly - this is a very specific case). In general, conda-forge is a zoo of automation that might take a little while to get used to. I'm happy to help if there are questions - best is to iterate on PRs, and hold off on quick merges until you get the hang of things. |
Glad to have you onboard! :) |
Glad to be here! Thanks, it is a great to have pytomlpp on
I see you just pushed something, shall I just wait and see its effect? |
fdef215
to
a4eda2d
Compare
First off, cpython builds on linux/osx/windows are already there. This PR is about adding pypy builds as well, which I hope we'll be able to figure out, but it's not crazy urgent (and I really appreciate @mattip taking the time!). So right now, you don't need to do anything (but your help in debugging would be much appreciated!) 🙃
One of the first things to get used to is that every package in conda-forge gets built on a feedstock; rarely one feedstock does a few related packages in one go, but mostly it's 1:1. For pybind11 it's here - you're not a maintainer there, and you'll become so less quickly than here (where you have the extraordinary headstart of being the upstream maintainer 😋) - but you can always raise PRs anywhere. If we determine that things work with (for example) pybind 2.6, we'll have to discuss with the maintainers there to rebuild the required packages - generally the maintainers in conda-forge are very supportive, but everyone is doing this in their free time, so we should have a good reason, and cannot "demand" anything.
Now that I added a patch to unpin the upstream pybind11 requirement for pypy, you can wait and see what failures the CI produces, and if necessary, reduce the version of pybind11 again (I started by going from 2.8 -> 2.7). At some point there will not be C++ compilation errors as above, but environment resolution errors because the requisite pybind version might not have been built that far back for new-ish flavours like pypy (or cpython 3.10). |
a4eda2d
to
28209ae
Compare
PS. Your upstream maintainership gives you certain "superpowers" that packagers don't have - you can decide what goes in the upstream code base. While it's possible to carry patches on the feedstocks (for example, it's unavoidable to use one for pointing to the conda-forge packaged toml++; which is packaged separately to avoid bloat & duplication), we obviously try to avoid that whenever possible, and to keep it minimal otherwise. In other words, while you're in your rights to say that this should be solved outside of pytomlpp - if a patch like the above is not too painful upstream, it would solve a lot of the debugging straight away. |
OK, it's getting late for me, TTYL |
Let me have a think about this (i.e. removing |
I have now tested 2.8, 2.7, 2.6 (and previously 2.5), and they all fail in the same way, unfortunately. |
How about this patch, which
|
Looks great to me, do you mind submitting a PR to the upstream library? I will merge it and make another release. |
The fix looks good and I plan to merge it once all CI finishes, so which way is better?
|
If you know people are pinning to 1.0.7, and those people might be wanting to use PyPy, then we can add a patch to this repo that will be removed for the next release. Otherwise, we might as well go with a 1.0.8. |
OK v1.0.8 is building and should be released to pypi soon. I expect a new PR will be automatically raised after that. |
Really to cool to see you both arrived at a solution here! :)
As Matti said, generally we don't need a new version (could carry the patch), but given that there's a new release already, I'll merge it and rebase this PR. |
…nda-forge-pinning 2021.11.18.08.49.12
412478d
to
0c1ae79
Compare
Now it builds 🥳 |
Hi! This is the friendly conda-forge automerge bot! I considered the following status checks when analyzing this PR:
Thus the PR was passing and merged! Have a great day! |
This PR has been triggered in an effort to update pypy37.
Notes and instructions for merging this PR:
Please note that if you close this PR we presume that the feedstock has been rebuilt, so if you are going to perform the rebuild yourself don't close this PR until the your rebuild has been merged.
This package has the following downstream children:
And potentially more.
If this PR was opened in error or needs to be updated please add the
bot-rerun
label to this PR. The bot will close this PR and schedule another one. If you do not have permissions to add this label, you can use the phrase@conda-forge-admin, please rerun bot
in a PR comment to have theconda-forge-admin
add it for you.This PR was created by the regro-cf-autotick-bot.
The regro-cf-autotick-bot is a service to automatically track the dependency graph, migrate packages, and propose package version updates for conda-forge. If you would like a local version of this bot, you might consider using rever. Rever is a tool for automating software releases and forms the backbone of the bot's conda-forge PRing capability. Rever is both conda (
conda install -c conda-forge rever
) and pip (pip install re-ver
) installable.Finally, feel free to drop us a line if there are any issues!
This PR was generated by https://github.com/regro/autotick-bot/actions/runs/1316785350, please use this URL for debugging