aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2020-07-23 12:45:49 +0300
committerGitHub <noreply@github.com>2020-07-23 12:45:49 +0300
commit587e159d6c96afd5ff32871e8ff99699b95f2802 (patch)
treeca0c4450b0bc055c9b48d63b02ac2dd7dfba971e
parent6e7d548b11ac4ae940c3e08e16d3118ac3a40420 (diff)
parent62f3aa1dadfe006174eabfd65bfa089c7331b0dc (diff)
downloadmeson-587e159d6c96afd5ff32871e8ff99699b95f2802.zip
meson-587e159d6c96afd5ff32871e8ff99699b95f2802.tar.gz
meson-587e159d6c96afd5ff32871e8ff99699b95f2802.tar.bz2
Merge pull request #7460 from mensinda/fixDeepcpy
deps: Do not deepcopy internal libraries (fixes #7457)
-rw-r--r--.gitignore1
-rw-r--r--mesonbuild/dependencies/base.py10
-rwxr-xr-xrun_project_tests.py18
3 files changed, 20 insertions, 9 deletions
diff --git a/.gitignore b/.gitignore
index f87f562..fea337e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,3 +30,4 @@ packagecache
/docs/hotdoc-private*
*.pyc
+/*venv*
diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py
index 23701da..1bb71f7 100644
--- a/mesonbuild/dependencies/base.py
+++ b/mesonbuild/dependencies/base.py
@@ -252,6 +252,16 @@ class InternalDependency(Dependency):
self.ext_deps = ext_deps
self.variables = variables
+ def __deepcopy__(self, memo: dict) -> 'InternalDependency':
+ result = self.__class__.__new__(self.__class__)
+ memo[id(self)] = result
+ for k, v in self.__dict__.items():
+ if k in ['libraries', 'whole_libraries']:
+ setattr(result, k, copy.copy(v))
+ else:
+ setattr(result, k, copy.deepcopy(v, memo))
+ return result
+
def get_pkgconfig_variable(self, variable_name, kwargs):
raise DependencyException('Method "get_pkgconfig_variable()" is '
'invalid for an internal dependency')
diff --git a/run_project_tests.py b/run_project_tests.py
index 0f0bc4e..56b7e2a 100755
--- a/run_project_tests.py
+++ b/run_project_tests.py
@@ -1139,16 +1139,15 @@ def check_format():
'.build',
'.md',
}
+ skip_dirs = {
+ '.dub', # external deps are here
+ '.pytest_cache',
+ 'meson-logs', 'meson-private',
+ '.eggs', '_cache', # e.g. .mypy_cache
+ 'venv', # virtualenvs have DOS line endings
+ }
for (root, _, filenames) in os.walk('.'):
- if '.dub' in root: # external deps are here
- continue
- if '.pytest_cache' in root:
- continue
- if 'meson-logs' in root or 'meson-private' in root:
- continue
- if '__CMake_build' in root:
- continue
- if '.eggs' in root or '_cache' in root: # e.g. .mypy_cache
+ if any([x in root for x in skip_dirs]):
continue
for fname in filenames:
file = Path(fname)
@@ -1272,6 +1271,7 @@ if __name__ == '__main__':
options.extra_args += ['--cross-file', options.cross_file]
print('Meson build system', meson_version, 'Project Tests')
+ print('Using python', sys.version.split('\n')[0])
setup_commands(options.backend)
detect_system_compiler(options)
print_tool_versions()