@type fingerprint: L{daklib.dbconn.Fingerprint}
@param fingerprint: optional fingerprint
- @type source_suites: list of L{daklib.dbconn.Suite} or C{True}
+ @type source_suites: SQLAlchemy subquery for C{daklib.dbconn.Suite} or C{True}
@param source_suites: suites to copy the source from if they are not
in C{suite} or C{True} to allow copying from any
suite.
- This can also be a SQLAlchemy (sub)query object.
@type extra_source_archives: list of L{daklib.dbconn.Archive}
@param extra_source_archives: extra archives to copy Built-Using sources from
for f in self.changes.files.itervalues():
src = os.path.join(self.original_directory, f.filename)
dst = os.path.join(self.directory, f.filename)
+ if not os.path.exists(src):
+ continue
fs.copy(src, dst)
source = self.changes.source
for f in source.files.itervalues():
src = os.path.join(self.original_directory, f.filename)
dst = os.path.join(self.directory, f.filename)
- if f.filename not in self.changes.files:
- db_file = self.transaction.get_file(f, source.dsc['Source'])
- db_archive_file = session.query(ArchiveFile).filter_by(file=db_file).first()
- fs.copy(db_archive_file.path, dst, symlink=True)
+ if not os.path.exists(dst):
+ try:
+ db_file = self.transaction.get_file(f, source.dsc['Source'])
+ db_archive_file = session.query(ArchiveFile).filter_by(file=db_file).first()
+ fs.copy(db_archive_file.path, dst, symlink=True)
+ except KeyError:
+ # Ignore if get_file could not find it. Upload will
+ # probably be rejected later.
+ pass
def unpacked_source(self):
"""Path to unpacked source
suites = session.query(Suite).filter(Suite.suite_name.in_(suite_names))
return suites
- def _mapped_component(self, component_name):
- """get component after mappings
-
- Evaluate component mappings from ComponentMappings in dak.conf for the
- given component name.
-
- @todo: ansgar wants to get rid of this. It's currently only used for
- the security archive
-
- @type component_name: str
- @param component_name: component name
-
- @rtype: L{daklib.dbconn.Component}
- @return: component after applying maps
- """
- cnf = Config()
- for m in cnf.value_list("ComponentMappings"):
- (src, dst) = m.split()
- if component_name == src:
- component_name = dst
- component = self.session.query(Component).filter_by(component_name=component_name).one()
- return component
-
def _check_new(self, suite):
"""Check if upload is NEW
return override.component
if only_overrides:
return None
- return self._mapped_component(binary.component)
+ return get_mapped_component(binary.component, self.session)
def check(self, force=False):
"""run checks against the upload
changed_by = get_or_set_maintainer(control.get('Changed-By', control['Maintainer']), self.session)
if source_suites is None:
- source_suites = self.session.query(Suite).join((VersionCheck, VersionCheck.reference_id == Suite.suite_id)).filter(VersionCheck.suite == suite).subquery()
+ source_suites = self.session.query(Suite).join((VersionCheck, VersionCheck.reference_id == Suite.suite_id)).filter(VersionCheck.check == 'Enhances').filter(VersionCheck.suite == suite).subquery()
source = self.changes.source
if source is not None:
# copy to build queues
if policy_queue is None or policy_queue.send_to_build_queues:
+ source_suites = self.session.query(Suite).filter_by(suite_id=suite.suite_id).subquery()
for build_queue in suite.copy_queues:
- self._install_to_suite(build_queue.suite, source_component_func, binary_component_func, extra_source_archives=[suite.archive])
+ self._install_to_suite(build_queue.suite, source_component_func, binary_component_func, source_suites=source_suites, extra_source_archives=[suite.archive])
self._do_bts_versiontracking()