mirror of
https://github.com/kennethreitz/heroku-buildpack-python.git
synced 2026-06-05 23:10:16 +00:00
Compare commits
315 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4346b41c70 | |||
| 195ed4ae15 | |||
| 4f10a7e14a | |||
| a637ec3d11 | |||
| 1dd7be4250 | |||
| c2b9121436 | |||
| 567120b4bc | |||
| b61a395cd0 | |||
| 2a3962aea7 | |||
| 364ddc98b7 | |||
| d93d283be2 | |||
| 42141c2bf9 | |||
| d82c898509 | |||
| 6545d71b46 | |||
| 93b707eae5 | |||
| 8d358218f8 | |||
| b84b168be8 | |||
| 35c810e46d | |||
| e1ea2f9354 | |||
| 7db6ea33ac | |||
| a53826a673 | |||
| b7ecb49a96 | |||
| 911140b3ac | |||
| f1c4efb464 | |||
| 5a979874ad | |||
| a32ca25520 | |||
| e304089c3e | |||
| 5d8932e5ee | |||
| 7770ab8ff2 | |||
| 277294817a | |||
| 25b17d51c3 | |||
| ac103519f8 | |||
| e8b8af045f | |||
| 0bb6d6e2bd | |||
| 0184dcac24 | |||
| 558e748e9e | |||
| dec86fbc2e | |||
| ddc310084b | |||
| bc754f402b | |||
| ea5bc23a76 | |||
| 46ecf15337 | |||
| d020d20bde | |||
| 01ff4269f2 | |||
| f507bb0c05 | |||
| 9179b3cac0 | |||
| 5be33758ed | |||
| 41a44272d2 | |||
| 6b3f63252f | |||
| c9acc4154b | |||
| d5fed79e86 | |||
| 05edd6b065 | |||
| d96914ab2e | |||
| 4c4e192317 | |||
| 2963d2520b | |||
| 85686805a7 | |||
| eef41088b1 | |||
| f7387427c8 | |||
| 23e1164c93 | |||
| fd4ab23f50 | |||
| c78bf77055 | |||
| 5e212e4db8 | |||
| 9f666cee79 | |||
| 69e9368c2d | |||
| 4513dd7522 | |||
| 8b3e99adb3 | |||
| c5972cdb74 | |||
| 7b9bc848ee | |||
| 921a4c31a8 | |||
| 67063fc34f | |||
| 21dd1782fa | |||
| beb8c70585 | |||
| b46cc0c6da | |||
| 74af94132a | |||
| 24cc273800 | |||
| c0fbb0723a | |||
| 6ab397db10 | |||
| d8623ae454 | |||
| e6d395fa27 | |||
| e77090b6b8 | |||
| c61f907079 | |||
| bd90eecd8c | |||
| 44b2ef0c4e | |||
| 38d73effc1 | |||
| 6f6b75bb1f | |||
| cd90c7d1d8 | |||
| ce3c68538d | |||
| b6adf5223b | |||
| 0818d5428f | |||
| 1d8afb452e | |||
| 1c82d820c9 | |||
| 7cf8712d3c | |||
| 2b62692ab2 | |||
| 9188d94723 | |||
| 2ba3e06f4e | |||
| 6d78f7e3ed | |||
| 1e5ff1f8c9 | |||
| 83538ca6ec | |||
| 619bd638b0 | |||
| 5c359ba0fa | |||
| 27f019105e | |||
| eb572b5ab4 | |||
| 67c3d38a03 | |||
| 8f4ca7f624 | |||
| ce3bdb37ba | |||
| a91e9c2fc1 | |||
| da96cdf21e | |||
| 0b2e4e9b22 | |||
| 129ce5f0df | |||
| 25f7421573 | |||
| 8c654b658c | |||
| ed3691a0aa | |||
| ded2c5156a | |||
| 7c3a6303d1 | |||
| 591ed6b150 | |||
| c1c4f50ef6 | |||
| 2b29e7efeb | |||
| 9f089b18e6 | |||
| 9a1e43b8f2 | |||
| ac1ba4271c | |||
| af77d9baf8 | |||
| 706e6bab4f | |||
| b6fff224dd | |||
| 61d3d9580d | |||
| 69b88cb075 | |||
| a00133892d | |||
| 5eb337b80d | |||
| d6212b46ce | |||
| 3558766ae8 | |||
| 34f4dc43d6 | |||
| 0024336558 | |||
| c60c5321df | |||
| 0ba69875f5 | |||
| c8812c7e15 | |||
| 7d4093795b | |||
| 628ad0cb8b | |||
| 77ddd7c8a6 | |||
| c53d54f203 | |||
| ed6fe287c4 | |||
| 4f5a88a05a | |||
| 347c0eba81 | |||
| 14b482603e | |||
| 58ce002d35 | |||
| 7fd3a047fd | |||
| 26b4bfbab6 | |||
| 9e00de4e56 | |||
| afa8a0f75f | |||
| 52b8ae82b8 | |||
| e6c339ebae | |||
| 3ea0735768 | |||
| 54b930bba3 | |||
| bf202224b7 | |||
| cead16eb57 | |||
| 5c91c81968 | |||
| 42594a47c1 | |||
| 9d20adca1a | |||
| 181c09cfb7 | |||
| 770947d6e6 | |||
| 0a78bd001e | |||
| 5a1ece3955 | |||
| 8266b99d1e | |||
| e27470778c | |||
| 8ef4a006e0 | |||
| 4fdaf14ded | |||
| f1da8d4b5c | |||
| eb9689c0a2 | |||
| 6fe7c6bde0 | |||
| a1b372ac66 | |||
| ddead6457a | |||
| 92b4385890 | |||
| 7074d5cb50 | |||
| 2b1f1182c3 | |||
| 38fc8f4fe7 | |||
| a203495532 | |||
| 33a69d7f52 | |||
| fe3f12c430 | |||
| aeb1a297d3 | |||
| 4c1972c0b9 | |||
| 74f0f319dc | |||
| 683bba59d7 | |||
| f890cdb889 | |||
| b3a98641f5 | |||
| ecbcfff5cb | |||
| 085d295342 | |||
| e842703721 | |||
| c229070c21 | |||
| 67867f1083 | |||
| 91b76c4ca9 | |||
| d2b82441fe | |||
| 532b36f5f7 | |||
| abe34011e5 | |||
| 4b57be0ae1 | |||
| d8a75c56d0 | |||
| 27ce818f3d | |||
| f582b2f4fa | |||
| c46a779ea1 | |||
| 06a7d9e187 | |||
| ca773cf957 | |||
| 26b54b690c | |||
| 871d5b5935 | |||
| 0382c31225 | |||
| 4a856ff5b3 | |||
| e247704dfb | |||
| c8b031fafc | |||
| 68b740cce6 | |||
| e856e787aa | |||
| 7e4159e297 | |||
| d9a73b847e | |||
| 3dbeec8db1 | |||
| 8ec0b5f0dd | |||
| 3c2839147f | |||
| a51c162444 | |||
| 14096e0ca5 | |||
| 2631f5204b | |||
| f3b1e54df4 | |||
| 536b10b249 | |||
| b22aa3b3a7 | |||
| eb395a94f9 | |||
| b2597c45d8 | |||
| 1525c1fb3a | |||
| fd17f5a470 | |||
| ac923205d0 | |||
| 6617a3cac5 | |||
| 64a4f51e1b | |||
| 6305ed415a | |||
| 3dff0d48fe | |||
| 6f94b366f8 | |||
| 6bb89e6693 | |||
| 6252e80aa6 | |||
| b22ef82b4f | |||
| 129bced2dd | |||
| c82415733d | |||
| ee93719b79 | |||
| 361eb53257 | |||
| bf9fe3badf | |||
| 9178962b84 | |||
| 2b4a68c8c8 | |||
| f38eec962f | |||
| a313e66d93 | |||
| c755286323 | |||
| 0d219f5d2e | |||
| 28bdeb6f4b | |||
| 496a1ad7d8 | |||
| 57dec77718 | |||
| 4dc60cb4ca | |||
| f5f67653f8 | |||
| b7fd5915a5 | |||
| 72f7c510b9 | |||
| ac62aa01d5 | |||
| a727daa6ff | |||
| 2187855da2 | |||
| fb1ed99470 | |||
| be68853991 | |||
| c9d794dc76 | |||
| c1cc0910c5 | |||
| 61095f726d | |||
| 721d062421 | |||
| f38c90b1d5 | |||
| 8c0284dbe8 | |||
| f8f4facdca | |||
| e97f13395f | |||
| dc87fca814 | |||
| aafd7caf77 | |||
| ef964bfc1a | |||
| e5ae885ae1 | |||
| 2291255133 | |||
| d48294f940 | |||
| ef87cce5a9 | |||
| 63048e641d | |||
| 91aa427137 | |||
| 811c1ceeb6 | |||
| 8c2e95fb46 | |||
| d47fb9f718 | |||
| 4625eca277 | |||
| b2abb41a38 | |||
| b228d36041 | |||
| 7680aea223 | |||
| 771042a619 | |||
| b1f7713916 | |||
| 7b0c04b95b | |||
| 9f09c934bf | |||
| 88bad450fd | |||
| 7614f77431 | |||
| 761f27958a | |||
| 52347a0c98 | |||
| e2e97b774a | |||
| 4f0f97959f | |||
| 93f4eeb227 | |||
| ec769e00bb | |||
| ade975d48f | |||
| 16a07abd51 | |||
| 2bc071b323 | |||
| 3c07ec133e | |||
| 5c74244695 | |||
| 4e877e4f11 | |||
| 51ec7e3741 | |||
| 1f983fea40 | |||
| a26f0374ec | |||
| a0029a8411 | |||
| 2de3b6cf1c | |||
| fd19ec2c6a | |||
| 6aec3ed37a | |||
| 7f7f0f7e3d | |||
| dd210c9002 | |||
| 2ae4bd156f | |||
| 8740fcdbad | |||
| fb18948243 | |||
| e104d36785 | |||
| 1786231a49 | |||
| fa8e09ae9c | |||
| 2dd212d020 | |||
| 15acd305d1 | |||
| 5a65a39c5e | |||
| f18754f8f0 | |||
| e860234d05 | |||
| 50d61d2935 |
@@ -0,0 +1,71 @@
|
|||||||
|
# Python Buildpack Changelog
|
||||||
|
|
||||||
|
## v74 (2015-12-29)
|
||||||
|
|
||||||
|
Added warnings for lack of Procfile.
|
||||||
|
|
||||||
|
## v72 (2015-12-07)
|
||||||
|
|
||||||
|
Updated default Python to 2.7.11.
|
||||||
|
|
||||||
|
## v72 (2015-12-03)
|
||||||
|
|
||||||
|
Added friendly warnings for common build failures.
|
||||||
|
|
||||||
|
## v70 (2015-10-29)
|
||||||
|
|
||||||
|
Improved compatibility with multi and node.js buildpacks.
|
||||||
|
|
||||||
|
## v69 (2015-10-12)
|
||||||
|
|
||||||
|
Revert to v66.
|
||||||
|
|
||||||
|
## v68 (2015-10-12)
|
||||||
|
|
||||||
|
Fixed .heroku/venv error with modern apps.
|
||||||
|
|
||||||
|
## v67 (2015-10-12)
|
||||||
|
|
||||||
|
Further improved cache compatibility with multi and node.js buildpacks.
|
||||||
|
|
||||||
|
## v66 (2015-10-09)
|
||||||
|
|
||||||
|
Improved compatibility with multi and node.js buildpacks.
|
||||||
|
|
||||||
|
## v65 (2015-10-08)
|
||||||
|
|
||||||
|
Reverted v64.
|
||||||
|
|
||||||
|
## v64 (2015-10-08)
|
||||||
|
|
||||||
|
Improved compatibility with multi and node.js buildpacks.
|
||||||
|
|
||||||
|
## v63 (2015-10-08)
|
||||||
|
|
||||||
|
Updated Pip and Setuptools.
|
||||||
|
|
||||||
|
- Setuptools updated to v18.3.2
|
||||||
|
- Pip updated to v7.1.2
|
||||||
|
|
||||||
|
|
||||||
|
## v62 (2015-08-07)
|
||||||
|
|
||||||
|
Updated Pip and Setuptools.
|
||||||
|
|
||||||
|
- Setuptools updated to v18.1
|
||||||
|
- Pip updated to v7.1.0
|
||||||
|
|
||||||
|
## v61 (2015-06-30)
|
||||||
|
|
||||||
|
Updated Pip and Setuptools.
|
||||||
|
|
||||||
|
- Setuptools updated to v18.0.1
|
||||||
|
- Pip updated to v7.0.3
|
||||||
|
|
||||||
|
## v60 (2015-05-27)
|
||||||
|
|
||||||
|
Default Python is now latest 2.7.10. Updated Pip and Distribute.
|
||||||
|
|
||||||
|
- Default Python version is v2.7.10
|
||||||
|
- Setuptools updated to v16.0
|
||||||
|
- Pip updated to v7.0.1
|
||||||
-130
@@ -1,130 +0,0 @@
|
|||||||
## v14
|
|
||||||
|
|
||||||
Features:
|
|
||||||
|
|
||||||
* Full removal of Django settings injection for new apps.
|
|
||||||
* Support for profile.d
|
|
||||||
* Fresh app detection.
|
|
||||||
* Update to Virtualenv v1.7.2
|
|
||||||
* Updated to Pip v1.1 (patched)
|
|
||||||
|
|
||||||
Bugfixes:
|
|
||||||
|
|
||||||
* Default pip path exists action.
|
|
||||||
|
|
||||||
## v13
|
|
||||||
|
|
||||||
Bugfixes:
|
|
||||||
|
|
||||||
* Fix pip quoting error.
|
|
||||||
* Only talk about collectstatic in buildpack output when it's configured.
|
|
||||||
|
|
||||||
## v12
|
|
||||||
|
|
||||||
Bugfixes:
|
|
||||||
|
|
||||||
* Catch database setting corner case.
|
|
||||||
|
|
||||||
## v11
|
|
||||||
|
|
||||||
Bugfixes:
|
|
||||||
|
|
||||||
* Cleanup collectstatic output.
|
|
||||||
|
|
||||||
|
|
||||||
## v10
|
|
||||||
|
|
||||||
Bugfixes:
|
|
||||||
|
|
||||||
* Check for collectstatic validity with --dry-run instead of --help for Django 1.4.
|
|
||||||
|
|
||||||
## v9
|
|
||||||
|
|
||||||
Bugfixes:
|
|
||||||
|
|
||||||
* Unset PYTHONHOME in buildpack for [user_env_compile](http://devcenter.heroku.com/articles/labs-user-env-compile).
|
|
||||||
|
|
||||||
## v8
|
|
||||||
|
|
||||||
Features:
|
|
||||||
|
|
||||||
* Disable Django collectstatic with `$DISABLE_COLLECTSTATIC` + [user_env_compile](http://devcenter.heroku.com/articles/labs-user-env-compile).
|
|
||||||
|
|
||||||
Bugfixes:
|
|
||||||
|
|
||||||
* Don't disbable injection for new Django apps.
|
|
||||||
* Inform user of July 1, 2012 deprecation of Django injection.
|
|
||||||
|
|
||||||
## v7
|
|
||||||
|
|
||||||
Features:
|
|
||||||
|
|
||||||
* Full removal of Django setting injection for new apps.
|
|
||||||
* Automatic execution of collectstatic.
|
|
||||||
* Suppress collectstatic errors via env SILENCE_COLLECTSTATIC.
|
|
||||||
* Increase settings.py search depth to 3.
|
|
||||||
* Search recursively from included requirements.txt files.
|
|
||||||
|
|
||||||
|
|
||||||
## v6 (03/23/2012)
|
|
||||||
|
|
||||||
Features:
|
|
||||||
|
|
||||||
* Dist packages (setup.py) support.
|
|
||||||
* Move new virtualenvs to `/app/.heroku/venv`.
|
|
||||||
* Heavily improved Django app detection, accounting for `Django` in `requirements.txt`.
|
|
||||||
* Literate [documentation](http://python-buildpack.herokuapp.com).
|
|
||||||
* Default `$PYTHONHOME`, `$PYTHONPATH`, and `$LANG` configurations.
|
|
||||||
* Disable Django setting injection with `$DISABLE_INJECTION` + [user_env_compile](http://devcenter.heroku.com/articles/labs-user-env-compile).
|
|
||||||
* General code refactor and improved messaging.
|
|
||||||
* Unit tests.
|
|
||||||
|
|
||||||
Bugfixes:
|
|
||||||
|
|
||||||
* Django 1.4 startproject template layout support.
|
|
||||||
* Django `manage.py` location can now be independent from `settings.py`.
|
|
||||||
|
|
||||||
## v5 (02/01/2012)
|
|
||||||
|
|
||||||
Bugfixes:
|
|
||||||
|
|
||||||
* Git requirements 100% work.
|
|
||||||
|
|
||||||
|
|
||||||
## v4 (01/20/2012)
|
|
||||||
|
|
||||||
Features:
|
|
||||||
|
|
||||||
* Updated to virtualenv v1.7 with patched pip v1.2.
|
|
||||||
* Actually activate created virtualenv within compile process.
|
|
||||||
* Use distribute instead of deprecated setuptools.
|
|
||||||
* Automatically destroy and rebuild corrupt virtualenvs.
|
|
||||||
* Refactor django and pylibmc detection.
|
|
||||||
|
|
||||||
Bugfixes:
|
|
||||||
|
|
||||||
* Fixed `package==dev` in requirements with patched pip embedded within virtualenv. Patch upstreamed.
|
|
||||||
* Minor curl/rm flag fixes (thanks, contributors!)
|
|
||||||
|
|
||||||
|
|
||||||
## v3 (12/07/2011)
|
|
||||||
|
|
||||||
Bugfixes:
|
|
||||||
|
|
||||||
* Better django setup.py injection.
|
|
||||||
|
|
||||||
|
|
||||||
## v2 (11/15/2011)
|
|
||||||
|
|
||||||
Features:
|
|
||||||
|
|
||||||
* Support for pylibmc and libmemcached +sasl.
|
|
||||||
|
|
||||||
Bugfixes:
|
|
||||||
|
|
||||||
* Detect when virtualenv is checked in and alert user.
|
|
||||||
|
|
||||||
|
|
||||||
## v1 (10/01/2011)
|
|
||||||
|
|
||||||
* Conception.
|
|
||||||
@@ -3,3 +3,8 @@
|
|||||||
|
|
||||||
tests:
|
tests:
|
||||||
./bin/test
|
./bin/test
|
||||||
|
|
||||||
|
tools:
|
||||||
|
git clone https://github.com/kennethreitz/pip-pop.git
|
||||||
|
mv pip-pop/bin/* vendor/pip-pop/
|
||||||
|
rm -fr pip-pop
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
Heroku buildpack: Python
|
# Heroku buildpack: Python
|
||||||
========================
|

|
||||||
|
|
||||||
This is a [Heroku buildpack](http://devcenter.heroku.com/articles/buildpacks) for Python apps, powered by [pip](http://www.pip-installer.org/).
|
This is a [Heroku buildpack](http://devcenter.heroku.com/articles/buildpacks) for Python apps, powered by [pip](http://www.pip-installer.org/).
|
||||||
|
|
||||||
|
This buildpack supports running Django and Flask apps.
|
||||||
|
|
||||||
|
|
||||||
Usage
|
Usage
|
||||||
-----
|
-----
|
||||||
@@ -17,7 +19,7 @@ Example usage:
|
|||||||
$ git push heroku master
|
$ git push heroku master
|
||||||
...
|
...
|
||||||
-----> Python app detected
|
-----> Python app detected
|
||||||
-----> Installing runtime (python-2.7.8)
|
-----> Installing runtime (python-2.7.11)
|
||||||
-----> Installing dependencies using pip
|
-----> Installing dependencies using pip
|
||||||
Downloading/unpacking requests (from -r requirements.txt (line 1))
|
Downloading/unpacking requests (from -r requirements.txt (line 1))
|
||||||
Installing collected packages: requests
|
Installing collected packages: requests
|
||||||
@@ -28,7 +30,7 @@ Example usage:
|
|||||||
|
|
||||||
You can also add it to upcoming builds of an existing application:
|
You can also add it to upcoming builds of an existing application:
|
||||||
|
|
||||||
$ heroku config:add BUILDPACK_URL=git://github.com/heroku/heroku-buildpack-python.git
|
$ heroku buildpacks:set git://github.com/heroku/heroku-buildpack-python.git
|
||||||
|
|
||||||
The buildpack will detect your app as Python if it has the file `requirements.txt` in the root.
|
The buildpack will detect your app as Python if it has the file `requirements.txt` in the root.
|
||||||
|
|
||||||
@@ -40,12 +42,13 @@ Specify a Runtime
|
|||||||
You can also provide arbitrary releases Python with a `runtime.txt` file.
|
You can also provide arbitrary releases Python with a `runtime.txt` file.
|
||||||
|
|
||||||
$ cat runtime.txt
|
$ cat runtime.txt
|
||||||
python-3.4.1
|
python-3.5.0
|
||||||
|
|
||||||
Runtime options include:
|
Runtime options include:
|
||||||
|
|
||||||
- python-2.7.8
|
- python-2.7.11
|
||||||
- python-3.4.1
|
- python-3.5.1
|
||||||
- pypy-1.9 (experimental)
|
- pypy-4.0.1 (unsupported, experimental)
|
||||||
|
- pypy3-2.4.0 (unsupported, experimental)
|
||||||
|
|
||||||
Other [unsupported runtimes](https://github.com/heroku/heroku-buildpack-python/tree/master/builds/runtimes) are available as well.
|
Other [unsupported runtimes](https://github.com/heroku/heroku-buildpack-python/tree/master/builds/runtimes) are available as well.
|
||||||
|
|||||||
+84
-33
@@ -7,6 +7,8 @@
|
|||||||
# Fail fast and fail hard.
|
# Fail fast and fail hard.
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
|
[ "$BUILDPACK_XTRACE" ] && set -o xtrace
|
||||||
|
|
||||||
# Prepend proper path for virtualenv hackery. This will be deprecated soon.
|
# Prepend proper path for virtualenv hackery. This will be deprecated soon.
|
||||||
export PATH=:/usr/local/bin:$PATH
|
export PATH=:/usr/local/bin:$PATH
|
||||||
|
|
||||||
@@ -17,19 +19,18 @@ BUILD_DIR=$1
|
|||||||
CACHE_DIR=$2
|
CACHE_DIR=$2
|
||||||
ENV_DIR=$3
|
ENV_DIR=$3
|
||||||
|
|
||||||
|
|
||||||
CACHED_DIRS=".heroku"
|
|
||||||
|
|
||||||
# Static configurations for virtualenv caches.
|
# Static configurations for virtualenv caches.
|
||||||
VIRTUALENV_LOC=".heroku/venv"
|
VIRTUALENV_LOC=".heroku/venv"
|
||||||
LEGACY_TRIGGER="lib/python2.7"
|
LEGACY_TRIGGER="lib/python2.7"
|
||||||
PROFILE_PATH="$BUILD_DIR/.profile.d/python.sh"
|
|
||||||
|
|
||||||
DEFAULT_PYTHON_VERSION="python-2.7.8"
|
DEFAULT_PYTHON_VERSION="python-2.7.11"
|
||||||
DEFAULT_PYTHON_STACK="cedar"
|
DEFAULT_PYTHON_STACK="cedar"
|
||||||
PYTHON_EXE="/app/.heroku/python/bin/python"
|
PYTHON_EXE="/app/.heroku/python/bin/python"
|
||||||
PIP_VERSION="1.5.6"
|
PIP_VERSION="7.1.2"
|
||||||
SETUPTOOLS_VERSION="5.4.1"
|
SETUPTOOLS_VERSION="18.7.1"
|
||||||
|
|
||||||
|
# Common Problem Warnings
|
||||||
|
export WARNINGS_LOG=$(mktemp)
|
||||||
|
|
||||||
# Setup bpwatch
|
# Setup bpwatch
|
||||||
export PATH=$PATH:$ROOT_DIR/vendor/bpwatch
|
export PATH=$PATH:$ROOT_DIR/vendor/bpwatch
|
||||||
@@ -54,36 +55,47 @@ TMP_APP_DIR=$CACHE_DIR/tmp_app_dir
|
|||||||
|
|
||||||
bpwatch start compile
|
bpwatch start compile
|
||||||
|
|
||||||
|
|
||||||
# We'll need to send these statics to other scripts we `source`.
|
|
||||||
export BUILD_DIR CACHE_DIR BIN_DIR PROFILE_PATH
|
|
||||||
|
|
||||||
# Syntax sugar.
|
# Syntax sugar.
|
||||||
source $BIN_DIR/utils
|
source $BIN_DIR/utils
|
||||||
|
|
||||||
|
# Import collection of warnings.
|
||||||
|
source $BIN_DIR/warnings
|
||||||
|
|
||||||
# Directory Hacks for path consistiency.
|
# Directory Hacks for path consistiency.
|
||||||
APP_DIR='/app'
|
APP_DIR='/app'
|
||||||
TMP_APP_DIR=$CACHE_DIR/tmp_app_dir
|
TMP_APP_DIR=$CACHE_DIR/tmp_app_dir
|
||||||
|
|
||||||
# Copy Anvil app dir to temporary storage...
|
# Skip these steps for Docker.
|
||||||
bpwatch start anvil_appdir_stage
|
if [[ ! "$DOCKER_BUILD" ]]; then
|
||||||
|
|
||||||
|
# Copy Anvil app dir to temporary storage...
|
||||||
|
bpwatch start anvil_appdir_stage
|
||||||
if [ "$SLUG_ID" ]; then
|
if [ "$SLUG_ID" ]; then
|
||||||
mkdir -p $TMP_APP_DIR
|
mkdir -p $TMP_APP_DIR
|
||||||
deep-mv $APP_DIR $TMP_APP_DIR
|
deep-mv $APP_DIR $TMP_APP_DIR
|
||||||
else
|
else
|
||||||
deep-rm $APP_DIR
|
deep-rm $APP_DIR
|
||||||
fi
|
fi
|
||||||
bpwatch stop anvil_appdir_stage
|
bpwatch stop anvil_appdir_stage
|
||||||
|
|
||||||
|
# Copy Application code in.
|
||||||
|
bpwatch start appdir_stage
|
||||||
|
deep-cp $BUILD_DIR $APP_DIR
|
||||||
|
bpwatch stop appdir_stage
|
||||||
|
fi
|
||||||
|
|
||||||
# Copy Application code in.
|
|
||||||
bpwatch start appdir_stage
|
|
||||||
deep-mv $BUILD_DIR $APP_DIR
|
|
||||||
bpwatch stop appdir_stage
|
|
||||||
|
|
||||||
# Set new context.
|
# Set new context.
|
||||||
ORIG_BUILD_DIR=$BUILD_DIR
|
ORIG_BUILD_DIR=$BUILD_DIR
|
||||||
BUILD_DIR=$APP_DIR
|
BUILD_DIR=$APP_DIR
|
||||||
|
|
||||||
|
# Set up outputs under new context
|
||||||
|
PROFILE_PATH="$BUILD_DIR/.profile.d/python.sh"
|
||||||
|
WEBCONCURRENCY_PROFILE_PATH="$BUILD_DIR/.profile.d/python.webconcurrency.sh"
|
||||||
|
|
||||||
|
# We'll need to send these statics to other scripts we `source`.
|
||||||
|
export BUILD_DIR CACHE_DIR BIN_DIR PROFILE_PATH
|
||||||
|
|
||||||
# Prepend proper path buildpack use.
|
# Prepend proper path buildpack use.
|
||||||
export PATH=$BUILD_DIR/.heroku/python/bin:$BUILD_DIR/.heroku/vendor/bin:$PATH
|
export PATH=$BUILD_DIR/.heroku/python/bin:$BUILD_DIR/.heroku/vendor/bin:$PATH
|
||||||
export PYTHONUNBUFFERED=1
|
export PYTHONUNBUFFERED=1
|
||||||
@@ -97,6 +109,12 @@ export PKG_CONFIG_PATH=/app/.heroku/vendor/lib/pkg-config:$BUILD_DIR/.heroku/ven
|
|||||||
# Switch to the repo's context.
|
# Switch to the repo's context.
|
||||||
cd $BUILD_DIR
|
cd $BUILD_DIR
|
||||||
|
|
||||||
|
# Warn for lack of Procfile.
|
||||||
|
if [[ ! -f Procfile ]]; then
|
||||||
|
puts-warn 'Warning: Your application is missing a Procfile. This file tells Heroku how to run your application.'
|
||||||
|
puts-warn 'Learn more: https://devcenter.heroku.com/articles/procfile'
|
||||||
|
fi
|
||||||
|
|
||||||
# Experimental pre_compile hook.
|
# Experimental pre_compile hook.
|
||||||
bpwatch start pre_compile
|
bpwatch start pre_compile
|
||||||
source $BIN_DIR/steps/hooks/pre_compile
|
source $BIN_DIR/steps/hooks/pre_compile
|
||||||
@@ -107,6 +125,7 @@ if [ ! -f requirements.txt ]; then
|
|||||||
echo "-e ." > requirements.txt
|
echo "-e ." > requirements.txt
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Sticky runtimes.
|
# Sticky runtimes.
|
||||||
if [ -f $CACHE_DIR/.heroku/python-version ]; then
|
if [ -f $CACHE_DIR/.heroku/python-version ]; then
|
||||||
DEFAULT_PYTHON_VERSION=$(cat $CACHE_DIR/.heroku/python-version)
|
DEFAULT_PYTHON_VERSION=$(cat $CACHE_DIR/.heroku/python-version)
|
||||||
@@ -135,9 +154,14 @@ bpwatch stop clear_old_venvs
|
|||||||
|
|
||||||
# Restore old artifacts from the cache.
|
# Restore old artifacts from the cache.
|
||||||
bpwatch start restore_cache
|
bpwatch start restore_cache
|
||||||
for dir in $CACHED_DIRS; do
|
mkdir -p .heroku
|
||||||
cp -R $CACHE_DIR/$dir . &> /dev/null || true
|
|
||||||
done
|
cp -R $CACHE_DIR/.heroku/python .heroku/ &> /dev/null || true
|
||||||
|
cp -R $CACHE_DIR/.heroku/python-stack .heroku/ &> /dev/null || true
|
||||||
|
cp -R $CACHE_DIR/.heroku/python-version .heroku/ &> /dev/null || true
|
||||||
|
cp -R $CACHE_DIR/.heroku/vendor .heroku/ &> /dev/null || true
|
||||||
|
cp -R $CACHE_DIR/.heroku/venv .heroku/ &> /dev/null || true
|
||||||
|
|
||||||
bpwatch stop restore_cache
|
bpwatch stop restore_cache
|
||||||
|
|
||||||
set +e
|
set +e
|
||||||
@@ -150,6 +174,9 @@ mkdir -p $(dirname $PROFILE_PATH)
|
|||||||
# Install Python.
|
# Install Python.
|
||||||
source $BIN_DIR/steps/python
|
source $BIN_DIR/steps/python
|
||||||
|
|
||||||
|
# Sanity check for setuptools/distribute.
|
||||||
|
source $BIN_DIR/steps/setuptools
|
||||||
|
|
||||||
# Uninstall removed dependencies with Pip.
|
# Uninstall removed dependencies with Pip.
|
||||||
source $BIN_DIR/steps/pip-uninstall
|
source $BIN_DIR/steps/pip-uninstall
|
||||||
|
|
||||||
@@ -159,11 +186,17 @@ source $BIN_DIR/steps/mercurial
|
|||||||
# Pylibmc support.
|
# Pylibmc support.
|
||||||
source $BIN_DIR/steps/pylibmc
|
source $BIN_DIR/steps/pylibmc
|
||||||
|
|
||||||
|
# Libffi support.
|
||||||
|
source $BIN_DIR/steps/cryptography
|
||||||
|
|
||||||
|
# GDAL support.
|
||||||
|
source $BIN_DIR/steps/gdal
|
||||||
|
|
||||||
# Install dependencies with Pip.
|
# Install dependencies with Pip.
|
||||||
source $BIN_DIR/steps/pip-install
|
source $BIN_DIR/steps/pip-install
|
||||||
|
|
||||||
# Django collectstatic support.
|
# Django collectstatic support.
|
||||||
source $BIN_DIR/steps/collectstatic
|
sub-env $BIN_DIR/steps/collectstatic
|
||||||
|
|
||||||
|
|
||||||
# ### Finalize
|
# ### Finalize
|
||||||
@@ -173,12 +206,15 @@ source $BIN_DIR/steps/collectstatic
|
|||||||
set-env PATH '$HOME/.heroku/python/bin:$PATH'
|
set-env PATH '$HOME/.heroku/python/bin:$PATH'
|
||||||
set-env PYTHONUNBUFFERED true
|
set-env PYTHONUNBUFFERED true
|
||||||
set-env PYTHONHOME /app/.heroku/python
|
set-env PYTHONHOME /app/.heroku/python
|
||||||
set-env LIBRARY_PATH /app/.heroku/vendor/lib:/app/.heroku/python/lib
|
set-env LIBRARY_PATH '/app/.heroku/vendor/lib:/app/.heroku/python/lib:$LIBRARY_PATH'
|
||||||
set-env LD_LIBRARY_PATH '/app/.heroku/vendor/lib:/app/.heroku/python/lib:$LD_LIBRARY_PATH'
|
set-env LD_LIBRARY_PATH '/app/.heroku/vendor/lib:/app/.heroku/python/lib:$LD_LIBRARY_PATH'
|
||||||
set-default-env LANG en_US.UTF-8
|
set-default-env LANG en_US.UTF-8
|
||||||
set-default-env PYTHONHASHSEED random
|
set-default-env PYTHONHASHSEED random
|
||||||
set-default-env PYTHONPATH /app/
|
set-default-env PYTHONPATH /app/
|
||||||
|
|
||||||
|
# Install sane-default script for WEB_CONCURRENCY environment variable.
|
||||||
|
cp $ROOT_DIR/vendor/python.webconcurrency.sh $WEBCONCURRENCY_PROFILE_PATH
|
||||||
|
|
||||||
|
|
||||||
# Experimental post_compile hook.
|
# Experimental post_compile hook.
|
||||||
bpwatch start post_compile
|
bpwatch start post_compile
|
||||||
@@ -187,21 +223,36 @@ bpwatch stop post_compile
|
|||||||
|
|
||||||
# Store new artifacts in cache.
|
# Store new artifacts in cache.
|
||||||
bpwatch start dump_cache
|
bpwatch start dump_cache
|
||||||
for dir in $CACHED_DIRS; do
|
|
||||||
rm -rf $CACHE_DIR/$dir
|
rm -rf $CACHE_DIR/.heroku/python
|
||||||
cp -R $dir $CACHE_DIR/
|
rm -rf $CACHE_DIR/.heroku/python-version
|
||||||
done
|
rm -rf $CACHE_DIR/.heroku/python-stack
|
||||||
|
rm -rf $CACHE_DIR/.heroku/vendor
|
||||||
|
rm -rf $CACHE_DIR/.heroku/venv
|
||||||
|
|
||||||
|
mkdir -p $CACHE_DIR/.heroku
|
||||||
|
cp -R .heroku/python $CACHE_DIR/.heroku/
|
||||||
|
cp -R .heroku/python-version $CACHE_DIR/.heroku/
|
||||||
|
cp -R .heroku/python-stack $CACHE_DIR/.heroku/ &> /dev/null || true
|
||||||
|
cp -R .heroku/vendor $CACHE_DIR/.heroku/ &> /dev/null || true
|
||||||
|
cp -R .heroku/venv $CACHE_DIR/.heroku/ &> /dev/null || true
|
||||||
|
|
||||||
bpwatch stop dump_cache
|
bpwatch stop dump_cache
|
||||||
|
|
||||||
# ### Fin.
|
# ### Fin.
|
||||||
bpwatch start appdir_commit
|
if [[ ! "$DOCKER_BUILD" ]]; then
|
||||||
deep-mv $BUILD_DIR $ORIG_BUILD_DIR
|
|
||||||
bpwatch stop appdir_commit
|
|
||||||
|
|
||||||
bpwatch start anvil_appdir_commit
|
bpwatch start appdir_commit
|
||||||
|
deep-rm $ORIG_BUILD_DIR
|
||||||
|
deep-mv $BUILD_DIR $ORIG_BUILD_DIR
|
||||||
|
bpwatch stop appdir_commit
|
||||||
|
|
||||||
|
bpwatch start anvil_appdir_commit
|
||||||
if [ "$SLUG_ID" ]; then
|
if [ "$SLUG_ID" ]; then
|
||||||
deep-mv $TMP_APP_DIR $APP_DIR
|
deep-mv $TMP_APP_DIR $APP_DIR
|
||||||
fi
|
fi
|
||||||
|
|
||||||
bpwatch stop anvil_appdir_commit
|
bpwatch stop anvil_appdir_commit
|
||||||
bpwatch stop compile
|
bpwatch stop compile
|
||||||
|
fi
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -18,6 +18,6 @@ if [[ $MANAGE_FILE ]]; then
|
|||||||
cat <<EOF
|
cat <<EOF
|
||||||
|
|
||||||
addons:
|
addons:
|
||||||
heroku-postgresql:hobby-dev
|
heroku-postgresql
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
source $BIN_DIR/utils
|
source $BIN_DIR/utils
|
||||||
|
|
||||||
MANAGE_FILE=$(find . -maxdepth 3 -type f -name 'manage.py' | head -1)
|
MANAGE_FILE=$(find . -maxdepth 3 -type f -name 'manage.py' -printf '%d\t%P\n' | sort -nk1 | cut -f2 | head -1)
|
||||||
MANAGE_FILE=${MANAGE_FILE:-fakepath}
|
MANAGE_FILE=${MANAGE_FILE:-fakepath}
|
||||||
|
|
||||||
[ -f .heroku/collectstatic_disabled ] && DISABLE_COLLECTSTATIC=1
|
[ -f .heroku/collectstatic_disabled ] && DISABLE_COLLECTSTATIC=1
|
||||||
|
|||||||
Executable
+37
@@ -0,0 +1,37 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# This script serves as the Pylibmc build step of the
|
||||||
|
# [**Python Buildpack**](https://github.com/heroku/heroku-buildpack-python)
|
||||||
|
# compiler.
|
||||||
|
#
|
||||||
|
# A [buildpack](http://devcenter.heroku.com/articles/buildpacks) is an
|
||||||
|
# adapter between a Python application and Heroku's runtime.
|
||||||
|
#
|
||||||
|
# This script is invoked by [`bin/compile`](/).
|
||||||
|
|
||||||
|
# The location of the pre-compiled cryptography binary.
|
||||||
|
VENDORED_LIBFFI="https://lang-python.s3.amazonaws.com/$STACK/libraries/vendor/libffi.tar.gz"
|
||||||
|
|
||||||
|
PKG_CONFIG_PATH="/app/.heroku/vendor/lib/pkgconfig:$PKG_CONFIG_PATH"
|
||||||
|
|
||||||
|
# Syntax sugar.
|
||||||
|
source $BIN_DIR/utils
|
||||||
|
|
||||||
|
bpwatch start libffi_install
|
||||||
|
|
||||||
|
# If pylibmc exists within requirements, use vendored cryptography.
|
||||||
|
if (pip-grep -s requirements.txt bcrypt cffi cryptography pyOpenSSL PyOpenSSL requests[security] &> /dev/null) then
|
||||||
|
|
||||||
|
if [ -d ".heroku/vendor/lib/libffi-3.1.1" ]; then
|
||||||
|
export LIBFFI=$(pwd)/vendor
|
||||||
|
else
|
||||||
|
echo "-----> Noticed cffi. Bootstrapping libffi."
|
||||||
|
mkdir -p .heroku/vendor
|
||||||
|
# Download and extract cryptography into target vendor directory.
|
||||||
|
curl $VENDORED_LIBFFI -s | tar zxv -C .heroku/vendor &> /dev/null
|
||||||
|
|
||||||
|
export LIBFFI=$(pwd)/vendor
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
bpwatch stop libffi_install
|
||||||
Executable
+37
@@ -0,0 +1,37 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# This script serves as the GDAL build step of the
|
||||||
|
# [**Python Buildpack**](https://github.com/heroku/heroku-buildpack-python)
|
||||||
|
# compiler.
|
||||||
|
#
|
||||||
|
# A [buildpack](http://devcenter.heroku.com/articles/buildpacks) is an
|
||||||
|
# adapter between a Python application and Heroku's runtime.
|
||||||
|
#
|
||||||
|
# This script is invoked by [`bin/compile`](/).
|
||||||
|
|
||||||
|
# The location of the pre-compiled cryptography binary.
|
||||||
|
VENDORED_GDAL="https://lang-python.s3.amazonaws.com/$STACK/libraries/vendor/gdal.tar.gz"
|
||||||
|
|
||||||
|
PKG_CONFIG_PATH="/app/.heroku/vendor/lib/pkgconfig:$PKG_CONFIG_PATH"
|
||||||
|
|
||||||
|
# Syntax sugar.
|
||||||
|
source $BIN_DIR/utils
|
||||||
|
|
||||||
|
bpwatch start gdal_install
|
||||||
|
|
||||||
|
# If GDAL exists within requirements, use vendored gdal.
|
||||||
|
if (pip-grep -s requirements.txt GDAL &> /dev/null) then
|
||||||
|
|
||||||
|
if [ -f ".heroku/vendor/bin/gdalserver" ]; then
|
||||||
|
export GDAL=$(pwd)/vendor
|
||||||
|
else
|
||||||
|
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
|
||||||
|
|
||||||
|
export GDAL=$(pwd)/vendor
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
bpwatch stop gdal_install
|
||||||
+11
-1
@@ -4,7 +4,17 @@ puts-step "Installing dependencies with pip"
|
|||||||
[ ! "$FRESH_PYTHON" ] && bpwatch start pip_install
|
[ ! "$FRESH_PYTHON" ] && bpwatch start pip_install
|
||||||
[ "$FRESH_PYTHON" ] && bpwatch start pip_install_first
|
[ "$FRESH_PYTHON" ] && bpwatch start pip_install_first
|
||||||
|
|
||||||
/app/.heroku/python/bin/pip install -r requirements.txt --exists-action=w --src=./.heroku/src --allow-all-external | cleanup | indent
|
set +e
|
||||||
|
/app/.heroku/python/bin/pip install -r requirements.txt --exists-action=w --src=./.heroku/src --allow-all-external --disable-pip-version-check --no-cache-dir | cleanup | log-output | indent
|
||||||
|
PIP_STATUS="${PIPESTATUS[0]}"
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [[ ! $PIP_STATUS -eq 0 ]]; then
|
||||||
|
echo
|
||||||
|
show-warnings
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Smart Requirements handling
|
# Smart Requirements handling
|
||||||
cp requirements.txt .heroku/python/requirements-declared.txt
|
cp requirements.txt .heroku/python/requirements-declared.txt
|
||||||
|
|||||||
@@ -3,7 +3,11 @@ set +e
|
|||||||
bpwatch start pip_uninstall
|
bpwatch start pip_uninstall
|
||||||
if [[ -f .heroku/python/requirements-declared.txt ]]; then
|
if [[ -f .heroku/python/requirements-declared.txt ]]; then
|
||||||
|
|
||||||
pip-diff --stale .heroku/python/requirements-declared.txt requirements.txt > .heroku/python/requirements-stale.txt
|
cp .heroku/python/requirements-declared.txt requirements-declared.txt
|
||||||
|
|
||||||
|
pip-diff --stale requirements-declared.txt requirements.txt --exclude setuptools pip > .heroku/python/requirements-stale.txt
|
||||||
|
|
||||||
|
rm -fr requirements-declared.txt
|
||||||
|
|
||||||
if [[ -s .heroku/python/requirements-stale.txt ]]; then
|
if [[ -s .heroku/python/requirements-stale.txt ]]; then
|
||||||
puts-step "Uninstalling stale dependencies"
|
puts-step "Uninstalling stale dependencies"
|
||||||
|
|||||||
+8
-11
@@ -10,30 +10,27 @@
|
|||||||
# This script is invoked by [`bin/compile`](/).
|
# This script is invoked by [`bin/compile`](/).
|
||||||
|
|
||||||
# The location of the pre-compiled libmemcached binary.
|
# The location of the pre-compiled libmemcached binary.
|
||||||
VENDORED_MEMCACHED="http://cl.ly/0a191R3K160t1w1P0N25/vendor-libmemcached.tar.gz"
|
VENDORED_MEMCACHED="https://lang-python.s3.amazonaws.com/$STACK/libraries/vendor/libmemcache.tar.gz"
|
||||||
|
|
||||||
# Syntax sugar.
|
# Syntax sugar.
|
||||||
source $BIN_DIR/utils
|
source $BIN_DIR/utils
|
||||||
|
|
||||||
|
|
||||||
bpwatch start pylibmc_install
|
bpwatch start pylibmc_install
|
||||||
|
|
||||||
# If pylibmc exists within requirements, use vendored libmemcached.
|
# If pylibmc exists within requirements, use vendored libmemcached.
|
||||||
if (pip-grep -s requirements.txt pylibmc) then
|
if (pip-grep -s requirements.txt pylibmc &> /dev/null) then
|
||||||
echo "-----> Noticed pylibmc. Bootstrapping libmemcached."
|
|
||||||
cd .heroku
|
|
||||||
|
|
||||||
if [ -d "vendor/lib/sasl2" ]; then
|
if [ -d ".heroku/vendor/lib/sasl2" ]; then
|
||||||
export LIBMEMCACHED=$(pwd)/vendor
|
export LIBMEMCACHED=$(pwd)/vendor
|
||||||
else
|
else
|
||||||
|
echo "-----> Noticed pylibmc. Bootstrapping libmemcached."
|
||||||
|
mkdir -p .heroku/vendor
|
||||||
# Download and extract libmemcached into target vendor directory.
|
# Download and extract libmemcached into target vendor directory.
|
||||||
curl -s -L -o tmp-libmemcached.tar.gz $VENDORED_MEMCACHED
|
curl $VENDORED_MEMCACHED -s | tar zxv -C .heroku/vendor &> /dev/null
|
||||||
tar -zxvf tmp-libmemcached.tar.gz > /dev/null
|
|
||||||
rm tmp-libmemcached.tar.gz
|
|
||||||
export LIBMEMCACHED=$(pwd)/vendor
|
export LIBMEMCACHED=$(pwd)/vendor
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export LIBMEMCACHED=$(pwd)/vendor
|
|
||||||
cd ..
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
bpwatch stop pylibmc_install
|
bpwatch stop pylibmc_install
|
||||||
|
|||||||
+9
-10
@@ -15,8 +15,7 @@ fi
|
|||||||
|
|
||||||
if [ ! $STACK = $CACHED_PYTHON_STACK ]; then
|
if [ ! $STACK = $CACHED_PYTHON_STACK ]; then
|
||||||
bpwatch start uninstall_python
|
bpwatch start uninstall_python
|
||||||
puts-step "Stack changed, re-installing runtime"
|
rm -fr .heroku/python .heroku/python-stack .heroku/vendor
|
||||||
rm -fr .heroku/python
|
|
||||||
unset SKIP_INSTALL
|
unset SKIP_INSTALL
|
||||||
bpwatch stop uninstall_python
|
bpwatch stop uninstall_python
|
||||||
fi
|
fi
|
||||||
@@ -29,7 +28,7 @@ if [ ! "$SKIP_INSTALL" ]; then
|
|||||||
# Prepare destination directory.
|
# Prepare destination directory.
|
||||||
mkdir -p .heroku/python
|
mkdir -p .heroku/python
|
||||||
|
|
||||||
curl http://lang-python.s3.amazonaws.com/$STACK/runtimes/$PYTHON_VERSION.tar.gz -s | tar zxv -C .heroku/python &> /dev/null
|
curl https://lang-python.s3.amazonaws.com/$STACK/runtimes/$PYTHON_VERSION.tar.gz -s | tar zxv -C .heroku/python &> /dev/null
|
||||||
if [[ $? != 0 ]] ; then
|
if [[ $? != 0 ]] ; then
|
||||||
puts-warn "Requested runtime ($PYTHON_VERSION) is not available for this stack ($STACK)."
|
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"
|
puts-warn "Aborting. More info: https://devcenter.heroku.com/articles/python-support"
|
||||||
@@ -52,22 +51,22 @@ if [ "$FRESH_PYTHON" ] || [[ ! $(pip --version) == *$PIP_VERSION* ]]; then
|
|||||||
|
|
||||||
bpwatch start prepare_environment
|
bpwatch start prepare_environment
|
||||||
|
|
||||||
|
TMPTARDIR=$(mktemp -d)
|
||||||
|
trap "rm -rf $TMPTARDIR" RETURN
|
||||||
|
|
||||||
bpwatch start install_setuptools
|
bpwatch start install_setuptools
|
||||||
# Prepare it for the real world
|
# Prepare it for the real world
|
||||||
# puts-step "Installing Setuptools ($SETUPTOOLS_VERSION)"
|
# puts-step "Installing Setuptools ($SETUPTOOLS_VERSION)"
|
||||||
cd $ROOT_DIR/vendor/
|
tar zxf $ROOT_DIR/vendor/setuptools-$SETUPTOOLS_VERSION.tar.gz -C $TMPTARDIR
|
||||||
tar zxf setuptools-$SETUPTOOLS_VERSION.tar.gz
|
cd $TMPTARDIR/setuptools-$SETUPTOOLS_VERSION/
|
||||||
cd $ROOT_DIR/vendor/setuptools-$SETUPTOOLS_VERSION/
|
|
||||||
python setup.py install &> /dev/null
|
python setup.py install &> /dev/null
|
||||||
cd $WORKING_DIR
|
cd $WORKING_DIR
|
||||||
bpwatch stop install_setuptoools
|
bpwatch stop install_setuptoools
|
||||||
|
|
||||||
bpwatch start install_pip
|
bpwatch start install_pip
|
||||||
# puts-step "Installing Pip ($PIP_VERSION)"
|
# puts-step "Installing Pip ($PIP_VERSION)"
|
||||||
|
tar zxf $ROOT_DIR/vendor/pip-$PIP_VERSION.tar.gz -C $TMPTARDIR
|
||||||
cd $ROOT_DIR/vendor/
|
cd $TMPTARDIR/pip-$PIP_VERSION/
|
||||||
tar zxf pip-$PIP_VERSION.tar.gz
|
|
||||||
cd $ROOT_DIR/vendor/pip-$PIP_VERSION/
|
|
||||||
python setup.py install &> /dev/null
|
python setup.py install &> /dev/null
|
||||||
cd $WORKING_DIR
|
cd $WORKING_DIR
|
||||||
|
|
||||||
|
|||||||
Executable
+11
@@ -0,0 +1,11 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Syntax sugar.
|
||||||
|
source $BIN_DIR/utils
|
||||||
|
|
||||||
|
if (pip-grep -s requirements.txt setuptools distribute &> /dev/null) then
|
||||||
|
|
||||||
|
puts-warn 'The package setuptools/distribute is listed in requirements.txt.'
|
||||||
|
puts-warn 'Please remove to ensure expected behavior. '
|
||||||
|
|
||||||
|
fi
|
||||||
@@ -11,6 +11,16 @@ indent() {
|
|||||||
sed "s/^/ /"
|
sed "s/^/ /"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Log output for warning detection
|
||||||
|
log-output() (
|
||||||
|
while read LINE;
|
||||||
|
do
|
||||||
|
echo "$LINE"
|
||||||
|
echo "$LINE" >> "$WARNINGS_LOG"
|
||||||
|
done
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
# Clean up pip output
|
# Clean up pip output
|
||||||
cleanup() {
|
cleanup() {
|
||||||
sed -e 's/\.\.\.\+/.../g' | sed -e '/already satisfied/Id' | sed -e '/Overwriting/Id' | sed -e '/python executable/Id' | sed -e '/no previously-included files/Id'
|
sed -e 's/\.\.\.\+/.../g' | sed -e '/already satisfied/Id' | sed -e '/Overwriting/Id' | sed -e '/python executable/Id' | sed -e '/no previously-included files/Id'
|
||||||
@@ -36,7 +46,7 @@ set-default-env() {
|
|||||||
echo "export $1=\${$1:-$2}" >> $PROFILE_PATH
|
echo "export $1=\${$1:-$2}" >> $PROFILE_PATH
|
||||||
}
|
}
|
||||||
|
|
||||||
# Usage: $ set-default-env key value
|
# Usage: $ un-set-env key
|
||||||
un-set-env() {
|
un-set-env() {
|
||||||
echo "unset $1" >> $PROFILE_PATH
|
echo "unset $1" >> $PROFILE_PATH
|
||||||
}
|
}
|
||||||
@@ -68,7 +78,7 @@ deep-rm() {
|
|||||||
# subshell to avoid surprising caller with shopts.
|
# subshell to avoid surprising caller with shopts.
|
||||||
(
|
(
|
||||||
shopt -s dotglob
|
shopt -s dotglob
|
||||||
rm -rf "$1"/!(tmp|.|..)
|
rm -rf "$1"/!(.curlrc|.netrc|tmp|.|..)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -91,3 +101,4 @@ sub-env() {
|
|||||||
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Executable
+35
@@ -0,0 +1,35 @@
|
|||||||
|
shopt -s extglob
|
||||||
|
|
||||||
|
pylibmc-missing() {
|
||||||
|
if grep -qi 'fatal error: libmemcached/memcached.h: No such file or directory' "$WARNINGS_LOG"; then
|
||||||
|
puts-warn "Hello! There was a problem with your build related to libmemcache."
|
||||||
|
puts-warn "The Python library 'pylibmc' must be explicitly specified in 'requirements.txt' in order to build correctly."
|
||||||
|
puts-warn "Once you do that, everything should work as expected. -- Much Love, Heroku."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
scipy-included() {
|
||||||
|
if grep -qi 'running setup.py install for scipy' "$WARNINGS_LOG"; then
|
||||||
|
puts-warn "Hello! It looks like you're trying to use scipy on Heroku."
|
||||||
|
puts-warn "Unfortunately, at this time, we do not directly support this library."
|
||||||
|
puts-warn "There is, however, a buildpack available that makes it possible to use it on Heroku."
|
||||||
|
puts-warn "You can learn more here: https://devcenter.heroku.com/articles/python-c-deps"
|
||||||
|
puts-warn "Sorry for the inconvenience. -- Much Love, Heroku."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
distribute-included() {
|
||||||
|
if grep -qi 'Running setup.py install for distribute' "$WARNINGS_LOG"; then
|
||||||
|
puts-warn "Hello! Your requirements.txt file contains the distribute package."
|
||||||
|
puts-warn "This library is automatically installed by Heroku and shouldn't be in"
|
||||||
|
puts-warn "Your requirements.txt file. This can cause unexpected behavior."
|
||||||
|
puts-warn "-- Much Love, Heroku."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
show-warnings() {
|
||||||
|
pylibmc-missing
|
||||||
|
scipy-included
|
||||||
|
distribute-included
|
||||||
|
}
|
||||||
|
|
||||||
@@ -6,7 +6,7 @@ OUT_PREFIX=$1
|
|||||||
echo "Building autoconf..."
|
echo "Building autoconf..."
|
||||||
|
|
||||||
|
|
||||||
SOURCE_TARBALL='http://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.gz'
|
SOURCE_TARBALL='https://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.gz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
|
|
||||||
cd autoconf-2.68
|
cd autoconf-2.68
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Build Path: /app/.heroku/python/
|
# Build Path: /app/.heroku/python/
|
||||||
# Build Deps: libraries/autoconf
|
|
||||||
|
|
||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
@@ -11,14 +10,12 @@ hash -r
|
|||||||
|
|
||||||
echo "Building libffi..."
|
echo "Building libffi..."
|
||||||
|
|
||||||
SOURCE_TARBALL='https://github.com/atgreen/libffi/archive/master.tar.gz'
|
SOURCE_TARBALL='https://cl.ly/2s1t1u3v0N0I/download/libffi-3.1.tar'
|
||||||
|
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar x
|
||||||
mv libffi-master libffi
|
|
||||||
|
|
||||||
cd libffi
|
cd libffi-3.1
|
||||||
./autogen.sh
|
./configure --prefix=$OUT_PREFIX --disable-static &&
|
||||||
./configure --prefix=$OUT_PREFIX --enable-shared
|
|
||||||
make
|
make
|
||||||
make install
|
make install
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ OUT_PREFIX=$1
|
|||||||
echo "Building SQLite..."
|
echo "Building SQLite..."
|
||||||
|
|
||||||
|
|
||||||
SOURCE_TARBALL='http://www.sqlite.org/sqlite-autoconf-3070900.tar.gz'
|
SOURCE_TARBALL='https://www.sqlite.org/sqlite-autoconf-3070900.tar.gz'
|
||||||
|
|
||||||
curl $SOURCE_TARBALL | tar xz
|
curl $SOURCE_TARBALL | tar xz
|
||||||
# jx
|
# jx
|
||||||
|
|||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Build Path: /app/.heroku/vendor/
|
||||||
|
|
||||||
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
|
# Use new path, containing autoconf.
|
||||||
|
export PATH="/app/.heroku/python/bin/:$PATH"
|
||||||
|
hash -r
|
||||||
|
|
||||||
|
|
||||||
|
echo "Building gdal..."
|
||||||
|
|
||||||
|
SOURCE_TARBALL='http://download.osgeo.org/gdal/1.11.0/gdal-1.11.0.tar.gz'
|
||||||
|
|
||||||
|
curl -L $SOURCE_TARBALL | tar zx
|
||||||
|
|
||||||
|
cd gdal-1.11.0
|
||||||
|
./configure --prefix=$OUT_PREFIX &&
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
cd ..
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Build Path: /app/.heroku/vendor/
|
||||||
|
|
||||||
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
|
# 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 ..
|
||||||
+40
@@ -0,0 +1,40 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Build Path: /app/.heroku/vendor/
|
||||||
|
|
||||||
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
|
# fail hard
|
||||||
|
set -o pipefail
|
||||||
|
# fail harder
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
DEFAULT_VERSION="1.0.18"
|
||||||
|
dep_version=${VERSION:-$DEFAULT_VERSION}
|
||||||
|
dep_dirname=libmemcached-${dep_version}
|
||||||
|
dep_archive_name=${dep_dirname}.tar.gz
|
||||||
|
dep_url=https://launchpad.net/libmemcached/1.0/${dep_version}/+download/${dep_archive_name}
|
||||||
|
|
||||||
|
# SASL Support.
|
||||||
|
echo "-----> Building cyrus-sasl 2.1.26..."
|
||||||
|
|
||||||
|
curl -LO ftp://ftp.cyrusimap.org/cyrus-sasl/cyrus-sasl-2.1.26.tar.gz
|
||||||
|
# FTP doesn't play well with piping into tar xz
|
||||||
|
tar xzf cyrus-sasl-2.1.26.tar.gz
|
||||||
|
|
||||||
|
pushd cyrus-sasl-2.1.26
|
||||||
|
./configure --prefix=${OUT_PREFIX} --with-plugindir=${OUT_PREFIX}lib/sasl2 --with-configdir=${OUT_PREFIX}lib/sasl2
|
||||||
|
|
||||||
|
make -s -j 9
|
||||||
|
make install -s
|
||||||
|
popd
|
||||||
|
|
||||||
|
echo "-----> Building libmemcached ${dep_version}..."
|
||||||
|
|
||||||
|
curl -L ${dep_url} | tar xz
|
||||||
|
pushd ${dep_dirname}
|
||||||
|
CPPFLAGS=-I${OUT_PREFIX}/include LDFLAGS=-L${OUT_PREFIX}/lib ./configure --prefix=${OUT_PREFIX} --without-memcached
|
||||||
|
make -s -j 9
|
||||||
|
make install -s
|
||||||
|
popd
|
||||||
|
|
||||||
|
echo "-----> Done."
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Build Path: /app/.heroku/python/
|
# Build Path: /app/.heroku/python/
|
||||||
# Build Deps: libraries/sqlite
|
# Build Deps: libraries/sqlite, libraries/libffi
|
||||||
|
|
||||||
# NOTICE: This formula only works for the cedar-14 stack, not cedar.
|
# NOTICE: This formula only works for the cedar-14 stack, not cedar.
|
||||||
|
|
||||||
|
|||||||
Executable
+14
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# 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/pypy-2.4.0-linux64.tar.bz2'
|
||||||
|
curl -L $SOURCE_TARBALL | tar jx
|
||||||
|
cp -R pypy-2.4.0-linux64/* $OUT_PREFIX
|
||||||
|
|
||||||
|
ln $OUT_PREFIX/bin/pypy $OUT_PREFIX/bin/python
|
||||||
Executable
+14
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# 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/pypy-2.5.0-linux64.tar.bz2'
|
||||||
|
curl -L $SOURCE_TARBALL | tar jx
|
||||||
|
cp -R pypy-2.5.0-linux64/* $OUT_PREFIX
|
||||||
|
|
||||||
|
ln $OUT_PREFIX/bin/pypy $OUT_PREFIX/bin/python
|
||||||
Executable
+14
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# 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/pypy-2.5.1-linux64.tar.bz2'
|
||||||
|
curl -L $SOURCE_TARBALL | tar jx
|
||||||
|
cp -R pypy-2.5.1-linux64/* $OUT_PREFIX
|
||||||
|
|
||||||
|
ln $OUT_PREFIX/bin/pypy $OUT_PREFIX/bin/python
|
||||||
Executable
+14
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# 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/pypy-2.6.0-linux64.tar.bz2'
|
||||||
|
curl -L $SOURCE_TARBALL | tar jx
|
||||||
|
cp -R pypy-2.6.0-linux64/* $OUT_PREFIX
|
||||||
|
|
||||||
|
ln $OUT_PREFIX/bin/pypy $OUT_PREFIX/bin/python
|
||||||
Executable
+14
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# 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/pypy-2.6.1-linux64.tar.bz2'
|
||||||
|
curl -L $SOURCE_TARBALL | tar jx
|
||||||
|
cp -R pypy-2.6.1-linux64/* $OUT_PREFIX
|
||||||
|
|
||||||
|
ln $OUT_PREFIX/bin/pypy $OUT_PREFIX/bin/python
|
||||||
Executable
+14
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# 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/pypy-4.0.0-linux64.tar.bz2'
|
||||||
|
curl -L $SOURCE_TARBALL | tar jx
|
||||||
|
cp -R pypy-4.0.0-linux64/* $OUT_PREFIX
|
||||||
|
|
||||||
|
ln $OUT_PREFIX/bin/pypy $OUT_PREFIX/bin/python
|
||||||
Executable
+14
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# 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
|
||||||
@@ -8,7 +8,7 @@ OUT_PREFIX=$1
|
|||||||
unset LANG PYTHONHOME PYTHONPATH
|
unset LANG PYTHONHOME PYTHONPATH
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.4.4/Python-2.4.4.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.4.4/Python-2.4.4.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.4.4 src
|
mv Python-2.4.4 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ OUT_PREFIX=$1
|
|||||||
unset LANG PYTHONHOME PYTHONPATH
|
unset LANG PYTHONHOME PYTHONPATH
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.4.5/Python-2.4.5.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.4.5/Python-2.4.5.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.4.5 src
|
mv Python-2.4.5 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ OUT_PREFIX=$1
|
|||||||
unset LANG PYTHONHOME PYTHONPATH
|
unset LANG PYTHONHOME PYTHONPATH
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.4.6/Python-2.4.6.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.4.6/Python-2.4.6.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.4.6 src
|
mv Python-2.4.6 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ OUT_PREFIX=$1
|
|||||||
unset LANG PYTHONHOME PYTHONPATH
|
unset LANG PYTHONHOME PYTHONPATH
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.5/Python-2.5.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.5/Python-2.5.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.5 src
|
mv Python-2.5 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ OUT_PREFIX=$1
|
|||||||
unset LANG PYTHONHOME PYTHONPATH
|
unset LANG PYTHONHOME PYTHONPATH
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.5.1/Python-2.5.1.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.5.1/Python-2.5.1.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.5.1 src
|
mv Python-2.5.1 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ OUT_PREFIX=$1
|
|||||||
unset LANG PYTHONHOME PYTHONPATH
|
unset LANG PYTHONHOME PYTHONPATH
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.5.2/Python-2.5.2.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.5.2/Python-2.5.2.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.5.2 src
|
mv Python-2.5.2 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ OUT_PREFIX=$1
|
|||||||
unset LANG PYTHONHOME PYTHONPATH
|
unset LANG PYTHONHOME PYTHONPATH
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.5.3/Python-2.5.3.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.5.3/Python-2.5.3.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.5.3 src
|
mv Python-2.5.3 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ OUT_PREFIX=$1
|
|||||||
unset LANG PYTHONHOME PYTHONPATH
|
unset LANG PYTHONHOME PYTHONPATH
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.5.4/Python-2.5.4.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.5.4/Python-2.5.4.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.5.4 src
|
mv Python-2.5.4 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ OUT_PREFIX=$1
|
|||||||
unset LANG PYTHONHOME PYTHONPATH
|
unset LANG PYTHONHOME PYTHONPATH
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.5.5/Python-2.5.5.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.5.5/Python-2.5.5.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.5.5 src
|
mv Python-2.5.5 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ OUT_PREFIX=$1
|
|||||||
unset LANG PYTHONHOME PYTHONPATH
|
unset LANG PYTHONHOME PYTHONPATH
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.5.6/Python-2.5.6.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.5.6/Python-2.5.6.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.5.6 src
|
mv Python-2.5.6 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ OUT_PREFIX=$1
|
|||||||
unset LANG PYTHONHOME PYTHONPATH
|
unset LANG PYTHONHOME PYTHONPATH
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://www.python.org/ftp/python/2.6/Python-2.6.tar.bz2'
|
SOURCE_TARBALL='https://www.python.org/ftp/python/2.6/Python-2.6.tar.bz2'
|
||||||
curl -L $SOURCE_TARBALL | tar jx
|
curl -L $SOURCE_TARBALL | tar jx
|
||||||
mv Python-2.6 src
|
mv Python-2.6 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ OUT_PREFIX=$1
|
|||||||
unset LANG PYTHONHOME PYTHONPATH
|
unset LANG PYTHONHOME PYTHONPATH
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.6.1/Python-2.6.1.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.6.1/Python-2.6.1.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.6.1 src
|
mv Python-2.6.1 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ OUT_PREFIX=$1
|
|||||||
unset LANG PYTHONHOME PYTHONPATH
|
unset LANG PYTHONHOME PYTHONPATH
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.6.2/Python-2.6.2.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.6.2/Python-2.6.2.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.6.2 src
|
mv Python-2.6.2 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ OUT_PREFIX=$1
|
|||||||
unset LANG PYTHONHOME PYTHONPATH
|
unset LANG PYTHONHOME PYTHONPATH
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.6.3/Python-2.6.3.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.6.3/Python-2.6.3.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.6.3 src
|
mv Python-2.6.3 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ OUT_PREFIX=$1
|
|||||||
unset LANG PYTHONHOME PYTHONPATH
|
unset LANG PYTHONHOME PYTHONPATH
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.6.4/Python-2.6.4.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.6.4/Python-2.6.4.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.6.4 src
|
mv Python-2.6.4 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ OUT_PREFIX=$1
|
|||||||
unset LANG PYTHONHOME PYTHONPATH
|
unset LANG PYTHONHOME PYTHONPATH
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.6.5/Python-2.6.5.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.6.5/Python-2.6.5.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.6.5 src
|
mv Python-2.6.5 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ OUT_PREFIX=$1
|
|||||||
unset LANG PYTHONHOME PYTHONPATH
|
unset LANG PYTHONHOME PYTHONPATH
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.6.6/Python-2.6.6.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.6.6/Python-2.6.6.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.6.6 src
|
mv Python-2.6.6 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ OUT_PREFIX=$1
|
|||||||
unset LANG PYTHONHOME PYTHONPATH
|
unset LANG PYTHONHOME PYTHONPATH
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.6.7/Python-2.6.7.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.6.7/Python-2.6.7.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.6.7 src
|
mv Python-2.6.7 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ OUT_PREFIX=$1
|
|||||||
unset LANG PYTHONHOME PYTHONPATH
|
unset LANG PYTHONHOME PYTHONPATH
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.6.8/Python-2.6.8.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.6.8/Python-2.6.8.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.6.8 src
|
mv Python-2.6.8 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ OUT_PREFIX=$1
|
|||||||
unset LANG PYTHONHOME PYTHONPATH
|
unset LANG PYTHONHOME PYTHONPATH
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.6.9/Python-2.6.9.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.6.9/Python-2.6.9.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.6.9 src
|
mv Python-2.6.9 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.7/Python-2.7.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.7/Python-2.7.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.7 src
|
mv Python-2.7 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.7.1/Python-2.7.1.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.7.1/Python-2.7.1.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.7.1 src
|
mv Python-2.7.1 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
Executable
+15
@@ -0,0 +1,15 @@
|
|||||||
|
#!/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
|
||||||
Executable
+15
@@ -0,0 +1,15 @@
|
|||||||
|
#!/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
|
||||||
Executable
+15
@@ -0,0 +1,15 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Build Path: /app/.heroku/python/
|
||||||
|
# Build Deps: libraries/sqlite
|
||||||
|
|
||||||
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
|
echo "Building Python..."
|
||||||
|
SOURCE_TARBALL='https://www.python.org/ftp/python/2.7.11/Python-2.7.11rc1.tgz'
|
||||||
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
|
mv Python-2.7.11rc1 src
|
||||||
|
cd src
|
||||||
|
|
||||||
|
./configure --prefix=$OUT_PREFIX --with-ensurepip=no
|
||||||
|
make
|
||||||
|
make install
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.7.2/Python-2.7.2.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.7.2/Python-2.7.2.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.7.2 src
|
mv Python-2.7.2 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.7.3/Python-2.7.3.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.7.3/Python-2.7.3.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.7.3 src
|
mv Python-2.7.3 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.7.4/Python-2.7.4.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.7.4/Python-2.7.4.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.7.4 src
|
mv Python-2.7.4 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.7.5/Python-2.7.5.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.7.5/Python-2.7.5.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.7.5 src
|
mv Python-2.7.5 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.7.6/Python-2.7.6.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.7.6/Python-2.7.6.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.7.6 src
|
mv Python-2.7.6 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.7.7/Python-2.7.7.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.7.7/Python-2.7.7.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.7.7 src
|
mv Python-2.7.7 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.7.7/Python-2.7.7.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.7.7/Python-2.7.7.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.7.7 src
|
mv Python-2.7.7 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.7.8/Python-2.7.8.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.7.8/Python-2.7.8.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.7.8 src
|
mv Python-2.7.8 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,11 +5,11 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/2.7.8/Python-2.7.8.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/2.7.8/Python-2.7.8.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-2.7.8 src
|
mv Python-2.7.8 src
|
||||||
cd src
|
cd src
|
||||||
|
|
||||||
./configure --prefix=$OUT_PREFIX
|
./configure --prefix=$OUT_PREFIX --enable-shared
|
||||||
make
|
make
|
||||||
make install
|
make install
|
||||||
|
|||||||
Executable
+15
@@ -0,0 +1,15 @@
|
|||||||
|
#!/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
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/3.1/Python-3.1.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/3.1/Python-3.1.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-3.1 src
|
mv Python-3.1 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/3.1.1/Python-3.1.1.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/3.1.1/Python-3.1.1.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-3.1.1 src
|
mv Python-3.1.1 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/3.1.2/Python-3.1.2.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/3.1.2/Python-3.1.2.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-3.1.2 src
|
mv Python-3.1.2 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/3.1.3/Python-3.1.3.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/3.1.3/Python-3.1.3.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-3.1.3 src
|
mv Python-3.1.3 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/3.1.4/Python-3.1.4.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/3.1.4/Python-3.1.4.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-3.1.4 src
|
mv Python-3.1.4 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/3.1.5/Python-3.1.5.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/3.1.5/Python-3.1.5.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-3.1.5 src
|
mv Python-3.1.5 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/3.2/Python-3.2.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/3.2/Python-3.2.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-3.2 src
|
mv Python-3.2 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/3.2.1/Python-3.2.1.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/3.2.1/Python-3.2.1.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-3.2.1 src
|
mv Python-3.2.1 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/3.2.2/Python-3.2.2.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/3.2.2/Python-3.2.2.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-3.2.2 src
|
mv Python-3.2.2 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/3.2.3/Python-3.2.3.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/3.2.3/Python-3.2.3.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-3.2.3 src
|
mv Python-3.2.3 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/3.2.4/Python-3.2.4.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/3.2.4/Python-3.2.4.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-3.2.4 src
|
mv Python-3.2.4 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/3.2.5/Python-3.2.5.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/3.2.5/Python-3.2.5.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-3.2.5 src
|
mv Python-3.2.5 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/3.3.0/Python-3.3.0.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/3.3.0/Python-3.3.0.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-3.3.0 src
|
mv Python-3.3.0 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/3.3.1/Python-3.3.1.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/3.3.1/Python-3.3.1.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-3.3.1 src
|
mv Python-3.3.1 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/3.3.2/Python-3.3.2.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/3.3.2/Python-3.3.2.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-3.3.2 src
|
mv Python-3.3.2 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/3.3.3/Python-3.3.3.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/3.3.3/Python-3.3.3.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-3.3.3 src
|
mv Python-3.3.3 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/3.3.4/Python-3.3.4.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/3.3.4/Python-3.3.4.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-3.3.4 src
|
mv Python-3.3.4 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/3.3.5/Python-3.3.5.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/3.3.5/Python-3.3.5.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-3.3.5 src
|
mv Python-3.3.5 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
Executable
+17
@@ -0,0 +1,17 @@
|
|||||||
|
#!/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.3.6/Python-3.3.6.tgz'
|
||||||
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
|
mv Python-3.3.6 src
|
||||||
|
cd src
|
||||||
|
|
||||||
|
./configure --prefix=$OUT_PREFIX --enable-shared
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
|
||||||
|
ln $OUT_PREFIX/bin/python3 $OUT_PREFIX/bin/python
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/3.4.0/Python-3.4.0.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/3.4.0/Python-3.4.0.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-3.4.0 src
|
mv Python-3.4.0 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
OUT_PREFIX=$1
|
OUT_PREFIX=$1
|
||||||
|
|
||||||
echo "Building Python..."
|
echo "Building Python..."
|
||||||
SOURCE_TARBALL='http://python.org/ftp/python/3.4.1/Python-3.4.1.tgz'
|
SOURCE_TARBALL='https://python.org/ftp/python/3.4.1/Python-3.4.1.tgz'
|
||||||
curl -L $SOURCE_TARBALL | tar xz
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
mv Python-3.4.1 src
|
mv Python-3.4.1 src
|
||||||
cd src
|
cd src
|
||||||
|
|||||||
Executable
+18
@@ -0,0 +1,18 @@
|
|||||||
|
#!/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.4.2/Python-3.4.2.tgz'
|
||||||
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
|
mv Python-3.4.2 src
|
||||||
|
cd src
|
||||||
|
|
||||||
|
./configure --prefix=$OUT_PREFIX --with-ensurepip=no --enable-shared
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
|
||||||
|
ln $OUT_PREFIX/bin/python3 $OUT_PREFIX/bin/python
|
||||||
|
|
||||||
Executable
+18
@@ -0,0 +1,18 @@
|
|||||||
|
#!/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.4.3/Python-3.4.3.tgz'
|
||||||
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
|
mv Python-3.4.3 src
|
||||||
|
cd src
|
||||||
|
|
||||||
|
./configure --prefix=$OUT_PREFIX --with-ensurepip=no --enable-shared
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
|
||||||
|
ln $OUT_PREFIX/bin/python3 $OUT_PREFIX/bin/python
|
||||||
|
|
||||||
Executable
+18
@@ -0,0 +1,18 @@
|
|||||||
|
#!/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.0/Python-3.5.0.tgz'
|
||||||
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
|
mv Python-3.5.0 src
|
||||||
|
cd src
|
||||||
|
|
||||||
|
./configure --prefix=$OUT_PREFIX --with-ensurepip=no --enable-shared
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
|
||||||
|
ln $OUT_PREFIX/bin/python3 $OUT_PREFIX/bin/python
|
||||||
|
|
||||||
Executable
+18
@@ -0,0 +1,18 @@
|
|||||||
|
#!/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.1/Python-3.5.1.tgz'
|
||||||
|
curl -L $SOURCE_TARBALL | tar xz
|
||||||
|
mv Python-3.5.1 src
|
||||||
|
cd src
|
||||||
|
|
||||||
|
./configure --prefix=$OUT_PREFIX --with-ensurepip=no --enable-shared
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
|
||||||
|
ln $OUT_PREFIX/bin/python3 $OUT_PREFIX/bin/python
|
||||||
|
|
||||||
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
+18
-11
@@ -2,7 +2,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""Usage:
|
"""Usage:
|
||||||
pip-diff (--fresh | --stale) <reqfile1> <reqfile2>
|
pip-diff (--fresh | --stale) <reqfile1> <reqfile2> [--exclude <package>...]
|
||||||
pip-diff (-h | --help)
|
pip-diff (-h | --help)
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
@@ -13,6 +13,10 @@ Options:
|
|||||||
import os
|
import os
|
||||||
from docopt import docopt
|
from docopt import docopt
|
||||||
from pip.req import parse_requirements
|
from pip.req import parse_requirements
|
||||||
|
from pip.index import PackageFinder
|
||||||
|
from pip._vendor.requests import session
|
||||||
|
|
||||||
|
requests = session()
|
||||||
|
|
||||||
class Requirements(object):
|
class Requirements(object):
|
||||||
def __init__(self, reqfile=None):
|
def __init__(self, reqfile=None):
|
||||||
@@ -31,12 +35,13 @@ class Requirements(object):
|
|||||||
if not os.path.exists(reqfile):
|
if not os.path.exists(reqfile):
|
||||||
raise ValueError('The given requirements file does not exist.')
|
raise ValueError('The given requirements file does not exist.')
|
||||||
|
|
||||||
for requirement in parse_requirements(reqfile):
|
finder = PackageFinder([], [], session=requests)
|
||||||
|
for requirement in parse_requirements(reqfile, finder=finder, session=requests):
|
||||||
if requirement.req:
|
if requirement.req:
|
||||||
self.requirements.append(requirement.req)
|
self.requirements.append(requirement.req)
|
||||||
|
|
||||||
|
|
||||||
def diff(self, requirements, ignore_versions=False):
|
def diff(self, requirements, ignore_versions=False, excludes=None):
|
||||||
r1 = self
|
r1 = self
|
||||||
r2 = requirements
|
r2 = requirements
|
||||||
results = {'fresh': [], 'stale': []}
|
results = {'fresh': [], 'stale': []}
|
||||||
@@ -50,7 +55,7 @@ class Requirements(object):
|
|||||||
for req in r2.requirements:
|
for req in r2.requirements:
|
||||||
r = req.project_name if ignore_versions else req
|
r = req.project_name if ignore_versions else req
|
||||||
|
|
||||||
if r not in other_reqs:
|
if r not in other_reqs and r not in excludes:
|
||||||
results['fresh'].append(req)
|
results['fresh'].append(req)
|
||||||
|
|
||||||
# Generate stale packages.
|
# Generate stale packages.
|
||||||
@@ -62,7 +67,7 @@ class Requirements(object):
|
|||||||
for req in r1.requirements:
|
for req in r1.requirements:
|
||||||
r = req.project_name if ignore_versions else req
|
r = req.project_name if ignore_versions else req
|
||||||
|
|
||||||
if r not in other_reqs:
|
if r not in other_reqs and r not in excludes:
|
||||||
results['stale'].append(req)
|
results['stale'].append(req)
|
||||||
|
|
||||||
return results
|
return results
|
||||||
@@ -71,26 +76,27 @@ class Requirements(object):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
def diff(r1, r2, include_fresh=False, include_stale=False):
|
def diff(r1, r2, include_fresh=False, include_stale=False, excludes=None):
|
||||||
|
|
||||||
include_versions = True if include_stale else False
|
include_versions = True if include_stale else False
|
||||||
|
excludes = excludes if len(excludes) else []
|
||||||
|
|
||||||
try:
|
try:
|
||||||
r1 = Requirements(r1)
|
r1 = Requirements(r1)
|
||||||
r2 = Requirements(r2)
|
r2 = Requirements(r2)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
print 'There was a problem loading the given requirements files.'
|
print('There was a problem loading the given requirements files.')
|
||||||
exit(os.EX_NOINPUT)
|
exit(os.EX_NOINPUT)
|
||||||
|
|
||||||
results = r1.diff(r2, ignore_versions=True)
|
results = r1.diff(r2, ignore_versions=True, excludes=excludes)
|
||||||
|
|
||||||
if include_fresh:
|
if include_fresh:
|
||||||
for line in results['fresh']:
|
for line in results['fresh']:
|
||||||
print line.project_name if include_versions else line
|
print(line.project_name if include_versions else line)
|
||||||
|
|
||||||
if include_stale:
|
if include_stale:
|
||||||
for line in results['stale']:
|
for line in results['stale']:
|
||||||
print line.project_name if include_versions else line
|
print(line.project_name if include_versions else line)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -101,7 +107,8 @@ def main():
|
|||||||
'r1': args['<reqfile1>'],
|
'r1': args['<reqfile1>'],
|
||||||
'r2': args['<reqfile2>'],
|
'r2': args['<reqfile2>'],
|
||||||
'include_fresh': args['--fresh'],
|
'include_fresh': args['--fresh'],
|
||||||
'include_stale': args['--stale']
|
'include_stale': args['--stale'],
|
||||||
|
'excludes': args['<package>']
|
||||||
}
|
}
|
||||||
|
|
||||||
diff(**kwargs)
|
diff(**kwargs)
|
||||||
|
|||||||
Vendored
+15
-4
@@ -10,6 +10,10 @@ Options:
|
|||||||
import os
|
import os
|
||||||
from docopt import docopt
|
from docopt import docopt
|
||||||
from pip.req import parse_requirements
|
from pip.req import parse_requirements
|
||||||
|
from pip.index import PackageFinder
|
||||||
|
from pip._vendor.requests import session
|
||||||
|
|
||||||
|
requests = session()
|
||||||
|
|
||||||
class Requirements(object):
|
class Requirements(object):
|
||||||
def __init__(self, reqfile=None):
|
def __init__(self, reqfile=None):
|
||||||
@@ -28,7 +32,8 @@ class Requirements(object):
|
|||||||
if not os.path.exists(reqfile):
|
if not os.path.exists(reqfile):
|
||||||
raise ValueError('The given requirements file does not exist.')
|
raise ValueError('The given requirements file does not exist.')
|
||||||
|
|
||||||
for requirement in parse_requirements(reqfile):
|
finder = PackageFinder([], [], session=requests)
|
||||||
|
for requirement in parse_requirements(reqfile, finder=finder, session=requests):
|
||||||
self.requirements.append(requirement)
|
self.requirements.append(requirement)
|
||||||
|
|
||||||
|
|
||||||
@@ -39,8 +44,10 @@ def grep(reqfile, packages, silent=False):
|
|||||||
try:
|
try:
|
||||||
r = Requirements(reqfile)
|
r = Requirements(reqfile)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
|
|
||||||
if not silent:
|
if not silent:
|
||||||
print 'There was a problem loading the given requirement file.'
|
print('There was a problem loading the given requirement file.')
|
||||||
|
|
||||||
exit(os.EX_NOINPUT)
|
exit(os.EX_NOINPUT)
|
||||||
|
|
||||||
for requirement in r.requirements:
|
for requirement in r.requirements:
|
||||||
@@ -48,11 +55,15 @@ def grep(reqfile, packages, silent=False):
|
|||||||
if requirement.req:
|
if requirement.req:
|
||||||
|
|
||||||
if requirement.req.project_name in packages:
|
if requirement.req.project_name in packages:
|
||||||
|
|
||||||
if not silent:
|
if not silent:
|
||||||
print 'Package {} found!'.format(requirement.req.project_name)
|
print('Package {} found!'.format(requirement.req.project_name))
|
||||||
|
|
||||||
exit(0)
|
exit(0)
|
||||||
|
|
||||||
print 'Not found.'.format(requirement.req.project_name)
|
if not silent:
|
||||||
|
print('Not found.'.format(requirement.req.project_name))
|
||||||
|
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+27
@@ -0,0 +1,27 @@
|
|||||||
|
case $(ulimit -u) in
|
||||||
|
|
||||||
|
# 1X DYNO
|
||||||
|
256)
|
||||||
|
export DYNO_RAM=512
|
||||||
|
export WEB_CONCURRENCY=${WEB_CONCURRENCY:-2}
|
||||||
|
;;
|
||||||
|
|
||||||
|
# 2X DYNO
|
||||||
|
512)
|
||||||
|
export DYNO_RAM=1024
|
||||||
|
export WEB_CONCURRENCY=${WEB_CONCURRENCY:-4}
|
||||||
|
;;
|
||||||
|
|
||||||
|
# IX DYNO
|
||||||
|
16384)
|
||||||
|
export DYNO_RAM=2560
|
||||||
|
export WEB_CONCURRENCY=${WEB_CONCURRENCY:-8}
|
||||||
|
;;
|
||||||
|
|
||||||
|
# PX DYNO
|
||||||
|
32768)
|
||||||
|
export DYNO_RAM=6656
|
||||||
|
export WEB_CONCURRENCY=${WEB_CONCURRENCY:-11}
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Reference in New Issue
Block a user