示例#1
0
 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))
示例#3
0
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))