diff --git a/snapcraft/models/project.py b/snapcraft/models/project.py index 3642a2f795..507a1161cd 100644 --- a/snapcraft/models/project.py +++ b/snapcraft/models/project.py @@ -1222,8 +1222,8 @@ def get_build_plan(self) -> list[BuildInfo]: ) for platform_entry, platform in self.platforms.items(): - for build_for in platform.build_for or [SnapArch(platform_entry)]: - for build_on in platform.build_on or [SnapArch(platform_entry)]: + for build_for in platform.build_for or [SnapArch(platform_entry).value]: + for build_on in platform.build_on or [SnapArch(platform_entry).value]: build_infos.append( BuildInfo( platform=platform_entry, diff --git a/tests/spread/core24/platforms/snaps/implicit-build-for/expected-snaps.txt b/tests/spread/core24/platforms/snaps/implicit-build-for/expected-snaps.txt new file mode 100644 index 0000000000..a7d62cb03a --- /dev/null +++ b/tests/spread/core24/platforms/snaps/implicit-build-for/expected-snaps.txt @@ -0,0 +1 @@ +build-for-match_1.0_arm64.snap diff --git a/tests/spread/core24/platforms/snaps/implicit-build-for/snap/snapcraft.yaml b/tests/spread/core24/platforms/snaps/implicit-build-for/snap/snapcraft.yaml new file mode 100644 index 0000000000..ed6987374d --- /dev/null +++ b/tests/spread/core24/platforms/snaps/implicit-build-for/snap/snapcraft.yaml @@ -0,0 +1,15 @@ +name: implicit-build-for +version: "1.0" +summary: test +description: | + Use the platform name implicitly for the `build-for`. +confinement: strict +base: core24 + +platforms: + amd64: + build-on: [amd64] + +parts: + my-part: + plugin: nil diff --git a/tests/spread/core24/platforms/task.yaml b/tests/spread/core24/platforms/task.yaml index 28c89d7ba5..e47d9ef201 100644 --- a/tests/spread/core24/platforms/task.yaml +++ b/tests/spread/core24/platforms/task.yaml @@ -9,6 +9,7 @@ environment: SNAP/env_var_all: env-var-all SNAP/env_var_match: env-var-match SNAP/env_var_no_match: env-var-no-match + SNAP/implicit_build_for: implicit_build_for SNAP/multiple_build_for: multiple-build-for SNAP/platform_all: platform-all SNAP/platform_match: platform-match diff --git a/tests/unit/models/test_projects.py b/tests/unit/models/test_projects.py index 1cb147d676..50b5b07adb 100644 --- a/tests/unit/models/test_projects.py +++ b/tests/unit/models/test_projects.py @@ -2068,6 +2068,37 @@ def test_root_packages_transform_no_affect(self, project_yaml_data): ], id="single_platform_as_arch", ), + pytest.param( + { + "s390x": { + "build-on": "s390x", + }, + "riscv64": { + "build-on": ["amd64", "riscv64"], + }, + }, + [ + BuildInfo( + build_on="s390x", + build_for="s390x", + base=BaseName(name="ubuntu", version="24.04"), + platform="s390x", + ), + BuildInfo( + build_on="amd64", + build_for="riscv64", + base=BaseName(name="ubuntu", version="24.04"), + platform="riscv64", + ), + BuildInfo( + build_on="riscv64", + build_for="riscv64", + base=BaseName(name="ubuntu", version="24.04"), + platform="riscv64", + ), + ], + id="implicit_build_for", + ), pytest.param( { "arm64": {