From 7a6268593ce957a54bbe8fbcb7b3e1ea1b71ee2c Mon Sep 17 00:00:00 2001 From: Greg Becker Date: Thu, 15 Oct 2020 17:23:16 -0700 Subject: Environments: specify packages for developer builds (#15256) * allow environments to specify dev-build packages * spack develop and spack undevelop commands * never pull dev-build packges from bincache * reinstall dev_specs when code has changed; reinstall dependents too * preserve dev info paths and versions in concretization as special variant * move install overwrite transaction into installer * move dev-build argument handling to package.do_install now that specs are dev-aware, package.do_install can add necessary args (keep_stage=True, use_cache=False) to dev builds. This simplifies driving logic in cmd and env._install * allow 'any' as wildcard for variants * spec: allow anonymous dependencies raise an error when constraining by or normalizing an anonymous dep refactor concretize_develop to remove dev_build variant refactor tests to check for ^dev_path=any instead of +dev_build * fix variant class hierarchy --- .../packages/dependent-of-dev-build/package.py | 17 +++++++++++++ .../packages/dev-build-test-dependent/package.py | 29 ++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 var/spack/repos/builtin.mock/packages/dependent-of-dev-build/package.py create mode 100644 var/spack/repos/builtin.mock/packages/dev-build-test-dependent/package.py (limited to 'var') diff --git a/var/spack/repos/builtin.mock/packages/dependent-of-dev-build/package.py b/var/spack/repos/builtin.mock/packages/dependent-of-dev-build/package.py new file mode 100644 index 0000000000..9079fa766a --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/dependent-of-dev-build/package.py @@ -0,0 +1,17 @@ +# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +class DependentOfDevBuild(Package): + homepage = "example.com" + url = "fake.com" + + version('0.0.0', sha256='0123456789abcdefgh') + + depends_on('dev-build-test-install') + + def install(self, spec, prefix): + with open(prefix.filename, 'w') as f: + f.write("This file is installed") diff --git a/var/spack/repos/builtin.mock/packages/dev-build-test-dependent/package.py b/var/spack/repos/builtin.mock/packages/dev-build-test-dependent/package.py new file mode 100644 index 0000000000..e6a5b8351f --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/dev-build-test-dependent/package.py @@ -0,0 +1,29 @@ +# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +class DevBuildTestDependent(Package): + homepage = "example.com" + url = "fake.com" + + version('0.0.0', sha256='0123456789abcdefgh') + + phases = ['edit', 'install'] + + filename = 'dev-build-test-file.txt' + original_string = "This file should be edited" + replacement_string = "This file has been edited" + + depends_on('dev-build-test-install') + + def edit(self, spec, prefix): + with open(self.filename, 'r+') as f: + assert f.read() == self.original_string + f.seek(0) + f.truncate() + f.write(self.replacement_string) + + def install(self, spec, prefix): + install(self.filename, prefix) -- cgit v1.2.3-70-g09d2