Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package pyenv for openSUSE:Factory checked in at 2022-12-04 14:58:45 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pyenv (Old) and /work/SRC/openSUSE:Factory/.pyenv.new.1835 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pyenv" Sun Dec 4 14:58:45 2022 rev:18 rq:1039900 version:2.3.7 Changes: -------- --- /work/SRC/openSUSE:Factory/pyenv/pyenv.changes 2022-11-04 17:42:01.543023567 +0100 +++ /work/SRC/openSUSE:Factory/.pyenv.new.1835/pyenv.changes 2022-12-04 14:59:14.472576826 +0100 @@ -1,0 +2,23 @@ +Sat Dec 3 17:56:56 UTC 2022 - Thomas Schraitle <thomas.schrai...@suse.com> - 2.3.7 + +- Update to 2.3.7 + - Add Python version 3.11 to the macOS build by @jbkkd in #2510 + - Don't use Zlib from XCode SDK if a custom compiler is used by + @native-api in #2516 + - Change line endings from CRLF to LF by @hoang-himself in #2517 + - Fix resolution of a name that's a prefix of another name by + @native-api in #2521 + - GitHub Workflows security hardening by @sashashura in #2511 + - Add nushell to activate list by @theref in #2524 + - Fix compilation error when building OpenSSL 1.1.1q in MacOS 11+ + for 3.9.15 and 3.8.15 by @twangboy in #2520 + - Add simple .editorconfig file by @aphedges in #2518 + - Support aria2c being a snap by @native-api in #2528 + - Add CPython 3.12.0a2 by @saaketp in #2527 + - Add --no-push-path option by @isaacl in #2526 + - Fix typo in README.md by @weensy in #2535 + - Copy auto installer oneliner to readme by @spookyuser in #2538 + +Full Changelog: https://github.com/pyenv/pyenv/compare/v2.3.6...v2.3.7 + +------------------------------------------------------------------- Old: ---- pyenv-2.3.6.tar.gz New: ---- pyenv-2.3.7.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pyenv.spec ++++++ --- /var/tmp/diff_new_pack.V0ORMp/_old 2022-12-04 14:59:14.888579223 +0100 +++ /var/tmp/diff_new_pack.V0ORMp/_new 2022-12-04 14:59:14.892579245 +0100 @@ -19,7 +19,7 @@ %define pyenv_dir %{_libexecdir}/pyenv # Name: pyenv -Version: 2.3.6 +Version: 2.3.7 Release: 0 Summary: Python Version Management License: MIT ++++++ pyenv-2.3.6.tar.gz -> pyenv-2.3.7.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.3.6/.editorconfig new/pyenv-2.3.7/.editorconfig --- old/pyenv-2.3.6/.editorconfig 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.3.7/.editorconfig 2022-12-01 08:16:53.000000000 +0100 @@ -0,0 +1,11 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +end_of_line = lf +charset = utf-8 + +# Makefiles always use tabs for indentation +[Makefile] +indent_style = tab +indent_size = unset # Allow user-defined tab width diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.3.6/.github/workflows/macos_build.yml new/pyenv-2.3.7/.github/workflows/macos_build.yml --- old/pyenv-2.3.6/.github/workflows/macos_build.yml 2022-11-03 09:26:31.000000000 +0100 +++ new/pyenv-2.3.7/.github/workflows/macos_build.yml 2022-12-01 08:16:53.000000000 +0100 @@ -1,5 +1,9 @@ name: macos_build on: [pull_request, push] + +permissions: + contents: read # to fetch code (actions/checkout) + jobs: macos_build: strategy: @@ -10,6 +14,7 @@ - "3.8" - "3.9" - "3.10" + - "3.11" runs-on: macos-11 steps: - uses: actions/checkout@v2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.3.6/.github/workflows/no-response.yml new/pyenv-2.3.7/.github/workflows/no-response.yml --- old/pyenv-2.3.6/.github/workflows/no-response.yml 2022-11-03 09:26:31.000000000 +0100 +++ new/pyenv-2.3.7/.github/workflows/no-response.yml 2022-12-01 08:16:53.000000000 +0100 @@ -1,26 +1,30 @@ -name: No Response - -# Both `issue_comment` and `scheduled` event types are required for this Action -# to work properly. -on: - issue_comment: - types: [created] - schedule: - # Schedule for ten minutes after the hour, every hour - - cron: '10 * * * *' - -jobs: - noResponse: - runs-on: ubuntu-latest - steps: - - uses: lee-dohm/no-response@v0.5.0 - with: - token: ${{ github.token }} - daysUntilClose: 30 - responseRequiredLabel: need-feedback - closeComment: > - This issue has been automatically closed because there has been no response - to our request for more information from the original author. With only the - information that is currently in the issue, we don't have enough information - to take action. Please reach out if you have or find the answers we need so - that we can investigate further. +name: No Response + +# Both `issue_comment` and `scheduled` event types are required for this Action +# to work properly. +on: + issue_comment: + types: [created] + schedule: + # Schedule for ten minutes after the hour, every hour + - cron: '10 * * * *' + +permissions: {} +jobs: + noResponse: + permissions: + issues: write # to update issues (lee-dohm/no-response) + + runs-on: ubuntu-latest + steps: + - uses: lee-dohm/no-response@v0.5.0 + with: + token: ${{ github.token }} + daysUntilClose: 30 + responseRequiredLabel: need-feedback + closeComment: > + This issue has been automatically closed because there has been no response + to our request for more information from the original author. With only the + information that is currently in the issue, we don't have enough information + to take action. Please reach out if you have or find the answers we need so + that we can investigate further. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.3.6/.github/workflows/pyenv_tests.yml new/pyenv-2.3.7/.github/workflows/pyenv_tests.yml --- old/pyenv-2.3.6/.github/workflows/pyenv_tests.yml 2022-11-03 09:26:31.000000000 +0100 +++ new/pyenv-2.3.7/.github/workflows/pyenv_tests.yml 2022-12-01 08:16:53.000000000 +0100 @@ -1,5 +1,9 @@ name: pyenv_tests on: [pull_request, push] + +permissions: + contents: read # to fetch code (actions/checkout) + jobs: pyenv_tests: strategy: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.3.6/.github/workflows/ubuntu_build.yml new/pyenv-2.3.7/.github/workflows/ubuntu_build.yml --- old/pyenv-2.3.6/.github/workflows/ubuntu_build.yml 2022-11-03 09:26:31.000000000 +0100 +++ new/pyenv-2.3.7/.github/workflows/ubuntu_build.yml 2022-12-01 08:16:53.000000000 +0100 @@ -1,5 +1,9 @@ name: ubuntu_build on: [pull_request, push] + +permissions: + contents: read # to fetch code (actions/checkout) + jobs: ubuntu_build: strategy: @@ -10,6 +14,7 @@ - "3.8" - "3.9" - "3.10" + - "3.11" runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.3.6/.gitignore new/pyenv-2.3.7/.gitignore --- old/pyenv-2.3.6/.gitignore 2022-11-03 09:26:31.000000000 +0100 +++ new/pyenv-2.3.7/.gitignore 2022-12-01 08:16:53.000000000 +0100 @@ -8,3 +8,5 @@ /src/*.o /bats/ /default-packages +.idea +*.un~ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.3.6/CHANGELOG.md new/pyenv-2.3.7/CHANGELOG.md --- old/pyenv-2.3.6/CHANGELOG.md 2022-11-03 09:26:31.000000000 +0100 +++ new/pyenv-2.3.7/CHANGELOG.md 2022-12-01 08:16:53.000000000 +0100 @@ -1,5 +1,21 @@ ## Version History +## Release 2.3.7 + +* Add Python version 3.11 to the macOS build by @jbkkd in https://github.com/pyenv/pyenv/pull/2510 +* Don't use Zlib from XCode SDK if a custom compiler is used by @native-api in https://github.com/pyenv/pyenv/pull/2516 +* Change line endings from CRLF to LF by @hoang-himself in https://github.com/pyenv/pyenv/pull/2517 +* Fix resolution of a name that's a prefix of another name by @native-api in https://github.com/pyenv/pyenv/pull/2521 +* GitHub Workflows security hardening by @sashashura in https://github.com/pyenv/pyenv/pull/2511 +* Add nushell to activate list by @theref in https://github.com/pyenv/pyenv/pull/2524 +* Fix compilation error when building OpenSSL 1.1.1q in MacOS 11+ for 3.9.15 and 3.8.15 by @twangboy in https://github.com/pyenv/pyenv/pull/2520 +* Add simple `.editorconfig` file by @aphedges in https://github.com/pyenv/pyenv/pull/2518 +* Support `aria2c` being a snap by @native-api in https://github.com/pyenv/pyenv/pull/2528 +* Add CPython 3.12.0a2 by @saaketp in https://github.com/pyenv/pyenv/pull/2527 +* Add --no-push-path option by @isaacl in https://github.com/pyenv/pyenv/pull/2526 +* Fix typo in README.md by @weensy in https://github.com/pyenv/pyenv/pull/2535 +* Copy auto installer oneliner to readme by @spookyuser in https://github.com/pyenv/pyenv/pull/2538 + ## Release 2.3.6 * Add CPython 3.10.8 (#2480) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.3.6/COMMANDS.md new/pyenv-2.3.7/COMMANDS.md --- old/pyenv-2.3.6/COMMANDS.md 2022-11-03 09:26:31.000000000 +0100 +++ new/pyenv-2.3.7/COMMANDS.md 2022-12-01 08:16:53.000000000 +0100 @@ -386,11 +386,12 @@ Configure the shell environment for pyenv - Usage: eval "$(pyenv init [-|--path] [--no-rehash] [<shell>])" + Usage: eval "$(pyenv init [-|--path] [--no-push-path] [--no-rehash] [<shell>])" - Initialize shims directory, print PYENV_SHELL variable, completions path and shell function --path Print shims path + --no-push-path Do not push shim to the start of PATH if they're already there --no-rehash Add no rehash command to output ## `pyenv completions` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.3.6/CONTRIBUTING.md new/pyenv-2.3.7/CONTRIBUTING.md --- old/pyenv-2.3.6/CONTRIBUTING.md 2022-11-03 09:26:31.000000000 +0100 +++ new/pyenv-2.3.7/CONTRIBUTING.md 2022-12-01 08:16:53.000000000 +0100 @@ -1,109 +1,109 @@ -General guidance -================ - -* The usual principles of respecting existing conventions and making sure that your changes - are in line with the overall product design apply when contributing code to Pyenv. - -* We are limited to Bash 3.2 features - - That's because that's the version shipped with MacOS. - (They didn't upgrade past it and switched to Zsh because later versions - are covered by GPLv3 which has additional restrictions unacceptable for Apple.) - - You can still add performance optimizations etc that take advantage of newer Bash features - as long as there is a fallback execution route for Bash 3. - -* Be extra careful when submitting logic specific for the Apple Silicon platform - - As of this writing, Github Actions do not support it and only one team member has the necessary hardware. - So we may be unable to test your changes and may have to take your word for it. - - -Formatting PRs -============== - -We strive to keep commit history one-concern-per-commit to keep it meaningful and easy to follow. -If a pull request (PR) addresses a single concern (the typical case), we usually squash commits -from it together when merging so its commit history doesn't matter. -If however a PR addresses multiple separate concerns, each of them should be presented as a separate commit. -Adding multiple new Python releases of the same flavor is okay with either a single or multiple commits. - - -Authoring installation scripts -============================== - -Adding new Python release support ---------------------------------- - -The easiest way to add support for a new Python release is to copy the script from the previous one -and adjust it as necessary. In many cases, just changing version numbers, URLs and hashes is enough. -Do pay attention to other "magic numbers" that may be present in a script -- -e.g. the set of architectures and OS versions supported by a release -- since those change from time to time, too. - -Make sure to also copy any patches for the previous release that still apply to the new one. -Typically, a patch no longer applies if it addresses a problem that's already fixed in the new release. - -For prereleases, we only create an entry for the latest prerelease in a specific version line. -When submitting a newer prerelease, replace the older one. - - -Adding version-specific fixes/patches -------------------------------------- - -We accept fixes to issues in specific Python releases that prevent users from using them with Pyenv. - -In the default configuration for a Python release, we strive to provide as close to vanilla experience as practical, -to maintain [the principle of the least surprise](https://en.wikipedia.org/wiki/Principle_of_least_astonishment). -As such, any such fixes: - -* Must not break or degrade (e.g. disable features) the build in any of the environments that the release officially supports -* Must not introduce incompatibilities with the vanilla release (including binary incompatibilities) -* Should not patch things unnecessarily, to minimize the risk of the aforementioned undesirable side effects. - * E.g. if the fix is for a specific environment, its logic ought to only fire in this specific environment and not touch execution paths for other environments. - * As such, it's advisable to briefly explain in the PR what each added patch does and why it is necessary to fix the declared problem - -Generally, version-specific fixes belong in the scripts for the affected releases and/or patches for them -- this guarantees that their effect is limited to only those releases. - -<h3>Backporting upstream patches</h3> - -Usually, this is the easiest way to backport a fix for a problem that is fixed in a newer release. - -* Clone Python, check out the tag for the appropriate release and create a branch -* Apply existing patches if there are any (with either `patch` or `git am`) and commit -* Cherry-pick the upstream commit that fixes the problem in a newer release -* Commit and `git format-patch` -* Commit the generated patch file into Pyenv, test your changes and submit a PR - - -Deprecation policy ------------------- - -We do not provide official support for EOL releases and environments or otherwise provide any kind of extended support for old Python releases. - -We do however accept fixes from interested parties that would allow running older, including EOL, releases in newer environments. -In addition to the above requirements for release-specific fixes, - -* Such a fix must not add maintenance burden (e.g. add new logic to `python-build` that has to be kept there indefinitely) - * Unless the added logic is useful for both EOL and non-EOL releases. In this case, it will be considered as being primarily an improvement for non-EOL releases. -* Support is provided on a "best effort" basis: we do not maintain these fixes but won't actively break them, either, and accept any corrections. - Since old releases never change, it's pretty safe to assume that the fixes will continue to work until a later version - of an environment introduces further incompatible changes. - - -Advanced changes / adding new Python flavor support ---------------------------------------------------- - -An installation script is sourced from `python-build`. All installation scripts are based on the same logic: - -1. Select the source to download and other variable parameters as needed. - - This includes showing an error if the user's environment (OS, architecture) is not supported by the release. - Binary releases that only officially support specific distro(s) typically show a warning in other distros instead. - -2. Run one of the `install_*` shell functions - -`install_*` shell functions defined in `python-build` install Python from different kinds of sources -- compressed package (binary or source), upstream installation script, VCS checkout. Pick one that's the most appropriate for your packaging. - -Each of them accepts a couple of function-specific arguments which are followed by arguments that constitute the build sequence. Each `<argument>` in the build sequence corresponds to the `install_*_<argument>` function in `python-build`. Check what's available and add any functions with logic specific to your flavor if needed. - -We strive to keep out of `python-build` parts of build logic that are release-specific and/or tend to change abruptly between releases -- e.g. sets of supported architectures and other software's versions. This results in logic duplication between installation scripts -- but since old releases never change once released, this doesn't really add to the maintenance burden. As a rule of thumb, `python-build` can host parts of logic that are expected to stay the same for an indefinite amount of time -- for an entire Python flavor or release line. +General guidance +================ + +* The usual principles of respecting existing conventions and making sure that your changes + are in line with the overall product design apply when contributing code to Pyenv. + +* We are limited to Bash 3.2 features + + That's because that's the version shipped with MacOS. + (They didn't upgrade past it and switched to Zsh because later versions + are covered by GPLv3 which has additional restrictions unacceptable for Apple.) + + You can still add performance optimizations etc that take advantage of newer Bash features + as long as there is a fallback execution route for Bash 3. + +* Be extra careful when submitting logic specific for the Apple Silicon platform + + As of this writing, Github Actions do not support it and only one team member has the necessary hardware. + So we may be unable to test your changes and may have to take your word for it. + + +Formatting PRs +============== + +We strive to keep commit history one-concern-per-commit to keep it meaningful and easy to follow. +If a pull request (PR) addresses a single concern (the typical case), we usually squash commits +from it together when merging so its commit history doesn't matter. +If however a PR addresses multiple separate concerns, each of them should be presented as a separate commit. +Adding multiple new Python releases of the same flavor is okay with either a single or multiple commits. + + +Authoring installation scripts +============================== + +Adding new Python release support +--------------------------------- + +The easiest way to add support for a new Python release is to copy the script from the previous one +and adjust it as necessary. In many cases, just changing version numbers, URLs and hashes is enough. +Do pay attention to other "magic numbers" that may be present in a script -- +e.g. the set of architectures and OS versions supported by a release -- since those change from time to time, too. + +Make sure to also copy any patches for the previous release that still apply to the new one. +Typically, a patch no longer applies if it addresses a problem that's already fixed in the new release. + +For prereleases, we only create an entry for the latest prerelease in a specific version line. +When submitting a newer prerelease, replace the older one. + + +Adding version-specific fixes/patches +------------------------------------- + +We accept fixes to issues in specific Python releases that prevent users from using them with Pyenv. + +In the default configuration for a Python release, we strive to provide as close to vanilla experience as practical, +to maintain [the principle of the least surprise](https://en.wikipedia.org/wiki/Principle_of_least_astonishment). +As such, any such fixes: + +* Must not break or degrade (e.g. disable features) the build in any of the environments that the release officially supports +* Must not introduce incompatibilities with the vanilla release (including binary incompatibilities) +* Should not patch things unnecessarily, to minimize the risk of the aforementioned undesirable side effects. + * E.g. if the fix is for a specific environment, its logic ought to only fire in this specific environment and not touch execution paths for other environments. + * As such, it's advisable to briefly explain in the PR what each added patch does and why it is necessary to fix the declared problem + +Generally, version-specific fixes belong in the scripts for the affected releases and/or patches for them -- this guarantees that their effect is limited to only those releases. + +<h3>Backporting upstream patches</h3> + +Usually, this is the easiest way to backport a fix for a problem that is fixed in a newer release. + +* Clone Python, check out the tag for the appropriate release and create a branch +* Apply existing patches if there are any (with either `patch` or `git am`) and commit +* Cherry-pick the upstream commit that fixes the problem in a newer release +* Commit and `git format-patch` +* Commit the generated patch file into Pyenv, test your changes and submit a PR + + +Deprecation policy +------------------ + +We do not provide official support for EOL releases and environments or otherwise provide any kind of extended support for old Python releases. + +We do however accept fixes from interested parties that would allow running older, including EOL, releases in newer environments. +In addition to the above requirements for release-specific fixes, + +* Such a fix must not add maintenance burden (e.g. add new logic to `python-build` that has to be kept there indefinitely) + * Unless the added logic is useful for both EOL and non-EOL releases. In this case, it will be considered as being primarily an improvement for non-EOL releases. +* Support is provided on a "best effort" basis: we do not maintain these fixes but won't actively break them, either, and accept any corrections. + Since old releases never change, it's pretty safe to assume that the fixes will continue to work until a later version + of an environment introduces further incompatible changes. + + +Advanced changes / adding new Python flavor support +--------------------------------------------------- + +An installation script is sourced from `python-build`. All installation scripts are based on the same logic: + +1. Select the source to download and other variable parameters as needed. + + This includes showing an error if the user's environment (OS, architecture) is not supported by the release. + Binary releases that only officially support specific distro(s) typically show a warning in other distros instead. + +2. Run one of the `install_*` shell functions + +`install_*` shell functions defined in `python-build` install Python from different kinds of sources -- compressed package (binary or source), upstream installation script, VCS checkout. Pick one that's the most appropriate for your packaging. + +Each of them accepts a couple of function-specific arguments which are followed by arguments that constitute the build sequence. Each `<argument>` in the build sequence corresponds to the `install_*_<argument>` function in `python-build`. Check what's available and add any functions with logic specific to your flavor if needed. + +We strive to keep out of `python-build` parts of build logic that are release-specific and/or tend to change abruptly between releases -- e.g. sets of supported architectures and other software's versions. This results in logic duplication between installation scripts -- but since old releases never change once released, this doesn't really add to the maintenance burden. As a rule of thumb, `python-build` can host parts of logic that are expected to stay the same for an indefinite amount of time -- for an entire Python flavor or release line. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.3.6/README.md new/pyenv-2.3.7/README.md --- old/pyenv-2.3.6/README.md 2022-11-03 09:26:31.000000000 +0100 +++ new/pyenv-2.3.7/README.md 2022-12-01 08:16:53.000000000 +0100 @@ -247,7 +247,9 @@ #### Automatic installer -Visit our other project: +`curl https://pyenv.run | bash` + +For more details visit our other project: https://github.com/pyenv/pyenv-installer @@ -258,14 +260,14 @@ * **Check out Pyenv where you want it installed.** A good place to choose is `$HOME/.pyenv` (but you can install it somewhere else): - - git clone https://github.com/pyenv/pyenv.git ~/.pyenv - + ``` + git clone https://github.com/pyenv/pyenv.git ~/.pyenv + ``` * Optionally, try to compile a dynamic Bash extension to speed up Pyenv. Don't worry if it fails; Pyenv will still work normally: - - cd ~/.pyenv && src/configure && make -C src - + ``` + cd ~/.pyenv && src/configure && make -C src + ``` ### Set up your shell environment for Pyenv @@ -404,21 +406,21 @@ #### Prefix auto-resolution -Pyenv automatically resolves full prefixes to the latest version in the corresponding version line. -E.g. to install the latest 3.10 release: +All Pyenv subcommands except `uninstall` automatically resolve full prefixes to the latest version in the corresponding version line. + +`pyenv install` picks the latest known version while other subcommands -- the latest installed version. + +E.g. to install and then switch to the latest 3.10 release: ```sh pyenv install 3.10 +pyenv global 3.10 ``` -The same happens whenever Pyenv selects a version to use. -Installation selects the latest version known to Pyenv -while switching -- the latest installed version. - You can run [`pyenv latest <prefix>`](COMMANDS.md#pyenv-latest) to see what a specific prefix would be resolved to. -See the [`pyenv latest` documentation](COMMANDS.md#pyenv-latest) for details on the resolution process. +See the [`pyenv latest` documentation](COMMANDS.md#pyenv-latest) for details. #### Python versions with extended support diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.3.6/libexec/pyenv---version new/pyenv-2.3.7/libexec/pyenv---version --- old/pyenv-2.3.6/libexec/pyenv---version 2022-11-03 09:26:31.000000000 +0100 +++ new/pyenv-2.3.7/libexec/pyenv---version 2022-12-01 08:16:53.000000000 +0100 @@ -12,7 +12,7 @@ set -e [ -n "$PYENV_DEBUG" ] && set -x -version="2.3.6" +version="2.3.7" git_revision="" if cd "${BASH_SOURCE%/*}" 2>/dev/null && git remote -v 2>/dev/null | grep -q pyenv; then diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.3.6/libexec/pyenv-init new/pyenv-2.3.7/libexec/pyenv-init --- old/pyenv-2.3.6/libexec/pyenv-init 2022-11-03 09:26:31.000000000 +0100 +++ new/pyenv-2.3.7/libexec/pyenv-init 2022-12-01 08:16:53.000000000 +0100 @@ -1,6 +1,6 @@ #!/usr/bin/env bash # Summary: Configure the shell environment for pyenv -# Usage: eval "$(pyenv init [-|--path] [--no-rehash] [<shell>])" +# Usage: eval "$(pyenv init [-|--path] [--no-push-path] [--no-rehash] [<shell>])" set -e [ -n "$PYENV_DEBUG" ] && set -x @@ -9,6 +9,7 @@ if [ "$1" = "--complete" ]; then echo - echo --path + echo --no-push-path echo --no-rehash echo bash echo fish @@ -19,6 +20,7 @@ mode="help" no_rehash="" +no_push_path="" for args in "$@" do if [ "$args" = "-" ]; then @@ -30,6 +32,11 @@ mode="path" shift fi + + if [ "$args" = "--no-push-path" ]; then + no_push_path=1 + shift + fi if [ "$args" = "--no-rehash" ]; then no_rehash=1 @@ -141,28 +148,56 @@ } function print_path() { - case "$shell" in - fish ) - echo 'while set index (contains -i -- '\'"${PYENV_ROOT}/shims"\'' $PATH)' - echo 'set -eg PATH[$index]; end; set -e index' - echo 'set -gx PATH '\'"${PYENV_ROOT}/shims"\'' $PATH' - ;; - * ) - # Some distros (notably Debian-based) set Bash's SSH_SOURCE_BASHRC compilation option - # that makes it source `bashrc` under SSH even when not interactive. - # This is inhibited by a guard in Debian's stock `bashrc` but some people remove it - # in order to get proper environment for noninteractive remote commands - # (SSH provides /etc/ssh/sshrc and ~/.ssh/rc for that but no-one seems to use them for some reason). - # This has caused an infinite `bashrc` execution loop for those people in the below nested Bash invocation (#2367). - # --norc negates this behavior of such a customized Bash. - echo 'PATH="$(bash --norc -ec '\''IFS=:; paths=($PATH); ' - echo 'for i in ${!paths[@]}; do ' - echo 'if [[ ${paths[i]} == "'\'\'"${PYENV_ROOT}/shims"\'\''" ]]; then unset '\'\\\'\''paths[i]'\'\\\'\''; ' - echo 'fi; done; ' - echo 'echo "${paths[*]}"'\'')"' - echo 'export PATH="'"${PYENV_ROOT}"'/shims:${PATH}"' - ;; - esac + # if no_push_path is set, guard the PATH manipulation with a check on whether + # the shim is already in the PATH. + if [ -n "$no_push_path" ]; then + case "$shell" in + fish ) + echo 'if not contains -- "'"${PYENV_ROOT}/shims"'" $PATH' + print_path_prepend_shims + echo 'end' + ;; + * ) + echo 'if [[ ":$PATH:" != *'\':"${PYENV_ROOT}"/shims:\''* ]]; then' + print_path_prepend_shims + echo 'fi' + ;; + esac + else + case "$shell" in + fish ) + echo 'while set pyenv_index (contains -i -- "'"${PYENV_ROOT}/shims"'" $PATH)' + echo 'set -eg PATH[$pyenv_index]; end; set -e pyenv_index' + print_path_prepend_shims + ;; + * ) + # Some distros (notably Debian-based) set Bash's SSH_SOURCE_BASHRC compilation option + # that makes it source `bashrc` under SSH even when not interactive. + # This is inhibited by a guard in Debian's stock `bashrc` but some people remove it + # in order to get proper environment for noninteractive remote commands + # (SSH provides /etc/ssh/sshrc and ~/.ssh/rc for that but no-one seems to use them for some reason). + # This has caused an infinite `bashrc` execution loop for those people in the below nested Bash invocation (#2367). + # --norc negates this behavior of such a customized Bash. + echo 'PATH="$(bash --norc -ec '\''IFS=:; paths=($PATH); ' + echo 'for i in ${!paths[@]}; do ' + echo 'if [[ ${paths[i]} == "'\'\'"${PYENV_ROOT}/shims"\'\''" ]]; then unset '\'\\\'\''paths[i]'\'\\\'\''; ' + echo 'fi; done; ' + echo 'echo "${paths[*]}"'\'')"' + print_path_prepend_shims + ;; + esac + fi +} + +function print_path_prepend_shims() { + case "$shell" in + fish ) + echo 'set -gx PATH '\'"${PYENV_ROOT}/shims"\'' $PATH' + ;; + * ) + echo 'export PATH="'"${PYENV_ROOT}"'/shims:${PATH}"' + ;; + esac } function print_env() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.3.6/libexec/pyenv-latest new/pyenv-2.3.7/libexec/pyenv-latest --- old/pyenv-2.3.6/libexec/pyenv-latest 2022-11-03 09:26:31.000000000 +0100 +++ new/pyenv-2.3.7/libexec/pyenv-latest 2022-12-01 08:16:53.000000000 +0100 @@ -35,6 +35,12 @@ else DEFINITION_CANDIDATES=( $(python-build --definitions ) ) fi + + if printf '%s\n' "${DEFINITION_CANDIDATES[@]}" | grep -qxFe "$prefix"; then + echo "$prefix" + exit $exitcode; + fi + # https://stackoverflow.com/questions/11856054/is-there-an-easy-way-to-pass-a-raw-string-to-grep/63483807#63483807 prefix_re="$(sed 's/[^\^]/[&]/g;s/[\^]/\\&/g' <<< "$prefix")" # FIXME: more reliable and readable would probably be to loop over them and transform in pure Bash diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.3.6/plugins/python-build/bin/python-build new/pyenv-2.3.7/plugins/python-build/bin/python-build --- old/pyenv-2.3.6/plugins/python-build/bin/python-build 2022-11-03 09:26:31.000000000 +0100 +++ new/pyenv-2.3.7/plugins/python-build/bin/python-build 2022-12-01 08:16:53.000000000 +0100 @@ -360,12 +360,38 @@ } http_get_aria2c() { - local out="${2:-$(mktemp "out.XXXXXX")}" - if aria2c --allow-overwrite=true --no-conf=true -o "${out}" ${ARIA2_OPTS} "$1" >&4; then + # aria2c always treats -o argument as a relative path + local out dir_out; + if [[ -n "$2" ]]; then + out="$(basename $2)"; + dir_out="$(dirname $2)"; + else + out="$(mktemp "out.XXXXXX")"; + dir_out="$TMPDIR"; + fi + + # In Ubuntu, aria2c is only available as a snap. Snaps cannot read or write /tmp + # (files cannot be found, any write result is silently discarded). + local aria2c_is_snap; + if [[ $(command -v aria2c) == "/snap/"* ]]; then aria2c_is_snap=1; fi + + if [[ -n $aria2c_is_snap ]]; then + local real_dir_out="$dir_out" + # presumably, snaps can always write to under $HOME + dir_out="$HOME" + fi + + if aria2c --allow-overwrite=true --no-conf=true -d "${dir_out}" -o "${out}" ${ARIA2_OPTS} "$1" >&4; then [ -n "$2" ] || cat "${out}" else false fi + ret=$? + + if [[ -n "$2" && -n $aria2c_is_snap ]]; then + mv "$dir_out/$out" "$real_dir_out/$out" + fi + return "$ret" } http_head_curl() { @@ -1564,6 +1590,8 @@ } use_xcode_sdk_zlib() { + # If a custom compiler is used, including XCode SDK will likely break it + [[ "${CC:-clang}" != "clang" || "$(command -v clang 2>/dev/null || true)" != "/usr/bin/clang" ]] && return 1 local xc_sdk_path="$(xcrun --show-sdk-path 2>/dev/null || true)" if [ -d "$xc_sdk_path" ]; then echo "python-build: use zlib from xcode sdk" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.3.6/plugins/python-build/share/python-build/3.12.0a1 new/pyenv-2.3.7/plugins/python-build/share/python-build/3.12.0a1 --- old/pyenv-2.3.6/plugins/python-build/share/python-build/3.12.0a1 2022-11-03 09:26:31.000000000 +0100 +++ new/pyenv-2.3.7/plugins/python-build/share/python-build/3.12.0a1 1970-01-01 01:00:00.000000000 +0100 @@ -1,9 +0,0 @@ -prefer_openssl11 -export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 -install_package "openssl-1.1.1q" "https://www.openssl.org/source/openssl-1.1.1q.tar.gz#d7939ce614029cdff0b6c20f0e2e5703158a489a72b2507b8bd51bf8c8fd10ca" mac_openssl --if has_broken_mac_openssl -install_package "readline-8.2" "https://ftpmirror.gnu.org/readline/readline-8.2.tar.gz#3feb7171f16a84ee82ca18a36d7b9be109a52c04f492a053331d7d1095007c35" mac_readline --if has_broken_mac_readline -if has_tar_xz_support; then - install_package "Python-3.12.0a1" "https://www.python.org/ftp/python/3.12.0/Python-3.12.0a1.tar.xz#7be2bd9b1fc9f64b334660581bb645f0eae0b344c80130f1eb22983a1c292f43" standard verify_py312 copy_python_gdb ensurepip -else - install_package "Python-3.12.0a1" "https://www.python.org/ftp/python/3.12.0/Python-3.12.0a1.tgz#db4dd2315715e11250175f5dc06fa9d32d4a9fed4db7b6774d4be72d7b94b7e3" standard verify_py312 copy_python_gdb ensurepip -fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.3.6/plugins/python-build/share/python-build/3.12.0a2 new/pyenv-2.3.7/plugins/python-build/share/python-build/3.12.0a2 --- old/pyenv-2.3.6/plugins/python-build/share/python-build/3.12.0a2 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.3.7/plugins/python-build/share/python-build/3.12.0a2 2022-12-01 08:16:53.000000000 +0100 @@ -0,0 +1,9 @@ +prefer_openssl11 +export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 +install_package "openssl-1.1.1s" "https://www.openssl.org/source/openssl-1.1.1s.tar.gz#c5ac01e760ee6ff0dab61d6b2bbd30146724d063eb322180c6f18a6f74e4b6aa" mac_openssl --if has_broken_mac_openssl +install_package "readline-8.2" "https://ftpmirror.gnu.org/readline/readline-8.2.tar.gz#3feb7171f16a84ee82ca18a36d7b9be109a52c04f492a053331d7d1095007c35" mac_readline --if has_broken_mac_readline +if has_tar_xz_support; then + install_package "Python-3.12.0a2" "https://www.python.org/ftp/python/3.12.0/Python-3.12.0a2.tar.xz#1eafc1384e532cac6432632a77350ef504a114c4235c1f6f2a85f817f5b1926a" standard verify_py312 copy_python_gdb ensurepip +else + install_package "Python-3.12.0a2" "https://www.python.org/ftp/python/3.12.0/Python-3.12.0a2.tgz#81fa3468cada25f5ac8868230a847999495464f8ab67df1df3e8e8e280df0b2b" standard verify_py312 copy_python_gdb ensurepip +fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.3.6/plugins/python-build/share/python-build/patches/3.8.15/openssl-1.1.1q/openssl_1.1.1q_fix_c_include.patch new/pyenv-2.3.7/plugins/python-build/share/python-build/patches/3.8.15/openssl-1.1.1q/openssl_1.1.1q_fix_c_include.patch --- old/pyenv-2.3.6/plugins/python-build/share/python-build/patches/3.8.15/openssl-1.1.1q/openssl_1.1.1q_fix_c_include.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.3.7/plugins/python-build/share/python-build/patches/3.8.15/openssl-1.1.1q/openssl_1.1.1q_fix_c_include.patch 2022-12-01 08:16:53.000000000 +0100 @@ -0,0 +1,12 @@ +diff --git a/test/v3ext.c b/test/v3ext.c +index 7a240cd706..6cec6f1a9b 100644 +--- a/test/v3ext.c ++++ b/test/v3ext.c +@@ -15,6 +15,7 @@ + #include <openssl/err.h> + #include "internal/nelem.h" + ++#include <string.h> + #include "testutil.h" + + static const char *infile; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.3.6/plugins/python-build/share/python-build/patches/3.9.15/openssl-1.1.1q/openssl_1.1.1q_fix_c_include.patch new/pyenv-2.3.7/plugins/python-build/share/python-build/patches/3.9.15/openssl-1.1.1q/openssl_1.1.1q_fix_c_include.patch --- old/pyenv-2.3.6/plugins/python-build/share/python-build/patches/3.9.15/openssl-1.1.1q/openssl_1.1.1q_fix_c_include.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.3.7/plugins/python-build/share/python-build/patches/3.9.15/openssl-1.1.1q/openssl_1.1.1q_fix_c_include.patch 2022-12-01 08:16:53.000000000 +0100 @@ -0,0 +1,12 @@ +diff --git a/test/v3ext.c b/test/v3ext.c +index 7a240cd706..6cec6f1a9b 100644 +--- a/test/v3ext.c ++++ b/test/v3ext.c +@@ -15,6 +15,7 @@ + #include <openssl/err.h> + #include "internal/nelem.h" + ++#include <string.h> + #include "testutil.h" + + static const char *infile; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.3.6/plugins/python-build/test/fetch.bats new/pyenv-2.3.7/plugins/python-build/test/fetch.bats --- old/pyenv-2.3.6/plugins/python-build/test/fetch.bats 2022-11-03 09:26:31.000000000 +0100 +++ new/pyenv-2.3.7/plugins/python-build/test/fetch.bats 2022-12-01 08:16:53.000000000 +0100 @@ -21,7 +21,7 @@ @test "using aria2c if available" { export PYTHON_BUILD_ARIA2_OPTS= export -n PYTHON_BUILD_HTTP_CLIENT - stub aria2c "--allow-overwrite=true --no-conf=true -o * http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$4" + stub aria2c "--allow-overwrite=true --no-conf=true -d * -o * http://example.com/* : cp $FIXTURE_ROOT/\${7##*/} \$6" install_fixture definitions/without-checksum assert_success diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.3.6/pyenv.d/rehash/source.d/default.list new/pyenv-2.3.7/pyenv.d/rehash/source.d/default.list --- old/pyenv-2.3.6/pyenv.d/rehash/source.d/default.list 2022-11-03 09:26:31.000000000 +0100 +++ new/pyenv-2.3.7/pyenv.d/rehash/source.d/default.list 2022-12-01 08:16:53.000000000 +0100 @@ -2,5 +2,6 @@ activate activate.csh activate.fish +activate.nu # gettext (#688) gettext.sh diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.3.6/test/init.bats new/pyenv-2.3.7/test/init.bats --- old/pyenv-2.3.6/test/init.bats 2022-11-03 09:26:31.000000000 +0100 +++ new/pyenv-2.3.7/test/init.bats 2022-12-01 08:16:53.000000000 +0100 @@ -98,7 +98,6 @@ command -v fish >/dev/null || skip "-- fish not installed" OLDPATH="$PATH" export PATH="${BATS_TEST_DIRNAME}/nonexistent:${PYENV_ROOT}/shims:$PATH" - # fish 2 (Ubuntu Bionic) adds spurious messages when setting PATH, messing up the output run fish <<! set -x PATH "$PATH" pyenv init - | source @@ -108,6 +107,50 @@ assert_output "${PYENV_ROOT}/shims:${BATS_TEST_DIRNAME}/nonexistent:${OLDPATH//${PYENV_ROOT}\/shims:/}" } +@test "adds shims to PATH with --no-push-path if they're not on PATH" { + export PATH="${BATS_TEST_DIRNAME}/../libexec:/usr/bin:/bin:/usr/local/bin" + run bash -e <<! +eval "\$(pyenv-init - --no-push-path)" +echo "\$PATH" +! + assert_success + assert_output "${PYENV_ROOT}/shims:${PATH}" +} + +@test "adds shims to PATH with --no-push-path if they're not on PATH (fish)" { + command -v fish >/dev/null || skip "-- fish not installed" + export PATH="${BATS_TEST_DIRNAME}/../libexec:/usr/bin:/bin:/usr/local/bin" + run fish <<! +set -x PATH "$PATH" +pyenv-init - --no-push-path| source +echo "\$PATH" +! + assert_success + assert_output "${PYENV_ROOT}/shims:${PATH}" +} + +@test "doesn't change PATH with --no-push-path if shims are already on PATH" { + export PATH="${BATS_TEST_DIRNAME}/../libexec:${PYENV_ROOT}/shims:/usr/bin:/bin:/usr/local/bin" + run bash -e <<! +eval "\$(pyenv-init - --no-push-path)" +echo "\$PATH" +! + assert_success + assert_output "${PATH}" +} + +@test "doesn't change PATH with --no-push-path if shims are already on PATH (fish)" { + command -v fish >/dev/null || skip "-- fish not installed" + export PATH="${BATS_TEST_DIRNAME}/../libexec:/usr/bin:${PYENV_ROOT}/shims:/bin:/usr/local/bin" + run fish <<! +set -x PATH "$PATH" +pyenv-init - --no-push-path| source +echo "\$PATH" +! + assert_success + assert_output "${PATH}" +} + @test "outputs sh-compatible syntax" { run pyenv-init - bash assert_success diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.3.6/test/latest.bats new/pyenv-2.3.7/test/latest.bats --- old/pyenv-2.3.6/test/latest.bats 2022-11-03 09:26:31.000000000 +0100 +++ new/pyenv-2.3.7/test/latest.bats 2022-12-01 08:16:53.000000000 +0100 @@ -64,6 +64,21 @@ ! } +@test "complete name resolves to itself" { + create_executable pyenv-versions <<! +#!$BASH +echo foo +echo foo.bar +! + +run pyenv-latest foo +assert_success +assert_output <<! +foo +! + +} + @test "sort CPython" { create_executable pyenv-versions <<! #!$BASH