Table of contents
See also the :ref:`MATLAB FAQ <matlab_faq>`.
Symptom: After upgrading Xcode on macOS, you encounter an error similar to the following:
$ bazel build ... ... ERROR: /private/var/tmp/_bazel_liang/6afb2531e78184cc48f3db789230c79d/ external/libbot/BUILD.bazel:59:1: undeclared inclusion(s) in rule '@libbot//:ldpc': this rule is missing dependency declarations for the following files included by 'external/libbot/bot2-lcm-utils/src/tunnel/ldpc/getopt.cpp': '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/ Developer/SDKs/MacOSX10.12.sdk/usr/include/ctype.h'
Solution: Install Xcode's command-line tools and reset the tools' path to be the default. To install Xcode's command-line tools:
$ xcode-select --install
Once installed, you should have bin/
, include/
, lib/
, and
libexec/
directories within /Library/Developer/CommandLineTools/usr/
.
Check the Xcode command line tools' path:
$ xcode-select -p
Drake's Bazel-based build system is currently
hard-coded
to assume the Xcode command line tools are in the default location of
/Applications/Xcode.app/Contents/Developer
. If the path is not the
default, reset it to be the default by executing the following command:
$ sudo xcode-select --reset
Symptom: The simulation runs and the visualization window appears, but no
objects are actually drawn. This appeared to be due to display drivers and/or
non support of hardware-accelerated rendering. To address this, go to
Virtual Machine Settings
, and check the Accelerate 3D Graphics
box under
Display settings; now the simulations draw properly.
Symptom: While the binary works with bazel run
, when you run a test using bazel test
, such as:
$ bazel test //drake/systems/sensors:rgbd_camera_test
you encounter a slew of errors from VTK / OpenGL:
ERROR: In /vtk/Rendering/OpenGL2/vtkXOpenGLRenderWindow.cxx, line 820 vtkXOpenGLRenderWindow (0x55880715b760): failed to create offscreen window ERROR: In /vtk/Rendering/OpenGL2/vtkOpenGLRenderWindow.cxx, line 816 vtkXOpenGLRenderWindow (0x55880715b760): GLEW could not be initialized. ERROR: In /vtk/Rendering/OpenGL2/vtkShaderProgram.cxx, line 453 vtkShaderProgram (0x5588071d5aa0): Shader object was not initialized, cannot attach it. ERROR: In /vtk/Rendering/OpenGL2/vtkOpenGLRenderWindow.cxx, line 1858 vtkXOpenGLRenderWindow (0x55880715b760): Hardware does not support the number of textures defined.
Solution: The best workaround is to first mark the test as as local in the BUILD
file, either
with local = 1
, or tags = [.., "local"],
. Doing so will make the specific target run without sandboxing, such that it has an environment similar to that of bazel run
.
As an example, in drake/systems/sensors/BUILD
:
drake_cc_googletest( name = "rgbd_camera_test", # ... local = 1, # ... )
If this does not work, then try running the test in Bazel without sandboxing:
$ bazel test --spawn_strategy=standalone //drake/systems/sensors:rgbd_camera_test
Please note that you can possibly add --spawn_strategy=standalone
to your ~/.bazelrc
, but be aware that this means your development machine
may have a different environment than other development machines when running the test.