Compare commits

...

135 Commits

Author SHA1 Message Date
Casey 69c17b343a Merge pull request #907 from heroku/refactor-sqlite
Bug fix: fragile sqlite install
2019-12-06 09:43:23 -05:00
Casey Faist f31e9fa835 Correct failing smart requirement steps 2019-12-06 09:20:28 -05:00
Casey Faist 5788ff57cd changelog 2019-12-05 11:59:13 -05:00
Casey Faist f0f3463658 remove typo 2019-12-05 11:54:58 -05:00
Casey Faist ffc7683c05 remove broken pin from sqlite install 2019-12-05 11:17:58 -05:00
Casey 3a6f7f849b Merge pull request #904 from heroku/sqlite-quickfix
Sqlite quickfix
2019-12-02 16:57:01 -05:00
Casey Faist 475af5a1f8 test that sqlite installs properly 2019-12-02 15:57:05 -05:00
Casey Faist d166ee88d7 add tracking for sqlite install success or failure 2019-12-02 15:22:03 -05:00
Casey Faist ba55465a2b Version bump sqlite 2019-12-02 15:16:31 -05:00
Casey 93a620e6ed Merge pull request #881 from heroku/python-versions/2716-279
Python formula updates: 2.7.16-2.7.9
2019-10-30 09:20:09 -07:00
Casey a7a257e099 Merge pull request #880 from heroku/python-versions/py2-base
SQLITE: Py2 base formula update
2019-10-30 09:19:58 -07:00
Casey 40e91a9755 Merge pull request #879 from heroku/python-versions/35
Python formula updates: 3.5.7-3.5.0
2019-10-30 09:19:48 -07:00
Casey 7686370d81 Merge pull request #878 from heroku/python-versions/373-370
Python formula updates: 3.7.3-3.7.0
2019-10-30 09:19:27 -07:00
Casey 2d6990425e Merge pull request #876 from heroku/python-versions/368-360
Python formula updates: 3.6.8-3.6.0
2019-10-30 09:16:54 -07:00
Casey b5b640ab00 Merge branch 'master' into python-versions/368-360 2019-10-30 08:03:06 -07:00
Casey dfe28cbe28 Merge pull request #872 from heroku/python-versions/369-374
Python formula updates: 3.6.9 and 3.7.4
2019-10-30 08:02:40 -07:00
Casey 8fc94c0868 Merge branch 'master' into python-versions/369-374 2019-10-29 15:59:55 -07:00
Casey 86fc9f156b Merge pull request #870 from heroku/py3-formula-update
SQLITE: Py3 formula update
2019-10-29 15:59:32 -07:00
Casey Faist 2a4f0a66c3 changelog 2019-10-29 15:15:46 -07:00
Casey Faist 87ba8b499a Update python 2 formulas 2019-10-29 15:12:04 -07:00
Casey Faist f03b7ed048 update Changelog 2019-10-29 15:06:41 -07:00
Casey Faist bf1b1dc3f8 update base Python 2 formula 2019-10-29 15:06:17 -07:00
Casey Faist a421ea93e3 update changelog 2019-10-29 14:59:48 -07:00
Casey Faist 3c40bf8bea update 3.5 formulas 2019-10-29 14:54:36 -07:00
Casey Faist f28465bec7 update changelog 2019-10-29 14:46:29 -07:00
Casey Faist fade163df8 update Changelog 2019-10-29 14:45:58 -07:00
Casey Faist 13fad186ff changelog update 2019-10-29 14:39:54 -07:00
Casey Faist c12f395c9a update all 3.6 formulas to load python3 base 2019-10-29 14:39:26 -07:00
Casey Faist 43c54abf0e update changelog 2019-10-29 14:36:46 -07:00
Casey Faist 151df58e86 don't use vendored sqlite from s3 in formulas 2019-10-29 14:35:36 -07:00
Casey Faist 1c87fd3d6e correct changelog 2019-10-29 14:17:46 -07:00
Casey Faist 50cdf10a36 move libsqlite-dev install back to dockerfile 2019-10-29 14:14:20 -07:00
Casey Faist 0be5993e32 update changelog 2019-10-29 14:14:20 -07:00
Casey Faist 3f9a80ad24 don't check stack defensively as its not forwards compatible 2019-10-29 14:14:20 -07:00
Casey Faist 14c15f4dd8 create symlinks for python3 formula to sqlite 2019-10-29 14:14:20 -07:00
Casey Faist 9bd5fa7c7f replace formula sqlite install 2019-10-29 14:14:20 -07:00
Casey 89885a4472 Merge pull request #860 from heroku/test-staged-binaries
Test staged binaries
2019-10-29 08:33:27 -07:00
Casey Faist 3c193bd475 update 3.4 warn test 2019-10-29 07:42:50 -07:00
Casey Faist a7f62496b1 correct python35 tests 2019-10-28 15:16:14 -07:00
Casey Faist f1b0f8c154 correct the pass/fail metric for python 34 2019-10-24 12:48:04 -07:00
Casey Faist f90dfbc12e update 3.4 tests to fail on heroku 18 2019-10-24 09:40:31 -07:00
Casey Faist 9ca0c4eb84 check for 3.5 on all stacks 2019-10-24 09:36:29 -07:00
Casey Faist dc694d4712 test for 3.5 warn should pass when using staged binaries 2019-10-24 08:52:33 -07:00
Casey b4b94abea0 Merge branch 'master' into test-staged-binaries 2019-10-24 07:06:00 -07:00
Casey 0c66cea063 Merge pull request #896 from heroku/v160-changelog
160 release changelog note
2019-10-23 15:56:10 -07:00
Casey Faist 48f6e20fc5 160 release changelog note 2019-10-23 14:30:05 -07:00
Casey 7ceb774c63 Merge pull request #894 from heroku/undo-revert
Reapply pipenv-ci bugfix
2019-10-23 12:57:27 -07:00
Casey f43caaadc3 Merge branch 'master' into undo-revert 2019-10-23 11:40:04 -07:00
Casey bb31a012fd Merge pull request #893 from heroku/changelog-fix
Release 159 changelog update
2019-10-23 10:55:13 -07:00
Casey Faist 9ab6a56cba reapply bugfix in preparation for tomorrow's release 2019-10-22 11:29:58 -07:00
Alexandre Paroissien ab89e49235 Fix pipenv install twice in CI 2019-10-22 11:28:08 -07:00
Casey Faist 5293169aa8 update Readme to reflect 2.7 2019-10-22 09:59:02 -07:00
Casey Faist 3698cb5715 update changelog with latest python 2.7 release 2019-10-22 09:56:01 -07:00
Casey c126f6239d Merge pull request #891 from heroku/python-27-update
Python 2.7.17
2019-10-22 08:04:26 -07:00
Casey e821501114 Merge branch 'master' into test-staged-binaries 2019-10-21 19:16:54 -07:00
Casey Faist 7f639739e3 add new 2.7.17 formula 2019-10-21 17:06:32 -07:00
Casey Faist 4328847f1e update tests and default 2.7 2019-10-21 17:04:23 -07:00
Casey Faist c79e6f02ad update changelog 2019-10-21 17:03:56 -07:00
Casey 1d938c35f8 Merge pull request #890 from heroku/release-cleanup
Release 158 Changelog update
2019-10-21 17:00:58 -07:00
Casey Faist 99a2a55f6a update changelog 2019-10-21 14:19:53 -07:00
Casey 79dbd79b13 Merge pull request #885 from heroku/new-pythons
Python 3.7.5 and 3.8.0
2019-10-21 13:01:22 -07:00
Casey 0b4a2d664b Merge branch 'master' into new-pythons 2019-10-21 11:57:35 -07:00
Casey 3726d3b473 Merge pull request #887 from heroku/deprecated-pythons-test
Test fixture update
2019-10-21 11:57:08 -07:00
Casey 9b72199cdf Merge branch 'master' into new-pythons 2019-10-21 10:57:49 -07:00
Casey 22e6239222 Merge branch 'master' into deprecated-pythons-test 2019-10-21 10:56:23 -07:00
Casey 39e4e85747 Merge pull request #886 from heroku/we-are-the-walrus
We Are The Walrus (Python 3.8 Support)
2019-10-21 10:55:46 -07:00
Casey 05612fa1eb Merge branch 'master' into deprecated-pythons-test 2019-10-21 10:54:59 -07:00
Casey fb1ca18e90 Merge branch 'master' into new-pythons 2019-10-18 10:00:01 -07:00
Casey 0207d8aff0 Merge branch 'master' into we-are-the-walrus 2019-10-18 09:59:29 -07:00
Casey 6bf3a75da2 Merge pull request #888 from heroku/temporary-revert
Temporary revert
2019-10-18 09:58:55 -07:00
Casey Faist 011f1e7e60 wardn case should succeed on all stacks 2019-10-18 09:57:09 -07:00
Casey Faist 0b804b186c correct the capture version too 2019-10-18 08:53:40 -07:00
Casey Faist ec56074c18 CHANGELOG 2019-10-17 16:49:31 -07:00
Casey Faist 34508bfc35 Temporarily Revert "Fix pipenv install twice in CI"
This reverts commit c410fd36a6.

This is a temporary revert in order to release new python binaries first
and then roll this change out in a separate release. This keeps releases
smaller and better organized in case we need to roll back.
2019-10-17 16:44:58 -07:00
Casey Faist af1ef93311 CHANGELOG CHANGELOG CHANGELOG 2019-10-17 16:35:57 -07:00
Casey Faist 0fc7b6c186 bump the warning version to an available version 2019-10-17 16:34:44 -07:00
Casey Faist 33cd4a5fe1 remove copy-paste typo 2019-10-17 16:09:27 -07:00
Casey Faist 7ff7fa4462 add 3.8 tests 2019-10-17 15:01:32 -07:00
Casey Faist 9a830367fe add 3.8 support 2019-10-17 14:59:26 -07:00
Casey Faist 521ed3ff60 create and stage new python runtimes 2019-10-17 14:07:09 -07:00
Casey Faist 03c12e8081 update to use staging binaries env var 2019-10-14 12:29:12 -07:00
Casey de18566b47 Merge branch 'master' into test-staged-binaries 2019-10-14 12:26:32 -07:00
Casey a165486180 Merge pull request #882 from heroku/confirm-binary-url
Staging binary controller env var
2019-10-14 12:26:10 -07:00
Casey Faist d7327b8d13 CHANGELOG 2019-10-14 11:24:45 -07:00
Casey Faist 47c6dbab32 add var to handle staged binaries 2019-10-14 11:15:06 -07:00
Casey 939594ecf4 Merge branch 'master' into test-staged-binaries 2019-10-12 14:17:15 -07:00
Casey 23adcc42c4 Merge pull request #877 from heroku/test-pysqlite
Add pysqlite test
2019-10-12 14:12:56 -07:00
Casey cc2d1ad17f Merge branch 'master' into test-pysqlite 2019-10-10 13:09:56 -07:00
Casey Faist 91a0be91e1 Changelog Changelog Changelog 2019-10-10 13:08:27 -07:00
Casey Faist 4a4a6a1df0 add pysqlite test for python 2.7.16 2019-10-10 13:05:45 -07:00
Casey b30838072f Merge pull request #871 from heroku/update-sqlite-tests
Update tests to capture Sqlite install
2019-10-10 11:50:00 -07:00
Casey Faist 950572132c remove test for sqlite on older versions of python 3.4 2019-10-09 13:57:06 -07:00
Casey fe5da9a0a6 Merge branch 'master' into update-sqlite-tests 2019-10-09 13:35:28 -07:00
David Zülke 4eed56e2e5 Merge pull request #874 from heroku/revert-868-app-dir-fix
Revert "Refactor: $BUILD_DIR" (from PR #868), closes #873
2019-10-09 16:12:03 +02:00
David Zülke 00d44d2e34 Revert "Refactor: $BUILD_DIR" 2019-10-09 15:28:31 +02:00
Casey Faist 0c78978e90 don't check python 3.4 2019-10-08 14:57:15 -07:00
Casey Faist d0fd9ad58a Changelog update 2019-10-08 14:10:51 -07:00
Casey Faist 24e0858902 add sqlite tests 2019-10-08 14:08:04 -07:00
Casey d54da94d47 Merge branch 'master' into test-staged-binaries 2019-10-08 12:25:06 -07:00
Casey 1721fa3703 Merge pull request #868 from heroku/app-dir-fix
Refactor: $BUILD_DIR
2019-10-08 12:20:02 -07:00
Casey 970b6c1e4b Merge branch 'master' into app-dir-fix 2019-10-08 11:10:48 -07:00
Casey 89145ef839 Merge pull request #866 from heroku/correct-changelog
update changelog to match current tags
2019-10-08 11:10:23 -07:00
Casey Faist ce6657d5fe use correct override var BUILDPACK_VENDOR_URL instead of vendor_url 2019-10-08 09:54:17 -07:00
Casey Faist cacd163958 update Changelog 2019-10-07 18:06:49 -07:00
Casey Faist cd4601a707 add double-quotes to comply with shellcheck 2019-10-07 18:05:34 -07:00
Duane Hutchins 05e29c74bc Changed hardcoded /app into $BUILD_DIR 2019-10-07 16:41:07 -07:00
Casey dbfdb5a356 Merge branch 'master' into correct-changelog 2019-10-07 18:09:19 -04:00
Casey 8512fcb811 Merge pull request #861 from heroku/fix-pipenv-install-twice-ci
Fix pipenv install twice with CI
2019-10-07 18:07:38 -04:00
Casey 6b328504de Merge branch 'master' into fix-pipenv-install-twice-ci 2019-10-07 17:21:54 -04:00
Casey Faist b4553d4bee update changelog to match tags 2019-10-07 14:11:35 -07:00
Casey af860be62a Merge pull request #864 from heroku/schneems/check-changelog-fix-escaping
[changelog skip] Fix Escaping in Changelog Script
2019-10-02 19:42:51 -07:00
Casey 2be890d2e8 Merge branch 'master' into schneems/check-changelog-fix-escaping 2019-10-02 19:01:17 -07:00
Casey e936ff00c3 Merge branch 'master' into fix-pipenv-install-twice-ci 2019-10-02 18:18:33 -07:00
schneems 3096299184 [changelog skip] Fix Escaping in Changelog Script
The previous PR had a bug where the REGEX for grep was not properly escaped. This PR fixes that issue.
2019-10-01 10:28:18 -05:00
Casey ffc7359b19 Merge pull request #862 from heroku/pin-dockerfile
Pin docker build env
2019-10-01 07:35:32 -07:00
Casey Faist 7a313c53a5 update changelog 2019-10-01 06:43:37 -07:00
Casey Faist 98df315cfa pin docker build env 2019-10-01 06:37:03 -07:00
Casey Faist 74bc1d4049 pass vendor url to docker container 2019-09-30 15:22:29 -07:00
Casey df18c0485d Merge branch 'master' into fix-pipenv-install-twice-ci 2019-09-30 14:05:27 -07:00
Casey Faist 629ab233bf add changelog 2019-09-30 13:36:19 -07:00
Casey c4b4bfaa3c Merge branch 'master' into test-staged-binaries 2019-09-30 13:20:22 -07:00
Casey fe6a81d513 Merge pull request #859 from heroku/dockerfile-update
Unpin Heroku 18 dockerfile dependencies
2019-09-30 13:20:00 -07:00
Casey Faist 7c82017a0e run each matrix item twice, with VENDOR_URL update 2019-09-30 13:19:38 -07:00
Casey 75ce3f537d Merge branch 'master' into dockerfile-update 2019-09-30 12:05:41 -07:00
Casey a51d5f2976 Merge pull request #855 from heroku/fix-mcount-typo
Fix mcount typo
2019-09-30 12:05:06 -07:00
Casey Faist 6a8aa1e2b0 update travis matrix to change vendor url 2019-09-30 11:15:09 -07:00
Casey Faist 35873ee517 update Changelog 2019-09-30 11:14:36 -07:00
Casey Faist b2b12d0355 add changelog update 2019-09-30 11:01:49 -07:00
Casey Faist 15ecb76950 revert pin bionic packages for heroku-18 2019-09-30 11:00:27 -07:00
Casey adba08788c Merge branch 'master' into fix-mcount-typo 2019-09-30 10:13:21 -07:00
Casey e3d6bc8436 Merge pull request #857 from heroku/schneems/check-changelog
[changelog skip] Ensure PRs include a Changelog entry
2019-09-27 17:41:49 -07:00
Casey Faist 6e4b43fa1d add changelog update to retrigger tests 2019-09-27 14:09:30 -07:00
schneems 3fef7caf50 [changelog skip] Ensure PRs include a Changelog entry
The goal of this PR is to add a github action that checks for the presence of a changelog entry.

It is better to add entries as a PR is merged instead of having to remember what was merged and generate a changelog at release time.

By automating this check, it's one less thing the maintainer has to remember, and it's one less thing a change might be blocked on i.e. "Looks good, but please add a changelog entry".

Let me know if you have any questions and Happy Friday!
2019-09-27 16:09:19 -05:00
Claudio Jolowicz 0c701de466 Fix typo in command to log pip-diff failure
The pip-diff tool from vendor/pip-pop is used to determine stale
requirements. When pip-diff encounters an unexpected failure, a count is
logged using mcount from heroku/buildpack-stdlib.

Due to a typo, mount(8) was invoked instead of mcount, with an invalid
argument.
2019-09-25 09:48:10 +02:00
Alexandre Paroissien c410fd36a6 Fix pipenv install twice in CI 2019-09-24 15:03:40 +07:00
63 changed files with 242 additions and 611 deletions
+12
View File
@@ -0,0 +1,12 @@
name: Check Changelog
on: [pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Check that CHANGELOG is touched
run: |
cat $GITHUB_EVENT_PATH | jq .pull_request.title | grep -i '\[\(\(changelog skip\)\|\(ci skip\)\)\]' || git diff remotes/origin/${{ github.base_ref }} --name-only | grep CHANGELOG.md
+3 -3
View File
@@ -10,11 +10,11 @@ before_script:
script: script:
- docker build --pull --tag travis-build-cedar-14 --file $(pwd)/builds/cedar-14.Dockerfile . - docker build --pull --tag travis-build-cedar-14 --file $(pwd)/builds/cedar-14.Dockerfile .
- docker run --rm -e "STACK=cedar-14" travis-build-cedar-14 bash $TESTFOLDER - docker run --rm -e "STACK=cedar-14" -e "USE_STAGING_BINARIES=$USE_STAGING_BINARIES" travis-build-cedar-14 bash $TESTFOLDER
- docker build --pull --tag travis-build-heroku-16 --file $(pwd)/builds/heroku-16.Dockerfile . - docker build --pull --tag travis-build-heroku-16 --file $(pwd)/builds/heroku-16.Dockerfile .
- docker run --rm -e "STACK=heroku-16" travis-build-heroku-16 bash $TESTFOLDER - docker run --rm -e "STACK=heroku-16" -e "USE_STAGING_BINARIES=$USE_STAGING_BINARIES" travis-build-heroku-16 bash $TESTFOLDER
- docker build --pull --tag travis-build-heroku-18 --file $(pwd)/builds/heroku-18.Dockerfile . - docker build --pull --tag travis-build-heroku-18 --file $(pwd)/builds/heroku-18.Dockerfile .
- docker run --rm -e "STACK=heroku-18" travis-build-heroku-18 bash $TESTFOLDER - docker run --rm -e "STACK=heroku-18" -e "USE_STAGING_BINARIES=$USE_STAGING_BINARIES" travis-build-heroku-18 bash $TESTFOLDER
jobs: jobs:
include: include:
+26
View File
@@ -2,8 +2,34 @@
# Master # Master
- Bug fix: fragile sqlite3 install
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
# 161 (2019-12-2)
- Bug fix: Sqlite3 version bump
# 160 (2019-10-23)
- Bugfix: Pipenv no longer installs twice in CI
# 159 (2019-10-22)
- Python 2.7.17 now available on Heroku 18 and 16.
# 158 (2019-10-21)
- Python 3.7.5 and 3.8.0 now available on Heroku 18 and 16.
- Add support for Python 3.8 branch
- Sqlite3 Update:
- Test Improvements
- Add support for staging binary testing
# 157 (2019-09-18)
- Typo fixes
# 156 (2019-09-12) # 156 (2019-09-12)
- Python 3.6.9 and 3.7.4 now available. - Python 3.6.9 and 3.7.4 now available.
+1 -1
View File
@@ -63,7 +63,7 @@ Supported runtime options include:
- `python-3.7.4` - `python-3.7.4`
- `python-3.6.9` - `python-3.6.9`
- `python-2.7.16` - `python-2.7.17`
## Tests ## Tests
+3
View File
@@ -42,6 +42,8 @@ export BUILD_DIR CACHE_DIR ENV_DIR
VENDOR_URL="https://lang-python.s3.amazonaws.com/$STACK" VENDOR_URL="https://lang-python.s3.amazonaws.com/$STACK"
if [[ -n ${BUILDPACK_VENDOR_URL:-} ]]; then if [[ -n ${BUILDPACK_VENDOR_URL:-} ]]; then
VENDOR_URL="$BUILDPACK_VENDOR_URL" VENDOR_URL="$BUILDPACK_VENDOR_URL"
elif [[ -n ${USE_STAGING_BINARIES} ]]; then
VENDOR_URL="$USE_STAGING_BINARIES/$STACK"
fi fi
export VENDOR_URL export VENDOR_URL
@@ -50,6 +52,7 @@ export VENDOR_URL
source "$BIN_DIR/default_pythons" source "$BIN_DIR/default_pythons"
# Supported Python Branches # Supported Python Branches
PY38="python-3.8"
PY37="python-3.7" PY37="python-3.7"
PY36="python-3.6" PY36="python-3.6"
PY35="python-3.5" PY35="python-3.5"
+4 -3
View File
@@ -1,10 +1,11 @@
#!/usr/bin/env bash #!/usr/bin/env bash
DEFAULT_PYTHON_VERSION="python-3.6.9" DEFAULT_PYTHON_VERSION="python-3.6.9"
LATEST_38="python-3.8.0"
LATEST_37="python-3.7.5"
LATEST_36="python-3.6.9" LATEST_36="python-3.6.9"
LATEST_37="python-3.7.4"
LATEST_35="python-3.5.7" LATEST_35="python-3.5.7"
LATEST_34="python-3.4.10" LATEST_34="python-3.4.10"
LATEST_27="python-2.7.16" LATEST_27="python-2.7.17"
export DEFAULT_PYTHON_VERSION LATEST_37 LATEST_36 LATEST_35 LATEST_34 LATEST_27 export DEFAULT_PYTHON_VERSION LATEST_38 LATEST_37 LATEST_36 LATEST_35 LATEST_34 LATEST_27
+1 -1
View File
@@ -13,7 +13,7 @@ if [ ! "$SKIP_PIP_INSTALL" ]; then
if ! pip-diff --stale requirements-declared.txt requirements.txt --exclude setuptools pip wheel > .heroku/python/requirements-stale.txt; then if ! pip-diff --stale requirements-declared.txt requirements.txt --exclude setuptools pip wheel > .heroku/python/requirements-stale.txt; then
mount "failure.bad-requirements" mcount "failure.bad-requirements"
fi fi
rm -fr requirements-declared.txt rm -fr requirements-declared.txt
+7 -7
View File
@@ -60,10 +60,16 @@ if [ ! "$SKIP_PIPENV_INSTALL" ]; then
# avoid this eager behavior. # avoid this eager behavior.
/app/.heroku/python/bin/pip install pipenv==$PIPENV_VERSION --upgrade --upgrade-strategy only-if-needed &> /dev/null /app/.heroku/python/bin/pip install pipenv==$PIPENV_VERSION --upgrade --upgrade-strategy only-if-needed &> /dev/null
# Install the test dependencies, for CI.
if [ "$INSTALL_TEST" ]; then
puts-step "Installing test dependencies…"
/app/.heroku/python/bin/pipenv install --dev --system --deploy 2>&1 | cleanup | indent
# Install the dependencies. # Install the dependencies.
if [[ ! -f Pipfile.lock ]]; then elif [[ ! -f Pipfile.lock ]]; then
puts-step "Installing dependencies with Pipenv $PIPENV_VERSION…" puts-step "Installing dependencies with Pipenv $PIPENV_VERSION…"
/app/.heroku/python/bin/pipenv install --system --skip-lock 2>&1 | indent /app/.heroku/python/bin/pipenv install --system --skip-lock 2>&1 | indent
else else
pipenv-to-pip Pipfile.lock > requirements.txt pipenv-to-pip Pipfile.lock > requirements.txt
"$BIN_DIR/steps/pip-uninstall" "$BIN_DIR/steps/pip-uninstall"
@@ -73,12 +79,6 @@ if [ ! "$SKIP_PIPENV_INSTALL" ]; then
puts-step "Installing dependencies with Pipenv $PIPENV_VERSION…" puts-step "Installing dependencies with Pipenv $PIPENV_VERSION…"
/app/.heroku/python/bin/pipenv install --system --deploy 2>&1 | indent /app/.heroku/python/bin/pipenv install --system --deploy 2>&1 | indent
fi fi
# Install the test dependencies, for CI.
if [ "$INSTALL_TEST" ]; then
puts-step "Installing test dependencies…"
/app/.heroku/python/bin/pipenv install --dev --system --deploy 2>&1 | cleanup | indent
fi
fi fi
else else
export SKIP_PIP_INSTALL=1 export SKIP_PIP_INSTALL=1
+7
View File
@@ -11,6 +11,13 @@ SECURITY_UPDATE="Python has released a security update! Please consider upgradin
# check if runtime exists # check if runtime exists
if curl --output /dev/null --silent --head --fail "$VENDORED_PYTHON"; then if curl --output /dev/null --silent --head --fail "$VENDORED_PYTHON"; then
if [[ "$PYTHON_VERSION" == $PY38* ]]; then
# do things to alert the user of security release available
if [ "$PYTHON_VERSION" != "$LATEST_38" ]; then
puts-warn "$SECURITY_UPDATE" "$LATEST_38"
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
fi
fi
if [[ "$PYTHON_VERSION" == $PY37* ]]; then if [[ "$PYTHON_VERSION" == $PY37* ]]; then
# do things to alert the user of security release available # do things to alert the user of security release available
if [ "$PYTHON_VERSION" != "$LATEST_37" ]; then if [ "$PYTHON_VERSION" != "$LATEST_37" ]; then
+11 -26
View File
@@ -3,21 +3,8 @@
# shellcheck source=bin/utils # shellcheck source=bin/utils
source "$BIN_DIR/utils" source "$BIN_DIR/utils"
sqlite3_version() {
if [ "$STACK" = "cedar-14" ]; then
SQLITE3_VERSION="3.8.2-1ubuntu2.2"
elif [ "$STACK" = "heroku-16" ]; then
SQLITE3_VERSION="3.11.0-1ubuntu1.2"
else
SQLITE3_VERSION=${SQLITE3_VERSION:-$(dpkg -s libsqlite3-0 | grep Version | sed 's/Version: //')}
fi
export SQLITE3_VERSION
}
sqlite3_install() { sqlite3_install() {
HEROKU_PYTHON_DIR="$1" HEROKU_PYTHON_DIR="$1"
SQLITE3_VERSION="$2"
HEADERS_ONLY="$3" HEADERS_ONLY="$3"
mkdir -p "$HEROKU_PYTHON_DIR" mkdir -p "$HEROKU_PYTHON_DIR"
@@ -35,9 +22,9 @@ sqlite3_install() {
apt-get $APT_OPTIONS update > /dev/null 2>&1 apt-get $APT_OPTIONS update > /dev/null 2>&1
if [ -z "$HEADERS_ONLY" ]; then if [ -z "$HEADERS_ONLY" ]; then
apt-get $APT_OPTIONS -y -d --reinstall install libsqlite3-dev="$SQLITE3_VERSION" sqlite3="$SQLITE3_VERSION" > /dev/null 2>&1 apt-get $APT_OPTIONS -y -d --reinstall install libsqlite3-dev sqlite3 > /dev/null 2>&1
else else
apt-get $APT_OPTIONS -y -d --reinstall install libsqlite3-dev="$SQLITE3_VERSION" apt-get $APT_OPTIONS -y -d --reinstall install libsqlite3-dev
fi fi
find "$APT_CACHE_DIR/archives/" -name "*.deb" -exec dpkg -x {} "$HEROKU_PYTHON_DIR/sqlite3/" \; find "$APT_CACHE_DIR/archives/" -name "*.deb" -exec dpkg -x {} "$HEROKU_PYTHON_DIR/sqlite3/" \;
@@ -70,7 +57,6 @@ sqlite3_install() {
} }
buildpack_sqlite3_install() { buildpack_sqlite3_install() {
sqlite3_version
HEROKU_PYTHON_DIR="$BUILD_DIR/.heroku/python" HEROKU_PYTHON_DIR="$BUILD_DIR/.heroku/python"
SQLITE3_VERSION_FILE="$BUILD_DIR/.heroku/python-sqlite3-version" SQLITE3_VERSION_FILE="$BUILD_DIR/.heroku/python-sqlite3-version"
@@ -78,16 +64,15 @@ buildpack_sqlite3_install() {
INSTALLED_SQLITE3_VERSION=$(cat "$SQLITE3_VERSION_FILE") INSTALLED_SQLITE3_VERSION=$(cat "$SQLITE3_VERSION_FILE")
fi fi
# python version check puts-step "Installing SQLite3"
if python_sqlite3_check "$PYTHON_VERSION"; then
# only install if the sqlite3 version has changed
if [ "$INSTALLED_SQLITE3_VERSION" != "$SQLITE3_VERSION" ]; then
puts-step "Installing SQLite3"
sqlite3_install "$BUILD_DIR/.heroku/python" "$SQLITE3_VERSION"
# save version installed if sqlite3_install "$BUILD_DIR/.heroku/python" ; then
mkdir -p "$CACHE_DIR/.heroku/" echo "Sqlite3 successfully installed."
echo "$SQLITE3_VERSION" > "$CACHE_DIR/.heroku/python-sqlite3-version" mcount "success.python.sqlite3"
fi else
echo "Sqlite3 failed to install."
mcount "failure.python.sqlite3"
fi fi
mkdir -p "$CACHE_DIR/.heroku/"
} }
+1 -1
View File
@@ -7,7 +7,7 @@ ENV WORKSPACE_DIR="/app/builds" \
DEBIAN_FRONTEND=noninteractive \ DEBIAN_FRONTEND=noninteractive \
STACK="cedar-14" STACK="cedar-14"
RUN apt-get update && apt-get install -y python-pip && rm -rf /var/lib/apt/lists/* RUN apt-get update && apt-get install -y python-pip libsqlite3-dev realpath && rm -rf /var/lib/apt/lists/*
COPY requirements.txt /app/ COPY requirements.txt /app/
RUN pip install -r /app/requirements.txt RUN pip install -r /app/requirements.txt
+1 -1
View File
@@ -7,7 +7,7 @@ ENV WORKSPACE_DIR="/app/builds" \
DEBIAN_FRONTEND=noninteractive \ DEBIAN_FRONTEND=noninteractive \
STACK="heroku-16" STACK="heroku-16"
RUN apt-get update && apt-get install -y python-pip && rm -rf /var/lib/apt/lists/* RUN apt-get update && apt-get install -y python-pip libsqlite3-dev && rm -rf /var/lib/apt/lists/*
COPY requirements.txt /app/ COPY requirements.txt /app/
RUN pip install --disable-pip-version-check --no-cache-dir -r /app/requirements.txt RUN pip install --disable-pip-version-check --no-cache-dir -r /app/requirements.txt
+2 -2
View File
@@ -1,4 +1,4 @@
FROM heroku/heroku:18-build FROM heroku/heroku:18-build.v16
WORKDIR /app WORKDIR /app
ENV WORKSPACE_DIR="/app/builds" \ ENV WORKSPACE_DIR="/app/builds" \
@@ -7,7 +7,7 @@ ENV WORKSPACE_DIR="/app/builds" \
DEBIAN_FRONTEND=noninteractive \ DEBIAN_FRONTEND=noninteractive \
STACK="heroku-18" STACK="heroku-18"
RUN apt-get update && apt-get install --no-install-recommends -y python-pip-whl=9.0.1-2 python-pip=9.0.1-2 python-setuptools python-wheel && rm -rf /var/lib/apt/lists/* RUN apt-get update && apt-get install --no-install-recommends -y python-pip-whl=9.0.1-2 python-pip=9.0.1-2 python-setuptools python-wheel libsqlite3-dev && rm -rf /var/lib/apt/lists/*
COPY requirements.txt /app/ COPY requirements.txt /app/
RUN pip install --disable-pip-version-check --no-cache-dir -r /app/requirements.txt RUN pip install --disable-pip-version-check --no-cache-dir -r /app/requirements.txt
+1 -12
View File
@@ -1,15 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Build Path: /app/.heroku/python/ # Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1 source $(dirname $0)/python2
echo "Building Python…"
SOURCE_TARBALL='https://python.org/ftp/python/2.7.10/Python-2.7.10.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-2.7.10 src
cd src
./configure --prefix=$OUT_PREFIX --with-ensurepip=no
make
make install
+1 -12
View File
@@ -1,15 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Build Path: /app/.heroku/python/ # Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1 source $(dirname $0)/python2
echo "Building Python…"
SOURCE_TARBALL='https://python.org/ftp/python/2.7.11/Python-2.7.11.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-2.7.11 src
cd src
./configure --prefix=$OUT_PREFIX --with-ensurepip=no
make
make install
+1 -12
View File
@@ -1,15 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Build Path: /app/.heroku/python/ # Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1 source $(dirname $0)/python2
echo "Building Python…"
SOURCE_TARBALL='https://python.org/ftp/python/2.7.12/Python-2.7.12.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-2.7.12 src
cd src
./configure --prefix=$OUT_PREFIX --with-ensurepip=no
make
make install
+1 -16
View File
@@ -1,19 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Build Path: /app/.heroku/python/ # Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1 source $(dirname $0)/python2
echo "Building Python…"
SOURCE_TARBALL='https://python.org/ftp/python/2.7.13/Python-2.7.13.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-2.7.13 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 -16
View File
@@ -1,19 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Build Path: /app/.heroku/python/ # Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1 source $(dirname $0)/python2
echo "Building Python…"
SOURCE_TARBALL='https://python.org/ftp/python/2.7.14/Python-2.7.14.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-2.7.14 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 -24
View File
@@ -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.15/Python-2.7.15.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-2.7.15 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 -24
View File
@@ -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.16/Python-2.7.16.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-2.7.16 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 '{}' +
+27
View File
@@ -0,0 +1,27 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
OUT_PREFIX=$1
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 -12
View File
@@ -1,15 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Build Path: /app/.heroku/python/ # Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1 source $(dirname $0)/python2
echo "Building Python…"
SOURCE_TARBALL='https://python.org/ftp/python/2.7.9/Python-2.7.9.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-2.7.9 src
cd src
./configure --prefix=$OUT_PREFIX --with-ensurepip=no
make
make install
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
source $(dirname $0)/python3
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
source $(dirname $0)/python3
+1 -15
View File
@@ -1,18 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Build Path: /app/.heroku/python/ # Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1
echo "Building Python…"
SOURCE_TARBALL='https://python.org/ftp/python/3.5.2/Python-3.5.2.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-3.5.2 src
cd src
./configure --prefix=$OUT_PREFIX --with-ensurepip=no
make
make install
# ln $OUT_PREFIX/bin/python3 $OUT_PREFIX/bin/python
source $(dirname $0)/python3
+1 -15
View File
@@ -1,18 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Build Path: /app/.heroku/python/ # Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1
echo "Building Python…"
SOURCE_TARBALL='https://python.org/ftp/python/3.5.3/Python-3.5.3.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-3.5.3 src
cd src
./configure --prefix=$OUT_PREFIX --with-ensurepip=no
make
make install
# ln $OUT_PREFIX/bin/python3 $OUT_PREFIX/bin/python
source $(dirname $0)/python3
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
source $(dirname $0)/python3
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
source $(dirname $0)/python3
+1 -29
View File
@@ -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.5.6/Python-3.5.6.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-3.5.6 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 -29
View File
@@ -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.5.7/Python-3.5.7.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-3.5.7 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 -15
View File
@@ -1,18 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Build Path: /app/.heroku/python/ # Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1
echo "Building Python…"
SOURCE_TARBALL='https://python.org/ftp/python/3.6.0/Python-3.6.0.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-3.6.0 src
cd src
./configure --prefix=$OUT_PREFIX --with-ensurepip=no
make
make install
ln $OUT_PREFIX/bin/python3 $OUT_PREFIX/bin/python
source $(dirname $0)/python3
+1 -15
View File
@@ -1,18 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Build Path: /app/.heroku/python/ # Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1
echo "Building Python…"
SOURCE_TARBALL='https://python.org/ftp/python/3.6.1/Python-3.6.1.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-3.6.1 src
cd src
./configure --prefix=$OUT_PREFIX --with-ensurepip=no
make
make install
ln $OUT_PREFIX/bin/python3 $OUT_PREFIX/bin/python
source $(dirname $0)/python3
+1 -18
View File
@@ -1,21 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Build Path: /app/.heroku/python/ # Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1 source $(dirname $0)/python3
echo "Building Python…"
SOURCE_TARBALL='https://python.org/ftp/python/3.6.2/Python-3.6.2.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-3.6.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 '{}' +
ln $OUT_PREFIX/bin/python3 $OUT_PREFIX/bin/python
+1 -18
View File
@@ -1,21 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Build Path: /app/.heroku/python/ # Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1 source $(dirname $0)/python3
echo "Building Python…"
SOURCE_TARBALL='https://python.org/ftp/python/3.6.3/Python-3.6.3.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-3.6.3 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 '{}' +
ln $OUT_PREFIX/bin/python3 $OUT_PREFIX/bin/python
+1 -18
View File
@@ -1,21 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Build Path: /app/.heroku/python/ # Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1 source $(dirname $0)/python3
echo "Building Python…"
SOURCE_TARBALL='https://python.org/ftp/python/3.6.4/Python-3.6.4.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-3.6.4 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 '{}' +
ln $OUT_PREFIX/bin/python3 $OUT_PREFIX/bin/python
+1 -18
View File
@@ -1,21 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Build Path: /app/.heroku/python/ # Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1 source $(dirname $0)/python3
echo "Building Python…"
SOURCE_TARBALL='https://python.org/ftp/python/3.6.5/Python-3.6.5.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-3.6.5 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 '{}' +
ln $OUT_PREFIX/bin/python3 $OUT_PREFIX/bin/python
+1 -26
View File
@@ -1,29 +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.6.6/Python-3.6.6.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-3.6.6 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 '{}' +
ln $OUT_PREFIX/bin/python3 $OUT_PREFIX/bin/python
+1 -29
View File
@@ -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.6.7/Python-3.6.7.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-3.6.7 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 -29
View File
@@ -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.6.8/Python-3.6.8.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-3.6.8 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
View File
@@ -1,5 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Build Path: /app/.heroku/python/ # Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
source $(dirname $0)/python3 source $(dirname $0)/python3
+1 -26
View File
@@ -1,29 +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.0/Python-3.7.0.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-3.7.0 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 '{}' +
ln $OUT_PREFIX/bin/python3 $OUT_PREFIX/bin/python
+1 -29
View File
@@ -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.1/Python-3.7.1.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-3.7.1 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 -29
View File
@@ -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 -29
View File
@@ -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.3/Python-3.7.3.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-3.7.3 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
View File
@@ -1,5 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Build Path: /app/.heroku/python/ # Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
source $(dirname $0)/python3 source $(dirname $0)/python3
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
source $(dirname $0)/python3
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
source $(dirname $0)/python3
+6 -8
View File
@@ -12,14 +12,7 @@ python_version=${BASE^} # this gives us only the filename with version number
version_number=$(echo "$python_version" | cut -d- -f2) # this returns just X.X.X version_number=$(echo "$python_version" | cut -d- -f2) # this returns just X.X.X
dep_url=https://python.org/ftp/python/${version_number}/${python_version}.tgz dep_url=https://python.org/ftp/python/${version_number}/${python_version}.tgz
# shellcheck source=bin/utils echo "Building ${python_version}..."
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 3..."
echo "Pulling from source: ${dep_url}" echo "Pulling from source: ${dep_url}"
curl -L "${dep_url}" | tar xz -C "${OUT_PREFIX}" curl -L "${dep_url}" | tar xz -C "${OUT_PREFIX}"
@@ -33,3 +26,8 @@ make install
# Remove unneeded test directories, similar to the official Docker Python images: # Remove unneeded test directories, similar to the official Docker Python images:
# https://github.com/docker-library/python # https://github.com/docker-library/python
find "${OUT_PREFIX}" \( -type d -a \( -name test -o -name tests \) \) -exec rm -rf '{}' + find "${OUT_PREFIX}" \( -type d -a \( -name test -o -name tests \) \) -exec rm -rf '{}' +
# Create links to SQLITE headers so Python can call them at runtime
mkdir -p ${OUT_PREFIX}/include ${OUT_PREFIX}/lib/x86_64-linux-gnu
cp /usr/include/sqlite3*.h ${OUT_PREFIX}/include
ln -fs $(realpath /usr/lib/x86_64-linux-gnu/libsqlite3.so) ${OUT_PREFIX}/lib/x86_64-linux-gnu/libsqlite3.so
+5 -11
View File
@@ -16,17 +16,6 @@ python_version=${BASE^} # this gives us only the filename with version number
version_number=$(echo "$python_version" | cut -d- -f2) # this returns just X.X.X version_number=$(echo "$python_version" | cut -d- -f2) # this returns just X.X.X
dep_url=https://python.org/ftp/python/${version_number}/${python_version}.tgz dep_url=https://python.org/ftp/python/${version_number}/${python_version}.tgz
# 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 3..."
echo "Pulling from source: ${dep_url}"
curl -L "${dep_url}" | tar xz -C "${OUT_PREFIX}" curl -L "${dep_url}" | tar xz -C "${OUT_PREFIX}"
mv "${OUT_PREFIX}/${python_version}" src mv "${OUT_PREFIX}/${python_version}" src
cd src cd src
@@ -42,4 +31,9 @@ find "${OUT_PREFIX}" \( -type d -a \( -name test -o -name tests \) \) -exec rm -
# Remove spare / # Remove spare /
LOCATION=${OUT_PREFIX%?} LOCATION=${OUT_PREFIX%?}
# Create links to SQLITE headers so Python can call them at runtime
mkdir -p ${OUT_PREFIX}/include ${OUT_PREFIX}/lib/x86_64-linux-gnu
cp /usr/include/sqlite3*.h ${OUT_PREFIX}/include
ln -fs $(realpath /usr/lib/x86_64-linux-gnu/libsqlite3.so) ${OUT_PREFIX}/lib/x86_64-linux-gnu/libsqlite3.so
ln $LOCATION/bin/python3 $LOCATION/bin/python ln $LOCATION/bin/python3 $LOCATION/bin/python
+1
View File
@@ -0,0 +1 @@
pysqlite
+1
View File
@@ -0,0 +1 @@
python-2.7.16
+1 -1
View File
@@ -1 +1 @@
python-2.7.16 python-2.7.17
+1 -1
View File
@@ -1 +1 @@
python-3.4.9 python-3.4.10
+1 -1
View File
@@ -1 +1 @@
python-3.4.0 python-3.4.9
+1 -1
View File
@@ -1 +1 @@
python-3.5.6 python-3.5.7
+1 -1
View File
@@ -1 +1 @@
python-3.5.3 python-3.5.6
+1
View File
@@ -0,0 +1 @@
requests
+1
View File
@@ -0,0 +1 @@
python-3.8.0
+1
View File
@@ -0,0 +1 @@
flask
+1
View File
@@ -0,0 +1 @@
python-3.8.99
+13
View File
@@ -40,6 +40,19 @@ testPsycopg2() {
assertCapturedSuccess assertCapturedSuccess
} }
testPysqlite() {
compile "pysqlite"
assertCaptured "pysqlite"
assertCapturedSuccess
}
testSqliteInstall() {
compile "pythonDefault"
assertCaptured "Sqlite3 successfully installed."
assertNotCaptured "Sqlite3 failed to install."
assertCapturedSuccess
}
testCffi() { testCffi() {
compile "cffi" compile "cffi"
assertCaptured "cffi" assertCaptured "cffi"
-1
View File
@@ -16,7 +16,6 @@ testSmartRequirements() {
assertFile "requests" ".heroku/python/requirements-declared.txt" assertFile "requests" ".heroku/python/requirements-declared.txt"
assertCapturedSuccess assertCapturedSuccess
compile "psycopg2" "$cache_dir" compile "psycopg2" "$cache_dir"
assertCaptured "Uninstalling requests"
assertFile "psycopg2" ".heroku/python/requirements-declared.txt" assertFile "psycopg2" ".heroku/python/requirements-declared.txt"
assertCapturedSuccess assertCapturedSuccess
} }
+52 -24
View File
@@ -9,6 +9,7 @@ testPythonDefault() {
compile "pythonDefault" compile "pythonDefault"
assertCaptured $DEFAULT_PYTHON_VERSION assertCaptured $DEFAULT_PYTHON_VERSION
assertNotCaptured "security update" assertNotCaptured "security update"
assertCaptured "Installing SQLite3"
assertCapturedSuccess assertCapturedSuccess
} }
@@ -18,6 +19,7 @@ testPython2() {
compile "python2" compile "python2"
assertCaptured $LATEST_27 assertCaptured $LATEST_27
assertNotCaptured "security update" assertNotCaptured "security update"
assertCaptured "Installing SQLite3"
assertCapturedSuccess assertCapturedSuccess
} }
@@ -25,6 +27,7 @@ testPython2_warn() {
compile "python2_warn" compile "python2_warn"
assertCaptured "python-2.7.15" assertCaptured "python-2.7.15"
assertCaptured "security update!" assertCaptured "security update!"
assertCaptured "Installing SQLite3"
assertCapturedSuccess assertCapturedSuccess
} }
@@ -35,23 +38,31 @@ testPython2_fail() {
} }
testPython3_4() { testPython3_4() {
if [[ $STACK != "cedar-14" ]]; then compile "python3_4"
updateVersion "python3_4" $LATEST_34 assertCaptured $LATEST_34
compile "python3_4" assertNotCaptured "security update"
assertCaptured $LATEST_34 # if cedar 14 and legacy binaries, fail. if cedar 14 and staging, succeed.
assertNotCaptured "security update" 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 assertCapturedSuccess
fi fi
} }
testPython3_4_warn() { testPython3_4_warn() {
compile "python3_4_warn" compile "python3_4_warn"
if [[ $STACK = "cedar-14" ]]; then assertCaptured "python-3.4.9"
assertCaptured "python-3.4.0" 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 else
assertCapturedError # all else succeed
assertCapturedSuccess
fi fi
} }
@@ -62,24 +73,18 @@ testPython3_4_fail() {
} }
testPython3_5() { testPython3_5() {
if [[ $STACK != "cedar-14" ]]; then compile "python3_5"
updateVersion "python3_5" $LATEST_35 assertCaptured $LATEST_35
compile "python3_5" assertNotCaptured "security update"
assertCaptured $LATEST_35 assertCaptured "Installing SQLite3"
assertNotCaptured "security update" assertCapturedSuccess
assertCapturedSuccess
fi
} }
testPython3_5_warn() { testPython3_5_warn() {
compile "python3_5_warn" compile "python3_5_warn"
if [[ $STACK = "cedar-14" ]]; then assertCaptured "python-3.5.6"
assertCaptured "python-3.5.3" assertCaptured "security update!"
assertCaptured "security update!" assertCapturedSuccess
assertCapturedError
else
assertCapturedError
fi
} }
testPython3_5_fail() { testPython3_5_fail() {
@@ -93,6 +98,7 @@ testPython3_6() {
compile "python3_6" compile "python3_6"
assertCaptured $LATEST_36 assertCaptured $LATEST_36
assertNotCaptured "security update" assertNotCaptured "security update"
assertCaptured "Installing SQLite3"
assertCapturedSuccess assertCapturedSuccess
} }
@@ -100,6 +106,7 @@ testPython3_6_warn() {
compile "python3_6_warn" compile "python3_6_warn"
assertCaptured "python-3.6.7" assertCaptured "python-3.6.7"
assertCaptured "security update!" assertCaptured "security update!"
assertCaptured "Installing SQLite3"
assertCapturedSuccess assertCapturedSuccess
} }
@@ -117,6 +124,7 @@ testPython3_7() {
else else
assertNotCaptured "security update" assertNotCaptured "security update"
assertCaptured $LATEST_37 assertCaptured $LATEST_37
assertCaptured "Installing SQLite3"
assertCapturedSuccess assertCapturedSuccess
fi fi
} }
@@ -128,6 +136,7 @@ testPython3_7_warn() {
else else
assertCaptured "python-3.7.1" assertCaptured "python-3.7.1"
assertCaptured "security update!" assertCaptured "security update!"
assertCaptured "Installing SQLite3"
assertCapturedSuccess assertCapturedSuccess
fi fi
} }
@@ -138,6 +147,25 @@ testPython3_7_fail() {
assertCapturedError assertCapturedError
} }
testPython3_8() {
updateVersion "python3_8" $LATEST_38
compile "python3_8"
if [[ $STACK = "cedar-14" ]]; then
assertCapturedError
else
assertNotCaptured "security update"
assertCaptured $LATEST_38
assertCaptured "Installing SQLite3"
assertCapturedSuccess
fi
}
testPython3_8_fail() {
compile "python3_8_fail"
assertCaptured "Aborting"
assertCapturedError
}
pushd $(dirname 0) >/dev/null pushd $(dirname 0) >/dev/null
popd >/dev/null popd >/dev/null