Compare commits

..

667 Commits

Author SHA1 Message Date
kennethreitz d7874d583b move v87 notes 2016-12-17 18:59:44 -05:00
kennethreitz d32dc82e1c v87 2016-12-17 18:58:58 -05:00
kennethreitz bd048d50b5 update default python to 2.7.13 2016-12-17 18:58:51 -05:00
kennethreitz 26b2eeee20 update setuptools to v31.1.0 2016-12-17 18:58:32 -05:00
kennethreitz e527457ba3 Merge branch 'master' of heroku.com:python-builder-cedar-14 2016-12-17 18:48:19 -05:00
kennethreitz 1b7bd02bf2 Merge branch 'master' into docker-builds 2016-12-16 20:25:00 -05:00
kennethreitz de9b0b9383 v86 2016-12-16 20:24:07 -05:00
David Zülke 991f4126d7 Greatly simplify code copying (#340)
* drop duplicate mkdir for .heroku

* simplify linking and moving of python and source

* steps/python needs its own symlink setup

* fix symlink destinations for vendor and venv

* always symlink python
2016-12-16 17:13:57 -08:00
kennethreitz 076a457ad9 changes 2016-12-16 11:08:49 -05:00
kennethreitz 264f74d159 skip binaries for heroku-16 2016-12-15 16:10:37 -05:00
kennethreitz 9f89c4e744 bob-builder==0.0.5 2016-12-15 13:52:53 -05:00
kennethreitz 8d2788094b python-2.7.13 with UCS-4 2016-12-15 13:20:51 -05:00
kennethreitz e2f4fd442a dockerfile for bob-builder 2016-12-14 16:00:32 -05:00
kennethreitz 1bccc03b30 Update CHANGELOG.md 2016-11-18 15:45:17 -05:00
kennethreitz adac27fa9c Merge pull request #334 from cclauss/patch-3
Upgrade to pip-9.0.1 and setuptools-28.8.0
2016-11-15 09:39:41 -05:00
kennethreitz d1c30fd24b updated pip and setuptools 2016-11-15 09:39:29 -05:00
kennethreitz a1cfa41cb2 Merge pull request #328 from joshfriend/pypy-5.4
Add PyPy2 v5.6.0
2016-11-14 14:26:48 -05:00
cclauss 57e9bb0054 Upgrade to pip-9.0.1 and setuptools-28.8.0
This would REQUIRE that the latest versions are placed into:
https://github.com/heroku/heroku-buildpack-python/tree/master/vendor

https://pypi.python.org/pypi/pip
https://pypi.python.org/pypi/setuptools
2016-11-13 10:48:32 +01:00
Josh Friend 8e34179b1c Fix pypy2 v5.3.1 download url 2016-11-12 15:45:28 -05:00
Josh Friend c03cb26961 Add pypy2 v5.4.1 2016-11-12 15:45:28 -05:00
kennethreitz 127ff904d6 update changelog 2016-11-08 19:18:05 -05:00
kennethreitz 6c53bd1cd6 fix typo 2016-11-08 13:10:00 -05:00
kennethreitz d8307c29ba fix for requirements.txt 2016-11-02 14:24:20 -04:00
kennethreitz f526673903 no debug statement 2016-11-02 14:08:28 -04:00
kennethreitz 85f10b7d59 Merge branch 'ci' 2016-11-02 14:08:04 -04:00
kennethreitz bbbadc83e4 is /app 2016-11-02 14:06:50 -04:00
kennethreitz 9c2b033042 proper debug 2016-11-02 14:04:39 -04:00
kennethreitz e427d5111e debug 2016-11-02 14:00:07 -04:00
kennethreitz ab724138c1 another approach 2016-11-02 13:59:33 -04:00
kennethreitz e36b580615 Merge remote-tracking branch 'origin/master' 2016-11-02 13:54:53 -04:00
kennethreitz f8a1761165 export path fix 2016-11-02 11:20:09 -04:00
kennethreitz 521bb00247 export functionality 2016-11-01 13:18:53 -04:00
kennethreitz 5cd4245412 Skip copying the code if we're already in the right spot 2016-11-01 12:45:27 -04:00
kennethreitz 40daa84ccc syntax sugar and test-requirements.txt 2016-11-01 12:41:17 -04:00
kennethreitz f0ea766900 basic test-compile script 2016-11-01 12:35:25 -04:00
kennethreitz 89125df805 remove deprecated test script 2016-11-01 12:33:55 -04:00
kennethreitz 83ee7d90d7 update python3 2016-10-26 13:51:31 -04:00
kennethreitz bb87f5ed56 remove deprecated runtimes 2016-10-26 13:51:21 -04:00
kennethreitz 424e1c351d Merge branch 'master' of https://git.staging.herokudev.com/python-builder-cedar-16 2016-10-26 13:46:35 -04:00
kennethreitz 83bde7ccea Update README.md 2016-10-26 13:46:10 -04:00
kennethreitz 7fab8ce2c2 Update README.md 2016-10-26 13:44:50 -04:00
kennethreitz d4326fad0f Update README.md 2016-10-26 13:31:33 -04:00
kennethreitz a0d4da00e6 update pypy 2016-10-26 13:16:25 -04:00
kennethreitz f72c34a5dd Merge branch 'master' of https://git.staging.herokudev.com/python-builder-cedar-16 2016-10-26 12:29:59 -04:00
kennethreitz 2bc41d20b8 dummy change 2016-10-26 12:27:46 -04:00
kennethreitz 3cce589cec newline 2016-10-05 14:49:57 -04:00
kennethreitz 70758edd49 dummy procfile entry 2016-09-28 14:51:59 -04:00
kennethreitz ba7a9cd565 Update CHANGELOG.md 2016-09-16 14:23:20 -04:00
kennethreitz 37a7afbe2d Merge pull request #329 from jambonrose/add-argon2-to-cryptography-step
Add argon2 to crypotgraphy step
2016-09-16 14:22:36 -04:00
Andrew Pinkham b0138c26e6 Add argon2 to crypotgraphy step
- Add argon2-cffi
- Add django[argon2] option from Django docs:
  https://docs.djangoproject.com/en/1.10/topics/auth/passwords/#argon2-usage
2016-09-16 10:57:09 -04:00
kennethreitz d653377faf fix history 2016-08-24 16:11:23 -04:00
kennethreitz 0b87419166 changelog entry 2016-08-19 09:02:59 -04:00
kennethreitz d832b7425e update pypy formula 2016-08-19 09:02:59 -04:00
kennethreitz 2991dce623 pypi workaround 2016-08-19 09:02:59 -04:00
kennethreitz 28b67dd208 update pypy formula 2016-08-19 08:57:19 -04:00
kennethreitz 24f73fbc2d pypi workaround 2016-08-19 08:54:24 -04:00
Troels Thomsen ffd0bb57ee Revert "Merge branch 'apt'"
This reverts commit 75870dd412, reversing
changes made to 0cf2e2849d.
2016-08-17 11:19:11 +02:00
kennethreitz 75870dd412 Merge branch 'apt' 2016-08-17 02:07:01 -04:00
kennethreitz 831d73e302 cleanup debugging 2016-08-17 02:06:36 -04:00
kennethreitz 0cf2e2849d updated setuptools vendor 2016-08-17 02:01:39 -04:00
kennethreitz 6ba8d47927 Merge pull request #323 from cclauss/patch-2
Update setuptools
2016-08-17 02:01:16 -04:00
kennethreitz af940b5390 v81 2016-08-17 02:00:49 -04:00
kennethreitz 819bc2da5b Merge pull request #326 from tvuotila/hotfix/preserve-environment-variables
Preserve environment variables
2016-08-17 01:59:55 -04:00
Tero Vuotila 2dad2e73f3 Preserve environment variables
Preserve LIBRARY_PATH and LD_LIBRARY_PATH.
Related heroku/heroku-buildpack-python#287
2016-08-16 10:34:49 +03:00
cclauss e550b32ea8 setuptools v25.2.0 2016-08-13 09:28:17 +02:00
cclauss 6af8d81086 Update setuptools
Update setuptools from 23.x.x to 25.x.x.
2016-08-09 18:42:46 +02:00
kennethreitz 0ed4089cb9 Merge pull request #308 from edmorley/fix-pip8-support
Switch pip-pop back to using pip 8
2016-08-02 20:54:16 -04:00
kennethreitz f09191ec8b Merge pull request #319 from edmorley/library-vendoring-cleanup
Fixes to the library vendoring's 'already exists' checks
2016-08-02 20:04:28 -04:00
Ed Morley aef7b65b95 Don't skip the geo-libs vendoring step if only gdalserver present
Since if someone previously had `GDAL` in their requirements file, they
would already have the gdalserver binary present from `bin/steps/gdal`
but be missing the proj and geos vendor files. By checking for `proj`
instead, we ensure that the vendoring isn't incorrectly skipped in this
case.
2016-08-02 14:28:24 +01:00
Ed Morley 5438aab121 Make libffi vendoring check for existing directory in correct location
For both the cedar and cedar-14 stacks, the libffi directory is named
`libffi-3.1` not `libffi-3.1.1`, so the existing library wouldn't be
detected, causing it to be re-downloaded during every compile.
2016-08-02 14:28:19 +01:00
Ed Morley a259143c0b Avoid repetition of vendor library environment variable setting
Since we need to set it regardless of whether the vendored library
existed previously or not.
2016-08-02 14:13:20 +01:00
Ed Morley 0896d6a0c4 Fix files without blank newline 2016-08-02 14:12:31 +01:00
Ed Morley 39f2efe296 Remove vendored pip since pip-pop is now compatible with pip v8
This means pip-pop will use the buildpack-installed pip 8, which doesn't
fail when encountering requirements files that use the new hash syntax.

Fixes #302.
2016-07-11 10:48:49 +01:00
Ed Morley d047f26ad4 Import upstream pip-pop fix for pip 8 support
Is the fix from kennethreitz/pip-pop#12.
2016-07-11 10:48:49 +01:00
kennethreitz 998f996a32 proper setuptools version 2016-06-28 14:44:45 -04:00
kennethreitz c620980e5a Merge pull request #313 from cclauss/Python-3.5.2
Add Python 2.7.12, Python 3.5.2, Pypy 5.3.1, Pip 8.1.2, Setuptools 23.1.0 and remove release candidate
2016-06-28 14:43:10 -04:00
cclauss 2983fcfbea Update README.md to current versions of Python 2, Python 3, Pypy, and Requests 2016-06-28 11:27:53 +02:00
cclauss e3511e7202 Update and rename pypy-5.3.0 to pypy-5.3.1 2016-06-28 11:17:37 +02:00
cclauss 692f040618 Update default Python plus Pip and Setuptools
* $ curl
https://pypi.python.org/packages/e7/a8/7556133689add8d1a54c0b14aeff0acb0
3c64707ce100ecd53934da1aa13/pip-8.1.2.tar.gz -o pip-8.1.2.tar.gz
* $ curl
https://pypi.python.org/packages/9f/7c/0a33c528164f1b7ff8cf0684cf88c2e73
3c8ae0119ceca4a3955c7fc059d/setuptools-23.1.0.tar.gz -o
setuptools-23.1.0.tar.gz
* $ ls
* $ rm pip-8.1.1.tar.gz
* $ rm setuptools-20.4.tar.gz
2016-06-28 10:56:09 +02:00
cclauss 8645a965aa Add Python 2.7.12 and remove the release candidate 2016-06-28 09:07:38 +02:00
cclauss 3a483865e8 Python 3.5.2
https://www.python.org/downloads/release/python-352/
2016-06-27 06:36:44 +02:00
kennethreitz 6ea6a0ccaf debug 2016-06-24 15:51:28 -04:00
kennethreitz 6bc94eaf6e dont unset library path 2016-06-24 15:46:27 -04:00
kennethreitz 49e409cb64 try soft links 2016-06-24 15:42:55 -04:00
kennethreitz 2693de45c7 attempt to ln 2016-06-24 15:40:57 -04:00
kennethreitz 88f711b6e7 before sanitization 2016-06-24 15:24:31 -04:00
kennethreitz a7976fc177 Merge remote-tracking branch 'origin/master' 2016-06-24 15:18:09 -04:00
cclauss 8a837a23e7 Back to rc11 2016-06-20 23:56:41 +02:00
cclauss f37597ad9d Runtimes: Added pypy-5.3.0, mv python-2.7.11rc1 python-2.7.12rc1
Runtimes:
* Added pypy-5.3.0
* Moved python-2.7.11rc1 to python-2.7.12rc1
2016-06-16 19:32:22 +02:00
kennethreitz 928a664544 yes 2016-06-15 04:35:28 -04:00
kennethreitz 9fb715ef1c no 2016-06-15 04:33:01 -04:00
kennethreitz 3cff2e39fe Merge pull request #298 from whit537/preen-pip-grep
clean up pip-grep in the `not silent` case
2016-06-10 12:58:57 -07:00
kennethreitz 653a5be104 Merge pull request #297 from whit537/comment
remove Pylibmc reference in cryptography comment
2016-06-10 12:56:34 -07:00
kennethreitz 67ade52e95 Merge pull request #304 from tt/use-travis
Use Travis
2016-06-10 12:40:27 -07:00
Troels Thomsen ab3e365ff6 Show build status in readme 2016-05-25 10:37:34 +02:00
Troels Thomsen 902672e934 Add Travis configuration 2016-05-25 10:37:25 +02:00
Troels Thomsen 6207b3506b Rename readme file 2016-05-25 10:37:03 +02:00
kennethreitz 5446d448fd Merge pull request #301 from alex/patch-1
Added another package that relies on cffi
2016-05-13 13:25:49 -04:00
Alex Gaynor 366def6c16 Added another package that relies on cffi 2016-05-13 13:17:03 -04:00
Chad Whitacre a84fc7a248 clean up pip-pop in the not silent case
The extraneous `format` call is harmless in itself, but it's possible for `requirement.req` to be `None` here, which results in `AttributeError: 'NoneType' object has no attribute 'project_name'`.
2016-05-10 07:31:25 -04:00
Chad Whitacre e4aa40216b remove Pylibmc reference in cryptography comment 2016-05-10 07:12:55 -04:00
kennethreitz 87d03e62d7 Merge branch 'master' of heroku.com:python-builder-cedar-14 2016-05-05 16:32:09 -04:00
kennethreitz 92b4f5e8aa pypy v5.1.0 v5.1.1 2016-05-05 16:31:25 -04:00
kennethreitz 19cd447b83 Merge pull request #296 from edmorley/libffi-PyNaCl
Add PyNaCl to the list of packages that trigger libffi bootstrapping
2016-04-21 16:26:03 -04:00
Ed Morley 570182b6b7 Add PyNaCl to the list of packages that trigger libffi bootstrapping
To reduce confusion for users who have not explicitly listed cffi as a
dependency.

Fixes #142.
2016-04-21 10:37:45 +01:00
kennethreitz 0a6ed0de43 v80 2016-04-05 17:10:49 -04:00
kennethreitz 0b7a1fc14e use older pip for pip-pop 2016-03-31 18:08:49 -04:00
kennethreitz 2c69e3b98f setuptools v20.4 2016-03-30 18:20:04 -04:00
kennethreitz 86f43fa02a v79 2016-03-22 19:41:02 -04:00
kennethreitz 03b95247c3 chmod +x (grr) 2016-03-22 19:39:48 -04:00
kennethreitz 0e8a11b836 Update Readme.md 2016-03-22 19:36:40 -04:00
kennethreitz 4c9de740d2 chmod +x (grr) 2016-03-22 19:26:58 -04:00
kennethreitz 9b45baa41c pypy-5.0.0 2016-03-22 19:22:49 -04:00
kennethreitz ecfaeb2fd2 Merge pull request #288 from joshfriend/pypy
Add PyPy 5.0.1
2016-03-22 19:21:56 -04:00
kennethreitz cef0b1703a Merge pull request #287 from ABASystems/master
Keep pre-existing environment variables.
2016-03-22 19:19:37 -04:00
Josh Friend 18317ef606 Add pypy-5.0.1 2016-03-21 08:28:25 -04:00
Luke Hodkinson 4896396a51 Removing debugging calls. 2016-03-21 18:29:07 +11:00
Luke Hodkinson be4f207aac Print out all the information as we install. 2016-03-21 18:19:49 +11:00
Luke Hodkinson af15be61b8 Don't stomp on pre-existing environment values, in particular the
`PKG_CONFIG_PATH` variable.
2016-03-21 17:26:51 +11:00
kennethreitz 39d64c5fd1 updated changelog 2016-03-17 23:41:14 -04:00
kennethreitz 645cf5e338 updated stuptools 2016-03-17 23:41:09 -04:00
kennethreitz 7430c48b72 pip v8.1.1 2016-03-17 23:18:54 -04:00
kennethreitz 783d9e4b12 no shared for python-3.5.1 2016-03-15 14:22:31 -04:00
kennethreitz eab957c8c9 BUILD_WITH_GEO_LIBRARIES 2016-03-11 14:58:33 -05:00
kennethreitz 6e80c391a8 Merge pull request #284 from edmorley/update-pip-setuptools
Update pip and setuptools
2016-03-11 14:53:37 -05:00
kennethreitz 58bae65a28 Merge pull request #285 from heroku/mattgraham-patch-2
Update buildpack image to align with marketing
2016-03-11 14:53:22 -05:00
Matt Graham 70d8c7a625 Update Readme.md 2016-03-11 14:15:41 -05:00
Ed Morley 66611ca21a Update setuptools to 20.2.2
https://pythonhosted.org/setuptools/history.html
https://bitbucket.org/pypa/setuptools/branches/compare/20.2.2%0D19.6

The release on PyPI isn't signed, though the MD5 of this archive matches
that on the PyPI package page:

$ md5sum setuptools-20.2.2.tar.gz
bf37191cb4c1472fb61e6f933d2006b1 *setuptools-20.2.2.tar.gz
2016-03-08 14:34:29 +00:00
Ed Morley 20fe371ac7 Update pip to 8.1.0
https://pip.pypa.io/en/stable/news/
https://github.com/pypa/pip/compare/8.0.2...8.1.0

Archive verified via:
https://pypi.python.org/packages/source/p/pip/pip-8.1.0.tar.gz.asc

And Donald's key from:
https://pypi.python.org/security

$ gpg --verify pip-8.1.0.tar.gz.asc pip-8.1.0.tar.gz
gpg: Signature made Sat, Mar  5, 2016  4:57:30 PM GMT using RSA key ID 3372DCFA
gpg: Good signature from "Donald Stufft (dstufft) <donald@stufft.io>"
gpg:                 aka "Donald Stufft (dstufft) <donald@python.org>"
...
Primary key fingerprint: 7C6B 7C5D 5E2B 6356 A926  F04F 6E3C BCE9 3372 DCFA
2016-03-08 14:34:28 +00:00
Ed Morley d23143b801 Update changelog for unreleased changes since v77
https://github.com/heroku/heroku-buildpack-python/compare/v77...c98615cdd00f7525e98524a40a59cf18d7f7a0b6
2016-03-08 14:34:18 +00:00
kennethreitz c98615cdd0 pygdal 2016-03-04 14:37:21 -05:00
kennethreitz 0749a04773 flexible caps for gdal 2016-03-04 14:18:25 -05:00
kennethreitz a4f072714d vendored geos and proj steps for GDAL 2016-03-04 14:14:41 -05:00
kennethreitz 427ec9e431 first attempt at geos build 2016-03-02 18:55:33 -05:00
kennethreitz 168939d14f first attempt at proj build 2016-03-02 18:55:33 -05:00
kennethreitz 58ecbd8a73 updated gdal version 2016-03-02 18:55:33 -05:00
kennethreitz 10eb361975 remove bunk libffi file 2016-03-02 18:55:33 -05:00
kennethreitz 1242d71382 Merge pull request #281 from edmorley/typos-and-cleanup
Correct typos and non-canonical/HTTPS URLs
2016-02-29 14:02:48 -05:00
Ed Morley 6ef93693c5 Use the shorthand buildpack notation in the README example
https://devcenter.heroku.com/articles/buildpacks#officially-supported-buildpacks
2016-02-29 18:30:47 +00:00
Ed Morley 69b8b25322 Use the canonical (and HTTPS) URLs for devcenter and pip
To save the 301s.
2016-02-29 18:28:23 +00:00
Ed Morley b706cd13f7 Fix README and script comment typos 2016-02-29 18:00:46 +00:00
kennethreitz 724e51b5c7 2016 2016-02-25 15:13:33 -05:00
kennethreitz 7b4835a98e Fix CACHED_PYTHON_STACK workflow; update default stack to cedar-14 2016-02-25 14:45:50 -05:00
kennethreitz 477773b331 Merge pull request #278 from jambonrose/issue_277
Fix #277 - Install libffi with django[bcrypt] req.
2016-02-23 11:28:50 -05:00
Andrew Pinkham c98c481f24 Fix #277 - Install libffi with django[bcrypt] req.
This ensures that libffi, required by bcrypt, is installed when Django
is installed with the bcrypt dependency declared as an extra
(django[bcrypt] or Django[bcrypt]).
2016-02-23 09:59:49 -05:00
kennethreitz 462fe074f9 Update Readme.md 2016-02-19 16:03:46 -05:00
kennethreitz 70bfc5eab3 Update Readme.md 2016-02-19 16:02:03 -05:00
kennethreitz a4d2592438 Update Readme.md 2016-02-19 16:01:39 -05:00
kennethreitz 8306f84236 Update Readme.md 2016-02-19 16:01:10 -05:00
kennethreitz 6952a2e728 Update Readme.md 2016-02-19 15:59:06 -05:00
kennethreitz 7142c747f4 Update Readme.md 2016-02-19 15:55:58 -05:00
kennethreitz 11db8e126a Update Readme.md 2016-02-19 15:54:33 -05:00
kennethreitz 6f1fce3cdb Update Readme.md 2016-02-19 15:54:03 -05:00
kennethreitz b2e12f9ec8 Update Readme.md 2016-02-19 15:52:59 -05:00
kennethreitz 44f8e393d6 Update Readme.md 2016-02-19 15:49:13 -05:00
kennethreitz b8cbc64d20 Update Readme.md 2016-02-19 15:46:56 -05:00
kennethreitz 5d51be5679 Update Readme.md 2016-02-19 15:43:01 -05:00
kennethreitz d550b8cd15 Update Readme.md 2016-02-19 15:42:18 -05:00
kennethreitz 25b28af19d Update Readme.md 2016-02-19 15:39:05 -05:00
kennethreitz dbe2cdac37 Update Readme.md 2016-02-19 15:38:31 -05:00
kennethreitz 767af30453 Update Readme.md 2016-02-19 15:27:02 -05:00
kennethreitz df02e34a5b Merge pull request #276 from heroku/mattgraham-patch-1
Correct buildpack featured image
2016-02-17 17:02:58 -05:00
Matt Graham 26c918863e Fix for Issue #275
Closes #275
2016-02-17 11:28:06 -05:00
kennethreitz 1c458cee2e Merge pull request #274 from alex/patch-1
Fixed some broken comments
2016-02-16 08:25:01 -05:00
Alex Gaynor 433570c27b Fixed some broken comments 2016-02-16 08:17:11 -05:00
kennethreitz 30cb4ecef3 Update Readme.md 2016-02-12 19:43:33 -05:00
kennethreitz 84e2a51337 support for FORWARDED_ALLOW_IPS='*' 2016-02-12 18:36:10 -05:00
kennethreitz f1c2bc39d2 Update Readme.md 2016-02-10 22:42:17 -05:00
kennethreitz ad53dc61f0 Improvements to warnings and minor bugfix. 2016-02-10 15:51:46 -05:00
kennethreitz 8598296756 updated changelog 2016-02-08 23:34:04 -05:00
kennethreitz f5ef10326e nicer warnings 2016-02-08 23:31:23 -05:00
kennethreitz 16ec3c8325 cleanup pip freeze 2016-02-08 23:28:13 -05:00
kennethreitz 49676e12af . 2016-02-08 23:12:59 -05:00
kennethreitz 0aa123995b cleanup cleanup 2016-02-08 23:09:47 -05:00
kennethreitz cd4d811d4f wait 2016-02-08 22:52:09 -05:00
kennethreitz 76ebf9279b maybe this will help 2016-02-08 22:25:28 -05:00
kennethreitz 3c3e621040 Revert "Revert "Revert "debug"""
This reverts commit 72710696a0.
2016-02-08 22:12:29 -05:00
kennethreitz 40e91ffa67 debug 2016-02-08 22:10:52 -05:00
kennethreitz 72710696a0 Revert "Revert "debug""
This reverts commit d27228999d.
2016-02-08 22:08:50 -05:00
kennethreitz d27228999d Revert "debug"
This reverts commit a4e8ba3cdf.
2016-02-08 22:00:23 -05:00
kennethreitz a4e8ba3cdf debug 2016-02-08 21:59:55 -05:00
kennethreitz e27b5656fd InsecurePlatformWarning 2016-02-08 21:38:14 -05:00
kennethreitz f132d3198a remove debug 2016-02-08 21:33:22 -05:00
kennethreitz 6afd6bbce9 debug 2016-02-08 21:29:40 -05:00
kennethreitz 6fa14b55d3 let's try this 2016-02-08 21:18:23 -05:00
kennethreitz 8f4eb44d36 capture stderr of pip-install too 2016-02-08 21:12:41 -05:00
kennethreitz 67f4c4238a further output improvement 2016-02-08 21:07:07 -05:00
kennethreitz ffb89feb0d improvements to buildpack output 2016-02-08 20:59:03 -05:00
kennethreitz 45b00e32a7 warn for pip's SNIMissingWarning 2016-02-08 20:53:04 -05:00
kennethreitz 90edd88b22 cleanup collectstatic stuff, before release 2016-02-08 20:30:39 -05:00
kennethreitz 2533cc68c1 correct date on changelog 2016-02-08 19:46:00 -05:00
kennethreitz a11a765b93 v76 2016-02-08 19:36:03 -05:00
kennethreitz 6505f98bae cleanup 2016-02-05 01:07:05 -05:00
kennethreitz eb3e7851f7 compile comments 2016-02-05 01:04:31 -05:00
kennethreitz 78b6142d18 suppress ManifestStaticFilesStorage
Thanks, #11
2016-02-05 00:06:38 -05:00
kennethreitz af58f322e2 Merge branch 'master' of github.com:heroku/heroku-buildpack-python 2016-02-05 00:05:01 -05:00
kennethreitz e4bcc68c9a make collectstatic less spammy for ManifestStaticFilesStorage
From issue #11
2016-02-05 00:04:08 -05:00
kennethreitz 9a024b8595 Update Readme.md 2016-02-05 00:01:36 -05:00
kennethreitz 581177b219 Merge pull request #273 from heroku/collectstatic
Collectstatic revamp
2016-02-04 23:59:52 -05:00
kennethreitz 669f0b0e2a unset extra environment variables 2016-02-04 23:56:29 -05:00
kennethreitz e5ac89c4df indent env output 2016-02-04 23:56:18 -05:00
kennethreitz 1e8ad56b0f sed debug 2016-02-04 23:43:30 -05:00
kennethreitz b6607f0f42 debug 2016-02-04 23:37:44 -05:00
kennethreitz 8615bf5272 debug 2016-02-04 23:36:19 -05:00
kennethreitz 7f475977b5 debugging 2016-02-04 23:35:13 -05:00
kennethreitz 53eee452eb --traceback 2016-02-04 23:33:59 -05:00
kennethreitz 031c9d576f cleanup output 2016-02-04 23:32:45 -05:00
kennethreitz b0568b5f90 PIPESTATUS 2016-02-04 23:25:41 -05:00
kennethreitz 359a3b0d61 collectstatic improvements. 2016-02-04 23:20:40 -05:00
kennethreitz d46e0efc16 sub-env now has a few python variables, just in case. 2016-02-04 23:05:56 -05:00
kennethreitz b97a104ad6 better messaging 2016-02-04 23:05:38 -05:00
kennethreitz a2ee94a8fb first pass at new collectstatic logic 2016-02-04 22:02:24 -05:00
kennethreitz 3b35c2c296 Merge pull request #262 from cclauss/pypy-4.0.1
pypy 4.0.1
2016-01-26 18:50:22 -05:00
kennethreitz 97834d305a v75 2016-01-26 16:57:54 -05:00
kennethreitz 86a53e6479 also exclude wheel from uninstalls 2016-01-26 16:52:11 -05:00
kennethreitz 8c746e3e17 no more --allow-all-external 2016-01-26 16:51:59 -05:00
kennethreitz b1d1a7cca5 update pip/setuptools 2016-01-26 16:51:44 -05:00
kennethreitz f172a83d48 Update release 2016-01-18 13:48:20 -05:00
kennethreitz 4346b41c70 v74 2015-12-29 18:32:08 -05:00
kennethreitz 195ed4ae15 warn for lack of procfile 2015-12-29 18:24:38 -05:00
cclauss e4fee65430 Remove readme changes 2015-12-18 00:59:56 +01:00
kennethreitz 4f10a7e14a Merge pull request #266 from cclauss/patch-2
Update readme to Python 2.7.11 and 3.5.1
2015-12-17 14:26:20 -06:00
kennethreitz a637ec3d11 v72 2015-12-07 16:26:18 -05:00
kennethreitz 1dd7be4250 2.7.11 2015-12-07 16:25:26 -05:00
kennethreitz c2b9121436 New Pythons! 2015-12-07 16:12:24 -05:00
cclauss 567120b4bc Update Readme.md 2015-12-07 07:18:50 +01:00
cclauss b61a395cd0 Update to Python 2.7.11 2015-12-06 02:11:06 +01:00
kennethreitz 2a3962aea7 Python-2.7.11rc1 2015-12-04 17:16:59 -05:00
kennethreitz 364ddc98b7 update setuptools 2015-12-04 17:16:41 -05:00
kennethreitz d93d283be2 v72 2015-12-03 14:57:53 -05:00
kennethreitz 42141c2bf9 v71 2015-12-03 14:57:03 -05:00
kennethreitz d82c898509 remove exit 2015-12-03 14:01:51 -05:00
kennethreitz 6545d71b46 remove debugging statements 2015-12-03 14:01:51 -05:00
kennethreitz 93b707eae5 let's try pipestatus 2015-12-03 14:01:51 -05:00
kennethreitz 8d358218f8 change order 2015-12-03 14:01:51 -05:00
kennethreitz b84b168be8 easier to debug 2015-12-03 14:01:51 -05:00
kennethreitz 35c810e46d debugging 2015-12-03 14:01:51 -05:00
kennethreitz e1ea2f9354 appears to be working now :D 2015-12-03 14:01:51 -05:00
kennethreitz 7db6ea33ac try another approach 2015-12-03 14:01:51 -05:00
kennethreitz a53826a673 try something else 2015-12-03 14:01:51 -05:00
kennethreitz b7ecb49a96 debugging step 2015-12-03 14:01:51 -05:00
kennethreitz 911140b3ac cleanup whitespace 2015-12-03 14:01:51 -05:00
kennethreitz f1c4efb464 distribute warning 2015-12-03 14:01:51 -05:00
kennethreitz 5a979874ad scipy-included 2015-12-03 14:01:51 -05:00
kennethreitz a32ca25520 pretty error message 2015-12-03 14:01:51 -05:00
kennethreitz e304089c3e grep it 2015-12-03 14:01:51 -05:00
kennethreitz 5d8932e5ee remove debugging 2015-12-03 14:01:51 -05:00
kennethreitz 7770ab8ff2 debugging 2015-12-03 14:01:51 -05:00
kennethreitz 277294817a show-warnings 2015-12-03 14:01:51 -05:00
kennethreitz 25b17d51c3 this isn't python 2015-12-03 14:01:51 -05:00
kennethreitz ac103519f8 cleanup cleanup
everybody everywhere
2015-12-03 14:01:51 -05:00
kennethreitz e8b8af045f new warnings file 2015-12-03 14:01:51 -05:00
kennethreitz 0bb6d6e2bd emit a warning 2015-12-03 14:01:51 -05:00
kennethreitz 0184dcac24 let's try exiting one 2015-12-03 14:01:51 -05:00
kennethreitz 558e748e9e trying something else 2015-12-03 14:01:51 -05:00
kennethreitz dec86fbc2e explicitly error out on bad pip install 2015-12-03 14:01:51 -05:00
kennethreitz ddc310084b add loging to pip-install 2015-12-03 14:01:51 -05:00
cclauss 2a6053ec2c pypy-4.0.1
http://morepypy.blogspot.com
2015-11-29 16:23:12 +01:00
cclauss 86e0e29a41 Merge remote-tracking branch 'heroku/master' into pypy-4.0.1 2015-11-29 16:19:36 +01:00
kennethreitz bc754f402b Merge pull request #260 from craigkerstiens/plan-agnostic-database-selection
Update heroku-postgresql to be plan agnostic
2015-11-23 13:07:51 -06:00
Craig Kerstiens ea5bc23a76 Update heroku-postgresql to be plan agnostic
This will result in selecting the lowest level plan for the add-on as opposed to a hard coded one which may change.
2015-11-19 12:05:36 -08:00
kennethreitz 46ecf15337 Merge pull request #259 from heroku/nsamsami-readme-note
Updated Readme
2015-11-18 13:53:35 -06:00
Nahid Samsami d020d20bde Changed "the buildpack" to "this buildpack" 2015-11-17 16:46:26 -08:00
Nahid Samsami 01ff4269f2 Updated Readme
Included a note that the build pack supports running Django and Flask apps.
2015-11-12 17:12:52 -08:00
kennethreitz f507bb0c05 bugfix for python customer 2015-10-29 15:48:16 -04:00
kennethreitz 9179b3cac0 v70 changelog 2015-10-29 11:57:59 -04:00
kennethreitz 5be33758ed Merge branch 'cache' 2015-10-29 11:56:36 -04:00
kennethreitz 41a44272d2 pypy-4.0.0 2015-10-29 11:53:24 -04:00
kennethreitz 6b3f63252f cleanup 2015-10-27 12:50:17 -04:00
kennethreitz c9acc4154b / 2015-10-27 12:23:15 -04:00
kennethreitz d5fed79e86 update to caching mechanism pt 2 2015-10-27 12:22:40 -04:00
kennethreitz 05edd6b065 update to caching mechanism 2015-10-27 12:15:53 -04:00
kennethreitz d96914ab2e restore master's compile script 2015-10-15 11:40:55 -04:00
kennethreitz 4c4e192317 Merge branch 'master' into cache 2015-10-15 10:48:58 -04:00
kennethreitz 2963d2520b update changelog 2015-10-15 10:34:24 -04:00
kennethreitz 85686805a7 Merge branch 'master' into merge 2015-10-15 10:33:12 -04:00
kennethreitz eef41088b1 mkdir-p 2015-10-13 11:23:34 -04:00
kennethreitz f7387427c8 changes 2015-10-13 11:12:55 -04:00
kennethreitz 23e1164c93 try removing .heroku 2015-10-13 11:09:39 -04:00
kennethreitz fd4ab23f50 debug 2015-10-13 11:03:49 -04:00
kennethreitz c78bf77055 allow them to fail 2015-10-13 11:02:17 -04:00
kennethreitz 5e212e4db8 CACHED_DIR 2015-10-13 11:01:51 -04:00
kennethreitz 9f666cee79 explicit is better than implicit 2015-10-13 10:57:51 -04:00
kennethreitz 69e9368c2d further don't error out 2015-10-13 10:48:50 -04:00
kennethreitz 4513dd7522 don't error out on directories that may not exist 2015-10-13 10:47:09 -04:00
kennethreitz 8b3e99adb3 manual cache population 2015-10-13 10:42:57 -04:00
kennethreitz c5972cdb74 .heroku 2015-10-13 10:37:00 -04:00
kennethreitz 7b9bc848ee starting over 2015-10-13 10:33:55 -04:00
kennethreitz 921a4c31a8 back to deep mv 2015-10-13 10:31:39 -04:00
kennethreitz 67063fc34f fix 2015-10-13 10:27:03 -04:00
kennethreitz 21dd1782fa whitelisting 2015-10-13 10:25:49 -04:00
kennethreitz beb8c70585 cleanup 2015-10-13 10:17:29 -04:00
kennethreitz b46cc0c6da ignore cleanup the cache 2015-10-13 10:16:10 -04:00
kennethreitz 74af94132a try hardcoding it in 2015-10-13 10:14:54 -04:00
kennethreitz 24cc273800 whitelist cache 2015-10-13 10:13:23 -04:00
kennethreitz c0fbb0723a attempt to whitelist cache entries for python buildpack 2015-10-13 10:13:09 -04:00
kennethreitz 6ab397db10 whitelist 2015-10-13 10:03:50 -04:00
kennethreitz d8623ae454 whitelist approach 2015-10-13 10:02:34 -04:00
kennethreitz e6d395fa27 ls /app/.heroku 2015-10-13 09:57:13 -04:00
kennethreitz e77090b6b8 copy them to the cache dir 2015-10-13 09:55:48 -04:00
kennethreitz c61f907079 echo 2015-10-13 09:53:47 -04:00
kennethreitz bd90eecd8c fix bug in cache_dir 2015-10-13 09:49:49 -04:00
kennethreitz 44b2ef0c4e an attempt at fixing caching 2015-10-13 09:47:28 -04:00
kennethreitz 38d73effc1 an attempt at fixing caching 2015-10-13 09:47:14 -04:00
kennethreitz 6f6b75bb1f Update CHANGELOG.md 2015-10-12 16:23:00 -04:00
kennethreitz cd90c7d1d8 v68 2015-10-12 10:39:07 -04:00
kennethreitz ce3c68538d no .heroku/venv 2015-10-12 10:36:34 -04:00
kennethreitz b6adf5223b changelog cleanup 2015-10-12 09:52:18 -04:00
kennethreitz 0818d5428f v67 2015-10-12 09:51:56 -04:00
kennethreitz 1d8afb452e legacy venv location 2015-10-12 09:47:52 -04:00
Owen Jacobson 1c82d820c9 Be more conservative to what we cache 2015-10-09 15:28:24 -04:00
kennethreitz 7cf8712d3c v66 2015-10-09 10:36:36 -04:00
kennethreitz 2b62692ab2 Merge branch 'preserve-ORIG_BUILD_DIR' of https://github.com/tommyvn/heroku-buildpack-python into multi 2015-10-09 09:40:03 -04:00
kennethreitz 9188d94723 v65 2015-10-08 13:34:48 -04:00
kennethreitz 2ba3e06f4e Revert "Merge pull request #253 from ojacobson/preserve-original-build-dir"
This reverts commit 1e5ff1f8c9, reversing
changes made to 83538ca6ec.
2015-10-08 13:16:52 -04:00
kennethreitz 6d78f7e3ed v64 2015-10-08 12:17:26 -04:00
kennethreitz 1e5ff1f8c9 Merge pull request #253 from ojacobson/preserve-original-build-dir
Preserve original build directory (including previously-installed programs) when moving app to /app during build.
2015-10-08 12:12:26 -04:00
kennethreitz 83538ca6ec Merge pull request #250 from cclauss/python-3.5.0-and-pypy-2.6.1
Python 3.5.0 and Pypy 2.6.1
2015-10-08 11:10:45 -04:00
kennethreitz 619bd638b0 correct setuptools 2015-10-08 10:08:24 -04:00
kennethreitz 5c359ba0fa Merge remote-tracking branch 'origin/master' 2015-10-08 10:04:04 -04:00
kennethreitz 27f019105e new setuptools and pip 2015-10-08 10:03:08 -04:00
kennethreitz eb572b5ab4 python 3.5.0 2015-10-08 09:43:15 -04:00
Owen Jacobson 67c3d38a03 Preserve original build directory (including previously-installed programs) when moving app to /app during build.
This means that binaries installed in $BUILD_DIR/.heroku/node (let's say) will
remain available during build, at the paths previous buildpacks established.
2015-10-07 18:47:24 -04:00
cclauss 8f4ca7f624 Python 3.5.0 and Pypy 2.6.1
Added python-3.5.0
Added pypy-2.6.1
Updated Readme.md
2015-09-22 12:12:19 +02:00
Matt Graham ce3bdb37ba Merge pull request #241 from heroku/readme-image
--------- Forwarded message ----------
From: M.-A. Lemburg <mal@python.org>
Date: Wed, Aug 12, 2015 at 1:41 AM
Subject: Re: [psf-trademarks] Question on usage of Python logo
To: Craig Kerstiens <craig@heroku.com>, psf-trademarks@python.org


Hi Craig,

we are happy to approve your use of the logo.

Thanks,
--
Marc-Andre Lemburg
Director
Python Software Foundation
http://www.python.org/psf/

On 27.07.2015 20:32, Craig Kerstiens wrote:...
2015-08-13 15:40:16 -04:00
Tom van Neerijnen a91e9c2fc1 export BUILD_DIR and friends after context change
Anything using theses exported variables should be using them in the new
context rather than the old
2015-08-12 11:43:39 +01:00
Tom van Neerijnen da96cdf21e set *PROFILE_PATH after context change
PROFILE_PATH and WEBCONCURRENCY_PROFILE_PATH must land in the new build context and
so should be set after the new context is created
2015-08-12 11:33:06 +01:00
Tom van Neerijnen 0b2e4e9b22 preserve ORIG_BUILD_DIR during the build process
using the apt buildpack in combination with the multi buildpack exports some
paths out of ORIG_BUILD_DIR. By copying instead of moving this should allow
building of python modules that have dependancies on any packages installed
into ORIG_BUILD_DIR.
2015-08-12 10:53:51 +01:00
kennethreitz 129ce5f0df changelog entry 2015-08-07 14:44:56 -04:00
kennethreitz 25f7421573 setuptools v18.1 2015-08-07 14:43:21 -04:00
Matt Graham 8c654b658c merge master 2015-07-31 16:58:44 -04:00
Matt Graham ed3691a0aa python banner image 2015-07-31 16:44:23 -04:00
kennethreitz ded2c5156a Merge pull request #239 from heroku/revert-238-mattgraham-patch-1
Revert "Update Readme.md"
2015-07-28 09:43:52 -04:00
Craig Kerstiens 7c3a6303d1 Revert "Update Readme.md" 2015-07-27 13:42:31 -07:00
kennethreitz 591ed6b150 Merge pull request #238 from heroku/mattgraham-patch-1
Update Readme.md
2015-07-27 16:37:59 -04:00
Matt Graham c1c4f50ef6 Update Readme.md 2015-07-27 14:30:36 -04:00
Matt Graham 2b29e7efeb Update Readme.md 2015-07-24 15:35:53 -04:00
kennethreitz 9f089b18e6 Rename Changelog.md to CHANGELOG.md 2015-07-16 11:52:26 -04:00
kennethreitz 9a1e43b8f2 Update Changelog.md 2015-07-16 11:31:41 -04:00
kennethreitz ac1ba4271c Update Changelog.md 2015-07-16 11:26:33 -04:00
kennethreitz af77d9baf8 Update Changelog.md 2015-07-16 11:25:05 -04:00
kennethreitz 706e6bab4f Update Changelog.md 2015-07-16 11:22:34 -04:00
kennethreitz b6fff224dd Update Changelog.md 2015-07-16 11:22:07 -04:00
kennethreitz 61d3d9580d Merge pull request #235 from jpadilla/master
Update pip to 7.1.0
2015-07-07 14:51:47 -04:00
José Padilla 69b88cb075 Update pip to 7.1.0 2015-07-02 18:15:11 -04:00
kennethreitz a00133892d v61 2015-06-30 08:06:24 -04:00
kennethreitz 5eb337b80d fix ix dyno ulimit 2015-06-30 08:06:19 -04:00
kennethreitz d6212b46ce new setuptools 2015-06-29 14:41:15 -04:00
kennethreitz 3558766ae8 support for ix dynos 2015-06-25 06:34:44 -04:00
kennethreitz 34f4dc43d6 Merge pull request #226 from msabramo/xtrace
Set xtrace if $BUILDPACK_XTRACE set
2015-06-21 13:06:55 -04:00
kennethreitz 0024336558 Merge pull request #232 from jpadilla/master
Update pip to v7.0.3 and setuptools to v17.0
2015-06-21 13:06:28 -04:00
José Padilla c60c5321df Update setuptools to v17.0 2015-06-05 09:16:38 -04:00
José Padilla 0ba69875f5 Remove vendor/pip-7.0.1.tar.gz 2015-06-05 09:16:27 -04:00
José Padilla c8812c7e15 Update pip to v7.0.3 2015-06-04 22:11:20 -04:00
kennethreitz 7d4093795b pypy 2.6.0 2015-06-05 07:44:35 +08:00
kennethreitz 628ad0cb8b requests[security]
fixes #231
2015-06-05 07:43:40 +08:00
Marc Abramowitz 77ddd7c8a6 Set xtrace if $BUILDPACK_XTRACE set
For debugging or for folks who are curious about how the buildpack
works.
2015-05-30 10:00:24 -07:00
kennethreitz c53d54f203 changelog 2015-05-27 16:55:38 -07:00
kennethreitz ed6fe287c4 proper setuptools version 2015-05-27 16:12:59 -07:00
kennethreitz 4f5a88a05a --disable-pip-version-check 2015-05-27 16:08:44 -07:00
kennethreitz 347c0eba81 updated pip and setuptools 2015-05-27 16:07:03 -07:00
kennethreitz 14b482603e Python v2.7.10 2015-05-27 16:04:25 -07:00
kennethreitz 58ce002d35 python 2.7.10 2015-05-27 13:12:43 -07:00
kennethreitz 7fd3a047fd GDAL 2015-05-14 08:42:56 +02:00
kennethreitz 26b4bfbab6 gdal fix 2015-05-14 08:38:11 +02:00
kennethreitz 9e00de4e56 improvements to gdal step 2015-05-14 08:28:32 +02:00
kennethreitz afa8a0f75f pre-compiled gdal step 2015-05-14 08:27:16 +02:00
kennethreitz 52b8ae82b8 gdal is a vendor library 2015-05-14 08:03:36 +02:00
kennethreitz e6c339ebae first attempt at gdal build 2015-05-13 16:41:26 +02:00
kennethreitz 3ea0735768 orig_build_dir 2015-05-05 18:33:49 -07:00
kennethreitz 54b930bba3 Merge remote-tracking branch 'origin/master' 2015-05-05 18:26:20 -07:00
kennethreitz bf202224b7 buildpack cleanup 2015-05-05 18:25:12 -07:00
kennethreitz cead16eb57 remove debugging env 2015-05-05 18:21:10 -07:00
kennethreitz 5c91c81968 skip steps if $DOCKER_BUILD is present 2015-05-05 18:16:58 -07:00
kennethreitz 42594a47c1 Revert "remove old anvil cruft"
This reverts commit 0a78bd001e.
2015-05-05 18:11:10 -07:00
kennethreitz 9d20adca1a env 2015-05-05 18:09:45 -07:00
kennethreitz 181c09cfb7 cleanup / debug 2015-05-05 18:08:31 -07:00
kennethreitz 770947d6e6 Merge pull request #220 from crizCraig/patch-1
Typo in buildpack command. `heroku buildpack:set` -> `heroku buildpacks:...
2015-05-05 17:54:32 -07:00
kennethreitz 0a78bd001e remove old anvil cruft 2015-05-05 15:09:45 -07:00
Craig Quiter 5a1ece3955 Typo in buildpack command. heroku buildpack:set -> heroku buildpacks:set 2015-05-04 12:44:41 -07:00
kennethreitz 8266b99d1e don't uninstall pip or setuptools 2015-05-04 11:59:42 -07:00
kennethreitz e27470778c update pip-pop 2015-05-04 11:52:34 -07:00
kennethreitz 8ef4a006e0 make tools 2015-05-04 11:30:04 -07:00
kennethreitz 4fdaf14ded new pip, new setuptools 2015-05-04 11:09:15 -07:00
kennethreitz f1da8d4b5c Merge pull request #217 from heroku/pyOpenSSL
Detect pyOpenSSL
2015-04-24 15:09:29 -04:00
Steven F eb9689c0a2 Detect pyOpenSSL
Some people use pyOpenSSL (it is the literal name, e.g.: https://pypi.python.org/pypi/pyOpenSSL)
2015-04-24 06:03:43 +00:00
kennethreitz 6fe7c6bde0 Merge pull request #215 from ryanwitt/patch-1
correct usage comment
2015-04-21 17:18:36 -04:00
Ryan Witt a1b372ac66 correct usage comment 2015-04-21 13:22:17 -04:00
kennethreitz ddead6457a Merge pull request #213 from heroku/watsonian-update-readme
Update README to reflect new buildpack:set usage
2015-04-17 08:38:25 -04:00
Joel Watson 92b4385890 Update README to reflect new buildpack:set usage. 2015-04-15 15:45:09 -05:00
kennethreitz 7074d5cb50 Merge remote-tracking branch 'origin/master' 2015-04-02 14:35:16 -04:00
kennethreitz 2b1f1182c3 Merge pull request #211 from ollanta/ollanta/prefer-shallow-managepy
Prefer a 'manage.py' that exists higher up in the directory hierarchy
2015-04-02 14:34:53 -04:00
Ollanta 38fc8f4fe7 Prefer a 'manage.py' that exists higher up in the directory hierarchy 2015-04-02 14:53:52 +02:00
kennethreitz a203495532 pypy v2.5.1 2015-04-01 14:48:02 -04:00
kennethreitz 33a69d7f52 Merge remote-tracking branch 'origin/master' 2015-04-01 14:06:57 -04:00
kennethreitz fe3f12c430 Merge pull request #208 from cyx/master
Upgrade pip and make netrc github work
2015-03-26 13:16:55 -04:00
Cyril David aeb1a297d3 Patch to allow netrc buildpack[1] to work.
[1]: https://github.com/timshadel/heroku-buildpack-github-netrc
2015-03-23 05:47:01 -07:00
kennethreitz 4c1972c0b9 Merge pull request #206 from cclauss/patch-11
Update Readme.md to python-2.7.9 and python-3.4.3
2015-03-20 11:26:23 -07:00
kennethreitz 74f0f319dc pypy 2.5.0 2015-03-19 13:42:03 -07:00
Cyril David 683bba59d7 Update to 6.0.8 2015-03-18 21:15:43 -07:00
cclauss f890cdb889 Update Readme.md to python-2.7.9 and python-3.4.3 2015-03-19 02:42:19 +01:00
kennethreitz b3a98641f5 PyOpenSSL capitalization 2015-03-18 12:52:08 -07:00
kennethreitz ecbcfff5cb Merge remote-tracking branch 'origin/master' 2015-03-18 12:48:42 -07:00
kennethreitz 085d295342 Revert "sub-env pip-install"
This reverts commit 3c2839147f.
2015-03-18 12:48:33 -07:00
kennethreitz e842703721 Merge pull request #196 from t-io/master
extend LIBRARY_PATH
2015-03-18 12:47:04 -07:00
kennethreitz c229070c21 don't print that the stack changed. 2015-03-18 12:43:31 -07:00
kennethreitz 67867f1083 add pyopenssl to libffi support 2015-03-17 14:31:01 -07:00
kennethreitz 91b76c4ca9 Python 3.4.3 2015-03-17 10:59:22 -07:00
Thomas Iovine d2b82441fe Update compile 2015-02-05 17:14:48 +01:00
kennethreitz 532b36f5f7 Merge pull request #194 from thruflo/secure-urls
http: update all external links to use secure protocol.
2015-01-15 17:29:59 -05:00
James Arthur abe34011e5 http: update all external links to use secure protocol. 2015-01-14 09:57:40 +00:00
kennethreitz 4b57be0ae1 fix px dyno ram 2015-01-08 14:45:55 -05:00
kennethreitz d8a75c56d0 WEBCONCURRENCY_PROFILE_PATH 2015-01-08 14:35:32 -05:00
kennethreitz 27ce818f3d PX Dynos = 9 workers 2015-01-08 14:32:35 -05:00
kennethreitz f582b2f4fa setuptools v11.3.1 2015-01-08 14:29:43 -05:00
kennethreitz c46a779ea1 python webconcurrency script 2015-01-06 14:08:16 -05:00
kennethreitz 06a7d9e187 further support for latest pip 2015-01-06 13:41:03 -05:00
kennethreitz ca773cf957 support for latest pip 2015-01-06 13:37:32 -05:00
kennethreitz 26b54b690c update pip and setuptools 2015-01-05 17:16:45 -05:00
kennethreitz 871d5b5935 Merge pull request #189 from cclauss/patch-8
Update Readme.md to pypy3-2.4.0
2014-12-25 23:12:46 -05:00
cclauss 0382c31225 Update Readme.md to pypy3-2.4.0 2014-12-25 11:17:47 +01:00
Kenneth Reitz 4a856ff5b3 remove vendor directory for cedar-14 2014-12-19 15:45:30 -05:00
Kenneth Reitz e247704dfb pypy3 2014-12-19 13:56:11 -05:00
Kenneth Reitz c8b031fafc change to pypy3 2014-12-19 13:45:53 -05:00
Kenneth Reitz 68b740cce6 pypy3! 2014-12-19 13:40:09 -05:00
kennethreitz e856e787aa Merge pull request #180 from cclauss/patch-6
Create pypy3-2.4.0
2014-12-19 13:39:21 -05:00
Kenneth Reitz 7e4159e297 default python: 2.7.9 2014-12-11 11:29:24 -06:00
Kenneth Reitz d9a73b847e python-2.7.9 2014-12-11 11:14:31 -06:00
kennethreitz 3dbeec8db1 Merge pull request #185 from pngdwnld/sub_env_pip
Allowing pip-install to have access to config vars
2014-12-08 11:18:43 -05:00
cclauss 8ec0b5f0dd Update pypy3-2.4.0 2014-11-21 19:46:34 +01:00
Patrick 3c2839147f sub-env pip-install 2014-11-20 12:24:21 -05:00
kennethreitz a51c162444 Merge pull request #182 from cclauss/patch-7
fix @kennethreitz's mess
2014-11-05 08:14:02 -05:00
cclauss 14096e0ca5 fix @kennethreit's mess
Should fix issue https://github.com/heroku/heroku-buildpack-python/issues/181
2014-11-05 00:19:33 +01:00
Kenneth Reitz 2631f5204b seutptools v7.0 2014-10-29 15:20:49 -04:00
Kenneth Reitz f3b1e54df4 fix @cclauss's mess 2014-10-28 01:19:03 -04:00
Kenneth Reitz 536b10b249 Revert "Add download_python function to reduce repetition"
This reverts commit ee93719b79.

Conflicts:
	builds/runtimes/download_python
2014-10-28 01:18:48 -04:00
Kenneth Reitz b22aa3b3a7 python 3.3.6 2014-10-28 01:12:12 -04:00
cclauss eb395a94f9 Create pypy3-2.4.0
Support for the new Pypy3 release http://morepypy.blogspot.com
2014-10-23 07:59:47 -04:00
Kenneth Reitz b2597c45d8 change file mode 2014-10-13 14:48:08 -04:00
kennethreitz 1525c1fb3a Merge pull request #176 from jalavik/libffi-typo
Fix typo in libffi check
2014-10-12 10:57:00 -04:00
kennethreitz fd17f5a470 Merge pull request #177 from cclauss/patch-4
Create python-3.4.2
2014-10-12 10:56:19 -04:00
kennethreitz ac923205d0 Merge pull request #178 from cclauss/patch-5
Readme updates to Python 3.4.2 and Pypy 2.4.0
2014-10-12 10:56:07 -04:00
cclauss 6617a3cac5 Readme updates to Python 3.4.2 and Pypy 2.4.0 2014-10-11 15:19:08 +02:00
cclauss 64a4f51e1b Update python-3.4.2 2014-10-11 15:15:15 +02:00
cclauss 6305ed415a Create python-3.4.2 2014-10-11 15:14:31 +02:00
Jan Aage Lavik 3dff0d48fe Fix typo in libffi check 2014-10-06 21:13:41 +02:00
Kenneth Reitz 6f94b366f8 pypy-2.4.0 2014-09-30 11:05:58 -04:00
kennethreitz 6bb89e6693 Merge pull request #172 from mansam/master
Install libffi for bcrypt as well
2014-09-26 14:55:05 -04:00
Samuel Lucidi 6252e80aa6 Install libffi for bcrypt as well 2014-09-26 10:37:27 -04:00
kennethreitz b22ef82b4f Merge pull request #163 from scrapinghub/readonly-buildpack
Do not fail if buildpack dir is readonly
2014-08-28 13:09:49 -04:00
kennethreitz 129bced2dd Merge pull request #168 from cclauss/master
Create download_python() function to reduce repetition
2014-08-28 13:09:18 -04:00
cclauss c82415733d Modified to use recommended local, compact syntax
local PYTHON_VERSION=${1:-2.7.8}

Thanks for the tip.  You learn something new every day.
2014-08-23 17:32:08 +02:00
cclauss ee93719b79 Add download_python function to reduce repetition
Create a common download_python() function that allows most other files in the build/runtimes directory to be simplified to something of the form:

```
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
# Build Deps: libraries/sqlite

OUT_PREFIX=$1

source ./download_python
download_python "2.7.8"
cd src

./configure --prefix=$OUT_PREFIX
make
make install
```
2014-08-23 09:38:30 +02:00
cclauss 361eb53257 download_python() 2014-08-23 09:34:34 +02:00
cclauss bf9fe3badf download_python() 2014-08-23 09:33:16 +02:00
cclauss 9178962b84 download_python() 2014-08-23 09:31:51 +02:00
cclauss 2b4a68c8c8 download_python() 2014-08-23 09:30:25 +02:00
cclauss f38eec962f download_python() 2014-08-23 09:28:48 +02:00
cclauss a313e66d93 download_python() 2014-08-23 09:27:48 +02:00
cclauss c755286323 download_python() 2014-08-23 09:26:02 +02:00
cclauss 0d219f5d2e download_python() 2014-08-23 09:24:29 +02:00
cclauss 28bdeb6f4b download_python() 2014-08-23 09:22:58 +02:00
cclauss 496a1ad7d8 download_python() 2014-08-23 09:21:33 +02:00
cclauss 57dec77718 download_python() 2014-08-23 09:20:21 +02:00
cclauss 4dc60cb4ca download_python() 2014-08-23 09:18:53 +02:00
cclauss f5f67653f8 download_python() 2014-08-23 09:17:16 +02:00
cclauss b7fd5915a5 download_python() 2014-08-23 09:15:16 +02:00
cclauss 72f7c510b9 download_python() 2014-08-23 09:14:03 +02:00
cclauss ac62aa01d5 download_python() 2014-08-23 09:12:24 +02:00
cclauss a727daa6ff download_python() 2014-08-23 09:11:21 +02:00
cclauss 2187855da2 download_python() 2014-08-23 09:10:16 +02:00
cclauss fb1ed99470 download_python() 2014-08-23 09:08:21 +02:00
cclauss be68853991 download_python() 2014-08-23 09:06:38 +02:00
cclauss c9d794dc76 download_python() 2014-08-23 09:05:20 +02:00
cclauss c1cc0910c5 download_python() 2014-08-23 09:04:14 +02:00
cclauss 61095f726d download_python() 2014-08-23 09:02:56 +02:00
cclauss 721d062421 download_python() 2014-08-23 09:01:51 +02:00
cclauss f38c90b1d5 download_python() 2014-08-23 09:00:20 +02:00
cclauss 8c0284dbe8 download_python() 2014-08-23 08:58:47 +02:00
cclauss f8f4facdca download_python() 2014-08-23 08:57:32 +02:00
cclauss e97f13395f download_python() 2014-08-23 08:54:55 +02:00
cclauss dc87fca814 download_python() 2014-08-23 08:53:15 +02:00
cclauss aafd7caf77 download_python() 2014-08-23 08:51:50 +02:00
cclauss ef964bfc1a download_python() 2014-08-23 08:50:31 +02:00
cclauss e5ae885ae1 download_python() 2014-08-23 08:49:13 +02:00
cclauss 2291255133 download_python() 2014-08-23 08:47:11 +02:00
cclauss d48294f940 download_python() 2014-08-23 08:46:01 +02:00
cclauss ef87cce5a9 download_python() 2014-08-23 08:44:38 +02:00
cclauss 63048e641d download_python() 2014-08-23 08:43:05 +02:00
cclauss 91aa427137 download_python() 2014-08-23 08:41:49 +02:00
cclauss 811c1ceeb6 download_python() 2014-08-23 08:40:06 +02:00
cclauss 8c2e95fb46 download_python() 2014-08-23 08:38:27 +02:00
cclauss d47fb9f718 download_python() 2014-08-23 08:36:32 +02:00
cclauss 4625eca277 download_python() 2014-08-23 08:35:17 +02:00
cclauss b2abb41a38 download_python() 2014-08-23 08:33:05 +02:00
cclauss b228d36041 download_python() 2014-08-23 08:31:30 +02:00
cclauss 7680aea223 download_python() 2014-08-23 08:30:01 +02:00
cclauss 771042a619 download_python() 2014-08-23 08:28:41 +02:00
cclauss b1f7713916 download_python() 2014-08-23 08:27:22 +02:00
cclauss 7b0c04b95b download_python() 2014-08-23 08:25:44 +02:00
cclauss 9f09c934bf download_python() 2014-08-23 08:24:30 +02:00
cclauss 88bad450fd download_python() 2014-08-23 08:22:06 +02:00
cclauss 7614f77431 download_python() 2014-08-23 08:20:44 +02:00
cclauss 761f27958a download_python() 2014-08-23 08:19:25 +02:00
Daniel Graña 52347a0c98 Do not fail if buildpack dir is readonly 2014-08-22 11:05:31 -03:00
Kenneth Reitz e2e97b774a Merge remote-tracking branch 'origin/master' 2014-08-21 14:33:06 -04:00
Kenneth Reitz 4f0f97959f package finder update for pip-pop 2014-08-21 14:33:02 -04:00
kennethreitz 93f4eeb227 Merge pull request #162 from cclauss/patch-6
Updated pypy to 2.3.1 and added pypy3
2014-08-19 12:49:28 -04:00
cclauss ec769e00bb Update Readme.md 2014-08-12 22:12:02 +02:00
cclauss ade975d48f Update Readme.md 2014-08-09 08:33:40 +02:00
Kenneth Reitz 16a07abd51 fix for libmemcached & cedar-14 2014-08-06 17:10:23 -04:00
Kenneth Reitz 2bc071b323 python 3 compatibility 2014-08-05 13:33:12 -04:00
cclauss 3c07ec133e Updated pypy to 2.3.1 and added pypy3
Both are marked (unsupported, experimental).
2014-08-05 14:46:28 +02:00
Kenneth Reitz 5c74244695 fix for cryptography detection 2014-08-04 13:11:05 -04:00
Kenneth Reitz 4e877e4f11 conanical source tarball 2014-08-04 12:11:29 -04:00
Kenneth Reitz 51ec7e3741 attempt of libffi 2014-08-01 21:19:44 -04:00
Kenneth Reitz 1f983fea40 libffi for cedar attempt 2014-08-01 21:12:30 -04:00
Kenneth Reitz a26f0374ec setuptools sanity check 2014-08-01 18:16:54 -04:00
Kenneth Reitz a0029a8411 suppress pip-grep errors 2014-08-01 18:10:15 -04:00
Kenneth Reitz 2de3b6cf1c remove debug statement 2014-08-01 18:04:46 -04:00
Kenneth Reitz fd19ec2c6a support for cryptography! 2014-08-01 18:00:49 -04:00
Kenneth Reitz 6aec3ed37a pylibmc 2014-08-01 17:56:44 -04:00
Kenneth Reitz 7f7f0f7e3d actual libffi support! 2014-08-01 17:37:26 -04:00
Kenneth Reitz dd210c9002 libffi support? 2014-08-01 17:32:17 -04:00
Kenneth Reitz 2ae4bd156f vendor dir for libffi 2014-08-01 16:58:17 -04:00
Kenneth Reitz 8740fcdbad bugfix! 2014-08-01 16:49:08 -04:00
Kenneth Reitz fb18948243 Merge branch 'master' into pylibmc 2014-08-01 16:40:39 -04:00
Kenneth Reitz e104d36785 sub-env 2014-08-01 16:37:00 -04:00
Kenneth Reitz 1786231a49 move requirements to home directory first. 2014-08-01 16:34:53 -04:00
Kenneth Reitz fa8e09ae9c debug 2014-08-01 16:05:57 -04:00
Kenneth Reitz 2dd212d020 silence untar 2014-08-01 16:03:45 -04:00
Kenneth Reitz 15acd305d1 mkdir -p 2014-08-01 16:02:32 -04:00
Kenneth Reitz 5a65a39c5e sub-env, not source 2014-08-01 15:57:24 -04:00
Kenneth Reitz f18754f8f0 pylibmc attempt 2014-08-01 15:46:14 -04:00
Kenneth Reitz e860234d05 fix for pip-grep 2014-08-01 15:15:37 -04:00
Kenneth Reitz 50d61d2935 moving things around 2014-08-01 15:12:19 -04:00
Kenneth Reitz 47c40ce086 Squashed commit of smart-requirements branch
commit 60a2a9d0720693b9438b0f1c75f570dc96bf3a4b
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Fri Aug 1 14:58:29 2014 -0400

    silent mode

commit 20368e741993a2c96739aa1de457618a5272bfe7
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Fri Aug 1 14:56:00 2014 -0400

    pylibmc

commit 8a512995d806ad58e4a8cab9cd712e762277dcf3
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Fri Aug 1 14:55:25 2014 -0400

    fix for pip-grep

commit 0b83a0ac11ee67f08dc843b01ecfe72c9b9c2938
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Fri Aug 1 14:50:35 2014 -0400

    cat that shit

commit 27095d320f4e6c0a6bccec945efbdb6f09598cfc
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Fri Aug 1 14:49:11 2014 -0400

    don't silence the output

commit db15ac279169467e1e78cfcc55cb740660d4b4c9
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Fri Aug 1 14:46:55 2014 -0400

    hello

commit 6b851815b07331bf185f218c40d62123df048b7b
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Fri Aug 1 14:41:37 2014 -0400

    cleanup

commit b2ccf76ccb244976e5ee71164cfe591925cb13a4
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Fri Aug 1 14:41:14 2014 -0400

    remove last debugging statement

commit fdcb7a210327f01fdc49dba00c3928cbb4778c72
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Fri Aug 1 14:39:10 2014 -0400

    remove debugging statements

commit dd58a898e4e5244f3b78ce0402537a1b730a3cc3
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Fri Aug 1 14:36:02 2014 -0400

    bp watch

commit c722f6e964b2a25f91d153c65f0c473ff22ff4c8
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Fri Aug 1 14:34:34 2014 -0400

    install finished

commit 81644ba1956798c06f55a8ce4c86239ca4ee8036
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Fri Aug 1 14:33:04 2014 -0400

    install started

commit 62d0e3b81a5ac25e8ceab735e25cf2bb8d161f0b
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Thu Jul 31 14:54:59 2014 -0400

    debug

commit 1775a1b206780fd99d013ca7c0cb8d8de17a8461
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Thu Jul 31 13:01:15 2014 -0400

    test0

commit 3d20cf89ae0f9436a54c456779a544a3b9d226ac
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Thu Jul 31 12:57:07 2014 -0400

    test2/2

commit 751d7496893bc84430a93cd479511786bce9abb9
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Thu Jul 31 12:50:11 2014 -0400

    silent mode

commit f927b7b3dee18c6ee58b36a3f96ad66e53b8d46d
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Thu Jul 31 12:44:58 2014 -0400

    pylibmc with pip-grep

commit 00dfc36701bf72191f0ad7b7d5533ba7a9ac3b10
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Thu Jul 31 12:41:11 2014 -0400

    no debug echo

commit 38d78d800583fc89100cadc551ce715c5800f0b8
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Thu Jul 31 12:40:06 2014 -0400

    source, not subenv

commit f455de19a8c1150aa2a4df164b90c2dc9a195942
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Thu Jul 31 12:36:35 2014 -0400

    don't print "installing dependencies with pip" twice

commit e72ed7ddbafa0722d2ac6f0cdaf4ac4d0ca0f634
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Thu Jul 31 12:35:47 2014 -0400

    refactor

commit 64819d9fd7ac042ef56499750b47214eb863f8d2
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Thu Jul 31 12:24:26 2014 -0400

    pip-grep

commit 5e075dd7dbeda9084ea7ce0151dc17924251c258
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Thu Jul 31 12:24:13 2014 -0400

    no more travis

commit bc9baba04436dc7b8aefeaee24e820a9720ee9e8
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Tue Jul 29 13:32:40 2014 -0400

    if not requirement

commit 0918d781e50e6190d1045c19c5c5a37e00d669dc
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Tue Jul 29 13:28:28 2014 -0400

    only use requirments that are truthy

commit 4f0f750407eae6bc7faea50c7b607a10a11ad1c5
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Tue Jul 29 13:25:15 2014 -0400

    new version of pip-diff

commit d13b397a21733d0a0a5e31c4995dc6a3b65cd977
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Tue Jul 29 13:12:23 2014 -0400

    ignore errors for pip-diff

commit bb09fb0d5051f69a35e086030b11fd39d1539f84
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Tue Jul 29 12:55:55 2014 -0400

    uninstall the packages

commit 29b2e1f2dbe7761e3f7f55827d0adcd0025aeb4b
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Tue Jul 29 12:47:21 2014 -0400

    maybe this one should be relative

commit 2448558624fdce634350e904eaad5fd3aa725c22
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Tue Jul 29 12:44:04 2014 -0400

    docopt

commit 47010d297330869516f6add46ace97a41cdccb8d
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Tue Jul 29 12:40:36 2014 -0400

    first pass at pip-pop integration

commit 59ac5912e1322be771d1969687891ebeb9f4b5f0
Author: Kenneth Reitz <me@kennethreitz.com>
Date:   Tue Jul 22 14:42:08 2014 -0400

    copy requirements
2014-08-01 15:00:38 -04:00
Kenneth Reitz 2032942b61 Merge remote-tracking branch 'origin/master' 2014-07-18 14:46:33 -04:00
Kenneth Reitz 0076fe4f53 remove bunk pypys 2014-07-18 14:46:31 -04:00
Kenneth Reitz 9b18412ecc pypy ALL the things! 2014-07-18 14:30:02 -04:00
Kenneth Reitz 5f0ba6a371 pypy 2.3.1 attempt for cedar-14 2014-07-18 14:08:02 -04:00
kennethreitz 1e2953b22e Update Readme.md 2014-07-18 13:53:51 -04:00
kennethreitz e27ad6f919 Update Readme.md 2014-07-18 13:52:48 -04:00
Kenneth Reitz bfa7180b7b setuptools v5.4.1 2014-07-18 13:46:06 -04:00
Kenneth Reitz 24ae4f9bda further output cleanups 2014-07-18 13:42:32 -04:00
Kenneth Reitz cbb7512c9a cleanup build output a bit 2014-07-18 13:39:36 -04:00
Kenneth Reitz 869576e8ab hard-coded to system python 2014-07-18 13:31:14 -04:00
Kenneth Reitz 9187dccb54 remove debugging information 2014-07-17 16:44:38 -04:00
Kenneth Reitz eb6193d13e really don't skip install 2014-07-17 16:43:38 -04:00
Kenneth Reitz a43eaaaf81 don't skip the install 2014-07-17 16:42:05 -04:00
Kenneth Reitz c31574d7d6 record the stack 2014-07-17 16:40:04 -04:00
Kenneth Reitz 3a42f565cb change the order of things 2014-07-17 16:39:29 -04:00
Kenneth Reitz 8f1942a9a5 don't hardcode cedar-14 2014-07-17 16:24:38 -04:00
Kenneth Reitz ab05b61638 stack changed, delete things 2014-07-17 16:21:36 -04:00
Kenneth Reitz 5c4a414cb7 $STACK and $CACHED_PYTHON_STACK 2014-07-17 15:56:13 -04:00
Kenneth Reitz 0e11dbadbf bpwatch 2014-07-17 15:40:32 -04:00
Kenneth Reitz 96cf5718b2 2.6.0, 2.6.1 notices for cedar, not cedar-14 2014-07-16 10:34:25 -04:00
Kenneth Reitz d3f8351744 no tests 2014-07-15 10:56:04 -04:00
Kenneth Reitz 9d903fd92f changes 2014-07-15 10:36:01 -04:00
Kenneth Reitz f77d8aaec3 disable sticky versions 2014-07-11 14:50:31 -04:00
Kenneth Reitz 4c2b867172 cedar-14 in download url, echo stack 2014-07-11 14:36:51 -04:00
Kenneth Reitz 1bdf4a0c64 debugging 2014-07-11 13:39:16 -04:00
Kenneth Reitz c2b1465548 missed two more 2014-07-11 13:36:41 -04:00
Kenneth Reitz f4471062a9 missed one 2014-07-11 13:35:05 -04:00
Kenneth Reitz f843a95343 comment out all bpwatch calls 2014-07-11 13:28:28 -04:00
Kenneth Reitz 1605422808 no pypy yet 2014-07-09 16:37:33 -04:00
Kenneth Reitz 5ee2bdbd10 no shared for python-2.7.8 2014-07-09 16:37:12 -04:00
Kenneth Reitz f4c7160763 ld_library_path? 2014-07-07 14:20:34 -04:00
Kenneth Reitz 3e81740517 pypy v2.3.1 2014-07-07 14:10:38 -04:00
Kenneth Reitz a8e065969f libffi: --enable-shared 2014-07-07 13:59:34 -04:00
Kenneth Reitz 688d167190 pypy 2.0 2014-07-07 13:54:40 -04:00
Kenneth Reitz 4553dafeca autoconf formula 2014-07-07 13:47:02 -04:00
Kenneth Reitz 8aeceb00e4 libffi 2014-07-07 13:42:06 -04:00
Kenneth Reitz 022aa736ec update of autoconf 2014-07-07 13:39:36 -04:00
Kenneth Reitz 2cad413958 new libffi attempt 2014-07-07 13:28:12 -04:00
Kenneth Reitz f5fb42e535 add autoconf 2014-07-07 13:21:45 -04:00
Kenneth Reitz 4995eeec41 follow redirects 2014-07-07 13:16:19 -04:00
Kenneth Reitz 0961b59420 libffi attempt 2014-07-07 13:13:48 -04:00
Kenneth Reitz 1fdeedf112 python 3.3.5 2014-07-03 16:55:45 -04:00
Kenneth Reitz 43c7079a07 Default Python: 2.7.8 2014-07-02 10:33:24 -04:00
Kenneth Reitz 097f64721a merge 2014-07-02 10:28:38 -04:00
Kenneth Reitz b3b6c78657 update readme with new python versions 2014-07-02 10:27:38 -04:00
Kenneth Reitz fcfc2f8651 python-2.7.8 (--shared) 2014-07-02 10:12:19 -04:00
kennethreitz 1f9b0bfe02 Merge pull request #150 from cclauss/patch-2
Readme: Update Python versions to match compile
2014-06-20 06:04:33 +08:00
kennethreitz 533def6b57 Merge pull request #152 from yunojuno/master
Update pylibmc to support nested requirements.
2014-06-20 06:03:25 +08:00
Hugo Rodger-Brown 826193ef5a Update pylibmc to support nested requirements.
The current regex assumes that pylibmc appears at the beginning of a line
(whitespace only precedes it), which is a fair assumption in a single 'flat'
requirements.txt file. However, if you are using nested requirements then
this is not the case - your pylibmc may exist in a sub-directory. This is
very similar to the way in which mercurial is installed if "hg+" is found
in the requirements file (see the /bin/compile script). By insisting that
pylibmc appear at the beginning of the file, it's impossible to fool the
compilation into installing libmemcached (as this script does) by simply
putting the phrase into a comment, which is what you *can* do with 'hg+'.

I've updated the regex to remove the beginning of line restriction. This
means that you can add a comment to a top-level requirements.txt that
will trigger the install, without having to functionally alter your
nested requirements.

e.g. top-level requirements.txt:

    # fake comment to trigger pylibmc script
    # fake comment to trigger hg+ install
    -r requirements/production.txt
2014-06-18 18:13:37 +01:00
cclauss 631aa4b356 Readme: Update Python versions to match compile
Also matches recent updates to https://devcenter.heroku.com/articles/python-runtimes
2014-06-17 20:09:25 +02:00
Kenneth Reitz 067422b4b4 disabled shared for python-2.7.7 (for reportlab) 2014-06-12 16:46:34 -04:00
Kenneth Reitz 7ec8f12648 append $LD_LIBRARY_PATH 2014-06-04 17:12:24 -04:00
Kenneth Reitz 731a0cb0bf ignore LIBRARY_CONFIG from the environment. 2014-06-04 11:21:02 -04:00
Kenneth Reitz ebd97e9b93 Make LD_LIBRARY_PATH 2014-06-04 11:20:20 -04:00
kennethreitz 9fcf81c170 Merge pull request #147 from cclauss/patch-7
Update pypy-1.9
2014-06-03 16:12:38 -04:00
kennethreitz 1f2cb16dbb Merge pull request #148 from cclauss/patch-6
Update pypy-1.8
2014-06-03 14:45:29 -04:00
cclauss 827306728f Update pypy-1.9
1.7 --> 1.9 in two locations.
2014-06-03 06:57:01 +02:00
cclauss f6076cb7f0 Update pypy-1.8
1.7 --> 1.8 in two locations.
2014-06-03 06:55:47 +02:00
Kenneth Reitz 694386e233 pypy time 2014-06-02 17:55:32 -04:00
Kenneth Reitz f11928af11 pypy 1.x series 2014-06-02 17:49:12 -04:00
Kenneth Reitz acda8f640a ughhhhhh 2014-06-02 17:41:01 -04:00
Kenneth Reitz 4ff3a5d818 lol consistency
Who was the 3.3.0 release manager? :)
2014-06-02 17:39:07 -04:00
Kenneth Reitz 314b729c8a 3.3.x series 2014-06-02 17:35:10 -04:00
Kenneth Reitz 9fb676aba9 python 3.x series 2014-06-02 17:12:42 -04:00
Kenneth Reitz b91741d10d 3.1.x series 2014-06-02 17:08:15 -04:00
Kenneth Reitz f3787356b6 2.4.x series 2014-06-02 16:56:26 -04:00
Kenneth Reitz def3136c85 no shared for 2.5 2014-06-02 15:34:28 -04:00
Kenneth Reitz abb0c9b384 Python 2.5.x series 2014-06-02 14:49:11 -04:00
Kenneth Reitz 87b2891c1a set LIBRARY_PATH and LD_LIBRARY_PATH in runtime 2014-06-02 14:03:59 -04:00
Kenneth Reitz 52c34ef64f append to include paths 2014-06-02 13:55:05 -04:00
Kenneth Reitz 40bc836a55 --enable-shared
/cc @GrahamDumpleton
2014-06-02 10:44:05 -04:00
Kenneth Reitz d2738ece19 fix for 2.6.x series 2014-06-02 10:40:09 -04:00
Kenneth Reitz f758a5d738 --enable-shared 2014-06-02 10:28:35 -04:00
Kenneth Reitz 63edc5d89b let's see if that helps 2014-06-02 10:28:29 -04:00
Kenneth Reitz 0db1584f21 try different tarball 2014-06-02 10:15:03 -04:00
Kenneth Reitz 1ed173f21d 2.6.5 2014-06-02 10:06:12 -04:00
Kenneth Reitz b17f3f51f7 2.6.x series! 2014-06-02 10:05:28 -04:00
Kenneth Reitz 4f0556cce7 Import of full 2.7.x series 2014-06-02 09:44:20 -04:00
Kenneth Reitz b55a5e5ec8 python-2.7.7, new build infrastructure 2014-06-02 09:35:57 -04:00
Kenneth Reitz 68acbb064d chmod +x 2014-06-02 09:14:19 -04:00
Kenneth Reitz 92df76793f python 2.7.7 2014-06-02 08:47:06 -04:00
Kenneth Reitz 5cda51c7a5 Removing PYTHONPATH from sub-env blacklist
This should fixe the mysterious collectstatic bug. (#143)
2014-06-02 08:38:29 -04:00
Kenneth Reitz 659a406eb8 3.4.0 2014-05-30 09:43:29 -04:00
Kenneth Reitz 4cf2dd5b32 removed old pip vendoring style 2014-05-30 09:35:25 -04:00
Kenneth Reitz 100a5ba0bc fix uploads 2014-05-30 09:34:39 -04:00
Kenneth Reitz ab16abaa88 new style of pip and setuptools vendoring 2014-05-30 09:31:02 -04:00
Kenneth Reitz 989dd1dd2a pip v1.5.6, setuptools v3.6 2014-05-30 09:06:42 -04:00
Kenneth Reitz 0468ef22c4 revert pip/setuptools changes 2014-05-29 09:00:15 -04:00
kennethreitz 6238994a17 Merge pull request #131 from dulaccc/fix-build-api-compilation
Use a default SLUG_ID value
2014-05-26 09:09:37 -04:00
kennethreitz 7ba2fe66a0 Merge pull request #138 from cclauss/master
Test cases for django 1.6, simple-runtime-P2, P3, and Pypy2
2014-05-26 09:08:49 -04:00
kennethreitz dfaec438d9 Merge pull request #141 from cclauss/patch-3
Create python-3.4.1
2014-05-26 08:30:46 -04:00
cclauss aaeef59ff6 Create python-3.4.1 2014-05-19 21:13:31 +02:00
cclauss 4d35f5129a Updated latest supported Python3 to 3.4.0 2014-05-11 23:29:01 +02:00
cclauss 84f610347c Updated pip to 1.5.5 and setuptools to 3.6 2014-05-11 23:04:33 +02:00
cclauss 44bfda1320 Added django 1.6, simple-runtime-P2, P3, and Pypy2 2014-05-11 23:00:05 +02:00
cclauss 330524adba Changed if len(history): to if history: 2014-05-11 22:47:30 +02:00
cclauss 85bddf8f00 Added simple runtime test for Pypy 2 2014-05-11 22:44:39 +02:00
cclauss 7b0d891f4d Added simple runtime test for Pypy 2 2014-05-11 22:43:45 +02:00
cclauss 84f0e2feba Added simple runtime test for Pypy 2 2014-05-11 22:42:49 +02:00
cclauss 76309c35ec Added simple runtime test for Python 2 2014-05-11 22:38:35 +02:00
cclauss 3f6b453c0a Added simple runtime test for Python 2 2014-05-11 22:37:03 +02:00
cclauss 43dbb49103 Updated Requests to 2.2.1 2014-05-11 22:33:33 +02:00
cclauss f08f93f347 Updated Python to 3.4.0 2014-05-11 22:32:20 +02:00
cclauss e0c852f4b9 Added django 1.6 skeleton for testing 2014-05-11 22:30:27 +02:00
cclauss 15373996f4 Added django 1.6 skeleton for testing 2014-05-11 22:29:42 +02:00
cclauss ff1e8da0cb Added django 1.6 skeleton for testing 2014-05-11 22:28:41 +02:00
cclauss 99f7f5b9f1 Update __init__.py 2014-05-11 22:27:31 +02:00
cclauss 656f390de8 Added django 1.6 skeleton for testing 2014-05-11 22:27:15 +02:00
cclauss 42a7e79359 Added django 1.6 skeleton for testing 2014-05-11 22:26:20 +02:00
cclauss bf084cc2ac Added django 1.6 skeleton for testing 2014-05-11 22:24:44 +02:00
cclauss eaaba665bc Added django 1.6 skeleton for testing 2014-05-11 22:23:24 +02:00
kennethreitz 94d311134c Merge pull request #132 from dulaccc/fix-tests
Add missing Makefile
2014-04-28 18:16:50 -04:00
Pierre Dulac 0d49ae9851 Add missing Makefile 2014-04-21 11:46:45 +02:00
Pierre Dulac a5c39384a8 Use a default SLUG_ID value
otherwise the build fails using the Heroku beta
[builds api](https://gist.github.com/friism/c5df3e3e0091bbc6b9f2)
2014-04-20 14:53:47 +02:00
Kenneth Reitz cb6bc30bc6 deploy instructions 2014-04-02 14:40:15 -04:00
Kenneth Reitz 82c72a94d9 v0.0.5 2014-04-02 14:32:12 -04:00
Kenneth Reitz f327afd364 builds for python 2014-04-02 14:29:33 -04:00
Kenneth Reitz d94f4c5bbc Merge branch 'master' into builds 2014-04-02 14:06:57 -04:00
Kenneth Reitz 8be04ea656 no ! 2014-04-02 14:05:09 -04:00
Kenneth Reitz de7c16d942 handhold for collectstatic 2014-04-02 14:02:18 -04:00
Kenneth Reitz 5ea843458a improved collectstatic experience 2014-04-02 13:37:19 -04:00
Kenneth Reitz 758941d12f readme stub 2014-03-26 11:33:14 -04:00
Kenneth Reitz e01d5bc18b bob-builder start 2014-03-26 11:30:27 -04:00
Kenneth Reitz 2c16539190 Merge branch 'stop-finding' of git://github.com/agriffis/heroku-buildpack-python into develop 2014-03-21 15:57:39 -04:00
kennethreitz ed79e61a2f Merge pull request #120 from agriffis/sed-func
Use a sed() function for unbuffered output.
2014-03-21 15:51:18 -04:00
kennethreitz b7bcc69722 Update Readme.md 2014-03-03 16:02:31 -05:00
Aron Griffis e783556e6b dotglob FTW. Doesn't expand . or .. but be explicit just in case. 2014-02-19 20:43:18 -05:00
Aron Griffis 5f96190eb5 Stop calling find for simple operations. Just use extglob.
Additionally use `cp -a` consistently rather than alternating between
`cp -a` and `cp -r`, and don't fail compile if the glob doesn't expand to
anything.
2014-02-17 15:28:17 -05:00
Aron Griffis c579162ef9 Use consistent syntax for declaring functions in utils 2014-02-17 14:55:55 -05:00
Aron Griffis a5cca6de75 Use a sed() function for unbuffered output.
In `bin/steps/collectstatic` the unbuffered output in `indent` is subverted
by calling `sed` first:

```shell
python $MANAGE_FILE collectstatic --noinput  2>&1 | sed '/^Copying/d;/^$/d;/^ /d' | indent
```

This commit fixes this by making `sed` itself unbuffered rather than
putting that logic in the `indent` function.
2014-02-17 14:49:09 -05:00
486 changed files with 1922 additions and 108242 deletions
+2 -6
View File
@@ -1,6 +1,2 @@
language: python sudo: false
python: script: exit 0
- 2.7
script: make tests
notifications:
email: false
+153
View File
@@ -0,0 +1,153 @@
# Python Buildpack Changelog
## v87
Updated default Python 2.7.13.
- Python 2.7.13 uses UCS-4 build, more compatibile with linux wheels.
- Updated setuptools to v32.1.0.
## v86
Refactor and multi-buildpack compatibility.
## v85
Packaging fix.
## v84
Updated pip and setuptools.
- Updated pip to v9.0.1.
- Updated setuptools to v28.8.0.
## v83
Support for Heroku CI.
- Cffi support for argon2
## v82 (2016-08-22)
Update to library detection mechnisms (pip-pop).
- Updated setuptools to v25.5.0
## v81 (2016-06-28)
Updated default Python to 2.7.11.
- Updated pip to v8.1.2.
- Updated setuptools to v23.1.0.
## v80 (2016-04-05)
Improved pip-pop compatibility with latest pip releases.
## v79 (2016-03-22)
Compatibility improvements with heroku-apt-buildpack.
## v78 (2016-03-18)
Added automatic configuration of Gunicorn's `FORWARDED_ALLOW_IPS` setting.
Improved detection of libffi dependency when using bcrypt via `Django[bcrypt]`.
Improved GDAL support.
- GDAL dependency detection now checks for pygdal and is case-insensitive.
- The vendored GDAL library has been updated to 1.11.1.
- GDAL bootstrapping now also installs the GEOS and Proj.4 libraries.
Updated pip to 8.1.1 and setuptools to 20.3.
## v77 (2016-02-10)
Improvements to warnings and minor bugfix.
## v76 (2016-02-08)
Improved Django collectstatic support.
- `$ python manage.py collectstatic` will only be run if `Django` is present in `requirements.txt`.
- If collectstatic fails, the build fails. Full traceback is provided.
- `$DISABLE_COLLECTSTATIC`: skip collectstatic step completely (not new).
- `$DEBUG_COLLECTSTATIC`: echo environment variables upon collectstatic failure.
- Updated build output style.
- New warning for outdated Python (via pip `InsecurePlatform` warning).
## v75 (2016-01-29)
Updated pip and Setuptools.
## 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
View File
@@ -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.
+11
View File
@@ -0,0 +1,11 @@
FROM heroku/heroku:16-build
WORKDIR /app
ENV WORKSPACE_DIR=/app/builds
RUN apt-get update && apt-get install -y python-pip
# Install bob-builder application
RUN pip install bob-builder==0.0.5
COPY . /app
+1 -1
View File
@@ -1,6 +1,6 @@
MIT License: MIT License:
Copyright (C) 2013 Heroku, Inc. Copyright (C) 2016 Heroku, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+10
View File
@@ -0,0 +1,10 @@
# These targets are not files
.PHONY: tests
tests:
./bin/test
tools:
git clone https://github.com/kennethreitz/pip-pop.git
mv pip-pop/bin/* vendor/pip-pop/
rm -fr pip-pop
+54
View File
@@ -0,0 +1,54 @@
![python](https://cloud.githubusercontent.com/assets/51578/13712821/b68a42ce-e793-11e5-96b0-d8eb978137ba.png)
# Heroku Buildpack: Python
This is the official [Heroku buildpack](https://devcenter.heroku.com/articles/buildpacks) for Python apps, powered by [pip](https://pip.pypa.io/) and other excellent software.
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.
Some Python packages with obscure C dependencies (e.g. scipy) are [not compatible](https://devcenter.heroku.com/articles/python-c-deps).
See it in Action
----------------
Deploying a Python application couldn't be easier:
$ ls
Procfile requirements.txt web.py
$ heroku create --buildpack heroku/python
$ git push heroku master
...
-----> Python app detected
-----> Installing python-2.7.12
$ pip install -r requirements.txt
Collecting requests (from -r requirements.txt (line 1))
Downloading requests-2.10.0-py2.py3-none-any.whl (501kB)
Installing collected packages: requests
Successfully installed requests-2.10.0
-----> Discovering process types
Procfile declares types -> (none)
A `requirements.txt` file must be present at the root of your application's repository.
You can also specify the latest production release of this buildpack for upcoming builds of an existing application:
$ heroku buildpacks:set heroku/python
Specify a Python Runtime
------------------------
Specific versions of the Python runtime can be specified with a `runtime.txt` file:
$ cat runtime.txt
python-3.5.2
Runtime options include:
- `python-2.7.12`
- `python-3.5.2`
- `pypy-5.3.1` (unsupported, experimental)
- `pypy3-2.4.0` (unsupported, experimental)
-56
View File
@@ -1,56 +0,0 @@
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/).
[![Build Status](https://secure.travis-ci.org/heroku/heroku-buildpack-python.png?branch=master)](http://travis-ci.org/heroku/heroku-buildpack-python)
Usage
-----
Example usage:
$ ls
Procfile requirements.txt web.py
$ heroku create --stack cedar --buildpack git://github.com/heroku/heroku-buildpack-python.git
$ git push heroku master
...
-----> Fetching custom git buildpack... done
-----> Python app detected
-----> No runtime.txt provided; assuming python-2.7.6.
-----> Preparing Python runtime (python-2.7.6)
-----> Installing Setuptools (2.1)
-----> Installing Pip (1.5.2)
-----> Installing dependencies using Pip (1.5.2)
Downloading/unpacking Flask==0.7.2 (from -r requirements.txt (line 1))
Downloading/unpacking Werkzeug>=0.6.1 (from Flask==0.7.2->-r requirements.txt (line 1))
Downloading/unpacking Jinja2>=2.4 (from Flask==0.7.2->-r requirements.txt (line 1))
Installing collected packages: Flask, Werkzeug, Jinja2
Successfully installed Flask Werkzeug Jinja2
Cleaning up...
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
The buildpack will detect your app as Python if it has the file `requirements.txt` in the root.
It will use Pip to install your dependencies, vendoring a copy of the Python runtime into your slug.
Specify a Runtime
-----------------
You can also provide arbitrary releases Python with a `runtime.txt` file.
$ cat runtime.txt
python-3.3.3
Runtime options include:
- python-2.7.6
- python-3.3.3
- pypy-1.9 (experimental)
Other [unsupported runtimes](https://github.com/kennethreitz/python-versions/tree/master/formula) are available as well.
+115 -153
View File
@@ -1,5 +1,13 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# The Heroku Python Buildpack. This script accepts parameters for a build
# directory, a cache directory, and a directory for app environment variables.
# Warning: there are a few hacks in this script to accommodate excellent builds
# on Heroku. No guarantee for external compatibility is made. However,
# everything should work fine outside of the Heroku environment, if the
# environment is setup correctly.
# Usage: # Usage:
# #
# $ bin/compile <build-dir> <cache-dir> <env-path> # $ bin/compile <build-dir> <cache-dir> <env-path>
@@ -7,6 +15,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,103 +27,110 @@ 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.6" DEFAULT_PYTHON_VERSION="python-2.7.13"
DEFAULT_PYTHON_STACK="cedar-14"
PYTHON_EXE="/app/.heroku/python/bin/python" PYTHON_EXE="/app/.heroku/python/bin/python"
PIP_VERSION="1.5.4" PIP_VERSION="9.0.1"
SETUPTOOLS_VERSION="2.1" SETUPTOOLS_VERSION="32.1.0"
# Common Problem Warnings
export WARNINGS_LOG=$(mktemp)
export RECOMMENDED_PYTHON_VERSION=$DEFAULT_PYTHON_VERSION
# Setup bpwatch # Setup bpwatch
export PATH=$PATH:$ROOT_DIR/vendor/bpwatch export PATH=$PATH:$ROOT_DIR/vendor/bpwatch
LOGPLEX_KEY="t.b396af7f-ad75-4643-8b9e-ebb288acc624" LOGPLEX_KEY="t.b90d9d29-5388-4908-9737-b4576af1d4ce"
export BPWATCH_STORE_PATH=$CACHE_DIR/bpwatch.json export BPWATCH_STORE_PATH=$CACHE_DIR/bpwatch.json
BUILDPACK_VERSION=v28 BUILDPACK_VERSION=v28
# Setup pip-pop (pip-diff)
export PATH=$PATH:$ROOT_DIR/vendor/pip-pop
# Support Anvil Build_IDs # Support Anvil Build_IDs
[ ! "$SLUG_ID" ] && SLUG_ID="defaultslug"
[ ! "$REQUEST_ID" ] && REQUEST_ID=$SLUG_ID [ ! "$REQUEST_ID" ] && REQUEST_ID=$SLUG_ID
[ ! "$STACK" ] && STACK=$DEFAULT_PYTHON_STACK
# Sanitizing environment variables. # Sanitizing environment variables.
unset GIT_DIR PYTHONHOME PYTHONPATH LD_LIBRARY_PATH LIBRARY_PATH unset GIT_DIR PYTHONHOME PYTHONPATH
unset RECEIVE_DATA RUN_KEY BUILD_INFO DEPLOY LOG_TOKEN DYNO
unset CYTOKINE_LOG_FILE GEM_PATH
# Setup buildpack instrumentation.
bpwatch init $LOGPLEX_KEY bpwatch init $LOGPLEX_KEY
bpwatch build python $BUILDPACK_VERSION $REQUEST_ID bpwatch build python $BUILDPACK_VERSION $REQUEST_ID
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
# Directory Hacks for path consistiency. # Import collection of warnings.
APP_DIR='/app' source $BIN_DIR/warnings
TMP_APP_DIR=$CACHE_DIR/tmp_app_dir
# Copy Anvil app dir to temporary storage... # we need to put a bunch of symlinks in there later
bpwatch start anvil_appdir_stage mkdir -p /app/.heroku
if [ "$SLUG_ID" ]; then
mkdir -p $TMP_APP_DIR
deep-mv $APP_DIR $TMP_APP_DIR
else
deep-rm $APP_DIR
fi
bpwatch stop anvil_appdir_stage
# Copy Application code in. # Set up outputs under new context
bpwatch start appdir_stage PROFILE_PATH="$BUILD_DIR/.profile.d/python.sh"
deep-mv $BUILD_DIR $APP_DIR EXPORT_PATH="$BIN_DIR/../export"
bpwatch stop appdir_stage GUNICORN_PROFILE_PATH="$BUILD_DIR/.profile.d/python.gunicorn.sh"
# Set new context. # We'll need to send these statics to other scripts we `source`.
ORIG_BUILD_DIR=$BUILD_DIR export BUILD_DIR CACHE_DIR BIN_DIR PROFILE_PATH EXPORT_PATH
BUILD_DIR=$APP_DIR
# Prepend proper path buildpack use. # Prepend proper environment variables for Python use.
export PATH=$BUILD_DIR/.heroku/python/bin:$BUILD_DIR/.heroku/vendor/bin:$PATH export PATH=/app/.heroku/python/bin:/app/.heroku/vendor/bin:$PATH
export PYTHONUNBUFFERED=1 export PYTHONUNBUFFERED=1
export LANG=en_US.UTF-8 export LANG=en_US.UTF-8
export C_INCLUDE_PATH=/app/.heroku/vendor/include:$BUILD_DIR/.heroku/vendor/include export C_INCLUDE_PATH=/app/.heroku/vendor/include:/app/.heroku/python/include:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=/app/.heroku/vendor/include:$BUILD_DIR/.heroku/vendor/include export CPLUS_INCLUDE_PATH=/app/.heroku/vendor/include:/app/.heroku/python/include:$CPLUS_INCLUDE_PATH
export LIBRARY_PATH=/app/.heroku/vendor/lib:$BUILD_DIR/.heroku/vendor/lib export LIBRARY_PATH=/app/.heroku/vendor/lib:/app/.heroku/python/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=/app/.heroku/vendor/lib:$BUILD_DIR/.heroku/vendor/lib export LD_LIBRARY_PATH=/app/.heroku/vendor/lib:/app/.heroku/python/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/app/.heroku/vendor/lib/pkg-config:$BUILD_DIR/.heroku/vendor/lib/pkg-config export PKG_CONFIG_PATH=/app/.heroku/vendor/lib/pkg-config:/app/.heroku/python/lib/pkg-config:$PKG_CONFIG_PATH
# 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
bpwatch stop pre_compile bpwatch stop pre_compile
# If no requirements given, assume `setup.py develop`. # If no requirements.txt file given, assume `setup.py develop` is intended.
if [ ! -f requirements.txt ]; then if [ ! -f requirements.txt ]; then
puts-step "No requirements.txt provided; assuming dist package."
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)
fi fi
# Stack fallback for non-declared caches.
if [ -f $CACHE_DIR/.heroku/python-stack ]; then
CACHED_PYTHON_STACK=$(cat $CACHE_DIR/.heroku/python-stack)
else
CACHED_PYTHON_STACK=$STACK
fi
# If no runtime given, assume default version. # If no runtime given, assume default version.
if [ ! -f runtime.txt ]; then if [ ! -f runtime.txt ]; then
puts-step "No runtime.txt provided; assuming $DEFAULT_PYTHON_VERSION."
echo $DEFAULT_PYTHON_VERSION > runtime.txt echo $DEFAULT_PYTHON_VERSION > runtime.txt
fi fi
# ### The Cache # Prepare the cache.
mkdir -p $CACHE_DIR mkdir -p $CACHE_DIR
# Purge "old-style" virtualenvs. # Purge "old-style" virtualenvs.
@@ -124,125 +141,70 @@ 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
bpwatch stop restore_cache
set +e cp -R $CACHE_DIR/.heroku/python .heroku/ &> /dev/null || true
# Create set-aside `.heroku` folder. cp -R $CACHE_DIR/.heroku/python-stack .heroku/ &> /dev/null || true
mkdir .heroku &> /dev/null cp -R $CACHE_DIR/.heroku/python-version .heroku/ &> /dev/null || true
set -e cp -R $CACHE_DIR/.heroku/vendor .heroku/ &> /dev/null || true
cp -R $CACHE_DIR/.heroku/venv .heroku/ &> /dev/null || true
bpwatch stop restore_cache
mkdir -p $(dirname $PROFILE_PATH) mkdir -p $(dirname $PROFILE_PATH)
set +e if [[ $BUILD_DIR != '/app' ]]; then
PYTHON_VERSION=$(cat runtime.txt) # python expects to reside in /app, so set up symlinks
# we will not remove these later so subsequent buildpacks can still invoke it
ln -s $BUILD_DIR/.heroku/python /app/.heroku/python
ln -s $BUILD_DIR/.heroku/vendor /app/.heroku/vendor
ln -s $BUILD_DIR/.heroku/venv /app/.heroku/venv
fi
# Install Python. # Install Python.
if [ -f .heroku/python-version ]; then source $BIN_DIR/steps/python
if [ ! $(cat .heroku/python-version) = $PYTHON_VERSION ]; then
bpwatch start uninstall_python
puts-step "Found $(cat .heroku/python-version), removing."
rm -fr .heroku/python
bpwatch stop uninstall_python
else
SKIP_INSTALL=1
fi
fi
# Sanity check for setuptools/distribute.
source $BIN_DIR/steps/setuptools
if [ ! "$SKIP_INSTALL" ]; then # Uninstall removed dependencies with Pip.
bpwatch start install_python source $BIN_DIR/steps/pip-uninstall
puts-step "Preparing Python runtime ($PYTHON_VERSION)"
curl http://envy-versions.s3.amazonaws.com/$PYTHON_VERSION.tar.bz2 -s | tar jx &> /dev/null
if [[ $? != 0 ]] ; then
puts-warn "Requested runtime ($PYTHON_VERSION) was not found."
puts-warn "Aborting. More info: https://devcenter.heroku.com/articles/python-support"
exit 1
fi
mv python .heroku/python
bpwatch stop install_python
# Record for future reference. # Mercurial support.
echo $PYTHON_VERSION > .heroku/python-version source $BIN_DIR/steps/mercurial
FRESH_PYTHON=true
hash -r
else
puts-step "Using Python runtime ($PYTHON_VERSION)"
fi
# If Pip isn't up to date:
if [ "$FRESH_PYTHON" ] || [[ ! $(pip --version) == *$PIP_VERSION* ]]; then
WORKING_DIR=$(pwd)
bpwatch start prepare_environment
bpwatch start install_setuptools
# Prepare it for the real world
puts-step "Installing Setuptools ($SETUPTOOLS_VERSION)"
cd $ROOT_DIR/vendor/setuptools-$SETUPTOOLS_VERSION/
python setup.py install &> /dev/null
cd $WORKING_DIR
bpwatch stop install_setuptoools
bpwatch start install_pip
puts-step "Installing Pip ($PIP_VERSION)"
cd $ROOT_DIR/vendor/pip-$PIP_VERSION/
python setup.py install &> /dev/null
cd $WORKING_DIR
bpwatch stop install_pip
bpwatch stop prepare_environment
fi
set -e
hash -r
# Pylibmc support. # Pylibmc support.
# See [`bin/steps/pylibmc`](pylibmc.html). source $BIN_DIR/steps/pylibmc
bpwatch start pylibmc_install
source $BIN_DIR/steps/pylibmc
bpwatch stop pylibmc_install
# Install Mercurial if it appears to be required. # Libffi support.
if (grep -Fiq "hg+" requirements.txt) then source $BIN_DIR/steps/cryptography
bpwatch start mercurial_install
/app/.heroku/python/bin/pip install mercurial | cleanup | indent # Support for Geo libraries.
bpwatch stop mercurial_install sub-env $BIN_DIR/steps/geo-libs
fi
# GDAL support.
source $BIN_DIR/steps/gdal
# Install dependencies with Pip. # Install dependencies with Pip.
puts-step "Installing dependencies using Pip ($PIP_VERSION)" source $BIN_DIR/steps/pip-install
[ ! "$FRESH_PYTHON" ] && bpwatch start pip_install
[ "$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
[ ! "$FRESH_PYTHON" ] && bpwatch stop pip_install
[ "$FRESH_PYTHON" ] && bpwatch stop pip_install_first
# Django collectstatic support. # Django collectstatic support.
bpwatch start collectstatic sub-env $BIN_DIR/steps/collectstatic
sub-env $BIN_DIR/steps/collectstatic
bpwatch stop collectstatic
# ### Finalize
#
# Set context environment variables. # Create .profile script for application runtime environment variables.
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-default-env LIBRARY_PATH /app/.heroku/vendor/lib set-env LIBRARY_PATH '/app/.heroku/vendor/lib:/app/.heroku/python/lib:$LIBRARY_PATH'
set-default-env LD_LIBRARY_PATH /app/.heroku/vendor/lib 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 and $FORWARDED_ALLOW_IPS.
cp $ROOT_DIR/vendor/python.gunicorn.sh $GUNICORN_PROFILE_PATH
# Experimental post_compile hook. # Experimental post_compile hook.
bpwatch start post_compile bpwatch start post_compile
@@ -251,21 +213,21 @@ 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
deep-mv $BUILD_DIR $ORIG_BUILD_DIR
bpwatch stop appdir_commit
bpwatch start anvil_appdir_commit
if [ "$SLUG_ID" ]; then
deep-mv $TMP_APP_DIR $APP_DIR
fi
bpwatch stop anvil_appdir_commit
bpwatch stop compile bpwatch stop compile
+1 -1
View File
@@ -4,7 +4,7 @@
# [**Python Buildpack**](https://github.com/heroku/heroku-buildpack-python) # [**Python Buildpack**](https://github.com/heroku/heroku-buildpack-python)
# detector. # detector.
# #
# A [buildpack](http://devcenter.heroku.com/articles/buildpacks) is an # A [buildpack](https://devcenter.heroku.com/articles/buildpacks) is an
# adapter between a Python application and Heroku's runtime. # adapter between a Python application and Heroku's runtime.
# ## Usage # ## Usage
+1 -1
View File
@@ -18,6 +18,6 @@ if [[ $MANAGE_FILE ]]; then
cat <<EOF cat <<EOF
addons: addons:
heroku-postgresql:hobby-dev - heroku-postgresql
EOF EOF
fi fi
+51 -20
View File
@@ -1,36 +1,67 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Syntax sugar. # Django Collectstatic runner. If you have Django installed, collectstatic will
indent() { # automatically be executed as part of the build process. If collectstatic
RE="s/^/ /" # fails, your build fails.
[ $(uname) == "Darwin" ] && sed -l "$RE" || sed -u "$RE"
}
MANAGE_FILE=$(find . -maxdepth 3 -type f -name 'manage.py' | head -1) # This functionality will only activate if Django is in requirements.txt.
# Runtime arguments:
# - $DISABLE_COLLECTSTATIC: disables this functionality.
# - $DEBUG_COLLECTSTATIC: upon failure, print out environment variables.
source $BIN_DIR/utils
# Location of 'manage.py', if it exists.
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}
# Legacy file-based support for $DISABLE_COLLECTSTATIC
[ -f .heroku/collectstatic_disabled ] && DISABLE_COLLECTSTATIC=1 [ -f .heroku/collectstatic_disabled ] && DISABLE_COLLECTSTATIC=1
if [ ! "$DISABLE_COLLECTSTATIC" ] && [ -f "$MANAGE_FILE" ]; then # Ensure that Django is explicitly specified in requirements.txt
pip-grep -s requirements.txt django Django && DJANGO_INSTALLED=1
bpwatch start collectstatic # metrics collection
if [ ! "$DISABLE_COLLECTSTATIC" ] && [ -f "$MANAGE_FILE" ] && [ "$DJANGO_INSTALLED" ]; then
set +e set +e
# Check if collectstatic is configured properly. puts-cmd "python $MANAGE_FILE collectstatic --noinput"
python $MANAGE_FILE collectstatic --dry-run --noinput &> /dev/null && RUN_COLLECTSTATIC=true
# Compile assets if collectstatic appears to be kosher. # Run collectstatic, cleanup some of the noisy output.
if [ "$RUN_COLLECTSTATIC" ]; then python $MANAGE_FILE collectstatic --noinput --traceback 2>&1 | sed '/^Post-processed/d;/^Copying/d;/^$/d' | indent
COLLECTSTATIC_STATUS="${PIPESTATUS[0]}"
echo "-----> Collecting static files" set -e
python $MANAGE_FILE collectstatic --noinput 2>&1 | sed '/^Copying/d;/^$/d;/^ /d' | indent
[ $? -ne 0 ] && { # Display a warning if collectstatic failed.
echo " ! Error running manage.py collectstatic. More info:" [ $COLLECTSTATIC_STATUS -ne 0 ] && {
echo " http://devcenter.heroku.com/articles/django-assets"
} echo
fi echo " ! Error while running '$ python $MANAGE_FILE collectstatic --noinput'."
echo " See traceback above for details."
echo
echo " You may need to update application code to resolve this error."
echo " Or, you can disable collectstatic for this application:"
echo
echo " $ heroku config:set DISABLE_COLLECTSTATIC=1"
echo
echo " https://devcenter.heroku.com/articles/django-assets"
# Additionally, dump out the environment, if debug mode is on.
if [ "$DEBUG_COLLECTSTATIC" ]; then
echo
echo "****** Collectstatic environment variables:"
echo
env | indent
fi
# Abort the build.
exit 1
}
echo echo
fi fi
bpwatch stop collectstatic # metrics collection
+35
View File
@@ -0,0 +1,35 @@
#!/usr/bin/env bash
# This script serves as the Cryptography build step of the
# [**Python Buildpack**](https://github.com/heroku/heroku-buildpack-python)
# compiler.
#
# A [buildpack](https://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 libffi 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 a package using cffi exists within requirements, use vendored libffi.
if (pip-grep -s requirements.txt argon2-cffi bcrypt cffi cryptography django[argon2] Django[argon2] django[bcrypt] Django[bcrypt] PyNaCl pyOpenSSL PyOpenSSL requests[security] misaka &> /dev/null) then
if [ ! -d ".heroku/vendor/lib/libffi-3.1" ]; then
echo "-----> Noticed cffi. Bootstrapping libffi."
mkdir -p .heroku/vendor
# Download and extract libffi into target vendor directory.
curl $VENDORED_LIBFFI -s | tar zxv -C .heroku/vendor &> /dev/null
fi
export LIBFFI=$(pwd)/vendor
fi
bpwatch stop libffi_install
Executable
+35
View File
@@ -0,0 +1,35 @@
#!/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](https://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 gdal pygdal &> /dev/null) then
if [ ! -f ".heroku/vendor/bin/gdalserver" ]; then
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
fi
export GDAL=$(pwd)/vendor
fi
bpwatch stop gdal_install
+39
View File
@@ -0,0 +1,39 @@
#!/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](https://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"
VENDORED_GEOS="https://lang-python.s3.amazonaws.com/$STACK/libraries/vendor/geos.tar.gz"
VENDORED_PROJ="https://lang-python.s3.amazonaws.com/$STACK/libraries/vendor/proj.tar.gz"
PKG_CONFIG_PATH="/app/.heroku/vendor/lib/pkgconfig:$PKG_CONFIG_PATH"
# Syntax sugar.
source $BIN_DIR/utils
bpwatch start geo_libs_install
# If GDAL exists within requirements, use vendored gdal.
if [[ "$BUILD_WITH_GEO_LIBRARIES" ]]; then
if [ ! -f ".heroku/vendor/bin/proj" ]; then
echo "-----> Bootstrapping gdal, geos, proj."
mkdir -p .heroku/vendor
# Download and extract cryptography into target vendor directory.
curl $VENDORED_GDAL -s | tar zxv -C .heroku/vendor &> /dev/null
curl $VENDORED_GEOS -s | tar zxv -C .heroku/vendor &> /dev/null
curl $VENDORED_PROJ -s | tar zxv -C .heroku/vendor &> /dev/null
fi
export GDAL=$(pwd)/vendor
fi
bpwatch stop geo_libs_install
+6
View File
@@ -0,0 +1,6 @@
# Install Mercurial if it appears to be required.
if (grep -Fiq "hg+" requirements.txt) then
bpwatch start mercurial_install
/app/.heroku/python/bin/pip install mercurial | cleanup | indent
bpwatch stop mercurial_install
fi
+26
View File
@@ -0,0 +1,26 @@
# Install dependencies with Pip.
puts-cmd "pip install -r requirements.txt"
[ ! "$FRESH_PYTHON" ] && bpwatch start pip_install
[ "$FRESH_PYTHON" ] && bpwatch start pip_install_first
set +e
/app/.heroku/python/bin/pip install -r requirements.txt --exists-action=w --src=./.heroku/src --disable-pip-version-check --no-cache-dir 2>&1 | tee $WARNINGS_LOG | cleanup | indent
PIP_STATUS="${PIPESTATUS[0]}"
set -e
show-warnings
if [[ ! $PIP_STATUS -eq 0 ]]; 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
[ ! "$FRESH_PYTHON" ] && bpwatch stop pip_install
[ "$FRESH_PYTHON" ] && bpwatch stop pip_install_first
echo
+18
View File
@@ -0,0 +1,18 @@
set +e
# Install dependencies with Pip.
bpwatch start pip_uninstall
if [[ -f .heroku/python/requirements-declared.txt ]]; then
cp .heroku/python/requirements-declared.txt requirements-declared.txt
pip-diff --stale requirements-declared.txt requirements.txt --exclude setuptools pip wheel > .heroku/python/requirements-stale.txt
rm -fr requirements-declared.txt
if [[ -s .heroku/python/requirements-stale.txt ]]; then
puts-step "Uninstalling stale dependencies"
/app/.heroku/python/bin/pip uninstall -r .heroku/python/requirements-stale.txt -y --exists-action=w | cleanup | indent
fi
fi
bpwatch stop pip_uninstall
set -e
+12 -16
View File
@@ -4,35 +4,31 @@
# [**Python Buildpack**](https://github.com/heroku/heroku-buildpack-python) # [**Python Buildpack**](https://github.com/heroku/heroku-buildpack-python)
# compiler. # compiler.
# #
# A [buildpack](http://devcenter.heroku.com/articles/buildpacks) is an # A [buildpack](https://devcenter.heroku.com/articles/buildpacks) is an
# adapter between a Python application and Heroku's runtime. # adapter between a Python application and Heroku's runtime.
# #
# 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
# If pylibmc exists within requirements, use vendored libmemcached.
if (grep -Eiq "^\s*pylibmc" requirements.txt) then
echo "-----> Noticed pylibmc. Bootstrapping libmemcached."
cd .heroku
if [ -d "vendor/lib/sasl2" ]; then bpwatch start pylibmc_install
export LIBMEMCACHED=$(pwd)/vendor
else # If pylibmc exists within requirements, use vendored libmemcached.
if (pip-grep -s requirements.txt pylibmc &> /dev/null) then
if [ ! -d ".heroku/vendor/lib/sasl2" ]; then
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
fi fi
export LIBMEMCACHED=$(pwd)/vendor export LIBMEMCACHED=$(pwd)/vendor
cd ..
fi fi
bpwatch stop pylibmc_install
+78
View File
@@ -0,0 +1,78 @@
set +e
PYTHON_VERSION=$(cat runtime.txt)
# Install Python.
if [ -f .heroku/python-version ]; then
if [ ! $(cat .heroku/python-version) = $PYTHON_VERSION ]; then
bpwatch start uninstall_python
puts-step "Found $(cat .heroku/python-version), removing"
rm -fr .heroku/python
bpwatch stop uninstall_python
else
SKIP_INSTALL=1
fi
fi
if [ ! $STACK = $CACHED_PYTHON_STACK ]; then
bpwatch start uninstall_python
rm -fr .heroku/python .heroku/python-stack .heroku/vendor
unset SKIP_INSTALL
bpwatch stop uninstall_python
fi
if [ ! "$SKIP_INSTALL" ]; then
bpwatch start install_python
puts-step "Installing $PYTHON_VERSION"
# Prepare destination directory.
mkdir -p .heroku/python
curl https://lang-python.s3.amazonaws.com/$STACK/runtimes/$PYTHON_VERSION.tar.gz -s | tar zxv -C .heroku/python &> /dev/null
if [[ $? != 0 ]] ; then
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
bpwatch stop install_python
# Record for future reference.
echo $PYTHON_VERSION > .heroku/python-version
echo $STACK > .heroku/python-stack
FRESH_PYTHON=true
hash -r
fi
# If Pip isn't up to date:
if [ "$FRESH_PYTHON" ] || [[ ! $(pip --version) == *$PIP_VERSION* ]]; then
WORKING_DIR=$(pwd)
bpwatch start prepare_environment
TMPTARDIR=$(mktemp -d)
trap "rm -rf $TMPTARDIR" RETURN
bpwatch start install_setuptools
# Prepare it for the real world
# puts-step "Installing Setuptools ($SETUPTOOLS_VERSION)"
tar zxf $ROOT_DIR/vendor/setuptools-$SETUPTOOLS_VERSION.tar.gz -C $TMPTARDIR
cd $TMPTARDIR/setuptools-$SETUPTOOLS_VERSION/
python setup.py install &> /dev/null
cd $WORKING_DIR
bpwatch stop install_setuptoools
bpwatch start install_pip
# puts-step "Installing Pip ($PIP_VERSION)"
tar zxf $ROOT_DIR/vendor/pip-$PIP_VERSION.tar.gz -C $TMPTARDIR
cd $TMPTARDIR/pip-$PIP_VERSION/
python setup.py install &> /dev/null
cd $WORKING_DIR
bpwatch stop install_pip
bpwatch stop prepare_environment
fi
set -e
hash -r
+11
View File
@@ -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
-83
View File
@@ -1,83 +0,0 @@
#!/usr/bin/env bash
#
# Create a Heroku app with the following buildpack:
# https://github.com/ddollar/buildpack-test
#
# Push this Python buildpack to that Heroku app to
# run the tests.
#
testDetectWithReqs() {
detect "simple-requirements"
assertCapturedEquals "Python"
assertCapturedSuccess
}
testDetectWithEmptyReqs() {
detect "empty-requirements"
assertCapturedEquals "Python"
assertCapturedSuccess
}
testDetectDjango15() {
detect "django-1.5-skeleton"
assertCapturedEquals "Python"
assertCapturedSuccess
}
testDetectDjango14() {
detect "django-1.4-skeleton"
assertCapturedEquals "Python"
assertCapturedSuccess
}
testDetectDjango13() {
detect "django-1.3-skeleton"
assertCapturedEquals "Python"
assertCapturedSuccess
}
testDetectNotDjangoWithSettings() {
detect "not-django"
assertCapturedEquals "Python"
assertCapturedSuccess
}
testDetectWithSetupPy() {
detect "distutils"
assertCapturedEquals "Python"
assertCapturedSuccess
}
testDetectWithSetupRequires() {
detect "no-requirements"
assertCapturedEquals "Python"
assertCapturedSuccess
}
testDetectNotPython() {
detect "not-python"
assertNotCaptured "Python"
assertEquals "1" "${RETURN}"
}
## utils ########################################
pushd $(dirname 0) >/dev/null
BASE=$(pwd)
popd >/dev/null
source ${BASE}/vendor/test-utils
detect() {
capture ${BASE}/bin/detect ${BASE}/test/$1
}
compile() {
capture ${BASE}/bin/compile ${BASE}/test/$1
}
source ${BASE}/vendor/shunit2
+11
View File
@@ -0,0 +1,11 @@
#!/usr/bin/env bash
# Syntax sugar.
BIN_DIR=$(cd $(dirname $0); pwd) # absolute path
source $BIN_DIR/utils
DISABLE_COLLECTSTATIC=1 "$(dirname ${0:-})/compile" "$1" "$2" "$3"
if [[ -f "$1/requirements-test.txt" ]]; then
/app/.heroku/python/bin/pip install -r "$1/requirements-test.txt" --exists-action=w --src=./.heroku/src --disable-pip-version-check --no-cache-dir 2>&1 | cleanup | indent
fi
+53 -23
View File
@@ -1,69 +1,98 @@
shopt -s extglob shopt -s extglob
[ $(uname) == "Darwin" ] && SED_FLAG='-l' || SED_FLAG='-u' if [ $(uname) == Darwin ]; then
sed() { command sed -l "$@"; }
else
sed() { command sed -u "$@"; }
fi
# Syntax sugar. # Syntax sugar.
indent() { indent() {
RE="s/^/ /" sed "s/^/ /"
sed $SED_FLAG "$RE"
} }
# Clean up pip output # Clean up pip output
cleanup() { cleanup() {
sed $SED_FLAG -e 's/\.\.\.\+/.../g' | sed $SED_FLAG '/already satisfied/Id' | sed $SED_FLAG -e '/Overwriting/Id' | sed $SED_FLAG -e '/python executable/Id' | sed $SED_FLAG -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'
}
# Buildpack Indented line.
puts-line() {
echo " $@"
} }
# Buildpack Steps. # Buildpack Steps.
function puts-step (){ puts-step() {
echo "-----> $@" echo "-----> $@"
} }
# Buildpack Warnings. # Buildpack Warnings.
function puts-warn (){ puts-warn() {
echo " ! $@" echo " ! $@"
} }
# Buildpack Commands.
puts-cmd() {
echo " $ $@"
}
# Usage: $ set-env key value # Usage: $ set-env key value
function set-env (){ set-env() {
echo "export $1=$2" >> $PROFILE_PATH echo "export $1=$2" >> $PROFILE_PATH
echo "export $1=$2" >> $EXPORT_PATH
} }
# Usage: $ set-default-env key value # Usage: $ set-default-env key value
function set-default-env (){ set-default-env() {
echo "export $1=\${$1:-$2}" >> $PROFILE_PATH echo "export $1=\${$1:-$2}" >> $PROFILE_PATH
echo "export $1=\${$1:-$2}" >> $EXPORT_PATH
} }
# Usage: $ set-default-env key value # Usage: $ un-set-env key
function un-set-env (){ un-set-env() {
echo "unset $1" >> $PROFILE_PATH echo "unset $1" >> $PROFILE_PATH
} }
# Does some serious copying. # Does some serious copying.
function deep-cp (){ deep-cp() {
find -H $1 -maxdepth 1 -name '.*' -a \( -type d -o -type f -o -type l \) -exec cp -a '{}' $2 \; declare source="$1" target="$2"
cp -r $1/!(tmp) $2
# echo copying $1 to $2 mkdir -p "$target"
# cp doesn't like being called without source params,
# so make sure they expand to something first.
# subshell to avoid surprising caller with shopts.
(
shopt -s nullglob dotglob
set -- "$source"/!(tmp|.|..)
[[ $# == 0 ]] || cp -a "$@" "$target"
)
} }
# Does some serious moving. # Does some serious moving.
function deep-mv (){ deep-mv() {
deep-cp $1 $2 deep-cp "$1" "$2"
deep-rm "$1"
rm -fr $1/!(tmp)
find -H $1 -maxdepth 1 -name '.*' -a \( -type d -o -type f -o -type l \) -exec rm -fr '{}' \;
} }
# Does some serious deleting. # Does some serious deleting.
function deep-rm (){ deep-rm() {
rm -fr $1/!(tmp) # subshell to avoid surprising caller with shopts.
find -H $1 -maxdepth 1 -name '.*' -a \( -type d -o -type f -o -type l \) -exec rm -fr '{}' \; (
shopt -s dotglob
rm -rf "$1"/!(.curlrc|.netrc|tmp|.|..)
)
} }
sub-env() { sub-env() {
WHITELIST=${2:-''} WHITELIST=${2:-''}
BLACKLIST=${3:-'^(GIT_DIR|PYTHONHOME|PYTHONPATH|LD_LIBRARY_PATH|LIBRARY_PATH|PATH)$'} BLACKLIST=${3:-'^(GIT_DIR|PYTHONHOME|LD_LIBRARY_PATH|LIBRARY_PATH|PATH)$'}
# Python-specific variables.
export PYHONHOME=$BUILD_DIR/.heroku/python
export PYTHONPATH=$BUILD_DIR/
( (
if [ -d "$ENV_DIR" ]; then if [ -d "$ENV_DIR" ]; then
@@ -78,3 +107,4 @@ sub-env() {
) )
} }
Executable
+49
View File
@@ -0,0 +1,49 @@
shopt -s extglob
old-platform() {
if grep -qi 'InsecurePlatformWarning' "$WARNINGS_LOG"; then
echo
puts-warn "Hello! It looks like your application is using an outdated version of Python."
puts-warn "This caused the security warning you saw above during the 'pip install' step."
puts-warn "We recommend '$RECOMMENDED_PYTHON_VERSION', which you can specify in a 'runtime.txt' file."
puts-warn " -- Much Love, Heroku."
fi
}
pylibmc-missing() {
if grep -qi 'fatal error: libmemcached/memcached.h: No such file or directory' "$WARNINGS_LOG"; then
echo
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
echo
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
echo
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() {
old-platform
pylibmc-missing
scipy-included
distribute-included
}
+31
View File
@@ -0,0 +1,31 @@
# Python Buildpack Binaries
To get started with it, create an app on Heroku inside a clone of this repository, and set your S3 config vars:
$ 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>
Then, shell into an instance and run a build by giving the name of the formula inside `builds`:
$ heroku run bash
Running `bash` attached to terminal... up, run.6880
~ $ bob build runtimes/python-2.7.6
Fetching dependencies... found 2:
- libraries/sqlite
Building formula runtimes/python-2.7.6:
=== Building Python 2.7.6
Fetching Python v2.7.6 source...
Compiling...
If this works, run `bob deploy` instead of `bob build` to have the result uploaded to S3 for you.
To speed things up drastically, it'll usually be a good idea to `heroku run bash --size PX` instead.
Enjoy :)
+15
View File
@@ -0,0 +1,15 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
OUT_PREFIX=$1
echo "Building autoconf..."
SOURCE_TARBALL='https://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.gz'
curl -L $SOURCE_TARBALL | tar xz
cd autoconf-2.68
./configure --prefix=$OUT_PREFIX
make
make install
+22
View File
@@ -0,0 +1,22 @@
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
OUT_PREFIX=$1
echo "Building SQLite..."
SOURCE_TARBALL='https://www.sqlite.org/sqlite-autoconf-3070900.tar.gz'
curl $SOURCE_TARBALL | tar xz
# jx
mv sqlite-autoconf-3070900 sqlite
cd sqlite
./configure --prefix=$OUT_PREFIX
make
make install
# Cleanup
cd ..
rm -fr sqlite
Vendored Executable
+23
View File
@@ -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.1/gdal-1.11.1.tar.gz'
curl -L $SOURCE_TARBALL | tar zx
cd gdal-1.11.1
./configure --prefix=$OUT_PREFIX &&
make
make install
# Cleanup
cd ..
Vendored Executable
+23
View File
@@ -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 geos..."
SOURCE_TARBALL='http://download.osgeo.org/geos/geos-3.4.2.tar.bz2'
curl -L $SOURCE_TARBALL | tar xj
cd geos-3.4.2
./configure --prefix=$OUT_PREFIX &&
make
make install
# Cleanup
cd ..
+28
View File
@@ -0,0 +1,28 @@
#!/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 ..
+45
View File
@@ -0,0 +1,45 @@
#!/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
# 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."
Vendored Executable
+23
View File
@@ -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/proj/proj-4.8.0.tar.gz'
curl -L $SOURCE_TARBALL | tar zx
cd proj-4.8.0
./configure --prefix=$OUT_PREFIX &&
make
make install
# Cleanup
cd ..
+14
View File
@@ -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/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
+14
View File
@@ -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/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
+14
View File
@@ -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
+15
View File
@@ -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
+15
View File
@@ -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
+15
View File
@@ -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.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
+15
View File
@@ -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.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
+15
View File
@@ -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
+18
View File
@@ -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.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
+1 -1
View File
@@ -1 +1 @@
requests bob-builder==0.0.5
-210
View File
@@ -1,210 +0,0 @@
# -*- coding: utf-8 -*-
"""
envoy.core
~~~~~~~~~~
This module provides envoy awesomeness.
Copyright 2012, Kenneth Reitz.
MIT Licensed.
"""
import os
import shlex
import subprocess
import threading
__version__ = '0.0.2'
__license__ = 'MIT'
__author__ = 'Kenneth Reitz'
class Command(object):
def __init__(self, cmd):
self.cmd = cmd
self.process = None
self.out = None
self.err = None
self.returncode = None
self.data = None
def run(self, data, timeout, env):
self.data = data
environ = dict(os.environ).update(env or {})
def target():
self.process = subprocess.Popen(self.cmd,
universal_newlines=True,
shell=False,
env=environ,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
bufsize=0,
)
self.out, self.err = self.process.communicate(self.data)
thread = threading.Thread(target=target)
thread.start()
thread.join(timeout)
if thread.is_alive():
self.process.terminate()
thread.join()
self.returncode = self.process.returncode
return self.out, self.err
class ConnectedCommand(object):
def __init__(self,
process=None,
std_in=None,
std_out=None,
std_err=None):
self._process = process
self.std_in = std_in
self.std_out = std_out
self.std_err = std_out
def __enter__(self):
return self
def __exit__(self, type, value, traceback):
self.kill()
@property
def status_code(self):
"""The status code of the process.
If the code is None, assume that it's still running.
"""
if self._status_code is not None:
return self._status_code
# investigate
return None
@property
def pid(self):
"""The process' PID."""
return self._process.pid
def kill(self):
"""Kills the process."""
return self._process.kill()
def expect(self, bytes, stream=None):
"""Block until given bytes appear in the stream."""
if stream is None:
stream = self.std_out
pass
def send(self, end='\n'):
"""Sends a line to std_in."""
#TODO: Y U LINE BUFFER
pass
def block(self):
"""Blocks until command finishes. Returns Response instance."""
self._status_code = self._process.wait()
class Response(object):
"""A command's response"""
def __init__(self, process=None):
super(Response, self).__init__()
self._process = process
self.command = None
self.std_err = None
self.std_out = None
self.status_code = None
self.history = []
def __repr__(self):
if len(self.command):
return '<Response [{0}]>'.format(self.command[0])
else:
return '<Response>'
def expand_args(command):
"""Parses command strings and returns a Popen-ready list."""
# Prepare arguments.
if isinstance(command, basestring):
splitter = shlex.shlex(command, posix=True)
splitter.whitespace = '|'
splitter.whitespace_split = True
command = []
while True:
token = splitter.get_token()
if token:
command.append(token)
else:
break
command = map(shlex.split, command)
return command
def run(command, data=None, timeout=None, env=None):
"""Executes a given commmand and returns Response.
Blocks until process is complete, or timeout is reached.
"""
command = expand_args(command)
history = []
for c in command:
if len(history):
# due to broken pipe problems pass only first 10MB
data = history[-1].std_out[0:10*1024]
cmd = Command(c)
out, err = cmd.run(data, timeout, env)
r = Response(process=cmd)
r.command = c
r.std_out = out
r.std_err = err
r.status_code = cmd.returncode
history.append(r)
r = history.pop()
r.history = history
return r
def connect(command, data=None, env=None):
"""Spawns a new process from the given command."""
# TODO: support piped commands
command_str = expand_args(command).pop()
environ = dict(os.environ).update(env or {})
process = subprocess.Popen(command_str,
universal_newlines=True,
shell=False,
env=environ,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
bufsize=0,
)
return ConnectedCommand(process=process)
-43
View File
@@ -1,43 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import sys
import envoy
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
if sys.argv[-1] == "publish":
os.system("python setup.py sdist upload")
sys.exit()
required = []
setup(
name='envoy',
version=envoy.__version__,
description='Simple API for running external processes.',
author='Kenneth Reitz',
author_email='me@kennethreitz.com',
url='https://github.com/kennethreitz/envoy',
py_modules= ['envoy'],
install_requires=required,
license='MIT',
classifiers=(
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'Natural Language :: English',
'License :: OSI Approved :: MIT License',
'Programming Language :: Python',
'Programming Language :: Python :: 2.5',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
# 'Programming Language :: Python :: 3.0',
# 'Programming Language :: Python :: 3.1',
),
)
@@ -1,14 +0,0 @@
#!/usr/bin/env python
from django.core.management import execute_manager
import imp
try:
imp.find_module('settings') # Assumed to be in the same directory.
except ImportError:
import sys
sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n" % __file__)
sys.exit(1)
import settings
if __name__ == "__main__":
execute_manager(settings)
@@ -1,145 +0,0 @@
# Django settings for haystack project.
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = (
# ('Your Name', 'your_email@example.com'),
)
MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': '', # Or path to database file if using sqlite3.
'USER': '', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
# Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems.
# On Unix systems, a value of None will cause Django to use the same
# timezone as the operating system.
# If running in a Windows environment this must be set to the same as your
# system time zone.
TIME_ZONE = 'America/Chicago'
# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'en-us'
SITE_ID = 1
# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True
# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale
USE_L10N = True
# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/media.lawrence.com/media/"
MEDIA_ROOT = ''
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = ''
# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = ''
# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'
# URL prefix for admin static files -- CSS, JavaScript and images.
# Make sure to use a trailing slash.
# Examples: "http://foo.com/static/admin/", "/static/admin/".
ADMIN_MEDIA_PREFIX = '/static/admin/'
# Additional locations of static files
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
)
# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
# Make this unique, and don't share it with anybody.
SECRET_KEY = '@$87s&royz$nvav^3*$4u6^htybq*o=ge504rqp7r2)@ec*g(3'
# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
# 'django.template.loaders.eggs.Loader',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
ROOT_URLCONF = 'haystack.urls'
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
)
# A sample logging configuration. The only tangible logging
# performed by this configuration is to send an email to
# the site admins on every HTTP 500 error.
# See http://docs.djangoproject.com/en/dev/topics/logging for
# more details on how to customize your logging configuration.
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler'
}
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
}
}
-17
View File
@@ -1,17 +0,0 @@
from django.conf.urls.defaults import patterns, include, url
# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'haystack.views.home', name='home'),
# url(r'^haystack/', include('haystack.foo.urls')),
# Uncomment the admin/doc line below to enable admin documentation:
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
# url(r'^admin/', include(admin.site.urls)),
)
@@ -1 +0,0 @@
django==1.3
Binary file not shown.
@@ -1,154 +0,0 @@
# Django settings for haystack project.
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = (
# ('Your Name', 'your_email@example.com'),
)
MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': '', # Or path to database file if using sqlite3.
'USER': '', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
# Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems.
# On Unix systems, a value of None will cause Django to use the same
# timezone as the operating system.
# If running in a Windows environment this must be set to the same as your
# system time zone.
TIME_ZONE = 'America/Chicago'
# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'en-us'
SITE_ID = 1
# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True
# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale.
USE_L10N = True
# If you set this to False, Django will not use timezone-aware datetimes.
USE_TZ = True
# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/media.lawrence.com/media/"
MEDIA_ROOT = ''
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = ''
# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = ''
# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'
# Additional locations of static files
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
)
# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
# Make this unique, and don't share it with anybody.
SECRET_KEY = '633$+yuh67kvt_v8gpi9zmkvqb*m5nts6&amp;a=q^dwhi+e#^j_ki'
# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
# 'django.template.loaders.eggs.Loader',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
# Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
ROOT_URLCONF = 'haystack.urls'
# Python dotted path to the WSGI application used by Django's runserver.
WSGI_APPLICATION = 'haystack.wsgi.application'
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
)
# A sample logging configuration. The only tangible logging
# performed by this configuration is to send an email to
# the site admins on every HTTP 500 error when DEBUG=False.
# See http://docs.djangoproject.com/en/dev/topics/logging for
# more details on how to customize your logging configuration.
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
}
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
}
}
-17
View File
@@ -1,17 +0,0 @@
from django.conf.urls import patterns, include, url
# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'haystack.views.home', name='home'),
# url(r'^haystack/', include('haystack.foo.urls')),
# Uncomment the admin/doc line below to enable admin documentation:
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
# url(r'^admin/', include(admin.site.urls)),
)
-28
View File
@@ -1,28 +0,0 @@
"""
WSGI config for haystack project.
This module contains the WSGI application used by Django's development server
and any production WSGI deployments. It should expose a module-level variable
named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover
this application via the ``WSGI_APPLICATION`` setting.
Usually you will have the standard Django WSGI application here, but it also
might make sense to replace the whole Django WSGI application with a custom one
that later delegates to the Django one. For example, you could introduce WSGI
middleware here, or combine a Django application with an application of another
framework.
"""
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "haystack.settings")
# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
# Apply WSGI middleware here.
# from helloworld.wsgi import HelloWorldApplication
# application = HelloWorldApplication(application)
-10
View File
@@ -1,10 +0,0 @@
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "haystack.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
@@ -1 +0,0 @@
Django==1.4
@@ -1,156 +0,0 @@
# Django settings for haystack project.
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = (
# ('Your Name', 'your_email@example.com'),
)
MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': '', # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
'USER': '',
'PASSWORD': '',
'HOST': '', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
'PORT': '', # Set to empty string for default.
}
}
# Hosts/domain names that are valid for this site; required if DEBUG is False
# See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts
ALLOWED_HOSTS = []
# Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems.
# In a Windows environment this must be set to your system time zone.
TIME_ZONE = 'America/Chicago'
# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'en-us'
SITE_ID = 1
# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True
# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale.
USE_L10N = True
# If you set this to False, Django will not use timezone-aware datetimes.
USE_TZ = True
# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/var/www/example.com/media/"
MEDIA_ROOT = ''
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://example.com/media/", "http://media.example.com/"
MEDIA_URL = ''
# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/var/www/example.com/static/"
STATIC_ROOT = ''
# URL prefix for static files.
# Example: "http://example.com/static/", "http://static.example.com/"
STATIC_URL = '/static/'
# Additional locations of static files
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
)
# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
# Make this unique, and don't share it with anybody.
SECRET_KEY = '@w-1$9#jh05!qvbh#1k)c4=w9llcq116f$5(4&s_c)n4@%n=pc'
# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
# 'django.template.loaders.eggs.Loader',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
# Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
ROOT_URLCONF = 'haystack.urls'
# Python dotted path to the WSGI application used by Django's runserver.
WSGI_APPLICATION = 'haystack.wsgi.application'
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
)
# A sample logging configuration. The only tangible logging
# performed by this configuration is to send an email to
# the site admins on every HTTP 500 error when DEBUG=False.
# See http://docs.djangoproject.com/en/dev/topics/logging for
# more details on how to customize your logging configuration.
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
}
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
}
}
-17
View File
@@ -1,17 +0,0 @@
from django.conf.urls import patterns, include, url
# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'haystack.views.home', name='home'),
# url(r'^haystack/', include('haystack.foo.urls')),
# Uncomment the admin/doc line below to enable admin documentation:
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
# url(r'^admin/', include(admin.site.urls)),
)
-32
View File
@@ -1,32 +0,0 @@
"""
WSGI config for haystack project.
This module contains the WSGI application used by Django's development server
and any production WSGI deployments. It should expose a module-level variable
named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover
this application via the ``WSGI_APPLICATION`` setting.
Usually you will have the standard Django WSGI application here, but it also
might make sense to replace the whole Django WSGI application with a custom one
that later delegates to the Django one. For example, you could introduce WSGI
middleware here, or combine a Django application with an application of another
framework.
"""
import os
# We defer to a DJANGO_SETTINGS_MODULE already in the environment. This breaks
# if running multiple sites in the same mod_wsgi process. To fix this, use
# mod_wsgi daemon mode with each site in its own daemon process, or use
# os.environ["DJANGO_SETTINGS_MODULE"] = "haystack.settings"
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "haystack.settings")
# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
# Apply WSGI middleware here.
# from helloworld.wsgi import HelloWorldApplication
# application = HelloWorldApplication(application)
-10
View File
@@ -1,10 +0,0 @@
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "haystack.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
@@ -1 +0,0 @@
django==1.5
-30
View File
@@ -1,30 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
required = ['httpbin']
setup(
name='haystack',
version='0.0.1',
description='Simple API for running external processes.',
author='Kenneth Reitz',
author_email='me@kennethreitz.com',
install_requires=required,
license='MIT',
classifiers=(
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'Natural Language :: English',
'License :: OSI Approved :: MIT License',
'Programming Language :: Python',
'Programming Language :: Python :: 2.5',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
# 'Programming Language :: Python :: 3.0',
# 'Programming Language :: Python :: 3.1',
),
)
View File
-1
View File
@@ -1 +0,0 @@
flask==0.8
View File
-2
View File
@@ -1,2 +0,0 @@
pylibmc
psycopg2
@@ -1,2 +0,0 @@
requests
distribute==0.6.49
-1
View File
@@ -1 +0,0 @@
requests==1.0.3
-1
View File
@@ -1 +0,0 @@
python-3.3.2
+1 -1
View File
@@ -1,4 +1,4 @@
#!/usr/bin/env python2 #!/usr/bin/python
import os import os
-120
View File
@@ -1,120 +0,0 @@
Alex Gaynor
Alex Grönholm
Alex Morega
Alexandre Conrad
Andrey Bulgakov
Anrs Hu
Anton Patrushev
Antti Kaihola
Armin Ronacher
Aziz Köksal
Ben Rosser
Bernardo B. Marques
Bradley Ayers
Brian Rosner
Carl Meyer
Chris McDonough
Christian Oudard
Clay McClure
Cody Soyland
Craig Kerstiens
Cristian Sorinel
Dan Sully
Daniel Holth
Dave Abrahams
David (d1b)
David Aguilar
David Evans
David Pursehouse
dengzhp
Dmitry Gladkov
Donald Stufft
Endoh Takanao
enoch
Erik M. Bray
Francesco
Gabriel de Perthuis
Garry Polley
Geoffrey Lehée
George Song
Georgi Valkov
Herbert Pfennig
hetmankp
Hugo Lopes Tavares
Hynek Schlawack
Ian Bicking
Igor Sobreira
Ionel Maries Cristian
Jakub Vysoky
James Cleveland
Jannis Leidel
Jakub Stasiak
Jay Graves
Jeff Dairiki
John-Scott Atlakson
Jon Parise
Jonas Nockert
Jon Parise
Jorge Niedbalski
Josh Bronson
Josh Hansen
Kamal Bin Mustafa
Kelsey Hightower
Kenneth Belitzky
Kenneth Reitz
Kevin Frommelt
Kumar McMillan
Lev Givon
Lincoln de Sousa
Luke Macken
Masklinn
Marc Abramowitz
Marc Tamlyn
Marcus Smith
Markus Hametner
Matt Maker
Maxime Rouyrre
Michael Williamson
Miguel Araujo Perez
Monty Taylor
Nick Stenning
Nowell Strite
Oliver Tonnhofer
Olivier Girardot
Ollie Rutherfurd
Oren Held
Patrick Jenkins
Patrick Dubroy
Paul Moore
Paul Nasrat
Paul Oswald
Paul van der Linden
Peter Waller
Phil Freo
Phil Whelan
Piet Delport
Preston Holmes
Przemek Wrzos
Qiangning Hong
Rafael Caricio
Rene Dudfield
Roey Berman
Ronny Pfannschmidt
Rory McCann
Ross Brattain
Sergey Vasilyev
Seth Woodworth
Simon Cross
Stavros Korokithakis
Stéphane Klein
Steven Myint
Takayuki SHIMIZUKAWA
Thomas Fenzl
Thomas Johansson
Toshio Kuratomi
Travis Swicegood
Vinay Sajip
Vitaly Babiy
W. Trevor King
Wil Tan
Hsiaoming Yang
-915
View File
@@ -1,915 +0,0 @@
**1.5.4 (2014-02-21)**
* Correct deprecation warning for ``pip install --build`` to only notify when
the `--build` value is different than the default.
**1.5.3 (2014-02-20)**
* **DEPRECATION** ``pip install --build`` and ``pip install --no-clean`` are now
deprecated. See Issue #906 for discussion.
* Fixed #1112. Couldn't download directly from wheel paths/urls, and when wheel
downloads did occur using requirement specifiers, dependencies weren't
downloaded (PR #1527)
* Fixed #1320. ``pip wheel`` was not downloading wheels that already existed (PR
#1524)
* Fixed #1111. ``pip install --download`` was failing using local
``--find-links`` (PR #1524)
* Workaround for Python bug http://bugs.python.org/issue20053 (PR #1544)
* Don't pass a unicode __file__ to setup.py on Python 2.x (PR #1583)
* Verify that the Wheel version is compatible with this pip (PR #1569)
**1.5.2 (2014-01-26)**
* Upgraded the vendored ``pkg_resources`` and ``_markerlib`` to setuptools 2.1.
* Fixed an error that prevented accessing PyPI when pyopenssl, ndg-httpsclient,
and pyasn1 are installed
* Fixed an issue that caused trailing comments to be incorrectly included as
part of the URL in a requirements file
**1.5.1 (2014-01-20)**
* pip now only requires setuptools (any setuptools, not a certain version) when
installing distributions from src (i.e. not from wheel). (Pull #1434).
* `get-pip.py` now installs setuptools, when it's not already installed (Pull
#1475)
* Don't decode downloaded files that have a ``Content-Encoding`` header. (Pull
#1435)
* Fix to correctly parse wheel filenames with single digit versions. (Pull
#1445)
* If `--allow-unverified` is used assume it also means `--allow-external`. (Pull
#1457)
**1.5 (2014-01-01)**
* **BACKWARD INCOMPATIBLE** pip no longer supports the ``--use-mirrors``,
``-M``, and ``--mirrors`` flags. The mirroring support has been removed. In
order to use a mirror specify it as the primary index with ``-i`` or
``--index-url``, or as an additional index with ``--extra-index-url``. (Pull #1098, CVE-2013-5123)
* **BACKWARD INCOMPATIBLE** pip no longer will scrape insecure external urls by
default nor will it install externally hosted files by default. Users may opt
into installing externally hosted or insecure files or urls using
``--allow-external PROJECT`` and ``--allow-unverified PROJECT``. (Pull #1055)
* **BACKWARD INCOMPATIBLE** pip no longer respects dependency links by default.
Users may opt into respecting them again using ``--process-dependency-links``.
* **DEPRECATION** ``pip install --no-install`` and ``pip install
--no-download`` are now formally deprecated. See Issue #906 for discussion on
possible alternatives, or lack thereof, in future releases.
* **DEPRECATION** ``pip zip`` and ``pip unzip`` are now formally deprecated.
* pip will now install Mac OSX platform wheels from PyPI. (Pull #1278)
* pip now generates the appropriate platform-specific console scripts when
installing wheels. (Pull #1251)
* Pip now confirms a wheel is supported when installing directly from a path or
url. (Pull #1315)
* Fixed #1097, ``--ignore-installed`` now behaves again as designed, after it was
unintentionally broke in v0.8.3 when fixing Issue #14 (Pull #1352).
* Fixed a bug where global scripts were being removed when uninstalling --user
installed packages (Pull #1353).
* Fixed #1163, --user wasn't being respected when installing scripts from wheels (Pull #1176).
* Fixed #1150, we now assume '_' means '-' in versions from wheel filenames (Pull #1158).
* Fixed #219, error when using --log with a failed install (Pull #1205).
* Fixed #1131, logging was buffered and choppy in Python 3.
* Fixed #70, --timeout was being ignored (Pull #1202).
* Fixed #772, error when setting PIP_EXISTS_ACTION (Pull #1201).
* Added colors to the logging output in order to draw attention to important
warnings and errors. (Pull #1109)
* Added warnings when using an insecure index, find-link, or dependency link. (Pull #1121)
* Added support for installing packages from a subdirectory using the ``subdirectory``
editable option. ( Pull #1082 )
* Fixed #1192. "TypeError: bad operand type for unary" in some cases when
installing wheels using --find-links (Pull #1218).
* Fixed #1133 and #317. Archive contents are now written based on system
defaults and umask (i.e. permissions are not preserved), except that regular
files with any execute permissions have the equivalent of "chmod +x" applied
after being written (Pull #1146).
* PreviousBuildDirError now returns a non-zero exit code and prevents the
previous build dir from being cleaned in all cases (Pull #1162).
* Renamed --allow-insecure to --allow-unverified, however the old name will
continue to work for a period of time (Pull #1257).
* Fixed #1006, error when installing local projects with symlinks in
Python 3. (Pull #1311)
* The previously hidden ``--log-file`` otion, is now shown as a general option.
(Pull #1316)
**1.4.1 (2013-08-07)**
* **New Signing Key** Release 1.4.1 is using a different key than normal with
fingerprint: 7C6B 7C5D 5E2B 6356 A926 F04F 6E3C BCE9 3372 DCFA
* Fixed issues with installing from pybundle files (Pull #1116).
* Fixed error when sysconfig module throws an exception (Pull #1095).
* Don't ignore already installed pre-releases (Pull #1076).
* Fixes related to upgrading setuptools (Pull #1092).
* Fixes so that --download works with wheel archives (Pull #1113).
* Fixes related to recognizing and cleaning global build dirs (Pull #1080).
**1.4 (2013-07-23)**
* **BACKWARD INCOMPATIBLE** pip now only installs stable versions by default,
and offers a new ``--pre`` option to also find pre-release and development
versions. (Pull #834)
* **BACKWARD INCOMPATIBLE** Dropped support for Python 2.5. The minimum
supported Python version for pip 1.4 is Python 2.6.
* Added support for installing and building wheel archives.
Thanks Daniel Holth, Marcus Smith, Paul Moore, and Michele Lacchia
(Pull #845)
* Applied security patch to pip's ssl support related to certificate DNS
wildcard matching (http://bugs.python.org/issue17980).
* To satisfy pip's setuptools requirement, pip now recommends setuptools>=0.8,
not distribute. setuptools and distribute are now merged into one project
called 'setuptools'. (Pull #1003)
* pip will now warn when installing a file that is either hosted externally to
the index or cannot be verified with a hash. In the future pip will default
to not installing them and will require the flags --allow-external NAME, and
--allow-insecure NAME respectively. (Pull #985)
* If an already-downloaded or cached file has a bad hash, re-download it rather
than erroring out. (Issue #963).
* ``pip bundle`` and support for installing from pybundle files is now
considered deprecated and will be removed in pip v1.5.
* Fixed a number of issues (#413, #709, #634, #602, and #939) related to
cleaning up and not reusing build directories. (Pull #865, #948)
* Added a User Agent so that pip is identifiable in logs. (Pull #901)
* Added ssl and --user support to get-pip.py. Thanks Gabriel de Perthuis.
(Pull #895)
* Fixed the proxy support, which was broken in pip 1.3.x (Pull #840)
* Fixed issue #32 - pip fails when server does not send content-type header.
Thanks Hugo Lopes Tavares and Kelsey Hightower (Pull #872).
* "Vendorized" distlib as pip.vendor.distlib (https://distlib.readthedocs.org/).
* Fixed git VCS backend with git 1.8.3. (Pull #967)
**1.3.1 (2013-03-08)**
* Fixed a major backward incompatible change of parsing URLs to externally
hosted packages that got accidentily included in 1.3.
**1.3 (2013-03-07)**
* SSL Cert Verification; Make https the default for PyPI access.
Thanks James Cleveland, Giovanni Bajo, Marcus Smith and many others (Pull #791, CVE-2013-1629).
* Added "pip list" for listing installed packages and the latest version
available. Thanks Rafael Caricio, Miguel Araujo, Dmitry Gladkov (Pull #752)
* Fixed security issues with pip's use of temp build directories.
Thanks David (d1b) and Thomas Guttler. (Pull #780, CVE-2013-1888)
* Improvements to sphinx docs and cli help. (Pull #773)
* Fixed issue #707, dealing with OS X temp dir handling, which was causing
global NumPy installs to fail. (Pull #768)
* Split help output into general vs command-specific option groups.
Thanks Georgi Valkov. (Pull #744; Pull #721 contains preceding refactor)
* Fixed dependency resolution when installing from archives with uppercase
project names. (Pull #724)
* Fixed problem where re-installs always occurred when using file:// find-links.
(Pulls #683/#702)
* "pip install -v" now shows the full download url, not just the archive name.
Thanks Marc Abramowitz (Pull #687)
* Fix to prevent unnecessary PyPI redirects. Thanks Alex Gronholm (Pull #695)
* Fixed issue #670 - install failure under Python 3 when the same version
of a package is found under 2 different URLs. Thanks Paul Moore (Pull #671)
* Fix git submodule recursive updates. Thanks Roey Berman. (Pulls #674)
* Explicitly ignore rel='download' links while looking for html pages.
Thanks Maxime R. (Pull #677)
* --user/--upgrade install options now work together. Thanks 'eevee' for
discovering the problem. (Pull #705)
* Added check in ``install --download`` to prevent re-downloading if the target
file already exists. Thanks Andrey Bulgakov. (Pull #669)
* Added support for bare paths (including relative paths) as argument to
`--find-links`. Thanks Paul Moore for draft patch.
* Added support for --no-index in requirements files.
* Added "pip show" command to get information about an installed package.
Fixes #131. Thanks Kelsey Hightower and Rafael Caricio.
* Added `--root` option for "pip install" to specify root directory. Behaves
like the same option in distutils but also plays nice with pip's egg-info.
Thanks Przemek Wrzos. (Issue #253 / Pull #693)
**1.2.1 (2012-09-06)**
* Fixed a regression introduced in 1.2 about raising an exception when
not finding any files to uninstall in the current environment. Thanks for
the fix, Marcus Smith.
**1.2 (2012-09-01)**
* **Dropped support for Python 2.4** The minimum supported Python version is
now Python 2.5.
* Fixed issue #605 - pypi mirror support broken on some DNS responses. Thanks
philwhin.
* Fixed issue #355 - pip uninstall removes files it didn't install. Thanks
pjdelport.
* Fixed issues #493, #494, #440, and #573 related to improving support for the
user installation scheme. Thanks Marcus Smith.
* Write failure log to temp file if default location is not writable. Thanks
andreigc.
* Pull in submodules for git editable checkouts. Fixes #289 and #421. Thanks
Hsiaoming Yang and Markus Hametner.
* Use a temporary directory as the default build location outside of a
virtualenv. Fixes issues #339 and #381. Thanks Ben Rosser.
* Added support for specifying extras with local editables. Thanks Nick
Stenning.
* Added ``--egg`` flag to request egg-style rather than flat installation. Refs
issue #3. Thanks Kamal Bin Mustafa.
* Fixed issue #510 - prevent e.g. ``gmpy2-2.0.tar.gz`` from matching a request
to ``pip install gmpy``; sdist filename must begin with full project name
followed by a dash. Thanks casevh for the report.
* Fixed issue #504 - allow package URLS to have querystrings. Thanks W.
Trevor King.
* Fixed issue #58 - pip freeze now falls back to non-editable format rather
than blowing up if it can't determine the origin repository of an editable.
Thanks Rory McCann.
* Added a `__main__.py` file to enable `python -m pip` on Python versions
that support it. Thanks Alexey Luchko.
* Fixed issue #487 - upgrade from VCS url of project that does exist on
index. Thanks Andrew Knapp for the report.
* Fixed issue #486 - fix upgrade from VCS url of project with no distribution
on index. Thanks Andrew Knapp for the report.
* Fixed issue #427 - clearer error message on a malformed VCS url. Thanks
Thomas Fenzl.
* Added support for using any of the built in guaranteed algorithms in
``hashlib`` as a checksum hash.
* Fixed issue #321 - Raise an exception if current working directory can't be
found or accessed.
* Fixed issue #82 - Removed special casing of the user directory and use the
Python default instead.
* Fixed #436 - Only warn about version conflicts if there is actually one.
This re-enables using ``==dev`` in requirements files.
* Moved tests to be run on Travis CI: http://travis-ci.org/pypa/pip
* Added a better help formatter.
**1.1 (2012-02-16)**
* Fixed issue #326 - don't crash when a package's setup.py emits UTF-8 and
then fails. Thanks Marc Abramowitz.
* Added ``--target`` option for installing directly to arbitrary directory.
Thanks Stavros Korokithakis.
* Added support for authentication with Subversion repositories. Thanks
Qiangning Hong.
* Fixed issue #315 - ``--download`` now downloads dependencies as well.
Thanks Qiangning Hong.
* Errors from subprocesses will display the current working directory.
Thanks Antti Kaihola.
* Fixed issue #369 - compatibility with Subversion 1.7. Thanks Qiangning
Hong. Note that setuptools remains incompatible with Subversion 1.7; to
get the benefits of pip's support you must use Distribute rather than
setuptools.
* Fixed issue #57 - ignore py2app-generated OS X mpkg zip files in finder.
Thanks Rene Dudfield.
* Fixed issue #182 - log to ~/Library/Logs/ by default on OS X framework
installs. Thanks Dan Callahan for report and patch.
* Fixed issue #310 - understand version tags without minor version ("py3")
in sdist filenames. Thanks Stuart Andrews for report and Olivier Girardot for
patch.
* Fixed issue #7 - Pip now supports optionally installing setuptools
"extras" dependencies; e.g. "pip install Paste[openid]". Thanks Matt Maker
and Olivier Girardot.
* Fixed issue #391 - freeze no longer borks on requirements files with
--index-url or --find-links. Thanks Herbert Pfennig.
* Fixed issue #288 - handle symlinks properly. Thanks lebedov for the patch.
* Fixed issue #49 - pip install -U no longer reinstalls the same versions of
packages. Thanks iguananaut for the pull request.
* Removed ``-E``/``--environment`` option and ``PIP_RESPECT_VIRTUALENV``;
both use a restart-in-venv mechanism that's broken, and neither one is
useful since every virtualenv now has pip inside it. Replace ``pip -E
path/to/venv install Foo`` with ``virtualenv path/to/venv &&
path/to/venv/pip install Foo``.
* Fixed issue #366 - pip throws IndexError when it calls `scraped_rel_links`
* Fixed issue #22 - pip search should set and return a userful shell status code
* Fixed issue #351 and #365 - added global ``--exists-action`` command line
option to easier script file exists conflicts, e.g. from editable
requirements from VCS that have a changed repo URL.
**1.0.2 (2011-07-16)**
* Fixed docs issues.
* Fixed issue #295 - Reinstall a package when using the ``install -I`` option
* Fixed issue #283 - Finds a Git tag pointing to same commit as origin/master
* Fixed issue #279 - Use absolute path for path to docs in setup.py
* Fixed issue #314 - Correctly handle exceptions on Python3.
* Fixed issue #320 - Correctly parse ``--editable`` lines in requirements files
**1.0.1 (2011-04-30)**
* Start to use git-flow.
* Fixed issue #274 - `find_command` should not raise AttributeError
* Fixed issue #273 - respect Content-Disposition header. Thanks Bradley Ayers.
* Fixed issue #233 - pathext handling on Windows.
* Fixed issue #252 - svn+svn protocol.
* Fixed issue #44 - multiple CLI searches.
* Fixed issue #266 - current working directory when running setup.py clean.
**1.0 (2011-04-04)**
* Added Python 3 support! Huge thanks to Vinay Sajip, Vitaly Babiy, Kelsey
Hightower, and Alex Gronholm, among others.
* Download progress only shown on a real TTY. Thanks Alex Morega.
* Fixed finding of VCS binaries to not be fooled by same-named directories.
Thanks Alex Morega.
* Fixed uninstall of packages from system Python for users of Debian/Ubuntu
python-setuptools package (workaround until fixed in Debian and Ubuntu).
* Added `get-pip.py <https://raw.github.com/pypa/pip/master/contrib/get-pip.py>`_
installer. Simply download and execute it, using the Python interpreter of
your choice::
$ curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
$ python get-pip.py
This may have to be run as root.
.. note::
Make sure you have `distribute <http://pypi.python.org/pypi/distribute>`_
installed before using the installer!
**0.8.3**
* Moved main repository to Github: https://github.com/pypa/pip
* Transferred primary maintenance from Ian to Jannis Leidel, Carl Meyer, Brian Rosner
* Fixed issue #14 - No uninstall-on-upgrade with URL package. Thanks Oliver Tonnhofer
* Fixed issue #163 - Egg name not properly resolved. Thanks Igor Sobreira
* Fixed issue #178 - Non-alphabetical installation of requirements. Thanks Igor Sobreira
* Fixed issue #199 - Documentation mentions --index instead of --index-url. Thanks Kelsey Hightower
* Fixed issue #204 - rmtree undefined in mercurial.py. Thanks Kelsey Hightower
* Fixed bug in Git vcs backend that would break during reinstallation.
* Fixed bug in Mercurial vcs backend related to pip freeze and branch/tag resolution.
* Fixed bug in version string parsing related to the suffix "-dev".
**0.8.2**
* Avoid redundant unpacking of bundles (from pwaller)
* Fixed issue #32, #150, #161 - Fixed checking out the correct
tag/branch/commit when updating an editable Git requirement.
* Fixed issue #49 - Added ability to install version control requirements
without making them editable, e.g.::
pip install git+https://github.com/pypa/pip/
* Fixed issue #175 - Correctly locate build and source directory on Mac OS X.
* Added ``git+https://`` scheme to Git VCS backend.
**0.8.1**
* Added global --user flag as shortcut for --install-option="--user". From
Ronny Pfannschmidt.
* Added support for `PyPI mirrors <http://pypi.python.org/mirrors>`_ as
defined in `PEP 381 <http://www.python.org/dev/peps/pep-0381/>`_, from
Jannis Leidel.
* Fixed issue #138 - Git revisions ignored. Thanks John-Scott Atlakson.
* Fixed issue #95 - Initial editable install of github package from a tag fails. Thanks John-Scott Atlakson.
* Fixed issue #107 - Can't install if a directory in cwd has the same name as the package you're installing.
* Fixed issue #39 - --install-option="--prefix=~/.local" ignored with -e.
Thanks Ronny Pfannschmidt and Wil Tan.
**0.8**
* Track which ``build/`` directories pip creates, never remove directories
it doesn't create. From Hugo Lopes Tavares.
* Pip now accepts file:// index URLs. Thanks Dave Abrahams.
* Various cleanup to make test-running more consistent and less fragile.
Thanks Dave Abrahams.
* Real Windows support (with passing tests). Thanks Dave Abrahams.
* ``pip-2.7`` etc. scripts are created (Python-version specific scripts)
* ``contrib/build-standalone`` script creates a runnable ``.zip`` form of
pip, from Jannis Leidel
* Editable git repos are updated when reinstalled
* Fix problem with ``--editable`` when multiple ``.egg-info/`` directories
are found.
* A number of VCS-related fixes for ``pip freeze``, from Hugo Lopes Tavares.
* Significant test framework changes, from Hugo Lopes Tavares.
**0.7.2**
* Set zip_safe=False to avoid problems some people are encountering where
pip is installed as a zip file.
**0.7.1**
* Fixed opening of logfile with no directory name. Thanks Alexandre Conrad.
* Temporary files are consistently cleaned up, especially after
installing bundles, also from Alex Conrad.
* Tests now require at least ScriptTest 1.0.3.
**0.7**
* Fixed uninstallation on Windows
* Added ``pip search`` command.
* Tab-complete names of installed distributions for ``pip uninstall``.
* Support tab-completion when there is a global-option before the
subcommand.
* Install header files in standard (scheme-default) location when installing
outside a virtualenv. Install them to a slightly more consistent
non-standard location inside a virtualenv (since the standard location is
a non-writable symlink to the global location).
* pip now logs to a central location by default (instead of creating
``pip-log.txt`` all over the place) and constantly overwrites the
file in question. On Unix and Mac OS X this is ``'$HOME/.pip/pip.log'``
and on Windows it's ``'%HOME%\\pip\\pip.log'``. You are still able to
override this location with the ``$PIP_LOG_FILE`` environment variable.
For a complete (appended) logfile use the separate ``'--log'`` command line
option.
* Fixed an issue with Git that left an editable packge as a checkout of a
remote branch, even if the default behaviour would have been fine, too.
* Fixed installing from a Git tag with older versions of Git.
* Expand "~" in logfile and download cache paths.
* Speed up installing from Mercurial repositories by cloning without
updating the working copy multiple times.
* Fixed installing directly from directories (e.g.
``pip install path/to/dir/``).
* Fixed installing editable packages with ``svn+ssh`` URLs.
* Don't print unwanted debug information when running the freeze command.
* Create log file directory automatically. Thanks Alexandre Conrad.
* Make test suite easier to run successfully. Thanks Dave Abrahams.
* Fixed "pip install ." and "pip install .."; better error for directory
without setup.py. Thanks Alexandre Conrad.
* Support Debian/Ubuntu "dist-packages" in zip command. Thanks duckx.
* Fix relative --src folder. Thanks Simon Cross.
* Handle missing VCS with an error message. Thanks Alexandre Conrad.
* Added --no-download option to install; pairs with --no-install to separate
download and installation into two steps. Thanks Simon Cross.
* Fix uninstalling from requirements file containing -f, -i, or
--extra-index-url.
* Leftover build directories are now removed. Thanks Alexandre Conrad.
**0.6.3**
* Fixed import error on Windows with regard to the backwards compatibility
package
**0.6.2**
* Fixed uninstall when /tmp is on a different filesystem.
* Fixed uninstallation of distributions with namespace packages.
**0.6.1**
* Added support for the ``https`` and ``http-static`` schemes to the
Mercurial and ``ftp`` scheme to the Bazaar backend.
* Fixed uninstallation of scripts installed with easy_install.
* Fixed an issue in the package finder that could result in an
infinite loop while looking for links.
* Fixed issue with ``pip bundle`` and local files (which weren't being
copied into the bundle), from Whit Morriss.
**0.6**
* Add ``pip uninstall`` and uninstall-before upgrade (from Carl
Meyer).
* Extended configurability with config files and environment variables.
* Allow packages to be upgraded, e.g., ``pip install Package==0.1``
then ``pip install Package==0.2``.
* Allow installing/upgrading to Package==dev (fix "Source version does not
match target version" errors).
* Added command and option completion for bash and zsh.
* Extended integration with virtualenv by providing an option to
automatically use an active virtualenv and an option to warn if no active
virtualenv is found.
* Fixed a bug with pip install --download and editable packages, where
directories were being set with 0000 permissions, now defaults to 755.
* Fixed uninstallation of easy_installed console_scripts.
* Fixed uninstallation on Mac OS X Framework layout installs
* Fixed bug preventing uninstall of editables with source outside venv.
* Creates download cache directory if not existing.
**0.5.1**
* Fixed a couple little bugs, with git and with extensions.
**0.5**
* Added ability to override the default log file name (``pip-log.txt``)
with the environmental variable ``$PIP_LOG_FILE``.
* Made the freeze command print installed packages to stdout instead of
writing them to a file. Use simple redirection (e.g.
``pip freeze > stable-req.txt``) to get a file with requirements.
* Fixed problem with freezing editable packages from a Git repository.
* Added support for base URLs using ``<base href='...'>`` when parsing
HTML pages.
* Fixed installing of non-editable packages from version control systems.
* Fixed issue with Bazaar's bzr+ssh scheme.
* Added --download-dir option to the install command to retrieve package
archives. If given an editable package it will create an archive of it.
* Added ability to pass local file and directory paths to ``--find-links``,
e.g. ``--find-links=file:///path/to/my/private/archive``
* Reduced the amount of console log messages when fetching a page to find a
distribution was problematic. The full messages can be found in pip-log.txt.
* Added ``--no-deps`` option to install ignore package dependencies
* Added ``--no-index`` option to ignore the package index (PyPI) temporarily
* Fixed installing editable packages from Git branches.
* Fixes freezing of editable packages from Mercurial repositories.
* Fixed handling read-only attributes of build files, e.g. of Subversion and
Bazaar on Windows.
* When downloading a file from a redirect, use the redirected
location's extension to guess the compression (happens specifically
when redirecting to a bitbucket.org tip.gz file).
* Editable freeze URLs now always use revision hash/id rather than tip or
branch names which could move.
* Fixed comparison of repo URLs so incidental differences such as
presence/absence of final slashes or quoted/unquoted special
characters don't trigger "ignore/switch/wipe/backup" choice.
* Fixed handling of attempt to checkout editable install to a
non-empty, non-repo directory.
**0.4**
* Make ``-e`` work better with local hg repositories
* Construct PyPI URLs the exact way easy_install constructs URLs (you
might notice this if you use a custom index that is
slash-sensitive).
* Improvements on Windows (from `Ionel Maries Cristian
<http://ionelmc.wordpress.com/>`_).
* Fixed problem with not being able to install private git repositories.
* Make ``pip zip`` zip all its arguments, not just the first.
* Fix some filename issues on Windows.
* Allow the ``-i`` and ``--extra-index-url`` options in requirements
files.
* Fix the way bundle components are unpacked and moved around, to make
bundles work.
* Adds ``-s`` option to allow the access to the global site-packages if a
virtualenv is to be created.
* Fixed support for Subversion 1.6.
**0.3.1**
* Improved virtualenv restart and various path/cleanup problems on win32.
* Fixed a regression with installing from svn repositories (when not
using ``-e``).
* Fixes when installing editable packages that put their source in a
subdirectory (like ``src/``).
* Improve ``pip -h``
**0.3**
* Added support for editable packages created from Git, Mercurial and Bazaar
repositories and ability to freeze them. Refactored support for version
control systems.
* Do not use ``sys.exit()`` from inside the code, instead use a
return. This will make it easier to invoke programmatically.
* Put the install record in ``Package.egg-info/installed-files.txt``
(previously they went in
``site-packages/install-record-Package.txt``).
* Fix a problem with ``pip freeze`` not including ``-e svn+`` when an
svn structure is peculiar.
* Allow ``pip -E`` to work with a virtualenv that uses a different
version of Python than the parent environment.
* Fixed Win32 virtualenv (``-E``) option.
* Search the links passed in with ``-f`` for packages.
* Detect zip files, even when the file doesn't have a ``.zip``
extension and it is served with the wrong Content-Type.
* Installing editable from existing source now works, like ``pip
install -e some/path/`` will install the package in ``some/path/``.
Most importantly, anything that package requires will also be
installed by pip.
* Add a ``--path`` option to ``pip un/zip``, so you can avoid zipping
files that are outside of where you expect.
* Add ``--simulate`` option to ``pip zip``.
**0.2.1**
* Fixed small problem that prevented using ``pip.py`` without actually
installing pip.
* Fixed ``--upgrade``, which would download and appear to install
upgraded packages, but actually just reinstall the existing package.
* Fixed Windows problem with putting the install record in the right
place, and generating the ``pip`` script with Setuptools.
* Download links that include embedded spaces or other unsafe
characters (those characters get %-encoded).
* Fixed use of URLs in requirement files, and problems with some blank
lines.
* Turn some tar file errors into warnings.
**0.2**
* Renamed to ``pip``, and to install you now do ``pip install
PACKAGE``
* Added command ``pip zip PACKAGE`` and ``pip unzip PACKAGE``. This
is particularly intended for Google App Engine to manage libraries
to stay under the 1000-file limit.
* Some fixes to bundles, especially editable packages and when
creating a bundle using unnamed packages (like just an svn
repository without ``#egg=Package``).
**0.1.4**
* Added an option ``--install-option`` to pass options to pass
arguments to ``setup.py install``
* ``.svn/`` directories are no longer included in bundles, as these
directories are specific to a version of svn -- if you build a
bundle on a system with svn 1.5, you can't use the checkout on a
system with svn 1.4. Instead a file ``svn-checkout.txt`` is
included that notes the original location and revision, and the
command you can use to turn it back into an svn checkout. (Probably
unpacking the bundle should, maybe optionally, recreate this
information -- but that is not currently implemented, and it would
require network access.)
* Avoid ambiguities over project name case, where for instance
MyPackage and mypackage would be considered different packages.
This in particular caused problems on Macs, where ``MyPackage/`` and
``mypackage/`` are the same directory.
* Added support for an environmental variable
``$PIP_DOWNLOAD_CACHE`` which will cache package downloads, so
future installations won't require large downloads. Network access
is still required, but just some downloads will be avoided when
using this.
**0.1.3**
* Always use ``svn checkout`` (not ``export``) so that
``tag_svn_revision`` settings give the revision of the package.
* Don't update checkouts that came from ``.pybundle`` files.
**0.1.2**
* Improve error text when there are errors fetching HTML pages when
seeking packages.
* Improve bundles: include empty directories, make them work with
editable packages.
* If you use ``-E env`` and the environment ``env/`` doesn't exist, a
new virtual environment will be created.
* Fix ``dependency_links`` for finding packages.
**0.1.1**
* Fixed a NameError exception when running pip outside of a
virtualenv environment.
* Added HTTP proxy support (from Prabhu Ramachandran)
* Fixed use of ``hashlib.md5`` on python2.5+ (also from Prabhu
Ramachandran)
**0.1**
* Initial release
-20
View File
@@ -1,20 +0,0 @@
Copyright (c) 2008-2014 The pip developers (see AUTHORS.txt file)
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-9
View File
@@ -1,9 +0,0 @@
include AUTHORS.txt
include LICENSE.txt
include CHANGES.txt
include PROJECT.txt
include pip/cacert.pem
recursive-include docs *.rst
recursive-include docs *.html
recursive-exclude docs/_build *.rst
prune docs/_build/_sources
-91
View File
@@ -1,91 +0,0 @@
Metadata-Version: 1.1
Name: pip
Version: 1.5.4
Summary: A tool for installing and managing Python packages.
Home-page: http://www.pip-installer.org
Author: The pip developers
Author-email: python-virtualenv@groups.google.com
License: MIT
Description:
Project Info
============
* Project Page: https://github.com/pypa/pip
* Install howto: http://www.pip-installer.org/en/latest/installing.html
* Changelog: http://www.pip-installer.org/en/latest/news.html
* Bug Tracking: https://github.com/pypa/pip/issues
* Mailing list: http://groups.google.com/group/python-virtualenv
* Docs: http://www.pip-installer.org/
* User IRC: #pip on Freenode.
* Dev IRC: #pypa on Freenode.
Quickstart
==========
First, :doc:`Install pip <installing>`.
Install a package from `PyPI`_:
::
$ pip install SomePackage
[...]
Successfully installed SomePackage
Show what files were installed:
::
$ pip show --files SomePackage
Name: SomePackage
Version: 1.0
Location: /my/env/lib/pythonx.x/site-packages
Files:
../somepackage/__init__.py
[...]
List what packages are outdated:
::
$ pip list --outdated
SomePackage (Current: 1.0 Latest: 2.0)
Upgrade a package:
::
$ pip install --upgrade SomePackage
[...]
Found existing installation: SomePackage 1.0
Uninstalling SomePackage:
Successfully uninstalled SomePackage
Running setup.py install for SomePackage
Successfully installed SomePackage
Uninstall a package:
::
$ pip uninstall SomePackage
Uninstalling SomePackage:
/my/env/lib/pythonx.x/site-packages/somepackage
Proceed (y/n)? y
Successfully uninstalled SomePackage
.. _PyPI: http://pypi.python.org/pypi/
Keywords: easy_install distutils setuptools egg virtualenv
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Software Development :: Build Tools
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.1
Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Python :: 3.3
-11
View File
@@ -1,11 +0,0 @@
Project Info
============
* Project Page: https://github.com/pypa/pip
* Install howto: http://www.pip-installer.org/en/latest/installing.html
* Changelog: http://www.pip-installer.org/en/latest/news.html
* Bug Tracking: https://github.com/pypa/pip/issues
* Mailing list: http://groups.google.com/group/python-virtualenv
* Docs: http://www.pip-installer.org/
* User IRC: #pip on Freenode.
* Dev IRC: #pypa on Freenode.
-10
View File
@@ -1,10 +0,0 @@
pip
===
.. image:: https://pypip.in/v/pip/badge.png
:target: https://crate.io/packages/pip
.. image:: https://secure.travis-ci.org/pypa/pip.png?branch=develop
:target: http://travis-ci.org/pypa/pip
For documentation, see http://www.pip-installer.org
-8
View File
@@ -1,8 +0,0 @@
:orphan:
Configuration
=============
This content is now covered in the :doc:`User Guide <user_guide>`
-8
View File
@@ -1,8 +0,0 @@
:orphan:
============
Cookbook
============
This content is now covered in the :doc:`User Guide <user_guide>`
-126
View File
@@ -1,126 +0,0 @@
===========
Development
===========
Pull Requests
=============
Submit Pull Requests against the `develop` branch.
Provide a good description of what you're doing and why.
Provide tests that cover your changes and try to run the tests locally first.
Automated Testing
=================
All pull requests and merges to 'develop' branch are tested in `Travis <https://travis-ci.org/>`_
based on our `.travis.yml file <https://github.com/pypa/pip/blob/develop/.travis.yml>`_.
Usually, a link to your specific travis build appears in pull requests, but if not,
you can find it on our `travis pull requests page <https://travis-ci.org/pypa/pip/pull_requests>`_
The only way to trigger Travis to run again for a pull request, is to submit another change to the pull branch.
We also have Jenkins CI that runs regularly for certain python versions on windows and centos.
Running tests
=============
OS Requirements: subversion, bazaar, git, and mercurial.
Python Requirements: tox or pytest, virtualenv, scripttest, and mock
Ways to run the tests locally:
::
$ tox -e py33 # The preferred way to run the tests, can use pyNN to
# run for a particular version or leave off the -e to
# run for all versions.
$ python setup.py test # Using the setuptools test plugin
$ py.test # Using py.test directly
$ tox # Using tox against pip's tox.ini
Getting Involved
================
The pip project welcomes help in the following ways:
- Making Pull Requests for code, tests, or docs.
- Commenting on open issues and pull requests.
- Helping to answer questions on the mailing list.
If you want to become an official maintainer, start by helping out.
Later, when you think you're ready, get in touch with one of the maintainers,
and they will initiate a vote.
Release Process
===============
This process includes virtualenv, since pip releases necessitate a virtualenv release.
As an example, the instructions assume we're releasing pip-1.4, and virtualenv-1.10.
1. Upgrade setuptools, if needed:
#. Upgrade setuptools in ``virtualenv/develop`` using the :ref:`Refresh virtualenv` process.
#. Create a pull request against ``pip/develop`` with a modified ``.travis.yml`` file that installs virtualenv from ``virtualenv/develop``, to confirm the travis builds are still passing.
2. Create Release branches:
#. Create ``pip/release-1.4`` branch.
#. In ``pip/develop``, change ``pip.version`` to '1.5.dev1'.
#. Create ``virtualenv/release-1.10`` branch.
#. In ``virtualenv/develop``, change ``virtualenv.version`` to '1.11.dev1'.
3. Prepare "rcX":
#. In ``pip/release-1.4``, change ``pip.version`` to '1.4rcX', and tag with '1.4rcX'.
#. Build a pip sdist from ``pip/release-1.4``, and build it into ``virtualenv/release-1.10`` using the :ref:`Refresh virtualenv` process.
#. In ``virtualenv/release-1.10``, change ``virtualenv.version`` to '1.10rcX', and tag with '1.10rcX'.
4. Announce ``pip-1.4rcX`` and ``virtualenv-1.10rcX`` with the :ref:`RC Install Instructions` and elicit feedback.
5. Apply fixes to 'rcX':
#. Apply fixes to ``pip/release-1.4`` and ``virtualenv/release-1.10``
#. Periodically merge fixes to ``pip/develop`` and ``virtualenv/develop``
6. Repeat #4 thru #6 if needed.
7. Final Release:
#. In ``pip/release-1.4``, change ``pip.version`` to '1.4', and tag with '1.4'.
#. Merge ``pip/release-1.4`` to ``pip/master``.
#. Build a pip sdist from ``pip/release-1.4``, and load it into ``virtualenv/release-1.10`` using the :ref:`Refresh virtualenv` process.
#. Merge ``vitualenv/release-1.10`` to ``virtualenv/develop``.
#. In ``virtualenv/release-1.10``, change ``virtualenv.version`` to '1.10', and tag with '1.10'.
#. Merge ``virtualenv/release-1.10`` to ``virtualenv/master``
#. Build and upload pip and virtualenv sdists to PyPI.
.. _`Refresh virtualenv`:
Refresh virtualenv
++++++++++++++++++
#. Update the embedded versions of pip and setuptools in ``virtualenv_support``.
#. Run ``bin/rebuild-script.py`` to rebuild virtualenv based on the latest versions.
.. _`RC Install Instructions`:
RC Install Instructions
+++++++++++++++++++++++
::
$ curl -L -O https://github.com/pypa/virtualenv/archive/1.10rc1.tar.gz
$ echo "<md5sum value> 1.10rc1.tar.gz" | md5sum -c
1.10rc1.tar.gz: OK
$ tar zxf 1.10rc1.tar.gz
$ python virtualenv-1.10rc1/virtualenv.py myVE
$ myVE/bin/pip install SomePackage
-69
View File
@@ -1,69 +0,0 @@
:orphan:
"ImportError: No module named setuptools"
+++++++++++++++++++++++++++++++++++++++++
Although using ``pip install --upgrade setuptools`` to upgrade from distribute
to setuptools works in isolation, it's possible to get "ImportError: No module
named setuptools" when using pip<1.4 to upgrade a package that depends on
setuptools or distribute.
e.g. when running a command like this: `pip install --upgrade pyramid`
Solution
~~~~~~~~
To prevent the problem in *new* environments (that aren't broken yet):
* Option 1:
* *First* run `pip install -U setuptools`,
* *Then* run the command to upgrade your package (e.g. `pip install --upgrade pyramid`)
* Option 2:
* Upgrade pip using :ref:`get-pip <get-pip>`
* *Then* run the command to upgrade your package (e.g. `pip install --upgrade pyramid`)
To fix the problem once it's occurred, you'll need to manually install the new
setuptools, then rerun the upgrade that failed.
1. Download `ez_setup.py` (https://bitbucket.org/pypa/setuptools/downloads/ez_setup.py)
2. Run `python ez_setup.py`
3. Then rerun your upgrade (e.g. `pip install --upgrade pyramid`)
Cause
~~~~~
distribute-0.7.3 is just an empty wrapper that only serves to require the new
setuptools (setuptools>=0.7) so that it will be installed. (If you don't know
yet, the "new setuptools" is a merge of distribute and setuptools back into one
project).
distribute-0.7.3 does its job well, when the upgrade is done in isolation.
E.g. if you're currently on distribute-0.6.X, then running `pip install -U
setuptools` works fine to upgrade you to setuptools>=0.7.
The problem occurs when:
1. you are currently using an older distribute (i.e. 0.6.X)
2. and you try to use pip to upgrade a package that *depends* on setuptools or
distribute.
As part of the upgrade process, pip builds an install list that ends up
including distribute-0.7.3 and setuptools>=0.7 , but they can end up being
separated by other dependencies in the list, so what can happen is this:
1. pip uninstalls the existing distribute
2. pip installs distribute-0.7.3 (which has no importable setuptools, that pip
*needs* internally to function)
3. pip moves on to install another dependency (before setuptools>=0.7) and is
unable to proceed without the setuptools package
Note that pip v1.4 has fixes to prevent this. distribute-0.7.3 (or
setuptools>=0.7) by themselves cannot prevent this kind of problem.
.. _setuptools: https://pypi.python.org/pypi/setuptools
.. _distribute: https://pypi.python.org/pypi/distribute
-25
View File
@@ -1,25 +0,0 @@
pip
===
`User list <http://groups.google.com/group/python-virtualenv>`_ |
`Dev list <http://groups.google.com/group/pypa-dev>`_ |
`Github <https://github.com/pypa/pip>`_ |
`PyPI <https://pypi.python.org/pypi/pip/>`_ |
User IRC: #pip |
Dev IRC: #pypa
The `PyPA recommended
<https://python-packaging-user-guide.readthedocs.org/en/latest/current.html>`_
tool for installing and managing Python packages.
.. toctree::
:maxdepth: 2
quickstart
installing
user_guide
reference/index
development
news
-66
View File
@@ -1,66 +0,0 @@
.. _`Installation`:
Installation
============
Python & OS Support
-------------------
pip works with CPython versions 2.6, 2.7, 3.1, 3.2, 3.3, 3.4 and also pypy.
pip works on Unix/Linux, OS X, and Windows.
.. note::
Python 2.5 was supported through v1.3.1, and Python 2.4 was supported through v1.1.
.. _`get-pip`:
Install or Upgrade pip
----------------------
To install or upgrade pip, securely download `get-pip.py
<https://raw.github.com/pypa/pip/master/contrib/get-pip.py>`_. [1]_
Then run the following (which may require administrator access)::
$ python get-pip.py
If `setuptools`_ (or `distribute`_) is not already installed, ``get-pip.py`` will
install `setuptools`_ for you. [2]_
To upgrade an existing `setuptools`_ (or `distribute`_), run ``pip install -U setuptools`` [3]_
Using Package Managers
----------------------
On Linux, pip will generally be available for the system install of python using
the system package manager, although often the latest version will be
unavailable.
On Debian and Ubuntu::
$ sudo apt-get install python-pip
On Fedora::
$ sudo yum install python-pip
.. [1] "Secure" in this context means using a modern browser or a
tool like `curl` that verifies SSL certificates when downloading from
https URLs.
.. [2] Beginning with pip v1.5.1, ``get-pip.py`` stopped requiring setuptools to
be installed first.
.. [3] Although using ``pip install --upgrade setuptools`` to upgrade from
distribute to setuptools works in isolation, it's possible to get
"ImportError: No module named setuptools" when using pip<1.4 to upgrade a
package that depends on setuptools or distribute. See :doc:`here for
details <distribute_setuptools>`.
.. _setuptools: https://pypi.python.org/pypi/setuptools
.. _distribute: https://pypi.python.org/pypi/distribute
-8
View File
@@ -1,8 +0,0 @@
:orphan:
================
Internal Details
================
This content is now covered in the :doc:`Reference Guide <reference/index>`
-5
View File
@@ -1,5 +0,0 @@
=============
Release Notes
=============
.. include:: ../CHANGES.txt
-56
View File
@@ -1,56 +0,0 @@
Quickstart
==========
First, :doc:`Install pip <installing>`.
Install a package from `PyPI`_:
::
$ pip install SomePackage
[...]
Successfully installed SomePackage
Show what files were installed:
::
$ pip show --files SomePackage
Name: SomePackage
Version: 1.0
Location: /my/env/lib/pythonx.x/site-packages
Files:
../somepackage/__init__.py
[...]
List what packages are outdated:
::
$ pip list --outdated
SomePackage (Current: 1.0 Latest: 2.0)
Upgrade a package:
::
$ pip install --upgrade SomePackage
[...]
Found existing installation: SomePackage 1.0
Uninstalling SomePackage:
Successfully uninstalled SomePackage
Running setup.py install for SomePackage
Successfully installed SomePackage
Uninstall a package:
::
$ pip uninstall SomePackage
Uninstalling SomePackage:
/my/env/lib/pythonx.x/site-packages/somepackage
Proceed (y/n)? y
Successfully uninstalled SomePackage
.. _PyPI: http://pypi.python.org/pypi/
-17
View File
@@ -1,17 +0,0 @@
===============
Reference Guide
===============
.. toctree::
:maxdepth: 2
pip
pip_install
pip_uninstall
pip_freeze
pip_list
pip_show
pip_search
pip_wheel
-80
View File
@@ -1,80 +0,0 @@
pip
---
.. contents::
Usage
*****
::
pip <command> [options]
Description
***********
.. _`Logging`:
Logging
=======
Console logging
~~~~~~~~~~~~~~~
pip offers :ref:`-v, --verbose <--verbose>` and :ref:`-q, --quiet <--quiet>`
to control the console log level. Each option can be used multiple times and
used together. One ``-v`` increases the verbosity by one, whereas one ``-q`` decreases it by
one.
The series of log levels, in order, are as follows::
VERBOSE_DEBUG, DEBUG, INFO, NOTIFY, WARN, ERROR, FATAL
``NOTIFY`` is the default level.
A few examples on how the parameters work to affect the level:
* specifying nothing results in ``NOTIFY``
* ``-v`` results in ``INFO``
* ``-vv`` results in ``DEBUG``
* ``-q`` results in ``WARN``
* ``-vq`` results in ``NOTIFY``
The most practical use case for users is either ``-v`` or ``-vv`` to see
additional logging to help troubleshoot an issue.
.. _`FileLogging`:
File logging
~~~~~~~~~~~~
pip offers the :ref:`--log <--log>` option for specifying a file where a maximum
verbosity log will be kept. This option is empty by default. This log appends
to previous logging.
Additionally, when commands fail (i.e. return a non-zero exit code), pip writes
a "failure log" for the failed command. This log overwrites previous
logging. The default location is as follows:
* On Unix and Mac OS X: :file:`$HOME/.pip/pip.log`
* On Windows, the configuration file is: :file:`%HOME%\\pip\\pip.log`
The option for the failure log, is :ref:`--log-file <--log-file>`.
Both logs add a line per execution to specify the date and what pip executable wrote the log.
Like all pip options, ``--log`` and ``log-file``, can also be set as an environment
variable, or placed into the pip config file. See the :ref:`Configuration`
section.
.. _`General Options`:
General Options
***************
.. pip-general-options::
-46
View File
@@ -1,46 +0,0 @@
.. _`pip freeze`:
pip freeze
-----------
.. contents::
Usage
*****
.. pip-command-usage:: freeze
Description
***********
.. pip-command-description:: freeze
Options
*******
.. pip-command-options:: freeze
Examples
********
1) Generate output suitable for a requirements file.
::
$ pip freeze
Jinja2==2.6
Pygments==1.5
Sphinx==1.1.3
docutils==0.9.1
2) Generate a requirements file and then install from it in another environment.
::
$ env1/bin/pip freeze > requirements.txt
$ env2/bin/pip install -r requirements.txt
-439
View File
@@ -1,439 +0,0 @@
.. _`pip install`:
pip install
-----------
.. contents::
Usage
*****
.. pip-command-usage:: install
Description
***********
.. pip-command-description:: install
.. _`Requirements File Format`:
Requirements File Format
++++++++++++++++++++++++
Each line of the requirements file indicates something to be installed,
and like arguments to :ref:`pip install`, the following forms are supported::
<requirement specifier>
<archive url/path>
[-e] <local project path>
[-e] <vcs project url>
See the :ref:`pip install Examples<pip install Examples>` for examples of all these forms.
A line beginning with ``#`` is treated as a comment and ignored.
Additionally, the following Package Index Options are supported:
* :ref:`-i, --index-url <--index-url>`
* :ref:`--extra-index-url <--extra-index-url>`
* :ref:`--no-index <--no-index>`
* :ref:`-f, --find-links <--find-links>`
* :ref:`--allow-external <--allow-external>`
* :ref:`--allow-all-external <--allow-external>`
* :ref:`--allow-unverified <--allow-unverified>`
For example, to specify :ref:`--no-index <--no-index>` and 2 :ref:`--find-links <--find-links>` locations:
::
--no-index
--find-links /my/local/archives
--find-links http://some.archives.com/archives
Lastly, if you wish, you can refer to other requirements files, like this::
-r more_requirements.txt
.. _`Requirement Specifiers`:
Requirement Specifiers
++++++++++++++++++++++
pip supports installing from "requirement specifiers" as implemented in
`pkg_resources Requirements <http://packages.python.org/setuptools/pkg_resources.html#requirement-objects>`_
Some Examples:
::
'FooProject >= 1.2'
Fizzy [foo, bar]
'PickyThing<1.6,>1.9,!=1.9.6,<2.0a0,==2.4c1'
SomethingWhoseVersionIDontCareAbout
.. note::
Use single or double quotes around specifiers to avoid ``>`` and ``<`` being
interpreted as shell redirects. e.g. ``pip install 'FooProject>=1.2'``.
.. _`Pre Release Versions`:
Pre-release Versions
++++++++++++++++++++
Starting with v1.4, pip will only install stable versions as specified by
`PEP426`_ by default. If a version cannot be parsed as a compliant `PEP426`_
version then it is assumed to be a pre-release.
If a Requirement specifier includes a pre-release or development version
(e.g. ``>=0.0.dev0``) then pip will allow pre-release and development versions
for that requirement. This does not include the != flag.
The ``pip install`` command also supports a :ref:`--pre <install_--pre>` flag
that will enable installing pre-releases and development releases.
.. _PEP426: http://www.python.org/dev/peps/pep-0426
.. _`Externally Hosted Files`:
Externally Hosted Files
+++++++++++++++++++++++
Starting with v1.4, pip will warn about installing any file that does not come
from the primary index. As of version 1.5, pip defaults to ignoring these files
unless asked to consider them.
The ``pip install`` command supports a
:ref:`--allow-external PROJECT <--allow-external>` option that will enable
installing links that are linked directly from the simple index but to an
external host that also have a supported hash fragment. Externally hosted
files for all projects may be enabled using the
:ref:`--allow-all-external <--allow-all-external>` flag to the ``pip install``
command.
The ``pip install`` command also supports a
:ref:`--allow-unverified PROJECT <--allow-unverified>` option that will enable
installing insecurely linked files. These are either directly linked (as above)
files without a hash, or files that are linked from either the home page or the
download url of a package.
These options can be used in a requirements file. Assuming some fictional
`ExternalPackage` that is hosted external and unverified, then your requirements
file would be like so::
--allow-external ExternalPackage
--allow-unverified ExternalPackage
ExternalPackage
.. _`VCS Support`:
VCS Support
+++++++++++
pip supports installing from Git, Mercurial, Subversion and Bazaar, and detects
the type of VCS using url prefixes: "git+", "hg+", "bzr+", "svn+".
pip requires a working VCS command on your path: git, hg, svn, or bzr.
VCS projects can be installed in :ref:`editable mode <editable-installs>` (using
the :ref:`--editable <install_--editable>` option) or not.
* For editable installs, the clone location by default is "<venv
path>/src/SomeProject" in virtual environments, and "<cwd>/src/SomeProject"
for global installs. The :ref:`--src <install_--src>` option can be used to
modify this location.
* For non-editable installs, the project is built locally in a temp dir and then
installed normally.
The url suffix "egg=<project name>" is used by pip in it's dependency logic to
identify the project prior to pip downloading and analyzing the metadata.
Git
~~~
pip currently supports cloning over ``git``, ``git+https`` and ``git+ssh``:
Here are the supported forms::
[-e] git+git://git.myproject.org/MyProject#egg=MyProject
[-e] git+https://git.myproject.org/MyProject#egg=MyProject
[-e] git+ssh://git.myproject.org/MyProject#egg=MyProject
-e git+git@git.myproject.org:MyProject#egg=MyProject
Passing branch names, a commit hash or a tag name is possible like so::
[-e] git://git.myproject.org/MyProject.git@master#egg=MyProject
[-e] git://git.myproject.org/MyProject.git@v1.0#egg=MyProject
[-e] git://git.myproject.org/MyProject.git@da39a3ee5e6b4b0d3255bfef95601890afd80709#egg=MyProject
Mercurial
~~~~~~~~~
The supported schemes are: ``hg+http``, ``hg+https``,
``hg+static-http`` and ``hg+ssh``.
Here are the supported forms::
[-e] hg+http://hg.myproject.org/MyProject#egg=MyProject
[-e] hg+https://hg.myproject.org/MyProject#egg=MyProject
[-e] hg+ssh://hg.myproject.org/MyProject#egg=MyProject
You can also specify a revision number, a revision hash, a tag name or a local
branch name like so::
[-e] hg+http://hg.myproject.org/MyProject@da39a3ee5e6b#egg=MyProject
[-e] hg+http://hg.myproject.org/MyProject@2019#egg=MyProject
[-e] hg+http://hg.myproject.org/MyProject@v1.0#egg=MyProject
[-e] hg+http://hg.myproject.org/MyProject@special_feature#egg=MyProject
Subversion
~~~~~~~~~~
pip supports the URL schemes ``svn``, ``svn+svn``, ``svn+http``, ``svn+https``, ``svn+ssh``.
You can also give specific revisions to an SVN URL, like so::
[-e] svn+svn://svn.myproject.org/svn/MyProject#egg=MyProject
[-e] svn+http://svn.myproject.org/svn/MyProject/trunk@2019#egg=MyProject
which will check out revision 2019. ``@{20080101}`` would also check
out the revision from 2008-01-01. You can only check out specific
revisions using ``-e svn+...``.
Bazaar
~~~~~~
pip supports Bazaar using the ``bzr+http``, ``bzr+https``, ``bzr+ssh``,
``bzr+sftp``, ``bzr+ftp`` and ``bzr+lp`` schemes.
Here are the supported forms::
[-e] bzr+http://bzr.myproject.org/MyProject/trunk#egg=MyProject
[-e] bzr+sftp://user@myproject.org/MyProject/trunk#egg=MyProject
[-e] bzr+ssh://user@myproject.org/MyProject/trunk#egg=MyProject
[-e] bzr+ftp://user@myproject.org/MyProject/trunk#egg=MyProject
[-e] bzr+lp:MyProject#egg=MyProject
Tags or revisions can be installed like so::
[-e] bzr+https://bzr.myproject.org/MyProject/trunk@2019#egg=MyProject
[-e] bzr+http://bzr.myproject.org/MyProject/trunk@v1.0#egg=MyProject
Finding Packages
++++++++++++++++
pip searches for packages on `PyPI`_ using the
`http simple interface <http://pypi.python.org/simple>`_,
which is documented `here <http://packages.python.org/setuptools/easy_install.html#package-index-api>`_
and `there <http://www.python.org/dev/peps/pep-0301/>`_
pip offers a number of Package Index Options for modifying how packages are found.
See the :ref:`pip install Examples<pip install Examples>`.
.. _`SSL Certificate Verification`:
SSL Certificate Verification
++++++++++++++++++++++++++++
Starting with v1.3, pip provides SSL certificate verification over https, for the purpose
of providing secure, certified downloads from PyPI.
Hash Verification
+++++++++++++++++
PyPI provides md5 hashes in the hash fragment of package download urls.
pip supports checking this, as well as any of the
guaranteed hashlib algorithms (sha1, sha224, sha384, sha256, sha512, md5).
The hash fragment is case sensitive (i.e. sha1 not SHA1).
This check is only intended to provide basic download corruption protection.
It is not intended to provide security against tampering. For that,
see :ref:`SSL Certificate Verification`
Download Cache
++++++++++++++
pip offers a :ref:`--download-cache <install_--download-cache>` option for
installs to prevent redundant downloads of archives from PyPI.
The point of this cache is *not* to circumvent the index crawling process, but
to *just* prevent redundant downloads.
Items are stored in this cache based on the url the archive was found at, not
simply the archive name.
If you want a fast/local install solution that circumvents crawling PyPI, see
the :ref:`Fast & Local Installs`.
Like all options, :ref:`--download-cache <install_--download-cache>`, can also
be set as an environment variable, or placed into the pip config file. See the
:ref:`Configuration` section.
.. _`editable-installs`:
"Editable" Installs
+++++++++++++++++++
"Editable" installs are fundamentally `"setuptools develop mode"
<http://packages.python.org/setuptools/setuptools.html#development-mode>`_
installs.
You can install local projects or VCS projects in "editable" mode::
$ pip install -e path/to/SomeProject
$ pip install -e git+http://repo/my_project.git#egg=SomeProject
For local projects, the "SomeProject.egg-info" directory is created relative to
the project path. This is one advantage over just using ``setup.py develop``,
which creates the "egg-info" directly relative the current working directory.
Controlling setup_requires
++++++++++++++++++++++++++
Setuptools offers the ``setup_requires`` `setup() keyword
<http://pythonhosted.org/setuptools/setuptools.html#new-and-changed-setup-keywords>`_
for specifying dependencies that need to be present in order for the `setup.py`
script to run. Internally, Setuptools uses ``easy_install`` to fulfill these
dependencies.
pip has no way to control how these dependencies are located. None of the
Package Index Options have an effect.
The solution is to configure a "system" or "personal" `Distutils configuration
file
<http://docs.python.org/2/install/index.html#distutils-configuration-files>`_ to
manage the fulfillment.
For example, to have the dependency located at an alternate index, add this:
::
[easy_install]
index_url = https://my.index-mirror.com
To have the dependency located from a local directory and not crawl PyPI, add this:
::
[easy_install]
allow_hosts = ''
find_links = file:///path/to/local/archives
Options
*******
.. pip-command-options:: install
.. pip-index-options::
.. _`pip install Examples`:
Examples
********
1) Install `SomePackage` and it's dependencies from `PyPI`_ using :ref:`Requirement Specifiers`
::
$ pip install SomePackage # latest version
$ pip install SomePackage==1.0.4 # specific version
$ pip install 'SomePackage>=1.0.4' # minimum version
2) Install a list of requirements specified in a file. See the :ref:`Requirements files <Requirements Files>`.
::
$ pip install -r requirements.txt
3) Upgrade an already installed `SomePackage` to the latest from PyPI.
::
$ pip install --upgrade SomePackage
4) Install a local project in "editable" mode. See the section on :ref:`Editable Installs <editable-installs>`.
::
$ pip install -e . # project in current directory
$ pip install -e path/to/project # project in another directory
5) Install a project from VCS in "editable" mode. See the sections on :ref:`VCS Support <VCS Support>` and :ref:`Editable Installs <editable-installs>`.
::
$ pip install -e git+https://git.repo/some_pkg.git#egg=SomePackage # from git
$ pip install -e hg+https://hg.repo/some_pkg.git#egg=SomePackage # from mercurial
$ pip install -e svn+svn://svn.repo/some_pkg/trunk/#egg=SomePackage # from svn
$ pip install -e git+https://git.repo/some_pkg.git@feature#egg=SomePackage # from 'feature' branch
$ pip install -e git+https://git.repo/some_repo.git@egg=subdir&subdirectory=subdir_path # install a python package from a repo subdirectory
6) Install a package with `setuptools extras`_.
::
$ pip install SomePackage[PDF]
$ pip install SomePackage[PDF]==3.0
$ pip install -e .[PDF]==3.0 # editable project in current directory
7) Install a particular source archive file.
::
$ pip install ./downloads/SomePackage-1.0.4.tar.gz
$ pip install http://my.package.repo/SomePackage-1.0.4.zip
8) Install from alternative package repositories.
Install from a different index, and not `PyPI`_ ::
$ pip install --index-url http://my.package.repo/simple/ SomePackage
Search an additional index during install, in addition to `PyPI`_ ::
$ pip install --extra-index-url http://my.package.repo/simple SomePackage
Install from a local flat directory containing archives (and don't scan indexes)::
$ pip install --no-index --find-links=file:///local/dir/ SomePackage
$ pip install --no-index --find-links=/local/dir/ SomePackage
$ pip install --no-index --find-links=relative/dir/ SomePackage
9) Find pre-release and development versions, in addition to stable versions. By default, pip only finds stable versions.
::
$ pip install --pre SomePackage
.. _PyPI: http://pypi.python.org/pypi/
.. _setuptools extras: http://packages.python.org/setuptools/setuptools.html#declaring-extras-optional-features-with-their-own-dependencies
-45
View File
@@ -1,45 +0,0 @@
.. _`pip list`:
pip list
---------
.. contents::
Usage
*****
.. pip-command-usage:: list
Description
***********
.. pip-command-description:: list
Options
*******
.. pip-command-options:: list
.. pip-index-options::
Examples
********
1) List installed packages.
::
$ pip list
Pygments (1.5)
docutils (0.9.1)
Sphinx (1.1.2)
Jinja2 (2.6)
2) List outdated packages (excluding editables), and the latest version available
::
$ pip list --outdated
docutils (Current: 0.9.1 Latest: 0.10)
Sphinx (Current: 1.1.2 Latest: 1.1.3)
-36
View File
@@ -1,36 +0,0 @@
.. _`pip search`:
pip search
----------
.. contents::
Usage
*****
.. pip-command-usage:: search
Description
***********
.. pip-command-description:: search
Options
*******
.. pip-command-options:: search
Examples
********
1. Search for "peppercorn"
::
$ pip search peppercorn
pepperedform - Helpers for using peppercorn with formprocess.
peppercorn - A library for converting a token stream into [...]
.. _`pip wheel`:
-37
View File
@@ -1,37 +0,0 @@
.. _`pip show`:
pip show
--------
.. contents::
Usage
*****
.. pip-command-usage:: show
Description
***********
.. pip-command-description:: show
Options
*******
.. pip-command-options:: show
Examples
********
1. Show information about a package:
::
$ pip show sphinx
---
Name: Sphinx
Version: 1.1.3
Location: /my/env/lib/pythonx.x/site-packages
Requires: Pygments, Jinja2, docutils
-37
View File
@@ -1,37 +0,0 @@
.. _`pip uninstall`:
pip uninstall
-------------
.. contents::
Usage
*****
.. pip-command-usage:: uninstall
Description
***********
.. pip-command-description:: uninstall
Options
*******
.. pip-command-options:: uninstall
Examples
********
1) Uninstall a package.
::
$ pip uninstall simplejson
Uninstalling simplejson:
/home/me/env/lib/python2.7/site-packages/simplejson
/home/me/env/lib/python2.7/site-packages/simplejson-2.2.1-py2.7.egg-info
Proceed (y/n)? y
Successfully uninstalled simplejson
-37
View File
@@ -1,37 +0,0 @@
.. _`pip wheel`:
pip wheel
---------
.. contents::
Usage
*****
.. pip-command-usage:: wheel
Description
***********
.. pip-command-description:: wheel
Options
*******
.. pip-command-options:: wheel
.. pip-index-options::
Examples
********
1. Build wheels for a requirement (and all its dependencies), and then install
::
$ pip wheel --wheel-dir=/tmp/wheelhouse SomePackage
$ pip install --no-index --find-links=/tmp/wheelhouse SomePackage
-8
View File
@@ -1,8 +0,0 @@
:orphan:
==========
Usage
==========
The "Usage" section is now covered in the :doc:`Reference Guide <reference/index>`

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