summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorGreg Becker <becker33@llnl.gov>2024-11-08 17:07:40 -0800
committerGitHub <noreply@github.com>2024-11-08 18:07:40 -0700
commitda1d533877f90610571b72f070c01e13b9729108 (patch)
treedb1e39d1daba082fcec630e61e7f4423c9c63a87 /var
parentc6997e11a74e5dedbeabf93ea1df3f8d2a4601e8 (diff)
downloadspack-da1d533877f90610571b72f070c01e13b9729108.tar.gz
spack-da1d533877f90610571b72f070c01e13b9729108.tar.bz2
spack-da1d533877f90610571b72f070c01e13b9729108.tar.xz
spack-da1d533877f90610571b72f070c01e13b9729108.zip
fix patched dependencies across repositories (#42463)
Currently, if a package has a dependency from another repository and patches it, generation of the patch cache will fail. Concretization succeeds if a fixed patch cache is in place. - [x] don't assume that patched dependencies are in the same repo when indexing - [x] add some test fixtures to support multi-repo tests. --------- Signed-off-by: Todd Gamblin <tgamblin@llnl.gov> Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin.mock/README.md7
-rw-r--r--var/spack/repos/builtin.mock/packages/patch-a-foreign-dependency/mock2-package.patch11
-rw-r--r--var/spack/repos/builtin.mock/packages/patch-a-foreign-dependency/package.py17
-rw-r--r--var/spack/repos/builtin.mock2/README.md6
-rw-r--r--var/spack/repos/builtin.mock2/packages/mock2-patched-dependency/package.py15
-rw-r--r--var/spack/repos/builtin.mock2/repo.yaml2
6 files changed, 58 insertions, 0 deletions
diff --git a/var/spack/repos/builtin.mock/README.md b/var/spack/repos/builtin.mock/README.md
new file mode 100644
index 0000000000..5a5f6e747f
--- /dev/null
+++ b/var/spack/repos/builtin.mock/README.md
@@ -0,0 +1,7 @@
+# `builtin.mock`
+
+This repository and the secondary mock repo `builtin.mock2` contain mock packages used
+by Spack tests.
+
+Most tests are in `builtin.mock`, but `builtin.mock2` is used for scenarios where we
+need multiple repos for testing.
diff --git a/var/spack/repos/builtin.mock/packages/patch-a-foreign-dependency/mock2-package.patch b/var/spack/repos/builtin.mock/packages/patch-a-foreign-dependency/mock2-package.patch
new file mode 100644
index 0000000000..02bfad9103
--- /dev/null
+++ b/var/spack/repos/builtin.mock/packages/patch-a-foreign-dependency/mock2-package.patch
@@ -0,0 +1,11 @@
+--- patch-a-dependency/configure 2018-08-13 23:13:51.000000000 -0700
++++ patch-a-dependency/configure.patched 2018-08-13 23:14:15.000000000 -0700
+@@ -2,7 +2,7 @@
+ prefix=$(echo $1 | sed 's/--prefix=//')
+ cat > Makefile <<EOF
+ all:
+- echo Building...
++ echo Patched!
+
+ install:
+ mkdir -p $prefix
diff --git a/var/spack/repos/builtin.mock/packages/patch-a-foreign-dependency/package.py b/var/spack/repos/builtin.mock/packages/patch-a-foreign-dependency/package.py
new file mode 100644
index 0000000000..6e52029a1d
--- /dev/null
+++ b/var/spack/repos/builtin.mock/packages/patch-a-foreign-dependency/package.py
@@ -0,0 +1,17 @@
+# Copyright 2013-2024 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)
+
+from spack.package import *
+
+
+class PatchAForeignDependency(Package):
+ """Package that requries a patched version of a dependency."""
+
+ homepage = "http://www.example.com"
+ url = "http://www.example.com/patch-a-dependency-1.0.tar.gz"
+
+ version("1.0", md5="0123456789abcdef0123456789abcdef")
+
+ depends_on("mock2-patched-dependency", patches=patch("mock2-package.patch"))
diff --git a/var/spack/repos/builtin.mock2/README.md b/var/spack/repos/builtin.mock2/README.md
new file mode 100644
index 0000000000..8a079b1a6b
--- /dev/null
+++ b/var/spack/repos/builtin.mock2/README.md
@@ -0,0 +1,6 @@
+# `builtin.mock2`
+
+This is the secondary mock repo for testing Spack, along with `builtin.mock`.
+
+Most tests are in `builtin.mock`, but this repository is used for scenarios where we
+need multiple repos for testing.
diff --git a/var/spack/repos/builtin.mock2/packages/mock2-patched-dependency/package.py b/var/spack/repos/builtin.mock2/packages/mock2-patched-dependency/package.py
new file mode 100644
index 0000000000..ed34ff025a
--- /dev/null
+++ b/var/spack/repos/builtin.mock2/packages/mock2-patched-dependency/package.py
@@ -0,0 +1,15 @@
+# Copyright 2013-2024 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)
+
+from spack.package import *
+
+
+class Mock2PatchedDependency(Package):
+ """Package patched by patch-a-foreign-dependency in builtin.mock."""
+
+ homepage = "http://www.example.com"
+ url = "http://www.example.com/mock2-patch-dependency-1.0.tar.gz"
+
+ version("1.0", md5="0123456789abcdef0123456789abcdef")
diff --git a/var/spack/repos/builtin.mock2/repo.yaml b/var/spack/repos/builtin.mock2/repo.yaml
new file mode 100644
index 0000000000..84923d8367
--- /dev/null
+++ b/var/spack/repos/builtin.mock2/repo.yaml
@@ -0,0 +1,2 @@
+repo:
+ namespace: 'builtin.mock2'