Build error: No such file or directory: 'ray/serve/generated'

In my wsl ubuntu, I checked out to ray-2.9.0 and ray-2.9.1, both hit build issue. Followed build doc, in the last step, pip install -e . --verbose, I got error:
error: [Errno 2] No such file or directory: ‘ray/serve/generated’.
In an earlier build, I saw another error:
error: [Errno 2] No such file or directory: ‘ray/autoscaler/aws/defaults.yaml’

Any idea?
Following is more logs around the error:

DEBUG: /home/changhong94/ray/bazel/ray_deps_setup.bzl:67:14: No implicit mirrors used because urls were explicitly provided
DEBUG: /home/changhong94/ray/bazel/ray_deps_setup.bzl:67:14: No implicit mirrors used because urls were explicitly provided
Analyzing: 2 targets (0 packages loaded, 0 targets configured)
DEBUG: /home/changhong94/ray/bazel/ray.bzl:202:10: [<generated file external/jemalloc/libjemalloc/lib/libjemalloc.so>]
INFO: Analyzed 2 targets (25 packages loaded, 273 targets configured).
INFO: Found 2 targets…
[0 / 8] [Prepa] BazelWorkspaceStatusAction stable-status.txt
INFO: Elapsed time: 1.285s, Critical Path: 0.01s
INFO: 1 process: 1 internal.
INFO: Build completed successfully, 1 total action
INFO: Build completed successfully, 1 total action
error: [Errno 2] No such file or directory: ‘ray/serve/generated’
error: subprocess-exited-with-error

× python setup.py develop did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.
full command: /home/changhong94/miniconda3/envs/myenv/bin/python3.9 -c '
exec(compile('"'"''"'"''"'"'
# This is <pip-setuptools-caller> -- a caller that pip uses to run setup.py
#
# - It imports setuptools before invoking setup.py, to enable projects that directly
#   import from `distutils.core` to work with newer packaging standards.
# - It provides a clear error message when setuptools is not installed.
# - It sets `sys.argv[0]` to the underlying `setup.py`, when invoking `setup.py` so
#   setuptools doesn'"'"'t think the script is `-c`. This avoids the following warning:
#     manifest_maker: standard file '"'"'-c'"'"' not found".
# - It generates a shim setup.py, for handling setup.cfg-only projects.
import os, sys, tokenize

try:
    import setuptools
except ImportError as error:
    print(
        "ERROR: Can not execute `setup.py` since setuptools is not available in "
        "the build environment.",
        file=sys.stderr,
    )
    sys.exit(1)

__file__ = %r
sys.argv[0] = __file__

if os.path.exists(__file__):
    filename = __file__
    with tokenize.open(__file__) as f:
        setup_py_code = f.read()
else:
    filename = "<auto-generated setuptools caller>"
    setup_py_code = "from setuptools import setup; setup()"

exec(compile(setup_py_code, filename, "exec"))
'"'"''"'"''"'"' % ('"'"'/home/changhong94/ray/python/setup.py'"'"',), "<pip-setuptools-caller>", "exec"))' develop --no-deps