Compare commits

...

446 Commits

Author SHA1 Message Date
Ed Morley 122722f89e v170 (#978) 2020-05-19 15:33:30 +01:00
Ed Morley 8cb379f83b Add support for latest CPython and PyPy versions (#977)
Adds support for:
* CPython 2.7.18, 3.5.9, 3.7.7 and 3.8.3
* PyPy 2.7 and 3.6, version 7.3.1

The binaries will need generating and uploading before CI will pass.

Note: Whilst the build script for CPython 3.8.3 did already exist in the
repository, it appears to have been accidentally created in #920, which
predated the existence of that version of Python - so the binaries do
not exist on S3.

The Heroku-18 Docker image tag has also been unpinned, since the new
libssl version is now available at runtime in all environments, so we
don't need to force building against the older version of the headers.

Fixes W-7582174.
2020-05-19 14:16:59 +01:00
Richard Schneeman d3a60b21fe [changelog skip] Fix PR edit check (#974)
Previously when a PR title was edited, the "check for changelog" script would not fire. This means if someone edited it to add a "[changelog skip]" that the check would still show to be failing. This PR adds additional triggers for the check so that when the PR is edited, the check will re-run.
2020-05-12 09:57:33 -05:00
Richard Schneeman 7e80ea8fbe Update heroku hatchet so master can be specified (#970)
- https://github.com/heroku/hatchet/pull/80
- https://github.com/heroku/heroku-buildpack-python/pull/969#issuecomment-620057594
2020-04-27 15:55:16 -05:00
Joe Kutner c78ffd5ac4 Prevent Hatchet on forked PRs [changelog skip] (#966)
* Update travis conditional for hatchet to check for HEROKU_API_ env vars
[changelog skip]

* remove check to skip hatchet in travis in favor of better travis config
2020-04-27 09:15:38 -05:00
Richard Schneeman a06b536109 Add Hatchet Regression Tests (#969)
I went through all the tests in the Ruby buildpack and cataloged what I think can be generalized between languages to prevent regressions. This PR add tests for these cases:

* Test CI deploys run tests and use the cache [[reference test](https://github.com/heroku/heroku-buildpack-ruby/blob/f488bd53c7ff0b78e17c2405166cbd4a3af75ee2/spec/hatchet/ci_spec.rb#L36)]
* Test cache for regular deploys is used on repeated deploys (This was already tested on the Python buildpack, I moved it) [[reference test](https://github.com/heroku/heroku-buildpack-ruby/blob/e34c583c139911d059f5627bb25125707288f053/spec/hatchet/stack_spec.rb#L21-L25)]
    * Test modifying a requirement clears the cache appropriately (This was already tested on the Python buildpack, I moved it)
* Test deploying the getting started guide works [[reference test](https://github.com/heroku/heroku-buildpack-ruby/blob/424a7245e2da86845a20d58a9482bcf2a00c3a8f/spec/hatchet/getting_started_spec.rb#L5)]
* Test that all paths set by the buildpack are absolute instead of relative [[reference test](https://github.com/heroku/heroku-buildpack-ruby/blob/249d3c1a4e97068f8fd016f10fa0839709d95658/spec/hatchet/rails5_spec.rb#L68])
* Test upgrading stack invalidates the cache [[reference test](https://github.com/heroku/heroku-buildpack-ruby/blob/f488bd53c7ff0b78e17c2405166cbd4a3af75ee2/spec/hatchet/stack_spec.rb#L3)]
* Test that builds fail when a bad version is specified [[reference test](https://github.com/heroku/heroku-buildpack-ruby/blob/249d3c1a4e97068f8fd016f10fa0839709d95658/spec/hatchet/ruby_spec.rb#L5)]


In addition to that I've also got a CNB test with `pack-build` with the getting started app, but since python isn't `cnb` capable yet I didn't add one.
2020-04-27 08:26:42 -05:00
Ed Morley dd646998d3 Fix changelog after rebase (#967)
The merge of #910 added three lines to the changelog rather than just one:
https://github.com/heroku/heroku-buildpack-python/commit/932cd257c98e9f56e878134f84a09d7d972bc46e

The original commit before rebase, was:
https://github.com/heroku/heroku-buildpack-python/pull/910/commits/d57d26b2e0348199228312950e55b42bc9de8147

I've also clarified the wording of it and the other unreleased change,
to reduce the chance for confusion as to what's changed, when customers
debug issues.
2020-04-24 10:32:38 +01:00
Ed Morley 484bd44a1e Remove unused libffi build script (#965)
The compile-time cryptography step that used to use the libffi archives
on S3 was removed in 2018:
https://github.com/heroku/heroku-buildpack-python/commit/c373e80c1285260e5adcbc855f54bbeb6999005c

...since the `cryptography` Python package now ships wheels.

The script is also incorrect, since similar to #964 it only skips builds
for Heroku-16, whereas all stacks since Cedar-14 include libffi-dev in
the build image, so don't need it built/uploaded for later vendoring.

Refs W-7485877.
2020-04-24 09:26:03 +01:00
Thomas Mollard 932cd257c9 fix runtime.txt generation when using pipenv (#910)
Co-authored-by: Casey <caseylfaist@gmail.com>
Co-authored-by: Joe Kutner <jpkutner@gmail.com>
2020-04-23 21:30:04 -05:00
Ed Morley 989351467f Prevent building libmemcached on stacks that don't vendor it (#964)
The `libmemcached` package is available in the base stack image for all
stacks newer than `cedar-14`, so at buildpack compile time the vendor
step is skipped for those stacks:
https://github.com/heroku/heroku-buildpack-python/blob/106f2997fa124852a2a35ee8bfa604ad20c47988/bin/steps/pylibmc#L12-L15

As such, it is not necessary to run the libmemcached bob-builder formula
on newer stacks. The conditional has been updated so it correctly handles
heroku-18 and also the upcoming heroku-20.

An exit code of 1 has been used, otherwise `bob upload` will build and
then upload a zero byte archive to S3, which will go unused.

(This is in comparison to bob formulas that are nested, where an exit
code of 0 is actually desirable, since it allows skipping steps.)

Refs W-7485877.

Co-authored-by: Joe Kutner <jpkutner@gmail.com>
2020-04-23 21:23:38 -05:00
Ed Morley d68a7c594c Remove unused Pipfile and Pipfile.lock (#960)
These aren't referenced anywhere in the repository, and contain older
versions of the dependencies than are declared in `requirements.txt`
(which itself is used).

Co-authored-by: Joe Kutner <jpkutner@gmail.com>
2020-04-23 20:40:35 -05:00
Joe Kutner 97f783ce96 Update travis config [changelog skip] (#963)
* Update travis config to only setup hatchet when running hatchet [changelog skip]

Fix a bug in the hatchet tests, and allow previous builds to finish before running the next test

* Add logging when skipping hatchet tests

Only skip hatchet tests on a forked PR

* Build on Travis only for master branch

* Upgrade from trusty to bionic on Travis
2020-04-23 19:55:05 -05:00
Joe Kutner 106f2997fa Add support for Python 3.8 latest version (#955)
* Add support for Python 3.8 latest version

If the pip lock file only specifies `3.8` and no bug fix version, it should use Python LATEST_38.

* Update CHANGELOG.md

* Update changelog

Co-authored-by: Johannes Hoppe <info@johanneshoppe.com>
Co-authored-by: Casey <caseylfaist@gmail.com>
2020-04-23 08:11:53 -05:00
Joe Kutner 373a656272 Update changelog for version 169 (#957) 2020-04-22 16:32:08 -05:00
Joe Kutner 0abc749aff Add a Hatchet test for python 3.8.2 (#956)
* Add a Hatchet test for python 3.8.2

* update changelog

* Update test to match build output

* Fix formatting and a syntax error in tests

* Fix syntax error in hatchet spec
2020-04-22 10:38:16 -05:00
Joe Kutner 60614232da Set Codeowners to languages (#953)
* Set languages as codeowners

* Update changelog
2020-04-21 17:39:56 -05:00
Joe Kutner edb7004a28 Update hatchet tests to support latest version of Python (#952)
* Update hatchet tests to support latest version of Python

* Empty commit to trigger CI
2020-04-21 16:42:56 -05:00
Casey ea350a6694 Bugfix: Caching on subsequent redeploys (#948)
* Don't clear the cache on first app deploy

* Add output for debugging cache behavior

* Debug output of changes, clean up whitespace

* Update hatchet to use latest getting started guide

* Clean up caching output logs

This output was confusing and unhelptul to most users

* Changelog

* Test if we need these lines

* dang fi

* Remove unnecessary code

* Remove confusing output of change

* Update log output

* Update test to match new expected log output

* Update changelog
2020-04-21 15:41:57 -05:00
Casey 027d49eb58 Merge pull request #946 from heroku/releaseprep/168
Release prep: changelog update
2020-04-06 15:22:48 -04:00
Casey 49597f22ca Merge branch 'master' into releaseprep/168 2020-04-06 15:03:32 -04:00
Casey Faist 4bb8f59f2c Prep release changelog update 2020-04-06 13:58:51 -04:00
Casey d4b6b0190d Merge pull request #930 from heroku/kgrinberg/master
Fix old Django version detection
2020-04-06 13:47:51 -04:00
Casey 2c2cbc4653 Merge branch 'master' into kgrinberg/master 2020-04-06 13:23:29 -04:00
Casey d0629cd6ef Merge pull request #895 from heroku/geos-deprecation
Geos deprecation
2020-04-06 13:19:31 -04:00
Casey 398a0fb202 Merge branch 'master' into kgrinberg/master 2020-04-02 15:48:21 -04:00
Casey 5bf80a2270 Merge branch 'master' into geos-deprecation 2020-04-02 15:47:01 -04:00
Casey 61609930c1 Merge pull request #945 from heroku/changelog/bump
More recent changelog update
2020-04-02 15:45:56 -04:00
Casey Faist 0fa27b7b0d More recent changelog update 2020-04-02 13:22:55 -04:00
Casey cc247753e5 Merge branch 'master' into kgrinberg/master 2020-04-02 12:55:25 -04:00
Casey 4da1ca71b5 Merge pull request #940 from heroku/barbeque/patch-1
Barbeque/patch 1
2020-04-02 12:54:34 -04:00
Casey 3d70b2e9ff Merge branch 'master' into barbeque/patch-1 2020-04-02 12:10:22 -04:00
Casey 87e9fb2ccc Merge pull request #944 from heroku/buildlog/fix-cache-output
Remove confusing diff output for cache check
2020-04-02 12:08:49 -04:00
Casey Faist 0d61f83269 Update changelog 2020-04-02 12:08:11 -04:00
Casey Faist e12ad47397 Add missing dev/null for diff output 2020-04-02 11:01:44 -04:00
Casey 307cb13159 Merge branch 'master' into geos-deprecation 2020-03-30 10:08:56 -04:00
Casey 156da405e0 Merge branch 'master' into barbeque/patch-1 2020-03-27 14:55:50 -04:00
Casey ea90db6d13 Add Buildpack-Maintainers as code owners (#938) 2020-03-27 14:47:52 -04:00
Casey Faist 56f7ccc511 Changelog update 2020-03-27 12:50:45 -04:00
Casey a2c72f77f9 Merge branch 'master' into patch-1 2020-03-27 12:49:08 -04:00
Casey 93a5144033 Merge branch 'master' into kgrinberg/master 2020-03-26 19:10:52 -04:00
Casey ac76968c90 Merge branch 'master' into geos-deprecation 2020-03-26 18:44:45 -04:00
Casey 446410f883 Merge pull request #925 from heroku/reproduce/cache-busting
Fix cache clear on redeploy
2020-03-26 18:25:17 -04:00
Casey Faist abd9ffdbff Missed bash linting check 2020-03-26 17:46:54 -04:00
Casey Faist 408a081a08 Remove faulty test, use Hatchet instead 2020-03-26 16:48:37 -04:00
Casey Faist 01b0c1b0db no longer reference unused build var on travis 2020-03-26 12:40:53 -04:00
Casey Faist 2e5fe9f286 Clean up white space 2020-03-26 11:35:26 -04:00
Casey Faist 6b9ffb92d9 Don't update to use pip cache, yet
Also fix whitespace
2020-03-26 11:34:32 -04:00
Casey Faist bf1563eaa0 clean up commented code 2020-03-26 11:32:18 -04:00
Casey Faist dcb04b96c3 clean up todos and commented code 2020-03-26 11:26:03 -04:00
Casey Faist ab79d077da gitignore the scratch shunit test 2020-03-26 11:24:42 -04:00
mike 2b3a90ec0c PR feedback 2020-03-25 20:20:27 -06:00
Casey Faist 48a368ac71 Add test for expected behavior 2020-03-24 14:48:17 -04:00
Casey Faist 3d31167511 Clear test out of helper test stub 2020-03-24 13:43:18 -04:00
Casey Faist 0c2b954a6d Update Changelog 2020-03-24 13:43:18 -04:00
Casey Faist b65f0cfce3 Add Readme to document install steps 2020-03-24 13:43:18 -04:00
Casey Faist a1ef075b53 Add Hatchet test 2020-03-24 13:43:18 -04:00
Casey Faist dee86babe1 Don't skip install if clearing cache 2020-03-24 13:43:18 -04:00
Casey Faist 6a02499140 Update caching logic so new apps don't get logs
actually add changes

Missing fi
2020-03-24 13:43:18 -04:00
Casey Faist b8fd617d9c Bash conditional operaters needed for brackets
Removing brackets also works

Wrong diff check - inverted

Remove uninstall step

Whitespace is hard
2020-03-24 13:43:18 -04:00
Casey Faist f7c422e07d test clear cache and cache requirements.txt 2020-03-24 13:43:18 -04:00
Casey Faist cc6a03aa54 Test result of using pip cache on Heroku 2020-03-24 13:43:18 -04:00
Casey Faist 56ecd1aef7 add quick test case 2020-03-24 13:43:18 -04:00
Casey 4d2e74b411 Merge branch 'master' into patch-1 2020-03-18 10:39:50 -04:00
Casey d8b37dcaf8 Merge branch 'master' into geos-deprecation 2020-03-18 10:29:39 -04:00
Casey Faist a98a87e1bc Remove the lines that bust the cache when we detect that sqlite has changed 2020-03-12 14:20:49 -07:00
Casey Faist 8c9521d806 Create failcase for deploying the same code twice 2020-03-12 13:47:29 -07:00
Kevin Grinberg 312b9ca6de Fix old Django version detection 2020-03-09 11:43:59 -04:00
Casey a9e5c60106 Merge pull request #922 from heroku/django/warn
Warn about EOL for Django release
2020-03-05 12:33:32 -08:00
Casey Faist 1df55a6c3c and add a changelog 2020-03-04 16:03:10 -08:00
Casey Faist a51e4f8660 warn about EOL for Django release 2020-03-04 15:58:27 -08:00
Casey 46281960c7 Merge pull request #911 from heroku/https-instead-of-ftp
Use GitHub HTTPS instead of sourceware FTP
2020-03-03 15:04:28 -07:00
Casey Faist a19d4950a9 changelog update and typo fix 2020-03-03 12:31:58 -08:00
Casey 753134a2fa Merge branch 'master' into https-instead-of-ftp 2020-03-03 13:26:03 -07:00
Casey 998a15395b Merge pull request #920 from heroku/python/382
Build and release Python 3.8.2
2020-02-27 17:56:29 -05:00
Casey Faist e68f556e63 Build and release Python 3.8.2 2020-02-27 15:26:33 -07:00
Casey ef333c516b Merge pull request #919 from heroku/upgrade-to-pip-20
Upgrade to pip 20
2020-02-19 15:10:26 -05:00
Casey Faist 552f0f77d5 Changelog! 2020-02-19 13:59:25 -05:00
Casey Faist 583b9cfd95 Merge branch 'master' into upgrade-to-pip-19 2020-02-19 12:08:12 -05:00
Casey c182bacdf2 Merge pull request #918 from heroku/hatchet/update-default-python-check
Bump to match the default version
2020-02-19 11:22:58 -05:00
Casey Faist ca9b6de50f Update changelog to pass check 2020-02-19 09:37:41 -05:00
Casey Faist 5910581665 Bump to match the default version 2020-02-19 09:26:29 -05:00
Casey c1f6862110 Merge pull request #917 from heroku/get-pip-tmpdir
Download get-pip.py to tmpdir instead of root dir
2020-02-19 09:24:06 -05:00
Joe Kutner 520c240edd Download get-pip.py to tmpdir instead of root dir 2020-02-16 09:27:07 -06:00
Casey Faist 61341d17b8 Update to newly released 20.0.2 2020-02-12 14:45:51 -05:00
Casey Faist acfc7240f8 Merge branch 'master' into upgrade-to-pip-19 2020-02-11 11:47:21 -05:00
Casey e32aaf9d00 Merge pull request #912 from heroku/python-version-updates
Python version updates
2019-12-23 13:39:10 -05:00
Casey Faist ec57979bf8 comply with shellcheck, use -gt instead 2019-12-23 13:14:06 -05:00
Casey Faist 0057d19082 Typo in bash if-else block 2019-12-23 12:28:31 -05:00
Casey Faist 0419921227 bash is not python, so use bash block closers 2019-12-23 10:56:14 -05:00
Casey Faist 7d743e7998 Don't test for pypy on cedar 14 2019-12-23 09:57:07 -05:00
Casey Faist 2942fc8e4a Correct Changelog 2019-12-23 01:28:06 -05:00
Casey Faist 0e1ac6217b correct test expectations 2019-12-23 01:22:30 -05:00
Casey Faist 848c846a3d Add tests for beta Pypy support 2019-12-23 00:17:22 -05:00
Casey Faist 179f345f5b add beta Pypy support 2019-12-23 00:16:20 -05:00
Casey Faist 6fc11b8370 add up-to-date Pypy runtimes 2019-12-23 00:15:44 -05:00
Casey Faist f189df5415 Warn about EOL on Python 2 install 2019-12-23 00:13:54 -05:00
Casey Faist 8253ffa354 Default version updates 2019-12-23 00:10:39 -05:00
Casey Faist 514c494891 Add new Python runtimes 2019-12-23 00:08:04 -05:00
Casey Faist 9a9e972db0 Changelog update 2019-12-23 00:06:28 -05:00
Camille Baldock 9ff9466fd5 Use GitHub HTTPS instead of sourceware FTP 2019-12-20 12:21:52 -08:00
Casey 1750242ccd Merge pull request #908 from heroku/changelog/162
Update changelog post-release
2019-12-06 12:38:00 -05:00
Casey Faist 50460beb95 Update changelog 2019-12-06 10:13:45 -05:00
Casey 4e8831a3a3 Merge branch 'master' into geos-deprecation 2019-12-06 10:11:47 -05:00
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
Mike c402d37451 Update README python versions to match docs 2019-12-02 10:06:54 -07:00
Claudio Jolowicz 8eb2954e92 Pin to pip 9.0.2 for pipenv users only
This addresses an issue raised by @CaseyFeist during code review:

  Updating pip for pipenv users or requiring them to update without a
  heads up won't be a good experience (our version is old enough that
  they'll need to uninstall and reinstall pipenv locally to successfully
  update). If you can refactor this to stay pinned to current version for
  pipenv users only, I should be able to accept this (and the related
  project updates).

  https://github.com/heroku/heroku-buildpack-python/pull/833#issuecomment-537758441
2019-11-24 15:43:13 +01:00
Claudio Jolowicz 468d27ab98 Adapt pip-pop to changes in pip >= 10
The pip-diff and pip-grep tools from the vendorized `pip-pop` package
import internal modules from pip. In pip >= 10, internal modules were
moved under `pip._internal`, breaking the imports. Use `try...except
ImportError` to handle both import paths.

Also, the interface of the `PackageFinder` class from one of these
modules changed. Provide a wrapper function to allow creating objects of
this type using the old interface.
2019-11-24 15:43:13 +01:00
Claudio Jolowicz 515a222cc4 Upgrade to pip 19.1.1 for Python 3.4 projects
Python 3.4 support was dropped in pip >= 19.2. For projects still on
this Python version, use pip 19.1.1 instead of pip 19.2.1.
2019-11-24 15:43:13 +01:00
Claudio Jolowicz 53c4674ecd Upgrade to pip 19.2.3
Bump PIP_UPDATE from 9.0.2 to 19.2.3. This variable is used in bin/steps/python
to determine which pip version to install or upgrade to.
2019-11-24 15:43:13 +01: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 563a9c9187 Merge branch 'master' into geos-deprecation 2019-10-24 12:06:08 -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 b1e3256128 Merge branch 'master' into geos-deprecation 2019-10-23 14:24:04 -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 ac93a57492 Merge branch 'master' into geos-deprecation 2019-10-23 11:42:41 -07:00
Casey Faist 5828fbfe7d check for whole deprecation message 2019-10-23 11:42:01 -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 b7d8aa4d7d update changelog 2019-10-22 12:59:18 -07:00
Kevin Brolly a6510f0f77 Added a deprecation warning when using BUILD_WITH_GEO_LIBRARIES or installing pygdal 2019-10-22 12:38:43 -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
Casey ff42f318a0 Merge pull request #848 from heroku/cleanup-output
download get-pip silently
2019-09-12 16:17:11 -07:00
Casey 09b5fe4881 Merge branch 'master' into cleanup-output 2019-09-12 15:36:12 -07:00
Casey 7a431ee717 Merge pull request #847 from heroku/codeinteger-6-readme
Update README.md
2019-09-12 15:12:30 -07:00
Casey Faist a80f2be020 download get-pip silently 2019-09-12 14:31:09 -07:00
Casey 15289a94f1 Merge branch 'master' into codeinteger-6-readme 2019-09-12 14:28:16 -07:00
Casey a013e54769 Merge pull request #846 from heroku/patch-1
Patch 1 from PiDelport
2019-09-12 14:28:06 -07:00
codeinteger6 bf8f9419ec Update README.md 2019-09-12 13:39:50 -07:00
Casey 3346bbc324 Merge branch 'master' into patch-1 2019-09-12 13:31:09 -07:00
Casey ebfe4946df Merge pull request #844 from heroku/post-release-changelog
New Release: Changelog update
2019-09-12 11:25:52 -07:00
Casey Faist 0bfd1bd51f Merge branch 'patch-1' of https://github.com/PiDelport/heroku-buildpack-python into patch-1 2019-09-12 11:18:01 -07:00
Pi Delport b1b3ab1c92 (Typo: requriements -> requirements) 2019-09-12 11:13:03 -07:00
Casey dfb8185a63 Merge branch 'master' into patch-1 2019-09-12 11:13:03 -07:00
Casey Faist 1c5e876e3d post release changelog update 2019-09-12 10:06:59 -07:00
Casey 149c046f5f Merge pull request #843 from heroku/hatchet/test-updates
Hatchet/test updates
2019-09-12 09:32:29 -07:00
Casey Faist fc4cbf272a steal Ruby's Master heading for pre-release changelog documentation 2019-09-12 08:54:16 -07:00
Casey Faist 61ead23f7f bump hatchet default python 2019-09-12 08:44:10 -07:00
Casey Faist f3738a0e70 update changelog 2019-09-12 08:43:35 -07:00
Casey 1e92f31436 Merge pull request #841 from heroku/v-156
Release the snakes! (Python 3.7.4 and 3.6.9)
2019-09-11 19:07:54 -07:00
Casey Faist c969fa0d36 update default pythons 2019-09-11 17:39:38 -07:00
Casey Faist 1851bbf285 update changelog 2019-09-11 17:39:38 -07:00
Casey a41fd78f72 Merge pull request #840 from heroku/remove-get-pip
Move get-pip utility to s3
2019-09-11 17:33:45 -07:00
Casey Faist 56322381f0 Revert "update get-pip to look for sha"
This reverts commit a2f3ff7a35.
2019-09-11 16:59:20 -07:00
Casey Faist dc878449ee Revert "update default_pythons to include sha version"
This reverts commit 204a6215b2.
2019-09-11 16:59:11 -07:00
Casey Faist 204a6215b2 update default_pythons to include sha version 2019-09-11 16:37:26 -07:00
Casey Faist a2f3ff7a35 update get-pip to look for sha 2019-09-11 16:36:48 -07:00
Casey Faist c3328f57dd correct cedar-14 ref in Makefile 2019-09-11 14:04:35 -07:00
Casey Faist 5df70ce26c remove get-pip from repo 2019-09-11 13:37:18 -07:00
Casey Faist 44fe0fe3fd move get-pip to s3 2019-09-11 13:37:18 -07:00
Casey b8d1035231 Merge pull request #799 from heroku/build-cleanup
Build cleanup
2019-09-11 13:34:56 -07:00
Casey Faist 006ea77641 address issues found in review 2019-09-11 11:57:31 -07:00
Casey Faist a239fde78c clarify naming for travis docker tags and correct typo 2019-09-10 18:50:50 -07:00
Casey Faist 783c2e2329 ensure and add comments to base python formulas 2019-09-10 18:35:54 -07:00
Casey Faist 06694bba18 simplify pr for review, pull out staged binaries tooling 2019-09-10 18:29:04 -07:00
Casey Faist 158a3e28a8 update travis to match dockerfile locations 2019-09-10 18:26:14 -07:00
Casey Faist 9031333ef4 change travis to bionic 2019-09-10 18:20:25 -07:00
Casey Faist b6e2739fb5 add Cedar 14 environment back for tests and binaries 2019-09-10 18:20:25 -07:00
Casey Faist a8da6e4ed5 add cedar-14 back in after clarification on support policy
Heroku will continue to build binaries as long as stacks receive updates,
even after EOL
2019-09-10 18:20:25 -07:00
Casey Faist 707ed848bb fix typo in compile 2019-09-10 18:20:25 -07:00
Casey Faist 385296c270 Add support for testing binaries in staging/ on S3
This will allow for faster and more transparent deploys for Python and
other built dependencies.
2019-09-10 18:20:25 -07:00
Casey Faist 12279e69d5 Clean up comments from python3 2019-09-10 18:20:25 -07:00
Casey Faist b5fa65d96c update Makefile to match new directory structure 2019-09-10 18:20:25 -07:00
Casey Faist a724dfc62e Add new formula for python3 and latest 3.6 and 3.7 patches 2019-09-10 18:20:25 -07:00
Casey Faist aecdeddc32 clean up rebase 2019-09-10 18:20:25 -07:00
Casey Faist f3af6aa4a2 add python3 formula 2019-09-10 18:20:25 -07:00
Casey Faist 6bc4d42774 first try for python-3.6.9 2019-09-10 18:20:25 -07:00
Casey Faist e1d0fcae0e remove Cedar from binary docs 2019-09-10 18:20:25 -07:00
David Zuelke 8f1b24f64e expose $STACK env to each image so it can be used in formulae 2019-09-10 18:20:25 -07:00
David Zuelke 97e3366409 move Dockerfiles to central location, add all stacks, update README 2019-09-10 18:20:25 -07:00
David Zuelke 4f8bb77b13 expose $STACK env to each image so it can be used in formulae 2019-09-10 18:20:25 -07:00
David Zuelke a771b7bf94 move Dockerfiles to central location, add all stacks, update README 2019-09-10 18:20:25 -07:00
David Zuelke b52fac4d32 reuse logic in runtimes/pypy3 formulae 2019-09-10 18:20:25 -07:00
David Zuelke e28c1012b7 reuse logic in runtimes/pypy formulae 2019-09-10 18:20:25 -07:00
Casey 05b7ceb82c Merge pull request #839 from heroku/test-breakout
Test breakout
2019-09-10 18:19:12 -07:00
Casey Faist a379779d43 add missing --tag option 2019-09-10 17:52:54 -07:00
Casey Faist de1696bb02 split out build and run script steps 2019-09-10 17:33:44 -07:00
Casey Faist 77b012dd6f add tags to docker scripts to pass images to test run cases 2019-09-10 17:22:53 -07:00
Casey Faist 3d65278d61 add multiple script steps to trigger matrix across docker files 2019-09-10 17:13:41 -07:00
Casey Faist 59544ee799 use keyword dockerfile to trigger matrix 2019-09-10 17:05:07 -07:00
Casey Faist 34a631021c update test runs to matrix 2019-09-10 16:36:13 -07:00
Casey Faist 6a4ab8646a add ci nodes to test run 2019-09-10 16:04:11 -07:00
Casey Faist 7d8ea3d266 add stack value back in 2019-09-10 15:32:59 -07:00
Casey Faist 0161b80a2b correct hatchet setup 2019-09-10 15:15:29 -07:00
Casey Faist 7eac72199e parallel test runs per stack 2019-09-10 15:09:43 -07:00
Casey Faist df779aaa9a reorganize tests to stage per stack 2019-09-10 14:56:08 -07:00
Casey Faist bbdbebbc87 shell command only needed when using make, remove 2019-09-10 13:50:09 -07:00
Casey Faist 32cf8a8681 fix dockerfile location typo 2019-09-10 13:44:22 -07:00
Casey Faist 1479ab375e ensure tabs are spaces 2019-09-10 13:33:55 -07:00
Casey Faist 8366d66f54 add pre-commit-hook for travis file 2019-09-10 12:16:11 -07:00
Casey Faist b156f237a2 breakout jobs 2019-09-10 12:08:31 -07:00
Casey Faist 0ffbf60882 split out tests to avoid timeouts 2019-09-10 11:53:33 -07:00
Casey c458743a2a Merge pull request #836 from heroku/pin-docker18
pin package versions for python-pip to bionic-security
2019-08-28 17:15:16 -07:00
Casey Faist 0ff53eb59b pin package versions for python-pip to bionic-security
so that we do not get an update of libssl to 1.1.1, since the stack is still on 1.1.0
2019-08-28 15:15:17 -07:00
Casey 96ffc147d4 Merge pull request #831 from heroku/remove-cedar-tests
Remove cedar tests
2019-08-21 16:20:22 -07:00
Casey Faist 4063e9d22e remove cedar 14 make test command, as cedar is deprecated 2019-08-21 15:45:18 -07:00
Casey Faist 751413168b remove cedar 14 travis tests 2019-08-21 15:44:46 -07:00
Casey 527ea604c8 Merge pull request #829 from josegonzalez/heroku-18-build
feat: add docs and make target for heroku-18 bob builds
2019-08-21 15:41:30 -07:00
Jose Diaz-Gonzalez 302c2f0432 feat: add docs and make target for heroku-18 bob builds 2019-08-15 17:36:40 -04:00
David Zülke 14c7e26f7a Merge pull request #827 from heroku/fix-python-3-5-7
Fix Python 3.5.7
2019-07-17 21:55:48 +02:00
David Zuelke 58e664a9e3 avoid service restart prompt during Dockerfile builds
https://unix.stackexchange.com/questions/146283/how-to-prevent-prompt-that-ask-to-restart-services-when-installing-libpq-dev
2019-07-17 02:22:10 +02:00
David Zuelke e965516197 fix python 3.5.7 formula actually building 3.7.2 2019-07-17 01:55:46 +02:00
David Zuelke 8775cb821c CHANGELOG for v153 2019-07-17 01:43:54 +02:00
Casey 9dcabe24a5 Merge pull request #826 from heroku/hotfix-sqlite3-heroku-16
HOTFIX heroku-16 builds with sqlite3
2019-06-21 10:43:28 -07:00
David Zuelke 38f9a41a54 HOTFIX heroku-16 builds with sqlite3
upstream version has changed to 3.11.0-1ubuntu1.2, but local package version is still on 3.11.0-1ubuntu1.1, so the download fails otherwise
2019-06-21 19:17:22 +02:00
Pi Delport 3880b1affa (Typo: requriements -> requirements) 2019-06-06 21:53:26 +02:00
Casey 53e33bdf91 Merge pull request #814 from heroku/v-152
Python 3.7.3 release
2019-04-04 15:41:29 -07:00
Casey Faist 5337dd592b remove test case for deprecated pythons on deprecated stack 2019-04-04 14:04:10 -07:00
Casey Faist de8ae808d9 changelog date corrected 2019-04-04 13:26:55 -07:00
Casey Faist 2a7e85be85 update CHANGELOG 2019-04-03 15:32:26 -07:00
Casey Faist 7654d13f8b fix test blindspot 2019-04-03 15:28:35 -07:00
Casey Faist 9d3639685a add new python and update default 2019-04-03 09:12:44 -07:00
Casey 76bb572a4d Release prep 151 (#813)
* new runtimes

* update default latest
2019-03-21 10:54:12 -07:00
Casey 8db4a79392 changelog 150 update (#810) 2019-03-14 11:40:14 -07:00
Casey 21430070ad Python release prep (#809)
* new recipe for new runtime

* add new runtime formula

* add test updates for new runtime release

* wrangle tests into submission

* update tests to use default_pythons

* delete commented code
2019-03-13 12:25:03 -07:00
Casey 20bbb3f54d changelog update for v149 (#806) 2019-03-11 11:51:07 -07:00
Casey bebc0cf439 Python 2.7.16 (#808)
* new recipe for new runtime

* add new runtime formula

* wrangle tests into submission
2019-03-11 13:22:29 -04:00
David Zülke c361c2ffc4 HOTFIX for cedar-14 python builds (#805) 2019-03-04 14:46:33 -08:00
Casey 13d2a58add update changelog (#803) 2019-02-21 15:24:08 -08:00
Casey 49e9147439 track usage of older feature steps (#802)
* track usage of older feature steps

* remove typo whitespace

* make buildvars consistently cased
2019-02-21 14:06:20 -08:00
Casey 3c0146c0b9 Merge pull request #797 from heroku/v-147
V 147
2019-02-12 13:01:43 -06:00
Casey Faist 53c7d61291 correct date mixup + update changelog 2019-02-07 12:35:25 -05:00
Casey Faist 797652a75d new runtimes and travis test updates 2019-01-31 14:46:42 -05:00
Casey Faist d7351513c7 changelog and test update 2018-12-12 17:26:28 -05:00
Casey fe029af603 Merge pull request #785 from heroku/update-readme
Update readme
2018-12-12 10:20:01 -05:00
Casey dd8fe58de1 Merge pull request #784 from heroku/update-changelog
update changelog
2018-12-12 10:19:24 -05:00
Casey Faist a979d57a20 update readme 2018-11-15 17:41:01 -06:00
Casey Faist 3cb8db7e2e update release date 2018-11-15 17:31:29 -06:00
Casey Faist 16cce92342 update changelog 2018-11-15 16:59:51 -06:00
Casey b85fe3614c Merge pull request #783 from heroku/document-tests
Document tests
2018-11-15 12:41:15 -06:00
Hunter Loftis b024e644d1 Merge branch 'master' of github.com:heroku/heroku-buildpack-python into document-tests 2018-11-15 12:45:28 -05:00
Casey 41e0f64252 Merge pull request #782 from heroku/next-release
Test updates
2018-11-15 11:06:27 -06:00
Hunter Loftis 3a0d4c18bf add heroku-18 to test targets and document running tests 2018-11-15 11:57:44 -05:00
Casey Faist b3988a565a remove template runtimes to cut down on scope creep 2018-11-15 10:39:19 -06:00
Casey Faist 0437a6e84f update latest python 2 in pipenv-version step 2018-11-15 09:37:43 -06:00
Casey Faist 88a5ba5d39 add test for 2.7 pipenv install 2018-11-15 09:09:51 -06:00
Casey Faist 3434972e32 update hatchet expected version 2018-11-15 08:57:57 -06:00
Casey Faist 1dfef44085 update default in pipenv test 2018-11-14 17:36:59 -06:00
Casey Faist 2ffb10da34 update latest vars in compile 2018-11-14 16:57:02 -06:00
Casey Faist 23999846ad update 3.7 tests typo 2018-11-14 16:41:38 -06:00
Casey Faist 8d1ebf7288 bump default 3.6 version 2018-11-14 16:24:46 -06:00
Casey Faist f2165aaac6 update test fixtures for new python runtimes 2018-11-13 16:11:14 -06:00
Casey Faist 05492e132a add next runtimes 2018-11-13 15:34:07 -06:00
Casey 62eaae35a4 Merge pull request #781 from heroku/update-hatchet-setup
Update to reflect Hatchet updates
2018-11-13 14:36:24 -06:00
Duane Hutchins 2f32c5418d Updated HATCHET_BUILDPACK_BASE to use TRAVIS_REPO_SLUG 2018-11-13 13:58:23 -06:00
Casey Faist 12e3a7f3e7 add HATCHET_DEPLOY_STRATEGY env var 2018-11-13 13:48:38 -06:00
Casey Faist e7da63f722 update to newer hatchet integration 2018-11-13 13:05:31 -06:00
Casey a6452a1ce4 Merge pull request #772 from heroku/v-145
V 145
2018-11-12 18:49:06 -06:00
Casey Faist 0b554f660f update tests for missed stack issues 2018-11-12 17:27:07 -06:00
Casey Faist 7b9e82175e add warning detection and per-stack checks 2018-11-12 17:10:30 -06:00
Casey Faist 73d37cbac6 update changelog 2018-11-11 17:52:16 -06:00
Casey Faist 9e1df4bbb5 specify python 2.7 2018-11-11 17:24:42 -06:00
Casey Faist 0be9d48013 add missing vars for python step 2018-11-11 16:51:29 -06:00
Casey Faist 4750639a0d add python 3.4 detection 2018-11-11 16:38:12 -06:00
Casey Faist 3de5b43447 add bash pre-commit hook and correct shellcheck warnings 2018-11-11 16:36:16 -06:00
Casey Faist c3845fff9a use text variable as variable in puts-warn 2018-11-11 15:43:21 -06:00
Casey Faist f3ef152624 update tests to pass, add 3.4 2018-11-11 15:34:49 -06:00
Jose Diaz-Gonzalez ef1f7f6924 fix: drop broken version check
Due to how the version checks work - via sorting, not actual comparison - this previously resulted in _always_ installing sqlite3, even though it was already bundled for lower versions of python. The second version check also encompasses 3.7.0+, so there is no need to respecify the check.
2018-11-08 16:14:05 -06:00
Casey Faist 25818765ee update changelog 2018-11-08 15:54:45 -06:00
Casey Faist 0a169e76a4 fix extra slash in python install location 2018-11-08 13:54:44 -06:00
Casey Faist 2f430abf07 adjust sqlcheck 2018-11-08 13:54:44 -06:00
Casey Faist 07241cd751 add tests for new runtimes 2018-11-08 13:54:44 -06:00
Casey Faist ae4713efd8 add new runtimes and test repos 2018-11-08 13:54:44 -06:00
Casey 402cd8253e Merge pull request #777 from heroku/use-heroku-bob
update bob dependency to point to internal bob-builder fork
2018-11-08 13:54:03 -06:00
Casey aa593f127b delete tester runtime.txt
Added this for local testing because bob requires 2.7, should not be merged to master
2018-11-08 10:23:23 -06:00
Casey Faist 67badb1829 use released bob package 2018-11-08 09:23:05 -06:00
Casey Faist defa85c355 delete me later 2018-11-07 11:18:26 -06:00
Casey Faist ec364be161 remove comment 2018-11-06 17:47:38 -06:00
Casey Faist 7b4d6b5587 update bob dependency to point to internal bob-builder fork 2018-11-06 17:41:10 -06:00
Casey e094c5469d Merge pull request #769 from heroku/pip-pipenv-pin
Pin pip version used by pipenv
2018-10-11 14:50:52 -05:00
Casey Faist a7a5971372 changelog update 2018-10-10 09:23:54 -05:00
Casey Faist 45b78ab587 pin pip version used by pipenv 2018-10-09 14:46:49 -05:00
Casey 63e84aceb1 Merge pull request #760 from heroku/add-airflow-110-support
Add Apache Airflow 1.10 Support
2018-10-08 16:01:45 -05:00
Casey Faist eee8dd9a9e need to pass env var as export in test 2018-10-05 13:48:22 -05:00
Casey Faist 00e12b8ec2 add test/run case 2018-10-05 13:35:42 -05:00
Casey Faist b56b063dd5 add SLUGIFY_USES_TEXT_UNIDECODE support 2018-10-05 11:49:01 -05:00
Casey d3180d3245 Merge pull request #759 from heroku/update-travis
Update travis setup for Hatchet
2018-10-04 19:28:04 -05:00
Casey Faist 4778b1cb9d add sudo to travis install 2018-10-04 17:33:40 -05:00
Casey Faist 50a3d2d13e add shebang and update file permissions 2018-10-04 17:33:28 -05:00
Casey Faist 8c36a3a263 move heroku install to before_install 2018-10-04 17:33:16 -05:00
Casey Faist 882f54128b rememer to remove toolbelt 2018-10-04 17:33:08 -05:00
Casey Faist 576def4cde fix travis dependency blocker 2018-10-04 17:32:58 -05:00
Casey Faist 1be32ff09a add more unblocking setup 2018-10-04 17:32:35 -05:00
Casey 9c2bbd109f Merge pull request #741 from heroku/fix-python-check
Fix Python 3.6 message when using Python 3.7
2018-09-05 16:54:26 -04:00
Casey Faist e5d9ed259b changelog update 2018-09-05 16:24:02 -04:00
Casey Faist 285ca2b73d reword warning, add doc link 2018-09-05 16:21:42 -04:00
Casey Faist 5e4667686a add case for older python 3 install attempts 2018-09-05 16:21:42 -04:00
Casey Faist f9621add42 Update indentation levels and messaging
Fix indentation levels

more helpful messages about supported versions
2018-09-05 16:21:42 -04:00
Casey 567cf2c388 Merge pull request #742 from heroku/hatchet/yay
Hatchet/yay
2018-09-05 16:18:25 -04:00
Casey Faist c61e61c153 add missing newline 2018-09-05 15:53:42 -04:00
Casey Faist 3835aca004 use bundle syntax to rspec 2018-09-04 11:26:13 -04:00
Casey Faist 3733383ad6 add Rakefile 2018-09-04 11:26:13 -04:00
Casey Faist b53d211d01 add rake to gemfile 2018-09-04 11:26:13 -04:00
Casey Faist e5830fd50d correct travisyaml indenting 2018-09-04 11:26:13 -04:00
Casey Faist 2efe514b14 setup travis rspecting 2018-09-04 11:26:13 -04:00
schneems d442562352 Add retry gem 2018-09-04 11:26:13 -04:00
schneems ce14e1edf8 Integration tests with Hatchet 2018-09-04 11:26:13 -04:00
Casey 39d2cd6de8 Merge pull request #746 from heroku/changelog-dates
Start adding dates to changelog entries
2018-09-04 11:21:37 -04:00
Jeremy Morrell e42b725211 Start adding dates to changelog entries
It's occasionally useful to see at a glance when releases were pushed to understand what release might have caused a customer's issues. This back-fills dates for the last few months of releases and sets a precedent that can be followed in the future.
2018-09-04 10:02:34 -04:00
Casey d9456b6d90 Merge pull request #745 from heroku/fix-27-tests
update buildpack tests to expect success for all 2.7.15 builds
2018-09-04 09:58:07 -04:00
Casey Faist 61591594a2 typo fix 2018-08-24 18:19:07 -04:00
Casey Faist 13bca29e13 update tests to expect success for all 2.7.15 builds 2018-08-24 18:12:28 -04:00
Casey 95779d6711 Merge pull request #744 from edmorley/add-pr-template
Add a Pull Request template
2018-08-22 15:50:36 -04:00
Ed Morley 166b8be2c5 Add a Pull Request template
To try and help prevent the notification noise from PRs being opened
against upstream by mistake.
2018-08-22 18:29:03 +01:00
Casey 583c1ab160 Merge pull request #736 from heroku/v-138
v 138 changelog
2018-08-01 16:49:37 -05:00
Casey Faist c7f5532854 v 138 changelog 2018-08-01 16:04:24 -05:00
Terence Lee 0fe4f91395 Merge pull request #713 from hone/sqlite3
Update SQLite3
2018-07-26 17:21:08 -05:00
Terence Lee 221722fb27 setup libsqlite3-dev and sqlite3 binary to match stack's libsqlite3-0
With inspiration from @KevinBrolly, this patch uses the stack image
SQLite3 package but also still providing the dev headers and binary that
users may still be using today. The benefit is that we won't need to
rebuild all the python binaries for this to take affect. We can just
stop shipping SQLite3 from future binaries. In addition, we don't need
to worry about what version and when to update SQLite3 and maintaining
the packages ourselves.

This also includes updates to Python 2.7.15 and Python 3.6.6 so they can
rebuilt with the stack image dev headers instead of building our own
vendored SQLite3.
2018-07-26 16:49:23 -05:00
Terence Lee e82f1e4d1e add Python version operators 2018-07-26 16:32:04 -05:00
Terence Lee f7e5930047 Merge pull request #733 from heroku/v137
v137 changelog
2018-07-17 14:02:40 -05:00
Terence Lee f51dfb5eb4 v137 changelog 2018-07-17 12:51:36 -05:00
Ian Stapleton Cordasco 06b7f97eff Merge pull request #729 from heroku/bug/728
Prevent Python 3.7 from being unsupported
2018-07-10 08:09:39 -05:00
Ian Stapleton Cordasco 74873b5b71 Merge branch 'master' into bug/728 2018-07-10 07:53:39 -05:00
Ian Stapleton Cordasco 731876d6e8 Be clearer in our warnings about which Py3 we mean 2018-07-10 07:38:31 -05:00
Ian Stapleton Cordasco a775b06d2f Merge pull request #731 from heroku/heroku-18-ci
Add heroku-18 to our Travis CI config
2018-07-10 07:31:44 -05:00
Ian Stapleton Cordasco 2d290e94e9 Add heroku-18 to our Travis CI config
- Add stage to Travis CI config and update tests.sh script to recognize
  it

- Update tests to assert there is no Python 2 on Heroku-18

- Update nltk fixture to use Python 3.6 so we can test it on all stacks

Closes gh-730
2018-07-09 11:51:03 -05:00
Ian Stapleton Cordasco 179e6287b1 Prevent Python 3.7 from being unsupported
Python 3.7.0 is supported but not preferred given how new it is. As a
result, we don't want it to be the default, but we also don't want users
to be confused when upgrading to it.

Closes gh-728
2018-07-06 09:11:26 -05:00
Ian Stapleton Cordasco 18945ff1a9 Merge pull request #724 from heroku/publish-automation
Steal the java buildpack's release script
2018-07-06 08:34:12 -05:00
Ian Stapleton Cordasco 2e630ab55c Steal the java buildpack's release script
This will make releasing new versions easier for us.

Closes gh-723
2018-06-28 12:33:54 -05:00
164 changed files with 2045 additions and 23137 deletions
+1 -1
View File
@@ -1 +1 @@
* @heroku/languages
* @heroku/languages
+8
View File
@@ -0,0 +1,8 @@
<!-- Hi and welcome to the Heroku Python buildpack repository!
If you meant to open a PR against a fork instead of upstream, please adjust the base branch:
https://help.github.com/articles/changing-the-base-branch-of-a-pull-request/
Otherwise thank you in advance for your Pull Request - just remember to
include as much information as possible to help the reviewers :-)
-->
+14
View File
@@ -0,0 +1,14 @@
name: Check Changelog
on:
pull_request:
types: [opened, reopened, edited, synchronize]
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
+9
View File
@@ -3,3 +3,12 @@ site
.DS_Store
/.envrc
repos/*
#Venv
buildpack/*
builds/dockerenv.staging*
builds/dockerenv.production
test/scratch
+7
View File
@@ -0,0 +1,7 @@
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
+41 -17
View File
@@ -1,20 +1,44 @@
language: bash
dist: trusty
language: ruby
dist: bionic
sudo: required
branches:
only:
- master
rvm:
- 2.6.6
before_script:
- gem install bundler -v 1.16.2
script:
- 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 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 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
jobs:
include:
- stage: "Bash linting (shellcheck)"
sudo: false
before_install:
- wget -c https://goo.gl/ZzKHFv -O - | tar -xvJ -C /tmp/
- PATH="/tmp/shellcheck-latest:$PATH"
script: make check
- stage: Bash linting (shellcheck)
sudo: false
script: make check
- stage: Hatchet Integration
if: env(TRAVIS_PULL_REQUEST_SLUG) = env(TRAVIS_REPO_SLUG)
name: Run Hatchet
script:
- bundle exec hatchet ci:setup
- PARALLEL_SPLIT_TEST_PROCESSES=11 bundle exec parallel_split_test spec/hatchet/
- stage: "Stack Tests"
services: docker
env: STACK=heroku-16
script: ./tests.sh
- stage: "Stack Tests"
services: docker
env: STACK=cedar-14
script: ./tests.sh
env:
matrix:
- TESTFOLDER=test/run-deps
- TESTFOLDER=test/run-versions
- TESTFOLDER=test/run-features
global:
- HATCHET_RETRIES=3
- IS_RUNNING_ON_CI=true
- HATCHET_APP_LIMIT=80
- HATCHET_DEPLOY_STRATEGY=git
- secure: yjtlPE5FbVxTKnjUy/tZUBgSEf4qADD3QOxtgziuid73S0U/1IEXlMGFULsQzIjtlHKmHeywZqpVVEpthIH4RuT7uoX1Pb7SSM/g0T8fT3VoEFbFK1uYl0oZQbUS4Klxv9tPiumj8if3m6ULEGIz1X0wZcMOC0tMLwVCnwmap0E=
- secure: ZeFTHWwnpIKE9nAqs88ocmiQh7bKce84lilGm5J23nf3N6V4wNyLwqlkvsM008WGBCaOg9AUx7ZunasT0ANsR5gLP3eV2UUg7ILdRgV2Gy13eNRFheC4PHdN92RqQ3aKoqlIv2K999xlhVjod0NzhkQQXB6PddfQINbuU7ks6As=
+159 -3
View File
@@ -1,14 +1,170 @@
# Python Buildpack Changelog
# 136
# 170 (2020-05-19)
- 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)
- 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`
--------------------------------------------------------------------------------
# 169 (2020-04-22)
- Add a Hatchet test for python 3.8.2
- Set Code Owners to @heroku/langauges
- Bugfix: Caching on subsequent redeploys
- Update tests to support latest version of Python
# 168 (2020-04-06)
- Doc: Update Readme with version numbers
- update Code Owners to include the Heroku Buildpack Maintainers team
- Deprecation warning: BUILD_WITH_GEO_LIBRARIES is now deprecated. See warning for details.
- Clean up build log output
- Update Python versions in README to match docs
- Django version detection fixed, link updated
# 167 (2020-03-26)
- Add failcase for cache busting
- Bugfix: Clearing pip dependencies
# 166 (2020-03-05)
- Correct ftp to https in vendored file
- Warn for Django 1.11 approaching EOL, provide link to roadmap
# 165 (2020-02-27)
- Python 3.8.2 now available.
# 164 (2020-02-20)
- Update requirements.txt builds to use Pip 20.0.2
- Download get-pip.py to tmpdir instead of root dir
# 163 (2019-12-23)
- New pythons released:
Python 3.8.1, 3.7.6, 3.6.10 (CPython)
Beta Release: Pypy 2.7 and 3.6, version 7.2.0
# 162 (2019-12-06)
- 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)
- Python 3.6.9 and 3.7.4 now available.
- Move get-pip utility to S3
- Build utility and documentation updates
- Bump Hatchet tests to point at new default python version.
# 155 (2019-08-22)
add docs and make target for heroku-18 bob builds
# 154 (2019-07-17)
Fix python 3.5.7 formula actually building 3.7.2
# 153 (2019-06-21)
Hotfix for broken heroku-16 deploys
# 152 (2019-04-04)
Python 3.7.3 now available.
# 151 (2019-03-21)
Python 3.5.7 and 3.4.10 now available on all Heroku stacks.
# 150 (2019-03-13)
Python 2.7.16 now available on all Heroku stacks.
# 149 (2019-03-04)
Hotfix for broken Cedar 14 deploys
# 148 (2019-02-21)
No user facing changes, improving internal metrics
# 147 (2019-02-07)
Python 3.7.2 and 3.6.8 now available on all Heroku stacks.
# 146 (2018-11-11)
Python 3.7.1, 3.6.7, 3.5.6 and 3.4.9 now available on all Heroku stacks.
# 145 (2018-11-08)
Testing and tooling expanded to better support new runtimes
# 144 (2018-10-10)
Switch to cautious upgrade for Pipenv install to ensure the pinned pip version
is used with Pipenv
# 143 (2018-10-09)
Add support for detecting SLUGIFY_USES_TEXT_UNIDECODE, which is required to
install Apache Airflow version 1.10 or higher.
# 142 (2018-10-08)
Improvements to Python install messaging
# 139, 140, 141
No user-facing changes, documenting for version clarity
# 138 (2018-08-01)
Use stack image SQLite3 instead of vendoring
# 137 (2018-07-17)
Prevent 3.7.0 from appearing as unsupported in buildpack messaging.
# 136 (2018-06-28)
Upgrade to 3.6.6 and support 3.7.0 on all runtimes.
# 135
# 135 (2018-05-29)
Upgrade Pipenv to v2018.5.18.
# 134
# 134 (2018-05-02)
Default to 3.6.5, bugfixes.
+8
View File
@@ -0,0 +1,8 @@
source "https://rubygems.org"
gem "rspec"
gem "heroku_hatchet"
gem "rspec-retry"
gem "rake"
gem "parallel_split_test"
+78
View File
@@ -0,0 +1,78 @@
GEM
remote: https://rubygems.org/
specs:
activesupport (6.0.2.2)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
zeitwerk (~> 2.2)
concurrent-ruby (1.1.6)
diff-lcs (1.3)
erubis (2.7.0)
excon (0.73.0)
heroics (0.0.25)
erubis (~> 2.0)
excon
moneta
multi_json (>= 1.9.2)
heroku_hatchet (5.0.3)
excon (~> 0)
minitest-retry (~> 0.1.9)
platform-api (~> 2)
repl_runner (~> 0.0.3)
rrrretry (~> 1)
thor (~> 0)
threaded (~> 0)
i18n (1.8.2)
concurrent-ruby (~> 1.0)
minitest (5.14.0)
minitest-retry (0.1.9)
minitest (>= 5.0)
moneta (1.0.0)
multi_json (1.14.1)
parallel (1.19.1)
parallel_split_test (0.7.0)
parallel (>= 0.5.13)
rspec (>= 3.1.0)
platform-api (2.2.0)
heroics (~> 0.0.25)
moneta (~> 1.0.0)
rake (12.3.1)
repl_runner (0.0.3)
activesupport
rrrretry (1.0.0)
rspec (3.8.0)
rspec-core (~> 3.8.0)
rspec-expectations (~> 3.8.0)
rspec-mocks (~> 3.8.0)
rspec-core (3.8.0)
rspec-support (~> 3.8.0)
rspec-expectations (3.8.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.8.0)
rspec-mocks (3.8.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.8.0)
rspec-retry (0.6.1)
rspec-core (> 3.3)
rspec-support (3.8.0)
thor (0.20.3)
thread_safe (0.3.6)
threaded (0.0.4)
tzinfo (1.2.7)
thread_safe (~> 0.1)
zeitwerk (2.3.0)
PLATFORMS
ruby
DEPENDENCIES
heroku_hatchet
parallel_split_test
rake
rspec
rspec-retry
BUNDLED WITH
2.1.4
+23 -5
View File
@@ -1,27 +1,32 @@
# These targets are not files
.PHONY: tests
test: test-heroku-16
test: test-heroku-18 test-heroku-16 test-cedar-14
check:
@shellcheck -x bin/compile bin/detect bin/release bin/test-compile bin/utils bin/warnings
@shellcheck -x bin/compile bin/detect bin/release bin/test-compile bin/utils bin/warnings bin/default_pythons
@shellcheck -x bin/steps/collectstatic bin/steps/eggpath-fix bin/steps/eggpath-fix2 bin/steps/gdal bin/steps/geo-libs bin/steps/mercurial bin/steps/nltk bin/steps/pip-install bin/steps/pip-uninstall bin/steps/pipenv bin/steps/pipenv-python-version bin/steps/pylibmc bin/steps/python
@shellcheck -x bin/steps/hooks/*
test-cedar-14:
@echo "Running tests in docker (cedar-14)..."
@docker run -v $(shell pwd):/buildpack:ro --rm -it -e "STACK=cedar-14" heroku/cedar:14 bash -c 'cp -r /buildpack /buildpack_test; cd /buildpack_test/; test/run;'
@docker run -v $(shell pwd):/buildpack:ro --rm -it -e "STACK=cedar-14" heroku/cedar:14 bash -c 'cp -r /buildpack /buildpack_test; cd /buildpack_test/; test/run-deps; test/run-features; test/run-versions;'
@echo ""
test-heroku-16:
@echo "Running tests in docker (heroku-16)..."
@docker run -v $(shell pwd):/buildpack:ro --rm -it -e "STACK=heroku-16" heroku/heroku:16-build bash -c 'cp -r /buildpack /buildpack_test; cd /buildpack_test/; test/run;'
@docker run -v $(shell pwd):/buildpack:ro --rm -it -e "STACK=heroku-16" heroku/heroku:16-build bash -c 'cp -r /buildpack /buildpack_test; cd /buildpack_test/; test/run-deps; test/run-features; test/run-versions;'
@echo ""
test-heroku-18:
@echo "Running tests in docker (heroku-18)..."
@docker run -v $(shell pwd):/buildpack:ro --rm -it -e "STACK=heroku-18" heroku/heroku:18-build bash -c 'cp -r /buildpack /buildpack_test; cd /buildpack_test/; test/run-deps; test/run-features; test/run-versions;'
@echo ""
buildenv-heroku-16:
@echo "Creating build environment (heroku-16)..."
@echo
@docker build --pull -t python-buildenv-heroku-16 .
@docker build --pull -f $(shell pwd)/builds/heroku-16.Dockerfile -t python-buildenv-heroku-16 .
@echo
@echo "Usage..."
@echo
@@ -31,6 +36,19 @@ buildenv-heroku-16:
@echo
@docker run -it --rm python-buildenv-heroku-16
buildenv-heroku-18:
@echo "Creating build environment (heroku-18)..."
@echo
@docker build --pull -f $(shell pwd)/builds/heroku-18.Dockerfile -t python-buildenv-heroku-18 .
@echo
@echo "Usage..."
@echo
@echo " $$ export AWS_ACCESS_KEY_ID=foo AWS_SECRET_ACCESS_KEY=bar # Optional unless deploying"
@echo " $$ bob build runtimes/python-2.7.13"
@echo " $$ bob deploy runtimes/python-2.7.13"
@echo
@docker run -it --rm python-buildenv-heroku-18
tools:
git clone https://github.com/kennethreitz/pip-pop.git
mv pip-pop/bin/* vendor/pip-pop/
Generated
-52
View File
@@ -1,52 +0,0 @@
{
"_meta": {
"hash": {
"sha256": "36d17c46a8b1b844b3cae475f6f42d6c0a9e59b2a9685cbcdc0985656a7a129f"
},
"host-environment-markers": {
"implementation_name": "cpython",
"implementation_version": "3.6.3",
"os_name": "posix",
"platform_machine": "x86_64",
"platform_python_implementation": "CPython",
"platform_release": "16.7.0",
"platform_system": "Darwin",
"platform_version": "Darwin Kernel Version 16.7.0: Thu Jun 15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64",
"python_full_version": "3.6.3",
"python_version": "3.6",
"sys_platform": "darwin"
},
"pipfile-spec": 6,
"requires": {},
"sources": [
{
"name": "pypi",
"url": "https://pypi.python.org/simple",
"verify_ssl": true
}
]
},
"default": {
"bob-builder": {
"hashes": [
"sha256:b4de49a8e436fcaf82236ea43f78413b4a4c92100726e382ab57b6bdfb38fe64",
"sha256:288e3e765c4890fe9a63ae52ac6b4a963c13fe508482c70ff701a5ae21b9a673"
],
"version": "==0.0.13"
},
"boto": {
"hashes": [
"sha256:13be844158d1bd80a94c972c806ec8381b9ea72035aa06123c5db6bc6a6f3ead",
"sha256:deb8925b734b109679e3de65856018996338758f4b916ff4fe7bb62b6d7000d1"
],
"version": "==2.48.0"
},
"docopt": {
"hashes": [
"sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"
],
"version": "==0.6.2"
}
},
"develop": {}
}
+59 -32
View File
@@ -4,36 +4,55 @@
[![Build Status](https://travis-ci.org/heroku/heroku-buildpack-python.svg?branch=master)](https://travis-ci.org/heroku/heroku-buildpack-python)
This is the official [Heroku buildpack](https://devcenter.heroku.com/articles/buildpacks) for Python apps, powered by [Pipenv](http://docs.pipenv.org/), [pip](https://pip.pypa.io/) and other excellent software.
This is the official [Heroku buildpack](https://devcenter.heroku.com/articles/buildpacks) for Python apps.
Recommended web frameworks include **Django** and **Flask**. The recommended webserver is **Gunicorn**. There are no restrictions around what software can be used (as long as it's pip-installable). Web processes must bind to `$PORT`, and only the HTTP protocol is permitted for incoming connections.
Recommended web frameworks include **Django** and **Flask**, among others. The recommended webserver is **Gunicorn**. There are no restrictions around what software can be used (as long as it's pip-installable). Web processes must bind to `$PORT`, and only the HTTP protocol is permitted for incoming connections.
Python packages with C dependencies that are not [available on the stack image](https://devcenter.heroku.com/articles/stack-packages) are generally not supported, unless `manylinux` wheels are provided by the package maintainers (common). For recommended solutions, check out [this article](https://devcenter.heroku.com/articles/python-c-deps) for more information.
Python packages with C dependencies that are not [available on the stack image](https://devcenter.heroku.com/articles/stack-packages) are generally not supported, unless `manylinux` wheels are provided by the package maintainers (common). For recommended solutions, check out [this article](https://devcenter.heroku.com/articles/python-c-deps) for more information.
See it in Action
----------------
```
$ ls
my-application requirements.txt runtime.txt
Deploying a Python application couldn't be easier:
$ git push heroku master
Counting objects: 4, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (4/4), 276 bytes | 276.00 KiB/s, done.
Total 4 (delta 0), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Python app detected
remote: -----> Installing python-3.7.4
remote: -----> Installing pip
remote: -----> Installing SQLite3
remote: -----> Installing requirements with pip
remote: Collecting flask (from -r /tmp/build_c2c067ef79ff14c9bf1aed6796f9ed1f/requirements.txt (line 1))
remote: Downloading ...
remote: Installing collected packages: Werkzeug, click, MarkupSafe, Jinja2, itsdangerous, flask
remote: Successfully installed Jinja2-2.10 MarkupSafe-1.1.0 Werkzeug-0.14.1 click-7.0 flask-1.0.2 itsdangerous-1.1.0
remote:
remote: -----> Discovering process types
remote: Procfile declares types -> (none)
remote:
```
$ ls
Pipfile Pipfile.lock Procfile web.py
A `requirements.txt` must be present at the root of your application's repository to deploy.
$ heroku create --buildpack heroku/python
To specify your python version, you also need a `runtime.txt` file - unless you are using the default Python runtime version.
$ git push heroku master
-----> Python app detected
-----> Installing python-3.6.6
-----> Installing pip
-----> Installing requirements with Pipenv 2018.5.18…
...
Installing dependencies from Pipfile…
-----> Discovering process types
Procfile declares types -> (none)
Current default Python Runtime: Python 3.6.9
A `Pipfile` or `requirements.txt` must be present at the root of your application's repository.
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`.
You can also specify the latest production release of this buildpack for upcoming builds of an existing application:
Specify a Buildpack Version
---------------------------
You can specify the latest production release of this buildpack for upcoming builds of an existing application:
$ heroku buildpacks:set heroku/python
@@ -41,23 +60,31 @@ You can also specify the latest production release of this buildpack for upcomin
Specify a Python Runtime
------------------------
Specific versions of the Python runtime can be specified in your `Pipfile`:
Supported runtime options include:
[requires]
python_version = "2.7"
- `python-3.8.3`
- `python-3.7.7`
- `python-3.6.10`
- `python-2.7.18`
Or, more specifically:
## Tests
[requires]
python_full_version = "2.7.15"
The buildpack tests use [Docker](https://www.docker.com/) to simulate
Heroku's [stack images.](https://devcenter.heroku.com/articles/stack)
Or, with a `runtime.txt` file:
To run the test suite:
$ cat runtime.txt
python-2.7.15
```
make test
```
Runtime options include:
Or to test in a particular stack:
- `python-3.7.0`
- `python-3.6.6`
- `python-2.7.15`
```
make test-heroku-18
make test-heroku-16
```
The tests are run via the vendored
[shunit2](https://github.com/kward/shunit2)
test framework.
+1
View File
@@ -0,0 +1 @@
require 'hatchet/tasks'
+49 -19
View File
@@ -42,23 +42,50 @@ export BUILD_DIR CACHE_DIR ENV_DIR
VENDOR_URL="https://lang-python.s3.amazonaws.com/$STACK"
if [[ -n ${BUILDPACK_VENDOR_URL:-} ]]; then
VENDOR_URL="$BUILDPACK_VENDOR_URL"
elif [[ -n ${USE_STAGING_BINARIES} ]]; then
VENDOR_URL="$USE_STAGING_BINARIES/$STACK"
fi
export VENDOR_URL
# Which versions of Python are we using?
# These variables are used to specify which versions of Python to install by default,
# as well as prompt the user to upgrade if they are using an unsupported version.
# Note: When 3.7 lands, I recommend switching to LATEST_36 and LATEST_37.
DEFAULT_PYTHON_VERSION="python-3.6.6"
LATEST_3="python-3.6.6"
LATEST_2="python-2.7.15"
# Default Python Versions
# shellcheck source=bin/default_pythons
source "$BIN_DIR/default_pythons"
# Supported Python Branches
PY38="python-3.8"
PY37="python-3.7"
PY36="python-3.6"
PY35="python-3.5"
PY34="python-3.4"
PY27="python-2.7"
PYPY27="pypy2.7"
PYPY36="pypy3.6"
# Which stack is used (for binary downloading), if none is provided (e.g. outside of Heroku)?
DEFAULT_PYTHON_STACK="cedar-14"
# If pip doesn't match this version (the version we install), run the installer.
PIP_UPDATE="9.0.2"
PIP_UPDATE="20.0.2"
export DEFAULT_PYTHON_VERSION DEFAULT_PYTHON_STACK PIP_UPDATE LATEST_2 LATEST_3
for file in "$BUILD_DIR/runtime.txt" "$CACHE_DIR/.heroku/python-version" ; do
[ -f "$file" ] || continue
version=$(tr -d '[:space:]' < "$file")
case "$version" in "$PY34"*)
# Python 3.4 support was dropped in pip >= 19.2.
PIP_UPDATE="19.1.1"
break
;;
esac
done
if [[ -f "$BUILD_DIR/Pipfile" ]]; then
# Do not force pipenv users to re-install pipenv locally.
PIP_UPDATE="9.0.2"
fi
export DEFAULT_PYTHON_STACK PIP_UPDATE
export PY37 PY36 PY35 PY27 PY34
# Common Problem Warnings:
# This section creates a temporary file in which to stick the output of `pip install`.
@@ -148,7 +175,7 @@ cd "$BUILD_DIR"
# - Once the build is complete, `~/.heroku/{known-paths}` is copied back into the cache.
# Create the cache directory, if it doesn't exist.
mkdir -p "$CACHE_DIR"
mkdir -p "$CACHE_DIR/.heroku"
# Restore old artifacts from the cache.
mkdir -p .heroku
@@ -159,6 +186,8 @@ cp -R "$CACHE_DIR/.heroku/python" .heroku/ &> /dev/null || true
cp -R "$CACHE_DIR/.heroku/python-stack" .heroku/ &> /dev/null || true
# A plain text file which contains the current python version being used (used for cache busting).
cp -R "$CACHE_DIR/.heroku/python-version" .heroku/ &> /dev/null || true
# A plain text file which contains the current sqlite3 version being used (used for cache busting).
cp -R "$CACHE_DIR/.heroku/python-sqlite3-version" .heroku/ &> /dev/null || true
# Any pre-compiled binaries, provided by the buildpack.
cp -R "$CACHE_DIR/.heroku/vendor" .heroku/ &> /dev/null || true
# "editable" installations of code repositories, via pip or pipenv.
@@ -230,17 +259,8 @@ mtime "python.install.time" "${start}"
# shellcheck source=bin/steps/pipenv
source "$BIN_DIR/steps/pipenv"
# Uninstall removed dependencies with Pip.
# The buildpack will automatically remove any declared dependencies (in requirements.txt)
# that were explicitly removed. This machinery is a bit complex, but it is not complicated.
(( start=$(nowms) ))
# shellcheck source=bin/steps/pip-uninstall
source "$BIN_DIR/steps/pip-uninstall"
mtime "pip.uninstall.time" "${start}"
# If no requirements.txt file given, assume `setup.py develop` is intended.
# This allows for people to ship a setup.py application to Heroku
# (which is rare, but I vouch that it should work!)
if [ ! -f requirements.txt ] && [ ! -f Pipfile ]; then
echo "-e ." > requirements.txt
@@ -273,6 +293,16 @@ sub_env "$BIN_DIR/steps/geo-libs"
# shellcheck source=bin/steps/gdal
source "$BIN_DIR/steps/gdal"
# SQLite3 support.
# This sets up and installs sqlite3 dev headers and the sqlite3 binary but not the
# libsqlite3-0 library since that exists on the stack image.
# Note: This only applies to Python 2.7.15+ and Python 3.6.6+
(( start=$(nowms) ))
# shellcheck source=bin/steps/sqlite3
source "$BIN_DIR/steps/sqlite3"
buildpack_sqlite3_install
mtime "sqlite3.install.time" "${start}"
# pip install
# -----------
+21
View File
@@ -0,0 +1,21 @@
#!/usr/bin/env bash
DEFAULT_PYTHON_VERSION="python-3.6.10"
LATEST_38="python-3.8.3"
LATEST_37="python-3.7.7"
LATEST_36="python-3.6.10"
LATEST_35="python-3.5.9"
LATEST_34="python-3.4.10"
LATEST_27="python-2.7.18"
PYPY_36="pypy3.6-7.3.1"
PYPY_27="pypy2.7-7.3.1"
export DEFAULT_PYTHON_VERSION \
LATEST_38 \
LATEST_37 \
LATEST_36 \
LATEST_35 \
LATEST_34 \
LATEST_27 \
PYPY_36 \
PYPY_27
+28
View File
@@ -0,0 +1,28 @@
# Python Buildpack Install Steps
TODO: Add context on Python install steps, such as why symlinking vs copying
## Installing the Pip tool
The Python Buildpack uses a tool called `get-pip` to install the pip tool. This
is done in the `python` script.
This is in part because Python historically did not come with pip by default.
## Installing Python packages using Pip
### Convention: Use `python` process to invoke Pip
We don't use this convention (yet) but this is an upcoming change being considered.
This is a bigger concern on Windows than it is in Linux environments, but an
emerging convention in the Python community is to invoke pip using:
```
python3 -m pip [options]
```
Invoking pip this way ensures correct location - python knows where these
packages are stored because it put them there (defaults to Python's pathing info).
All normal command line options are available using this method.
+5 -1
View File
@@ -22,13 +22,17 @@ source "$BIN_DIR/utils"
if (pip-grep -s requirements.txt GDAL gdal pygdal &> /dev/null) then
if [ ! -f ".heroku/vendor/bin/gdalserver" ]; then
puts-warn "The vendored GDAL package in the Heroku Python Buildpack now deprecated."
puts-warn "To enable GDAL use an alternative buildpack is available here - https://github.com/heroku/heroku-geo-buildpack"
echo "-----> Noticed GDAL. Bootstrapping gdal."
mkdir -p .heroku/vendor
# Download and extract cryptography into target vendor directory.
curl "$VENDORED_GDAL" -s | tar zxv -C .heroku/vendor &> /dev/null
mcount "steps.vendor.gdal"
fi
GDAL=$(pwd)/vendor
export GDAL
fi
+6
View File
@@ -22,6 +22,10 @@ source "$BIN_DIR/utils"
# If GDAL exists within requirements, use vendored gdal.
if [[ "$BUILD_WITH_GEO_LIBRARIES" ]]; then
mcount "buildvar.BUILD_WITH_GEO_LIBRARIES"
puts-warn "The GDAL, GEOS and PROJ binaries and BUILD_WITH_GEO_LIBRARIES functonality are now deprecated."
puts-warn "An alternative buildpack to enable GDAL, GEOS and PROJ use is available here - https://github.com/heroku/heroku-geo-buildpack"
if [ ! -f ".heroku/vendor/bin/proj" ]; then
echo "-----> Bootstrapping gdal, geos, proj."
@@ -31,9 +35,11 @@ if [[ "$BUILD_WITH_GEO_LIBRARIES" ]]; then
curl "$VENDORED_GEOS" -s | tar zxv -C .heroku/vendor &> /dev/null
curl "$VENDORED_PROJ" -s | tar zxv -C .heroku/vendor &> /dev/null
mcount "steps.vendor.geo_libs"
# Copy libjasper from build image to slug.
if [[ "$STACK" == "heroku-16" ]]; then
cp /usr/lib/x86_64-linux-gnu/libjasper.so* ".heroku/vendor/lib/."
mcount "steps.vendor.libjasper"
fi
fi
+1 -1
View File
@@ -4,6 +4,6 @@
if [[ -f "requirements.txt" ]]; then
if (grep -Fiq "hg+" requirements.txt) then
/app/.heroku/python/bin/pip install mercurial | cleanup | indent
mcount "steps.mercurial"
fi
fi
+2
View File
@@ -27,6 +27,8 @@ if sp-grep -s nltk; then
python -m nltk.downloader -d "$BUILD_DIR/.heroku/python/nltk_data" "${nltk_packages[@]}" | indent
set_env NLTK_DATA "/app/.heroku/python/nltk_data"
mcount "buildvar.NLTK_PACKAGES_DEFINITION"
mcount "steps.nltk"
else
puts-warn "'nltk.txt' not found, not downloading any corpora"
puts-warn "Learn more: https://devcenter.heroku.com/articles/python-nltk"
+25 -5
View File
@@ -8,10 +8,24 @@ if [ ! "$SKIP_PIP_INSTALL" ]; then
# Install dependencies with Pip.
puts-step "Installing requirements with pip"
# Set PIP_EXTRA_INDEX_URL
if [[ -r $ENV_DIR/PIP_EXTRA_INDEX_URL ]]; then
# Set Pip env vars
# This reads certain environment variables set on the Heroku app config
# and makes them accessible to the pip install process.
#
# PIP_EXTRA_INDEX_URL allows for an alternate pypi URL to be used.
if [[ -r "$ENV_DIR/PIP_EXTRA_INDEX_URL" ]]; then
PIP_EXTRA_INDEX_URL="$(cat "$ENV_DIR/PIP_EXTRA_INDEX_URL")"
export PIP_EXTRA_INDEX_URL
mcount "buildvar.PIP_EXTRA_INDEX_URL"
fi
set +e
# Set SLUGIFY_USES_TEXT_UNIDECODE, required for Airflow versions >=1.10
if [[ -r "$ENV_DIR/SLUGIFY_USES_TEXT_UNIDECODE" ]]; then
SLUGIFY_USES_TEXT_UNIDECODE="$(cat "$ENV_DIR/SLUGIFY_USES_TEXT_UNIDECODE")"
export SLUGIFY_USES_TEXT_UNIDECODE
mcount "buildvar.SLUGIFY_USES_TEXT_UNIDECODE"
fi
set +e
@@ -24,6 +38,15 @@ if [ ! "$SKIP_PIP_INSTALL" ]; then
mcount "failure.none-version"
fi
if grep -qi '^django==1.*' requirements.txt; then
puts-warn "Your Django version is nearing the end of its community support."
puts-warn "Upgrade to continue to receive security updates and for the best experience with Django."
puts-warn "For more information, check out https://www.djangoproject.com/download/#supported-versions"
fi
if [ ! -f "$BUILD_DIR/.heroku/python/bin/pip" ]; then
exit 1
fi
/app/.heroku/python/bin/pip install -r "$BUILD_DIR/requirements.txt" --exists-action=w --src=/app/.heroku/src --disable-pip-version-check --no-cache-dir 2>&1 | tee "$WARNINGS_LOG" | cleanup | indent
PIP_STATUS="${PIPESTATUS[0]}"
@@ -36,12 +59,9 @@ if [ ! "$SKIP_PIP_INSTALL" ]; then
exit 1
fi
# Smart Requirements handling
cp requirements.txt .heroku/python/requirements-declared.txt
/app/.heroku/python/bin/pip freeze --disable-pip-version-check > .heroku/python/requirements-installed.txt
echo
# Install test dependencies, for CI.
if [ "$INSTALL_TEST" ]; then
if [[ -f "$1/requirements-test.txt" ]]; then
+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
mount "failure.bad-requirements"
mcount "failure.bad-requirements"
fi
rm -fr requirements-declared.txt
+26 -12
View File
@@ -20,14 +20,13 @@ if [[ -f Pipfile.lock ]]; then
export SKIP_PIPENV_INSTALL=1
export SKIP_PIP_INSTALL=1
fi
fi
fi
fi
if [ ! "$SKIP_PIPENV_INSTALL" ]; then
# Pipenv support (Generate requriements.txt with pipenv).
# Pipenv support (Generate requirements.txt with pipenv).
if [[ -f Pipfile ]]; then
# Measure that we're using Pipenv.
mcount "tool.pipenv"
@@ -35,21 +34,42 @@ if [ ! "$SKIP_PIPENV_INSTALL" ]; then
# Skip pip install, later.
export SKIP_PIP_INSTALL=1
# Set PIP_EXTRA_INDEX_URL
if [[ -r $ENV_DIR/PIP_EXTRA_INDEX_URL ]]; then
# Set Pip env vars
# This reads certain environment variables set on the Heroku app config
# and makes them accessible to the pip install process.
#
# PIP_EXTRA_INDEX_URL allows for an alternate pypi URL to be used.
if [[ -r "$ENV_DIR/PIP_EXTRA_INDEX_URL" ]]; then
PIP_EXTRA_INDEX_URL="$(cat "$ENV_DIR/PIP_EXTRA_INDEX_URL")"
export PIP_EXTRA_INDEX_URL
mcount "buildvar.PIP_EXTRA_INDEX_URL"
fi
# Set SLUGIFY_USES_TEXT_UNIDECODE, required for Airflow versions >=1.10
if [[ -r "$ENV_DIR/SLUGIFY_USES_TEXT_UNIDECODE" ]]; then
SLUGIFY_USES_TEXT_UNIDECODE="$(cat "$ENV_DIR/SLUGIFY_USES_TEXT_UNIDECODE")"
export SLUGIFY_USES_TEXT_UNIDECODE
mcount "buildvar.SLUGIFY_USES_TEXT_UNIDECODE"
fi
export PIPENV_VERSION="2018.5.18"
# Install pipenv.
/app/.heroku/python/bin/pip install pipenv==$PIPENV_VERSION --upgrade &> /dev/null
# Due to weird old pip behavior and pipenv behavior, pipenv upgrades pip
# to latest if only --upgrade is specified. Specify upgrade strategy to
# avoid this eager behavior.
/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.
if [[ ! -f Pipfile.lock ]]; then
elif [[ ! -f Pipfile.lock ]]; then
puts-step "Installing dependencies with Pipenv $PIPENV_VERSION…"
/app/.heroku/python/bin/pipenv install --system --skip-lock 2>&1 | indent
else
pipenv-to-pip Pipfile.lock > requirements.txt
"$BIN_DIR/steps/pip-uninstall"
@@ -59,12 +79,6 @@ if [ ! "$SKIP_PIPENV_INSTALL" ]; then
puts-step "Installing dependencies with Pipenv $PIPENV_VERSION…"
/app/.heroku/python/bin/pipenv install --system --deploy 2>&1 | indent
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
else
export SKIP_PIP_INSTALL=1
+8 -3
View File
@@ -19,10 +19,16 @@ if [[ -f $BUILD_DIR/Pipfile ]]; then
if [[ "$PYTHON" == "null" ]]; then
PYTHON=$(jq -r '._meta.requires.python_version' "$BUILD_DIR/Pipfile.lock")
if [ "$PYTHON" = 2.7 ]; then
echo "$LATEST_2" > "$BUILD_DIR/runtime.txt"
echo "$LATEST_27" > "$BUILD_DIR/runtime.txt"
fi
if [ "$PYTHON" = 3.6 ]; then
echo "$LATEST_3" > "$BUILD_DIR/runtime.txt"
echo "$LATEST_36" > "$BUILD_DIR/runtime.txt"
fi
if [ "$PYTHON" = 3.7 ]; then
echo "$LATEST_37" > "$BUILD_DIR/runtime.txt"
fi
if [ "$PYTHON" = 3.8 ]; then
echo "$LATEST_38" > "$BUILD_DIR/runtime.txt"
fi
fi
@@ -30,4 +36,3 @@ if [[ -f $BUILD_DIR/Pipfile ]]; then
fi
fi
fi
+1
View File
@@ -29,6 +29,7 @@ if (pip-grep -s requirements.txt pylibmc &> /dev/null) then
mkdir -p .heroku/vendor
# Download and extract libmemcached into target vendor directory.
curl "$VENDORED_MEMCACHED" -s | tar zxv -C .heroku/vendor &> /dev/null
mcount "steps.vendor.pylibmc"
fi
LIBMEMCACHED=$(pwd)/vendor
+103 -15
View File
@@ -7,24 +7,83 @@ PYTHON_VERSION=$(cat runtime.txt)
# The location of the pre-compiled python binary.
VENDORED_PYTHON="${VENDOR_URL}/runtimes/$PYTHON_VERSION.tar.gz"
if [[ $PYTHON_VERSION =~ ^python-2 ]]; then
if [[ "$PYTHON_VERSION" != "$LATEST_2" ]]; then
puts-warn "The latest version of Python 2 is $LATEST_2 (you are using $PYTHON_VERSION, which is unsupported)."
puts-warn "We recommend upgrading by specifying the latest version ($LATEST_2)."
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
SECURITY_UPDATE="Python 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"
PYTHON_2_EOL_UPDATE="Python 2 has reached it's community EOL. Upgrade your Python runtime to maintain a secure application as soon as possible."
# check if runtime exists
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
# do things to alert the user of security release available
if [ "$PYTHON_VERSION" != "$LATEST_37" ]; then
puts-warn "$SECURITY_UPDATE" "$LATEST_37"
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
fi
fi
if [[ "$PYTHON_VERSION" == $PY36* ]]; then
# security update note
if [ "$PYTHON_VERSION" != "$LATEST_36" ]; then
puts-warn "$SECURITY_UPDATE" "$LATEST_36"
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
fi
fi
if [[ "$PYTHON_VERSION" == $PY35* ]]; then
# security update note
if [ "$PYTHON_VERSION" != "$LATEST_35" ]; then
puts-warn "$SECURITY_UPDATE" "$LATEST_35"
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
fi
fi
if [[ "$PYTHON_VERSION" == $PY34* ]]; then
# security update note
if [ "$PYTHON_VERSION" != "$LATEST_34" ]; then
puts-warn "$SECURITY_UPDATE" "$LATEST_34"
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
fi
fi
if [[ "$PYTHON_VERSION" == $PY27* ]]; then
# 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
puts-warn "$ONLY_SUPPORTED_2_VERSION" "$LATEST_27"
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
fi
fi
if [[ "$PYTHON_VERSION" == $PYPY27* ]]; then
# security update note
if [ "$PYTHON_VERSION" != "$PYPY_27" ]; then
puts-warn "Could not find that Pypy version. Did you mean" "${PYPY_27}?"
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
fi
fi
if [[ "$PYTHON_VERSION" == $PYPY36* ]]; then
# security update note
if [ "$PYTHON_VERSION" != "$PYPY_36" ]; then
puts-warn "Could not find that Pypy version. Did you mean" "${PYPY_36}?"
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
fi
fi
else
if [[ "$PYTHON_VERSION" != "$LATEST_3" ]]; then
puts-warn "The latest version of Python 3 is $LATEST_3 (you are using $PYTHON_VERSION, which is unsupported)."
puts-warn "We recommend upgrading by specifying the latest version ($LATEST_3)."
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
fi
puts-warn "Requested runtime ($PYTHON_VERSION) is not available for this stack ($STACK)."
puts-warn "Aborting. More info: https://devcenter.heroku.com/articles/python-support"
exit 1
fi
if [[ "$STACK" != "$CACHED_PYTHON_STACK" ]]; then
puts-step "Stack has changed from $CACHED_PYTHON_STACK to $STACK, clearing cache"
rm -fr .heroku/python-stack .heroku/python-version .heroku/python .heroku/vendor
rm -fr .heroku/python-stack .heroku/python-version .heroku/python .heroku/vendor .heroku/python .heroku/python-sqlite3-version
fi
if [ -f .heroku/python-version ]; then
@@ -36,6 +95,25 @@ if [ -f .heroku/python-version ]; then
fi
fi
# Check if we should reinstall python dependencies
if [[ ! -f "$CACHE_DIR/.heroku/requirements.txt" ]]; then
# IF there's no cached dependencies, update cached version of requirements.txt
# This should only run for new apps and first deploys after this update
cp -R "$BUILD_DIR/requirements.txt" "$CACHE_DIR/.heroku/requirements.txt"
else
# IF there IS a cached directory, check for differences with the new one
if ! diff "$BUILD_DIR/requirements.txt" "$CACHE_DIR/.heroku/requirements.txt" &> /dev/null; then
puts-step "Requirements file has been changed, clearing cached dependencies"
# if there are any differences, clear the Python cache
# Installing Python over again does not take noticably more time
cp -R "$BUILD_DIR/requirements.txt" "$CACHE_DIR/.heroku/requirements.txt"
rm -rf .heroku/python
unset SKIP_INSTALL
else
puts-step "No change in requirements detected, installing from cache"
fi
fi
if [ ! "$SKIP_INSTALL" ]; then
puts-step "Installing $PYTHON_VERSION"
@@ -58,7 +136,18 @@ if [ ! "$SKIP_INSTALL" ]; then
hash -r
fi
# If Pip isn't up to date:
# Heroku uses the get-pip utility maintained by the Python community to vendor Pip.
# https://github.com/pypa/get-pip
GETPIP_URL="https://lang-python.s3.amazonaws.com/etc/get-pip.py"
GETPIP_PY="${TMPDIR:-/tmp}/get-pip.py"
if ! curl -s "${GETPIP_URL}" -o "$GETPIP_PY" &> /dev/null; then
mcount "failure.python.get-pip"
echo "Failed to pull down get-pip"
exit 1
fi
# If a new Python has been installed or Pip isn't up to date:
if [ "$FRESH_PYTHON" ] || [[ ! $(pip --version) == *$PIP_UPDATE* ]]; then
puts-step "Installing pip"
@@ -67,9 +156,8 @@ if [ "$FRESH_PYTHON" ] || [[ ! $(pip --version) == *$PIP_UPDATE* ]]; then
rm -fr /app/.heroku/python/lib/python*/site-packages/pip-*
rm -fr /app/.heroku/python/lib/python*/site-packages/setuptools-*
/app/.heroku/python/bin/python "$ROOT_DIR/vendor/get-pip.py" pip=="$PIP_UPDATE" &> /dev/null
/app/.heroku/python/bin/python "$GETPIP_PY" pip=="$PIP_UPDATE" &> /dev/null
/app/.heroku/python/bin/pip install "$ROOT_DIR/vendor/setuptools-39.0.1-py2.py3-none-any.whl" &> /dev/null
fi
set -e
+77
View File
@@ -0,0 +1,77 @@
#!/usr/bin/env bash
# shellcheck source=bin/utils
source "$BIN_DIR/utils"
sqlite3_install() {
HEROKU_PYTHON_DIR="$1"
HEADERS_ONLY="$3"
mkdir -p "$HEROKU_PYTHON_DIR"
APT_CACHE_DIR="$HEROKU_PYTHON_DIR/apt/cache"
APT_STATE_DIR="$HEROKU_PYTHON_DIR/apt/state"
mkdir -p "$APT_CACHE_DIR/archives/partial"
mkdir -p "$APT_STATE_DIR/lists/partial"
APT_OPTIONS="-o debug::nolocking=true"
APT_OPTIONS="$APT_OPTIONS -o dir::cache=$APT_CACHE_DIR"
APT_OPTIONS="$APT_OPTIONS -o dir::state=$APT_STATE_DIR"
APT_OPTIONS="$APT_OPTIONS -o dir::etc::sourcelist=/etc/apt/sources.list"
apt-get $APT_OPTIONS update > /dev/null 2>&1
if [ -z "$HEADERS_ONLY" ]; then
apt-get $APT_OPTIONS -y -d --reinstall install libsqlite3-dev sqlite3 > /dev/null 2>&1
else
apt-get $APT_OPTIONS -y -d --reinstall install libsqlite3-dev
fi
find "$APT_CACHE_DIR/archives/" -name "*.deb" -exec dpkg -x {} "$HEROKU_PYTHON_DIR/sqlite3/" \;
mkdir -p "$HEROKU_PYTHON_DIR/include"
mkdir -p "$HEROKU_PYTHON_DIR/lib"
# remove old sqlite3 libraries/binaries
find "$HEROKU_PYTHON_DIR/include/" -name "sqlite3*.h" -exec rm -f {} \;
find "$HEROKU_PYTHON_DIR/lib/" -name "libsqlite3.*" -exec rm -f {} \;
rm -f "$HEROKU_PYTHON_DIR/lib/pkgconfig/sqlite3.pc"
rm -f "$HEROKU_PYTHON_DIR/bin/sqlite3"
# copy over sqlite3 headers & bins and setup linking against the stack image library
mv "$HEROKU_PYTHON_DIR/sqlite3/usr/include/"* "$HEROKU_PYTHON_DIR/include/"
mv "$HEROKU_PYTHON_DIR/sqlite3/usr/lib/x86_64-linux-gnu"/libsqlite3.*a "$HEROKU_PYTHON_DIR/lib/"
mkdir -p "$HEROKU_PYTHON_DIR/lib/pkgconfig"
# set the right prefix/lib directories
sed -e 's/prefix=\/usr/prefix=\/app\/.heroku\/python/' -e 's/\/x86_64-linux-gnu//' "$HEROKU_PYTHON_DIR/sqlite3/usr/lib/x86_64-linux-gnu/pkgconfig/sqlite3.pc" > "$HEROKU_PYTHON_DIR/lib/pkgconfig/sqlite3.pc"
# need to point the libsqlite3.so to the stack image library for /usr/bin/ld -lsqlite3
SQLITE3_LIBFILE="/usr/lib/x86_64-linux-gnu/$(readlink -n "$HEROKU_PYTHON_DIR/sqlite3/usr/lib/x86_64-linux-gnu/libsqlite3.so")"
ln -s "$SQLITE3_LIBFILE" "$HEROKU_PYTHON_DIR/lib/libsqlite3.so"
if [ -z "$HEADERS_ONLY" ]; then
mv "$HEROKU_PYTHON_DIR/sqlite3/usr/bin"/* "$HEROKU_PYTHON_DIR/bin/"
fi
# cleanup
rm -rf "$HEROKU_PYTHON_DIR/sqlite3/"
rm -rf "$HEROKU_PYTHON_DIR/apt/"
}
buildpack_sqlite3_install() {
HEROKU_PYTHON_DIR="$BUILD_DIR/.heroku/python"
SQLITE3_VERSION_FILE="$BUILD_DIR/.heroku/python-sqlite3-version"
if [ -f "$SQLITE3_VERSION_FILE" ]; then
INSTALLED_SQLITE3_VERSION=$(cat "$SQLITE3_VERSION_FILE")
fi
puts-step "Installing SQLite3"
if sqlite3_install "$BUILD_DIR/.heroku/python" ; then
mcount "success.python.sqlite3"
else
echo "Sqlite3 failed to install."
mcount "failure.python.sqlite3"
fi
mkdir -p "$CACHE_DIR/.heroku/"
}
+37
View File
@@ -58,3 +58,40 @@ measure-size() {
echo "$(du -s .heroku/python 2>/dev/null || echo 0) | awk '{print $1}')"
}
# Python version operator >
version_gt() {
test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1";
}
# Python verison operator >=
version_gte() {
if [ "$1" == "$2" ]; then
return 0
fi
version_gt "$1" "$2"
}
# Check if Python 2
python2_check() {
VERSION="$1"
version_gte "$VERSION" "python-2.7.0" && version_gt "python-3.0.0" "$VERSION"
}
# Check if Python 3
python3_check() {
VERSION="$1"
version_gte "$VERSION" "python-3.0.0" && version_gt "python-4.0.0" "$VERSION"
}
# Check if Python version needs to install SQLite3
python_sqlite3_check() {
VERSION="$1"
MIN_PYTHON_3="python-3.5.6"
MIN_PYTHON_2="python-2.7.15"
( python2_check "$VERSION" && version_gte "$VERSION" "$MIN_PYTHON_2" ) \
|| ( python3_check "$VERSION" && version_gte "$VERSION" "$MIN_PYTHON_3" )
}
+42 -26
View File
@@ -1,41 +1,57 @@
# Python Buildpack Binaries
For Cedar-14 stack
------------------
## Building the Docker Images
To get started with it, create an app on Heroku inside a clone of this repository, and set your S3 config vars:
**After every change to your formulae, perform the following** from the root of the Git repository (not from `builds/`) to rebuild the images for each stack:
$ heroku create --buildpack https://github.com/heroku/heroku-buildpack-python#not-heroku
$ heroku config:set WORKSPACE_DIR=builds
$ heroku config:set AWS_ACCESS_KEY_ID=<your_aws_key>
$ heroku config:set AWS_SECRET_ACCESS_KEY=<your_aws_secret>
$ heroku config:set S3_BUCKET=<your_s3_bucket_name>
$ docker build --pull --tag heroku-python-build-cedar-14 --file $(pwd)/builds/cedar-14.Dockerfile .
$ docker build --pull --tag heroku-python-build-heroku-16 --file $(pwd)/builds/heroku-16.Dockerfile .
$ docker build --pull --tag heroku-python-build-heroku-18 --file $(pwd)/builds/heroku-18.Dockerfile .
## Using the Image
Then, shell into an instance and run a build by giving the name of the formula inside `builds`:
You can e.g. `bash` into each of the images you built using their tag:
$ heroku run bash
Running `bash` attached to terminal... up, run.6880
~ $ bob build runtimes/python-2.7.6
docker run --rm -ti heroku-python-build-cedar-14 bash
docker run --rm -ti heroku-python-build-heroku-16 bash
docker run --rm -ti heroku-python-build-heroku-18 bash
Fetching dependencies... found 2:
- libraries/sqlite
You then have a shell where you can run `bob build`, `bob deploy`, and so forth. You can of course also invoke these programs directly with `docker run`:
Building formula runtimes/python-2.7.6:
=== Building Python 2.7.6
Fetching Python v2.7.6 source...
Compiling...
docker run --rm -ti heroku-python-build-heroku-18 bob build runtimes/python-2.7.15
If this works, run `bob deploy` instead of `bob build` to have the result uploaded to S3 for you.
In order to `bob deploy`, AWS credentials must be set up, as well as name and prefix of your custom S3 bucket (unless you're deploying to the Heroku production buckets that are pre-defined in each `Dockerfile`); see next section for details.
To speed things up drastically, it'll usually be a good idea to `heroku run bash --size PX` instead.
## Configuration
For Heroku-16 stack
-------------------
File `dockerenv.default` contains a list of required env vars; most of these have default values defined in `Dockerfile`. You can copy this file to a location outside the buildpack and modify it with the values you desire and pass its location with `--env-file`, or pass the env vars to `docker run` using `--env`.
1. Ensure GNU Make and Docker are installed.
2. From the root of the buildpack repository, run: `make buildenv-heroku-16`
3. Follow the instructions displayed!
Out of the box, each `Dockerfile` has the correct values predefined for `S3_BUCKET`, `S3_PREFIX`, and `S3_REGION`. If you're building your own packages, you'll likely want to change `S3_BUCKET` and `S3_PREFIX` to match your info. Instead of setting `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` into that file, you may also pass them to `docker run` through the environment, or explicitly using `--env`, in order to prevent accidental commits of credentials.
### Passing AWS credentials to the container
Enjoy :)
If you want to deploy packages and thus need to pass `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`, you can either pass them explicitly, through your environment, or through an env file.
#### Passing credentials explicitly
docker run --rm -ti -e AWS_ACCESS_KEY_ID=... -e AWS_SECRET_ACCESS_KEY=... heroku-python-build-heroku-18 bash
#### Passing credentials through the environment
The two environment variables `AWS_ACCESS_KEY_ID`and `AWS_SECRET_ACCESS_KEY` are defined in `builds/dockerenv.default`, without values. This will cause Docker to "forward" values for these variables from the current environment, so you can pass them in:
AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=... docker run --rm -ti --env-file=builds/dockerenv.default heroku-python-build-heroku-18 bash
or
export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...
docker run --rm -ti --env-file=builds/dockerenv.default heroku-python-build-heroku-18 bash
#### Passing credentials through a separate env file
This method is the easiest for users who want to build packages in their own S3 bucket, as they will have to adjust the `S3_BUCKET` and `S3_PREFIX` environment variable values anyway from their default values.
For this method, it is important to keep the credentials file in a location outside the buildpack, so that your credentials aren't accidentally committed. Copy `builds/dockerenv.default` **to a safe location outside the buildpack directory**, and insert your values for `AWS_ACCESS_KEY_ID`and `AWS_SECRET_ACCESS_KEY`.
docker run --rm -ti --env-file=../SOMEPATHOUTSIDE/s3.env heroku-python-build-heroku-18 bash
+15
View File
@@ -0,0 +1,15 @@
FROM heroku/cedar:14
WORKDIR /app
ENV WORKSPACE_DIR="/app/builds" \
S3_BUCKET="lang-python" \
S3_PREFIX="cedar-14/" \
DEBIAN_FRONTEND=noninteractive \
STACK="cedar-14"
RUN apt-get update && apt-get install -y python-pip libsqlite3-dev realpath && rm -rf /var/lib/apt/lists/*
COPY requirements.txt /app/
RUN pip install -r /app/requirements.txt
COPY . /app
+5
View File
@@ -0,0 +1,5 @@
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
S3_BUCKET
S3_PREFIX
S3_REGION
+4 -2
View File
@@ -3,9 +3,11 @@ FROM heroku/heroku:16-build
WORKDIR /app
ENV WORKSPACE_DIR="/app/builds" \
S3_BUCKET="lang-python" \
S3_PREFIX="heroku-16/"
S3_PREFIX="heroku-16/" \
DEBIAN_FRONTEND=noninteractive \
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/
RUN pip install --disable-pip-version-check --no-cache-dir -r /app/requirements.txt
+15
View File
@@ -0,0 +1,15 @@
FROM heroku/heroku:18-build
WORKDIR /app
ENV WORKSPACE_DIR="/app/builds" \
S3_BUCKET="lang-python" \
S3_PREFIX="heroku-18/" \
DEBIAN_FRONTEND=noninteractive \
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 libsqlite3-dev && rm -rf /var/lib/apt/lists/*
COPY requirements.txt /app/
RUN pip install --disable-pip-version-check --no-cache-dir -r /app/requirements.txt
COPY . /app
-28
View File
@@ -1,28 +0,0 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/vendor/
OUT_PREFIX=$1
# Skip the build for heroku-16.
if [[ $S3_PREFIX == "heroku-16" ]]; then
exit 0
fi
# Use new path, containing autoconf.
export PATH="/app/.heroku/python/bin/:$PATH"
hash -r
echo "Building libffi…"
SOURCE_TARBALL='ftp://sourceware.org/pub/libffi/libffi-3.1.tar.gz'
curl -L $SOURCE_TARBALL | tar x
cd libffi-3.1
./configure --prefix=$OUT_PREFIX --disable-static &&
make
make install
# Cleanup
cd ..
+3 -3
View File
@@ -3,9 +3,9 @@
OUT_PREFIX=$1
# Skip the build for heroku-16.
if [[ $S3_PREFIX == "heroku-16" ]]; then
exit 0
if [[ $S3_PREFIX != "cedar-14" ]]; then
echo "libmemcached only needs to be built for cedar-14, since newer stacks include it in the base image"
exit 1
fi
# fail hard
+22
View File
@@ -0,0 +1,22 @@
#!/usr/bin/env bash
# fail hard
set -o pipefail
# fail harder
set -eu
OUT_PREFIX=$1
dep_formula=${0#$WORKSPACE_DIR/} # this is the original script, e.g. pypy-5.3.1
dep_name=$(basename $BASH_SOURCE) # this is us
dep_version=${dep_formula##*"/${dep_name}-"} # "subtract" our name from full version name
dep_package=${dep_name}2-v${dep_version} # it's always "pypy2-…"
dep_dirname=${dep_package}-linux64
dep_archive_name=${dep_dirname}.tar.bz2
dep_url=https://bitbucket.org/pypy/pypy/downloads/${dep_archive_name}
echo "Building PyPy…"
curl -L "${dep_url}" | tar jx -C "${OUT_PREFIX}" --strip-components 1 # extract to $OUT_PREFIX, drop the first directory level, which is the archive name
ln "$OUT_PREFIX/bin/pypy" "$OUT_PREFIX/bin/python"
+1 -10
View File
@@ -2,13 +2,4 @@
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
# NOTICE: This formula only works for the cedar-14 stack, not cedar.
OUT_PREFIX=$1
echo "Building PyPy…"
SOURCE_TARBALL='https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.1-linux64.tar.bz2'
curl -L $SOURCE_TARBALL | tar jx
cp -R pypy2-v5.3.1-linux64/* $OUT_PREFIX
ln $OUT_PREFIX/bin/pypy $OUT_PREFIX/bin/python
source $(dirname $0)/pypy
+1 -10
View File
@@ -2,13 +2,4 @@
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
# NOTICE: This formula only works for the cedar-14 stack, not cedar.
OUT_PREFIX=$1
echo "Building PyPy…"
SOURCE_TARBALL='https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.6.0-linux64.tar.bz2'
curl -L $SOURCE_TARBALL | tar jx
cp -R pypy2-v5.6.0-linux64/* $OUT_PREFIX
ln $OUT_PREFIX/bin/pypy $OUT_PREFIX/bin/python
source $(dirname $0)/pypy
+1 -10
View File
@@ -2,13 +2,4 @@
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
# NOTICE: This formula only works for the cedar-14 and heroku-16 stacks, not cedar.
OUT_PREFIX=$1
echo "Building PyPy…"
SOURCE_TARBALL='https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.7.0-linux64.tar.bz2'
curl -L $SOURCE_TARBALL | tar jx
cp -R pypy2-v5.7.0-linux64/* $OUT_PREFIX
ln $OUT_PREFIX/bin/pypy $OUT_PREFIX/bin/python
source $(dirname $0)/pypy
+1 -10
View File
@@ -2,13 +2,4 @@
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
# NOTICE: This formula only works for the cedar-14 stack, not cedar.
OUT_PREFIX=$1
echo "Building PyPy…"
SOURCE_TARBALL='https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.7.1-linux64.tar.bz2'
curl -L $SOURCE_TARBALL | tar jx
cp -R pypy2-v5.7.1-linux64/* $OUT_PREFIX
ln $OUT_PREFIX/bin/pypy $OUT_PREFIX/bin/python
source $(dirname $0)/pypy
+1 -8
View File
@@ -2,11 +2,4 @@
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1
echo "Building PyPy…"
SOURCE_TARBALL='https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.8.0-linux64.tar.bz2'
curl -L $SOURCE_TARBALL | tar jx
cp -R pypy2-v5.8.0-linux64/* $OUT_PREFIX
ln $OUT_PREFIX/bin/pypy $OUT_PREFIX/bin/python
source $(dirname $0)/pypy
+23
View File
@@ -0,0 +1,23 @@
#!/usr/bin/env bash
# fail hard
set -o pipefail
# fail harder
set -eu
OUT_PREFIX=$1
dep_formula=${0#$WORKSPACE_DIR/} # this is the original script, e.g. pypy-5.3.1
dep_name=$(basename $BASH_SOURCE) # this is us
dep_version=${dep_formula##*"/${dep_name}-"} # "subtract" our name from full version name
dep_package=${dep_name}-v${dep_version} # it's always "pypy2-…"
dep_dirname=${dep_package}-linux64
dep_archive_name=${dep_dirname}.tar.bz2
dep_url=https://bitbucket.org/pypy/pypy/downloads/${dep_archive_name}
echo "Building PyPy…"
echo "${dep_url}"
curl -L "${dep_url}" | tar jx -C "${OUT_PREFIX}" --strip-components 1 # extract to $OUT_PREFIX, drop the first directory level, which is the archive name
ln "$OUT_PREFIX/bin/pypy" "$OUT_PREFIX/bin/python"
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
source $(dirname $0)/pypy2.7
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
source $(dirname $0)/pypy2.7
+22
View File
@@ -0,0 +1,22 @@
#!/usr/bin/env bash
# fail hard
set -o pipefail
# fail harder
set -eu
OUT_PREFIX=$1
dep_formula=${0#$WORKSPACE_DIR/} # this is the original script, e.g. pypy-5.3.1
dep_name=$(basename $BASH_SOURCE) # this is us
dep_version=${dep_formula##*"/${dep_name}-"} # "subtract" our name from full version name
dep_package=${dep_name}${dep_version_prefix:-}-v${dep_version}${dep_version_suffix:-}
dep_dirname=${dep_package}-linux64
dep_archive_name=${dep_dirname}.tar.bz2
dep_url=https://bitbucket.org/pypy/pypy/downloads/${dep_archive_name}
echo "Building PyPy3…"
curl -L "${dep_url}" | tar jx -C "${OUT_PREFIX}" --strip-components 1 # extract to $OUT_PREFIX, drop the first directory level, which is the archive name
ln "$OUT_PREFIX/bin/pypy3" "$OUT_PREFIX/bin/python"
+1 -10
View File
@@ -2,13 +2,4 @@
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
# NOTICE: This formula only works for the cedar-14 stack, not cedar.
OUT_PREFIX=$1
echo "Building PyPy…"
SOURCE_TARBALL='https://bitbucket.org/pypy/pypy/downloads/pypy3-2.4.0-linux64.tar.bz2'
curl -L $SOURCE_TARBALL | tar jx
cp -R pypy3-2.4.0-linux64/* $OUT_PREFIX
ln $OUT_PREFIX/bin/pypy3 $OUT_PREFIX/bin/python
source $(dirname $0)/pypy3
+4 -10
View File
@@ -2,13 +2,7 @@
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
# NOTICE: This formula only works for the cedar-14 stack, not cedar.
OUT_PREFIX=$1
echo "Building PyPy…"
SOURCE_TARBALL='https://bitbucket.org/pypy/pypy/downloads/pypy3.3-v5.5.0-alpha-linux64.tar.bz2'
curl -L $SOURCE_TARBALL | tar jx
cp -R pypy3-v5.5.0-linux64/* $OUT_PREFIX
ln $OUT_PREFIX/bin/pypy3 $OUT_PREFIX/bin/python
# version pypy3-5.5.0 is really called pypy3.3-v5.5.0-alpha
dep_version_prefix=".3"
dep_version_suffix="-alpha"
source $(dirname $0)/pypy3
+1 -8
View File
@@ -2,11 +2,4 @@
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1
echo "Building PyPy…"
SOURCE_TARBALL='https://bitbucket.org/pypy/pypy/downloads/pypy3-v5.7.1-linux64.tar.bz2'
curl -L $SOURCE_TARBALL | tar jx
cp -R pypy3-v5.7.1-linux64/* $OUT_PREFIX
ln $OUT_PREFIX/bin/pypy3 $OUT_PREFIX/bin/python
source $(dirname $0)/pypy3
+1 -8
View File
@@ -2,11 +2,4 @@
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1
echo "Building PyPy…"
SOURCE_TARBALL='https://bitbucket.org/pypy/pypy/downloads/pypy3-v5.8.0-linux64.tar.bz2'
curl -L $SOURCE_TARBALL | tar jx
cp -R pypy3-v5.8.0-linux64/* $OUT_PREFIX
ln $OUT_PREFIX/bin/pypy3 $OUT_PREFIX/bin/python
source $(dirname $0)/pypy3
+23
View File
@@ -0,0 +1,23 @@
#!/usr/bin/env bash
# fail hard
set -o pipefail
# fail harder
set -eu
OUT_PREFIX=$1
dep_formula=${0#$WORKSPACE_DIR/} # this is the original script, e.g. pypy-5.3.1
dep_name=$(basename $BASH_SOURCE) # this is us
dep_version=${dep_formula##*"/${dep_name}-"} # "subtract" our name from full version name
dep_package=${dep_name}${dep_version_prefix:-}-v${dep_version}${dep_version_suffix:-}
dep_dirname=${dep_package}-linux64
dep_archive_name=${dep_dirname}.tar.bz2
dep_url=https://bitbucket.org/pypy/pypy/downloads/${dep_archive_name}
echo "Building PyPy3…"
echo "${dep_url}"
curl -L "${dep_url}" | tar jx -C "${OUT_PREFIX}" --strip-components 1 # extract to $OUT_PREFIX, drop the first directory level, which is the archive name
ln "$OUT_PREFIX/bin/pypy3" "$OUT_PREFIX/bin/python"
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
source $(dirname $0)/pypy3.6
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
source $(dirname $0)/pypy3.6
+1 -12
View File
@@ -1,15 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1
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
source $(dirname $0)/python2
+1 -12
View File
@@ -1,15 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1
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
source $(dirname $0)/python2
+1 -12
View File
@@ -1,15 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1
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
source $(dirname $0)/python2
+1 -16
View File
@@ -1,19 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1
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 '{}' +
source $(dirname $0)/python2
+1 -16
View File
@@ -1,19 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1
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 '{}' +
source $(dirname $0)/python2
+1 -16
View File
@@ -1,19 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$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 '{}' +
source $(dirname $0)/python2
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
source $(dirname $0)/python2
+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 '{}' +
+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.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 -12
View File
@@ -1,15 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1
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
source $(dirname $0)/python2
+32
View File
@@ -0,0 +1,32 @@
#!/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/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
+32
View File
@@ -0,0 +1,32 @@
#!/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/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
+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
# 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
# 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
+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
+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
# 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
# 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
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
source $(dirname $0)/python3
+1 -18
View File
@@ -1,21 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1
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
source $(dirname $0)/python3
+1 -18
View File
@@ -1,21 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1
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
source $(dirname $0)/python3
+1 -18
View File
@@ -1,21 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1
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
source $(dirname $0)/python3
+1 -18
View File
@@ -1,21 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$1
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
source $(dirname $0)/python3
+1 -18
View File
@@ -1,21 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$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
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
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
source $(dirname $0)/python3
+1 -18
View File
@@ -1,21 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite
OUT_PREFIX=$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
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
+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
+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
+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
+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
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
source $(dirname $0)/python3
+33
View File
@@ -0,0 +1,33 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
OUT_PREFIX=$1
BIN_DIR="$(cd "$(dirname "$0")"/../.. || exit; pwd)/bin"
export BIN_DIR
# Orient ourselves and build download link
dep_formula=${0#$WORKSPACE_DIR/} # this is the original script, e.g. pypy-5.3.1
BASE=${dep_formula##*/} # this gives us relative path
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
dep_url=https://python.org/ftp/python/${version_number}/${python_version}.tgz
echo "Building ${python_version}..."
echo "Pulling from source: ${dep_url}"
curl -L "${dep_url}" | tar xz -C "${OUT_PREFIX}"
mv "${OUT_PREFIX}/${python_version}" 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 '{}' +
# 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
+37
View File
@@ -0,0 +1,37 @@
#!/usr/bin/env bash
# fail hard
set -o pipefail
# fail harder
set -eu
OUT_PREFIX=$1
BIN_DIR="$(cd "$(dirname "$0")"/../.. || exit; pwd)/bin"
export BIN_DIR
# Orient ourselves and build download link
dep_formula=${0#$WORKSPACE_DIR/} # this is the original script, e.g. pypy-5.3.1
BASE=${dep_formula##*/} # this gives us relative path
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
dep_url=https://python.org/ftp/python/${version_number}/${python_version}.tgz
echo "Building Python 3..."
echo "Pulling from source: ${dep_url}"
curl -L "${dep_url}" | tar xz -C "${OUT_PREFIX}"
mv "${OUT_PREFIX}/${python_version}" 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
+5
View File
@@ -0,0 +1,5 @@
#!/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
+38
View File
@@ -0,0 +1,38 @@
#!/bin/bash
set -e
BP_NAME=${1:-"heroku/python"}
curVersion=$(heroku buildpacks:versions "$BP_NAME" | awk 'FNR == 3 { print $1 }')
newVersion="v$((curVersion + 1))"
read -p "Deploy as version: $newVersion [y/n]? " choice
case "$choice" in
y|Y ) echo "";;
n|N ) exit 0;;
* ) exit 1;;
esac
originMaster=$(git rev-parse origin/master)
echo "Tagging commit $originMaster with $newVersion... "
git tag "$newVersion" "${originMaster:?}"
git push origin refs/tags/$newVersion
heroku buildpacks:publish "$BP_NAME" "$newVersion"
if [ $(git tag | grep -q previous-version) ]; then
echo "Updating previous-version tag"
git tag -d previous-version
git push origin :previous-version
git tag previous-version latest-version
fi
if [ $(git tag | grep -q latest-version) ]; then
echo "Updating latest-version tag"
git tag -d latest-version
git push origin :latest-version
git tag latest-version "${originMaster:?}"
git push --tags
fi
echo "Done."

Some files were not shown because too many files have changed in this diff Show More