Add setuptools_hg to be installed
authorymh <ymh.work@gmail.com>
Tue, 21 Jan 2020 18:11:36 +0100
changeset 93 7b6bcc33783f
parent 92 78230b6c7b38
child 94 eb5c99d6ef08
Add setuptools_hg to be installed
.hgignore
sbin/sync/.envrc
sbin/sync/Pipfile
sbin/sync/Pipfile.lock
virtualenv/res/lib/lib_create_env.py
virtualenv/res/src/setuptools_hg-0.4.tar.gz
virtualenv/web/res/res_create_env.py
--- a/.hgignore	Fri Aug 01 01:30:00 2014 +0200
+++ b/.hgignore	Tue Jan 21 18:11:36 2020 +0100
@@ -7,6 +7,7 @@
 ^web/tralalere/\.htaccess$
 ^web/tralalere/config\.py$
 ^sbin/sync/config\.py$
+^sbin/sync/\.venv
 ^web/index/.*$
 ^web/log/.*$
 ^web/static/.*$
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbin/sync/.envrc	Tue Jan 21 18:11:36 2020 +0100
@@ -0,0 +1,2 @@
+export PIPENV_VENV_IN_PROJECT=true
+layout_pipenv
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbin/sync/Pipfile	Tue Jan 21 18:11:36 2020 +0100
@@ -0,0 +1,13 @@
+[[source]]
+url = "https://pypi.org/simple"
+verify_ssl = true
+name = "pypi"
+
+[packages]
+Fabric = "==1.13.1"
+Mercurial = ">4.8"
+
+[dev-packages]
+
+[requires]
+python_version = "2.7"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbin/sync/Pipfile.lock	Tue Jan 21 18:11:36 2020 +0100
@@ -0,0 +1,190 @@
+{
+    "_meta": {
+        "hash": {
+            "sha256": "f44f29aab7e4a04e6a0a2568e562626c8475ec5101ac1b1443a91d096fea56b1"
+        },
+        "pipfile-spec": 6,
+        "requires": {
+            "python_version": "2.7"
+        },
+        "sources": [
+            {
+                "name": "pypi",
+                "url": "https://pypi.org/simple",
+                "verify_ssl": true
+            }
+        ]
+    },
+    "default": {
+        "bcrypt": {
+            "hashes": [
+                "sha256:0258f143f3de96b7c14f762c770f5fc56ccd72f8a1857a451c1cd9a655d9ac89",
+                "sha256:0b0069c752ec14172c5f78208f1863d7ad6755a6fae6fe76ec2c80d13be41e42",
+                "sha256:19a4b72a6ae5bb467fea018b825f0a7d917789bcfe893e53f15c92805d187294",
+                "sha256:5432dd7b34107ae8ed6c10a71b4397f1c853bd39a4d6ffa7e35f40584cffd161",
+                "sha256:6305557019906466fc42dbc53b46da004e72fd7a551c044a827e572c82191752",
+                "sha256:69361315039878c0680be456640f8705d76cb4a3a3fe1e057e0f261b74be4b31",
+                "sha256:6fe49a60b25b584e2f4ef175b29d3a83ba63b3a4df1b4c0605b826668d1b6be5",
+                "sha256:74a015102e877d0ccd02cdeaa18b32aa7273746914a6c5d0456dd442cb65b99c",
+                "sha256:763669a367869786bb4c8fcf731f4175775a5b43f070f50f46f0b59da45375d0",
+                "sha256:8b10acde4e1919d6015e1df86d4c217d3b5b01bb7744c36113ea43d529e1c3de",
+                "sha256:9fe92406c857409b70a38729dbdf6578caf9228de0aef5bc44f859ffe971a39e",
+                "sha256:a190f2a5dbbdbff4b74e3103cef44344bc30e61255beb27310e2aec407766052",
+                "sha256:a595c12c618119255c90deb4b046e1ca3bcfad64667c43d1166f2b04bc72db09",
+                "sha256:c9457fa5c121e94a58d6505cadca8bed1c64444b83b3204928a866ca2e599105",
+                "sha256:cb93f6b2ab0f6853550b74e051d297c27a638719753eb9ff66d1e4072be67133",
+                "sha256:ce4e4f0deb51d38b1611a27f330426154f2980e66582dc5f438aad38b5f24fc1",
+                "sha256:d7bdc26475679dd073ba0ed2766445bb5b20ca4793ca0db32b399dccc6bc84b7",
+                "sha256:ff032765bb8716d9387fd5376d987a937254b0619eff0972779515b5c98820bc"
+            ],
+            "version": "==3.1.7"
+        },
+        "cffi": {
+            "hashes": [
+                "sha256:0b49274afc941c626b605fb59b59c3485c17dc776dc3cc7cc14aca74cc19cc42",
+                "sha256:0e3ea92942cb1168e38c05c1d56b0527ce31f1a370f6117f1d490b8dcd6b3a04",
+                "sha256:135f69aecbf4517d5b3d6429207b2dff49c876be724ac0c8bf8e1ea99df3d7e5",
+                "sha256:19db0cdd6e516f13329cba4903368bff9bb5a9331d3410b1b448daaadc495e54",
+                "sha256:2781e9ad0e9d47173c0093321bb5435a9dfae0ed6a762aabafa13108f5f7b2ba",
+                "sha256:291f7c42e21d72144bb1c1b2e825ec60f46d0a7468f5346841860454c7aa8f57",
+                "sha256:2c5e309ec482556397cb21ede0350c5e82f0eb2621de04b2633588d118da4396",
+                "sha256:2e9c80a8c3344a92cb04661115898a9129c074f7ab82011ef4b612f645939f12",
+                "sha256:32a262e2b90ffcfdd97c7a5e24a6012a43c61f1f5a57789ad80af1d26c6acd97",
+                "sha256:3c9fff570f13480b201e9ab69453108f6d98244a7f495e91b6c654a47486ba43",
+                "sha256:415bdc7ca8c1c634a6d7163d43fb0ea885a07e9618a64bda407e04b04333b7db",
+                "sha256:42194f54c11abc8583417a7cf4eaff544ce0de8187abaf5d29029c91b1725ad3",
+                "sha256:4424e42199e86b21fc4db83bd76909a6fc2a2aefb352cb5414833c030f6ed71b",
+                "sha256:4a43c91840bda5f55249413037b7a9b79c90b1184ed504883b72c4df70778579",
+                "sha256:599a1e8ff057ac530c9ad1778293c665cb81a791421f46922d80a86473c13346",
+                "sha256:5c4fae4e9cdd18c82ba3a134be256e98dc0596af1e7285a3d2602c97dcfa5159",
+                "sha256:5ecfa867dea6fabe2a58f03ac9186ea64da1386af2159196da51c4904e11d652",
+                "sha256:62f2578358d3a92e4ab2d830cd1c2049c9c0d0e6d3c58322993cc341bdeac22e",
+                "sha256:6471a82d5abea994e38d2c2abc77164b4f7fbaaf80261cb98394d5793f11b12a",
+                "sha256:6d4f18483d040e18546108eb13b1dfa1000a089bcf8529e30346116ea6240506",
+                "sha256:71a608532ab3bd26223c8d841dde43f3516aa5d2bf37b50ac410bb5e99053e8f",
+                "sha256:74a1d8c85fb6ff0b30fbfa8ad0ac23cd601a138f7509dc617ebc65ef305bb98d",
+                "sha256:7b93a885bb13073afb0aa73ad82059a4c41f4b7d8eb8368980448b52d4c7dc2c",
+                "sha256:7d4751da932caaec419d514eaa4215eaf14b612cff66398dd51129ac22680b20",
+                "sha256:7f627141a26b551bdebbc4855c1157feeef18241b4b8366ed22a5c7d672ef858",
+                "sha256:8169cf44dd8f9071b2b9248c35fc35e8677451c52f795daa2bb4643f32a540bc",
+                "sha256:aa00d66c0fab27373ae44ae26a66a9e43ff2a678bf63a9c7c1a9a4d61172827a",
+                "sha256:ccb032fda0873254380aa2bfad2582aedc2959186cce61e3a17abc1a55ff89c3",
+                "sha256:d754f39e0d1603b5b24a7f8484b22d2904fa551fe865fd0d4c3332f078d20d4e",
+                "sha256:d75c461e20e29afc0aee7172a0950157c704ff0dd51613506bd7d82b718e7410",
+                "sha256:dcd65317dd15bc0451f3e01c80da2216a31916bdcffd6221ca1202d96584aa25",
+                "sha256:e570d3ab32e2c2861c4ebe6ffcad6a8abf9347432a37608fe1fbd157b3f0036b",
+                "sha256:fd43a88e045cf992ed09fa724b5315b790525f2676883a6ea64e3263bae6549d"
+            ],
+            "version": "==1.13.2"
+        },
+        "cryptography": {
+            "hashes": [
+                "sha256:02079a6addc7b5140ba0825f542c0869ff4df9a69c360e339ecead5baefa843c",
+                "sha256:1df22371fbf2004c6f64e927668734070a8953362cd8370ddd336774d6743595",
+                "sha256:369d2346db5934345787451504853ad9d342d7f721ae82d098083e1f49a582ad",
+                "sha256:3cda1f0ed8747339bbdf71b9f38ca74c7b592f24f65cdb3ab3765e4b02871651",
+                "sha256:44ff04138935882fef7c686878e1c8fd80a723161ad6a98da31e14b7553170c2",
+                "sha256:4b1030728872c59687badcca1e225a9103440e467c17d6d1730ab3d2d64bfeff",
+                "sha256:58363dbd966afb4f89b3b11dfb8ff200058fbc3b947507675c19ceb46104b48d",
+                "sha256:6ec280fb24d27e3d97aa731e16207d58bd8ae94ef6eab97249a2afe4ba643d42",
+                "sha256:7270a6c29199adc1297776937a05b59720e8a782531f1f122f2eb8467f9aab4d",
+                "sha256:73fd30c57fa2d0a1d7a49c561c40c2f79c7d6c374cc7750e9ac7c99176f6428e",
+                "sha256:7f09806ed4fbea8f51585231ba742b58cbcfbfe823ea197d8c89a5e433c7e912",
+                "sha256:90df0cc93e1f8d2fba8365fb59a858f51a11a394d64dbf3ef844f783844cc793",
+                "sha256:971221ed40f058f5662a604bd1ae6e4521d84e6cad0b7b170564cc34169c8f13",
+                "sha256:a518c153a2b5ed6b8cc03f7ae79d5ffad7315ad4569b2d5333a13c38d64bd8d7",
+                "sha256:b0de590a8b0979649ebeef8bb9f54394d3a41f66c5584fff4220901739b6b2f0",
+                "sha256:b43f53f29816ba1db8525f006fa6f49292e9b029554b3eb56a189a70f2a40879",
+                "sha256:d31402aad60ed889c7e57934a03477b572a03af7794fa8fb1780f21ea8f6551f",
+                "sha256:de96157ec73458a7f14e3d26f17f8128c959084931e8997b9e655a39c8fde9f9",
+                "sha256:df6b4dca2e11865e6cfbfb708e800efb18370f5a46fd601d3755bc7f85b3a8a2",
+                "sha256:ecadccc7ba52193963c0475ac9f6fa28ac01e01349a2ca48509667ef41ffd2cf",
+                "sha256:fb81c17e0ebe3358486cd8cc3ad78adbae58af12fc2bf2bc0bb84e8090fa5ce8"
+            ],
+            "version": "==2.8"
+        },
+        "enum34": {
+            "hashes": [
+                "sha256:2d81cbbe0e73112bdfe6ef8576f2238f2ba27dd0d55752a776c41d38b7da2850",
+                "sha256:644837f692e5f550741432dd3f223bbb9852018674981b1664e5dc339387588a",
+                "sha256:6bd0f6ad48ec2aa117d3d141940d484deccda84d4fcd884f5c3d93c23ecd8c79",
+                "sha256:8ad8c4783bf61ded74527bffb48ed9b54166685e4230386a9ed9b1279e2df5b1"
+            ],
+            "markers": "python_version < '3'",
+            "version": "==1.1.6"
+        },
+        "fabric": {
+            "hashes": [
+                "sha256:20bee0f9627efa29a24caf98bce0a39dab367612df79004b40273831a5a63a29",
+                "sha256:a0f18b19e59504ae1fd3102b9d4ec368cf2fc59bfd9f20305de1e2e8018727fc"
+            ],
+            "index": "pypi",
+            "version": "==1.13.1"
+        },
+        "ipaddress": {
+            "hashes": [
+                "sha256:6e0f4a39e66cb5bb9a137b00276a2eff74f93b71dcbdad6f10ff7df9d3557fcc",
+                "sha256:b7f8e0369580bb4a24d5ba1d7cc29660a4a6987763faf1d8a8046830e020e7e2"
+            ],
+            "markers": "python_version < '3'",
+            "version": "==1.0.23"
+        },
+        "mercurial": {
+            "hashes": [
+                "sha256:2c44ac796d2581414533da4e39f21a07206b362263489307da2c424c47ff92f5",
+                "sha256:4c5ea34e2eba25b5d1b5712f1c72df0a64ec47ce206c1279419c87a26fca033b",
+                "sha256:ffc5ff47488c7b5dae6ead3d99f08ef469500d6567592a25311838320106c03b"
+            ],
+            "index": "pypi",
+            "version": "==5.2.2"
+        },
+        "paramiko": {
+            "hashes": [
+                "sha256:920492895db8013f6cc0179293147f830b8c7b21fdfc839b6bad760c27459d9f",
+                "sha256:9c980875fa4d2cb751604664e9a2d0f69096643f5be4db1b99599fe114a97b2f"
+            ],
+            "version": "==2.7.1"
+        },
+        "pycparser": {
+            "hashes": [
+                "sha256:004fb9ccf8c498d005561ec1a35cd608cab60d653d0d8ec6398d1b0b077501d8",
+                "sha256:a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3"
+            ],
+            "version": "==2.19"
+        },
+        "pynacl": {
+            "hashes": [
+                "sha256:05c26f93964373fc0abe332676cb6735f0ecad27711035b9472751faa8521255",
+                "sha256:0c6100edd16fefd1557da078c7a31e7b7d7a52ce39fdca2bec29d4f7b6e7600c",
+                "sha256:0d0a8171a68edf51add1e73d2159c4bc19fc0718e79dec51166e940856c2f28e",
+                "sha256:1c780712b206317a746ace34c209b8c29dbfd841dfbc02aa27f2084dd3db77ae",
+                "sha256:2424c8b9f41aa65bbdbd7a64e73a7450ebb4aa9ddedc6a081e7afcc4c97f7621",
+                "sha256:2d23c04e8d709444220557ae48ed01f3f1086439f12dbf11976e849a4926db56",
+                "sha256:30f36a9c70450c7878053fa1344aca0145fd47d845270b43a7ee9192a051bf39",
+                "sha256:37aa336a317209f1bb099ad177fef0da45be36a2aa664507c5d72015f956c310",
+                "sha256:4943decfc5b905748f0756fdd99d4f9498d7064815c4cf3643820c9028b711d1",
+                "sha256:53126cd91356342dcae7e209f840212a58dcf1177ad52c1d938d428eebc9fee5",
+                "sha256:57ef38a65056e7800859e5ba9e6091053cd06e1038983016effaffe0efcd594a",
+                "sha256:5bd61e9b44c543016ce1f6aef48606280e45f892a928ca7068fba30021e9b786",
+                "sha256:6482d3017a0c0327a49dddc8bd1074cc730d45db2ccb09c3bac1f8f32d1eb61b",
+                "sha256:7d3ce02c0784b7cbcc771a2da6ea51f87e8716004512493a2b69016326301c3b",
+                "sha256:a14e499c0f5955dcc3991f785f3f8e2130ed504fa3a7f44009ff458ad6bdd17f",
+                "sha256:a39f54ccbcd2757d1d63b0ec00a00980c0b382c62865b61a505163943624ab20",
+                "sha256:aabb0c5232910a20eec8563503c153a8e78bbf5459490c49ab31f6adf3f3a415",
+                "sha256:bd4ecb473a96ad0f90c20acba4f0bf0df91a4e03a1f4dd6a4bdc9ca75aa3a715",
+                "sha256:bf459128feb543cfca16a95f8da31e2e65e4c5257d2f3dfa8c0c1031139c9c92",
+                "sha256:e2da3c13307eac601f3de04887624939aca8ee3c9488a0bb0eca4fb9401fc6b1",
+                "sha256:f67814c38162f4deb31f68d590771a29d5ae3b1bd64b75cf232308e5c74777e0"
+            ],
+            "version": "==1.3.0"
+        },
+        "six": {
+            "hashes": [
+                "sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a",
+                "sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c"
+            ],
+            "version": "==1.14.0"
+        }
+    },
+    "develop": {}
+}
--- a/virtualenv/res/lib/lib_create_env.py	Fri Aug 01 01:30:00 2014 +0200
+++ b/virtualenv/res/lib/lib_create_env.py	Tue Jan 21 18:11:36 2020 +0100
@@ -26,6 +26,7 @@
     'MYSQL': { 'setup': 'mysql-python', 'url': 'http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz/download', 'local':"MySQL-python-1.2.3.tar.gz"},
     'OPENID': {'setup':'openid', 'url':'http://pypi.python.org/packages/source/p/python-openid/python-openid-2.2.5.tar.gz', 'local':"python-openid-2.2.5.tar.gz"},
     'DJANGO_OPENID_CONSUMER': {'setup':'django_openid_consumer', 'url':'http://pypi.python.org/packages/source/d/django-openid-consumer/django-openid-consumer-0.1.1.tar.gz', 'local':"django-openid-consumer-0.1.1.tar.gz"},
+    'SETUPTOOLS-HG': {'setup':'setuptools_hg', 'url':'https://bitbucket.org/jezdez/setuptools_hg/get/v0.4.tar.gz', 'local':"setuptools_hg-0.4.tar.gz"},
     'SOCIAL_AUTH': {'setup':'social_auth', 'url':'https://github.com/omab/django-social-auth/tarball/v0.3.10', 'local':"omab-django-social-auth-v0.3.10-modified.tar.gz"},
     'SOUTH': { 'setup': 'South', 'url':'http://www.aeracode.org/releases/south/south-0.7.5.tar.gz', 'local':"south-0.7.5.tar.gz"},
     'DJANGO_GUARDIAN' : { 'setup': 'django-guardian', 'url':'http://pypi.python.org/packages/source/d/django-guardian/django-guardian-1.0.3.tar.gz', 'local':"django-guardian-1.0.3.tar.gz"},
@@ -67,7 +68,7 @@
 
     def get_src_base_path(self, fpath):
         return os.path.abspath(os.path.join(self.src_base, fpath)).replace("\\","/")
-    
+
     def __add_package_def(self, key, setup, url, local):
         self.URLS[key] = {'setup':setup, 'url':url, 'local':self.get_src_base_path(local)}
 
@@ -83,7 +84,7 @@
         logger.notify('Creating directory %s' % dir)
         os.makedirs(dir)
 
-def extend_parser(parser):    
+def extend_parser(parser):
     parser.add_option(
         '--index-url',
         metavar='INDEX_URL',
@@ -108,7 +109,7 @@
 
 
 def install_pylucene(option_str, extra_env, res_source_key, home_dir, lib_dir, tmp_dir, src_dir, res_env, logger, call_subprocess, filter_python_develop):
-    
+
     logger.notify("Get Pylucene from %s " % res_env.URLS['PYLUCENE'][res_source_key])
     pylucene_src = os.path.join(src_dir,"pylucene.tar.gz")
     if res_source_key == 'local':
@@ -116,14 +117,14 @@
     else:
         urllib.urlretrieve(res_env.URLS['PYLUCENE'][res_source_key], pylucene_src)
     tf = tarfile.open(pylucene_src,'r:gz')
-    pylucene_base_path = os.path.join(src_dir,"pylucene") 
+    pylucene_base_path = os.path.join(src_dir,"pylucene")
     logger.notify("Extract Pylucene to %s " % pylucene_base_path)
     tf.extractall(pylucene_base_path)
     tf.close()
-    
+
     pylucene_src_path = os.path.join(pylucene_base_path, os.listdir(pylucene_base_path)[0])
     jcc_src_path = os.path.abspath(os.path.join(pylucene_src_path,"jcc"))
-    
+
     #install jcc
 
     #patch for linux
@@ -154,7 +155,7 @@
                     show_stdout=True,
                     extra_env={'JCC_JDK' : '/usr/lib/jvm/java-7-openjdk-i386/'})
     #install pylucene
-    
+
     logger.notify("Install pylucene")
     #modify makefile
     makefile_path = os.path.join(pylucene_src_path,"Makefile")
@@ -166,7 +167,7 @@
     destination.write("PREFIX_PYTHON="+os.path.abspath(home_dir)+"\n")
     destination.write("ANT=ant\n")
     destination.write("PYTHON=$(PREFIX_PYTHON)/bin/python\n")
-    
+
     if system_str == "Darwin":
         if sys.version_info >= (2,6):
             destination.write("JCC=$(PYTHON) -m jcc.__main__ --shared --arch x86_64 --arch i386\n")
@@ -201,7 +202,7 @@
                     filter_stdout=filter_python_develop,
                     show_stdout=True,
                     extra_env={'JCC_JDK' : '/usr/lib/jvm/java-7-openjdk-i386/'})
-    
+
 
 def install_psycopg2(option_str, extra_env, res_source_key, home_dir, lib_dir, tmp_dir, src_dir, res_env, logger, call_subprocess, filter_python_develop):
     psycopg2_src = os.path.join(src_dir,"psycopg2.zip")
@@ -211,36 +212,36 @@
     psycopg2_base_path = os.path.join(src_dir,"psycopg2")
     zf.extractall(psycopg2_base_path)
     zf.close()
-    
+
     psycopg2_src_path = os.path.join(psycopg2_base_path, os.listdir(psycopg2_base_path)[0])
     shutil.copytree(os.path.join(psycopg2_src_path, 'psycopg2'), os.path.abspath(os.path.join(home_dir, 'Lib/site-packages', 'psycopg2')))
     shutil.copy(os.path.join(psycopg2_src_path, 'psycopg2-2.0.14-py2.6.egg-info'), os.path.abspath(os.path.join(home_dir, 'Lib/site-packages', 'site-packages')))
 
 def gen_install_comp_lib(lib_name, lib_key, configure_options=[]):
-    
+
     def install_lib(option_str, extra_env, res_source_key, home_dir, lib_dir, tmp_dir, src_dir, res_env, logger, call_subprocess, filter_python_develop):
         lib_src = os.path.join(src_dir,lib_name+".tar.gz")
         shutil.copy(res_env.URLS[lib_key][res_source_key], lib_src)
         tf = tarfile.open(lib_src,'r:gz')
-        lib_base_path = os.path.join(src_dir, lib_name) 
+        lib_base_path = os.path.join(src_dir, lib_name)
         logger.notify("Extract %s to %s " % (lib_name,lib_base_path))
         tf.extractall(lib_base_path)
         tf.close()
-        
+
         lib_src_path = os.path.join(lib_base_path, os.listdir(lib_base_path)[0])
-    
+
         logger.notify("libjpeg configure")
         call_subprocess(['configure', '--prefix='+os.path.abspath(home_dir)] + configure_options,
                         cwd=os.path.abspath(lib_src_path),
                         filter_stdout=filter_python_develop,
                         show_stdout=True)
-        
+
         logger.notify("libjpeg make")
         call_subprocess(['make'],
                         cwd=os.path.abspath(lib_src_path),
                         filter_stdout=filter_python_develop,
                         show_stdout=True)
-    
+
         logger.notify("zlib make install")
         call_subprocess(['make', 'install'],
                         cwd=os.path.abspath(lib_src_path),
@@ -252,15 +253,15 @@
 install_zlib = gen_install_comp_lib("zlib", "ZLIB", [])
 
 
-    
-    
+
+
 
 def lib_generate_install_methods(path_locations, src_base, Logger, call_subprocess, normal_installs, urls=None):
-    
+
     all_urls = URLS.copy()
     if urls is not None:
         all_urls.update(urls)
-        
+
     res_env = ResourcesEnv(src_base, all_urls, normal_installs)
 
     def filter_python_develop(line):
@@ -272,8 +273,8 @@
             if line.startswith(prefix):
                 return Logger.DEBUG
         return Logger.NOTIFY
-    
-    
+
+
     def normal_install(key, method, option_str, extra_env, res_source_key, home_dir, tmp_dir, res_env, logger, call_subprocess):
         logger.notify("Install %s from %s with %s" % (key,res_env.URLS[key][res_source_key],method))
         if method == 'pip':
@@ -299,17 +300,17 @@
                     cwd=os.path.abspath(tmp_dir),
                     filter_stdout=filter_python_develop,
                     show_stdout=True,
-                    extra_env=extra_env)            
- 
-    
+                    extra_env=extra_env)
+
+
     def after_install(options, home_dir):
-        
+
         global logger
-        
+
         verbosity = options.verbose - options.quiet
         logger = Logger([(Logger.level_for_integer(2-verbosity), sys.stdout)])
 
-        
+
         home_dir, lib_dir, inc_dir, bin_dir = path_locations(home_dir)
         base_dir = os.path.dirname(home_dir)
         src_dir = os.path.join(home_dir, 'src')
@@ -317,31 +318,31 @@
         ensure_dir(src_dir, logger)
         ensure_dir(tmp_dir, logger)
         system_str = platform.system()
-        
+
         res_source_key = options.type_install
-        
+
         ignore_packages = []
-        
+
         if options.ignore_packages :
             ignore_packages = options.ignore_packages.split(",")
-        
+
         logger.indent += 2
-        try:    
+        try:
             for key, method, option_str, extra_env in res_env.NORMAL_INSTALL:
                 if key not in ignore_packages:
                     if callable(method):
                         method(option_str, extra_env, res_source_key, home_dir, lib_dir, tmp_dir, src_dir, res_env, logger, call_subprocess, filter_python_develop)
                     else:
                         normal_install(key, method, option_str, extra_env, res_source_key, home_dir, tmp_dir, res_env, logger, call_subprocess)
-                            
+
             logger.notify("Clear source dir")
             shutil.rmtree(src_dir)
-    
+
         finally:
             logger.indent -= 2
         script_dir = join(base_dir, bin_dir)
         logger.notify('Run "%s Package" to install new packages that provide builds'
                       % join(script_dir, 'easy_install'))
-    
+
 
     return adjust_options, extend_parser, after_install
Binary file virtualenv/res/src/setuptools_hg-0.4.tar.gz has changed
--- a/virtualenv/web/res/res_create_env.py	Fri Aug 01 01:30:00 2014 +0200
+++ b/virtualenv/web/res/res_create_env.py	Tue Jan 21 18:11:36 2020 +0100
@@ -23,7 +23,7 @@
 
 INSTALLS.extend([ #(key,method, option_str, dict_extra_env)
     ('SOUTH', 'pip', None, None),
-    ('PIL', 'easy_install', None, None), 
+    ('PIL', 'easy_install', None, None),
     ('DJANGO','pip', None, None),
     ('DJANGO-EXTENSIONS', 'pip', None, None),
     ('DJANGO-REGISTRATION', 'easy_install', '-Z', None),
@@ -31,6 +31,7 @@
     ('DJANGO-PISTON', 'easy_install', None, None),
     ('HTTPLIB2', 'pip', None, None),
     ('OAUTH2', 'easy_install', None, None),
+    ('SETUPTOOLS-HG', 'pip', None, None),
     ('DJANGO-OAUTH-PLUS', 'pip', None, None),
     ('OPENID', 'pip', None, None),
     ('DJANGO_OPENID_CONSUMER', 'pip', None, None),
@@ -50,5 +51,5 @@
     ])
 
 
-def generate_install_methods(path_locations, src_base, Logger, call_subprocess):    
+def generate_install_methods(path_locations, src_base, Logger, call_subprocess):
     return lib_generate_install_methods(path_locations, src_base, Logger, call_subprocess, INSTALLS)