mirror of
https://github.com/kennethreitz/heroku-buildpack-python.git
synced 2026-06-05 23:10:16 +00:00
Compare commits
31 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ae56342a81 | |||
| 3e49aeb940 | |||
| a91a5427de | |||
| ab69658efb | |||
| dfbe8ddaf5 | |||
| 60b9d1a562 | |||
| 3fa3f15d35 | |||
| a510c47b26 | |||
| 1972e6094e | |||
| 84ac34b1d4 | |||
| 7c4f55bc32 | |||
| eabe71d578 | |||
| 95fca53d38 | |||
| ff4f677435 | |||
| cba3201ac2 | |||
| ac29db32f8 | |||
| e83576f6b4 | |||
| 43600f25a5 | |||
| f508bd538d | |||
| bc7e34dbad | |||
| 419ef47996 | |||
| c1f6679dd7 | |||
| de81e41336 | |||
| 99c1027cb2 | |||
| 46d3d2b042 | |||
| 7b4f16145b | |||
| a165deadfb | |||
| b64897a0b7 | |||
| fc6698e597 | |||
| 6fa6feb75d | |||
| 81874dad47 |
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"productTag": "a1aB0000000MR0RIAW",
|
||||||
|
"issueTypeLabels": { "gus: story": "USER STORY", "gus: bug": "BUG P3" },
|
||||||
|
"defaultBuild": "Heroku Unscheduled",
|
||||||
|
"statusWhenClosed": "CLOSED"
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "pip"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "weekly"
|
||||||
|
labels:
|
||||||
|
- "c: dependencies"
|
||||||
|
|
||||||
|
- package-ecosystem: "bundler"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "weekly"
|
||||||
|
labels:
|
||||||
|
- "c: dependencies"
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
repos:
|
|
||||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
||||||
rev: v2.3.0
|
|
||||||
hooks:
|
|
||||||
- id: check-yaml
|
|
||||||
- id: end-of-file-fixer
|
|
||||||
- id: trailing-whitespace
|
|
||||||
+5
-8
@@ -1,8 +1,8 @@
|
|||||||
language: minimal
|
language: minimal
|
||||||
dist: bionic
|
dist: focal
|
||||||
branches:
|
branches:
|
||||||
only:
|
only:
|
||||||
- master
|
- main
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- make test STACK="${STACK}" TEST_CMD="${TEST_CMD}"
|
- make test STACK="${STACK}" TEST_CMD="${TEST_CMD}"
|
||||||
@@ -12,14 +12,13 @@ jobs:
|
|||||||
- name: Bash linting (shellcheck)
|
- name: Bash linting (shellcheck)
|
||||||
script: make check
|
script: make check
|
||||||
- name: Hatchet integration tests
|
- name: Hatchet integration tests
|
||||||
if: env(TRAVIS_PULL_REQUEST_SLUG) = env(TRAVIS_REPO_SLUG)
|
if: env(HEROKU_API_USER) IS present AND env(HEROKU_API_KEY) IS present
|
||||||
language: ruby
|
language: ruby
|
||||||
rvm:
|
rvm:
|
||||||
- 2.6.6
|
- 2.7
|
||||||
before_script:
|
before_script:
|
||||||
- gem install bundler -v 1.16.2
|
|
||||||
script:
|
|
||||||
- bundle exec hatchet ci:setup
|
- bundle exec hatchet ci:setup
|
||||||
|
script:
|
||||||
- PARALLEL_SPLIT_TEST_PROCESSES=11 bundle exec parallel_split_test spec/hatchet/
|
- PARALLEL_SPLIT_TEST_PROCESSES=11 bundle exec parallel_split_test spec/hatchet/
|
||||||
|
|
||||||
env:
|
env:
|
||||||
@@ -40,5 +39,3 @@ env:
|
|||||||
- IS_RUNNING_ON_CI=true
|
- IS_RUNNING_ON_CI=true
|
||||||
- HATCHET_APP_LIMIT=80
|
- HATCHET_APP_LIMIT=80
|
||||||
- HATCHET_DEPLOY_STRATEGY=git
|
- HATCHET_DEPLOY_STRATEGY=git
|
||||||
- secure: yjtlPE5FbVxTKnjUy/tZUBgSEf4qADD3QOxtgziuid73S0U/1IEXlMGFULsQzIjtlHKmHeywZqpVVEpthIH4RuT7uoX1Pb7SSM/g0T8fT3VoEFbFK1uYl0oZQbUS4Klxv9tPiumj8if3m6ULEGIz1X0wZcMOC0tMLwVCnwmap0E=
|
|
||||||
- secure: ZeFTHWwnpIKE9nAqs88ocmiQh7bKce84lilGm5J23nf3N6V4wNyLwqlkvsM008WGBCaOg9AUx7ZunasT0ANsR5gLP3eV2UUg7ILdRgV2Gy13eNRFheC4PHdN92RqQ3aKoqlIv2K999xlhVjod0NzhkQQXB6PddfQINbuU7ks6As=
|
|
||||||
|
|||||||
+119
-98
@@ -1,9 +1,33 @@
|
|||||||
# Python Buildpack Changelog
|
# Python Buildpack Changelog
|
||||||
|
|
||||||
# Master
|
## Unreleased
|
||||||
|
|
||||||
|
|
||||||
# 174 (2020-07-30)
|
## v178 (2020-09-07)
|
||||||
|
|
||||||
|
- Python 3.5.10 is now available (CPython) (#1062).
|
||||||
|
|
||||||
|
## v177 (2020-08-18)
|
||||||
|
|
||||||
|
- Python 3.6.12 and 3.7.9 are now available (CPython) (#1054).
|
||||||
|
- The default Python version for new apps is now 3.6.12 (previously 3.6.11) (#1054).
|
||||||
|
|
||||||
|
## v176 (2020-08-12)
|
||||||
|
|
||||||
|
- Rebuild the Python 3.4.10 archives with the correct version of Python (#1048).
|
||||||
|
- Fix the security update version check message for apps using PyPy (#1040).
|
||||||
|
- Remove `vendor/test-utils` (#1043).
|
||||||
|
|
||||||
|
## v175 (2020-08-05)
|
||||||
|
|
||||||
|
- Update pip from 20.0.2 to 20.1.1 for Python 2.7 and Python 3.5+ (#1030).
|
||||||
|
- Update setuptools from 39.0.1 to: (#1024)
|
||||||
|
- 44.1.1 for Python 2.7
|
||||||
|
- 43.0.0 for Python 3.4
|
||||||
|
- 47.1.1 for Python 3.5+
|
||||||
|
- Switch the `heroku-buildpack-python` repository default branch from `master` to `main` (#1029).
|
||||||
|
|
||||||
|
## v174 (2020-07-30)
|
||||||
|
|
||||||
- For repeat builds, also manage the installed versions of setuptools/wheel, rather than just that of pip (#1007).
|
- For repeat builds, also manage the installed versions of setuptools/wheel, rather than just that of pip (#1007).
|
||||||
- Install an explicit version of wheel rather than the latest release at the time (#1007).
|
- Install an explicit version of wheel rather than the latest release at the time (#1007).
|
||||||
@@ -12,87 +36,85 @@
|
|||||||
- Install pip using itself rather than `get-pip.py` (#1007).
|
- Install pip using itself rather than `get-pip.py` (#1007).
|
||||||
- Disable pip's version check + cache when installing pip/setuptools/wheel (#1007).
|
- Disable pip's version check + cache when installing pip/setuptools/wheel (#1007).
|
||||||
- Install setuptools from PyPI rather than a vendored copy (#1007).
|
- Install setuptools from PyPI rather than a vendored copy (#1007).
|
||||||
- Reduce the number of environment variables exposed to `bin/{pre,post}_compile` and other subprocesses (#1011)
|
- Reduce the number of environment variables exposed to `bin/{pre,post}_compile` and other subprocesses (#1011).
|
||||||
|
|
||||||
# 173 (2020-07-21)
|
## v173 (2020-07-21)
|
||||||
|
|
||||||
- Python 3.8.5 is now available (CPython)
|
- Python 3.8.5 is now available (CPython).
|
||||||
|
|
||||||
# 172 (2020-07-17)
|
## v172 (2020-07-17)
|
||||||
|
|
||||||
- Python 3.8.4 is now available (CPython)
|
- Python 3.8.4 is now available (CPython).
|
||||||
|
|
||||||
# 171 (2020-07-07)
|
## v171 (2020-07-07)
|
||||||
|
|
||||||
- Python 3.6.11 and 3.7.8 are now available (CPython).
|
- Python 3.6.11 and 3.7.8 are now available (CPython).
|
||||||
|
|
||||||
# 170 (2020-05-19)
|
## v170 (2020-05-19)
|
||||||
|
|
||||||
- Python 2.7.18, 3.5.9, 3.7.7 and 3.8.3 are now available (CPython).
|
- Python 2.7.18, 3.5.9, 3.7.7 and 3.8.3 are now available (CPython).
|
||||||
- PyPy 2.7 and 3.6, version 7.3.1 are now available (Note: PyPy support is in beta)
|
- PyPy 2.7 and 3.6, version 7.3.1 are now available (Note: PyPy support is in beta).
|
||||||
- Docs: Fix explanation of runtime.txt generation when using pipenv
|
- Docs: Fix explanation of runtime.txt generation when using pipenv.
|
||||||
- Bugfix: Correctly detect Python version when using a `python_version` of `3.8` in `Pipfile.lock`
|
- Bugfix: Correctly detect Python version when using a `python_version` of `3.8` in `Pipfile.lock`.
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
## v169 (2020-04-22)
|
||||||
|
|
||||||
# 169 (2020-04-22)
|
|
||||||
|
|
||||||
- Add a Hatchet test for python 3.8.2
|
- Add a Hatchet test for python 3.8.2
|
||||||
- Set Code Owners to @heroku/langauges
|
- Set Code Owners to @heroku/langauges
|
||||||
- Bugfix: Caching on subsequent redeploys
|
- Bugfix: Caching on subsequent redeploys
|
||||||
- Update tests to support latest version of Python
|
- Update tests to support latest version of Python
|
||||||
|
|
||||||
# 168 (2020-04-06)
|
## v168 (2020-04-06)
|
||||||
|
|
||||||
- Doc: Update Readme with version numbers
|
- Doc: Update Readme with version numbers
|
||||||
- update Code Owners to include the Heroku Buildpack Maintainers team
|
- update Code Owners to include the Heroku Buildpack Maintainers team
|
||||||
- Deprecation warning: BUILD_WITH_GEO_LIBRARIES is now deprecated. See warning for details.
|
- Deprecation warning: `BUILD_WITH_GEO_LIBRARIES` is now deprecated. See warning for details.
|
||||||
- Clean up build log output
|
- Clean up build log output
|
||||||
- Update Python versions in README to match docs
|
- Update Python versions in README to match docs
|
||||||
- Django version detection fixed, link updated
|
- Django version detection fixed, link updated
|
||||||
|
|
||||||
# 167 (2020-03-26)
|
## v167 (2020-03-26)
|
||||||
|
|
||||||
- Add failcase for cache busting
|
- Add failcase for cache busting
|
||||||
- Bugfix: Clearing pip dependencies
|
- Bugfix: Clearing pip dependencies
|
||||||
|
|
||||||
# 166 (2020-03-05)
|
## v166 (2020-03-05)
|
||||||
|
|
||||||
- Correct ftp to https in vendored file
|
- Correct ftp to https in vendored file
|
||||||
- Warn for Django 1.11 approaching EOL, provide link to roadmap
|
- Warn for Django 1.11 approaching EOL, provide link to roadmap
|
||||||
|
|
||||||
# 165 (2020-02-27)
|
## v165 (2020-02-27)
|
||||||
|
|
||||||
- Python 3.8.2 now available.
|
- Python 3.8.2 now available.
|
||||||
|
|
||||||
# 164 (2020-02-20)
|
## v164 (2020-02-20)
|
||||||
|
|
||||||
- Update requirements.txt builds to use Pip 20.0.2
|
- Update requirements.txt builds to use Pip 20.0.2
|
||||||
- Download get-pip.py to tmpdir instead of root dir
|
- Download get-pip.py to tmpdir instead of root dir
|
||||||
|
|
||||||
# 163 (2019-12-23)
|
## v163 (2019-12-23)
|
||||||
|
|
||||||
- New pythons released:
|
- New pythons released:
|
||||||
Python 3.8.1, 3.7.6, 3.6.10 (CPython)
|
Python 3.8.1, 3.7.6, 3.6.10 (CPython)
|
||||||
Beta Release: Pypy 2.7 and 3.6, version 7.2.0
|
Beta Release: Pypy 2.7 and 3.6, version 7.2.0
|
||||||
|
|
||||||
# 162 (2019-12-06)
|
## v162 (2019-12-06)
|
||||||
|
|
||||||
- Bug fix: fragile sqlite3 install
|
- Bug fix: fragile sqlite3 install
|
||||||
|
|
||||||
# 161 (2019-12-2)
|
## v161 (2019-12-2)
|
||||||
|
|
||||||
- Bug fix: Sqlite3 version bump
|
- Bug fix: Sqlite3 version bump
|
||||||
|
|
||||||
# 160 (2019-10-23)
|
## v160 (2019-10-23)
|
||||||
|
|
||||||
- Bugfix: Pipenv no longer installs twice in CI
|
- Bugfix: Pipenv no longer installs twice in CI
|
||||||
|
|
||||||
# 159 (2019-10-22)
|
## v159 (2019-10-22)
|
||||||
|
|
||||||
- Python 2.7.17 now available on Heroku 18 and 16.
|
- Python 2.7.17 now available on Heroku 18 and 16.
|
||||||
|
|
||||||
# 158 (2019-10-21)
|
## v158 (2019-10-21)
|
||||||
|
|
||||||
- Python 3.7.5 and 3.8.0 now available on Heroku 18 and 16.
|
- Python 3.7.5 and 3.8.0 now available on Heroku 18 and 16.
|
||||||
- Add support for Python 3.8 branch
|
- Add support for Python 3.8 branch
|
||||||
@@ -100,11 +122,11 @@
|
|||||||
- Test Improvements
|
- Test Improvements
|
||||||
- Add support for staging binary testing
|
- Add support for staging binary testing
|
||||||
|
|
||||||
# 157 (2019-09-18)
|
## v157 (2019-09-18)
|
||||||
|
|
||||||
- Typo fixes
|
- Typo fixes
|
||||||
|
|
||||||
# 156 (2019-09-12)
|
## v156 (2019-09-12)
|
||||||
|
|
||||||
- Python 3.6.9 and 3.7.4 now available.
|
- Python 3.6.9 and 3.7.4 now available.
|
||||||
|
|
||||||
@@ -112,125 +134,125 @@
|
|||||||
- Build utility and documentation updates
|
- Build utility and documentation updates
|
||||||
- Bump Hatchet tests to point at new default python version.
|
- Bump Hatchet tests to point at new default python version.
|
||||||
|
|
||||||
# 155 (2019-08-22)
|
## v155 (2019-08-22)
|
||||||
|
|
||||||
add docs and make target for heroku-18 bob builds
|
add docs and make target for heroku-18 bob builds
|
||||||
|
|
||||||
# 154 (2019-07-17)
|
## v154 (2019-07-17)
|
||||||
|
|
||||||
Fix python 3.5.7 formula actually building 3.7.2
|
Fix python 3.5.7 formula actually building 3.7.2
|
||||||
|
|
||||||
# 153 (2019-06-21)
|
## v153 (2019-06-21)
|
||||||
|
|
||||||
Hotfix for broken heroku-16 deploys
|
Hotfix for broken heroku-16 deploys
|
||||||
|
|
||||||
# 152 (2019-04-04)
|
## v152 (2019-04-04)
|
||||||
|
|
||||||
Python 3.7.3 now available.
|
Python 3.7.3 now available.
|
||||||
|
|
||||||
# 151 (2019-03-21)
|
## v151 (2019-03-21)
|
||||||
|
|
||||||
Python 3.5.7 and 3.4.10 now available on all Heroku stacks.
|
Python 3.5.7 and 3.4.10 now available on all Heroku stacks.
|
||||||
|
|
||||||
# 150 (2019-03-13)
|
## v150 (2019-03-13)
|
||||||
|
|
||||||
Python 2.7.16 now available on all Heroku stacks.
|
Python 2.7.16 now available on all Heroku stacks.
|
||||||
|
|
||||||
# 149 (2019-03-04)
|
## v149 (2019-03-04)
|
||||||
|
|
||||||
Hotfix for broken Cedar 14 deploys
|
Hotfix for broken Cedar 14 deploys
|
||||||
|
|
||||||
# 148 (2019-02-21)
|
## v148 (2019-02-21)
|
||||||
|
|
||||||
No user facing changes, improving internal metrics
|
No user facing changes, improving internal metrics
|
||||||
|
|
||||||
# 147 (2019-02-07)
|
## v147 (2019-02-07)
|
||||||
|
|
||||||
Python 3.7.2 and 3.6.8 now available on all Heroku stacks.
|
Python 3.7.2 and 3.6.8 now available on all Heroku stacks.
|
||||||
|
|
||||||
# 146 (2018-11-11)
|
## v146 (2018-11-11)
|
||||||
|
|
||||||
Python 3.7.1, 3.6.7, 3.5.6 and 3.4.9 now available on all Heroku stacks.
|
Python 3.7.1, 3.6.7, 3.5.6 and 3.4.9 now available on all Heroku stacks.
|
||||||
|
|
||||||
# 145 (2018-11-08)
|
## v145 (2018-11-08)
|
||||||
|
|
||||||
Testing and tooling expanded to better support new runtimes
|
Testing and tooling expanded to better support new runtimes
|
||||||
|
|
||||||
# 144 (2018-10-10)
|
## v144 (2018-10-10)
|
||||||
|
|
||||||
Switch to cautious upgrade for Pipenv install to ensure the pinned pip version
|
Switch to cautious upgrade for Pipenv install to ensure the pinned pip version
|
||||||
is used with Pipenv
|
is used with Pipenv
|
||||||
|
|
||||||
# 143 (2018-10-09)
|
## v143 (2018-10-09)
|
||||||
|
|
||||||
Add support for detecting SLUGIFY_USES_TEXT_UNIDECODE, which is required to
|
Add support for detecting `SLUGIFY_USES_TEXT_UNIDECODE`, which is required to
|
||||||
install Apache Airflow version 1.10 or higher.
|
install Apache Airflow version 1.10 or higher.
|
||||||
|
|
||||||
# 142 (2018-10-08)
|
## v142 (2018-10-08)
|
||||||
|
|
||||||
Improvements to Python install messaging
|
Improvements to Python install messaging
|
||||||
|
|
||||||
# 139, 140, 141
|
## v139, 140, 141
|
||||||
|
|
||||||
No user-facing changes, documenting for version clarity
|
No user-facing changes, documenting for version clarity
|
||||||
|
|
||||||
# 138 (2018-08-01)
|
## v138 (2018-08-01)
|
||||||
|
|
||||||
Use stack image SQLite3 instead of vendoring
|
Use stack image SQLite3 instead of vendoring
|
||||||
|
|
||||||
# 137 (2018-07-17)
|
## v137 (2018-07-17)
|
||||||
|
|
||||||
Prevent 3.7.0 from appearing as unsupported in buildpack messaging.
|
Prevent 3.7.0 from appearing as unsupported in buildpack messaging.
|
||||||
|
|
||||||
# 136 (2018-06-28)
|
## v136 (2018-06-28)
|
||||||
|
|
||||||
Upgrade to 3.6.6 and support 3.7.0 on all runtimes.
|
Upgrade to 3.6.6 and support 3.7.0 on all runtimes.
|
||||||
|
|
||||||
# 135 (2018-05-29)
|
## v135 (2018-05-29)
|
||||||
|
|
||||||
Upgrade Pipenv to v2018.5.18.
|
Upgrade Pipenv to v2018.5.18.
|
||||||
|
|
||||||
# 134 (2018-05-02)
|
## v134 (2018-05-02)
|
||||||
|
|
||||||
Default to 3.6.5, bugfixes.
|
Default to 3.6.5, bugfixes.
|
||||||
|
|
||||||
# 133
|
## v133
|
||||||
|
|
||||||
Fixes for Pip 10 release.
|
Fixes for Pip 10 release.
|
||||||
|
|
||||||
# 132
|
## v132
|
||||||
|
|
||||||
Improve pip installation, with the release of v9.0.2.
|
Improve pip installation, with the release of v9.0.2.
|
||||||
|
|
||||||
# 131
|
## v131
|
||||||
|
|
||||||
Fix bug with pip.
|
Fix bug with pip.
|
||||||
|
|
||||||
# 130
|
## v130
|
||||||
|
|
||||||
Better upgrade strategy for pip.
|
Better upgrade strategy for pip.
|
||||||
|
|
||||||
# 129
|
## v129
|
||||||
|
|
||||||
Don't upgrade pip (from v128).
|
Don't upgrade pip (from v128).
|
||||||
|
|
||||||
# 128
|
## v128
|
||||||
|
|
||||||
Upgrade pip, pin to Pipenv v11.8.2.
|
Upgrade pip, pin to Pipenv v11.8.2.
|
||||||
|
|
||||||
# 127
|
## v127
|
||||||
|
|
||||||
Pin to Pipenv v11.7.1.
|
Pin to Pipenv v11.7.1.
|
||||||
|
|
||||||
# 126
|
## v126
|
||||||
|
|
||||||
Bugfixes.
|
Bugfixes.
|
||||||
|
|
||||||
# 125
|
## v125
|
||||||
|
|
||||||
Bugfixes.
|
Bugfixes.
|
||||||
|
|
||||||
# 124
|
## v124
|
||||||
|
|
||||||
Update buildpack to automatically install `[dev-packages]` during Heroku CI Pipenv builds.
|
Update buildpack to automatically install `[dev-packages]` during Heroku CI Pipenv builds.
|
||||||
|
|
||||||
@@ -239,101 +261,101 @@ Update buildpack to automatically install `[dev-packages]` during Heroku CI Pipe
|
|||||||
- No longer warn if there is no `Procfile`.
|
- No longer warn if there is no `Procfile`.
|
||||||
- Update Pipenv's "3.6" runtime specifier to point to "3.6.4".
|
- Update Pipenv's "3.6" runtime specifier to point to "3.6.4".
|
||||||
|
|
||||||
# 123
|
## v123
|
||||||
|
|
||||||
Update gunicorn `init.d` script to allow overrides.
|
Update gunicorn `init.d` script to allow overrides.
|
||||||
|
|
||||||
# 122
|
## v122
|
||||||
|
|
||||||
Update default Python to v3.6.4.
|
Update default Python to v3.6.4.
|
||||||
|
|
||||||
# 121
|
## v121
|
||||||
|
|
||||||
Update default Python to v3.6.3.
|
Update default Python to v3.6.3.
|
||||||
|
|
||||||
# 120
|
## v120
|
||||||
|
|
||||||
Use `$ pipenv --deploy`.
|
Use `$ pipenv --deploy`.
|
||||||
|
|
||||||
# 119
|
## v119
|
||||||
|
|
||||||
Improvements to Pipenv support, warning on unsupported Python versions.
|
Improvements to Pipenv support, warning on unsupported Python versions.
|
||||||
|
|
||||||
- We now warn when a user is not using latest 2.x or 3.x Python.
|
- We now warn when a user is not using latest 2.x or 3.x Python.
|
||||||
- Heroku now supports `[requires]` `python_full_version` in addition to `python_version`.
|
- Heroku now supports `[requires]` `python_full_version` in addition to `python_version`.
|
||||||
|
|
||||||
# 118
|
## v118
|
||||||
|
|
||||||
Improvements to Pipenv support.
|
Improvements to Pipenv support.
|
||||||
|
|
||||||
# 117
|
## v117
|
||||||
|
|
||||||
Bug fix.
|
Bug fix.
|
||||||
|
|
||||||
# 116
|
## v116
|
||||||
|
|
||||||
Vendoring improvements.
|
Vendoring improvements.
|
||||||
|
|
||||||
- Geos libraries should work on Heroku-16 now.
|
- Geos libraries should work on Heroku-16 now.
|
||||||
- The libffi/libmemcached vendoring step is now skipped on Heroku-16 (since they are installed in the base image).
|
- The libffi/libmemcached vendoring step is now skipped on Heroku-16 (since they are installed in the base image).
|
||||||
|
|
||||||
# 115
|
## v115
|
||||||
|
|
||||||
Revert a pull request.
|
Revert a pull request.
|
||||||
|
|
||||||
- No longer using `sub_env` for `pip install` step.
|
- No longer using `sub_env` for `pip install` step.
|
||||||
|
|
||||||
# 114
|
## v114
|
||||||
|
|
||||||
- Bugfixes.
|
- Bugfixes.
|
||||||
|
|
||||||
Blacklisting `PYTHONHOME` and `PYTHONPATH` for older apps. Upgrades to nltk support.
|
Blacklisting `PYTHONHOME` and `PYTHONPATH` for older apps. Upgrades to nltk support.
|
||||||
|
|
||||||
# 113
|
## v113
|
||||||
|
|
||||||
Updates to Pipenv support.
|
Updates to Pipenv support.
|
||||||
|
|
||||||
# 112
|
## v112
|
||||||
|
|
||||||
Bugfix.
|
Bugfix.
|
||||||
|
|
||||||
- Fixed grep output bug.
|
- Fixed grep output bug.
|
||||||
|
|
||||||
# 111
|
## v111
|
||||||
|
|
||||||
Linting, bugfixes.
|
Linting, bugfixes.
|
||||||
|
|
||||||
# 110
|
## v110
|
||||||
|
|
||||||
Update default Python to 3.6.2.
|
Update default Python to 3.6.2.
|
||||||
|
|
||||||
# 109
|
## v109
|
||||||
|
|
||||||
Update Default Python to 3.6.1, bugfixes.
|
Update Default Python to 3.6.1, bugfixes.
|
||||||
|
|
||||||
- Fixed automatic pip uninstall of dependencies removed from requirements.txt.
|
- Fixed automatic pip uninstall of dependencies removed from requirements.txt.
|
||||||
|
|
||||||
# 108
|
## v108
|
||||||
|
|
||||||
Fix output for collectstatic step.
|
Fix output for collectstatic step.
|
||||||
|
|
||||||
# 107
|
## v107
|
||||||
|
|
||||||
Bugfix for C dependency installation.
|
Bugfix for C dependency installation.
|
||||||
|
|
||||||
# 106
|
## v106
|
||||||
|
|
||||||
Don't install packages that could mess up packaging.
|
Don't install packages that could mess up packaging.
|
||||||
|
|
||||||
- The Python buildpack will automatically remove `six`, `pyparsing`, `appdirs`,
|
- The Python buildpack will automatically remove `six`, `pyparsing`, `appdirs`,
|
||||||
`setuptools`, and `distribute` from a `requirements.txt` file now, as these
|
`setuptools`, and `distribute` from a `requirements.txt` file now, as these
|
||||||
packages are provided by the Python buildpack.
|
packages are provided by the Python buildpack.
|
||||||
|
|
||||||
# 105
|
## v105
|
||||||
|
|
||||||
Improvements to output messaging.
|
Improvements to output messaging.
|
||||||
|
|
||||||
# 104
|
## v104
|
||||||
|
|
||||||
General improvements.
|
General improvements.
|
||||||
|
|
||||||
@@ -343,52 +365,52 @@ General improvements.
|
|||||||
|
|
||||||
[395]: https://github.com/heroku/heroku-buildpack-python/pull/395
|
[395]: https://github.com/heroku/heroku-buildpack-python/pull/395
|
||||||
|
|
||||||
## 103
|
## v103
|
||||||
|
|
||||||
Bug fixes and improvements.
|
Bug fixes and improvements.
|
||||||
|
|
||||||
- Fix for Pipenv.
|
- Fix for Pipenv.
|
||||||
- Fix for Heroku CI.
|
- Fix for Heroku CI.
|
||||||
- Improve handling of WEB_CONCURRENCY when using multiple buildpacks.
|
- Improve handling of `WEB_CONCURRENCY` when using multiple buildpacks.
|
||||||
- Adjust environment variables set during the build to more closely match those in the dyno environment (DYNO is now available, STACK is not).
|
- Adjust environment variables set during the build to more closely match those in the dyno environment (`DYNO` is now available, `STACK` is not).
|
||||||
- Restore the build cache prior to running bin/pre_compile.
|
- Restore the build cache prior to running bin/pre_compile.
|
||||||
|
|
||||||
## 102
|
## v102
|
||||||
|
|
||||||
Buildpack code cleanup.
|
Buildpack code cleanup.
|
||||||
|
|
||||||
- Improved messaging around NLTK.
|
- Improved messaging around NLTK.
|
||||||
|
|
||||||
## 101
|
## v101
|
||||||
|
|
||||||
Updated setuptools installation method.
|
Updated setuptools installation method.
|
||||||
|
|
||||||
- Improved pipenv support.
|
- Improved pipenv support.
|
||||||
|
|
||||||
## 100
|
## v100
|
||||||
|
|
||||||
Preliminary pipenv support.
|
Preliminary pipenv support.
|
||||||
|
|
||||||
## 99
|
## v99
|
||||||
|
|
||||||
Cleanup.
|
Cleanup.
|
||||||
|
|
||||||
## 98
|
## v98
|
||||||
|
|
||||||
Official NLTK support and other improvements.
|
Official NLTK support and other improvements.
|
||||||
|
|
||||||
- Support for `nltk.txt` file for declaring corpora to be downloaded.
|
- Support for `nltk.txt` file for declaring corpora to be downloaded.
|
||||||
- Leading zeros for auto-set WEB_CONCURRENCY.
|
- Leading zeros for auto-set `WEB_CONCURRENCY`.
|
||||||
|
|
||||||
## 97
|
## v97
|
||||||
|
|
||||||
Improved egg-link functionality.
|
Improved egg-link functionality.
|
||||||
|
|
||||||
## 96
|
## v96
|
||||||
|
|
||||||
Bugfix.
|
Bugfix.
|
||||||
|
|
||||||
## 95
|
## v95
|
||||||
|
|
||||||
Improved output support.
|
Improved output support.
|
||||||
|
|
||||||
@@ -424,7 +446,7 @@ Fixed bug with editable pip installations.
|
|||||||
|
|
||||||
Updated default Python 2.7.13.
|
Updated default Python 2.7.13.
|
||||||
|
|
||||||
- Python 2.7.13 uses UCS-4 build, more compatibile with linux wheels.
|
- Python 2.7.13 uses UCS-4 build, more compatible with linux wheels.
|
||||||
- Updated setuptools to v32.1.0.
|
- Updated setuptools to v32.1.0.
|
||||||
|
|
||||||
## v86
|
## v86
|
||||||
@@ -450,7 +472,7 @@ Support for Heroku CI.
|
|||||||
|
|
||||||
## v82 (2016-08-22)
|
## v82 (2016-08-22)
|
||||||
|
|
||||||
Update to library detection mechnisms (pip-pop).
|
Update to library detection mechanisms (pip-pop).
|
||||||
|
|
||||||
- Updated setuptools to v25.5.0
|
- Updated setuptools to v25.5.0
|
||||||
|
|
||||||
@@ -524,7 +546,7 @@ Revert to v66.
|
|||||||
|
|
||||||
## v68 (2015-10-12)
|
## v68 (2015-10-12)
|
||||||
|
|
||||||
Fixed .heroku/venv error with modern apps.
|
Fixed `.heroku/venv` error with modern apps.
|
||||||
|
|
||||||
## v67 (2015-10-12)
|
## v67 (2015-10-12)
|
||||||
|
|
||||||
@@ -549,7 +571,6 @@ Updated Pip and Setuptools.
|
|||||||
- Setuptools updated to v18.3.2
|
- Setuptools updated to v18.3.2
|
||||||
- Pip updated to v7.1.2
|
- Pip updated to v7.1.2
|
||||||
|
|
||||||
|
|
||||||
## v62 (2015-08-07)
|
## v62 (2015-08-07)
|
||||||
|
|
||||||
Updated Pip and Setuptools.
|
Updated Pip and Setuptools.
|
||||||
|
|||||||
+25
-43
@@ -1,68 +1,50 @@
|
|||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
activesupport (6.0.3.1)
|
diff-lcs (1.4.4)
|
||||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
||||||
i18n (>= 0.7, < 2)
|
|
||||||
minitest (~> 5.1)
|
|
||||||
tzinfo (~> 1.1)
|
|
||||||
zeitwerk (~> 2.2, >= 2.2.2)
|
|
||||||
concurrent-ruby (1.1.6)
|
|
||||||
diff-lcs (1.3)
|
|
||||||
erubis (2.7.0)
|
erubis (2.7.0)
|
||||||
excon (0.73.0)
|
excon (0.76.0)
|
||||||
heroics (0.0.25)
|
heroics (0.1.1)
|
||||||
erubis (~> 2.0)
|
erubis (~> 2.0)
|
||||||
excon
|
excon
|
||||||
moneta
|
moneta
|
||||||
multi_json (>= 1.9.2)
|
multi_json (>= 1.9.2)
|
||||||
heroku_hatchet (5.0.3)
|
heroku_hatchet (7.1.1)
|
||||||
excon (~> 0)
|
excon (~> 0)
|
||||||
minitest-retry (~> 0.1.9)
|
platform-api (~> 3)
|
||||||
platform-api (~> 2)
|
|
||||||
repl_runner (~> 0.0.3)
|
|
||||||
rrrretry (~> 1)
|
rrrretry (~> 1)
|
||||||
thor (~> 0)
|
thor (~> 0)
|
||||||
threaded (~> 0)
|
threaded (~> 0)
|
||||||
i18n (1.8.2)
|
|
||||||
concurrent-ruby (~> 1.0)
|
|
||||||
minitest (5.14.1)
|
|
||||||
minitest-retry (0.1.9)
|
|
||||||
minitest (>= 5.0)
|
|
||||||
moneta (1.0.0)
|
moneta (1.0.0)
|
||||||
multi_json (1.14.1)
|
multi_json (1.15.0)
|
||||||
parallel (1.19.1)
|
parallel (1.19.2)
|
||||||
parallel_split_test (0.7.0)
|
parallel_split_test (0.8.0)
|
||||||
parallel (>= 0.5.13)
|
parallel (>= 0.5.13)
|
||||||
rspec (>= 3.1.0)
|
rspec (>= 3.1.0)
|
||||||
platform-api (2.2.0)
|
platform-api (3.0.0)
|
||||||
heroics (~> 0.0.25)
|
heroics (~> 0.1.1)
|
||||||
moneta (~> 1.0.0)
|
moneta (~> 1.0.0)
|
||||||
rake (12.3.3)
|
rate_throttle_client (~> 0.1.0)
|
||||||
repl_runner (0.0.3)
|
rake (13.0.1)
|
||||||
activesupport
|
rate_throttle_client (0.1.2)
|
||||||
rrrretry (1.0.0)
|
rrrretry (1.0.0)
|
||||||
rspec (3.8.0)
|
rspec (3.9.0)
|
||||||
rspec-core (~> 3.8.0)
|
rspec-core (~> 3.9.0)
|
||||||
rspec-expectations (~> 3.8.0)
|
rspec-expectations (~> 3.9.0)
|
||||||
rspec-mocks (~> 3.8.0)
|
rspec-mocks (~> 3.9.0)
|
||||||
rspec-core (3.8.0)
|
rspec-core (3.9.2)
|
||||||
rspec-support (~> 3.8.0)
|
rspec-support (~> 3.9.3)
|
||||||
rspec-expectations (3.8.1)
|
rspec-expectations (3.9.2)
|
||||||
diff-lcs (>= 1.2.0, < 2.0)
|
diff-lcs (>= 1.2.0, < 2.0)
|
||||||
rspec-support (~> 3.8.0)
|
rspec-support (~> 3.9.0)
|
||||||
rspec-mocks (3.8.0)
|
rspec-mocks (3.9.1)
|
||||||
diff-lcs (>= 1.2.0, < 2.0)
|
diff-lcs (>= 1.2.0, < 2.0)
|
||||||
rspec-support (~> 3.8.0)
|
rspec-support (~> 3.9.0)
|
||||||
rspec-retry (0.6.1)
|
rspec-retry (0.6.2)
|
||||||
rspec-core (> 3.3)
|
rspec-core (> 3.3)
|
||||||
rspec-support (3.8.0)
|
rspec-support (3.9.3)
|
||||||
thor (0.20.3)
|
thor (0.20.3)
|
||||||
thread_safe (0.3.6)
|
|
||||||
threaded (0.0.4)
|
threaded (0.0.4)
|
||||||
tzinfo (1.2.7)
|
|
||||||
thread_safe (~> 0.1)
|
|
||||||
zeitwerk (2.3.0)
|
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
ruby
|
ruby
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# Heroku Buildpack: Python
|
# Heroku Buildpack: Python
|
||||||
|
|
||||||
[](https://travis-ci.org/heroku/heroku-buildpack-python)
|
[](https://travis-ci.com/heroku/heroku-buildpack-python)
|
||||||
|
|
||||||
This is the official [Heroku buildpack](https://devcenter.heroku.com/articles/buildpacks) for Python apps.
|
This is the official [Heroku buildpack](https://devcenter.heroku.com/articles/buildpacks) for Python apps.
|
||||||
|
|
||||||
@@ -16,7 +16,7 @@ See it in Action
|
|||||||
$ ls
|
$ ls
|
||||||
my-application requirements.txt runtime.txt
|
my-application requirements.txt runtime.txt
|
||||||
|
|
||||||
$ git push heroku master
|
$ git push heroku main
|
||||||
Counting objects: 4, done.
|
Counting objects: 4, done.
|
||||||
Delta compression using up to 8 threads.
|
Delta compression using up to 8 threads.
|
||||||
Compressing objects: 100% (2/2), done.
|
Compressing objects: 100% (2/2), done.
|
||||||
@@ -26,7 +26,7 @@ remote: Compressing source files... done.
|
|||||||
remote: Building source:
|
remote: Building source:
|
||||||
remote:
|
remote:
|
||||||
remote: -----> Python app detected
|
remote: -----> Python app detected
|
||||||
remote: -----> Installing python-3.7.4
|
remote: -----> Installing python
|
||||||
remote: -----> Installing pip
|
remote: -----> Installing pip
|
||||||
remote: -----> Installing SQLite3
|
remote: -----> Installing SQLite3
|
||||||
remote: -----> Installing requirements with pip
|
remote: -----> Installing requirements with pip
|
||||||
@@ -44,7 +44,7 @@ A `requirements.txt` must be present at the root of your application's repositor
|
|||||||
|
|
||||||
To specify your python version, you also need a `runtime.txt` file - unless you are using the default Python runtime version.
|
To specify your python version, you also need a `runtime.txt` file - unless you are using the default Python runtime version.
|
||||||
|
|
||||||
Current default Python Runtime: Python 3.6.9
|
Current default Python Runtime: Python 3.6.12
|
||||||
|
|
||||||
Alternatively, you can provide a `setup.py` file, or a `Pipfile`.
|
Alternatively, you can provide a `setup.py` file, or a `Pipfile`.
|
||||||
Using `pipenv` will generate `runtime.txt` at build time if one of the field `python_version` or `python_full_version` is specified in the `requires` section of your `Pipfile`.
|
Using `pipenv` will generate `runtime.txt` at build time if one of the field `python_version` or `python_full_version` is specified in the `requires` section of your `Pipfile`.
|
||||||
@@ -63,8 +63,8 @@ Specify a Python Runtime
|
|||||||
Supported runtime options include:
|
Supported runtime options include:
|
||||||
|
|
||||||
- `python-3.8.5`
|
- `python-3.8.5`
|
||||||
- `python-3.7.8`
|
- `python-3.7.9`
|
||||||
- `python-3.6.11`
|
- `python-3.6.12`
|
||||||
- `python-2.7.18`
|
- `python-2.7.18`
|
||||||
|
|
||||||
## Tests
|
## Tests
|
||||||
|
|||||||
@@ -137,6 +137,10 @@ export LIBRARY_PATH=/app/.heroku/vendor/lib:/app/.heroku/python/lib:$LIBRARY_PAT
|
|||||||
export LD_LIBRARY_PATH=/app/.heroku/vendor/lib:/app/.heroku/python/lib:$LD_LIBRARY_PATH
|
export LD_LIBRARY_PATH=/app/.heroku/vendor/lib:/app/.heroku/python/lib:$LD_LIBRARY_PATH
|
||||||
export PKG_CONFIG_PATH=/app/.heroku/vendor/lib/pkg-config:/app/.heroku/python/lib/pkg-config:$PKG_CONFIG_PATH
|
export PKG_CONFIG_PATH=/app/.heroku/vendor/lib/pkg-config:/app/.heroku/python/lib/pkg-config:$PKG_CONFIG_PATH
|
||||||
|
|
||||||
|
# Global pip options (https://pip.pypa.io/en/stable/user_guide/#environment-variables).
|
||||||
|
# Disable pip's warnings about EOL Python since we show our own.
|
||||||
|
export PIP_NO_PYTHON_VERSION_WARNING=1
|
||||||
|
|
||||||
# The Application Code
|
# The Application Code
|
||||||
# --------------------
|
# --------------------
|
||||||
|
|
||||||
|
|||||||
+6
-6
@@ -5,12 +5,12 @@
|
|||||||
# the env vars to subprocesses.
|
# the env vars to subprocesses.
|
||||||
# shellcheck disable=2034
|
# shellcheck disable=2034
|
||||||
|
|
||||||
DEFAULT_PYTHON_VERSION="python-3.6.11"
|
DEFAULT_PYTHON_VERSION="python-3.6.12"
|
||||||
LATEST_38="python-3.8.5"
|
LATEST_38="python-3.8.5"
|
||||||
LATEST_37="python-3.7.8"
|
LATEST_37="python-3.7.9"
|
||||||
LATEST_36="python-3.6.11"
|
LATEST_36="python-3.6.12"
|
||||||
LATEST_35="python-3.5.9"
|
LATEST_35="python-3.5.10"
|
||||||
LATEST_34="python-3.4.10"
|
LATEST_34="python-3.4.10"
|
||||||
LATEST_27="python-2.7.18"
|
LATEST_27="python-2.7.18"
|
||||||
PYPY_36="pypy3.6-7.3.1"
|
LATEST_PYPY_36="pypy3.6-7.3.1"
|
||||||
PYPY_27="pypy2.7-7.3.1"
|
LATEST_PYPY_27="pypy2.7-7.3.1"
|
||||||
|
|||||||
+16
-11
@@ -8,6 +8,7 @@ PYTHON_VERSION=$(cat runtime.txt)
|
|||||||
VENDORED_PYTHON="${VENDOR_URL}/runtimes/$PYTHON_VERSION.tar.gz"
|
VENDORED_PYTHON="${VENDOR_URL}/runtimes/$PYTHON_VERSION.tar.gz"
|
||||||
|
|
||||||
SECURITY_UPDATE="Python has released a security update! Please consider upgrading to"
|
SECURITY_UPDATE="Python has released a security update! Please consider upgrading to"
|
||||||
|
SECURITY_UPDATE_PYPY="The PyPy project has released a security update! Please consider upgrading to"
|
||||||
|
|
||||||
ONLY_SUPPORTED_2_VERSION="Only the latest version of Python 2 is supported on the platform. Please consider upgrading to"
|
ONLY_SUPPORTED_2_VERSION="Only the latest version of Python 2 is supported on the platform. Please consider upgrading to"
|
||||||
|
|
||||||
@@ -51,11 +52,9 @@ if curl --output /dev/null --silent --head --fail "$VENDORED_PYTHON"; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [[ "$PYTHON_VERSION" == $PY27* ]]; then
|
if [[ "$PYTHON_VERSION" == $PY27* ]]; then
|
||||||
|
puts-warn "$PYTHON_2_EOL_UPDATE"
|
||||||
|
echo " Learn More: https://devcenter.heroku.com/articles/python-2-7-eol-faq"
|
||||||
# security update note
|
# security update note
|
||||||
if [[ "$(date "+%Y")" -gt "2019" ]]; then
|
|
||||||
puts-warn "$PYTHON_2_EOL_UPDATE"
|
|
||||||
echo " Learn More: https://devcenter.heroku.com/articles/python-2-7-eol-faq"
|
|
||||||
fi
|
|
||||||
if [ "$PYTHON_VERSION" != "$LATEST_27" ]; then
|
if [ "$PYTHON_VERSION" != "$LATEST_27" ]; then
|
||||||
puts-warn "$ONLY_SUPPORTED_2_VERSION" "$LATEST_27"
|
puts-warn "$ONLY_SUPPORTED_2_VERSION" "$LATEST_27"
|
||||||
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
|
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
|
||||||
@@ -63,15 +62,15 @@ if curl --output /dev/null --silent --head --fail "$VENDORED_PYTHON"; then
|
|||||||
fi
|
fi
|
||||||
if [[ "$PYTHON_VERSION" == $PYPY27* ]]; then
|
if [[ "$PYTHON_VERSION" == $PYPY27* ]]; then
|
||||||
# security update note
|
# security update note
|
||||||
if [ "$PYTHON_VERSION" != "$PYPY_27" ]; then
|
if [ "$PYTHON_VERSION" != "$LATEST_PYPY_27" ]; then
|
||||||
puts-warn "Could not find that Pypy version. Did you mean" "${PYPY_27}?"
|
puts-warn "$SECURITY_UPDATE_PYPY" "$LATEST_PYPY_27"
|
||||||
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
|
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [[ "$PYTHON_VERSION" == $PYPY36* ]]; then
|
if [[ "$PYTHON_VERSION" == $PYPY36* ]]; then
|
||||||
# security update note
|
# security update note
|
||||||
if [ "$PYTHON_VERSION" != "$PYPY_36" ]; then
|
if [ "$PYTHON_VERSION" != "$LATEST_PYPY_36" ]; then
|
||||||
puts-warn "Could not find that Pypy version. Did you mean" "${PYPY_36}?"
|
puts-warn "$SECURITY_UPDATE_PYPY" "$LATEST_PYPY_36"
|
||||||
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
|
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -137,14 +136,20 @@ fi
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
PIP_VERSION='20.0.2'
|
PIP_VERSION='20.1.1'
|
||||||
SETUPTOOLS_VERSION='39.0.1'
|
# Must use setuptools <47.2.0 until we fix:
|
||||||
|
# https://github.com/heroku/heroku-buildpack-python/issues/1006
|
||||||
|
SETUPTOOLS_VERSION='47.1.1'
|
||||||
WHEEL_VERSION='0.34.2'
|
WHEEL_VERSION='0.34.2'
|
||||||
|
|
||||||
if [[ "${PYTHON_VERSION}" == ${PY34}* ]]; then
|
if [[ "${PYTHON_VERSION}" == ${PY34}* ]]; then
|
||||||
# Python 3.4 support was dropped in pip 19.2+ and wheel 0.34.0+.
|
# Python 3.4 support was dropped in pip 19.2+, setuptools 44+ and wheel 0.34+.
|
||||||
PIP_VERSION='19.1.1'
|
PIP_VERSION='19.1.1'
|
||||||
|
SETUPTOOLS_VERSION='43.0.0'
|
||||||
WHEEL_VERSION='0.33.6'
|
WHEEL_VERSION='0.33.6'
|
||||||
|
elif [[ "${PYTHON_VERSION}" == ${PY27}* || "${PYTHON_VERSION}" == ${PYPY27}* ]]; then
|
||||||
|
# Python 2.7 support was dropped in setuptools 45+.
|
||||||
|
SETUPTOOLS_VERSION='44.1.1'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# We don't use get-pip.py, since:
|
# We don't use get-pip.py, since:
|
||||||
|
|||||||
@@ -1,27 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Build Path: /app/.heroku/python/
|
# Build Path: /app/.heroku/python/
|
||||||
|
|
||||||
OUT_PREFIX=$1
|
source $(dirname $0)/python2
|
||||||
BIN_DIR="$(cd "$(dirname "$0")"/../.. || exit; pwd)/bin"
|
|
||||||
export BIN_DIR
|
|
||||||
|
|
||||||
# shellcheck source=bin/utils
|
|
||||||
source "$BIN_DIR/steps/sqlite3"
|
|
||||||
|
|
||||||
sqlite3_version
|
|
||||||
echo "Setting up SQLite3 Headers for $SQLITE3_VERSION"
|
|
||||||
sqlite3_install "$OUT_PREFIX" "$SQLITE3_VERSION" 1
|
|
||||||
|
|
||||||
echo "Building Python…"
|
|
||||||
SOURCE_TARBALL='https://python.org/ftp/python/2.7.17/Python-2.7.17.tgz'
|
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
|
||||||
mv Python-2.7.17 src
|
|
||||||
cd src
|
|
||||||
|
|
||||||
./configure --prefix=$OUT_PREFIX --enable-unicode=ucs4 --with-ensurepip=no
|
|
||||||
make
|
|
||||||
make install
|
|
||||||
|
|
||||||
# Remove unneeded test directories, similar to the official Docker Python images:
|
|
||||||
# https://github.com/docker-library/python
|
|
||||||
find "${OUT_PREFIX}" \( -type d -a \( -name test -o -name tests \) \) -exec rm -rf '{}' +
|
|
||||||
|
|||||||
@@ -1,27 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Build Path: /app/.heroku/python/
|
# Build Path: /app/.heroku/python/
|
||||||
|
|
||||||
OUT_PREFIX=$1
|
source $(dirname $0)/python2
|
||||||
BIN_DIR="$(cd "$(dirname "$0")"/../.. || exit; pwd)/bin"
|
|
||||||
export BIN_DIR
|
|
||||||
|
|
||||||
# shellcheck source=bin/utils
|
|
||||||
source "$BIN_DIR/steps/sqlite3"
|
|
||||||
|
|
||||||
sqlite3_version
|
|
||||||
echo "Setting up SQLite3 Headers for $SQLITE3_VERSION"
|
|
||||||
sqlite3_install "$OUT_PREFIX" "$SQLITE3_VERSION" 1
|
|
||||||
|
|
||||||
echo "Building Python…"
|
|
||||||
SOURCE_TARBALL='https://python.org/ftp/python/2.7.18/Python-2.7.18.tgz'
|
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
|
||||||
mv Python-2.7.18 src
|
|
||||||
cd src
|
|
||||||
|
|
||||||
./configure --prefix=$OUT_PREFIX --enable-unicode=ucs4 --with-ensurepip=no
|
|
||||||
make
|
|
||||||
make install
|
|
||||||
|
|
||||||
# Remove unneeded test directories, similar to the official Docker Python images:
|
|
||||||
# https://github.com/docker-library/python
|
|
||||||
find "${OUT_PREFIX}" \( -type d -a \( -name test -o -name tests \) \) -exec rm -rf '{}' +
|
|
||||||
|
|||||||
@@ -1,32 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Build Path: /app/.heroku/python/
|
# Build Path: /app/.heroku/python/
|
||||||
|
|
||||||
OUT_PREFIX=$1
|
source $(dirname $0)/python3
|
||||||
BIN_DIR="$(cd "$(dirname "$0")"/../.. || exit; pwd)/bin"
|
|
||||||
export BIN_DIR
|
|
||||||
|
|
||||||
# shellcheck source=bin/utils
|
|
||||||
source "$BIN_DIR/steps/sqlite3"
|
|
||||||
|
|
||||||
sqlite3_version
|
|
||||||
echo "Setting up SQLite3 Headers for $SQLITE3_VERSION"
|
|
||||||
sqlite3_install "$OUT_PREFIX" "$SQLITE3_VERSION" 1
|
|
||||||
|
|
||||||
echo "Building Python…"
|
|
||||||
SOURCE_TARBALL='https://python.org/ftp/python/3.7.2/Python-3.7.2.tgz'
|
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
|
||||||
mv Python-3.7.2 src
|
|
||||||
cd src
|
|
||||||
|
|
||||||
./configure --prefix=$OUT_PREFIX --with-ensurepip=no
|
|
||||||
make
|
|
||||||
make install
|
|
||||||
|
|
||||||
# Remove unneeded test directories, similar to the official Docker Python images:
|
|
||||||
# https://github.com/docker-library/python
|
|
||||||
find "${OUT_PREFIX}" \( -type d -a \( -name test -o -name tests \) \) -exec rm -rf '{}' +
|
|
||||||
|
|
||||||
# Remove spare /
|
|
||||||
LOCATION=${OUT_PREFIX%?}
|
|
||||||
|
|
||||||
ln $LOCATION/bin/python3 $LOCATION/bin/python
|
|
||||||
|
|||||||
@@ -1,32 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Build Path: /app/.heroku/python/
|
# Build Path: /app/.heroku/python/
|
||||||
|
|
||||||
OUT_PREFIX=$1
|
source $(dirname $0)/python3
|
||||||
BIN_DIR="$(cd "$(dirname "$0")"/../.. || exit; pwd)/bin"
|
|
||||||
export BIN_DIR
|
|
||||||
|
|
||||||
# shellcheck source=bin/utils
|
|
||||||
source "$BIN_DIR/steps/sqlite3"
|
|
||||||
|
|
||||||
sqlite3_version
|
|
||||||
echo "Setting up SQLite3 Headers for $SQLITE3_VERSION"
|
|
||||||
sqlite3_install "$OUT_PREFIX" "$SQLITE3_VERSION" 1
|
|
||||||
|
|
||||||
echo "Building Python…"
|
|
||||||
SOURCE_TARBALL='https://python.org/ftp/python/3.4.9/Python-3.4.9.tgz'
|
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
|
||||||
mv Python-3.4.9 src
|
|
||||||
cd src
|
|
||||||
|
|
||||||
./configure --prefix=$OUT_PREFIX --with-ensurepip=no
|
|
||||||
make
|
|
||||||
make install
|
|
||||||
|
|
||||||
# Remove unneeded test directories, similar to the official Docker Python images:
|
|
||||||
# https://github.com/docker-library/python
|
|
||||||
find "${OUT_PREFIX}" \( -type d -a \( -name test -o -name tests \) \) -exec rm -rf '{}' +
|
|
||||||
|
|
||||||
# Remove spare /
|
|
||||||
LOCATION=${OUT_PREFIX%?}
|
|
||||||
|
|
||||||
ln $LOCATION/bin/python3 $LOCATION/bin/python
|
|
||||||
|
|||||||
Executable
+4
@@ -0,0 +1,4 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Build Path: /app/.heroku/python/
|
||||||
|
|
||||||
|
source $(dirname $0)/python3
|
||||||
Executable
+4
@@ -0,0 +1,4 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Build Path: /app/.heroku/python/
|
||||||
|
|
||||||
|
source $(dirname $0)/python3
|
||||||
Executable
+4
@@ -0,0 +1,4 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Build Path: /app/.heroku/python/
|
||||||
|
|
||||||
|
source $(dirname $0)/python3
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
sudo apt-get -qq update
|
|
||||||
sudo apt-get install software-properties-common
|
|
||||||
curl --fail --retry 3 --retry-delay 1 --connect-timeout 3 --max-time 30 https://cli-assets.heroku.com/install-ubuntu.sh | sh
|
|
||||||
Regular → Executable
+4
-4
@@ -14,9 +14,9 @@ case "$choice" in
|
|||||||
* ) exit 1;;
|
* ) exit 1;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
originMaster=$(git rev-parse origin/master)
|
originMain=$(git rev-parse origin/main)
|
||||||
echo "Tagging commit $originMaster with $newVersion... "
|
echo "Tagging commit $originMain with $newVersion... "
|
||||||
git tag "$newVersion" "${originMaster:?}"
|
git tag "$newVersion" "${originMain:?}"
|
||||||
git push origin refs/tags/$newVersion
|
git push origin refs/tags/$newVersion
|
||||||
|
|
||||||
heroku buildpacks:publish "$BP_NAME" "$newVersion"
|
heroku buildpacks:publish "$BP_NAME" "$newVersion"
|
||||||
@@ -31,7 +31,7 @@ if [ $(git tag | grep -q latest-version) ]; then
|
|||||||
echo "Updating latest-version tag"
|
echo "Updating latest-version tag"
|
||||||
git tag -d latest-version
|
git tag -d latest-version
|
||||||
git push origin :latest-version
|
git push origin :latest-version
|
||||||
git tag latest-version "${originMaster:?}"
|
git tag latest-version "${originMain:?}"
|
||||||
git push --tags
|
git push --tags
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
docopt==0.6.2
|
docopt==0.6.2
|
||||||
bob-builder==0.0.17
|
bob-builder==0.0.18
|
||||||
boto==2.48.0
|
boto==2.49.0
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1 +1 @@
|
|||||||
pypy2.7-7.2.0
|
pypy2.7-7.3.1
|
||||||
|
|||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
pypy2.7-7.2.0
|
||||||
Vendored
+1
-1
@@ -1 +1 @@
|
|||||||
pypy3.6-7.2.0
|
pypy3.6-7.3.1
|
||||||
|
|||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
pypy3.6-7.2.0
|
||||||
Vendored
+1
-1
@@ -1 +1 @@
|
|||||||
python-3.5.9
|
python-3.5.10
|
||||||
|
|||||||
+2
-1
@@ -44,7 +44,7 @@ testStandardRequirements() {
|
|||||||
|
|
||||||
testPipenv() {
|
testPipenv() {
|
||||||
compile "pipenv"
|
compile "pipenv"
|
||||||
assertCaptured "Installing pip 9.0.2, setuptools 39.0.1 and wheel 0.34.2"
|
assertCaptured "Installing pip 9.0.2, setuptools 47.1.1 and wheel 0.34.2"
|
||||||
assertCapturedSuccess
|
assertCapturedSuccess
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,6 +108,7 @@ testHooks() {
|
|||||||
LIBRARY_PATH
|
LIBRARY_PATH
|
||||||
OLDPWD
|
OLDPWD
|
||||||
PATH
|
PATH
|
||||||
|
PIP_NO_PYTHON_VERSION_WARNING
|
||||||
PKG_CONFIG_PATH
|
PKG_CONFIG_PATH
|
||||||
PROFILE_PATH
|
PROFILE_PATH
|
||||||
PWD
|
PWD
|
||||||
|
|||||||
+33
-38
@@ -9,7 +9,7 @@ testPythonDefault() {
|
|||||||
compile "pythonDefault"
|
compile "pythonDefault"
|
||||||
assertCaptured $DEFAULT_PYTHON_VERSION
|
assertCaptured $DEFAULT_PYTHON_VERSION
|
||||||
assertNotCaptured "security update"
|
assertNotCaptured "security update"
|
||||||
assertCaptured "Installing pip 20.0.2, setuptools 39.0.1 and wheel 0.34.2"
|
assertCaptured "Installing pip 20.1.1, setuptools 47.1.1 and wheel 0.34.2"
|
||||||
assertCaptured "Installing SQLite3"
|
assertCaptured "Installing SQLite3"
|
||||||
assertCapturedSuccess
|
assertCapturedSuccess
|
||||||
}
|
}
|
||||||
@@ -19,13 +19,9 @@ testPython2() {
|
|||||||
echo $LATEST_27 > "runtime.txt"
|
echo $LATEST_27 > "runtime.txt"
|
||||||
compile "python2"
|
compile "python2"
|
||||||
assertCaptured $LATEST_27
|
assertCaptured $LATEST_27
|
||||||
if [[ $(date "+%Y") > "2019" ]]; then
|
assertCaptured "python-2-7-eol-faq";
|
||||||
assertCaptured "python-2-7-eol-faq";
|
|
||||||
else
|
|
||||||
assertNotCaptured "python-2-7-eol-faq";
|
|
||||||
fi
|
|
||||||
assertNotCaptured "security update"
|
assertNotCaptured "security update"
|
||||||
assertCaptured "Installing pip 20.0.2, setuptools 39.0.1 and wheel 0.34.2"
|
assertCaptured "Installing pip 20.1.1, setuptools 44.1.1 and wheel 0.34.2"
|
||||||
assertCaptured "Installing SQLite3"
|
assertCaptured "Installing SQLite3"
|
||||||
assertCapturedSuccess
|
assertCapturedSuccess
|
||||||
}
|
}
|
||||||
@@ -33,11 +29,7 @@ testPython2() {
|
|||||||
testPython2_warn() {
|
testPython2_warn() {
|
||||||
compile "python2_warn"
|
compile "python2_warn"
|
||||||
assertCaptured "python-2.7.15"
|
assertCaptured "python-2.7.15"
|
||||||
if [[ $(date "+%Y") > "2019" ]]; then
|
assertCaptured "python-2-7-eol-faq";
|
||||||
assertCaptured "python-2-7-eol-faq";
|
|
||||||
else
|
|
||||||
assertNotCaptured "python-2-7-eol-faq";
|
|
||||||
fi
|
|
||||||
assertCaptured "Only the latest version"
|
assertCaptured "Only the latest version"
|
||||||
assertCaptured "Installing SQLite3"
|
assertCaptured "Installing SQLite3"
|
||||||
assertCapturedSuccess
|
assertCapturedSuccess
|
||||||
@@ -53,30 +45,15 @@ testPython3_4() {
|
|||||||
compile "python3_4"
|
compile "python3_4"
|
||||||
assertCaptured $LATEST_34
|
assertCaptured $LATEST_34
|
||||||
assertNotCaptured "security update"
|
assertNotCaptured "security update"
|
||||||
assertCaptured "Installing pip 19.1.1, setuptools 39.0.1 and wheel 0.33.6"
|
assertCaptured "Installing pip 19.1.1, setuptools 43.0.0 and wheel 0.33.6"
|
||||||
# if cedar 14 and legacy binaries, fail. if cedar 14 and staging, succeed.
|
assertCapturedSuccess
|
||||||
if [[ ! -n $USE_STAGING_BINARIES ]] && [[ $STACK == "cedar-14" ]]; then
|
|
||||||
assertCapturedError
|
|
||||||
# if heroku 18 and legacy binaries, succeed. if heroku 18 and staging, fail.
|
|
||||||
elif [[ -n $USE_STAGING_BINARIES ]] && [[ $STACK == "heroku-18" ]]; then
|
|
||||||
assertCapturedError
|
|
||||||
else
|
|
||||||
# all else succeed
|
|
||||||
assertCapturedSuccess
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
testPython3_4_warn() {
|
testPython3_4_warn() {
|
||||||
compile "python3_4_warn"
|
compile "python3_4_warn"
|
||||||
assertCaptured "python-3.4.9"
|
assertCaptured "python-3.4.9"
|
||||||
assertCaptured "security update!"
|
assertCaptured "security update!"
|
||||||
# if heroku 18 and legacy binaries, succeed. if heroku 18 and staging, fail.
|
assertCapturedSuccess
|
||||||
if [[ -n $USE_STAGING_BINARIES ]] && [[ $STACK == "heroku-18" ]]; then
|
|
||||||
assertCapturedError
|
|
||||||
else
|
|
||||||
# all else succeed
|
|
||||||
assertCapturedSuccess
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
testPython3_4_fail() {
|
testPython3_4_fail() {
|
||||||
@@ -89,7 +66,7 @@ testPython3_5() {
|
|||||||
compile "python3_5"
|
compile "python3_5"
|
||||||
assertCaptured $LATEST_35
|
assertCaptured $LATEST_35
|
||||||
assertNotCaptured "security update"
|
assertNotCaptured "security update"
|
||||||
assertCaptured "Installing pip 20.0.2, setuptools 39.0.1 and wheel 0.34.2"
|
assertCaptured "Installing pip 20.1.1, setuptools 47.1.1 and wheel 0.34.2"
|
||||||
assertCaptured "Installing SQLite3"
|
assertCaptured "Installing SQLite3"
|
||||||
assertCapturedSuccess
|
assertCapturedSuccess
|
||||||
}
|
}
|
||||||
@@ -112,7 +89,7 @@ testPython3_6() {
|
|||||||
compile "python3_6"
|
compile "python3_6"
|
||||||
assertCaptured $LATEST_36
|
assertCaptured $LATEST_36
|
||||||
assertNotCaptured "security update"
|
assertNotCaptured "security update"
|
||||||
assertCaptured "Installing pip 20.0.2, setuptools 39.0.1 and wheel 0.34.2"
|
assertCaptured "Installing pip 20.1.1, setuptools 47.1.1 and wheel 0.34.2"
|
||||||
assertCaptured "Installing SQLite3"
|
assertCaptured "Installing SQLite3"
|
||||||
assertCapturedSuccess
|
assertCapturedSuccess
|
||||||
}
|
}
|
||||||
@@ -139,7 +116,7 @@ testPython3_7() {
|
|||||||
else
|
else
|
||||||
assertNotCaptured "security update"
|
assertNotCaptured "security update"
|
||||||
assertCaptured $LATEST_37
|
assertCaptured $LATEST_37
|
||||||
assertCaptured "Installing pip 20.0.2, setuptools 39.0.1 and wheel 0.34.2"
|
assertCaptured "Installing pip 20.1.1, setuptools 47.1.1 and wheel 0.34.2"
|
||||||
assertCaptured "Installing SQLite3"
|
assertCaptured "Installing SQLite3"
|
||||||
assertCapturedSuccess
|
assertCapturedSuccess
|
||||||
fi
|
fi
|
||||||
@@ -183,7 +160,7 @@ testPython3_8() {
|
|||||||
else
|
else
|
||||||
assertNotCaptured "security update"
|
assertNotCaptured "security update"
|
||||||
assertCaptured $LATEST_38
|
assertCaptured $LATEST_38
|
||||||
assertCaptured "Installing pip 20.0.2, setuptools 39.0.1 and wheel 0.34.2"
|
assertCaptured "Installing pip 20.1.1, setuptools 47.1.1 and wheel 0.34.2"
|
||||||
assertCaptured "Installing SQLite3"
|
assertCaptured "Installing SQLite3"
|
||||||
assertCapturedSuccess
|
assertCapturedSuccess
|
||||||
fi
|
fi
|
||||||
@@ -197,24 +174,42 @@ testPython3_8_fail() {
|
|||||||
|
|
||||||
testPypy3_6() {
|
testPypy3_6() {
|
||||||
compile "pypy3_6"
|
compile "pypy3_6"
|
||||||
|
assertCaptured "Installing pypy"
|
||||||
|
assertNotCaptured "security update"
|
||||||
|
assertCaptured "$LATEST_PYPY_36"
|
||||||
|
assertCaptured "Installing pip 20.1.1, setuptools 47.1.1 and wheel 0.34.2"
|
||||||
|
assertCapturedSuccess
|
||||||
|
}
|
||||||
|
|
||||||
|
testPypy3_6_warn() {
|
||||||
|
compile "pypy3_6_warn"
|
||||||
if [[ $STACK = "cedar-14" ]]; then
|
if [[ $STACK = "cedar-14" ]]; then
|
||||||
assertCapturedError
|
assertCapturedError
|
||||||
else
|
else
|
||||||
assertCaptured "Installing pypy"
|
assertCaptured "Installing pypy"
|
||||||
assertCaptured "$PYPY_36"
|
assertCaptured "security update!"
|
||||||
assertCaptured "Installing pip 20.0.2, setuptools 39.0.1 and wheel 0.34.2"
|
assertCaptured "$LATEST_PYPY_36"
|
||||||
assertCapturedSuccess
|
assertCapturedSuccess
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
testPypy2_7() {
|
testPypy2_7() {
|
||||||
compile "pypy2_7"
|
compile "pypy2_7"
|
||||||
|
assertCaptured "Installing pypy"
|
||||||
|
assertNotCaptured "security update"
|
||||||
|
assertCaptured "$LATEST_PYPY_27"
|
||||||
|
assertCaptured "Installing pip 20.1.1, setuptools 44.1.1 and wheel 0.34.2"
|
||||||
|
assertCapturedSuccess
|
||||||
|
}
|
||||||
|
|
||||||
|
testPypy2_7_warn() {
|
||||||
|
compile "pypy2_7_warn"
|
||||||
if [[ $STACK = "cedar-14" ]]; then
|
if [[ $STACK = "cedar-14" ]]; then
|
||||||
assertCapturedError
|
assertCapturedError
|
||||||
else
|
else
|
||||||
assertCaptured "Installing pypy"
|
assertCaptured "Installing pypy"
|
||||||
assertCaptured "$PYPY_27"
|
assertCaptured "security update!"
|
||||||
assertCaptured "Installing pip 20.0.2, setuptools 39.0.1 and wheel 0.34.2"
|
assertCaptured "$LATEST_PYPY_27"
|
||||||
assertCapturedSuccess
|
assertCapturedSuccess
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
-204
@@ -1,204 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# taken from
|
|
||||||
# https://github.com/ryanbrainard/heroku-buildpack-testrunner/blob/master/lib/test_utils.sh
|
|
||||||
|
|
||||||
oneTimeSetUp()
|
|
||||||
{
|
|
||||||
TEST_SUITE_CACHE="$(mktemp -d ${SHUNIT_TMPDIR}/test_suite_cache.XXXX)"
|
|
||||||
}
|
|
||||||
|
|
||||||
oneTimeTearDown()
|
|
||||||
{
|
|
||||||
rm -rf ${TEST_SUITE_CACHE}
|
|
||||||
}
|
|
||||||
|
|
||||||
setUp()
|
|
||||||
{
|
|
||||||
OUTPUT_DIR="$(mktemp -d ${SHUNIT_TMPDIR}/output.XXXX)"
|
|
||||||
STD_OUT="${OUTPUT_DIR}/stdout"
|
|
||||||
STD_ERR="${OUTPUT_DIR}/stderr"
|
|
||||||
BUILD_DIR="${OUTPUT_DIR}/build"
|
|
||||||
CACHE_DIR="${OUTPUT_DIR}/cache"
|
|
||||||
mkdir -p ${OUTPUT_DIR}
|
|
||||||
mkdir -p ${BUILD_DIR}
|
|
||||||
mkdir -p ${CACHE_DIR}
|
|
||||||
}
|
|
||||||
|
|
||||||
tearDown()
|
|
||||||
{
|
|
||||||
rm -rf ${OUTPUT_DIR}
|
|
||||||
}
|
|
||||||
|
|
||||||
capture()
|
|
||||||
{
|
|
||||||
resetCapture
|
|
||||||
|
|
||||||
LAST_COMMAND="$@"
|
|
||||||
|
|
||||||
"$@" >${STD_OUT} 2>${STD_ERR}
|
|
||||||
RETURN=$?
|
|
||||||
rtrn=${RETURN} # deprecated
|
|
||||||
}
|
|
||||||
|
|
||||||
resetCapture()
|
|
||||||
{
|
|
||||||
if [ -f ${STD_OUT} ]; then
|
|
||||||
rm ${STD_OUT}
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f ${STD_ERR} ]; then
|
|
||||||
rm ${STD_ERR}
|
|
||||||
fi
|
|
||||||
|
|
||||||
unset LAST_COMMAND
|
|
||||||
unset RETURN
|
|
||||||
unset rtrn # deprecated
|
|
||||||
}
|
|
||||||
|
|
||||||
detect()
|
|
||||||
{
|
|
||||||
capture ${BUILDPACK_HOME}/bin/detect ${BUILD_DIR}
|
|
||||||
}
|
|
||||||
|
|
||||||
compile()
|
|
||||||
{
|
|
||||||
capture ${BUILDPACK_HOME}/bin/compile ${BUILD_DIR} ${CACHE_DIR}
|
|
||||||
}
|
|
||||||
|
|
||||||
release()
|
|
||||||
{
|
|
||||||
capture ${BUILDPACK_HOME}/bin/release ${BUILD_DIR}
|
|
||||||
}
|
|
||||||
|
|
||||||
assertCapturedEquals()
|
|
||||||
{
|
|
||||||
assertEquals "$@" "$(cat ${STD_OUT})"
|
|
||||||
}
|
|
||||||
|
|
||||||
assertCapturedNotEquals()
|
|
||||||
{
|
|
||||||
assertNotEquals "$@" "$(cat ${STD_OUT})"
|
|
||||||
}
|
|
||||||
|
|
||||||
assertCaptured()
|
|
||||||
{
|
|
||||||
assertFileContains "$@" "${STD_OUT}"
|
|
||||||
}
|
|
||||||
|
|
||||||
assertNotCaptured()
|
|
||||||
{
|
|
||||||
assertFileNotContains "$@" "${STD_OUT}"
|
|
||||||
}
|
|
||||||
|
|
||||||
assertCapturedSuccess()
|
|
||||||
{
|
|
||||||
assertEquals "Expected captured exit code to be 0; was <${RETURN}>" "0" "${RETURN}"
|
|
||||||
assertEquals "Expected STD_ERR to be empty; was <$(cat ${STD_ERR})>" "" "$(cat ${STD_ERR})"
|
|
||||||
}
|
|
||||||
|
|
||||||
# assertCapturedError [[expectedErrorCode] expectedErrorMsg]
|
|
||||||
assertCapturedError()
|
|
||||||
{
|
|
||||||
if [ $# -gt 1 ]; then
|
|
||||||
expectedErrorCode=${1}
|
|
||||||
shift
|
|
||||||
fi
|
|
||||||
|
|
||||||
expectedErrorMsg=${1:-""}
|
|
||||||
|
|
||||||
if [ -z ${expectedErrorCode} ]; then
|
|
||||||
assertTrue "Expected captured exit code to be greater than 0; was <${RETURN}>" "[ ${RETURN} -gt 0 ]"
|
|
||||||
else
|
|
||||||
assertTrue "Expected captured exit code to be <${expectedErrorCode}>; was <${RETURN}>" "[ ${RETURN} -eq ${expectedErrorCode} ]"
|
|
||||||
fi
|
|
||||||
|
|
||||||
assertFileContains "Expected STD_OUT to contain error <${expectedErrorMsg}>" "${expectedErrorMsg}" "${STD_OUT}"
|
|
||||||
assertEquals "STD_ERR should always be empty" "" "$(cat ${STD_ERR})"
|
|
||||||
}
|
|
||||||
|
|
||||||
assertAppDetected()
|
|
||||||
{
|
|
||||||
expectedAppType=${1?"Must provide app type"}
|
|
||||||
|
|
||||||
assertCapturedSuccess
|
|
||||||
assertEquals "${expectedAppType}" "$(cat ${STD_OUT})"
|
|
||||||
}
|
|
||||||
|
|
||||||
assertNoAppDetected()
|
|
||||||
{
|
|
||||||
assertEquals "1" "${RETURN}"
|
|
||||||
assertEquals "no" "$(cat ${STD_OUT})"
|
|
||||||
assertEquals "" "$(cat ${STD_ERR})"
|
|
||||||
}
|
|
||||||
|
|
||||||
_assertContains()
|
|
||||||
{
|
|
||||||
if [ 5 -eq $# ]; then
|
|
||||||
msg=$1
|
|
||||||
shift
|
|
||||||
elif [ ! 4 -eq $# ]; then
|
|
||||||
fail "Expected 4 or 5 parameters; Receieved $# parameters"
|
|
||||||
fi
|
|
||||||
|
|
||||||
needle=$1
|
|
||||||
haystack=$2
|
|
||||||
expectation=$3
|
|
||||||
haystack_type=$4
|
|
||||||
|
|
||||||
case "${haystack_type}" in
|
|
||||||
"file") grep -q -F -e "${needle}" ${haystack} ;;
|
|
||||||
"text") echo "${haystack}" | grep -q -F -e "${needle}" ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [ "${expectation}" != "$?" ]; then
|
|
||||||
case "${expectation}" in
|
|
||||||
0) default_msg="Expected <${haystack}> to contain <${needle}>" ;;
|
|
||||||
1) default_msg="Did not expect <${haystack}> to contain <${needle}>" ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
fail "${msg:-${default_msg}}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
assertContains()
|
|
||||||
{
|
|
||||||
_assertContains "$@" 0 "text"
|
|
||||||
}
|
|
||||||
|
|
||||||
assertNotContains()
|
|
||||||
{
|
|
||||||
_assertContains "$@" 1 "text"
|
|
||||||
}
|
|
||||||
|
|
||||||
assertFileContains()
|
|
||||||
{
|
|
||||||
_assertContains "$@" 0 "file"
|
|
||||||
}
|
|
||||||
|
|
||||||
assertFileNotContains()
|
|
||||||
{
|
|
||||||
_assertContains "$@" 1 "file"
|
|
||||||
}
|
|
||||||
|
|
||||||
command_exists () {
|
|
||||||
type "$1" > /dev/null 2>&1 ;
|
|
||||||
}
|
|
||||||
|
|
||||||
assertFileMD5()
|
|
||||||
{
|
|
||||||
expectedHash=$1
|
|
||||||
filename=$2
|
|
||||||
|
|
||||||
if command_exists "md5sum"; then
|
|
||||||
md5_cmd="md5sum ${filename}"
|
|
||||||
expected_md5_cmd_output="${expectedHash} ${filename}"
|
|
||||||
elif command_exists "md5"; then
|
|
||||||
md5_cmd="md5 ${filename}"
|
|
||||||
expected_md5_cmd_output="MD5 (${filename}) = ${expectedHash}"
|
|
||||||
else
|
|
||||||
fail "no suitable MD5 hashing command found on this system"
|
|
||||||
fi
|
|
||||||
|
|
||||||
assertEquals "${expected_md5_cmd_output}" "`${md5_cmd}`"
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user