зеркало из https://github.com/mozilla/gecko-dev.git
servo: Merge #14601 - Raise warning when OSMesa path is not set (from Wafflespeanut:osmesa); r=emilio
In Ubuntu 14.04, I still get crashes due to non-existence of OsMesa library (#13515). It turned out that sometimes I have paths like `osmesa-src-<hash>` without `out/lib/gallium`. Now, we raise a warning whenever we don't find a proper path. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors <!-- Either: --> - [x] These changes do not require tests because it's related to mach. <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> Source-Repo: https://github.com/servo/servo Source-Revision: 44af5ea2e4ccb77f55dea5492408ebfcdeb73250
This commit is contained in:
Родитель
3552aeca2c
Коммит
db1f297b13
|
@ -54,13 +54,10 @@ def find_dep_path_newest(package, bin_path):
|
||||||
with cd(deps_path):
|
with cd(deps_path):
|
||||||
for c in glob(package + '-*'):
|
for c in glob(package + '-*'):
|
||||||
candidate_path = path.join(deps_path, c)
|
candidate_path = path.join(deps_path, c)
|
||||||
candidate_output = path.join(candidate_path, "output")
|
if path.exists(path.join(candidate_path, "output")):
|
||||||
if path.exists(candidate_output):
|
candidates.append(candidate_path)
|
||||||
candidates.append((path.getmtime(candidate_output), candidate_path))
|
|
||||||
candidates.sort(reverse=True)
|
|
||||||
if candidates:
|
if candidates:
|
||||||
_, candidate_path = candidates[0]
|
return max(candidates, key=lambda c: path.getmtime(path.join(c, "output")))
|
||||||
return candidate_path
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
@ -221,7 +218,10 @@ def is_linux():
|
||||||
def set_osmesa_env(bin_path, env):
|
def set_osmesa_env(bin_path, env):
|
||||||
"""Set proper LD_LIBRARY_PATH and DRIVE for software rendering on Linux and OSX"""
|
"""Set proper LD_LIBRARY_PATH and DRIVE for software rendering on Linux and OSX"""
|
||||||
if is_linux():
|
if is_linux():
|
||||||
osmesa_path = path.join(find_dep_path_newest('osmesa-src', bin_path), "out", "lib", "gallium")
|
dep_path = find_dep_path_newest('osmesa-src', bin_path)
|
||||||
|
if not dep_path:
|
||||||
|
return None
|
||||||
|
osmesa_path = path.join(dep_path, "out", "lib", "gallium")
|
||||||
env["LD_LIBRARY_PATH"] = osmesa_path
|
env["LD_LIBRARY_PATH"] = osmesa_path
|
||||||
env["GALLIUM_DRIVER"] = "softpipe"
|
env["GALLIUM_DRIVER"] = "softpipe"
|
||||||
elif is_macosx():
|
elif is_macosx():
|
||||||
|
@ -229,6 +229,8 @@ def set_osmesa_env(bin_path, env):
|
||||||
"out", "src", "gallium", "targets", "osmesa", ".libs")
|
"out", "src", "gallium", "targets", "osmesa", ".libs")
|
||||||
glapi_path = path.join(find_dep_path_newest('osmesa-src', bin_path),
|
glapi_path = path.join(find_dep_path_newest('osmesa-src', bin_path),
|
||||||
"out", "src", "mapi", "shared-glapi", ".libs")
|
"out", "src", "mapi", "shared-glapi", ".libs")
|
||||||
|
if not (osmesa_path and glapi_path):
|
||||||
|
return None
|
||||||
env["DYLD_LIBRARY_PATH"] = osmesa_path + ":" + glapi_path
|
env["DYLD_LIBRARY_PATH"] = osmesa_path + ":" + glapi_path
|
||||||
env["GALLIUM_DRIVER"] = "softpipe"
|
env["GALLIUM_DRIVER"] = "softpipe"
|
||||||
return env
|
return env
|
||||||
|
|
|
@ -734,8 +734,9 @@ class MachCommands(CommandBase):
|
||||||
# On Linux and mac, find the OSMesa software rendering library and
|
# On Linux and mac, find the OSMesa software rendering library and
|
||||||
# add it to the dynamic linker search path.
|
# add it to the dynamic linker search path.
|
||||||
try:
|
try:
|
||||||
args = [self.get_binary_path(use_release, not use_release)]
|
bin_path = self.get_binary_path(use_release, not use_release)
|
||||||
set_osmesa_env(args[0], os.environ)
|
if not set_osmesa_env(bin_path, os.environ):
|
||||||
|
print("Warning: Cannot set the path to OSMesa library.")
|
||||||
except BuildNotFound:
|
except BuildNotFound:
|
||||||
# This can occur when cross compiling (e.g. arm64), in which case
|
# This can occur when cross compiling (e.g. arm64), in which case
|
||||||
# we won't run the tests anyway so can safely ignore this step.
|
# we won't run the tests anyway so can safely ignore this step.
|
||||||
|
|
Загрузка…
Ссылка в новой задаче