代码之家  ›  专栏  ›  技术社区  ›  Teivaz Nima Soroush

Bazel用CACHACK构建C++示例失败

  •  1
  • Teivaz Nima Soroush  · 技术社区  · 6 年前

    我一直在遵循OSX的指示 here . 我已经安装了bazel,克隆了样本并尝试用 bazel build //main:hello-world . 但在这里它错了。

    INFO: Analysed target //main:hello-world (0 packages loaded). INFO:
    Found 1 target... ERROR:
    /Users/myuser/work/temp/bazel-sample/examples/cpp-tutorial/stage1/main/BUILD:1:1:
    Linking of rule '//main:hello-world' failed (Exit 1) ccache: error:
    Failed to create temporary file for
    /Users/myuser/.ccache/6/stats.tmp: Operation not
    permitted Target //main:hello-world failed to build Use
    --verbose_failures to see the command lines of failed build steps. INFO: Elapsed time: 0.295s, Critical Path: 0.07s INFO: 0 processes.
    FAILED: Build did NOT complete successfully
    

    好像我安装的ccache有问题。在运行同一命令之后 --verbose_failures

    INFO: Analysed target //main:hello-world (0 packages loaded). INFO:
    Found 1 target... ERROR:
    /Users/myuser/work/temp/bazel-sample/examples/cpp-tutorial/stage1/main/BUILD:1:1:
    Linking of rule '//main:hello-world' failed (Exit 1): cc_wrapper.sh
    failed: error executing command    (cd
    /private/var/tmp/_bazel_myuser/550c05da61518b4bbbb0ffdfd033154f/execroot/__main__
    && \   exec env - \
        APPLE_SDK_PLATFORM='' \
        APPLE_SDK_VERSION_OVERRIDE='' \
        PATH=/Users/myuser/Library/Android/sdk/platform-tools:/Users/myuser/Library/Android/sdk/tools:/Users/myuser/Library/Android/sdk/build-tools/25.0.0:/Users/myuser/Library/Android/ndk/android-ndk-r10c:/Applications/CMake.app/Contents/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/Users/myuser/bin
    \
        XCODE_VERSION_OVERRIDE=9.3.0 \   external/local_config_cc/cc_wrapper.sh -fobjc-link-runtime -Wl,-S -o
    bazel-out/darwin-fastbuild/bin/main/hello-world
    bazel-out/darwin-fastbuild/bin/main/_objs/hello-world/main/hello-world.o
    -headerpad_max_install_names -lc++ -no-canonical-prefixes)
    
    Use --sandbox_debug to see verbose messages from the sandbox ccache:
    error: Failed to create temporary file for
    /Users/myuser/.ccache/0/stats.tmp: Operation not permitted Target
    //main:hello-world failed to build INFO: Elapsed time: 0.294s,
    Critical Path: 0.07s INFO: 0 processes. FAILED: Build did NOT complete
    successfully
    

    我发现沙箱有问题。添加 --sandbox_debug 印刷品:

    INFO: Analysed target //main:hello-world (0 packages loaded).
    INFO: Found 1 target...
    ERROR: /Users/myuser/work/temp/bazel-sample/examples/cpp-tutorial/stage1/main/BUILD:1:1: Linking of rule '//main:hello-world' failed (Exit 1): sandbox-exec failed: error executing command 
      (cd /private/var/tmp/_bazel_myuser/550c05da61518b4bbbb0ffdfd033154f/execroot/__main__ && \
      exec env - \
        APPLE_SDK_PLATFORM='' \
        APPLE_SDK_VERSION_OVERRIDE='' \
        DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \
        PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/myuser/bin \
        SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk \
        TMPDIR=/var/folders/x3/r5tf7wfx3_q0xnyx95s3r5400000gq/T/ \
        XCODE_VERSION_OVERRIDE=9.3.0 \
      /usr/bin/sandbox-exec -f /private/var/tmp/_bazel_myuser/550c05da61518b4bbbb0ffdfd033154f/sandbox/darwin-sandbox/1/sandbox.sb /private/var/tmp/_bazel_myuser/550c05da61518b4bbbb0ffdfd033154f/execroot/__main__/_bin/process-wrapper '--timeout=0' '--kill_delay=15' external/local_config_cc/cc_wrapper.sh -fobjc-link-runtime -Wl,-S -o bazel-out/darwin-fastbuild/bin/main/hello-world bazel-out/darwin-fastbuild/bin/main/_objs/hello-world/main/hello-world.o -headerpad_max_install_names -lc++ -no-canonical-prefixes)
    ccache: error: Failed to create temporary file for /Users/myuser/.ccache/b/stats.tmp: Operation not permitted
    Target //main:hello-world failed to build
    INFO: Elapsed time: 0.268s, Critical Path: 0.06s
    INFO: 0 processes.
    FAILED: Build did NOT complete successfully
    

    沙盒文件的内容 sandbox.sb 是:

    (version 1)
    (debug deny)
    (allow default)
    (deny file-write*)
    (allow file-write*
        (subpath "/dev")
        (subpath "/Users/myuser/Library/Logs")
        (subpath "/Users/myuser/Library/Developer")
        (subpath "/private/var/folders/x3/r5tf7wfx3_q0xnyx95s3r5400000gq/T")
        (subpath "/private/var/tmp/_bazel_myuser/550c05da61518b4bbbb0ffdfd033154f/sandbox/darwin-sandbox/1/execroot/__main__")
        (subpath "/private/var/tmp")
        (subpath "/private/var/folders/x3/r5tf7wfx3_q0xnyx95s3r5400000gq/C")
        (subpath "/private/tmp")
    )
    

    它显然缺少写入到 /Users/myuser/.ccache 目录。我试过用 export CCACHE_DISABLE=1 但什么都没变。我怎样才能在不移除ccache的情况下修复它呢?

    1 回复  |  直到 6 年前
        1
  •  1
  •   hlopko    6 年前

    正在设置编译器的绝对路径并将其传递给 CC 环境变量选项?你可能需要使用 BAZEL_USE_CPP_ONLY_TOOLCHAIN=1 如果您安装了xcode。