def __getPluginFilesList(self, src_dir): if not os.path.exists(src_dir + "/plugin.spec"): log.warn("%s/plugin.spec file doesn't exists." % src_dir) return [] cwd = os.getcwd() os.chdir(src_dir) plugin_spec = ConfigBase("plugin.spec") products = plugin_spec.keys("products") BITNESS = utils.getBitness() ENDIAN = utils.getEndian() PPDDIR = sys_conf.get('dirs', 'ppd') DRVDIR = sys_conf.get('dirs', 'drv') HOMEDIR = sys_conf.get('dirs', 'home') DOCDIR = sys_conf.get('dirs', 'doc') CUPSBACKENDDIR = sys_conf.get('dirs', 'cupsbackend') CUPSFILTERDIR = sys_conf.get('dirs', 'cupsfilter') RULESDIR = '/etc/udev/rules.d' BIN = sys_conf.get('dirs', 'bin') # Copying plugin.spec file to home dir. if src_dir != HOMEDIR: shutil.copyfile(src_dir + "/plugin.spec", HOMEDIR + "/plugin.spec") os.chmod(HOMEDIR + "/plugin.spec", 0o644) processor = utils.getProcessor() if processor == 'power_machintosh': ARCH = 'ppc' elif (processor == 'armv6l' or processor == 'armv7l' or processor == 'aarch64' or processor == 'aarch32'): ARCH = 'arm%d' % BITNESS else: ARCH = 'x86_%d' % BITNESS if BITNESS == 64: SANELIBDIR = '/usr/lib64/sane' LIBDIR = '/usr/lib64' else: SANELIBDIR = '/usr/lib/sane' LIBDIR = '/usr/lib' copies = [] for PRODUCT in products: MODEL = PRODUCT.replace('hp-', '').replace('hp_', '') for s in plugin_spec.get("products", PRODUCT).split(','): if not plugin_spec.has_section(s): log.error("Missing section [%s]" % s) os.chdir(cwd) return [] src = plugin_spec.get(s, 'src', '') trg = plugin_spec.get(s, 'trg', '') link = plugin_spec.get(s, 'link', '') if not src: log.error("Missing 'src=' value in section [%s]" % s) os.chdir(cwd) return [] if not trg: log.error("Missing 'trg=' value in section [%s]" % s) os.chdir(cwd) return [] src = os.path.basename(utils.cat(src)) trg = utils.cat(trg) if link: link = utils.cat(link) copies.append((src, trg, link)) copies = utils.uniqueList(copies) copies.sort() os.chdir(cwd) return copies
def __getPluginFilesList(self, src_dir): if not os.path.exists(src_dir+"/plugin.spec"): log.warn("%s/plugin.spec file doesn't exists."%src_dir) return [] cwd = os.getcwd() os.chdir(src_dir) plugin_spec = ConfigBase("plugin.spec") products = plugin_spec.keys("products") BITNESS = utils.getBitness() ENDIAN = utils.getEndian() PPDDIR = sys_conf.get('dirs', 'ppd') DRVDIR = sys_conf.get('dirs', 'drv') HOMEDIR = sys_conf.get('dirs', 'home') DOCDIR = sys_conf.get('dirs', 'doc') CUPSBACKENDDIR = sys_conf.get('dirs', 'cupsbackend') CUPSFILTERDIR = sys_conf.get('dirs', 'cupsfilter') RULESDIR = '/etc/udev/rules.d' BIN = sys_conf.get('dirs', 'bin') # Copying plugin.spec file to home dir. if src_dir != HOMEDIR: shutil.copyfile(src_dir+"/plugin.spec", HOMEDIR+"/plugin.spec") os.chmod(HOMEDIR+"/plugin.spec",0644) processor = utils.getProcessor() if processor == 'power_machintosh': ARCH = 'ppc' else: ARCH = 'x86_%d' % BITNESS if BITNESS == 64: SANELIBDIR = '/usr/lib64/sane' LIBDIR = '/usr/lib64' else: SANELIBDIR = '/usr/lib/sane' LIBDIR = '/usr/lib' copies = [] for PRODUCT in products: MODEL = PRODUCT.replace('hp-', '').replace('hp_', '') for s in plugin_spec.get("products", PRODUCT).split(','): if not plugin_spec.has_section(s): log.error("Missing section [%s]" % s) os.chdir(cwd) return [] src = plugin_spec.get(s, 'src', '') trg = plugin_spec.get(s, 'trg', '') link = plugin_spec.get(s, 'link', '') if not src: log.error("Missing 'src=' value in section [%s]" % s) os.chdir(cwd) return [] if not trg: log.error("Missing 'trg=' value in section [%s]" % s) os.chdir(cwd) return [] src = os.path.basename(utils.cat(src)) trg = utils.cat(trg) if link: link = utils.cat(link) copies.append((src, trg, link)) copies = utils.uniqueList(copies) copies.sort() os.chdir(cwd) return copies
def copyPluginFiles(src_dir): os.chdir(src_dir) plugin_spec = ConfigBase("plugin.spec") products = plugin_spec.keys("products") BITNESS = utils.getBitness() ENDIAN = utils.getEndian() PPDDIR = sys_conf.get('dirs', 'ppd') DRVDIR = sys_conf.get('dirs', 'drv') HOMEDIR = sys_conf.get('dirs', 'home') DOCDIR = sys_conf.get('dirs', 'doc') CUPSBACKENDDIR = sys_conf.get('dirs', 'cupsbackend') CUPSFILTERDIR = sys_conf.get('dirs', 'cupsfilter') RULESDIR = '/etc/udev/rules.d' processor = utils.getProcessor() if processor == 'power_machintosh': ARCH = 'ppc' else: ARCH = 'x86_%d' % BITNESS if BITNESS == 64: SANELIBDIR = '/usr/lib64/sane' LIBDIR = '/usr/lib64' else: SANELIBDIR = '/usr/lib/sane' LIBDIR = '/usr/lib' copies = [] for PRODUCT in products: MODEL = PRODUCT.replace('hp-', '').replace('hp_', '') UDEV_SYSFS_RULES=sys_conf.get('configure','udev_sysfs_rules','no') for s in plugin_spec.get("products", PRODUCT).split(','): if not plugin_spec.has_section(s): log.error("Missing section [%s]" % s) return False src = plugin_spec.get(s, 'src', '') trg = plugin_spec.get(s, 'trg', '') link = plugin_spec.get(s, 'link', '') # In Cent os 5.x distro's SYSFS attribute will be used. and Other distro's uses ATTR/ATTRS attribute in rules. # Following condition to check this... if UDEV_SYSFS_RULES == 'no' and 'sysfs' in src: continue if UDEV_SYSFS_RULES == 'yes' and 'sysfs' not in src: continue if not src: log.error("Missing 'src=' value in section [%s]" % s) return False if not trg: log.error("Missing 'trg=' value in section [%s]" % s) return False src = os.path.basename(utils.cat(src)) trg = utils.cat(trg) if link: link = utils.cat(link) copies.append((src, trg, link)) copies = utils.uniqueList(copies) copies.sort() os.umask(0) for src, trg, link in copies: if not os.path.exists(src): log.debug("Source file %s does not exist. Skipping." % src) continue if os.path.exists(trg): log.debug("Target file %s already exists. Replacing." % trg) os.remove(trg) trg_dir = os.path.dirname(trg) if not os.path.exists(trg_dir): log.debug("Target directory %s does not exist. Creating." % trg_dir) os.makedirs(trg_dir, 0755) if not os.path.isdir(trg_dir): log.error("Target directory %s exists but is not a directory. Skipping." % trg_dir) continue try: shutil.copyfile(src, trg) except (IOError, OSError), e: log.error("File copy failed: %s" % e.strerror) continue else: if not os.path.exists(trg): log.error("Target file %s does not exist. File copy failed." % trg) continue else: os.chmod(trg, stat.S_IRWXU | stat.S_IRGRP | stat.S_IXGRP | stat.S_IROTH) if link: if os.path.exists(link): log.debug("Symlink already exists. Replacing.") os.remove(link) log.debug("Creating symlink %s (link) to file %s (target)..." % (link, trg)) try: os.symlink(trg, link) except (OSError, IOError), e: log.debug("Unable to create symlink: %s" % e.strerror) pass