diff --git a/.github/scripts/fbgemm_gpu_build.bash b/.github/scripts/fbgemm_gpu_build.bash index fd76b5669d..1a7ca88264 100644 --- a/.github/scripts/fbgemm_gpu_build.bash +++ b/.github/scripts/fbgemm_gpu_build.bash @@ -416,6 +416,9 @@ __print_library_infos () { echo "[CHECK] Listing out external shared libraries linked:" print_exec ldd "${library}" + + echo "[CHECK] Displaying ELF information:" + print_exec readelf -d "${library}" echo "################################################################################" echo "" echo "" diff --git a/.github/scripts/fbgemm_gpu_postbuild.bash b/.github/scripts/fbgemm_gpu_postbuild.bash new file mode 100644 index 0000000000..178052514f --- /dev/null +++ b/.github/scripts/fbgemm_gpu_postbuild.bash @@ -0,0 +1,23 @@ +#!/bin/bash +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. + +echo "################################################################################" +echo "[CMAKE] Running post-build script ..." + +# Print directory +pwd + +# List all generated .SO files +find . -name '*.so' + +# Remove errant RPATHs from the .SO +# https://github.com/pytorch/FBGEMM/issues/3098 +# https://github.com/NixOS/patchelf/issues/453 +find . -name '*.so' -print0 | xargs -0 patchelf --remove-rpath + +echo "[CMAKE] Removed errant RPATHs" +echo "################################################################################" diff --git a/.github/scripts/utils_build.bash b/.github/scripts/utils_build.bash index 1191bf34d1..60127ed053 100644 --- a/.github/scripts/utils_build.bash +++ b/.github/scripts/utils_build.bash @@ -297,6 +297,7 @@ install_build_tools () { ncurses \ ninja \ openblas \ + patchelf \ scikit-build \ wheel) || return 1 diff --git a/fbgemm_gpu/FbgemmGpu.cmake b/fbgemm_gpu/FbgemmGpu.cmake index f67a6b6b24..27b4ec8843 100644 --- a/fbgemm_gpu/FbgemmGpu.cmake +++ b/fbgemm_gpu/FbgemmGpu.cmake @@ -725,3 +725,9 @@ install(FILES ${gen_python_source_files} install(FILES ${gen_defused_optim_py_files} DESTINATION fbgemm_gpu/split_embedding_optimizer_codegen) + +add_custom_target(fbgemm_gpu_py_clean_rpath ALL + WORKING_DIRECTORY ${OUTPUT_DIR} + COMMAND bash ${FBGEMM}/.github/scripts/fbgemm_gpu_postbuild.bash) + +add_dependencies(fbgemm_gpu_py_clean_rpath fbgemm_gpu_py) diff --git a/fbgemm_gpu/experimental/example/CMakeLists.txt b/fbgemm_gpu/experimental/example/CMakeLists.txt index ecf72d6777..912b812849 100644 --- a/fbgemm_gpu/experimental/example/CMakeLists.txt +++ b/fbgemm_gpu/experimental/example/CMakeLists.txt @@ -70,3 +70,10 @@ install(TARGETS fbgemm_gpu_experimental_example_py install(FILES ${experimental_example_python_source_files} DESTINATION fbgemm_gpu/experimental/example) + +add_custom_target(fbgemm_gpu_experimental_example_py_clean_rpath ALL + WORKING_DIRECTORY ${OUTPUT_DIR} + COMMAND bash ${FBGEMM}/.github/scripts/fbgemm_gpu_postbuild.bash) + +add_dependencies(fbgemm_gpu_experimental_example_py_clean_rpath + fbgemm_gpu_experimental_example_py) diff --git a/fbgemm_gpu/experimental/gen_ai/CMakeLists.txt b/fbgemm_gpu/experimental/gen_ai/CMakeLists.txt index 7716c39c17..a2916c9e55 100644 --- a/fbgemm_gpu/experimental/gen_ai/CMakeLists.txt +++ b/fbgemm_gpu/experimental/gen_ai/CMakeLists.txt @@ -154,3 +154,10 @@ install(TARGETS fbgemm_gpu_experimental_gen_ai_py install(FILES ${experimental_gen_ai_python_source_files} DESTINATION fbgemm_gpu/experimental/gen_ai) + +add_custom_target(fbgemm_gpu_experimental_gen_ai_py_clean_rpath ALL + WORKING_DIRECTORY ${OUTPUT_DIR} + COMMAND bash ${FBGEMM}/.github/scripts/fbgemm_gpu_postbuild.bash) + +add_dependencies(fbgemm_gpu_experimental_gen_ai_py_clean_rpath + fbgemm_gpu_experimental_gen_ai_py)