def store_pdbs_in_directory(pdb_path, store_path, product, version): """Recursively adds all of the pdb files in a provided directory to the symbols store.""" sym_store = symstore.Store(store_path) transaction = sym_store.new_transaction(product, version) num_files_stored = 0 for root, subdirs, files in os.walk(pdb_path): for file in files: file_path = os.path.join(root, file) # Rename the python.pdb to python##.pdb. if "core_pdb" in root and file == "python.pdb": major, minor, *_ = version.split(".") new_file_path = file_path.replace("python.pdb", "python" + major + minor + ".pdb") os.rename(file_path, new_file_path) file_path = new_file_path # Add PDB files is_compression_supported = symstore.cab.compress is not None if file_path.endswith(".pdb"): entry = transaction.new_entry(file_path, compress=is_compression_supported) transaction.add_entry(entry) num_files_stored += 1 if num_files_stored > 0: sym_store.commit(transaction)
def main(): args = parse_args() sym_store = symstore.Store(args.store_path) if args.delete is not None: delete_action(sym_store, args.delete) return # otherwise this is an 'add' action add_action(sym_store, args.files, args.product_name, args.product_version, args.compress)
def setUp(self): """ set-up a new symstore with one compressed transaction """ empty_dir = path.join(tempfile.mkdtemp(), "empty") self.symstore = symstore.Store(empty_dir) transaction = self.symstore.new_transaction("prod", "0.0.0") transaction.add_file(path.join(util.SYMFILES_DIR, "dummylib.pdb"), compress=True) self.symstore.commit(transaction)
def assertSymstoreDir(self, expected_dir_zip): expected_store = ZipSymstore(path.join(SYMFILES_DIR, expected_dir_zip)) generated_store = symstore.Store(self.symstore_path) self._assert_transactions(expected_store.transactions, generated_store.transactions, generated_store.modify_timestamp) self._assert_history(expected_store.history, generated_store.history, generated_store.modify_timestamp) self._assert_modify_timestamp(generated_store.modify_timestamp) self._assert_next_transaction_id(expected_store, generated_store)
def main(): args = parse_args() sym_store = symstore.Store(args.store_path) pp_args = "\n ".join([": ".join([k, str(getattr(args, k)) if not isinstance(getattr(args, k), (list)) else ", ".join(getattr(args, k))]) for k in vars(args)]) log_level = logging.INFO if args.silent else logging.DEBUG log_file = args.save_log if args.save_log else None message = args.message if args.message else "" update_logging(log, log_level=log_level, log_file=log_file) log.debug("Started symstore ops via CLI.") log.debug("Parameters: %s " % pp_args) try: # error-out if no compression check_compression_support(args.compress) # create new add transaction, add all specified files transaction = sym_store.new_transaction(args.product_name, args.product_version, message) for target_item in args.target_files: if os.path.isdir(target_item): for item_target_file in parse_directory(target_item, ".*pdb$|.*exe$"): transaction.add_file(item_target_file, args.compress) elif os.path.isfile(target_item): transaction.add_file(target_item, args.compress) else: transaction.add_file(target_item, args.compress) # commit the transaction to the store sym_store.commit(transaction) if args.index: sym_store.index_data(transaction) except symstore.UnknownFileExtension as e: unknown_ext_err(file, e.file_extension) except symstore.FileFormatError as e: err_exit("%s: invalid %s file: %s" % (file, e.format_name, e)) except CompressionNotSupported: err_exit("gcab module not available, compression not supported")
def main(): args = parse_args() sym_store = symstore.Store(args.store_path) try: # error-out if no compression check_compression_support(args.compress) # create new add transaction, add all specified files transaction = sym_store.new_transaction(args.product_name, args.product_version) for file in args.files: transaction.add_file(file, args.compress) # commit the transaction to the store sym_store.commit(transaction) except symstore.UnknownFileExtension as e: unknown_ext_err(file, e.file_extension) except symstore.FileFormatError as e: err_exit("%s: invalid %s file: %s" % (file, e.format_name, e)) except CompressionNotSupported: err_exit("gcab module not available, compression not supported")
def setUp(self): empty_dir = path.join(tempfile.mkdtemp(), "empty") self.symstore = symstore.Store(empty_dir)