def test_get_control_data(self): data = (get_control_data(self.filename)) self.assertEqual( { 'Maintainer': 'Matthieu Gallet <*****@*****.**>', 'Description': 'Utilities for creating mutliple Debian packages.\nDebTools\n========', 'Package': 'python-debtools', 'Section': 'python', 'Depends': 'python (>= 2.7), python (<< 2.8), python-stdeb, python-backports.lzma', 'Priority': 'optional', 'Source': 'debtools', 'Installed-Size': '88', 'Version': '0.3-1', 'Architecture': 'all' }, data )
def test_get_control_data(self): data = (get_control_data(self.filename)) self.assertEqual( { 'Maintainer': 'Matthieu Gallet <*****@*****.**>', 'Description': 'Utilities for creating mutliple Debian packages.\nDebTools\n========', 'Package': 'python-debtools', 'Section': 'python', 'Depends': 'python (>= 2.7), python (<< 2.8), python-stdeb, python-backports.lzma', 'Priority': 'optional', 'Source': 'debtools', 'Installed-Size': '88', 'Version': '0.3-1', 'Architecture': 'all' }, data)
def add(self, file_or_package_name): if file_or_package_name in self.dependencies_by_package: return if not file_or_package_name.endswith(".deb"): proposed_filename = self.find_package(file_or_package_name) if proposed_filename: file_or_package_name = proposed_filename else: previous_content = set(os.listdir(".")) subprocess.check_call(["apt-get", "download", file_or_package_name]) new_content = set(os.listdir(".")) diff = [x for x in (new_content - previous_content) if x.endswith(".deb")] if not diff: raise ValueError("Unable to download %s" % file_or_package_name) elif len(diff) > 1: raise ValueError("Unable to find %s in %s" % (file_or_package_name, diff)) file_or_package_name = diff[0] control_data = get_control_data(file_or_package_name) package_name = control_data["Package"] deps = {} for key in ("Depends", "Pre-Depends"): if key in control_data: deps.update(parse_deps(control_data[key], local_packages=self.local_packages)) self.dependencies_by_package[package_name] = deps if not self.recursive: return for other_package_name, version_constraints in self.dependencies_by_package[package_name].items(): is_ignored = False if other_package_name in self.ignored_packages: ignored_version = self.ignored_packages[other_package_name] is_ignored = True for version_constraint in version_constraints: if not check_version_constraint(ignored_version, version_constraint[0], version_constraint[1]): is_ignored = False if not is_ignored: self.add(other_package_name)
def add(self, file_or_package_name): if file_or_package_name in self.dependencies_by_package: return if not file_or_package_name.endswith('.deb'): proposed_filename = self.find_package(file_or_package_name) if proposed_filename: file_or_package_name = proposed_filename else: previous_content = set(os.listdir('.')) subprocess.check_call(['apt-get', 'download', file_or_package_name]) new_content = set(os.listdir('.')) diff = [x for x in (new_content - previous_content) if x.endswith('.deb')] if not diff: raise ValueError('Unable to download %s' % file_or_package_name) elif len(diff) > 1: raise ValueError('Unable to find %s in %s' % (file_or_package_name, diff)) file_or_package_name = diff[0] control_data = get_control_data(file_or_package_name) package_name = control_data['Package'] deps = {} for key in ('Depends', 'Pre-Depends'): if key in control_data: deps.update(parse_deps(control_data[key], local_packages=self.local_packages)) self.dependencies_by_package[package_name] = deps if not self.recursive: return for other_package_name, version_constraints in list(self.dependencies_by_package[package_name].items()): is_ignored = False if other_package_name in self.ignored_packages: ignored_version = self.ignored_packages[other_package_name] is_ignored = True for version_constraint in version_constraints: if not check_version_constraint(ignored_version, version_constraint[0], version_constraint[1]): is_ignored = False if not is_ignored: self.add(other_package_name)