Skip to content
This repository has been archived by the owner on Jan 20, 2022. It is now read-only.

Gotchas #7

Open
aptalca opened this issue May 16, 2021 · 0 comments
Open

Gotchas #7

aptalca opened this issue May 16, 2021 · 0 comments

Comments

@aptalca
Copy link
Owner

aptalca commented May 16, 2021

  • Version checker sets up amd64 docker containers based on the images listed in distros.txt and uses a hacky pip/sed command to figure out the latest version supported on that platform (latest numpy for instance requires php>=3.7 so bionic is stuck on an older version). Then it checks the existence of packagename-packageversion-cpythonversion in the index file. One potential issue is, since pip can download a wheel built for an older cpython version if it exists, our version checker won't match that due to different cpython version, such as PyNaCl here:
    <a href='https://wheels.linuxserver.io/ubuntu/PyNaCl-1.4.0-cp35-abi3-manylinux1_x86_64.whl'>PyNaCl-1.4.0-cp35-abi3-manylinux1_x86_64.whl</a>
    However, as long as the package is lacking the wheels on at least one arch (most likely arm32v7) and has to be built, the version checker will match the other arch's entry in the index just fine. If only, say, a package provides wheels for all 3 arches on focal, but not on bionic, and the provided wheels are all built with a lower cpython than the distro contains, we'll run into an issue where the version checker will trigger continuously (edge case but something to keep in mind).
    • A potential solution might be to use pip to check for existing wheels and take that into consideration, but that would require separate containers for all arches, and add too much complexity to the code, which may not be worth the effort. Fixed as suggested here
  • All the wheels we build and push are done under qemu, so the arches are labeled properly as x86_64, armv7l and aarch64. However, the aws jenkins builders we use are 64bit native and the arm32v7 versions run docker with chroot, therefore their arch is recognized by python/pip as armv8l and do not match the prebuilt wheels. Although it doesn't cause build failures, it does prevent the aws arm32v7 builders from pulling the prebuilt wheels and instead build from scratch.
@aptalca aptalca pinned this issue May 16, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant