[Build] Fix for DeepEP manylinux pidfd sycall usage (#49814)

Tyler Michael Smith committed Jul 25, 2026 at 15:29 UTC ee1d99636702b8ed9ad88c2c2b833d331dce01c1
1 file changed +27
tools/ep_kernels/install_python_libraries.sh
+27
@@ -170,6 +170,33 @@ do_build() {
170 sed -i "s|f'{nvshmem_dir}/include']|f'{nvshmem_dir}/include', '${CUDA_HOME}/include/cccl']|" "setup.py"
171 fi
172
173 + # DeepEPv2 requires Linux 5.6+ at runtime for pidfd_getfd (pidfd_open was
174 + # added in Linux 5.3), but manylinux headers predate both definitions.
175 + # DeepEP is built as a separate wheel for the vLLM container image and is
176 + # not included in the vLLM wheel, so this does not change its manylinux ABI.
177 + if [[ "$name" == "DeepEP" ]] && \
178 + ! grep -q "vLLM manylinux syscall compatibility" \
179 + csrc/kernels/backend/symmetric.hpp; then
180 + sed -i '1i\
181 +// vLLM manylinux syscall compatibility\
182 +#if defined(__x86_64__) || defined(__aarch64__)\
183 +#ifndef SYS_pidfd_open\
184 +#ifdef __NR_pidfd_open\
185 +#define SYS_pidfd_open __NR_pidfd_open\
186 +#else\
187 +#define SYS_pidfd_open 434\
188 +#endif\
189 +#endif\
190 +#ifndef SYS_pidfd_getfd\
191 +#ifdef __NR_pidfd_getfd\
192 +#define SYS_pidfd_getfd __NR_pidfd_getfd\
193 +#else\
194 +#define SYS_pidfd_getfd 438\
195 +#endif\
196 +#endif\
197 +#endif' csrc/kernels/backend/symmetric.hpp
198 + fi
199 +
200 if [ "$MODE" = "install" ]; then
201 echo "Installing $name into environment"
202 eval "$extra_env" uv pip install --no-build-isolation -vvv .