diff --git a/snapcraft/parts/lifecycle.py b/snapcraft/parts/lifecycle.py index 1148d5e20f..02590087ca 100644 --- a/snapcraft/parts/lifecycle.py +++ b/snapcraft/parts/lifecycle.py @@ -201,6 +201,7 @@ def _run_command( project.parts, work_dir=work_dir, assets_dir=assets_dir, + base=project.get_effective_base(), package_repositories=project.package_repositories, parallel_build_count=parallel_build_count, part_names=part_names, diff --git a/snapcraft/parts/parts.py b/snapcraft/parts/parts.py index 059f18ea2c..934ec02064 100644 --- a/snapcraft/parts/parts.py +++ b/snapcraft/parts/parts.py @@ -55,6 +55,7 @@ def __init__( *, work_dir: pathlib.Path, assets_dir: pathlib.Path, + base: str, package_repositories: List[Dict[str, Any]], parallel_build_count: int, part_names: Optional[List[str]], @@ -87,6 +88,7 @@ def __init__( application_name="snapcraft", work_dir=work_dir, cache_dir=cache_dir, + base=base, ignore_local_sources=["*.snap"], extra_build_packages=extra_build_packages, extra_build_snaps=extra_build_snaps, diff --git a/tests/spread/core22/snap-creation/package-cutoff/snap/snapcraft.yaml b/tests/spread/core22/snap-creation/package-cutoff/snap/snapcraft.yaml new file mode 100644 index 0000000000..6068e88b11 --- /dev/null +++ b/tests/spread/core22/snap-creation/package-cutoff/snap/snapcraft.yaml @@ -0,0 +1,17 @@ +name: package-cutoff +base: core22 +version: '1.0' +summary: 'test' +description: test +grade: devel +confinement: devmode + +parts: + part-1: + source: . + plugin: nil + stage-packages: + - libpng16-16 + part-2: + source: . + plugin: python diff --git a/tests/spread/core22/snap-creation/task.yaml b/tests/spread/core22/snap-creation/task.yaml new file mode 100644 index 0000000000..8e426908a5 --- /dev/null +++ b/tests/spread/core22/snap-creation/task.yaml @@ -0,0 +1,22 @@ +summary: Test base package cutoff + +environment: + SNAP/package_cutoff: package-cutoff + +prepare: | + #shellcheck source=tests/spread/tools/snapcraft-yaml.sh + . "$TOOLS_DIR/snapcraft-yaml.sh" + # set_base "$SNAP/snap/snapcraft.yaml" + +restore: | + cd "$SNAP" + rm -f ./*.snap + rm -Rf work + + #shellcheck source=tests/spread/tools/snapcraft-yaml.sh + . "$TOOLS_DIR/snapcraft-yaml.sh" + restore_yaml "snap/snapcraft.yaml" + +execute: | + cd "$SNAP" + snapcraft --verbose diff --git a/tests/unit/parts/test_parts.py b/tests/unit/parts/test_parts.py index 46a2e4206a..605d09fef8 100644 --- a/tests/unit/parts/test_parts.py +++ b/tests/unit/parts/test_parts.py @@ -39,6 +39,7 @@ def test_parts_lifecycle_run(mocker, parts_data, step_name, new_dir, emitter): parts_data, work_dir=new_dir, assets_dir=new_dir, + base="core22", parallel_build_count=8, part_names=[], package_repositories=[], @@ -57,6 +58,7 @@ def test_parts_lifecycle_run(mocker, parts_data, step_name, new_dir, emitter): application_name="snapcraft", work_dir=ANY, cache_dir=ANY, + base="core22", ignore_local_sources=["*.snap"], extra_build_packages=[], extra_build_snaps=["core22"], @@ -74,6 +76,7 @@ def test_parts_lifecycle_run_bad_step(parts_data, new_dir): parts_data, work_dir=new_dir, assets_dir=new_dir, + base="core22", parallel_build_count=8, part_names=[], package_repositories=[], @@ -92,6 +95,7 @@ def test_parts_lifecycle_run_internal_error(parts_data, new_dir, mocker): parts_data, work_dir=new_dir, assets_dir=new_dir, + base="core22", parallel_build_count=8, part_names=[], package_repositories=[], @@ -111,6 +115,7 @@ def test_parts_lifecycle_run_parts_error(new_dir): {"p1": {"plugin": "dump", "source": "foo"}}, work_dir=new_dir, assets_dir=new_dir, + base="core22", parallel_build_count=8, part_names=[], package_repositories=[], @@ -131,6 +136,7 @@ def test_parts_lifecycle_clean(parts_data, new_dir, emitter): parts_data, work_dir=new_dir, assets_dir=new_dir, + base="core22", parallel_build_count=8, part_names=[], package_repositories=[], @@ -148,6 +154,7 @@ def test_parts_lifecycle_clean_parts(parts_data, new_dir, emitter): parts_data, work_dir=new_dir, assets_dir=new_dir, + base="core22", parallel_build_count=8, part_names=[], package_repositories=[], @@ -170,6 +177,7 @@ def test_parts_lifecycle_initialize_with_package_repositories( parts_data, work_dir=new_dir, assets_dir=new_dir, + base="core22", parallel_build_count=8, part_names=[], package_repositories=[ @@ -190,6 +198,7 @@ def test_parts_lifecycle_initialize_with_package_repositories( application_name="snapcraft", work_dir=ANY, cache_dir=ANY, + base="core22", ignore_local_sources=["*.snap"], extra_build_packages=["gnupg", "dirmngr"], extra_build_snaps=["core22"],