Compare commits

...

28 Commits

Author SHA1 Message Date
Kenneth Reitz f964209589 Merge remote-tracking branch 'origin/master' 2013-04-10 08:01:34 -07:00
Kenneth Reitz 2e699d392e Merge pull request #86 from manojlds/master
Fixing the compile hook scripts paths
2013-04-10 07:54:51 -07:00
manojlds 431ecee509 Using the bin path at root of pwd
The compile script is run with the root of the git repo of the project
being pushed as the working directory.

$BIN_DIR is pointing to the bin directory of the buildpack which is not
where you would want to put the pre and post compile hooks.

Changing back to the old convention of looking for the hooks from the
bin directory at the root of the project.
2013-04-10 15:06:51 +05:30
Kenneth Reitz 90696215ae python-2.7.4 default version 2013-04-09 15:03:27 -07:00
Kenneth Reitz 5b55261700 Merge pull request #73 from incuna/hooks-fix
Use $BIN_DIR in hooks.
2013-04-09 10:25:13 -07:00
Kenneth Reitz 727ff90acf Merge pull request #83 from aljosa/distribute_version_upgrade
upgraded distribute to v0.6.36.
2013-04-08 15:10:22 -07:00
Aljosa Mohorovic 0060fdacd8 upgraded distribute to v0.6.36.
fixes pip v1.3.1 installation issue
2013-04-08 18:00:53 +02:00
Kenneth Reitz 85ad1fa988 Merge pull request #78 from streeter/master
Allow pylibmc to be commented out in the requirements file
2013-03-21 00:53:49 -07:00
Kenneth Reitz 56c022ca41 remove bunk files 2013-03-20 03:44:19 -07:00
Chris Streeter f68e0989ea Allow pylibmc to be disabled. 2013-03-12 22:24:08 -07:00
Kenneth Reitz 7381117bb8 working dir fix 2013-03-07 23:11:06 -05:00
Kenneth Reitz c9209ebb3d fixes and cleanups 2013-03-07 21:10:46 -05:00
Kenneth Reitz 35345d11f5 run hash after install 2013-03-07 21:05:59 -05:00
Kenneth Reitz 6ee17b4c26 debug 2013-03-07 21:02:54 -05:00
Kenneth Reitz 86267f93a1 hash -r 2013-03-07 21:01:09 -05:00
Kenneth Reitz 50642e7069 check for fresh python before we try to run pip 2013-03-07 21:00:01 -05:00
Kenneth Reitz 8349f291d2 print updated pip version at install time 2013-03-07 20:52:36 -05:00
Kenneth Reitz 1aad21382e update pip if it is out of date 2013-03-07 20:50:51 -05:00
Kenneth Reitz 686ee087a5 use new pip/distribute 2013-03-07 20:40:32 -05:00
Kenneth Reitz f137ba213a sanity check 2013-03-07 20:38:06 -05:00
Kenneth Reitz 5ae51010cc update pip to v0.3.1 2013-03-07 20:37:40 -05:00
Kenneth Reitz 29d8e7f670 update distribute to v0.6.35 2013-03-07 20:36:03 -05:00
Marc Tamlyn 5be3e0ce52 Use $BIN_DIR in hooks. 2013-01-11 10:54:05 +00:00
Kenneth Reitz ddde30a12e new pylibmc test 2013-01-09 13:18:22 -05:00
Kenneth Reitz 2db5578998 set buildtime vars, cleanup comments
/cc @alexclark
2013-01-09 13:04:27 -05:00
Kenneth Reitz 290250836f unnecessary PYTHONHOME for uWSGI 2013-01-04 15:06:17 -05:00
Kenneth Reitz 0ff4df4dc3 much better 2013-01-03 14:57:08 -05:00
Kenneth Reitz 9177aa2c08 remove bunk 2013-01-03 14:20:43 -05:00
245 changed files with 8473 additions and 8783 deletions
+30 -47
View File
@@ -1,34 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# This script serves as the # Usage:
# [**Python Buildpack**](https://github.com/heroku/heroku-buildpack-python)
# compiler.
#
# A [buildpack](http://devcenter.heroku.com/articles/buildpacks) is an
# adapter between a Python application and Heroku's runtime.
#
# You can intreract with the Heroku API directly with [heroku.py](https://github.com/heroku/heroku.py/).
#
# See also: [Release history](/changelog.html), [Detection](/detect.html).
#
# ## Usage
# Compiling an app into a slug is simple:
# #
# $ bin/compile <build-dir> <cache-dir> # $ bin/compile <build-dir> <cache-dir>
# ## Assumptions
#
# This buildpack makes the following assumptions:
#
# - The desired Python VM is available on the base system.
# - Library dependencies are available on the base system.
# - Django applications should not require any platform-specific configuration.
# <hr />
# ## Context
# Fail fast and fail hard. # Fail fast and fail hard.
set -eo pipefail set -eo pipefail
@@ -49,8 +25,10 @@ LEGACY_TRIGGER="lib/python2.7"
PROFILE_PATH="$BUILD_DIR/.profile.d/python.sh" PROFILE_PATH="$BUILD_DIR/.profile.d/python.sh"
# Python version. This will be used in the future to specify custom Pythons. # Python version. This will be used in the future to specify custom Pythons.
DEFAULT_PYTHON_VERSION="python-2.7.3" DEFAULT_PYTHON_VERSION="python-2.7.4"
PYTHON_EXE="/app/.heroku/python/bin/python" PYTHON_EXE="/app/.heroku/python/bin/python"
PIP_VERSION="1.3.1"
DISTRIBUTE_VERSION="0.6.36"
# Sanitizing environment variables. # Sanitizing environment variables.
unset GIT_DIR PYTHONHOME PYTHONPATH LD_LIBRARY_PATH LIBRARY_PATH unset GIT_DIR PYTHONHOME PYTHONPATH LD_LIBRARY_PATH LIBRARY_PATH
@@ -79,9 +57,9 @@ BUILD_DIR=$APP_DIR
# Prepend proper path buildpack use. # Prepend proper path buildpack use.
export PATH=$BUILD_DIR/.heroku/python/bin:$PATH export PATH=$BUILD_DIR/.heroku/python/bin:$PATH
export PYTHONUNBUFFERED=1 export PYTHONUNBUFFERED=1
export LANG=en_US.UTF-8
# ## Build Time export LIBRARY_PATH=/app/.heroku/vendor/lib
# export LD_LIBRARY_PATH=/app/.heroku/vendor/lib
# Switch to the repo's context. # Switch to the repo's context.
cd $BUILD_DIR cd $BUILD_DIR
@@ -146,38 +124,44 @@ if [ ! "$SKIP_INSTALL" ]; then
# Record for future reference. # Record for future reference.
echo $PYTHON_VERSION > .heroku/python-version echo $PYTHON_VERSION > .heroku/python-version
WORKING_DIR=$(pwd) FRESH_PYTHON=true
# Prepare it for the real world
puts-step "Installing Distribute (0.6.34)"
cd $ROOT_DIR/vendor/distribute-0.6.34/
python setup.py install &> /dev/null
cd $WORKING_DIR
puts-step "Installing Pip (1.2.1)"
cd $ROOT_DIR/vendor/pip-1.2.1/
python setup.py install &> /dev/null
cd $WORKING_DIR
hash -r hash -r
else else
puts-step "Using Python runtime ($PYTHON_VERSION)" puts-step "Using Python runtime ($PYTHON_VERSION)"
fi fi
# If Pip isn't up to date:
if [ "$FRESH_PYTHON" ] || [[ ! $(pip --version) == *$PIP_VERSION* ]]; then
WORKING_DIR=$(pwd)
# Prepare it for the real world
puts-step "Installing Distribute ($DISTRIBUTE_VERSION)"
cd $ROOT_DIR/vendor/distribute-$DISTRIBUTE_VERSION/
python setup.py install &> /dev/null
cd $WORKING_DIR
puts-step "Installing Pip ($PIP_VERSION)"
cd $ROOT_DIR/vendor/pip-$PIP_VERSION/
python setup.py install &> /dev/null
cd $WORKING_DIR
fi
set -e set -e
hash -r
# Pylibmc support. # Pylibmc support.
# See [`bin/steps/pylibmc`](pylibmc.html). # See [`bin/steps/pylibmc`](pylibmc.html).
source $BIN_DIR/steps/pylibmc source $BIN_DIR/steps/pylibmc
# Install Mercurial if it appears to be required. # Install Mercurial if it appears to be required.
if (in-req "hg+" requirements.txt) then if (grep -Fiq "hg+" requirements.txt) then
pip install --use-mirrors mercurial | cleanup | indent /app/.heroku/python/bin/pip install --use-mirrors mercurial | cleanup | indent
fi fi
# Install dependencies with Pip. # Install dependencies with Pip.
puts-step "Installing dependencies using Pip (1.2.1)" puts-step "Installing dependencies using Pip ($PIP_VERSION)"
pip install --use-mirrors -r requirements.txt --exists-action=w --src=./.heroku/src | cleanup | indent /app/.heroku/python/bin/pip install --use-mirrors -r requirements.txt --exists-action=w --src=./.heroku/src | cleanup | indent
# Django collectstatic support. # Django collectstatic support.
source $BIN_DIR/steps/collectstatic source $BIN_DIR/steps/collectstatic
@@ -193,14 +177,13 @@ done
# Set context environment variables. # Set context environment variables.
set-env PATH '$HOME/.heroku/python/bin:$PATH' set-env PATH '$HOME/.heroku/python/bin:$PATH'
# set-env PYTHONHOME /app/.heroku/python/
set-env PYTHONUNBUFFERED true set-env PYTHONUNBUFFERED true
set-env PYTHONHOME /app/.heroku/python
set-default-env LIBRARY_PATH /app/.heroku/vendor/lib set-default-env LIBRARY_PATH /app/.heroku/vendor/lib
set-default-env LD_LIBRARY_PATH /app/.heroku/vendor/lib set-default-env LD_LIBRARY_PATH /app/.heroku/vendor/lib
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/
un-set-env PYTHONHOME
# Experimental post_compile hook. # Experimental post_compile hook.
+1 -1
View File
@@ -16,7 +16,7 @@ VENDORED_MEMCACHED="http://cl.ly/0a191R3K160t1w1P0N25/vendor-libmemcached.tar.gz
source $BIN_DIR/utils source $BIN_DIR/utils
# If pylibmc exists within requirements, use vendored libmemcached. # If pylibmc exists within requirements, use vendored libmemcached.
if (in-req "pylibmc" requirements.txt) then if (grep -Eiq "^\s*pylibmc" requirements.txt) then
echo "-----> Noticed pylibmc. Bootstrapping libmemcached." echo "-----> Noticed pylibmc. Bootstrapping libmemcached."
cd .heroku cd .heroku
-3
View File
@@ -1,3 +0,0 @@
Script started on Wed Dec 19 22:40:46 2012
%
-22
View File
@@ -52,25 +52,3 @@ function deep-mv (){
rm -fr $1/!(tmp) rm -fr $1/!(tmp)
find -H $1 -maxdepth 1 -name '.*' -a \( -type d -o -type f -o -type l \) -exec rm -fr '{}' \; find -H $1 -maxdepth 1 -name '.*' -a \( -type d -o -type f -o -type l \) -exec rm -fr '{}' \;
} }
# Recursively finds requirements.txt files
function list-req (){
echo $@
for req in $(grep -Fie "-r " $@ | sed 's/-r //g')
do
path="$(dirname $@)/$req"
list-req $path
done
}
# Find pattern in requirements files recursively
# Usage: $ in-req pattern file
function in-req (){
for file in $(list-req $2)
do
if (grep -Fiqe "$1" "$file") then
return 0
fi
done
return 1
}
+2
View File
@@ -0,0 +1,2 @@
pylibmc
psycopg2
@@ -2,11 +2,33 @@
CHANGES CHANGES
======= =======
---------- ------
Unreleased 0.6.36
---------- ------
+ Issue #341: 0.6.33 fails to build under python 2.4 * Pull Request #35: In `Buildout issue 64
<https://github.com/buildout/buildout/issues/64>`_, it was reported that
under Python 3, installation of distutils scripts could attempt to copy
the ``__pycache__`` directory as a file, causing an error, apparently only
under Windows. Easy_install now skips all directories when processing
metadata scripts.
------
0.6.35
------
Note this release is backward-incompatible with distribute 0.6.23-0.6.34 in
how it parses version numbers.
* Issue #278: Restored compatibility with distribute 0.6.22 and setuptools
0.6. Updated the documentation to match more closely with the version
parsing as intended in setuptools 0.6.
------
0.6.34
------
* Issue #341: 0.6.33 fails to build under Python 2.4.
------ ------
0.6.33 0.6.33
@@ -1,6 +1,6 @@
Metadata-Version: 1.1 Metadata-Version: 1.1
Name: distribute Name: distribute
Version: 0.6.34 Version: 0.6.36
Summary: Easily download, build, install, upgrade, and uninstall Python packages Summary: Easily download, build, install, upgrade, and uninstall Python packages
Home-page: http://packages.python.org/distribute Home-page: http://packages.python.org/distribute
Author: The fellowship of the packaging Author: The fellowship of the packaging
@@ -107,9 +107,9 @@ Description: ===============================
Download the source tarball, uncompress it, then run the install command:: Download the source tarball, uncompress it, then run the install command::
$ curl -O http://pypi.python.org/packages/source/d/distribute/distribute-0.6.34.tar.gz $ curl -O http://pypi.python.org/packages/source/d/distribute/distribute-0.6.36.tar.gz
$ tar -xzvf distribute-0.6.34.tar.gz $ tar -xzvf distribute-0.6.36.tar.gz
$ cd distribute-0.6.34 $ cd distribute-0.6.36
$ python setup.py install $ python setup.py install
--------------------------- ---------------------------
@@ -238,11 +238,33 @@ Description: ===============================
CHANGES CHANGES
======= =======
---------- ------
Unreleased 0.6.36
---------- ------
+ `Issue #341`_: 0.6.33 fails to build under python 2.4 * Pull Request #35: In `Buildout `issue 64`_
<https://github.com/buildout/buildout/issues/64>`_, it was reported that
under Python 3, installation of distutils scripts could attempt to copy
the ``__pycache__`` directory as a file, causing an error, apparently only
under Windows. Easy_install now skips all directories when processing
metadata scripts.
------
0.6.35
------
Note this release is backward-incompatible with distribute 0.6.23-0.6.34 in
how it parses version numbers.
* `Issue #278`_: Restored compatibility with distribute 0.6.22 and setuptools
0.6. Updated the documentation to match more closely with the version
parsing as intended in setuptools 0.6.
------
0.6.34
------
* `Issue #341`_: 0.6.33 fails to build under Python 2.4.
------ ------
0.6.33 0.6.33
@@ -273,8 +295,8 @@ Description: ===============================
* `Issue #303`_: Make sure the manifest only ever contains UTF-8 in Python 3. * `Issue #303`_: Make sure the manifest only ever contains UTF-8 in Python 3.
* `Issue #329`_: Properly close files created by tests for compatibility with * `Issue #329`_: Properly close files created by tests for compatibility with
Jython. Jython.
* Work around Jython bugs `#1980 <http://bugs.jython.org/`issue1980`_>`_ and * Work around Jython bugs `#1980 <http://bugs.jython.org/issue1980>`_ and
`#1981 <http://bugs.jython.org/`issue1981`_>`_. `#1981 <http://bugs.jython.org/issue1981>`_.
* `Issue #334`_: Provide workaround for packages that reference `sys.__stdout__` * `Issue #334`_: Provide workaround for packages that reference `sys.__stdout__`
such as numpy does. This change should address such as numpy does. This change should address
`virtualenv #359 <https://github.com/pypa/virtualenv/issues/359>`_ as long `virtualenv #359 <https://github.com/pypa/virtualenv/issues/359>`_ as long
@@ -625,19 +647,19 @@ Description: ===============================
========== ==========
* Added Python 3 support; see docs/python3.txt. * Added Python 3 support; see docs/python3.txt.
This closes http://bugs.python.org/setuptools/`issue39`_. This closes http://bugs.python.org/setuptools/issue39.
* Added option to run 2to3 automatically when installing on Python 3. * Added option to run 2to3 automatically when installing on Python 3.
This closes `issue #31`_. This closes `issue #31`_.
* Fixed invalid usage of requirement.parse, that broke develop -d. * Fixed invalid usage of requirement.parse, that broke develop -d.
This closes http://bugs.python.org/setuptools/`issue44`_. This closes http://bugs.python.org/setuptools/issue44.
* Fixed script launcher for 64-bit Windows. * Fixed script launcher for 64-bit Windows.
This closes http://bugs.python.org/setuptools/`issue2`_. This closes http://bugs.python.org/setuptools/issue2.
* KeyError when compiling extensions. * KeyError when compiling extensions.
This closes http://bugs.python.org/setuptools/`issue41`_. This closes http://bugs.python.org/setuptools/issue41.
bootstrapping bootstrapping
============= =============
@@ -647,7 +669,7 @@ Description: ===============================
* Fixed 2.6 dependencies. This closes `issue #50`_. * Fixed 2.6 dependencies. This closes `issue #50`_.
* Make sure setuptools is patched when running through easy_install * Make sure setuptools is patched when running through easy_install
This closes http://bugs.python.org/setuptools/`issue40`_. This closes http://bugs.python.org/setuptools/issue40.
----- -----
0.6.1 0.6.1
@@ -660,9 +682,9 @@ Description: ===============================
This closes `issue #16`_ and `issue #18`_. This closes `issue #16`_ and `issue #18`_.
* zip_ok is now False by default. This closes * zip_ok is now False by default. This closes
http://bugs.python.org/setuptools/`issue33`_. http://bugs.python.org/setuptools/issue33.
* Fixed invalid URL error catching. http://bugs.python.org/setuptools/`issue20`_. * Fixed invalid URL error catching. http://bugs.python.org/setuptools/issue20.
* Fixed invalid bootstraping with easy_install installation (`issue #40`_). * Fixed invalid bootstraping with easy_install installation (`issue #40`_).
Thanks to Florian Schulze for the help. Thanks to Florian Schulze for the help.
@@ -746,6 +768,7 @@ Description: ===============================
.. _`Issue #269`: http://bitbucket.org/tarek/distribute/issue/269 .. _`Issue #269`: http://bitbucket.org/tarek/distribute/issue/269
.. _`Issue #272`: http://bitbucket.org/tarek/distribute/issue/272 .. _`Issue #272`: http://bitbucket.org/tarek/distribute/issue/272
.. _`Issue #273`: http://bitbucket.org/tarek/distribute/issue/273 .. _`Issue #273`: http://bitbucket.org/tarek/distribute/issue/273
.. _`Issue #278`: http://bitbucket.org/tarek/distribute/issue/278
.. _`Issue #283`: http://bitbucket.org/tarek/distribute/issue/283 .. _`Issue #283`: http://bitbucket.org/tarek/distribute/issue/283
.. _`Issue #294`: http://bitbucket.org/tarek/distribute/issue/294 .. _`Issue #294`: http://bitbucket.org/tarek/distribute/issue/294
.. _`Issue #299`: http://bitbucket.org/tarek/distribute/issue/299 .. _`Issue #299`: http://bitbucket.org/tarek/distribute/issue/299
@@ -836,15 +859,7 @@ Description: ===============================
.. _`issue #7`: http://bitbucket.org/tarek/distribute/issue/7 .. _`issue #7`: http://bitbucket.org/tarek/distribute/issue/7
.. _`issue #8`: http://bitbucket.org/tarek/distribute/issue/8 .. _`issue #8`: http://bitbucket.org/tarek/distribute/issue/8
.. _`issue #9`: http://bitbucket.org/tarek/distribute/issue/9 .. _`issue #9`: http://bitbucket.org/tarek/distribute/issue/9
.. _`issue1980`: http://bitbucket.org/tarek/distribute/issue/1980 .. _`issue 64`: http://bitbucket.org/tarek/distribute/issue/64
.. _`issue1981`: http://bitbucket.org/tarek/distribute/issue/1981
.. _`issue2`: http://bitbucket.org/tarek/distribute/issue/2
.. _`issue20`: http://bitbucket.org/tarek/distribute/issue/20
.. _`issue33`: http://bitbucket.org/tarek/distribute/issue/33
.. _`issue39`: http://bitbucket.org/tarek/distribute/issue/39
.. _`issue40`: http://bitbucket.org/tarek/distribute/issue/40
.. _`issue41`: http://bitbucket.org/tarek/distribute/issue/41
.. _`issue44`: http://bitbucket.org/tarek/distribute/issue/44
Keywords: CPAN PyPI distutils eggs package management Keywords: CPAN PyPI distutils eggs package management
@@ -99,9 +99,9 @@ Source installation
Download the source tarball, uncompress it, then run the install command:: Download the source tarball, uncompress it, then run the install command::
$ curl -O http://pypi.python.org/packages/source/d/distribute/distribute-0.6.34.tar.gz $ curl -O http://pypi.python.org/packages/source/d/distribute/distribute-0.6.36.tar.gz
$ tar -xzvf distribute-0.6.34.tar.gz $ tar -xzvf distribute-0.6.36.tar.gz
$ cd distribute-0.6.34 $ cd distribute-0.6.36
$ python setup.py install $ python setup.py install
--------------------------- ---------------------------
@@ -1,6 +1,6 @@
Metadata-Version: 1.1 Metadata-Version: 1.1
Name: distribute Name: distribute
Version: 0.6.34 Version: 0.6.36
Summary: Easily download, build, install, upgrade, and uninstall Python packages Summary: Easily download, build, install, upgrade, and uninstall Python packages
Home-page: http://packages.python.org/distribute Home-page: http://packages.python.org/distribute
Author: The fellowship of the packaging Author: The fellowship of the packaging
@@ -107,9 +107,9 @@ Description: ===============================
Download the source tarball, uncompress it, then run the install command:: Download the source tarball, uncompress it, then run the install command::
$ curl -O http://pypi.python.org/packages/source/d/distribute/distribute-0.6.34.tar.gz $ curl -O http://pypi.python.org/packages/source/d/distribute/distribute-0.6.36.tar.gz
$ tar -xzvf distribute-0.6.34.tar.gz $ tar -xzvf distribute-0.6.36.tar.gz
$ cd distribute-0.6.34 $ cd distribute-0.6.36
$ python setup.py install $ python setup.py install
--------------------------- ---------------------------
@@ -238,11 +238,33 @@ Description: ===============================
CHANGES CHANGES
======= =======
---------- ------
Unreleased 0.6.36
---------- ------
+ `Issue #341`_: 0.6.33 fails to build under python 2.4 * Pull Request #35: In `Buildout `issue 64`_
<https://github.com/buildout/buildout/issues/64>`_, it was reported that
under Python 3, installation of distutils scripts could attempt to copy
the ``__pycache__`` directory as a file, causing an error, apparently only
under Windows. Easy_install now skips all directories when processing
metadata scripts.
------
0.6.35
------
Note this release is backward-incompatible with distribute 0.6.23-0.6.34 in
how it parses version numbers.
* `Issue #278`_: Restored compatibility with distribute 0.6.22 and setuptools
0.6. Updated the documentation to match more closely with the version
parsing as intended in setuptools 0.6.
------
0.6.34
------
* `Issue #341`_: 0.6.33 fails to build under Python 2.4.
------ ------
0.6.33 0.6.33
@@ -273,8 +295,8 @@ Description: ===============================
* `Issue #303`_: Make sure the manifest only ever contains UTF-8 in Python 3. * `Issue #303`_: Make sure the manifest only ever contains UTF-8 in Python 3.
* `Issue #329`_: Properly close files created by tests for compatibility with * `Issue #329`_: Properly close files created by tests for compatibility with
Jython. Jython.
* Work around Jython bugs `#1980 <http://bugs.jython.org/`issue1980`_>`_ and * Work around Jython bugs `#1980 <http://bugs.jython.org/issue1980>`_ and
`#1981 <http://bugs.jython.org/`issue1981`_>`_. `#1981 <http://bugs.jython.org/issue1981>`_.
* `Issue #334`_: Provide workaround for packages that reference `sys.__stdout__` * `Issue #334`_: Provide workaround for packages that reference `sys.__stdout__`
such as numpy does. This change should address such as numpy does. This change should address
`virtualenv #359 <https://github.com/pypa/virtualenv/issues/359>`_ as long `virtualenv #359 <https://github.com/pypa/virtualenv/issues/359>`_ as long
@@ -625,19 +647,19 @@ Description: ===============================
========== ==========
* Added Python 3 support; see docs/python3.txt. * Added Python 3 support; see docs/python3.txt.
This closes http://bugs.python.org/setuptools/`issue39`_. This closes http://bugs.python.org/setuptools/issue39.
* Added option to run 2to3 automatically when installing on Python 3. * Added option to run 2to3 automatically when installing on Python 3.
This closes `issue #31`_. This closes `issue #31`_.
* Fixed invalid usage of requirement.parse, that broke develop -d. * Fixed invalid usage of requirement.parse, that broke develop -d.
This closes http://bugs.python.org/setuptools/`issue44`_. This closes http://bugs.python.org/setuptools/issue44.
* Fixed script launcher for 64-bit Windows. * Fixed script launcher for 64-bit Windows.
This closes http://bugs.python.org/setuptools/`issue2`_. This closes http://bugs.python.org/setuptools/issue2.
* KeyError when compiling extensions. * KeyError when compiling extensions.
This closes http://bugs.python.org/setuptools/`issue41`_. This closes http://bugs.python.org/setuptools/issue41.
bootstrapping bootstrapping
============= =============
@@ -647,7 +669,7 @@ Description: ===============================
* Fixed 2.6 dependencies. This closes `issue #50`_. * Fixed 2.6 dependencies. This closes `issue #50`_.
* Make sure setuptools is patched when running through easy_install * Make sure setuptools is patched when running through easy_install
This closes http://bugs.python.org/setuptools/`issue40`_. This closes http://bugs.python.org/setuptools/issue40.
----- -----
0.6.1 0.6.1
@@ -660,9 +682,9 @@ Description: ===============================
This closes `issue #16`_ and `issue #18`_. This closes `issue #16`_ and `issue #18`_.
* zip_ok is now False by default. This closes * zip_ok is now False by default. This closes
http://bugs.python.org/setuptools/`issue33`_. http://bugs.python.org/setuptools/issue33.
* Fixed invalid URL error catching. http://bugs.python.org/setuptools/`issue20`_. * Fixed invalid URL error catching. http://bugs.python.org/setuptools/issue20.
* Fixed invalid bootstraping with easy_install installation (`issue #40`_). * Fixed invalid bootstraping with easy_install installation (`issue #40`_).
Thanks to Florian Schulze for the help. Thanks to Florian Schulze for the help.
@@ -746,6 +768,7 @@ Description: ===============================
.. _`Issue #269`: http://bitbucket.org/tarek/distribute/issue/269 .. _`Issue #269`: http://bitbucket.org/tarek/distribute/issue/269
.. _`Issue #272`: http://bitbucket.org/tarek/distribute/issue/272 .. _`Issue #272`: http://bitbucket.org/tarek/distribute/issue/272
.. _`Issue #273`: http://bitbucket.org/tarek/distribute/issue/273 .. _`Issue #273`: http://bitbucket.org/tarek/distribute/issue/273
.. _`Issue #278`: http://bitbucket.org/tarek/distribute/issue/278
.. _`Issue #283`: http://bitbucket.org/tarek/distribute/issue/283 .. _`Issue #283`: http://bitbucket.org/tarek/distribute/issue/283
.. _`Issue #294`: http://bitbucket.org/tarek/distribute/issue/294 .. _`Issue #294`: http://bitbucket.org/tarek/distribute/issue/294
.. _`Issue #299`: http://bitbucket.org/tarek/distribute/issue/299 .. _`Issue #299`: http://bitbucket.org/tarek/distribute/issue/299
@@ -836,15 +859,7 @@ Description: ===============================
.. _`issue #7`: http://bitbucket.org/tarek/distribute/issue/7 .. _`issue #7`: http://bitbucket.org/tarek/distribute/issue/7
.. _`issue #8`: http://bitbucket.org/tarek/distribute/issue/8 .. _`issue #8`: http://bitbucket.org/tarek/distribute/issue/8
.. _`issue #9`: http://bitbucket.org/tarek/distribute/issue/9 .. _`issue #9`: http://bitbucket.org/tarek/distribute/issue/9
.. _`issue1980`: http://bitbucket.org/tarek/distribute/issue/1980 .. _`issue 64`: http://bitbucket.org/tarek/distribute/issue/64
.. _`issue1981`: http://bitbucket.org/tarek/distribute/issue/1981
.. _`issue2`: http://bitbucket.org/tarek/distribute/issue/2
.. _`issue20`: http://bitbucket.org/tarek/distribute/issue/20
.. _`issue33`: http://bitbucket.org/tarek/distribute/issue/33
.. _`issue39`: http://bitbucket.org/tarek/distribute/issue/39
.. _`issue40`: http://bitbucket.org/tarek/distribute/issue/40
.. _`issue41`: http://bitbucket.org/tarek/distribute/issue/41
.. _`issue44`: http://bitbucket.org/tarek/distribute/issue/44
Keywords: CPAN PyPI distutils eggs package management Keywords: CPAN PyPI distutils eggs package management
@@ -49,7 +49,7 @@ except ImportError:
args = [quote(arg) for arg in args] args = [quote(arg) for arg in args]
return os.spawnl(os.P_WAIT, sys.executable, *args) == 0 return os.spawnl(os.P_WAIT, sys.executable, *args) == 0
DEFAULT_VERSION = "0.6.34" DEFAULT_VERSION = "0.6.36"
DEFAULT_URL = "http://pypi.python.org/packages/source/d/distribute/" DEFAULT_URL = "http://pypi.python.org/packages/source/d/distribute/"
SETUPTOOLS_FAKED_VERSION = "0.6c11" SETUPTOOLS_FAKED_VERSION = "0.6c11"
@@ -187,10 +187,11 @@ than ``2.4.1`` (which has a higher release number).
A pre-release tag is a series of letters that are alphabetically before A pre-release tag is a series of letters that are alphabetically before
"final". Some examples of prerelease tags would include ``alpha``, ``beta``, "final". Some examples of prerelease tags would include ``alpha``, ``beta``,
``a``, ``c``, ``dev``, and so on. You do not have to place a dot before ``a``, ``c``, ``dev``, and so on. You do not have to place a dot or dash
the prerelease tag if it's immediately after a number, but it's okay to do before the prerelease tag if it's immediately after a number, but it's okay to
so if you prefer. Thus, ``2.4c1`` and ``2.4.c1`` both represent release do so if you prefer. Thus, ``2.4c1`` and ``2.4.c1`` and ``2.4-c1`` all
candidate 1 of version ``2.4``, and are treated as identical by setuptools. represent release candidate 1 of version ``2.4``, and are treated as identical
by setuptools.
In addition, there are three special prerelease tags that are treated as if In addition, there are three special prerelease tags that are treated as if
they were the letter ``c``: ``pre``, ``preview``, and ``rc``. So, version they were the letter ``c``: ``pre``, ``preview``, and ``rc``. So, version
@@ -216,13 +217,6 @@ a post-release tag, so this version is *newer* than ``0.6a9.dev``.
For the most part, setuptools' interpretation of version numbers is intuitive, For the most part, setuptools' interpretation of version numbers is intuitive,
but here are a few tips that will keep you out of trouble in the corner cases: but here are a few tips that will keep you out of trouble in the corner cases:
* Don't use ``-`` or any other character than ``.`` as a separator, unless you
really want a post-release. Remember that ``2.1-rc2`` means you've
*already* released ``2.1``, whereas ``2.1rc2`` and ``2.1.c2`` are candidates
you're putting out *before* ``2.1``. If you accidentally distribute copies
of a post-release that you meant to be a pre-release, the only safe fix is to
bump your main release number (e.g. to ``2.1.1``) and re-release the project.
* Don't stick adjoining pre-release tags together without a dot or number * Don't stick adjoining pre-release tags together without a dot or number
between them. Version ``1.9adev`` is the ``adev`` prerelease of ``1.9``, between them. Version ``1.9adev`` is the ``adev`` prerelease of ``1.9``,
*not* a development pre-release of ``1.9a``. Use ``.dev`` instead, as in *not* a development pre-release of ``1.9a``. Use ``.dev`` instead, as in
@@ -239,7 +233,7 @@ but here are a few tips that will keep you out of trouble in the corner cases:
>>> parse_version('1.9.a.dev') == parse_version('1.9a0dev') >>> parse_version('1.9.a.dev') == parse_version('1.9a0dev')
True True
>>> parse_version('2.1-rc2') < parse_version('2.1') >>> parse_version('2.1-rc2') < parse_version('2.1')
False True
>>> parse_version('0.6a9dev-r41475') < parse_version('0.6a9') >>> parse_version('0.6a9dev-r41475') < parse_version('0.6a9')
True True
@@ -48,9 +48,9 @@ copyright = u'2009-2011, The fellowship of the packaging'
# built documents. # built documents.
# #
# The short X.Y version. # The short X.Y version.
version = '0.6.34' version = '0.6.36'
# The full version, including alpha/beta/rc tags. # The full version, including alpha/beta/rc tags.
release = '0.6.34' release = '0.6.36'
# The language for content autogenerated by Sphinx. Refer to documentation # The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages. # for a list of supported languages.
@@ -187,10 +187,11 @@ than ``2.4.1`` (which has a higher release number).
A pre-release tag is a series of letters that are alphabetically before A pre-release tag is a series of letters that are alphabetically before
"final". Some examples of prerelease tags would include ``alpha``, ``beta``, "final". Some examples of prerelease tags would include ``alpha``, ``beta``,
``a``, ``c``, ``dev``, and so on. You do not have to place a dot before ``a``, ``c``, ``dev``, and so on. You do not have to place a dot or dash
the prerelease tag if it's immediately after a number, but it's okay to do before the prerelease tag if it's immediately after a number, but it's okay to
so if you prefer. Thus, ``2.4c1`` and ``2.4.c1`` both represent release do so if you prefer. Thus, ``2.4c1`` and ``2.4.c1`` and ``2.4-c1`` all
candidate 1 of version ``2.4``, and are treated as identical by setuptools. represent release candidate 1 of version ``2.4``, and are treated as identical
by setuptools.
In addition, there are three special prerelease tags that are treated as if In addition, there are three special prerelease tags that are treated as if
they were the letter ``c``: ``pre``, ``preview``, and ``rc``. So, version they were the letter ``c``: ``pre``, ``preview``, and ``rc``. So, version
@@ -216,13 +217,6 @@ a post-release tag, so this version is *newer* than ``0.6a9.dev``.
For the most part, setuptools' interpretation of version numbers is intuitive, For the most part, setuptools' interpretation of version numbers is intuitive,
but here are a few tips that will keep you out of trouble in the corner cases: but here are a few tips that will keep you out of trouble in the corner cases:
* Don't use ``-`` or any other character than ``.`` as a separator, unless you
really want a post-release. Remember that ``2.1-rc2`` means you've
*already* released ``2.1``, whereas ``2.1rc2`` and ``2.1.c2`` are candidates
you're putting out *before* ``2.1``. If you accidentally distribute copies
of a post-release that you meant to be a pre-release, the only safe fix is to
bump your main release number (e.g. to ``2.1.1``) and re-release the project.
* Don't stick adjoining pre-release tags together without a dot or number * Don't stick adjoining pre-release tags together without a dot or number
between them. Version ``1.9adev`` is the ``adev`` prerelease of ``1.9``, between them. Version ``1.9adev`` is the ``adev`` prerelease of ``1.9``,
*not* a development pre-release of ``1.9a``. Use ``.dev`` instead, as in *not* a development pre-release of ``1.9a``. Use ``.dev`` instead, as in
@@ -239,7 +233,7 @@ but here are a few tips that will keep you out of trouble in the corner cases:
>>> parse_version('1.9.a.dev') == parse_version('1.9a0dev') >>> parse_version('1.9.a.dev') == parse_version('1.9a0dev')
True True
>>> parse_version('2.1-rc2') < parse_version('2.1') >>> parse_version('2.1-rc2') < parse_version('2.1')
False True
>>> parse_version('0.6a9dev-r41475') < parse_version('0.6a9') >>> parse_version('0.6a9dev-r41475') < parse_version('0.6a9')
True True
@@ -1936,7 +1936,7 @@ replace = {'pre':'c', 'preview':'c','-':'final-','rc':'c','dev':'@'}.get
def _parse_version_parts(s): def _parse_version_parts(s):
for part in component_re.split(s): for part in component_re.split(s):
part = replace(part,part) part = replace(part,part)
if part in ['', '.']: if not part or part=='.':
continue continue
if part[:1] in '0123456789': if part[:1] in '0123456789':
yield part.zfill(8) # pad for numeric comparison yield part.zfill(8) # pad for numeric comparison
@@ -1979,6 +1979,8 @@ def parse_version(s):
parts = [] parts = []
for part in _parse_version_parts(s.lower()): for part in _parse_version_parts(s.lower()):
if part.startswith('*'): if part.startswith('*'):
if part<'*final': # remove '-' before a prerelease tag
while parts and parts[-1]=='*final-': parts.pop()
# remove trailing zeros from each series of numeric parts # remove trailing zeros from each series of numeric parts
while parts and parts[-1]=='00000000': while parts and parts[-1]=='00000000':
parts.pop() parts.pop()
@@ -20,7 +20,7 @@ try:
except Exception: except Exception:
pass pass
VERSION = '0.6.34' VERSION = '0.6.36'
def get_next_version(): def get_next_version():
digits = map(int, VERSION.split('.')) digits = map(int, VERSION.split('.'))
@@ -50,7 +50,7 @@ def get_mercurial_creds(system='https://bitbucket.org', username=None):
# todo: consider getting this from .hgrc # todo: consider getting this from .hgrc
username = username or getpass.getuser() username = username or getpass.getuser()
keyring_username = '@@'.join((username, system)) keyring_username = '@@'.join((username, system))
system = '@'.join((keyring_username, 'Mercurial')) system = 'Mercurial'
password = ( password = (
keyring.get_password(system, keyring_username) keyring.get_password(system, keyring_username)
if 'keyring' in globals() if 'keyring' in globals()
@@ -46,7 +46,7 @@ exec(init_file.read(), d)
init_file.close() init_file.close()
SETUP_COMMANDS = d['__all__'] SETUP_COMMANDS = d['__all__']
VERSION = "0.6.34" VERSION = "0.6.36"
from setuptools import setup, find_packages from setuptools import setup, find_packages
from setuptools.command.build_py import build_py as _build_py from setuptools.command.build_py import build_py as _build_py
@@ -136,7 +136,7 @@ if _being_installed():
# return contents of reStructureText file with linked issue references # return contents of reStructureText file with linked issue references
def _linkified(rst_path): def _linkified(rst_path):
bitroot = 'http://bitbucket.org/tarek/distribute' bitroot = 'http://bitbucket.org/tarek/distribute'
revision = re.compile(r'\b(issue\s*#?\d+)\b', re.M | re.I) revision = re.compile(r'\b(issue\s+#?\d+)\b', re.M | re.I)
rst_file = open(rst_path) rst_file = open(rst_path)
rst_content = rst_file.read() rst_content = rst_file.read()
@@ -522,6 +522,10 @@ Please make the appropriate changes for your system and try again.
"""Write all the scripts for `dist`, unless scripts are excluded""" """Write all the scripts for `dist`, unless scripts are excluded"""
if not self.exclude_scripts and dist.metadata_isdir('scripts'): if not self.exclude_scripts and dist.metadata_isdir('scripts'):
for script_name in dist.metadata_listdir('scripts'): for script_name in dist.metadata_listdir('scripts'):
if dist.metadata_isdir('scripts/' + script_name):
# The "script" is a directory, likely a Python 3
# __pycache__ directory, so skip it.
continue
self.install_script( self.install_script(
dist, script_name, dist, script_name,
dist.get_metadata('scripts/'+script_name) dist.get_metadata('scripts/'+script_name)
@@ -477,13 +477,14 @@ class ParseTests(TestCase):
p1, p2 = parse_version(s1),parse_version(s2) p1, p2 = parse_version(s1),parse_version(s2)
self.assertEqual(p1,p2, (s1,s2,p1,p2)) self.assertEqual(p1,p2, (s1,s2,p1,p2))
c('1.2-rc1', '1.2rc1')
c('0.4', '0.4.0') c('0.4', '0.4.0')
c('0.4.0.0', '0.4.0') c('0.4.0.0', '0.4.0')
c('0.4.0-0', '0.4-0') c('0.4.0-0', '0.4-0')
c('0pl1', '0.0pl1') c('0pl1', '0.0pl1')
c('0pre1', '0.0c1') c('0pre1', '0.0c1')
c('0.0.0preview1', '0c1') c('0.0.0preview1', '0c1')
c('0.0c1', '0rc1') c('0.0c1', '0-rc1')
c('1.2a1', '1.2.a.1'); c('1.2...a', '1.2a') c('1.2a1', '1.2.a.1'); c('1.2...a', '1.2a')
def testVersionOrdering(self): def testVersionOrdering(self):
@@ -492,14 +493,11 @@ class ParseTests(TestCase):
self.assertTrue(p1<p2, (s1,s2,p1,p2)) self.assertTrue(p1<p2, (s1,s2,p1,p2))
c('2.1','2.1.1') c('2.1','2.1.1')
c('2.1.0','2.10')
c('2a1','2b0') c('2a1','2b0')
c('2b1','2c0')
c('2a1','2.1') c('2a1','2.1')
c('2.3a1', '2.3') c('2.3a1', '2.3')
c('2.1-1', '2.1-2') c('2.1-1', '2.1-2')
c('2.1-1', '2.1.1') c('2.1-1', '2.1.1')
c('2.1', '2.1.1-1')
c('2.1', '2.1pl4') c('2.1', '2.1pl4')
c('2.1a0-20040501', '2.1') c('2.1a0-20040501', '2.1')
c('1.1', '02.1') c('1.1', '02.1')
@@ -510,20 +508,8 @@ class ParseTests(TestCase):
c('0.4', '4.0') c('0.4', '4.0')
c('0.0.4', '0.4.0') c('0.0.4', '0.4.0')
c('0pl1', '0.4pl1') c('0pl1', '0.4pl1')
c('2.1.0-rc1','2.1.0')
c('2.1dev','2.1a0') c('2.1dev','2.1a0')
c('2.1.0rc1','2.1.0')
c('2.1.0','2.1.0-rc0')
c('2.1.0','2.1.0-a')
c('2.1.0','2.1.0-alpha')
c('2.1.0','2.1.0-foo')
c('1.0','1.0-1')
c('1.0-1','1.0.1')
c('1.0a','1.0b')
c('1.0dev','1.0rc1')
c('1.0pre','1.0')
c('1.0pre','1.0')
c('1.0a','1.0-a')
c('1.0rc1','1.0-rc1')
torture =""" torture ="""
0.80.1-3 0.80.1-2 0.80.1-1 0.79.9999+0.80.0pre4-1 0.80.1-3 0.80.1-2 0.80.1-1 0.79.9999+0.80.0pre4-1

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