From 6cef6c0f95b0c2e4ebab2cdb8500f5d66ad77c2c Mon Sep 17 00:00:00 2001 From: Joe Talbott Date: Fri, 30 Sep 2016 16:37:09 -0400 Subject: [PATCH] Replace SNAPCRAFT_PART_INSTALL in the part attributes. (#841) LP: #1628915 --- .../snaps/simple-cmake-replace/CMakeLists.txt | 5 +++++ .../snaps/simple-cmake-replace/icon.png | Bin 0 -> 14565 bytes .../snaps/simple-cmake-replace/snapcraft.yaml | 14 +++++++++++++ .../snaps/simple-cmake-replace/test.c | 5 +++++ integration_tests/test_environment.py | 15 ++++++++++++++ snapcraft/internal/lifecycle.py | 12 +++++++++++ snapcraft/tests/test_lifecycle.py | 19 ++++++++++++++++++ 7 files changed, 70 insertions(+) create mode 100644 integration_tests/snaps/simple-cmake-replace/CMakeLists.txt create mode 100644 integration_tests/snaps/simple-cmake-replace/icon.png create mode 100644 integration_tests/snaps/simple-cmake-replace/snapcraft.yaml create mode 100644 integration_tests/snaps/simple-cmake-replace/test.c diff --git a/integration_tests/snaps/simple-cmake-replace/CMakeLists.txt b/integration_tests/snaps/simple-cmake-replace/CMakeLists.txt new file mode 100644 index 0000000000..9569621f21 --- /dev/null +++ b/integration_tests/snaps/simple-cmake-replace/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.2) +project(simple-cmake-replace C) +add_definitions(-DPART_INSTALL=${PART_INSTALL}) +add_executable(simple-cmake-replace test.c) +install(TARGETS simple-cmake-replace RUNTIME DESTINATION bin) diff --git a/integration_tests/snaps/simple-cmake-replace/icon.png b/integration_tests/snaps/simple-cmake-replace/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..05b7f5616fee72da5b345f91e220c54c3be3cdb7 GIT binary patch literal 14565 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 F{{!%20?_~f literal 0 HcmV?d00001 diff --git a/integration_tests/snaps/simple-cmake-replace/snapcraft.yaml b/integration_tests/snaps/simple-cmake-replace/snapcraft.yaml new file mode 100644 index 0000000000..bc6d1d34b4 --- /dev/null +++ b/integration_tests/snaps/simple-cmake-replace/snapcraft.yaml @@ -0,0 +1,14 @@ +name: test-package +version: 0.1 +summary: one line summary +description: a longer description +icon: icon.png +confinement: strict + +build-packages: [gcc, libc6-dev] + +parts: + cmake-project: + plugin: cmake + configflags: ['-DPART_INSTALL="$SNAPCRAFT_PART_INSTALL"'] + source: . diff --git a/integration_tests/snaps/simple-cmake-replace/test.c b/integration_tests/snaps/simple-cmake-replace/test.c new file mode 100644 index 0000000000..78916f28b1 --- /dev/null +++ b/integration_tests/snaps/simple-cmake-replace/test.c @@ -0,0 +1,5 @@ +#include + +int main() { + printf("When I was built I was installed to %s\n", PART_INSTALL); +} diff --git a/integration_tests/test_environment.py b/integration_tests/test_environment.py index 24ebb464ef..ce61774c41 100644 --- a/integration_tests/test_environment.py +++ b/integration_tests/test_environment.py @@ -15,6 +15,7 @@ # along with this program. If not, see . import os +import subprocess from testtools.matchers import FileContains @@ -56,3 +57,17 @@ def test_snapcraft_stage_env_replacement(self): project_dir = 'stage_env' self.run_snapcraft('stage', project_dir) + + def test_stage_cmake_plugin_with_replace(self): + """Replace SNAPCRAFT_PART_INSTALL in the part's attributes""" + project_dir = 'simple-cmake-replace' + self.run_snapcraft('stage', project_dir) + + binary_output = subprocess.check_output([ + os.path.join('stage', 'bin', 'simple-cmake-replace')], + cwd=project_dir) + path = os.path.join(os.getcwd(), project_dir, 'parts', + 'cmake-project', 'install') + self.assertEqual( + "When I was built I was installed to {}\n".format(path), + binary_output.decode('utf-8')) diff --git a/snapcraft/internal/lifecycle.py b/snapcraft/internal/lifecycle.py index 4914f8c7da..749f5f8733 100644 --- a/snapcraft/internal/lifecycle.py +++ b/snapcraft/internal/lifecycle.py @@ -35,6 +35,7 @@ pluginhandler, repo, ) +from snapcraft.internal.project_loader import replace_attr logger = logging.getLogger(__name__) @@ -106,6 +107,16 @@ def execute(step, project_options, part_names=None): 'type': config.data.get('type', '')} +def _replace_in_part(part): + for key, value in part.code.options.__dict__.items(): + value = replace_attr(value, [ + ('$SNAPCRAFT_PART_INSTALL', part.code.installdir), + ]) + setattr(part.code.options, key, value) + + return part + + class _Executor: def __init__(self, config, project_options): @@ -181,6 +192,7 @@ def _run_step(self, step, part, part_names): common.env = self.parts_config.build_env_for_part(part) common.env.extend(self.config.project_env()) + part = _replace_in_part(part) getattr(part, step)() def _create_meta(self, step, part_names): diff --git a/snapcraft/tests/test_lifecycle.py b/snapcraft/tests/test_lifecycle.py index ad2ba37ec2..9708a20d17 100644 --- a/snapcraft/tests/test_lifecycle.py +++ b/snapcraft/tests/test_lifecycle.py @@ -50,6 +50,25 @@ def make_snapcraft_yaml(self, parts, snap_type=''): super().make_snapcraft_yaml(yaml.format(parts=parts, type=snap_type)) + def test__replace_in_parts(self): + class Options: + def __init__(self): + self.source = '$SNAPCRAFT_PART_INSTALL' + + class Code: + def __init__(self): + self.options = Options() + self.installdir = '/tmp' + + class Part: + def __init__(self): + self.code = Code() + + part = Part() + new_part = lifecycle._replace_in_part(part) + + self.assertEqual(part.code.installdir, new_part.code.options.source) + def test_exception_when_dependency_is_required(self): self.make_snapcraft_yaml("""parts: part1: