Build modernization (GHA, wheels, setuptools)#407
Build modernization (GHA, wheels, setuptools)#407nitzmahone merged 48 commits intoyaml:release/5.4from
Conversation
This is meant to be run inside a manylinux Docker container. It produces sets of wheels in wheelhouse/ dir. Ref: - https://github.com/pypa/manylinux - https://github.com/pypa/python-manylinux-demo
Allows for better control over version and build output.
- Single-source the libyaml upstream version used in tests and build - Redo the .travis.yml matrix for conditional logic - Put the libyaml-build into its own script since it's used in multiple places
sudo is actually not available on some containers, but we can do an initial UID check.
|
For macOS wheels, I'm currently running into a documented issue with |
|
Thanks for starting this work! I'd absolutely recommend cibuildwheel, saves you a lot of reinventing the wheel! |
|
@nsoranzo thanks, though I've already reinvented most of the wheel at this point with manylinux and pure-Python wheels succeeding. I'm not sure if cibuildwheel would alleviate the To clarify on the It looks like there is an open PR to fix this (matthew-brett/delocate#39). |
|
Looking good so far at a glance, but a couple things:
|
Are you sure there's not a concern for messing with any code out there that's doing |
|
I don't personally have any issue with re-namespacing it- I've always hated the fact that the extension was in a different namespace instead of contained beneath the main package. It's pretty clear from the package name that it shouldn't be consumed externally, and if, in the worst case, it causes a lot of problems, we can always backpedal and create a stub package for |
|
Done, via Looks like there is now an issue Cythonizing (can't find yaml_parser_t from yaml.h, among other things), so I probably neglected to change something. Will check back later. |
|
Did some Googling for |
|
Not exactly sure what the issue is here because I'm able to |
|
Still need to re-work |
|
A few considerations for compatibility (they're generally positive things): The front page of the PyYAML docs give the example
$ pip install --install-option='--with-libyaml' PyYAML
$ pip install --install-option='--without-libyaml' PyYAMLThe blessing in disguise is that the above two commands don't work using the PyPI 5.3.1 PyYAML. I'm not exactly sure why, but probably has to do with the various hacks currently used in Instead, the straightforward behavior when installing from pip is to use the libyaml bindings if libyaml is found, or otherwise skip them. ( pip install --quiet --disable-pip-version-check PyYAML
python -c 'import pyyaml; print(pyyaml.__with_libyaml__)...first in a So, besides the fact that this PR puts
|
* Move most CI to GitHub Actions * Build sdist * Build manylinux1 wheels with libyaml ext (also tested with 2010 and 2014) * Build MacOS x86_64 wheels with libyaml ext * Windows wheel builds remain on AppVeyor until we drop 2.7 support in 6.0 * Smoke tests of all post-build artifacts * Add PEP517/518 build declaration (pyproject.toml with setuptools backend) * Fully move build to setuptools * Drop Python 3.5 support * Declare Python 3.9 support * Update PyPI metadata now that setuptools lets it flow through Co-authored-by: Matt Davis <mrd@redhat.com>
5.4.1 (2021-01-20) * yaml/pyyaml#480 -- Fix stub compat with older pyyaml versions that may unwittingly load it 5.4 (2021-01-19) * yaml/pyyaml#407 -- Build modernization, remove distutils, fix metadata, build wheels, CI to GHA * yaml/pyyaml#472 -- Fix for CVE-2020-14343, moves arbitrary python tags to UnsafeLoader * yaml/pyyaml#441 -- Fix memory leak in implicit resolver setup * yaml/pyyaml#392 -- Fix py2 copy support for timezone objects * yaml/pyyaml#378 -- Fix compatibility with Jython https://github.com/yaml/pyyaml/blob/master/CHANGES
5.4.1 (2021-01-20) * yaml/pyyaml#480 -- Fix stub compat with older pyyaml versions that may unwittingly load it 5.4 (2021-01-19) * yaml/pyyaml#407 -- Build modernization, remove distutils, fix metadata, build wheels, CI to GHA * yaml/pyyaml#472 -- Fix for CVE-2020-14343, moves arbitrary python tags to UnsafeLoader * yaml/pyyaml#441 -- Fix memory leak in implicit resolver setup * yaml/pyyaml#392 -- Fix py2 copy support for timezone objects * yaml/pyyaml#378 -- Fix compatibility with Jython https://github.com/yaml/pyyaml/blob/master/CHANGES
Bump pyyaml from 5.3.1 to 5.4 in /roles/prepare_build/files Bumps pyyaml from 5.3.1 to 5.4. Changelog Sourced from pyyaml's changelog. 5.4 (2021-01-19) yaml/pyyaml#407 -- Build modernization, remove distutils, fix metadata, build wheels, CI to GHA yaml/pyyaml#472 -- Fix for CVE-2020-14343, moves arbitrary python tags to UnsafeLoader yaml/pyyaml#441 -- Fix memory leak in implicit resolver setup yaml/pyyaml#392 -- Fix py2 copy support for timezone objects yaml/pyyaml#378 -- Fix compatibility with Jython Commits 58d0cb7 5.4 release a60f7a1 Fix compatibility with Jython ee98abd Run CI on PR base branch changes ddf2033 constructor.timezone: _copy & deepcopy fc914d5 Avoid repeatedly appending to yaml_implicit_resolvers a001f27 Fix for CVE-2020-14343 fe15062 Add 3.9 to appveyor file for completeness sake 1e1c7fb Add a newline character to end of pyproject.toml 0b6b7d6 Start sentences and phrases for capital letters c976915 Shell code improvements Additional commits viewable in compare view Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase. Dependabot commands and options You can trigger Dependabot actions by commenting on this PR: @dependabot rebase will rebase this PR @dependabot recreate will recreate this PR, overwriting any edits that have been made to it @dependabot merge will merge this PR after your CI passes on it @dependabot squash and merge will squash and merge this PR after your CI passes on it @dependabot cancel merge will cancel a previously requested merge and block automerging @dependabot reopen will reopen this PR if it is closed @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) @dependabot use these labels will set the current labels as the default for future PRs for this repo and language @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language You can disable automated security fix PRs for this repo from the Security Alerts page. Reviewed-by: None <None> Reviewed-by: Anton Kachurin <katchuring@gmail.com> Reviewed-by: Anton Sidelnikov <None>
Closes: