diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2020-10-26 06:13:38 -0400 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2020-11-15 14:21:31 +0100 |
commit | fc9b0cbb7fe718cbbd63e3b51839b90b3e558037 (patch) | |
tree | 827db8968b02fe10d0ad6adfbddd927f6c8b5afc /mesonbuild/modules | |
parent | 59cacbbfc17dffe4aede1dfaa93bd5e1a3e994b2 (diff) | |
download | meson-fc9b0cbb7fe718cbbd63e3b51839b90b3e558037.zip meson-fc9b0cbb7fe718cbbd63e3b51839b90b3e558037.tar.gz meson-fc9b0cbb7fe718cbbd63e3b51839b90b3e558037.tar.bz2 |
stabilize sets that are converted to lists
The order of elements in sets cannot be relied upon, because the hash
values are randomized by Python. Whenever sets are converted to lists
we need to keep their order stable, or random changes in the command line
cause ninja to rebuild a lot of files unnecessarily. To stabilize them,
use either sort or OrderedSet. Sorting is not always applicable, but it
can be faster because it's done in C and it can produce slightly nicer
output.
Diffstat (limited to 'mesonbuild/modules')
-rw-r--r-- | mesonbuild/modules/sourceset.py | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/mesonbuild/modules/sourceset.py b/mesonbuild/modules/sourceset.py index e23e12e..e49a548 100644 --- a/mesonbuild/modules/sourceset.py +++ b/mesonbuild/modules/sourceset.py @@ -14,7 +14,7 @@ from collections import namedtuple from .. import mesonlib -from ..mesonlib import listify +from ..mesonlib import listify, OrderedSet from . import ExtensionModule from ..interpreterbase import ( noPosargs, noKwargs, permittedKwargs, @@ -111,7 +111,7 @@ class SourceSetHolder(MutableInterpreterObject, ObjectHolder): def collect(self, enabled_fn, all_sources, into=None): if not into: - into = SourceFiles(set(), set()) + into = SourceFiles(OrderedSet(), OrderedSet()) for entry in self.held_object: if all(x.found() for x in entry.dependencies) and \ all(enabled_fn(key) for key in entry.keys): |