From 826193ef5a17d06134a0085b143b07b2bca1de5e Mon Sep 17 00:00:00 2001 From: Hugo Rodger-Brown <hugo@rodger-brown.com> Date: Wed, 18 Jun 2014 18:09:25 +0100 Subject: [PATCH] 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 --- bin/steps/pylibmc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/steps/pylibmc b/bin/steps/pylibmc index 4f0c2331..b6c0225d 100755 --- a/bin/steps/pylibmc +++ b/bin/steps/pylibmc @@ -16,7 +16,7 @@ VENDORED_MEMCACHED="http://cl.ly/0a191R3K160t1w1P0N25/vendor-libmemcached.tar.gz source $BIN_DIR/utils # If pylibmc exists within requirements, use vendored libmemcached. -if (grep -Eiq "^\s*pylibmc" requirements.txt) then +if (grep -Eiq "\s*pylibmc" requirements.txt) then echo "-----> Noticed pylibmc. Bootstrapping libmemcached." cd .heroku -- GitLab