-
Notifications
You must be signed in to change notification settings - Fork 218
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
Manylinux2010 #182
Manylinux2010 #182
Conversation
…ster - The dockerfiles build successfully. - Compared to current master, there's a new intermediate image for glibc. As the x86_64 build depends on it, this must have a predefined name. In the PR the "naming prefix" is 'markrwilliams/manylinux2', therefore it's assumed for all images. - There's a problem with libcurl which has been (temporarily) resolved with script which redirects yum. See docker/build_scripts/build.sh for details. The following script is proven to work: pushd docker/glibc/ docker build -t markrwilliams/manylinux2:centos-6.9-no-vsyscall popd docker/build_scripts/prefetch.sh curl openssl docker build -t markrwilliams/manylinux2:x86_64 \ -f docker/Dockerfile-x86_64 docker/ docker build -t markrwilliams/manylinux2:i686 \ -f docker/Dockerfile-i686 docker/
- docker/build_scripts/build.sh: - removed libncurses.devel; not part of PEP 571 - removed gpg as dependency, because yum already requires it - removed some /dev/null redirections, because they hinder debugging - docker/build_scripts/manylinux1-check.py - renamed to manylinux-check.py - changed names/comments to new version - the check now targets glibc 2.12 instead of 2.5 - .travis.yml - only changed the image name - TODO: x86_64 still needs a script for the no-vsyscall image dependency - docker/deploy.sh - changed image name - note: .rst files have not been touched
- The freshly released version of pip breaks build_utils.sh which tries to get the latest and greatest. Added a condition to instead use the latest version below v10.
- Incorporated the lastest changes from the official repository. - That cleanup removed two packages from 'yum erase ...' which looks like an oversight. Readded. - Removed the hack which fixed the broken build when the new pip was released. This has been fixed upstream, see here: pypa/get-pip#19
Unfortunately, some amount of |
Good thing you mentioned that (I didn't actually know). While I've removed those from my master, I actually tried to not mess with this I've just noticed that I've removed two of those in this branch and you're making a very good point for keeping them in. So I'll add them back. An alternative would be to redirect to e.g. Just noticed as well that the diffs are not that great because I merged the latest commits into this preexisting branch. You'd have to rebase/merge locally to get a better result, I guess. Sorry about that. |
Note: The travis CI build does actually run now for this pull request, but despite what it says, it didn't complete successfully. The newly added build.sh needs a I run a local build before each merge commit, however. So it should be fine. |
Sorry about the new build.sh, @dolang, that was me. Want me to add those shell options? |
Myself, I don't need it because I don't (yet) use travis for anything. I have a small build script in my master branch. But I guess it would be in your interest to add those options (if travis allows them)? In any case, I can't verify that the code for travis is correct. I'm not really in the loop here, I'm just keeping this pull request up-to-date as a reference/help for you guys once it's time to make the switch to manylinux2010. |
I think I see the problem now. Hopefully fixed in #190... |
However, |
Glad to hear, let me know if I can help with anything else! |
- Add platform-dependent clause - Assign the same prefix to the the no-vsyscall image (quay.io/pypa/...) - The dependent docker/Dockerfile-x86_64 needs this prefix in FROM ...
Took a stab at it, but I'm not sure if the Edit: Might actually be running fine, but Travis can't deal with the |
- Increase in `travis_wait` time - Shunting build output off into a log file which can be inspected on failure.
is merge is necessary,
- Similar to gpg the libffi-devel package can't be removed after the build, but it looks like this is because it was improperly packaged. - Moved libffi to the "Development tools and libraries" section.
I had to move
It's only 21 Kb in size, so keeping it in the "Development tools and libraries" section is not a big problem anyway. |
Like with CentOS 5 there's a CentOS 6 Docker image which is more up to date (tag :6) than the latest release (tag :6.9). See: pypa#206
Well, that's odd. It did build on my machine before committing, though. From the Travis log:
|
On another note: Looks like CentOS 6.10 is available now, and I should look through the code again. I'll have a look at that later. |
Somehow the Travis build stops at 50 minutes although I've had a look around, maybe I should try the workaround linked here from this commit? |
Previously, vault.centos.org was missing some repository information, which prevented moving to 6.10. This is now available on CentOS 6.10 and it includes a glibc v1.212 (up from 1.209). All changes made are only to bump this version number.
I've been able to move to CentOS 6.10 now, previously some repository information was missing (namely the There's a new build of I think I've run into a problem at some point because the new version number that is assigned in the Edit: Actually, I'm not quite sure if that's the right way to denote the same version but a different release. I've had a look at this Serverfault question and the linked Fedora Guidelines. The latter seems to indicate one would have to append a |
I can explain the timeout stuff anyway... Travis puts a hard limit of 50 minutes on all (open source) build jobs: https://docs.travis-ci.com/user/customizing-the-build/#build-timeouts Travis also kills jobs that spend 10 minutes without producing output; the |
@njsmith Would you consider switching to CircleCI ? I would be happy to help. |
@jcfr The time I have to spend on manylinux-related things has gone down a bunch in the last few months, and I was kind of the only one doing things. So, honestly as far as I'm concerned, anyone who wants to step up and do the work is pretty much welcome to do whatever works for them. |
Bump: Is this work going to proceed any time soon? |
Sorry, I haven't had a time to look at this either. What do @dolang and others think? |
If I'm not mistaken, auditwheel still needs to get updated. c.f. #179 |
@mayeut Does that require another PR here? |
Once audit wheel gets released - I have no idea when, I commented on a PR there some time ago -, the pyup-bot will open a PR that needs to get merged in master (if CI is ok of course). Then I guess @dolang will have to merge upstream changes once more in this PR. |
Ok, sounds good. I'll try to read up on the PEP and this PR in the meantime. |
cp $MY_DIR/epel-release-5-4.noarch.rpm . | ||
check_sha256sum epel-release-5-4.noarch.rpm $EPEL_RPM_HASH | ||
# https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm | ||
cp $MY_DIR/epel-release-6-8.noarch.rpm . |
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.
I don't think we should be concerned about this, but note that this doesnot correspond to centos 6.10. I'm not sure what the canonical location for the extended package for enterpriselinux (EPEL) rpm is, myself.
*Summary*: Because of | ||
https://mail.python.org/pipermail/wheel-builders/2016-December/000239.html, | ||
this a CentOS 6.10 Docker image that rebuilds ``glibc`` without | ||
*vsyscall* is necessary to reliably run ``manylinux2`` on 64-bit |
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.
manylinux2 -> manylinux2010
There is a bit of a bootstrapping problem in which auditwheel is currently testing against a non-official manylinux2010 image because this one hasn't been released 😄 I'll have an auditwheel release candidate up by the end of the weekend. Edit: Please test this PR by bumping the auditwheel version to 2.0rc1. I don't want to unleash 2.0 on the world unless we're sure it's working okay. |
Is someone clear what the next steps are for this PR and/or #252? auditwheel 2.0 is out now, and as @mayeut said, there is a PR (#262) to update to it in this repository. Does that patch need to be applied to this PR? What are the relative merits of this and #252? @henriquegemignani mentions on that PR that it uses 'devtoolset 7', and 'another approach to the curl issue', but it is (or was?) less ready for merge than this one. I'm keen to see manylinux2010 in use, and I think the images are the last crucial part of the toolchain. But I lack the low-level knowledge to evaluate the changes in either PR. |
Well, I'm not sure anyone's clear one the next steps. I'm also not sure this PR is the place to discuss it either so I'll answer in #179 |
Superseded by #279 that's been merged-in. |
Now that there's some activity again here, I figure it's easier to expose the changes I made as a pull request so you can have a look at the diffs.
This is from my
manylinux2010
branch which is based onmarkrwilliams:manylinx2
merged intopypa:master
.I tried to keep this branch close to upstream and just merged the most recent commit to master (4a20e4b) with minor adjustments.
I don't expect this to be merged by itself, but hope it saves you guys some time. Notable:
gpg
fromPYTHON_COMPILE_DEPS
because it's already present on CentOS 6 and its erasure later in the script breaks the build.ncurses-devel
as required by the PEP.perl-devel
, seems to be required for the build now.libcurl.so
incompatibility (see commit notes & comments).get-pip.py
workaround. That has been fixed (see here) and my build script works again.libffi-devel
fromPYTHON_COMPILE_DEPS
to the "Development tools and libraries" section.x86_64
Docker tag from:6.9
to:6
. This mirrors amanylinux1
change intended to reduce the overall image size (see Reduce image size #206 and also :6 Docker branch / :6.9 Docker branch).manylinux1
to eithermanylinux
ormanylinux2010
. This might be undesired.Side note: not a fan of the/dev/null
out/error stream redirections in the scripts. They just make it harder to debug when something fails. And there definitely are moving parts, as theget-pip.py
problem has shown.