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))
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)
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)