+#!/bin/false # You must specify a python interpreter.
+
+import errno, sys, os, subprocess
+
+where = os.path.realpath(sys.argv[0])
+base = os.path.dirname(os.path.dirname(where))
+
+whoami = '''\
+I am a "bin/tahoe" executable who is only for the convenience of running
+Tahoe from its source distribution -- I work only when invoked as the "tahoe"
+script that lives in the "bin/" subdirectory of a Tahoe source code
+distribution, and only if you have already run "make".
+'''
+
+# look for Tahoe.home .
+homemarker = os.path.join(base, "Tahoe.home")
+if not os.path.exists(homemarker):
+ print whoami
+ print '''\
+I just tried to run and found that I am not living in such a directory, so I
+am stopping now. To run Tahoe after it has been is installed, please execute
+my brother, also named "tahoe", who gets installed into the appropriate place
+for executables when you run "make install" (perhaps as /usr/bin/tahoe).
+'''
+ sys.exit(1)
+
+# we've found our home. Put the tahoe support/lib etc. in our PYTHONPATH.
+if sys.platform == "win32":
+ supportdir = os.path.join(base, "support", "Lib", "site-packages")
+else:
+ supportdir = os.path.join(base, "support",
+ "lib",
+ "python%d.%d" % sys.version_info[:2],
+ "site-packages")
+
+# update PYTHONPATH so that child processes (like twistd) will use this too
+pp = os.environ.get("PYTHONPATH")
+if pp:
+ pp = os.pathsep.join([supportdir] + pp.split(os.pathsep))
+else:
+ pp = supportdir
+os.environ["PYTHONPATH"] = pp
+
+# find the location of the tahoe executable.
+bin_dir = "bin"
+if sys.platform == "win32":
+ bin_dir = "Scripts"
+executable = os.path.join(base, "support", bin_dir, "tahoe")
+
+try:
+ res = subprocess.call([executable] + sys.argv[1:], env=os.environ)
+except (OSError, IOError), le:
+ if le.args[0] == errno.ENOENT:
+ print whoami
+ print '''\
+I just tried to run and could not find my brother, named
+"../support/bin/tahoe". To run Tahoe when it is installed, please execute my
+brother, also named "tahoe", who gets installed into the appropriate place
+for executables when you run "make install" (perhaps as /usr/bin/tahoe).
+'''
+ raise
+except Exception, le:
+ print whoami
+ print '''\
+I just tried to invoke my brother, named "../support/bin/tahoe" and got an
+exception.
+'''
+ raise
+else:
+ sys.exit(res)