From a6511fbafcf16dd60d424e9d31b667339857628a Mon Sep 17 00:00:00 2001 From: Peter Scheibel Date: Thu, 28 Mar 2019 11:25:44 -0700 Subject: Consistent patch ordering (#10879) * preserve the order in which patches are applied by packages (in spite of grouping them by 'when') * add tests confirming patch order --- .../packages/dep-diamond-patch-mid1/mid1.patch | 1 + .../packages/dep-diamond-patch-mid1/package.py | 30 ++++++++++++++++++++ .../packages/dep-diamond-patch-mid2/package.py | 33 ++++++++++++++++++++++ .../packages/dep-diamond-patch-top/package.py | 32 +++++++++++++++++++++ .../packages/dep-diamond-patch-top/top.patch | 1 + .../repos/builtin.mock/packages/patch/package.py | 3 +- 6 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid1/mid1.patch create mode 100644 var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid1/package.py create mode 100644 var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid2/package.py create mode 100644 var/spack/repos/builtin.mock/packages/dep-diamond-patch-top/package.py create mode 100644 var/spack/repos/builtin.mock/packages/dep-diamond-patch-top/top.patch (limited to 'var') diff --git a/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid1/mid1.patch b/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid1/mid1.patch new file mode 100644 index 0000000000..a4adb72bb1 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid1/mid1.patch @@ -0,0 +1 @@ +mid1 diff --git a/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid1/package.py b/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid1/package.py new file mode 100644 index 0000000000..f4ec1554fa --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid1/package.py @@ -0,0 +1,30 @@ +# Copyright 2013-2019 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 import * + + +class DepDiamondPatchMid1(Package): + r"""Package that requires a patch on a dependency + + W + / \ +X Y + \ / + Z + + This is package X + """ + + homepage = "http://www.example.com" + url = "http://www.example.com/patch-a-dependency-1.0.tar.gz" + + version('1.0', '0123456789abcdef0123456789abcdef') + + # single patch file in repo + depends_on('patch', patches='mid1.patch') + + def install(self, spec, prefix): + pass diff --git a/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid2/package.py b/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid2/package.py new file mode 100644 index 0000000000..2aea75f307 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid2/package.py @@ -0,0 +1,33 @@ +# Copyright 2013-2019 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 import * + + +class DepDiamondPatchMid2(Package): + r"""Package that requires a patch on a dependency + + W + / \ +X Y + \ / + Z + + This is package Y + """ + + homepage = "http://www.example.com" + url = "http://www.example.com/patch-a-dependency-1.0.tar.gz" + + version('1.0', '0123456789abcdef0123456789abcdef') + + # single patch file in repo + depends_on('patch', patches=[ + patch('http://example.com/urlpatch.patch', + sha256='mid21234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234'), # noqa: E501 + ]) + + def install(self, spec, prefix): + pass diff --git a/var/spack/repos/builtin.mock/packages/dep-diamond-patch-top/package.py b/var/spack/repos/builtin.mock/packages/dep-diamond-patch-top/package.py new file mode 100644 index 0000000000..21388011c5 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/dep-diamond-patch-top/package.py @@ -0,0 +1,32 @@ +# Copyright 2013-2019 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 import * + + +class DepDiamondPatchTop(Package): + r"""Package that requires a patch on a dependency + + W + / \ +X Y + \ / + Z + + This is package W + """ + + homepage = "http://www.example.com" + url = "http://www.example.com/patch-a-dependency-1.0.tar.gz" + + version('1.0', '0123456789abcdef0123456789abcdef') + + # single patch file in repo + depends_on('patch', patches='top.patch') + depends_on('dep-diamond-patch-mid1') + depends_on('dep-diamond-patch-mid2') + + def install(self, spec, prefix): + pass diff --git a/var/spack/repos/builtin.mock/packages/dep-diamond-patch-top/top.patch b/var/spack/repos/builtin.mock/packages/dep-diamond-patch-top/top.patch new file mode 100644 index 0000000000..bf1a1fdefa --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/dep-diamond-patch-top/top.patch @@ -0,0 +1 @@ +top diff --git a/var/spack/repos/builtin.mock/packages/patch/package.py b/var/spack/repos/builtin.mock/packages/patch/package.py index 704362af37..37ea72fb1a 100644 --- a/var/spack/repos/builtin.mock/packages/patch/package.py +++ b/var/spack/repos/builtin.mock/packages/patch/package.py @@ -13,9 +13,10 @@ class Patch(Package): url = "http://www.example.com/patch-1.0.tar.gz" version('1.0', '0123456789abcdef0123456789abcdef') + version('2.0', '0123456789abcdef0123456789abcdef') patch('foo.patch') - patch('bar.patch') + patch('bar.patch', when='@2:') patch('baz.patch') def install(self, spec, prefix): -- cgit v1.2.3-70-g09d2