################################################################################
import os
+from os.path import normpath
import re
import psycopg2
import traceback
from datetime import datetime, timedelta
from errno import ENOENT
from tempfile import mkstemp, mkdtemp
+from subprocess import Popen, PIPE
+from tarfile import TarFile
from inspect import getargspec
def get_component_name(self):
return self.poolfile.location.component.component_name
+ def scan_contents(self):
+ '''
+ Yields the contents of the package. Only regular files are yielded and
+ the path names are normalized.
+ '''
+ fullpath = self.poolfile.fullpath
+ debdata = Popen(['dpkg-deb', '--fsys-tarfile', fullpath],
+ stdout = PIPE).stdout
+ tar = TarFile.open(fileobj = debdata, mode = 'r|')
+ for member in tar.getmembers():
+ if member.isfile():
+ yield normpath(member.name)
+ tar.close()
+ debdata.close()
+
__all__.append('DBBinary')
@session_wrapper
################################################################################
-class Override(object):
- def __init__(self, *args, **kwargs):
- pass
+class Override(ORMObject):
+ def __init__(self, package = None, suite = None, component = None, overridetype = None, \
+ section = None, priority = None):
+ self.package = package
+ self.suite = suite
+ self.component = component
+ self.overridetype = overridetype
+ self.section = section
+ self.priority = priority
- def __repr__(self):
- return '<Override %s (%s)>' % (self.package, self.suite_id)
+ def properties(self):
+ return ['package', 'suite', 'component', 'overridetype', 'section', \
+ 'priority']
+
+ def not_null_constraints(self):
+ return ['package', 'suite', 'component', 'overridetype', 'section']
__all__.append('Override')
'changes_pending_source_files',
'changes_pool_files',
'deb_contents',
+ # TODO: the maintainer column in table override should be removed.
'override',
'suite_architectures',
'suite_src_formats',