(From <https://pantsbuild.slack.com/archives/C046T...
# development
b
(From https://pantsbuild.slack.com/archives/C046T6T9U/p1693997543934359) I think for us to completely be off our old S3-backed cheeseshop (of other peoples code), we likely want to backport the per-platform PEXs of Pants to every release (in v2 at least). This simplifies not only our distribution model (going backwards) but also
scie-pants
as well. Doing so would be simple enough, and I can (ab)use GitHub runners for this, like I did the other forms of backporting as well. Anyone opposed?
b
Not opposed. How does this work with
pants_requirements
and its find_links? Iirc that doesn’t use the pex?
b
It'd operate in the same way as today. So, you'd get a set of dependencies which should be compatible with those in the PEX. https://github.com/pantsbuild/pants/issues/19619 is filed to make the wheel pin exact matches.
Oh... you mean for thirdparty wheels? That didn't provide find links for the old S3 cheeseshop, so I think what used to work still does (until the S3 bucket is turned off, if ever).
πŸ‘ 1
(which really only tells me that people aren't doing much plugin development and typechecking/testing their plugins on the machines that fail for the wheel reasons...)
I have a script ready to fire. We'l discuss it on Mondya then I'll pull the trigger
OK as discussed in the meeting, I'm going to kick this off. For provenance, here' the Pex invocation:
Copy code
subprocess.run(
            [
                "pex",
                "--disable-cache",
                "--python-shebang",
                "/usr/bin/env python",
                "-o",
                pex_name,
                "-f",
                "<https://wheels.pantsbuild.org/simple>",
                "-f",
                "links.html",
                f"pantsbuild.pants=={version}",
                "--no-build",
                "--no-pypi",
                "--disable-cache",
                "--no-strip-pex-env",
                "--console-script=pants",
                "--venv",
                f"--platform={platform}-cp-{pyver[2:]}-{pyver}",
            ],
            check=True
        )
Note that
links.html
is massaged from
requests.get(f"<https://binaries.pantsbuild.org?prefix=wheels/3rdparty/{commit_sha[:8]}>").content
which is code loosely stolen from scie-pants. I've verified that all the way back to
2.0.0.dev0
the
console-script
is valid
❀️ 1
The inflection point for Python 3.9 is Pants 2.5. E.g. All releases of 2.5.x and up are 3.9
The deployment fairies have been released
So it turns out we're missing 3rdparty wheels for some packages. Looks like Mac Arm wheels, in particular. Will look further tomorrow
OK, almost done. Had to ask PyPI for a few binaries. Now we're only lacking for about 50 PEXs almost all apple. good split on x84_64 and aarch64
It's really weird to me that we'd be missing certain wheels πŸ˜•
Copy code
release_2.17.0.dev2 is missing ['pants.2.17.0.dev2-cp39-darwin_arm64.pex', 'pants.2.17.0.dev2-cp39-linux_aarch64.pex']
release_2.17.0.dev1 is missing ['pants.2.17.0.dev1-cp39-darwin_arm64.pex', 'pants.2.17.0.dev1-cp39-linux_aarch64.pex']
release_2.17.0.dev0 is missing ['pants.2.17.0.dev0-cp39-darwin_arm64.pex', 'pants.2.17.0.dev0-cp39-linux_aarch64.pex']
release_2.12.1rc0 is missing ['pants.2.12.1rc0-cp39-darwin_arm64.pex']
release_2.12.0 is missing ['pants.2.12.0-cp39-darwin_arm64.pex']
release_2.11.1 is missing ['pants.2.11.1-cp39-darwin_arm64.pex']
release_2.12.0rc3 is missing ['pants.2.12.0rc3-cp39-darwin_arm64.pex']
release_2.11.1rc3 is missing ['pants.2.11.1rc3-cp39-darwin_arm64.pex']
release_2.12.0rc2 is missing ['pants.2.12.0rc2-cp39-darwin_arm64.pex']
release_2.11.1rc2 is missing ['pants.2.11.1rc2-cp39-darwin_arm64.pex']
release_2.9.2 is missing ['pants.2.9.2-cp39-darwin_arm64.pex']
release_2.8.1 is missing ['pants.2.8.1-cp39-darwin_arm64.pex']
release_2.10.1 is missing ['pants.2.10.1-cp39-darwin_arm64.pex']
release_2.11.1rc0 is missing ['pants.2.11.1rc0-cp39-darwin_arm64.pex']
release_2.11.0 is missing ['pants.2.11.0-cp39-darwin_arm64.pex']
release_2.11.0rc6 is missing ['pants.2.11.0rc6-cp39-darwin_arm64.pex']
release_2.12.0a0 is missing ['pants.2.12.0a0-cp39-darwin_arm64.pex']
release_2.11.0rc3 is missing ['pants.2.11.0rc3-cp39-darwin_arm64.pex']
release_2.11.0rc2 is missing ['pants.2.11.0rc2-cp39-darwin_arm64.pex', 'pants.2.11.0rc2-cp39-darwin_x86_64.pex']
release_2.9.2rc0 is missing ['pants.2.9.2rc0-cp39-darwin_arm64.pex']
release_2.10.1rc0 is missing ['pants.2.10.1rc0-cp39-darwin_arm64.pex']
release_2.11.0rc1 is missing ['pants.2.11.0rc1-cp39-darwin_x86_64.pex']
release_2.12.0.dev0 is missing ['pants.2.12.0.dev0-cp39-darwin_x86_64.pex']
release_2.10.0 is missing ['pants.2.10.0-cp39-darwin_arm64.pex']
release_2.11.0rc0 is missing ['pants.2.11.0rc0-cp39-darwin_x86_64.pex']
release_2.10.0rc2 is missing ['pants.2.10.0rc2-cp39-darwin_arm64.pex']
release_2.9.1rc0 is missing ['pants.2.9.1rc0-cp39-darwin_arm64.pex']
release_2.9.0 is missing ['pants.2.9.0-cp39-darwin_arm64.pex']
release_2.9.0rc6 is missing ['pants.2.9.0rc6-cp39-darwin_arm64.pex']
release_2.9.0rc5 is missing ['pants.2.9.0rc5-cp39-darwin_arm64.pex']
release_2.9.0rc4 is missing ['pants.2.9.0rc4-cp39-darwin_arm64.pex']
release_2.9.0rc3 is missing ['pants.2.9.0rc3-cp39-darwin_arm64.pex']
release_2.9.0rc2 is missing ['pants.2.9.0rc2-cp39-darwin_arm64.pex']
release_2.9.0rc0 is missing ['pants.2.9.0rc0-cp39-darwin_arm64.pex']
release_2.8.1rc1 is missing ['pants.2.8.1rc1-cp39-darwin_arm64.pex']
release_2.8.1rc0 is missing ['pants.2.8.1rc0-cp39-darwin_arm64.pex']
release_2.8.0 is missing ['pants.2.8.0-cp39-darwin_arm64.pex']
release_2.8.0rc5 is missing ['pants.2.8.0rc5-cp39-darwin_arm64.pex']
release_2.7.2rc2 is missing ['pants.2.7.2rc2-cp39-darwin_arm64.pex']
release_2.8.0rc2 is missing ['pants.2.8.0rc2-cp39-darwin_arm64.pex']
release_2.7.2rc1 is missing ['pants.2.7.2rc1-cp39-darwin_arm64.pex']
release_2.7.1rc1 is missing ['pants.2.7.1rc1-cp39-darwin_arm64.pex']
release_2.7.1rc0 is missing ['pants.2.7.1rc0-cp39-darwin_arm64.pex']
release_2.7.0 is missing ['pants.2.7.0-cp39-darwin_arm64.pex']
release_2.7.0rc5 is missing ['pants.2.7.0rc5-cp39-darwin_arm64.pex']
release_2.6.1 is missing ['pants.2.6.1-cp39-darwin_arm64.pex']
release_2.7.0rc3 is missing ['pants.2.7.0rc3-cp39-darwin_arm64.pex']
release_2.7.0rc2 is missing ['pants.2.7.0rc2-cp39-darwin_arm64.pex']
release_2.7.0rc1 is missing ['pants.2.7.0rc1-cp39-darwin_arm64.pex']
Unfortunately we can't just build these on GitHub, as the lowest version they provide is
osx_11_0
h
Missing pexes, not wheels, ya?
b
It's missing PEXs because I can't build them due to missing wheels
A common one is
ijson==3.1.4
somehow we have Mac wheels on arm for pants, but I've never seen that wheel in our S3 bucket
b
I cannot install, for instance, 2.7.0 on my arm mac using
scie-pants
(error while attempting to build a PyYAML wheel). I can install it using the old
./pants
script, though. I don't know if that's relevant.
b
That's very relevant πŸ€”
the
scie-pants
error would be understandable if you're not using the version with the find-links fix
I can install it using the old
./pants
script, though.
Can we dive into this?
OK from everything I'm seeing, it looks like the difference is likely just PythonBuildStandlone vs System Python. I suspect if you do
python3.9 -m pip install ijson==3.1.4
(in a venv) it'll succeed
And @witty-crayon-22786 for posterity, I suspect that's why you thought we didn't use the 3rdparty wheels for normal Pants installation. We didn't used to: https://github.com/pantsbuild/setup/blob/gh-pages/pants But then, with
scie-pants
and PBS, we needed a way for people to get wheels of packages not on PyPI knowing they can no longer build them themselves.
w
yea, makes sense.
b
SO I still don't understand where these wheels came from. If you take
2.10.0
for instance. On PyPI the wheel was uploaded on the same date. If you look at the wheels workflow, there obviously isn't any ARM building: https://github.com/pantsbuild/pants/actions/runs/2210245521/workflow ...Does anyone remember how we built these? The docs don't help: https://www.pantsbuild.org/v2.10/docs/release-process
w
i don’t fully understand which wheels you mean, but: back in the day, macOS ARM was built manually on macOS: https://blog.pantsbuild.org/how-we-added-apple-silicon-support-to-pants/
b
Oh... that explains it. Whoever built these wheels naturally didn't upload the relevant 3rdparty wheels to the S3 bucket πŸ˜•
Anyone got some Apple silicon with OS X 11 lying around?
c
I think it was mostly Eric doing the ARM builds manually..
b
Yeah, I found the first instance of us building arm on CI, and I'm going to hardcode those 3rdparty wheels in addition to the normal uploaded ones. Wish me luck!
πŸ€ 1
ITS WORKING! πŸ˜‚
New list is shorter:
Copy code
release_2.17.0.dev2 is missing ['pants.2.17.0.dev2-cp39-darwin_arm64.pex', 'pants.2.17.0.dev2-cp39-linux_aarch64.pex']
release_2.17.0.dev1 is missing ['pants.2.17.0.dev1-cp39-darwin_arm64.pex', 'pants.2.17.0.dev1-cp39-linux_aarch64.pex']
release_2.17.0.dev0 is missing ['pants.2.17.0.dev0-cp39-darwin_arm64.pex', 'pants.2.17.0.dev0-cp39-linux_aarch64.pex']
release_2.8.1 is missing ['pants.2.8.1-cp39-darwin_arm64.pex']
release_2.12.0.dev0 is missing ['pants.2.12.0.dev0-cp39-darwin_x86_64.pex']
release_2.9.0 is missing ['pants.2.9.0-cp39-darwin_arm64.pex']
release_2.9.0rc6 is missing ['pants.2.9.0rc6-cp39-darwin_arm64.pex']
release_2.9.0rc5 is missing ['pants.2.9.0rc5-cp39-darwin_arm64.pex']
release_2.9.0rc4 is missing ['pants.2.9.0rc4-cp39-darwin_arm64.pex']
release_2.9.0rc3 is missing ['pants.2.9.0rc3-cp39-darwin_arm64.pex']
release_2.9.0rc2 is missing ['pants.2.9.0rc2-cp39-darwin_arm64.pex']
release_2.9.0rc0 is missing ['pants.2.9.0rc0-cp39-darwin_arm64.pex']
release_2.8.1rc1 is missing ['pants.2.8.1rc1-cp39-darwin_arm64.pex']
release_2.8.1rc0 is missing ['pants.2.8.1rc0-cp39-darwin_arm64.pex']
release_2.8.0 is missing ['pants.2.8.0-cp39-darwin_arm64.pex']
release_2.8.0rc5 is missing ['pants.2.8.0rc5-cp39-darwin_arm64.pex']
release_2.7.2rc2 is missing ['pants.2.7.2rc2-cp39-darwin_arm64.pex']
release_2.8.0rc2 is missing ['pants.2.8.0rc2-cp39-darwin_arm64.pex']
release_2.7.2rc1 is missing ['pants.2.7.2rc1-cp39-darwin_arm64.pex']
release_2.7.1rc1 is missing ['pants.2.7.1rc1-cp39-darwin_arm64.pex']
release_2.7.1rc0 is missing ['pants.2.7.1rc0-cp39-darwin_arm64.pex']
release_2.7.0 is missing ['pants.2.7.0-cp39-darwin_arm64.pex']
release_2.7.0rc5 is missing ['pants.2.7.0rc5-cp39-darwin_arm64.pex']
release_2.6.1 is missing ['pants.2.6.1-cp39-darwin_arm64.pex']
release_2.7.0rc3 is missing ['pants.2.7.0rc3-cp39-darwin_arm64.pex']
release_2.7.0rc2 is missing ['pants.2.7.0rc2-cp39-darwin_arm64.pex']
release_2.7.0rc1 is missing ['pants.2.7.0rc1-cp39-darwin_arm64.pex']
So I think we bumped deps at some point, so the earlier builds can't be patched with later uploaded wheels πŸ˜•
So I still need some Apple silicone running 11.0 OS X
w
Um, we do actually have GitHub actions workers for macOS arm now, I think?
Benjy got that set up at some point to replace the manual process
b
......Can I borrow it? πŸ˜›
I need ot build some wheels πŸ˜›
w
b
lol you got a blogpost for everything lol
🀣 1
b
I can run GItHub Actions from a branch. Sooooo brb πŸ˜‰
That did it!
πŸŽ‰ 2
Just some stragglers left. Will attempt next week
No missing PEXs πŸ™‚
h
Yep, we have a macstadium M1 running OSX11