From 518719e6f89df1ffdb9e30061e7f346adc1f4024 Mon Sep 17 00:00:00 2001 From: David Davis <86290+daviddavis@users.noreply.github.com> Date: Wed, 9 Sep 2026 15:37:20 +0000 Subject: [PATCH] Handle architecture all in repository modify Architecture-independent packages need a component relationship but no ReleaseArchitecture. ref #1492 Assisted By: GitHub Copilot --- ...+repository-modify-architecture-all.bugfix | 1 + pulp_deb/app/tasks/signing.py | 3 +- .../functional/api/test_repository_modify.py | 31 +++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 CHANGES/+repository-modify-architecture-all.bugfix diff --git a/CHANGES/+repository-modify-architecture-all.bugfix b/CHANGES/+repository-modify-architecture-all.bugfix new file mode 100644 index 000000000..57930fa4c --- /dev/null +++ b/CHANGES/+repository-modify-architecture-all.bugfix @@ -0,0 +1 @@ +Fixed modifying a repository with an architecture-independent package when distribution or component fields were provided. \ No newline at end of file diff --git a/pulp_deb/app/tasks/signing.py b/pulp_deb/app/tasks/signing.py index 011e9f8d1..e773b11d7 100644 --- a/pulp_deb/app/tasks/signing.py +++ b/pulp_deb/app/tasks/signing.py @@ -127,10 +127,11 @@ def _prepare_package_additions(add_content_units, distribution, component): architecture, _ = ReleaseArchitecture.objects.get_or_create( distribution=distribution, architecture=package.architecture ) + add_content_units.append(str(architecture.pk)) package_component, _ = PackageReleaseComponent.objects.get_or_create( release_component=release_component, package=package ) - add_content_units.extend([str(architecture.pk), str(package_component.pk)]) + add_content_units.append(str(package_component.pk)) # Source packages only need a link to the release component. for source_package in source_packages: source_package_component, _ = SourcePackageReleaseComponent.objects.get_or_create( diff --git a/pulp_deb/tests/functional/api/test_repository_modify.py b/pulp_deb/tests/functional/api/test_repository_modify.py index 644c9ff1f..d80109ce4 100644 --- a/pulp_deb/tests/functional/api/test_repository_modify.py +++ b/pulp_deb/tests/functional/api/test_repository_modify.py @@ -62,6 +62,37 @@ def test_modify_package_creates_structure_without_release( assert [item.pulp_href for item in packages.results] == [package.pulp_href] +def test_modify_architecture_all_package_creates_no_release_architecture( + apt_package_release_components_api, + apt_release_architecture_api, + deb_get_repository_by_href, + deb_modify_repository, + deb_package_factory, + deb_repository_factory, +): + repository = deb_repository_factory() + package = deb_package_factory( + file=str( + get_local_package_absolute_path( + "eir_1.0_all.deb", relative_path="data/debian-mixed/pool/asgard/e/eir/" + ) + ) + ) + + _modify_with_package( + repository, + package, + deb_modify_repository, + distribution=str(uuid4()), + component=str(uuid4()), + ) + repository = deb_get_repository_by_href(repository.pulp_href) + + filters = {"repository_version": repository.latest_version_href} + assert apt_release_architecture_api.list(**filters).count == 0 + assert apt_package_release_components_api.list(**filters).count == 1 + + def test_modify_package_without_structure_fields_only_adds_package( apt_package_release_components_api, apt_release_architecture_api,