def __init__(self, version, options): # create directories makedirs(PATH_DISTS) makedirs(PATH_LOG) if options.file is not None: if not (is_archive_file(options.file) and os.path.isfile(options.file)): logger.error('invalid file specified: %s' % options.file) raise RuntimeError self.download_url = path_to_fileurl(options.file) elif options.url is not None: if not is_url(options.url): logger.error('invalid URL specified: %s' % options.url) raise RuntimeError self.download_url = options.url else: if version not in self.supported_versions: logger.warning("Unsupported Python version: `%s`, trying with the following URL anyway: %s" % (version, self.get_version_url(version))) self.download_url = self.get_version_url(version) self.pkg = Package(version, options.type) self.install_dir = os.path.join(PATH_PYTHONS, self.pkg.name) self.build_dir = os.path.join(PATH_BUILD, self.pkg.name) filename = Link(self.download_url).filename self.download_file = os.path.join(PATH_DISTS, filename) self.options = options self.logfile = os.path.join(PATH_LOG, 'build.log') self.patches = [] self.configure_options = []
def __init__(self, version, options): # create directories makedirs(PATH_DISTS) makedirs(PATH_LOG) if options.file is not None: if not (is_archive_file(options.file) and os.path.isfile(options.file)): logger.error('invalid file specified: %s' % options.file) raise RuntimeError self.download_url = path_to_fileurl(options.file) elif options.url is not None: if not is_url(options.url): logger.error('invalid URL specified: %s' % options.url) raise RuntimeError self.download_url = options.url else: if version not in self.supported_versions: logger.error("Unsupported Python version: `%s`, you may install it anyway by supplying the download or file URL" % version) raise UnknownVersionException self.download_url = self.get_version_url(version) self.pkg = Package(version, options.type) self.install_dir = os.path.join(PATH_PYTHONS, self.pkg.name) self.build_dir = os.path.join(PATH_BUILD, self.pkg.name) filename = Link(self.download_url).filename self.download_file = os.path.join(PATH_DISTS, filename) self.options = options self.logfile = os.path.join(PATH_LOG, 'build.log') self.patches = [] self.configure_options = []
def main(): options, args = parser.parse_args(sys.argv[1:]) if options.help and not args: args = ['help'] if not args: args = ['help'] # as default makedirs(PATH_HOME_ETC) load_commands() command = args[0].lower() try: command = command_map[command] except KeyError: parser.error("Unknown command: `%s`" % command) return try: command.run(args[1:]) except KeyboardInterrupt: pass
def __init__(self, version, options): # create directories makedirs(PATH_BUILD) makedirs(PATH_DISTS) makedirs(PATH_LOG) if options.file is not None: if not (is_archive_file(options.file) and os.path.isfile(options.file)): logger.error('invalid file specified: %s' % options.file) raise RuntimeError self.download_url = path_to_fileurl(options.file) elif options.url is not None: if not is_url(options.url): logger.error('invalid URL specified: %s' % options.url) raise RuntimeError self.download_url = options.url else: self.download_url = self.get_version_url(version) if version not in self.supported_versions: logger.warning( "Unsupported Python version: `%s`, trying with the following URL anyway: %s" % (version, self.download_url)) self.pkg = Package(version, options.type) if options.external_path: if not os.path.isabs(options.external_path): options.external_path = os.path.join( os.path.abspath(os.path.curdir), options.external_path) self.install_dir = os.path.join(options.external_path, self.pkg.name) else: self.install_dir = os.path.join(PATH_PYTHONS, self.pkg.name) self.build_dir = os.path.join(PATH_BUILD, self.pkg.name) filename = Link(self.download_url).filename self.download_file = os.path.join(PATH_DISTS, filename) # cleanup if os.path.isdir(self.build_dir): shutil.rmtree(self.build_dir) if os.path.isdir(self.install_dir): if options.reinstall: shutil.rmtree(self.install_dir) else: raise AlreadyInstalledError("You have already installed `%s`" % self.pkg.name) self.options = options self.logfile = os.path.join(PATH_LOG, 'build.log') self.patches = [] self.configure_options = []
def __init__(self, version, options): # create directories makedirs(PATH_BUILD) makedirs(PATH_DISTS) makedirs(PATH_LOG) if options.file is not None: if not (is_archive_file(options.file) and os.path.isfile(options.file)): logger.error('invalid file specified: %s' % options.file) raise RuntimeError self.download_url = path_to_fileurl(options.file) elif options.url is not None: if not is_url(options.url): logger.error('invalid URL specified: %s' % options.url) raise RuntimeError self.download_url = options.url else: self.download_url = self.get_version_url(version) if version not in self.supported_versions: logger.warning("Unsupported Python version: `%s`, trying with the following URL anyway: %s" % (version, self.download_url)) self.pkg = Package(version, options.type) if options.external_path: if not os.path.isabs(options.external_path): options.external_path = os.path.join( os.path.abspath(os.path.curdir), options.external_path) self.install_dir = os.path.join(options.external_path, self.pkg.name) else: self.install_dir = os.path.join(PATH_PYTHONS, self.pkg.name) self.build_dir = os.path.join(PATH_BUILD, self.pkg.name) filename = Link(self.download_url).filename self.download_file = os.path.join(PATH_DISTS, filename) # cleanup if os.path.isdir(self.build_dir): shutil.rmtree(self.build_dir) if os.path.isdir(self.install_dir): if options.reinstall: shutil.rmtree(self.install_dir) else: raise AlreadyInstalledError("You have already installed `%s`" % self.pkg.name) self.options = options self.logfile = os.path.join(PATH_LOG, 'build.log') self.patches = [] self.configure_options = []
def install(installer_root): # create directories makedirs(PATH_PYTHONS) makedirs(PATH_BUILD) makedirs(PATH_DISTS) makedirs(PATH_ETC) makedirs(PATH_BASH_COMPLETION) makedirs(PATH_BIN) makedirs(PATH_LOG) makedirs(PATH_HOME_ETC) # create script directories rm_r(PATH_SCRIPTS) makedirs(PATH_SCRIPTS) makedirs(PATH_SCRIPTS_PYTHONZ) makedirs(PATH_SCRIPTS_PYTHONZ_COMMANDS) makedirs(PATH_SCRIPTS_PYTHONZ_INSTALLER) # copy all .py files for path in glob.glob(os.path.join(installer_root, "*.py")): shutil.copy(path, PATH_SCRIPTS_PYTHONZ) for path in glob.glob(os.path.join(installer_root, "commands", "*.py")): shutil.copy(path, PATH_SCRIPTS_PYTHONZ_COMMANDS) for path in glob.glob(os.path.join(installer_root, "installer", "*.py")): shutil.copy(path, PATH_SCRIPTS_PYTHONZ_INSTALLER) # create patches direcotry DEST_PATCHES = os.path.join(PATH_SCRIPTS_PYTHONZ, 'patches') rm_r(DEST_PATCHES) shutil.copytree(PATH_PATCHES, DEST_PATCHES) # create a main file with open("%s/pythonz_main.py" % PATH_SCRIPTS, "w") as f: f.write("""import pythonz if __name__ == "__main__": pythonz.main() """) # create entry point file with open(PATH_BIN_PYTHONZ, "w") as f: f.write("""#!/usr/bin/env bash python %s/pythonz_main.py "$@" """ % PATH_SCRIPTS) # mode 0755 os.chmod( PATH_BIN_PYTHONZ, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR | stat.S_IRGRP | stat.S_IXGRP | stat.S_IROTH | stat.S_IXOTH) # create a bashrc for pythonz shutil.copy(os.path.join(installer_root, 'etc', 'bashrc'), os.path.join(PATH_ETC, 'bashrc')) # create a fish file for pythonz shutil.copy(os.path.join(installer_root, 'etc', 'pythonz.fish'), os.path.join(PATH_ETC, 'pythonz.fish')) #copy all *.sh files to bash_completion.d directory for path in glob.glob( os.path.join(installer_root, "etc", "bash_completion.d", "*.sh")): shutil.copy(path, PATH_BASH_COMPLETION)
def install(installer_root): # create directories makedirs(PATH_PYTHONS) makedirs(PATH_BUILD) makedirs(PATH_DISTS) makedirs(PATH_ETC) makedirs(PATH_BIN) makedirs(PATH_LOG) makedirs(PATH_HOME_ETC) # create script directories rm_r(PATH_SCRIPTS) makedirs(PATH_SCRIPTS) makedirs(PATH_SCRIPTS_PYTHONZ) makedirs(PATH_SCRIPTS_PYTHONZ_COMMANDS) makedirs(PATH_SCRIPTS_PYTHONZ_INSTALLER) # copy all .py files for path in glob.glob(os.path.join(installer_root,"*.py")): shutil.copy(path, PATH_SCRIPTS_PYTHONZ) for path in glob.glob(os.path.join(installer_root,"commands","*.py")): shutil.copy(path, PATH_SCRIPTS_PYTHONZ_COMMANDS) for path in glob.glob(os.path.join(installer_root,"installer","*.py")): shutil.copy(path, PATH_SCRIPTS_PYTHONZ_INSTALLER) # create patches direcotry rm_r(PATH_PATCHES) shutil.copytree(os.path.join(installer_root,"patches"), PATH_PATCHES) # create a main file with open("%s/pythonz_main.py" % PATH_SCRIPTS, "w") as f: f.write("""import pythonz if __name__ == "__main__": pythonz.main() """) # create entry point file with open(PATH_BIN_PYTHONZ, "w") as f: f.write("""#!/usr/bin/env bash %s %s/pythonz_main.py "$@" """ % (sys.executable, PATH_SCRIPTS)) # mode 0755 os.chmod(PATH_BIN_PYTHONZ, stat.S_IRUSR|stat.S_IWUSR|stat.S_IXUSR|stat.S_IRGRP|stat.S_IXGRP|stat.S_IROTH|stat.S_IXOTH) # create a bashrc for pythonz shutil.copy(os.path.join(installer_root,'etc','bashrc'), os.path.join(PATH_ETC,'bashrc'))
def install(installer_root): # create directories makedirs(PATH_PYTHONS) makedirs(PATH_BUILD) makedirs(PATH_DISTS) makedirs(PATH_ETC) makedirs(PATH_BIN) makedirs(PATH_LOG) makedirs(PATH_HOME_ETC) # create script directories rm_r(PATH_SCRIPTS) makedirs(PATH_SCRIPTS) makedirs(PATH_SCRIPTS_PYTHONZ) makedirs(PATH_SCRIPTS_PYTHONZ_COMMANDS) makedirs(PATH_SCRIPTS_PYTHONZ_INSTALLER) # copy all .py files for path in glob.glob(os.path.join(installer_root, "*.py")): shutil.copy(path, PATH_SCRIPTS_PYTHONZ) for path in glob.glob(os.path.join(installer_root, "commands", "*.py")): shutil.copy(path, PATH_SCRIPTS_PYTHONZ_COMMANDS) for path in glob.glob(os.path.join(installer_root, "installer", "*.py")): shutil.copy(path, PATH_SCRIPTS_PYTHONZ_INSTALLER) # create patches direcotry rm_r(PATH_PATCHES) shutil.copytree(os.path.join(installer_root, "patches"), PATH_PATCHES) # create a main file with open("%s/pythonz_main.py" % PATH_SCRIPTS, "w") as f: f.write("""import pythonz if __name__ == "__main__": pythonz.main() """) # create entry point file with open(PATH_BIN_PYTHONZ, "w") as f: f.write("""#!/usr/bin/env bash %s %s/pythonz_main.py "$@" """ % (sys.executable, PATH_SCRIPTS)) # mode 0755 os.chmod( PATH_BIN_PYTHONZ, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR | stat.S_IRGRP | stat.S_IXGRP | stat.S_IROTH | stat.S_IXOTH) # create a bashrc for pythonz shutil.copy(os.path.join(installer_root, 'etc', 'bashrc'), os.path.join(PATH_ETC, 'bashrc'))
def init_home(): if not os.path.isdir(PATH_HOME_ETC): makedirs(PATH_HOME_ETC)