#!/usr/bin/env python import errno, sys, os where = os.path.realpath(sys.argv[0]) base = os.path.dirname(os.path.dirname(where)) # look for Tahoe.home . homemarker = os.path.join(base, "Tahoe.home") if not os.path.exists(homemarker): print "I am a \"bin/tahoe\" executable who is only for the convenience of running Tahoe from its source distribution -- I work only when run from the \"bin/\" subdirectory of a Tahoe source code distribution, and only if you have already run \"make\". I just tried to run and found that I am not in the bin/ subdirectory of a Tahoe source distribution, so I am stopping now. 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\"." 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 executable = os.path.join(base, "support", "bin", "tahoe") try: os.execve(executable, [executable] + sys.argv[1:], os.environ) except (OSError, IOError), le: if le.args[0] == errno.ENOENT: print "I am a \"bin/tahoe\" executable who is only for the convenience of running Tahoe from its source distribution -- I work only when run from the \"bin/\" subdirectory of a Tahoe source code distribution, and only if you have already run \"make\". 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\"." raise except Exception, le: print "I am a \"bin/tahoe\" executable who is only for the convenience of running Tahoe from its source distribution -- I work only when run from the \"bin/\" subdirectory of a Tahoe source code distribution, and only if you have already run \"make\". I just tried to invoke my brother, named \"../support/bin/tahoe\" and got an exception." raise