Repository navigation
Conversation
Ports google/yggdrasil-decision-forests' pip-installable `ydf` package. Upstream tags no releases; pin the "[YDF] Release PYDF 0.16.1" commit. Bootstraps bazel from source (no riscv64 bazel binary exists) and drives upstream's own build_test_linux.sh/package_linux.sh recipe: bzlmod build of the pybind11 extension (abseil, protobuf, grpc, boringssl, highway, google_cloud_cpp among the statically-linked deps), collect_pip_files.py, `python -m build`, then auditwheel repair. TensorFlow is only an optional runtime extra (`ydf-tf`), not needed here; the Highway-based SIMD kernel already dispatches to a portable scalar target with no forced AVX2.
luhenry
added a commit
that referenced
this pull request
Sep 28, 2026
luhenry
marked this pull request as draft
September 28, 2026 07:18
Contributor
|
com_google_highway's BUILD.bazel unconditionally adds the Clang-only -menable-experimental-extensions copt on riscv64 (gotcha 567); gcc 14.3.1 in the manylinux_2_39_riscv64 image rejects it. Bazel's local toolchain autodetection defaults to gcc unless CC/CXX are exported before the build, so install clang+lld and export them ahead of the bazel invocation.
cp314 built cleanly after ~6.5h (gotcha 567's clang fix held) and then segfaulted in pybind11_protobuf's proto_caster_load_impl during upstream's own examples/minimal.py smoke test. ydf 0.16.1 ships no cp314 wheel on any platform, its own setup.py classifiers stop at 3.13, and upstream's own CI matrix is a single '3.12' entry marked "Currently unused" -- there is no upstream cp314 support to chase this against (gotcha 614).
The bundled license for the pybind11 integration is collected from the bazel external repo named pybind11_protobuf (pybind11_bazel is a separate, header-only shim that is intentionally skipped), so the wheel never ships a LICENSE.pybind11 file. The test smoke script was still asserting the old name, causing a bare AssertionError after an otherwise fully successful build, train, eval and inference run.
luhenry
marked this pull request as ready for review
September 29, 2026 06:17
luhenry
added a commit
that referenced
this pull request
Sep 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ydf0.16.1Compiles YDF's pybind11 extension over the Yggdrasil Decision Forests C++ library (Random Forest, GBT, CART, isolation forest training/serving). Upstream publishes no riscv64 wheel.
Mirrors upstream's own release recipe:
build_test_linux.shandpackage_linux.sh.Differs from upstream
Matrix: cp312/cp313/cp314 - upstream itself ships no cp314t wheel or free-threading support.
Testing
package_linux.sh'stest_package): installs the wheel and runsexamples/minimal.pyend to end (train, evaluate, save, reload, predict).License: Wheel bundles abseil-cpp, protobuf, grpc, boringssl, highway, google_cloud_cpp, pybind11 and other statically-linked C++ deps, all permissively licensed (Apache-2.0/BSD/MIT); upstream ships no licence text for them, so the build adds it.
CI running on this PR; will update with build results.