小编Ker*_*ley的帖子

如何在 Bazel 中删除缓存的下载对象(例如从 http_archive 中)?

我的 Bazel C++ 项目的 CI 构建最近崩溃了。该错误表明 HTTPS 下载失败http_repository

INFO: Repository eigen instantiated at:
  no stack (--record_rule_instantiation_callstack not enabled)
Repository rule http_archive defined at:
  /private/var/tmp/_bazel_kstaley/efca2582089f638162aa9f6ccfe4282e/external/bazel_tools/tools/build_defs/repo/http.bzl:336:31: in <toplevel>
WARNING: Download from https://gitlab.com/libeigen/eigen/-/archive/56b3e3f3f8ca9972ca390c8296fde363bdab271c/eigen-56b3e3f3f8ca9972ca390c8296fde363bdab271c.tar.gz failed: class com.google.devtools.build.lib.bazel.repository.downloader.UnrecoverableHttpException GET returned 406 Not Acceptable
ERROR: An error occurred during the fetch of repository 'eigen':
   java.io.IOException: Error downloading [https://gitlab.com/libeigen/eigen/-/archive/56b3e3f3f8ca9972ca390c8296fde363bdab271c/eigen-56b3e3f3f8ca9972ca390c8296fde363bdab271c.tar.gz] to /private/var/tmp/_bazel_kstaley/efca2582089f638162aa9f6ccfe4282e/external/eigen/eigen-56b3e3f3f8ca9972ca390c8296fde363bdab271c.tar.gz: GET returned 406 Not Acceptable
ERROR: /Users/kstaley/src/myrepo/library/utilities/BUILD:58:11: //library/utilities:mylibrary depends on @eigen//:eigen in repository @eigen which failed to fetch. no such package '@eigen//': java.io.IOException: Error …
Run Code Online (Sandbox Code Playgroud)

bazel http-archive

8
推荐指数
1
解决办法
4万
查看次数

从常量初始化char数组

我从这段代码开始:

void func1() {
  char tmpfile[] = "/tmp/tmpXXXXXX";
  mkstemp(tmpfile);  // Note: mkstemp modifies the char array, cannot be const
  ...
}

void func2() {
  char tmpfile[] = "/tmp/tmpXXXXXX";
  mkstemp(tmpfile);  // Note: mkstemp modifies the char array, cannot be const
  ...
}
Run Code Online (Sandbox Code Playgroud)

我想重构这个以取出共享"/tmp/tmpXXXXXX"常量.这是一个尝试:

constexpr char kTmpfile[] = "/tmp/tmpXXXXXX";

void func1() {
  char tmpfile[] = kTmpfile;
  mkstemp(tmpfile);  // Note: mkstemp modifies the char array, cannot be const
  ...
}

void func2() {
  char tmpfile[] = kTmpfile;
  mkstemp(tmpfile);  // Note: mkstemp …
Run Code Online (Sandbox Code Playgroud)

c++

6
推荐指数
1
解决办法
169
查看次数

在 Bazel 中构建后如何避免删除缓存文件

genrule在 Bazel 中有一个应该操作一些文件的文件。我想我没有通过正确的路径访问这些文件,所以我想查看 Bazel 创建的目录结构,以便我可以调试。

echo在我的 genrule 中添加了一些语句,我可以看到 Bazel 在目录中工作/home/lyft/.cache/bazel/_bazel_lyft/8de0a1069de8d166c668173ca21c04ae/sandbox/linux-sandbox/1/execroot/。但是bazel运行完后,这个目录就没有了,所以无法查看目录结构。

如何防止 Bazel 删除其临时文件,以便我可以调试正在发生的事情?

bazel

5
推荐指数
2
解决办法
2327
查看次数

将上三角矩阵转换为对称矩阵的快速方法

我有一个np.float64值的上三角矩阵,如下所示:

array([[ 1.,  2.,  3.,  4.],
       [ 0.,  5.,  6.,  7.],
       [ 0.,  0.,  8.,  9.],
       [ 0.,  0.,  0., 10.]])
Run Code Online (Sandbox Code Playgroud)

我想将其转换为相应的对称矩阵,如下所示:

array([[ 1.,  2.,  3.,  4.],
       [ 2.,  5.,  6.,  7.],
       [ 3.,  6.,  8.,  9.],
       [ 4.,  7.,  9., 10.]])
Run Code Online (Sandbox Code Playgroud)

转换可以就地完成,也可以作为新矩阵进行。我希望它尽快。我如何快速做到这一点?

python optimization numpy

5
推荐指数
2
解决办法
171
查看次数

将 Bazel C++ 构建与系统包含目录隔离

我想让我的 Bazel C++ 构建独立于/usr/include/usr/local/include等。默认情况下,如本线程中所述,编译 C++ 程序时,其中的所有文件/usr/include都可用,而不仅仅是标准文件。

实现这一目标的最佳方法是什么?

一种选择是将标准头文件放入 tarball 中并通过 HTTP 将其托管在某个位置,然后添加并new_http_repository运行.gcc-nostdinc -isysroot

bazel

4
推荐指数
1
解决办法
2609
查看次数

如何将const uint8_t*转换为char*

我有一个const uint8_t*我想要转换为一个char*期望a的接口char*.

最简单的方法是使用C风格的强制转换:

const uint8_t* aptr = &some_buffer;
char* bptr = (char*)aptr;
Run Code Online (Sandbox Code Playgroud)

但是,我们的内部样式指南(基于Google C++样式指南)禁止C样式转换.

另一种选择是这种怪异,我发现这是非常难以理解的:

char *cptr = reinterpret_cast<char*>(const_cast<uint8_t*>(aptr));
Run Code Online (Sandbox Code Playgroud)

我尝试的其他选项都无法编译:

char* dptr = reinterpret_cast<char*>(aptr);
char* eptr = const_cast<char*>(aptr);
char* fptr = static_cast<char*>(aptr);
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以使用C++样式转换来执行此转换而不嵌套两个单独的转换操作?

c++ casting

1
推荐指数
2
解决办法
1390
查看次数

标签 统计

bazel ×3

c++ ×2

casting ×1

http-archive ×1

numpy ×1

optimization ×1

python ×1