Mircea Trofin via llvm-dev
2021-Sep-30 17:07 UTC
[llvm-dev] Proposal: introduce dependency on abseil when building benchmarks
TL;DR; When either of LLVM_BUILD_BENCHMARKS or LIBCXX_INCLUDE_BENCHMARKS are enabled, as well as for llvm-test-suite, a dependency to abseil would either be auto-downloaded by the build system, or need to be user-specifiable, or provided in the source tree. Details There are (afaik) 3 copies of the google/benchmark <https://github.com/google/benchmark> project in the llvm tree: in llvm-test-suite, in llvm/utils, and in libcxx/utils/. The benchmark code uses some functionality otherwise offered by abseil <https://abseil.io/>. Over time, this is inconvenient: continued need for duplication for some features; integration issues in projects using abseil due to macro conflicts; and overall bit rot / maintenance overhead. We want <https://github.com/google/benchmark/pull/1183> to add a dependency to abseil to the benchmarks project. Abseil has some requirements <https://abseil.io/docs/cpp/platforms/platforms#:~:text=Abseil%20requires%20a%20code%20base,14%20through%20C%2B%2B20).> that may not perfectly match those of the impacted projects. For example, abseil stopped supporting Ubuntu 14.04 before its TLS. Naturally, projects snap to whichever version of benchmark they want to; but this new dependency would add an extra consideration when considering updating the version of benchmarks; and the need to handle the extra dependency (either by being OK with it being auto-downloaded, or via the other means described above) Are there any other issues that we're missing? Would anyone be hindered by this adoption of abseil in google/benchmarks? Thanks, Mircea. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210930/f4327121/attachment.html>
Mircea Trofin via llvm-dev
2021-Oct-05 15:06 UTC
[llvm-dev] Proposal: introduce dependency on abseil when building benchmarks
Gentle reminder - I'd plan on moving forward with the abseil dependency by the EOW, unless there's pushback. Thanks! On Thu, Sep 30, 2021 at 10:07 AM Mircea Trofin <mtrofin at google.com> wrote:> TL;DR; When either of LLVM_BUILD_BENCHMARKS or LIBCXX_INCLUDE_BENCHMARKS > are enabled, as well as for llvm-test-suite, a dependency to abseil would > either be auto-downloaded by the build system, or need to be > user-specifiable, or provided in the source tree. > > Details > > There are (afaik) 3 copies of the google/benchmark > <https://github.com/google/benchmark> project in the llvm tree: in > llvm-test-suite, in llvm/utils, and in libcxx/utils/. > > The benchmark code uses some functionality otherwise offered by abseil > <https://abseil.io/>. Over time, this is inconvenient: continued need for > duplication for some features; integration issues in projects using abseil > due to macro conflicts; and overall bit rot / maintenance overhead. > > We want <https://github.com/google/benchmark/pull/1183> to add a > dependency to abseil to the benchmarks project. > > Abseil has some requirements > <https://abseil.io/docs/cpp/platforms/platforms#:~:text=Abseil%20requires%20a%20code%20base,14%20through%20C%2B%2B20).> > that may not perfectly match those of the impacted projects. For example, > abseil stopped supporting Ubuntu 14.04 before its TLS. > > Naturally, projects snap to whichever version of benchmark they want to; > but this new dependency would add an extra consideration when considering > updating the version of benchmarks; and the need to handle the extra > dependency (either by being OK with it being auto-downloaded, or via the > other means described above) > > Are there any other issues that we're missing? Would anyone be hindered by > this adoption of abseil in google/benchmarks? > > Thanks, > Mircea. > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20211005/771043ae/attachment.html>
Reid Kleckner via llvm-dev
2021-Oct-06 03:57 UTC
[llvm-dev] Proposal: introduce dependency on abseil when building benchmarks
On Thu, Sep 30, 2021 at 10:08 AM Mircea Trofin via llvm-dev < llvm-dev at lists.llvm.org> wrote:> TL;DR; When either of LLVM_BUILD_BENCHMARKS or LIBCXX_INCLUDE_BENCHMARKS > are enabled, as well as for llvm-test-suite, a dependency to abseil would > either be auto-downloaded by the build system, or need to be > user-specifiable, or provided in the source tree. >Could you please elaborate on which of these approaches will be used for LLVM? How will this affect regular LLVM developers? ---- This is truly unrelated, but I have a lot of feelings about this, and I will use this opportunity to inappropriately complain that the benchmarks library has been spamming me with cmake warnings about std::regex for years: https://bugs.llvm.org/show_bug.cgi?id=38874 The CMake step really ought to be warning-clean. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20211005/a79e753b/attachment-0001.html>
Renato Golin via llvm-dev
2021-Oct-07 15:40 UTC
[llvm-dev] Proposal: introduce dependency on abseil when building benchmarks
On Thu, 30 Sept 2021 at 18:08, Mircea Trofin via llvm-dev < llvm-dev at lists.llvm.org> wrote:> Abseil has some requirements > <https://abseil.io/docs/cpp/platforms/platforms#:~:text=Abseil%20requires%20a%20code%20base,14%20through%20C%2B%2B20).> > that may not perfectly match those of the impacted projects. For example, > abseil stopped supporting Ubuntu 14.04 before its TLS. >The list of supported platforms is *definitely* too small for LLVM users. Half of their support is "best effort", which really isn't going to cut it once we forcefully depend on it. We definitely run benchmarks on X86_64, Arm32/64, MIPS, PowerPC (Linux, Mac and Windows on a mix of those), and there are probably people running on SystemZ, RISCV and other less known architectures. What is your plan for all the other platforms where abseil isn't supported? cheers, --renato -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20211007/201f5f72/attachment.html>
Tom Stellard via llvm-dev
2021-Oct-07 16:46 UTC
[llvm-dev] Proposal: introduce dependency on abseil when building benchmarks
On 9/30/21 10:07 AM, Mircea Trofin via llvm-dev wrote:> TL;DR; When either of LLVM_BUILD_BENCHMARKS or LIBCXX_INCLUDE_BENCHMARKS are enabled, as well as for llvm-test-suite, a dependency to abseil would either be auto-downloaded by the build system, or need to be user-specifiable, or provided in the source tree. > > Details > > There are (afaik) 3 copies of the google/benchmark <https://github.com/google/benchmark> project in the llvm tree: in llvm-test-suite, in llvm/utils, and in libcxx/utils/. > > The benchmark code uses some functionality otherwise offered by abseil <https://abseil.io/>. Over time, this is inconvenient: continued need for duplication for some features; integration issues in projects using abseil due to macro conflicts; and overall bit rot / maintenance overhead. > > We want <https://github.com/google/benchmark/pull/1183> to add a dependency to abseil to the benchmarks project. > > Abseil has some requirements <https://abseil.io/docs/cpp/platforms/platforms#:~:text=Abseil%20requires%20a%20code%20base,14%20through%20C%2B%2B20).> that may not perfectly match those of the impacted projects. For example, abseil stopped supporting Ubuntu 14.04 before its TLS. >Does this mean it would no longer be possible to build the test-suite on any architecture besides x86_64, aarch64, and arm? -Tom> Naturally, projects snap to whichever version of benchmark they want to; but this new dependency would add an extra consideration when considering updating the version of benchmarks; and the need to handle the extra dependency (either by being OK with it being auto-downloaded, or via the other means described above) > > Are there any other issues that we're missing? Would anyone be hindered by this adoption of abseil in google/benchmarks? > > Thanks, > Mircea. > > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >
Matthias Braun via llvm-dev
2021-Oct-08 01:56 UTC
[llvm-dev] Proposal: introduce dependency on abseil when building benchmarks
> On Sep 30, 2021, at 10:07 AM, Mircea Trofin via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > TL;DR; When either of LLVM_BUILD_BENCHMARKS or LIBCXX_INCLUDE_BENCHMARKS are enabled, as well as for llvm-test-suite, a dependency to abseil would either be auto-downloaded by the build system, or need to be user-specifiable, or provided in the source tree.FWIW: I'm not a fan of auto-downloading stuff. That's just a sneaky to add a dependency that sure may not give trouble to the users where the auto-download succeeds. But many companies have their build farms isolated from the internet and security people would not be happy if we just download a blob of code from a separate project that can change somewhat unnoticed by users of LLVM. Can't we copy the thing into the LLVM repository (aka vendoring) like we copied the benchmark library? I feel that things become a different story when we actually add dependencies... - Matthias
Chris Lattner via llvm-dev
2021-Oct-10 01:15 UTC
[llvm-dev] Proposal: introduce dependency on abseil when building benchmarks
> On Sep 30, 2021, at 10:07 AM, Mircea Trofin via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > TL;DR; When either of LLVM_BUILD_BENCHMARKS or LIBCXX_INCLUDE_BENCHMARKS are enabled, as well as for llvm-test-suite, a dependency to abseil would either be auto-downloaded by the build system, or need to be user-specifiable, or provided in the source tree.Hi Mircea, As others have pointed out, this seems like a fairly problematic dependency to take on.> There are (afaik) 3 copies of the google/benchmark <https://github.com/google/benchmark> project in the llvm tree: in llvm-test-suite, in llvm/utils, and in libcxx/utils/.Ok, that sounds bad. It seems like an intermediately good step is to have a single copy of this in the monorepo (e.g.) in llvm-project/utils, and have livcxx and llvm-test-suite use that copy. Is there any downside to consolidating these?> The benchmark code uses some functionality otherwise offered by abseil <https://abseil.io/>. Over time, this is inconvenient: continued need for duplication for some features; integration issues in projects using abseil due to macro conflicts; and overall bit rot / maintenance overhead.I’m not sure what you mean here - I think you are saying that there is code from abseil that was copied into the google benchmark library, and downstream code that uses both has issues? Or are you saying it is similar-but-different functionality that happens to use the same macro names? Because I don’t understand the benefit, it seems like introducing a new dependency is just a negative - can you explain the benefit more? -Chris> > We want <https://github.com/google/benchmark/pull/1183> to add a dependency to abseil to the benchmarks project. > > Abseil has some requirements <https://abseil.io/docs/cpp/platforms/platforms#:~:text=Abseil%20requires%20a%20code%20base,14%20through%20C%2B%2B20).> that may not perfectly match those of the impacted projects. For example, abseil stopped supporting Ubuntu 14.04 before its TLS. > > Naturally, projects snap to whichever version of benchmark they want to; but this new dependency would add an extra consideration when considering updating the version of benchmarks; and the need to handle the extra dependency (either by being OK with it being auto-downloaded, or via the other means described above) > > Are there any other issues that we're missing? Would anyone be hindered by this adoption of abseil in google/benchmarks?-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20211009/7e1f75ba/attachment.html>