12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import os
- import shutil
- from devtools.yamaker.arcpath import ArcPath
- from devtools.yamaker.modules import py_srcs, Linkable, Switch
- from devtools.yamaker.project import NixProject
- from devtools.yamaker import python
- def post_install(self):
- python.extract_dist_info(self)
- # pypi archive with grpcio contains cpp core and python files
- # Python files in this archive are located in src/python/grpcio
- # In order to exclude additional PEERDIR usage in Arcadia
- # let's move src/python/grpcio content directly to contrib/python/grpcio/py3
- python_source_location = os.path.join(self.dstdir, "src/python/grpcio")
- grpcio_files = os.listdir(python_source_location)
- # move all files to root
- for elem in grpcio_files:
- shutil.move(os.path.join(python_source_location, elem), self.dstdir)
- # remove unnecessary folder src
- shutil.rmtree(os.path.join(self.dstdir, "src"))
- # Collect python files but remove files for pypi build and
- # yamaker related files
- with self.yamakes["."] as pb:
- py_src_common = py_srcs(
- self.dstdir,
- remove=[
- ".yandex_meta/__init__.py", # yamaker settings
- "grpc_core_dependencies.py",
- "support.py",
- "commands.py",
- "_spawn_patch.py",
- "_parallel_compile_patch.py",
- "grpc_version.py",
- ],
- )
- pb.to_py_library(
- module="PY3_LIBRARY",
- PY_SRCS=py_src_common,
- PEERDIR=["contrib/libs/grpc", "contrib/python/six"],
- ADDINCL=[
- "${ARCADIA_BUILD_ROOT}/contrib/libs/grpc",
- "contrib/libs/grpc",
- "contrib/libs/grpc/include",
- ArcPath("contrib/python/grpcio/py3", FOR="cython"),
- ],
- )
- # Function pointer is not sanitized for ubsan.
- # This decision has been done in original grpc repo.
- # see https://github.com/grpc/grpc/blob/v1.45.0/tools/bazel.rc#L103
- pb.after(
- "ADDINCL",
- Switch({"SANITIZER_TYPE == undefined": Linkable(CXXFLAGS=["-fno-sanitize=function"])}),
- )
- grpcio = NixProject(
- owners=["g:python-contrib"],
- projects=["python/grpcio"],
- arcdir="contrib/python/grpcio/py3",
- nixattr=python.make_nixattr("grpcio"),
- ignore_targets=[
- "cygrpc.cpython-310-x86_64-linux-gnu",
- ],
- copy_sources=[
- "src/python/grpcio/**/*.py",
- "src/python/grpcio/**/*.pxi",
- "src/python/grpcio/**/*.pxd",
- "src/python/grpcio/**/*.pyx",
- ],
- post_install=post_install,
- )
|