示例#1
0
文件: list.py 项目: GStreamer/cerbero
 def run(self, config, args):
     store = PackagesStore(config)
     packages = store.get_packages_list()
     if len(packages) == 0:
         m.message(_("No packages found"))
     for p in packages:
         m.message("%s - %s" % (p.name, p.version))
示例#2
0
文件: list.py 项目: z-ming/cerbero
 def run(self, config, args):
     store = PackagesStore(config)
     packages = store.get_packages_list()
     if len(packages) == 0:
         m.message(_("No packages found"))
     for p in packages:
         m.message("%s - %s" % (p.name, p.version))
示例#3
0
    def run(self, config, args):
        store = PackagesStore(config)

        allfiles = [p.all_files_list() for p in store.get_packages_list() if\
                    isinstance(p, Package)]
        allfiles = list(itertools.chain(*allfiles))

        self.find_duplicates(allfiles)
        self.find_orphan_files(allfiles, config.prefix, args.exclude)
示例#4
0
    def run(self, config, args):
        store = PackagesStore(config)

        allfiles = [p.all_files_list() for p in store.get_packages_list() if\
                    isinstance(p, Package)]
        allfiles = list(itertools.chain(*allfiles))

        self.find_duplicates(allfiles)
        self.find_orphan_files(allfiles, config.prefix, args.exclude)
class PackageTest(unittest.TestCase):
    def setUp(self):
        self.config = common.DummyConfig()
        self.config.packages_dir = '/test'
        self.config.target_platform = Platform.LINUX
        self.store = PackagesStore(self.config, False)

    def testAddPackage(self):
        package = common.Package1(self.config, None, None)
        self.assertEqual(len(self.store._packages), 0)
        self.store.add_package(package)
        self.assertEqual(len(self.store._packages), 1)
        self.assertEqual(package, self.store._packages[package.name])

    def testGetPackage(self):
        package = common.Package1(self.config, None, None)
        self.store.add_package(package)
        self.assertEqual(package, self.store.get_package(package.name))

    def testPackageNotFound(self):
        self.assertRaises(PackageNotFoundError, self.store.get_package,
                          'unknown')

    def testPackagesList(self):
        package = common.Package1(self.config, None, None)
        metapackage = common.MetaPackage(self.config, None)
        self.store.add_package(package)
        self.store.add_package(metapackage)
        l = sorted([package, metapackage], key=lambda x: x.name)
        self.assertEqual(l, self.store.get_packages_list())

    def testPackageDeps(self):
        package = common.Package1(self.config, None, None)
        package2 = common.Package2(self.config, None, None)
        self.store.add_package(package)
        self.store.add_package(package2)
        self.assertEqual(
            package.deps,
            [x.name for x in self.store.get_package_deps(package.name)])

    def testMetaPackageDeps(self):
        metapackage = common.MetaPackage(self.config, None)
        self.store.add_package(metapackage)
        # the metapackage depends on package that are not yet in the store
        self.assertRaises(PackageNotFoundError, self.store.get_package_deps,
                          metapackage.name)
        for klass in [
                common.Package1, common.Package2, common.Package3,
                common.Package4
        ]:
            p = klass(self.config, None, None)
            self.store.add_package(p)
        for klass in [common.MetaPackage]:
            p = klass(self.config, None)
            self.store.add_package(p)
        deps = [
            'gstreamer-test-bindings', 'gstreamer-test1', 'gstreamer-test2',
            'gstreamer-test3'
        ]
        res = [x.name for x in self.store.get_package_deps(metapackage.name)]
        self.assertEqual(sorted(deps), sorted(res))

    def testLoadPackageFromFile(self):
        package_file = tempfile.NamedTemporaryFile()
        package_file.write(PACKAGE)
        package_file.flush()
        p = self.store._load_package_from_file(package_file.name)
        self.assertIsInstance(p, Package)
        self.assertEqual('test-package', p.name)

    def testLoadMetaPackageFromFile(self):
        for x, t in [(SDKPACKAGE, SDKPackage),
                     (INSTALLERPACKAGE, InstallerPackage)]:
            package_file = tempfile.NamedTemporaryFile()
            package_file.write(x)
            package_file.flush()
            p = self.store._load_package_from_file(package_file.name)
            print(p, type(p))
            self.assertIsInstance(p, t)
            self.assertEqual('test-package', p.name)

    def testImports(self):
        package_file = tempfile.NamedTemporaryFile()
        package_file.write(PACKAGE)
        package_file.flush()
        p = self.store._load_package_from_file(package_file.name)
        self.assertIsInstance(p, Package)
        try:
            p.test_imports()
        except ImportError as e:
            self.fail("Import error raised, %s", e)
示例#6
0
class Package(object):



    def __init__(self,config ):
        self.config = config
        self.store  = PackagesStore(config)
        self.cookbook = CookBook(config)
        self.packages_ = None

    
    def _recipes(self,package):
        '''
        return the recipes (name:version) dict included in the package (not include in deps packages)
        
        '''
        
        all = package.recipes_dependencies()
        
        rdeps=[]
        for pkg in self.store.get_package_deps( package.name):
            rdeps.extend( pkg.recipes_dependencies())
        rnames = list(set(all).difference(set(rdeps)))
        recipes ={}
        for name in rnames:
            recipes[name] = self.cookbook.get_recipe(name).version
        return recipes


    def get_recipes(self,package):
        '''
        return the recipes (name:version) dict included in the package (not include in deps packages)
        
        '''

        if isinstance (package,SDKPackage):
            recipes={}
            for p in self.store.get_package_deps(package):
                recipes.update( self._recipes( p) )
            return recipes
        
        return self._recipes(package)

    def get_packages_deps(self,package):
        '''
        return the packages of the SDK/package dependent.
        
        '''

        dependencies = []

        if isinstance (package,SDKPackage):
            if hasattr(package, 'dependencies'):
                dependencies = package.dependencies
            return []
        else:
            dependencies = [p.name for p in self.store.get_package_deps(package.name, False)]

        deps = {}
        for name in dependencies:            
            version = self.store.get_package(name).version
            deps[name] = version
        return deps



    def _pkg(self,package):

        

        t = DistTarball(self.config,package,self.store)
        tarball={}

        for ptype in [PackageType.DEVEL,PackageType.RUNTIME]:
            TNAME={PackageType.DEVEL:'devel',PackageType.RUNTIME:'runtime'}
            tarball[TNAME[ptype]]={
                'filename':t._get_name(ptype)
            }
        profile = {
            'name':package.name,
            'version':package.version,
            'platform':self.config.target_platform,
            'arch':self.config.target_arch,
            'recipes': self.get_recipes(package),
            'dependencies': self.get_packages_deps(package),

            #'deps': [p.name for p in self.store.get_package_deps(package.name, True)],
            #'direct.deps': [p.name for p in self.store.get_package_deps(package.name, False)],
            'tarball': tarball
        }

        if self.config.build_type == 'debug':
            profile['debug'] = True
        return profile

    def get(self,name):
        if self.packages_ is None:
            self.packages()
        return self.packages_[name]

    def packages(self):
        if self.packages_ is None:
            self.packages_ = {}
            for pkg in self.store.get_packages_list():
                #if isinstance (pkg,SDKPackage):
                #    continue
                self.packages_[pkg.name] = self._pkg( pkg )

        return self.packages_
class PackageTest(unittest.TestCase):

    def setUp(self):
        self.config = common.DummyConfig()
        self.config.packages_dir = '/test'
        self.config.target_platform = Platform.LINUX
        self.store = PackagesStore(self.config, False)

    def testAddPackage(self):
        package = common.Package1(self.config, None, None)
        self.assertEquals(len(self.store._packages), 0)
        self.store.add_package(package)
        self.assertEquals(len(self.store._packages), 1)
        self.assertEquals(package, self.store._packages[package.name])

    def testGetPackage(self):
        package = common.Package1(self.config, None, None)
        self.store.add_package(package)
        self.assertEquals(package, self.store.get_package(package.name))

    def testPackageNotFound(self):
        self.failUnlessRaises(PackageNotFoundError, self.store.get_package,
            'unknown')

    def testPackagesList(self):
        package = common.Package1(self.config, None, None)
        metapackage = common.MetaPackage(self.config, None)
        self.store.add_package(package)
        self.store.add_package(metapackage)
        l = sorted([package, metapackage], key=lambda x: x.name)
        self.assertEquals(l, self.store.get_packages_list())

    def testPackageDeps(self):
        package = common.Package1(self.config, None,  None)
        package2 = common.Package2(self.config, None, None)
        self.store.add_package(package)
        self.store.add_package(package2)
        self.assertEquals(package.deps,
            [x.name for x in self.store.get_package_deps(package.name)])

    def testMetaPackageDeps(self):
        metapackage = common.MetaPackage(self.config, None)
        self.store.add_package(metapackage)
        # the metapackage depends on package that are not yet in the store
        self.failUnlessRaises(PackageNotFoundError,
            self.store.get_package_deps, metapackage.name)
        for klass in [common.Package1, common.Package2, common.Package3,
                common.Package4]:
            p = klass(self.config, None, None)
            self.store.add_package(p)
        for klass in [common.MetaPackage]:
            p = klass(self.config, None)
            self.store.add_package(p)
        deps = ['gstreamer-test-bindings', 'gstreamer-test1',
                'gstreamer-test2', 'gstreamer-test3']
        res = [x.name for x in self.store.get_package_deps(metapackage.name)]
        self.assertEquals(sorted(deps), sorted(res))

    def testLoadPackageFromFile(self):
        package_file = tempfile.NamedTemporaryFile()
        package_file.write(PACKAGE)
        package_file.flush()
        p = self.store._load_package_from_file(package_file.name)
        self.assertIsInstance(p, Package)
        self.assertEquals('test-package', p.name)

    def testLoadMetaPackageFromFile(self):
        for x, t in [(SDKPACKAGE, SDKPackage),
                (INSTALLERPACKAGE, InstallerPackage)]:
            package_file = tempfile.NamedTemporaryFile()
            package_file.write(x)
            package_file.flush()
            p = self.store._load_package_from_file(package_file.name)
            print p, type(p)
            self.assertIsInstance(p, t)
            self.assertEquals('test-package', p.name)

    def testImports(self):
        package_file = tempfile.NamedTemporaryFile()
        package_file.write(PACKAGE)
        package_file.flush()
        p = self.store._load_package_from_file(package_file.name)
        self.assertIsInstance(p, Package)
        try:
            p.test_imports()
        except ImportError, e:
            self.fail("Import error raised, %s", e)