-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Closed
Labels
Milestone
Description
Describe the bug
Similar to #14948, it seems like the bug has come back on meson 1.10.0 (not sure if the first version with the issue back, but it's certainly a version with the issue)
To Reproduce
Attempt to perform an out-of-tree build with a read-only source directory.
Expected behavior
Meson should work, but it does not, and it fails with this trace:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/mesonbuild/mesonmain.py", line 193, in run
return options.run_func(options)
~~~~~~~~~~~~~~~~^^^^^^^^^
File "/usr/lib/python3/dist-packages/mesonbuild/msetup.py", line 404, in run
app.generate()
~~~~~~~~~~~~^^
File "/usr/lib/python3/dist-packages/mesonbuild/msetup.py", line 196, in generate
return self._generate(env, capture, vslite_ctx)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/mesonbuild/msetup.py", line 255, in _generate
intr.run()
~~~~~~~~^^
File "/usr/lib/python3/dist-packages/mesonbuild/interpreter/interpreter.py", line 3063, in run
super().run()
~~~~~~~~~~~^^
File "/usr/lib/python3/dist-packages/mesonbuild/interpreterbase/interpreterbase.py", line 178, in run
self.evaluate_codeblock(self.ast, start=1)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/mesonbuild/interpreterbase/interpreterbase.py", line 203, in evaluate_codeblock
raise e
File "/usr/lib/python3/dist-packages/mesonbuild/interpreterbase/interpreterbase.py", line 195, in evaluate_codeblock
self.evaluate_statement(cur)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^
File "/usr/lib/python3/dist-packages/mesonbuild/interpreterbase/interpreterbase.py", line 209, in evaluate_statement
return self.function_call(cur)
~~~~~~~~~~~~~~~~~~^^^^^
File "/usr/lib/python3/dist-packages/mesonbuild/interpreterbase/interpreterbase.py", line 524, in function_call
(h_posargs, h_kwargs) = self.reduce_arguments(node.args)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/mesonbuild/interpreterbase/interpreterbase.py", line 609, in reduce_arguments
reduced_val = self.evaluate_statement(val)
File "/usr/lib/python3/dist-packages/mesonbuild/interpreterbase/interpreterbase.py", line 233, in evaluate_statement
return self.evaluate_arraystatement(cur)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^
File "/usr/lib/python3/dist-packages/mesonbuild/interpreterbase/interpreterbase.py", line 267, in evaluate_arraystatement
(arguments, kwargs) = self.reduce_arguments(cur.args)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
File "/usr/lib/python3/dist-packages/mesonbuild/interpreterbase/interpreterbase.py", line 602, in reduce_arguments
reduced_pos = [self.evaluate_statement(arg) for arg in args.arguments]
~~~~~~~~~~~~~~~~~~~~~~~^^^^^
File "/usr/lib/python3/dist-packages/mesonbuild/interpreterbase/interpreterbase.py", line 215, in evaluate_statement
return self.method_call(cur)
~~~~~~~~~~~~~~~~^^^^^
File "/usr/lib/python3/dist-packages/mesonbuild/interpreterbase/interpreterbase.py", line 550, in method_call
obj = self.evaluate_statement(invocable)
File "/usr/lib/python3/dist-packages/mesonbuild/interpreterbase/interpreterbase.py", line 209, in evaluate_statement
return self.function_call(cur)
~~~~~~~~~~~~~~~~~~^^^^^
File "/usr/lib/python3/dist-packages/mesonbuild/interpreterbase/interpreterbase.py", line 536, in function_call
res = func(node, func_args, kwargs)
File "/usr/lib/python3/dist-packages/mesonbuild/interpreterbase/decorators.py", line 237, in wrapper
return f(*nargs, **wrapped_kwargs)
File "/usr/lib/python3/dist-packages/mesonbuild/interpreterbase/decorators.py", line 565, in wrapper
return f(*wrapped_args, **wrapped_kwargs)
File "/usr/lib/python3/dist-packages/mesonbuild/interpreter/interpreter.py", line 857, in func_subproject
return self.do_subproject(args[0], kw)
~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/mesonbuild/interpreter/interpreter.py", line 915, in do_subproject
subdir, method = r.resolve(subp_name, force_method)
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/mesonbuild/wrap/wrap.py", line 610, in resolve
with DirectoryLock(self.subdir_root, '.wraplock',
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
DirectoryLockAction.WAIT,
^^^^^^^^^^^^^^^^^^^^^^^^^
'Failed to lock subprojects directory', optional=True):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/mesonbuild/utils/platform.py", line 111, in __exit__
if self.lockfile is None or self.lockfile.closed:
^^^^^^^^^^^^^
AttributeError: 'DirectoryLock' object has no attribute 'lockfile'
../../../base_dir/sources/gcon/meson.build:19:8: ERROR: Unhandled python exception
This is a Meson bug and should be reported!
I would suggest adding a test to avoid breaking this in the future.