]> jfr.im git - irc/quakenet/qwebirc.git/blobdiff - bin/dependencies_b.py
fix dependency ordering for zope interface (twisted now has its own dependency checke...
[irc/quakenet/qwebirc.git] / bin / dependencies_b.py
index bd41f20a53e7d53d276b7df530e2303e763de831..bada44999fb0cc5e550d5eac3082e0740bed6460 100644 (file)
@@ -1,8 +1,9 @@
-# this is seperate to allow us to use python 2.5 syntax without\r
+# this is separate to allow us to use python 2.5 syntax without\r
 # the dependency checker breaking on earlier versions.\r
 \r
 import sys\r
 import subprocess\r
+import os\r
 \r
 def fail(*message):\r
   print >>sys.stderr, "\n".join(message)\r
@@ -13,9 +14,11 @@ def warn(*message):
 \r
 def check_dependencies():\r
   i = 0\r
-  \r
+\r
+  check_zope()\r
   check_twisted()\r
   check_win32()\r
+  i+=check_json()\r
   i+=check_java()\r
   i+=check_hg()\r
   \r
@@ -43,7 +46,7 @@ def check_java():
     warn(specific, "java is not required, but allows qwebirc to compress output,", "making it faster to download.", "you can get java at http://www.java.com/")\r
     \r
   try:\r
-    p = subprocess.Popen(["java", "-version"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)\r
+    p = subprocess.Popen(["java", "-version"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=os.name == "nt")\r
     p.communicate()\r
     if p.wait() != 0:\r
       java_warn("something went wrong looking for java.")\r
@@ -59,7 +62,7 @@ def check_hg():
     warn(specific, "mercurial (hg) is not required, but allows qwebirc to save bandwidth by versioning.", "you can get hg at http://www.selenic.com/mercurial/")\r
     \r
   try:\r
-    p = subprocess.Popen(["hg", "id"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)\r
+    p = subprocess.Popen(["hg", "id"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=os.name == "nt")\r
     p.communicate()\r
     if p.wait() != 0:\r
       hg_warn("something went wrong looking for mercurial.")\r
@@ -70,6 +73,18 @@ def check_hg():
     \r
   return 0\r
   \r
+def check_zope():\r
+  try:\r
+    from zope.interface import Interface\r
+  except ImportError:\r
+    if sys.platform.startswith("win"):\r
+      fail("qwebirc requires zope interface",\r
+           "see pypi: http://pypi.python.org/pypi/zope.interface")\r
+    else:\r
+      fail("qwebirc requires zope interface.",\r
+           "this should normally come with twisted, but can be downloaded",\r
+           "from pypi: http://pypi.python.org/pypi/zope.interface")\r
+           \r
 def check_twisted():\r
   try:\r
     import twisted\r
@@ -99,7 +114,16 @@ def check_twisted():
     import twisted.words\r
   except ImportError:\r
     twisted_fail("words")\r
-\r
+    \r
+def check_json():\r
+  import qwebirc.util.qjson\r
+  if qwebirc.util.qjson.slow:\r
+    warn("simplejson module with C speedups not installed.",\r
+         "using embedded module (slower); consider installing simplejson from:",\r
+         "http://pypi.python.org/pypi/simplejson/")\r
+    return 1\r
+  return 0\r
+  \r
 if __name__ == "__main__":\r
   import dependencies\r
   dependencies.check_dependencies()\r