Make SpecBuildInterface pickleable (#25628)

* Add a __reduce__ method to SpecBuildInterface

This class was confusing pickle when being serialized,
due to its scary nature of being an object that disguise
as another type.

* Add more MacOS tests, switch them to clingo

* Fix condition syntax

* Remove Python v3.6 and v3.9 with macOS
This commit is contained in:
Massimiliano Culpo 2021-08-27 11:10:03 +02:00 committed by GitHub
parent 12e87ebf14
commit c152e558e9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 1 deletions

View file

@ -337,10 +337,14 @@ jobs:
run: |
brew install dash fish gcc gnupg2 kcov
- name: Run unit tests
env:
SPACK_TEST_SOLVER: clingo
run: |
git --version
. .github/workflows/setup_git.sh
. share/spack/setup-env.sh
$(which spack) bootstrap untrust spack-install
$(which spack) solve zlib
if [ "${{ needs.changes.outputs.with_coverage }}" == "true" ]
then
coverage run $(which spack) unit-test -x

View file

@ -1019,7 +1019,9 @@ class SpecBuildInterface(lang.ObjectWrapper):
def __init__(self, spec, name, query_parameters):
super(SpecBuildInterface, self).__init__(spec)
# Adding new attributes goes after super() call since the ObjectWrapper
# resets __dict__ to behave like the passed object
self.token = spec, name, query_parameters
is_virtual = spack.repo.path.is_virtual(name)
self.last_query = QueryState(
name=name,
@ -1027,6 +1029,9 @@ def __init__(self, spec, name, query_parameters):
isvirtual=is_virtual
)
def __reduce__(self):
return SpecBuildInterface, self.token
@lang.lazy_lexicographic_ordering(set_hash=False)
class Spec(object):