openeuler-riscv / oerv-team

OERV 实习生工作中心
8 stars 39 forks source link

bazel 使用了rdcycle 指令 #892

Closed wzssyqa closed 2 months ago

wzssyqa commented 3 months ago

bazel-5.3.0-1.oe2403.riscv64/usr/bin/bazel-real bazel-5.3.0-1.oe2403.riscv64/usr/bin/bazel-5.3.0-linux-riscv64

wzssyqa commented 3 months ago

这个问题的根是 abseil-cpp abseil-cpp 更新之后,重新编译一下bazel就行了。

怎么看出来的: 反汇编 bazel, 可以看出来是函数

_ZN4absl12lts_2021110213base_internal18UnscaledCycleClock3NowEv

中使用了rdcycle.

echo _ZN4absl12lts_2021110213base_internal18UnscaledCycleClock3NowEv | c++filt

可以看到这个函数原名是

absl::lts_20211102::base_internal::UnscaledCycleClock::Now()
laokz commented 2 months ago

这个问题是由于依赖了abseil-cpp引起的。而引入这个包的过程比较复杂: 首先是,源码中由distdir_deps.bzl定义了个依赖列表,其中有abseil-cpp

    "com_google_absl": {
        "archive": "20211102.0.tar.gz",
        "sha256": "dcf71b9cba8dc0ca9940c4b316a0c796be8fab42b070bb6b7cab62b48f0e66c4",
        "urls": [
            "https://mirror.bazel.build/github.com/abseil/abseil-cpp/archive/refs/tags/20211102.0.tar.gz",
            "https://github.com/abseil/abseil-cpp/archive/refs/tags/20211102.0.tar.gz",
        ],
        "used_in": [
            "additional_distfiles",
            "test_WORKSPACE_files",
        ],
        "strip_prefix": "abseil-cpp-20211102.0",
    },

查看了abseil-cpp的github官网,最新的tarball也还没有解决rdcycle问题。因此无法在此处打补丁。

  1. 上述依赖包的下载、解包、hash验证、编译等过程,是由现场制作出的blaze工具完成的。该工具由一系列c++程序构建,相关功能分散在各个文件中,没有简洁合适的位置能hack一个特定于abseil-cpp的补丁。

鉴于上述情况,同时考虑到2403依赖bazel的只有tensorflow相关包,且tensorflow还不支持rv架构,因此建议该问题挂起,删除OBS、EBS中已生成的bazel rpm包。

@Jingwiw

Jingwiw commented 2 months ago

这个问题不能挂起,首先 tensorflow 在 2403 sp1 需要被支持,是开源之夏的任务

wzssyqa commented 2 months ago

改一下 distdir_deps.bzl,指定一个我们自己的tarball不就行了?

laokz commented 2 months ago

嗯 可以试试

laokz commented 2 months ago

皆大欢喜:distdir_deps.bzl有patch参数

https://gitee.com/src-openeuler/bazel/pulls/29