608
608
# Copy source if it's not yet copied.
609
policy = archive.getOverridePolicy()
610
609
source_in_destination = archive.getPublishedSources(
611
610
name=source.sourcepackagerelease.name, exact_match=True,
612
611
version=source.sourcepackagerelease.version,
613
612
status=active_publishing_status,
614
613
distroseries=series, pocket=pocket)
614
policy = archive.getOverridePolicy()
615
615
if source_in_destination.is_empty():
616
source_copy = source.copyTo(series, pocket, archive, policy=policy)
617
if policy is not None:
618
package_names = (source.sourcepackagerelease.sourcepackagename,)
619
overrides = policy.calculateSourceOverrides(
620
archive, series, pocket, package_names)
621
# Only one override can be returned so take the first
622
# element of the returned list.
623
assert len(overrides) == 1, (
624
"More than one override encountered, something is wrong.")
625
override = overrides[0]
626
source_copy = source.copyTo(series, pocket, archive, override)
617
627
close_bugs_for_sourcepublication(source_copy)
618
628
copies.append(source_copy)