Beispiel #1
0
    def _dsc_to_sources(self, package_file):
        """
        Reads the contents of a dsc file and converts it to a Sources file entry.

        ``file``
            Filename of the dsc to read.
        """
        filename = os.path.join(self.repository, package_file.filename)
        package_version = package_file.source_package.package_version
        package = package_version.package

        if not os.path.isfile(filename):
            log.critical('Cannot find file %s' % filename)
            return ''

        # Read the dsc file.
        dsc = deb822.Dsc(file(filename))

        # There are a few differences between a dsc file and a Sources entry, listed and acted
        # upon below:

        # Firstly, the "Source" field in the dsc is simply renamed to "Package".
        dsc['Package'] = dsc.pop('Source')

        # There needs to be a "Directory" field to tell the package manager where to download the
        # package from. This is in the format (for the test package in the component "main"):
        #   pool/main/t/test
        dsc['Directory'] = str('pool/%s/%s' % (package_version.component, get_package_dir(package.name)))

        # The dsc file, its size, and its md5sum needs to be added to the "Files" field. This is
        # unsurprisingly not in the original dsc file!
        dsc['Files'].append({'md5sum' : package_file.md5sum, 'size': str(package_file.size), 'name' : str(package_file.filename.split('/')[-1])})

        # Get a nice rfc822 output of this dsc, now Sources, entry.
        return dsc.dump()
Beispiel #2
0
    def rfs_howto(self, packagename = None):


        c.package = None
        c.package_dir = None
        if packagename:
            package = meta.session.query(Package).filter_by(name=packagename).first()
            if package:
                c.package = package
                c.package_dir = get_package_dir(package.name)

        return render('/sponsor/rfs_howto.mako')
Beispiel #3
0
    def _get_package(self, packagename):
        """
        """
        log.debug('Details of package "%s" requested' % packagename)

        package = meta.session.query(Package).filter_by(name=packagename).first()

        if package is None:
            log.error("Could not get package information")
            return redirect_to(h.url_for(controller="packages", packagename=None))

        c.package = package
        c.config = config
        c.package_dir = get_package_dir(package.name)
        return package
Beispiel #4
0
    def _get_package(self, packagename):
        """
        """
        log.debug('Details of package "%s" requested' % packagename)

        package = meta.session.query(Package).filter_by(
            name=packagename).first()

        if package is None:
            log.error('Could not get package information')
            return redirect_to(
                h.url_for(controller='packages', packagename=None))

        c.package = package
        c.config = config
        c.package_dir = get_package_dir(package.name)
        return package
Beispiel #5
0
    def _dsc_to_sources(self, package_file):
        """
        Reads the contents of a dsc file and converts it to a Sources file entry.

        ``file``
            Filename of the dsc to read.
        """
        filename = os.path.join(self.repository, package_file.filename)
        package_version = package_file.source_package.package_version
        package = package_version.package

        if not os.path.isfile(filename):
            log.critical('Cannot find file %s' % filename)
            return ''

        if not package:
            log.critical('For some reason package is None...')
            return ''

        # Read the dsc file.
        dsc = deb822.Dsc(file(filename))

        # There are a few differences between a dsc file and a Sources entry, listed and acted
        # upon below:

        # Firstly, the "Source" field in the dsc is simply renamed to "Package".
        dsc['Package'] = dsc.pop('Source')

        # There needs to be a "Directory" field to tell the package manager where to download the
        # package from. This is in the format (for the test package in the component "main"):
        #   pool/main/t/test
        dsc['Directory'] = str(
            'pool/%s/%s' %
            (package_version.component, get_package_dir(package.name)))

        # The dsc file, its size, and its md5sum needs to be added to the "Files" field. This is
        # unsurprisingly not in the original dsc file!
        dsc['Files'].append({
            'md5sum': package_file.md5sum,
            'size': str(package_file.size),
            'name': str(package_file.filename.split('/')[-1])
        })

        # Get a nice rfc822 output of this dsc, now Sources, entry.
        return dsc.dump()
Beispiel #6
0
    def _get_package(self, packagename, from_controller=True):
        """
        """
        log.debug('Details of package "%s" requested' % packagename)

        package = meta.session.query(Package).filter_by(name=packagename).first()

        if package is None and from_controller:
            log.error("Could not get package information")
            redirect(url(controller="packages", action="index", packagename=None))
        if package is None and not from_controller:
            return None

        if from_controller:
            c.package = package
            c.config = config
            c.package_dir = get_package_dir(package.name)
        return package
Beispiel #7
0
    def _get_package(self, packagename, from_controller=True):
        """
        """
        log.debug('Details of package "%s" requested' % packagename)

        package = meta.session.query(Package).filter_by(name=packagename).first()

        if package is None and from_controller:
            log.error('Could not get package information')
            redirect(url(controller='packages', action='index', packagename=None))
        if package is None and not from_controller:
            return None

	if from_controller:
            c.package = package
            c.config = config
            c.package_dir = get_package_dir(package.name)
        return package