From 85de260677e41d08b25fd8db977ba82066c368e3 Mon Sep 17 00:00:00 2001 From: Benson Ma Date: Wed, 25 Sep 2024 11:25:03 -0700 Subject: [PATCH] Remove errant RPATHs from binaries (#3163) Summary: X-link: https://github.com/facebookresearch/FBGEMM/pull/261 - Remove errant RPATHs from binaries (https://github.com/pytorch/FBGEMM/issues/3098) Pull Request resolved: https://github.com/pytorch/FBGEMM/pull/3163 Reviewed By: basilwong Differential Revision: D63294995 Pulled By: q10 fbshipit-source-id: a104c5958ba0d4caa954155aae898cda703943ce --- .github/scripts/fbgemm_gpu_build.bash | 3 +++ .github/scripts/fbgemm_gpu_postbuild.bash | 23 +++++++++++++++++++ .github/scripts/utils_build.bash | 1 + fbgemm_gpu/FbgemmGpu.cmake | 6 +++++ .../experimental/example/CMakeLists.txt | 7 ++++++ fbgemm_gpu/experimental/gen_ai/CMakeLists.txt | 7 ++++++ 6 files changed, 47 insertions(+) create mode 100644 .github/scripts/fbgemm_gpu_postbuild.bash diff --git a/.github/scripts/fbgemm_gpu_build.bash b/.github/scripts/fbgemm_gpu_build.bash index fd76b5669..1a7ca8826 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 000000000..178052514 --- /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 1191bf34d..60127ed05 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 f67a6b6b2..27b4ec884 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 ecf72d677..912b81284 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 7716c39c1..a2916c9e5 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)