Make _add_system_libs reentrant
The method _add_system_libs of ModifyEnvBase is not reentrant, and fails when called a second time. This happens in a CMake-based recipe with use_system_libs = True. It does not happen in Autotools- or Maven-based recipes. The build process fails with the following exception:
Recipe 'foo' failed at the build step 'configure'
Traceback (most recent call last):
File "../cerbero/build/oven.py", line 166, in _cook_recipe
loop.run_until_complete(stepfunc(recipe))
File "/usr/local/lib/python3.6/asyncio/base_events.py", line 484, in run_until_complete
return future.result()
File "../cerbero/build/recipe.py", line 54, in wrapped
await ret
File "../cerbero/build/build.py", line 167, in call
self._add_system_libs()
File "../cerbero/build/build.py", line 325, in _add_system_libs
self.set_env(var, val)
File "../cerbero/build/build.py", line 258, in set_env
self.check_reentrancy()
File "../cerbero/build/build.py", line 245, in check_reentrancy
raise RuntimeError('Do not modify the env inside @modify_environment, it will have no effect')
RuntimeError: Do not modify the env inside @modify_environment, it will have no effect
This patch fixes it assuming that, when _old_env is not empty, system lib paths have already been added.
Edited by Nirbheek Chauhan