Example #1
0
    def run(self, config, args):
        self.store = PackagesStore(config)
        p = self.store.get_package(args.package[0])

        if args.skip_deps_build and args.only_build_deps:
            raise UsageError(_("Cannot use --skip-deps-build together with "
                    "--only-build-deps"))

        if not args.skip_deps_build:
            self._build_deps(config, p, args.no_devel)

        if args.only_build_deps:
            return

        if p is None:
            raise PackageNotFoundError(args.package[0])
        if args.tarball:
            pkg = DistTarball(config, p, self.store)
        else:
            pkg = Packager(config, p, self.store)
        m.action(_("Creating package for %s") % p.name)
        if args.tarball:
            paths = pkg.pack(os.path.abspath(args.output_dir), args.no_devel,
                             args.force, args.keep_temp, split=not args.no_split)
        else:
            paths = pkg.pack(os.path.abspath(args.output_dir), args.no_devel,
                             args.force, args.keep_temp)
        if None in paths:
            paths.remove(None)
        p.post_install(paths)
        m.action(_("Package successfully created in %s") %
                 ' '.join([os.path.abspath(x) for x in paths]))
Example #2
0
    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 setUp(self):
     self.config = DummyConfig()
     self.tmp = tempfile.mkdtemp()
     self.config.prefix = self.tmp
     self.store =  create_store(self.config)
     self.package = self.store.get_package('gstreamer-runtime')
     self.packager = DistTarball(self.config, self.package, self.store)
     add_files(self.tmp)
Example #4
0
    def pack(self,
             output_dir,
             devel=True,
             force=False,
             keep_temp=False,
             pack_deps=True,
             tmpdir=None):
        self.install_dir = self.package.get_install_dir()
        self.devel = devel
        self.force = force
        self._empty_packages = []

        # Create a tmpdir for packages
        tmpdir, packagedir, srcdir = self.create_tree(tmpdir)

        # only build each package once
        if isinstance(self.package, App) and self.package.embed_deps:
            pass
        elif pack_deps:
            self.pack_deps(output_dir, tmpdir, force)

        if not isinstance(self.package, MetaPackage):
            # create a tarball with all the package's files
            tarball_packager = DistTarball(self.config, self.package,
                                           self.store)
            tarball = tarball_packager.pack(
                tmpdir,
                devel,
                True,
                split=False,
                package_prefix=self.full_package_name,
                strip_binaries=False)[0]
            tarname = self.setup_source(tarball, tmpdir, packagedir, srcdir)
        else:
            # metapackages only contains Requires dependencies with
            # other packages
            tarname = None

        m.action(_('Creating package for %s') % self.package.name)

        try:
            # do the preparations, fill spec file, write debian files, etc
            self.prepare(tarname, tmpdir, packagedir, srcdir)

            # and build the package
            paths = self.build(output_dir, tarname, tmpdir, packagedir, srcdir)

            stamp_path = os.path.join(tmpdir, self.package.name + '-stamp')
            open(stamp_path, 'w').close()
        finally:
            if not keep_temp:
                m.action(_('Removing temporary dir %s') % tmpdir)
                shutil.rmtree(tmpdir)

        return paths
Example #5
0
    def dump(self, name, output_dir='.'):
        sdk = self.sdk(name)
        desc = {
            'name': name,
            'version': sdk.version,
            'platform': self.config.target_platform,
            'arch': self.config.target_arch,
            'recipes': {},
            'commit': self.commit()
        }

        for rname in self.recipes_of_sdk(name):
            recipe = self.recipe(rname)
            desc['recipes'][rname] = recipe.version

        tarball = DistTarball(self.config, sdk, self.store)

        files = []
        for ptype in [PackageType.DEVEL, PackageType.RUNTIME]:
            TNAME = {
                PackageType.DEVEL: 'devel',
                PackageType.RUNTIME: 'runtime'
            }

            filename = tarball._get_name(ptype)
            path = os.path.join(output_dir, filename)
            if os.path.exists(path):
                files.append(
                    {filename: {
                        'type': TNAME[ptype],
                        'MD5Sum': MD5(path)
                    }})
            else:
                if (name == 'build-tools') and (ptype == PackageType.DEVEL):
                    continue  # build-tools has no devel package

                reason = "abstract %s, but no %s package at %s" % (
                    name, TNAME[ptype], path)
                m.error(reason)
                raise FatalError(reason)

        desc['packages'] = files
        if name == 'build-tools':
            desc['prefix'] = self.config.build_tools_prefix
        else:
            desc['prefix'] = self.config.prefix

        return desc
 def setUp(self):
     self.config = DummyConfig()
     self.tmp = tempfile.mkdtemp()
     self.config.prefix = self.tmp
     self.store = create_store(self.config)
     self.package = self.store.get_package("gstreamer-runtime")
     self.packager = DistTarball(self.config, self.package, self.store)
     add_files(self.tmp)
    def pack(self, output_dir, devel=True, force=False, keep_temp=False,
             pack_deps=True, tmpdir=None):
        self.install_dir = self.package.get_install_dir()
        self.devel = devel
        self.force = force
        self._empty_packages = []

        # Create a tmpdir for packages
        tmpdir, packagedir, srcdir = self.create_tree(tmpdir)

        # only build each package once
        if isinstance(self.package, App) and self.package.embed_deps:
            pass
        elif pack_deps:
            self.pack_deps(output_dir, tmpdir, force)

        if not isinstance(self.package, MetaPackage):
            # create a tarball with all the package's files
            tarball_packager = DistTarball(self.config, self.package,
                    self.store)
            tarball = tarball_packager.pack(tmpdir, devel, True,
                    split=False, package_prefix=self.full_package_name)[0]
            tarname = self.setup_source(tarball, tmpdir, packagedir, srcdir)
        else:
            # metapackages only contains Requires dependencies with
            # other packages
            tarname = None

        m.action(_('Creating package for %s') % self.package.name)

        try:
            # do the preparations, fill spec file, write debian files, etc
            self.prepare(tarname, tmpdir, packagedir, srcdir)

            # and build the package
            paths = self.build(output_dir, tarname, tmpdir, packagedir, srcdir)

            stamp_path = os.path.join(tmpdir, self.package.name + '-stamp')
            open(stamp_path, 'w').close()
        finally:
            if not keep_temp:
                m.action(_('Removing temporary dir %s') % tmpdir)
                shutil.rmtree(tmpdir)

        return paths
class DistTarballTest(unittest.TestCase):

    def setUp(self):
        self.config = DummyConfig()
        self.tmp = tempfile.mkdtemp()
        self.config.prefix = self.tmp
        self.store =  create_store(self.config)
        self.package = self.store.get_package('gstreamer-runtime')
        self.packager = DistTarball(self.config, self.package, self.store)
        add_files(self.tmp)

    def tearDown(self):
        shutil.rmtree(self.tmp)

    def testRuntimePackage(self):
        # Creates one package with the runtime files
        filenames = self.packager.pack(self.tmp, devel=False)
        self.assertEquals(len(filenames), 1)
        tar = tarfile.open(filenames[0], "r:bz2")
        tarfiles = sorted([x.path for x in tar.getmembers()])
        self.assertEquals(tarfiles, self.package.files_list())

    def testRuntimeAndDevelPackages(self):
        # Creates 2 packages, one with the runtime files a second one with the
        # devel files
        filenames = self.packager.pack(self.tmp, devel=True)
        self.assertEquals(len(filenames), 2)
        tar = tarfile.open(filenames[0], "r:bz2")
        tarfiles = sorted([x.path for x in tar.getmembers()])
        self.assertEquals(tarfiles, self.package.files_list())
        tar = tarfile.open(filenames[1], "r:bz2")
        tarfiles = sorted([x.path for x in tar.getmembers()])
        self.assertEquals(tarfiles, self.package.devel_files_list())

    def testRuntimeWithDevelPackage(self):
        # Creates 1 package, with the runtime files and the devel files
        filenames = self.packager.pack(self.tmp, devel=True, split=False)
        self.assertEquals(len(filenames), 1)
        tar = tarfile.open(filenames[0], "r:bz2")
        tarfiles = sorted([x.path for x in tar.getmembers()])
        self.assertEquals(tarfiles, self.package.all_files_list())
class DistTarballTest(unittest.TestCase):

    def setUp(self):
        self.config = DummyConfig()
        self.tmp = tempfile.mkdtemp()
        self.config.prefix = self.tmp
        self.store =  create_store(self.config)
        self.package = self.store.get_package('gstreamer-runtime')
        self.packager = DistTarball(self.config, self.package, self.store)
        add_files(self.tmp)

    def tearDown(self):
        shutil.rmtree(self.tmp)

    def testRuntimePackage(self):
        # Creates one package with the runtime files
        filenames = self.packager.pack(self.tmp, devel=False)
        self.assertEqual(len(filenames), 1)
        tar = tarfile.open(filenames[0], "r:bz2")
        tarfiles = sorted([x.path for x in tar.getmembers()])
        self.assertEqual(tarfiles, self.package.files_list())

    def testRuntimeAndDevelPackages(self):
        # Creates 2 packages, one with the runtime files a second one with the
        # devel files
        filenames = self.packager.pack(self.tmp, devel=True)
        self.assertEqual(len(filenames), 2)
        tar = tarfile.open(filenames[0], "r:bz2")
        tarfiles = sorted([x.path for x in tar.getmembers()])
        self.assertEqual(tarfiles, self.package.files_list())
        tar = tarfile.open(filenames[1], "r:bz2")
        tarfiles = sorted([x.path for x in tar.getmembers()])
        self.assertEqual(tarfiles, self.package.devel_files_list())

    def testRuntimeWithDevelPackage(self):
        # Creates 1 package, with the runtime files and the devel files
        filenames = self.packager.pack(self.tmp, devel=True, split=False)
        self.assertEqual(len(filenames), 1)
        tar = tarfile.open(filenames[0], "r:bz2")
        tarfiles = sorted([x.path for x in tar.getmembers()])
        self.assertEqual(tarfiles, self.package.all_files_list())
Example #10
0
    def run(self, config, args):
        self.store = PackagesStore(config, offline=args.offline)
        p = self.store.get_package(args.package[0])

        if args.skip_deps_build and args.only_build_deps:
            raise UsageError(
                _("Cannot use --skip-deps-build together with "
                  "--only-build-deps"))

        if not args.skip_deps_build:
            self._build_deps(config, p, args.no_devel, args.offline,
                             args.dry_run)

        if args.only_build_deps or args.dry_run:
            return

        if args.xz:
            config.package_tarball_compression = 'xz'

        if p is None:
            raise PackageNotFoundError(args.package[0])
        p.pre_package()
        if args.tarball:
            if config.target_platform == Platform.ANDROID and \
               config.target_arch == Architecture.UNIVERSAL:
                pkg = AndroidPackager(config, p, self.store)
            else:
                pkg = DistTarball(config, p, self.store)
        else:
            pkg = Packager(config, p, self.store)
        m.action(_("Creating package for %s") % p.name)
        output_dir = os.path.abspath(args.output_dir)
        if args.tarball:
            paths = pkg.pack(output_dir,
                             args.no_devel,
                             args.force,
                             args.keep_temp,
                             split=not args.no_split,
                             strip_binaries=p.strip)
        else:
            paths = pkg.pack(output_dir, args.no_devel, args.force,
                             args.keep_temp)
        if None in paths:
            paths.remove(None)
        paths = p.post_package(paths, output_dir) or paths
        m.action(
            _("Package successfully created in %s") %
            ' '.join([os.path.abspath(x) for x in paths]))
Example #11
0
 def __init__(self, config, package, store):
     DistTarball.__init__(self, config, package, store)
Example #12
0
 def __init__(self, config, package, store):
     DistTarball.__init__(self, config, package, store)