def load_from_disk(content): fd, path = tempfile.mkstemp() try: os.write(fd, content) os.close(fd) return FetchedPackage.from_deb(path) finally: os.remove(path)
def add_dependency_package(self, packages_spec): """Add a packge that depends on packages_spec to the hardware pack. :param packages_spec: A list of apt package specifications, e.g. ``['foo', 'bar (>= 1.2)']``. """ with PackageMaker() as maker: dep_package_name = 'hwpack-' + self.metadata.name relationships = {} if packages_spec: relationships = {'Depends': ', '.join(packages_spec)} deb_file_path = maker.make_package( dep_package_name, self.metadata.version, relationships, self.metadata.architecture) self.packages.append(FetchedPackage.from_deb(deb_file_path))
def parse_packages_file_content(file_content): packages = [] for para in Packages.iter_paragraphs(StringIO(file_content)): args = {} for key, value in para.iteritems(): key = key.lower() if key == 'md5sum': key = 'md5' elif key == 'package': key = 'name' elif key == 'size': value = int(value) if key in FetchedPackage._equality_attributes: args[key] = value packages.append(FetchedPackage(**args)) return packages
def test_includes_local_debs(self): package_name = "foo" maker = PackageMaker() self.useFixture(ContextManagerFixture(maker)) local_path = maker.make_package(package_name, "1.2", {}) available_package = FetchedPackage.from_deb(local_path) sources_dict = self.sourcesDictForPackages([]) metadata, config = self.makeMetaDataAndConfigFixture([package_name], sources_dict) builder = HardwarePackBuilder(config.filename, metadata.version, [local_path]) builder.build() self.assertThat( "hwpack_%s_%s_%s.tar.gz" % (metadata.name, metadata.version, metadata.architecture), IsHardwarePack(metadata, [available_package], sources_dict, package_spec=package_name))
def test_includes_local_debs(self): package_name = "foo" maker = PackageMaker() self.useFixture(ContextManagerFixture(maker)) local_path = maker.make_package(package_name, "1.2", {}) available_package = FetchedPackage.from_deb(local_path) sources_dict = self.sourcesDictForPackages([]) metadata, config = self.makeMetaDataAndConfigFixture( [package_name], sources_dict) builder = HardwarePackBuilder( config.filename, metadata.version, [local_path]) builder.build() self.assertThat( "hwpack_%s_%s_%s.tar.gz" % ( metadata.name, metadata.version, metadata.architecture), IsHardwarePack( metadata, [available_package], sources_dict, package_spec=package_name))
def test_prefers_local_debs(self): package_name = "foo" maker = PackageMaker() self.useFixture(ContextManagerFixture(maker)) # The point here is that remote_package has a later version than # local_package, but local_package is still preferred. remote_package = DummyFetchedPackage(package_name, "1.1") local_path = maker.make_package(package_name, "1.0", {}) local_package = FetchedPackage.from_deb(local_path) sources_dict = self.sourcesDictForPackages([remote_package]) metadata, config = self.makeMetaDataAndConfigFixture([package_name], sources_dict) builder = HardwarePackBuilder(config.filename, metadata.version, [local_path]) builder.build() self.assertThat( "hwpack_%s_%s_%s.tar.gz" % (metadata.name, metadata.version, metadata.architecture), IsHardwarePack(metadata, [local_package], sources_dict, package_spec=package_name))
def test_prefers_local_debs(self): package_name = "foo" maker = PackageMaker() self.useFixture(ContextManagerFixture(maker)) # The point here is that remote_package has a later version than # local_package, but local_package is still preferred. remote_package = DummyFetchedPackage(package_name, "1.1") local_path = maker.make_package(package_name, "1.0", {}) local_package = FetchedPackage.from_deb(local_path) sources_dict = self.sourcesDictForPackages([remote_package]) metadata, config = self.makeMetaDataAndConfigFixture( [package_name], sources_dict) builder = HardwarePackBuilder( config.filename, metadata.version, [local_path]) builder.build() self.assertThat( "hwpack_%s_%s_%s.tar.gz" % ( metadata.name, metadata.version, metadata.architecture), IsHardwarePack( metadata, [local_package], sources_dict, package_spec=package_name))