'Check that the preferences make sense: directories exist and are
writable, the install directory is on sys.path, etc.'

def check(self):

    rv = ''
    RWX_OK = ((os.R_OK | os.W_OK) | os.X_OK)
    if (not os.path.exists(self.downloadDir)):
        rv += ('Warning:    Download    directory    "%s"    does    not    exist\n' % self.downloadDir)
    elif (not os.access(self.downloadDir, RWX_OK)):
        rv += ('Warning:    Download    directory    "%s"    is    not    writable    or    not    readable\n' % self.downloadDir)
    if (not os.path.exists(self.buildDir)):
        rv += ('Warning:    Build    directory    "%s"    does    not    exist\n' % self.buildDir)
    elif (not os.access(self.buildDir, RWX_OK)):
        rv += ('Warning:    Build    directory    "%s"    is    not    writable    or    not    readable\n' % self.buildDir)
    if (not os.path.exists(self.installDir)):
        rv += ('Warning:    Install    directory    "%s"    does    not    exist\n' % self.installDir)
    elif (not os.access(self.installDir, RWX_OK)):
        rv += ('Warning:    Install    directory    "%s"    is    not    writable    or    not    readable\n' % self.installDir)
    else:
        installDir = os.path.realpath(self.installDir)
        for p in sys.path:
            try:
                realpath = os.path.realpath(p)
            except:
                pass
            if (installDir == realpath):
                break
        else:
            rv += ('Warning:    Install    directory    "%s"    is    not    on    sys.path\n' % self.installDir)
    return rv
