Skip to content
Open
Show file tree
Hide file tree
Changes from 21 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
b4d3948
bazel: add release structure improvements
napetrov Feb 20, 2026
87aad6c
bazel: fix CI issues
napetrov Feb 20, 2026
ff6aa6a
bazel: fix Copilot review issues
napetrov Feb 20, 2026
544bfa7
bazel: address remaining Copilot review comments
napetrov Feb 20, 2026
38f02dc
bazel: fix DAAL release_dynamic runfiles/SONAME resolution
napetrov Feb 25, 2026
b0a5201
bazel: address Copilot round-3 review feedback
napetrov Feb 27, 2026
98edf09
bazel: fix Bzlmod repo mapping in transition and escape format string
napetrov Mar 2, 2026
3584237
bazel: read binary ABI version from makefile.ver instead of hardcoding
napetrov Mar 3, 2026
dcb0115
bazel: remove cc_dynamic_lib SONAME fallback, fix docstrings
napetrov Mar 3, 2026
2caa303
bazel: fix MKL sandbox link failure in examples
napetrov Mar 4, 2026
d8a96f8
bazel: add daal core_static dependency for dev link mode tests
napetrov Mar 4, 2026
8283906
bazel: fix MKL static archive order for dev-mode DAAL example link
napetrov Mar 5, 2026
da99a6e
Merge branch 'main' into bazel/release-structure-improvements
Alexandr-Solovev Mar 6, 2026
17d08a9
upd daal examples and test ci job for sklearnex with bazel build
Alexandr-Solovev Mar 6, 2026
07cbc08
fixes for ci
Alexandr-Solovev Mar 6, 2026
c056eb5
Merge branch 'main' into bazel/release-structure-improvements
Alexandr-Solovev Mar 6, 2026
ce9f29c
Address Copilot review comments on #3513
napetrov Mar 7, 2026
dbb3c4f
bazel: allow empty DPC runtime globs in onedal_release repo
napetrov Mar 7, 2026
bbdc7e6
bazel: restore MKL static deps for onedal_dynamic
napetrov Mar 7, 2026
730e0f5
remove ci validation for bazel build with sklearnex
Alexandr-Solovev Mar 17, 2026
2e27193
Merge branch 'main' into bazel/release-structure-improvements
Alexandr-Solovev Mar 17, 2026
debee1b
bazel: fix external headers leaking into release include/
napetrov Mar 17, 2026
bb74239
bazel: fix onedal_dynamic glob to avoid duplicate .so link inputs
napetrov Mar 17, 2026
90618ae
bazel: fix include layout and exclude daal_win.h from Linux release
napetrov Mar 18, 2026
0c84638
bazel: set SONAME for shared libs via VersionInfo
napetrov Mar 18, 2026
a169446
bazel: address review comments (ASCII output, Linux guard, dal_exampl…
napetrov Mar 18, 2026
5b48c26
restore for fix the public ci step
Alexandr-Solovev Mar 19, 2026
d023fa9
Merge branch 'main' into bazel/release-structure-improvements
Alexandr-Solovev Mar 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions BUILD
Original file line number Diff line number Diff line change
@@ -1,6 +1,21 @@
load("@onedal//dev/bazel:release.bzl",
"release",
"release_include",
"release_extra_file",
)
load("@onedal//dev/bazel:scripts.bzl",
"generate_vars_sh",
"generate_pkgconfig",
)

generate_vars_sh(
name = "release_vars_sh",
out = "env/vars.sh",
)

generate_pkgconfig(
name = "release_pkgconfig",
out = "lib/pkgconfig/onedal.pc",
)
Comment on lines +11 to 19
Copy link

Copilot AI Mar 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

//:release now always depends on release_vars_sh and release_pkgconfig. If //:release is built on unsupported platforms (e.g., Windows), these targets will currently generate Unix shell artifacts and/or require gcc. Consider guarding these with platform constraints or adding a Windows-specific implementation before making them unconditional.

Copilot uses AI. Check for mistakes.

release(
Expand Down Expand Up @@ -37,4 +52,8 @@ release(
],
"//conditions:default": [],
}),
extra_files = [
release_extra_file(":release_vars_sh", "env/vars.sh"),
release_extra_file(":release_pkgconfig", "lib/pkgconfig/onedal.pc"),
],
)
23 changes: 23 additions & 0 deletions deploy/local/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#===============================================================================
# Copyright contributors to the oneDAL project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#===============================================================================

package(default_visibility = ["//visibility:public"])

exports_files([
"vars_lnx.sh",
"vars_mac.sh",
"vars_win.bat",
])
21 changes: 21 additions & 0 deletions deploy/pkg-config/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#===============================================================================
# Copyright contributors to the oneDAL project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#===============================================================================

package(default_visibility = ["//visibility:public"])

exports_files([
"pkg-config.cpp",
])
53 changes: 39 additions & 14 deletions dev/bazel/config/config.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -120,18 +120,25 @@ VersionInfo = provider(
"build",
"buildrev",
"status",
# Binary ABI version (distinct from product version).
# Used for SONAME and shared library symlinks.
# Matches Make's MAJORBINARY / MINORBINARY variables.
"binary_major",
"binary_minor",
],
)

def _version_info_impl(ctx):
return [
VersionInfo(
major = ctx.attr.major,
minor = ctx.attr.minor,
update = ctx.attr.update,
build = ctx.attr.build,
buildrev = ctx.attr.buildrev,
status = ctx.attr.status,
major = ctx.attr.major,
minor = ctx.attr.minor,
update = ctx.attr.update,
build = ctx.attr.build,
buildrev = ctx.attr.buildrev,
status = ctx.attr.status,
binary_major = ctx.attr.binary_major,
binary_minor = ctx.attr.binary_minor,
)
]

Expand All @@ -144,6 +151,10 @@ version_info = rule(
"build": attr.string(mandatory=True),
"buildrev": attr.string(mandatory=True),
"status": attr.string(mandatory=True),
# ABI binary version — used for SONAME and symlinks.
# Must match MAJORBINARY/MINORBINARY in makefile.
"binary_major": attr.string(mandatory=True),
"binary_minor": attr.string(mandatory=True),
},
)

Expand Down Expand Up @@ -204,20 +215,34 @@ def _detect_cpu_extension(repo_ctx):

def _declare_onedal_config_impl(repo_ctx):
auto_cpu = _detect_cpu_extension(repo_ctx)

makefile_ver = repo_ctx.path(Label("@onedal//:makefile.ver"))
makefile_content = repo_ctx.read(makefile_ver)

# Parse MAJORBINARY and MINORBINARY
binary_major = "4"
binary_minor = "0"
for line in makefile_content.splitlines():
if line.startswith("MAJORBINARY"):
binary_major = line.split("=")[1].strip()
elif line.startswith("MINORBINARY"):
binary_minor = line.split("=")[1].strip()

repo_ctx.template(
"BUILD",
Label("@onedal//dev/bazel/config:config.tpl.BUILD"),
substitutions = {
"%{auto_cpu}": auto_cpu,
"%{version_major}": "2026",
"%{version_minor}": "0",
"%{version_update}": "0",
"%{version_build}": utils.datestamp(repo_ctx),
"%{version_buildrev}": "work",
"%{version_status}": "P",
"%{auto_cpu}": auto_cpu,
"%{version_major}": "2026",
"%{version_minor}": "0",
"%{version_update}": "0",
"%{version_build}": utils.datestamp(repo_ctx),
"%{version_buildrev}": "work",
"%{version_status}": "P",
"%{version_binary_major}": binary_major,
"%{version_binary_minor}": binary_minor,
},
)

declare_onedal_config = repository_rule(
implementation = _declare_onedal_config_impl,
local = True,
Expand Down
4 changes: 4 additions & 0 deletions dev/bazel/config/config.tpl.BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ version_info(
build = "%{version_build}",
buildrev = "%{version_buildrev}",
status = "%{version_status}",
# Binary ABI version for SONAME and shared library symlinks.
# Must match MAJORBINARY/MINORBINARY in makefile.
binary_major = "%{version_binary_major}",
binary_minor = "%{version_binary_minor}",
)

config_flag(
Expand Down
49 changes: 40 additions & 9 deletions dev/bazel/dal.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,8 @@ def dal_test(name, hdrs=[], srcs=[], dal_deps=[], dal_test_deps=[],
extra_deps=[], host_hdrs=[], host_srcs=[], host_deps=[],
dpc_hdrs=[], dpc_srcs=[], dpc_deps=[], compile_as=[ "c++", "dpc++" ],
framework="catch2", data=[], tags=[], private=False,
mpi=False, ccl=False, mpi_ranks=0, args=[], **kwargs):
mpi=False, ccl=False, mpi_ranks=0, args=[],
use_onedal_release_libs=True, **kwargs):
# TODO: Check `compile_as` parameter
# TODO: Refactor this rule once decision on the tests structure is made
if not framework in ["catch2", "none"]:
Expand All @@ -179,7 +180,7 @@ def dal_test(name, hdrs=[], srcs=[], dal_deps=[], dal_test_deps=[],
compile_as = compile_as,
dal_deps = (
dal_test_deps +
_test_link_mode_deps(dal_deps)
_test_link_mode_deps(dal_deps, use_onedal_release_libs)
) + ([
"@onedal//cpp/oneapi/dal/test/engine:common",
"@onedal//cpp/oneapi/dal/test/engine:catch2_main",
Expand Down Expand Up @@ -287,24 +288,26 @@ def dal_collect_parameters(name, root, modules=[], target="parameters", dal_deps
**kwargs,
)

def dal_example(name, dal_deps=[], **kwargs):
def dal_example(name, dal_deps=[], use_onedal_release_libs=True, is_daal=False, **kwargs):
dal_test(
name = name,
dal_deps = [
"@onedal//cpp/oneapi/dal:core",
"@onedal//cpp/oneapi/dal/io",
] + dal_deps,
] + dal_deps if not is_daal else dal_deps,
use_onedal_release_libs = use_onedal_release_libs,
Copy link

Copilot AI Mar 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In dal_example, the conditional expression is parsed as [core, io] + (dal_deps if not is_daal else dal_deps), so is_daal=True still prepends oneAPI DAL deps. Add parentheses so DAAL examples don’t accidentally link against oneAPI DAL libraries.

Copilot uses AI. Check for mistakes.
Comment on lines +297 to +305
framework = "none",
**kwargs,
)

def dal_example_suite(name, srcs, **kwargs):
def dal_example_suite(name, srcs, is_daal=False, **kwargs):
suite_deps = []
for src in srcs:
_, alg_name, src_file = src.rsplit('/', 2)
example_name, _ = paths.split_extension(src_file)
dal_example(
name = example_name,
is_daal = is_daal,
srcs = [ src ],
**kwargs,
)
Expand All @@ -314,31 +317,33 @@ def dal_example_suite(name, srcs, **kwargs):
tests = suite_deps,
)

def dal_algo_example_suite(algos, dal_deps=[], **kwargs):
def dal_algo_example_suite(algos, dal_deps=[], is_daal=False, **kwargs):
for algo in algos:
dal_example_suite(
name = algo,
is_daal = is_daal,
srcs = native.glob(["source/{}/*.cpp".format(algo)]),
dal_deps = dal_deps + [
"@onedal//cpp/oneapi/dal/algo:{}".format(algo),
],
**kwargs,
)

def _test_link_mode_deps(dal_deps):
def _test_link_mode_deps(dal_deps, use_onedal_release_libs=True):
return _select({
"@config//:test_link_mode_dev": dal_deps,
"@config//:test_link_mode_release_static": [
"@onedal_release//:onedal_static",
],
] if use_onedal_release_libs else [],
"@config//:test_link_mode_release_dynamic": [
"@onedal_release//:onedal_dynamic",
],
] if use_onedal_release_libs else [],
})

def _test_deps_on_daal():
return _select({
"@config//:test_link_mode_dev": [
"@onedal//cpp/daal:core_static",
"@onedal//cpp/daal:threading_static",
],
"@config//:test_link_mode_release_static": [
Expand Down Expand Up @@ -600,3 +605,29 @@ def _expand_select(deps):
else:
expanded += [dep]
return expanded

def daal_example_suite(name, srcs, **kwargs):
dal_example_suite(
name = name,
srcs = srcs,
use_onedal_release_libs = False,
is_daal = True,
**kwargs,
)

def daal_algo_example_suite(algos, dal_deps=[], **kwargs):
"""Build DAAL example suites using classic DAAL kernel deps.

Unlike dal_algo_example_suite(), this function does NOT add oneAPI
(@onedal//cpp/oneapi/dal/algo/...) targets — DAAL examples use daal.h
and depend on DAAL kernels (@onedal//cpp/daal/src/algorithms/<algo>:kernel).
"""
for algo in algos:
daal_example_suite(
name = algo,
srcs = native.glob(["source/{}/*.cpp".format(algo)]),
dal_deps = dal_deps + [
"@onedal//cpp/daal/src/algorithms/{}:kernel".format(algo),
],
**kwargs,
)
4 changes: 3 additions & 1 deletion dev/bazel/deps/mkl.tpl.BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,10 @@ cc_library(
cc_library(
name = "mkl_static",
srcs = [
"lib/libmkl_core.a",
# Keep MKL static archives in canonical dependency order.
# libmkl_intel_ilp64.a references mkl_serv_* symbols from libmkl_core.a.
"lib/libmkl_intel_ilp64.a",
"lib/libmkl_core.a",
"lib/libmkl_tbb_thread.a",
],
linkopts = [
Expand Down
12 changes: 12 additions & 0 deletions dev/bazel/deps/onedal.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,23 @@ onedal_repo = repos.prebuilt_libs_repo_rule(

# Dynamic
"lib/intel64/libonedal_core.so",
"lib/intel64/libonedal_core.so.%{version_binary_major}",
"lib/intel64/libonedal_core.so.%{version_binary_major}.%{version_binary_minor}",
"lib/intel64/libonedal_thread.so",
"lib/intel64/libonedal_thread.so.%{version_binary_major}",
"lib/intel64/libonedal_thread.so.%{version_binary_major}.%{version_binary_minor}",
"lib/intel64/libonedal.so",
"lib/intel64/libonedal.so.%{version_binary_major}",
"lib/intel64/libonedal.so.%{version_binary_major}.%{version_binary_minor}",
"lib/intel64/libonedal_dpc.so",
"lib/intel64/libonedal_dpc.so.%{version_binary_major}",
"lib/intel64/libonedal_dpc.so.%{version_binary_major}.%{version_binary_minor}",
"lib/intel64/libonedal_parameters.so",
"lib/intel64/libonedal_parameters.so.%{version_binary_major}",
"lib/intel64/libonedal_parameters.so.%{version_binary_major}.%{version_binary_minor}",
"lib/intel64/libonedal_parameters_dpc.so",
"lib/intel64/libonedal_parameters_dpc.so.%{version_binary_major}",
"lib/intel64/libonedal_parameters_dpc.so.%{version_binary_major}.%{version_binary_minor}",
],
build_template = "@onedal//dev/bazel/deps:onedal.tpl.BUILD",
)
27 changes: 19 additions & 8 deletions dev/bazel/deps/onedal.tpl.BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ cc_library(
hdrs = glob([
"include/**/*.h",
"include/oneapi/**/*.hpp",
], allow_empty=True),
]),
includes = [ "include" ],
)

Expand Down Expand Up @@ -43,15 +43,26 @@ cc_library(
],
deps = [
":headers",
Copy link

Copilot AI Mar 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

onedal_static no longer depends on any MKL target. In release-static link mode, dependents that only link @onedal_release//:onedal_static are likely to hit undefined MKL symbols (the pkg-config template also expects MKL libs to be part of the link line). Please add the appropriate MKL dependency back for the static variant (e.g., @mkl//:mkl_core / @mkl//:mkl_static, consistent with how static linking is expected to work).

Suggested change
":headers",
":headers",
"@mkl//:mkl_static",

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as the later comment on this topic: MKL is statically embedded in the prebuilt oneDAL archives via ar -M. Adding @mkl//:mkl_static would cause duplicate symbol linking.

Copy link

Copilot AI Mar 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

onedal_static wraps prebuilt static archives (libonedal.a, libonedal_parameters.a) but currently has no dependency on MKL/TBB libraries. Consumers that link only @onedal_release//:onedal_static (as dal_test does in --test_link_mode=release_static) may get unresolved symbols unless the required runtime libs are pulled in elsewhere. Consider adding the required deps (e.g., MKL static + TBB) here so the target is self-contained for linking.

Suggested change
":headers",
":headers",
"@tbb//:tbb_binary",
"@tbb//:tbbmalloc_binary",
"@mkl//:mkl_static",

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Declining this suggestion. In release mode, MKL is statically embedded into the prebuilt oneDAL archives at build time via ar -M (the same mechanism Make uses). The onedal_static target wraps these prebuilt archives where MKL symbols are already fully included. Adding @mkl//:mkl_static here would cause MKL to be linked twice, producing duplicate symbol errors.

"@mkl//:mkl_core",
],
)

cc_library(
name = "onedal_static_dpc",
srcs = [
"lib/intel64/libonedal_dpc.a",
"lib/intel64/libonedal_parameters_dpc.a",
],
deps = [
":headers",
"@mkl//:mkl_dpc",
],
)

cc_library(
name = "core_dynamic",
srcs = glob([
"lib/intel64/libonedal_core.so*",
], allow_empty=True),
"lib/intel64/libonedal_core.so.%{version_binary_major}.%{version_binary_minor}",
]),
Comment on lines 61 to +65
Copy link

Copilot AI Mar 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using glob(["lib/intel64/libonedal_core.so*"]) will match the unversioned .so symlink plus the versioned .so.<major> symlink and the real .so.<major>.<minor> file produced by the release rule. That means consumers of :core_dynamic may end up linking the same library multiple times. Consider selecting a single file for linking (e.g., the real .so.<major>.<minor>), and expose the other symlinks via a separate filegroup/data if they’re needed at runtime.

Copilot uses AI. Check for mistakes.
deps = [
":headers",
# TODO: Currently vml_ipp lib depends on TBB, but it shouldn't
Expand All @@ -63,8 +74,8 @@ cc_library(
cc_library(
name = "thread_dynamic",
srcs = glob([
"lib/intel64/libonedal_thread.so*",
], allow_empty=True),
"lib/intel64/libonedal_thread.so.%{version_binary_major}.%{version_binary_minor}",
]),
Comment on lines 63 to +78
Copy link

Copilot AI Mar 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

core_dynamic/thread_dynamic use glob() for a single expected versioned .so file. This can silently succeed with an empty match (depending on Bazel settings) and later fail in less obvious ways; it’s safer to reference the exact expected file path (with the substituted version placeholders) so missing artifacts fail fast.

Copilot uses AI. Check for mistakes.
deps = [
":headers",
"@tbb//:tbb_binary",
Expand All @@ -77,7 +88,7 @@ cc_library(
srcs = glob([
"lib/intel64/libonedal.so*",
"lib/intel64/libonedal_parameters.so*",
], allow_empty=True),
]),
Comment on lines 86 to +94
Copy link

Copilot AI Mar 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

glob(["lib/intel64/libonedal.so*", ...]) will match the unversioned symlink, the major-version symlink, and the real *.so.X.Y file once the release rule starts creating all three. Passing multiple matching .so files to the same cc_library can lead to duplicate/ambiguous link inputs. Prefer selecting a single shared object (e.g., only the real *.so.%{version_binary_major}.%{version_binary_minor} like core_dynamic/thread_dynamic, or only the unversioned .so symlink) for each cc_library target.

Copilot uses AI. Check for mistakes.
Comment on lines +88 to +94
Copy link

Copilot AI Mar 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

onedal_dynamic now globs libonedal.so* / libonedal_parameters.so*, which will include the real file plus the .so.<major> and .so symlinks. Passing multiple aliases of the same shared library as inputs is unnecessary and can lead to duplicate linker inputs; prefer listing just the intended link name (typically the unversioned .so) or a single, specific versioned file.

Copilot uses AI. Check for mistakes.
Comment on lines 86 to +94
deps = [
":headers",
"@mkl//:mkl_static",
Expand All @@ -87,7 +98,7 @@ cc_library(
cc_library(
name = "onedal_dynamic_dpc",
srcs = glob([
"lib/intel64/libonedal_dpc.so*",
"lib/intel64/libonedal_dpc.so.%{version_binary_major}.%{version_binary_minor}",
"lib/intel64/libonedal_parameters_dpc.so*",
Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

libonedal_parameters_dpc.so* will now match multiple files after this PR adds versioned .so plus .so.<major> and .so symlinks. That can feed duplicate linker inputs into onedal_dynamic_dpc. Prefer a single deterministic input (e.g., the fully versioned .so.<major>.<minor> like libonedal_dpc, or only the unversioned .so symlink) to avoid accidental multi-match behavior.

Suggested change
"lib/intel64/libonedal_parameters_dpc.so*",
"lib/intel64/libonedal_parameters_dpc.so.%{version_binary_major}.%{version_binary_minor}",

Copilot uses AI. Check for mistakes.
], allow_empty=True),
Comment on lines 103 to 106
Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

libonedal_parameters_dpc.so* will match both the real versioned file and the .so.<major> / .so symlinks introduced by the release packaging, which can add duplicate shared-library inputs and (if SONAME is missing) inconsistent DT_NEEDED names. Consider narrowing this (and similarly the libonedal.so* / libonedal_parameters.so* globs in onedal_dynamic) to only the real .so.%{version_binary_major}.%{version_binary_minor} file to avoid pulling symlinks into link inputs.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment is on an outdated diff. The glob was narrowed to the exact versioned file (.so.X.Y) in a subsequent commit to avoid pulling symlinks into link inputs.

deps = [
Expand Down
Loading
Loading