Skip to content

Commit 3472e68

Browse files
authored
[setup] Use patchelf from bzlmod instead of ubuntu (#23522)
This helps Drake be more portable when installing from source, and more hermetic when testing (one less undeclared dependency). Note that the wheel build still uses the almalinux patchelf, but that's fine because it runs inside docker.
1 parent ab0a62d commit 3472e68

File tree

8 files changed

+20
-8
lines changed

8 files changed

+20
-8
lines changed

MODULE.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ bazel_dep(name = "zlib", version = "1.3.1.bcr.7", repo_name = "module_zlib")
8484
# Add additional modules we use as tools (not runtime dependencies).
8585

8686
bazel_dep(name = "nasm", version = "2.16.03.bcr.2")
87+
bazel_dep(name = "patchelf", version = "0.18.0")
8788
bazel_dep(name = "toolchains_llvm", version = "1.5.0")
8889

8990
llvm = use_repo_rule("@toolchains_llvm//toolchain:rules.bzl", "llvm")

setup/ubuntu/source_distribution/packages-jammy.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ libx11-dev
1111
ocl-icd-opencl-dev
1212
opencl-headers
1313
patch
14-
patchelf
1514
pkg-config
1615
python3-all-dev
1716
zlib1g-dev

setup/ubuntu/source_distribution/packages-noble.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ libx11-dev
1111
ocl-icd-opencl-dev
1212
opencl-headers
1313
patch
14-
patchelf
1514
pkg-config
1615
python3-all-dev
1716
zlib1g-dev

tools/dynamic_analysis/drd.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@ valgrind \
2727
--suppressions=/usr/lib/valgrind/python3.supp \
2828
--tool=drd \
2929
--trace-children=yes \
30-
--trace-children-skip=/bin/cat,/bin/cp,/bin/ln,/bin/ls,/bin/mkdir,/bin/mv,/bin/sed,/lib/ld-linux.so.\*,/lib64/ld-linux-x86-64.so.\*,/usr/bin/clang,/usr/bin/clang-15,/usr/bin/clang-format-15,/usr/bin/curl,/usr/bin/diff,/usr/bin/dot,/usr/bin/fc-list,/usr/bin/file,/usr/bin/find,/usr/bin/gcc,/usr/bin/ldd,/usr/bin/patchelf,/usr/bin/strip,/usr/bin/uname,\*/external/buildifier/buildifier \
30+
--trace-children-skip=/bin/cat,/bin/cp,/bin/ln,/bin/ls,/bin/mkdir,/bin/mv,/bin/sed,/lib/ld-linux.so.\*,/lib64/ld-linux-x86-64.so.\*,/usr/bin/clang,/usr/bin/clang-15,/usr/bin/clang-format-15,/usr/bin/curl,/usr/bin/diff,/usr/bin/dot,/usr/bin/fc-list,/usr/bin/file,/usr/bin/find,/usr/bin/gcc,/usr/bin/ldd,/usr/bin/strip,/usr/bin/uname,\*/external/buildifier/buildifier \
3131
--trace-children-skip-by-arg=--disable-drake-valgrind-tracing \
3232
"$@"

tools/dynamic_analysis/helgrind.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@ valgrind \
2727
--suppressions=/usr/lib/valgrind/python3.supp \
2828
--tool=helgrind \
2929
--trace-children=yes \
30-
--trace-children-skip=/bin/cat,/bin/cp,/bin/ln,/bin/ls,/bin/mkdir,/bin/mv,/bin/sed,/lib/ld-linux.so.\*,/lib64/ld-linux-x86-64.so.\*,/usr/bin/clang,/usr/bin/clang-15,/usr/bin/clang-format-15,/usr/bin/curl,/usr/bin/diff,/usr/bin/dot,/usr/bin/fc-list,/usr/bin/file,/usr/bin/find,/usr/bin/gcc,/usr/bin/ldd,/usr/bin/patchelf,/usr/bin/strip,/usr/bin/uname,\*/external/buildifier/buildifier \
30+
--trace-children-skip=/bin/cat,/bin/cp,/bin/ln,/bin/ls,/bin/mkdir,/bin/mv,/bin/sed,/lib/ld-linux.so.\*,/lib64/ld-linux-x86-64.so.\*,/usr/bin/clang,/usr/bin/clang-15,/usr/bin/clang-format-15,/usr/bin/curl,/usr/bin/diff,/usr/bin/dot,/usr/bin/fc-list,/usr/bin/file,/usr/bin/find,/usr/bin/gcc,/usr/bin/ldd,/usr/bin/strip,/usr/bin/uname,\*/external/buildifier/buildifier \
3131
--trace-children-skip-by-arg=--disable-drake-valgrind-tracing \
3232
"$@"

tools/dynamic_analysis/valgrind.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ valgrind \
3434
--suppressions=/usr/lib/valgrind/python3.supp \
3535
--tool=memcheck \
3636
--trace-children=yes \
37-
--trace-children-skip=/bin/cat,/bin/cp,/bin/ln,/bin/ls,/bin/mkdir,/bin/mv,/bin/sed,/lib/ld-linux.so.\*,/lib64/ld-linux-x86-64.so.\*,/usr/bin/clang,/usr/bin/clang-15,/usr/bin/clang-format-15,/usr/bin/curl,/usr/bin/diff,/usr/bin/dot,/usr/bin/fc-list,/usr/bin/file,/usr/bin/find,/usr/bin/gcc,/usr/bin/ldd,/usr/bin/patchelf,/usr/bin/strip,/usr/bin/uname,\*/external/buildifier/buildifier \
37+
--trace-children-skip=/bin/cat,/bin/cp,/bin/ln,/bin/ls,/bin/mkdir,/bin/mv,/bin/sed,/lib/ld-linux.so.\*,/lib64/ld-linux-x86-64.so.\*,/usr/bin/clang,/usr/bin/clang-15,/usr/bin/clang-format-15,/usr/bin/curl,/usr/bin/diff,/usr/bin/dot,/usr/bin/fc-list,/usr/bin/file,/usr/bin/find,/usr/bin/gcc,/usr/bin/ldd,/usr/bin/strip,/usr/bin/uname,\*/external/buildifier/buildifier \
3838
--trace-children-skip-by-arg=--disable-drake-valgrind-tracing \
3939
--track-origins=yes \
4040
"$@"

tools/install/BUILD.bazel

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,11 @@ exports_files(
3939
drake_py_binary(
4040
name = "installer",
4141
srcs = ["installer.py"],
42-
deps = [":otool"],
42+
data = ["@patchelf"],
43+
deps = [
44+
":otool",
45+
"@rules_python//python/runfiles",
46+
],
4347
)
4448

4549
drake_py_unittest(

tools/install/installer.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,17 @@
1313
import argparse
1414
import collections
1515
import filecmp
16+
import functools
1617
import itertools
1718
import os
19+
from pathlib import Path
1820
import re
1921
import shutil
2022
import stat
23+
from subprocess import check_output, check_call
2124
import sys
2225

23-
from subprocess import check_output, check_call
26+
from python import runfiles
2427

2528
from tools.install import otool
2629

@@ -77,6 +80,12 @@ def _needs_install(src, dst, prefix):
7780
return True
7881

7982

83+
@functools.cache
84+
def _patchelf_path() -> Path:
85+
manifest = runfiles.Create()
86+
return Path(manifest.Rlocation("patchelf/patchelf"))
87+
88+
8089
class Installer:
8190
def __init__(self):
8291
# Stored from command-line.
@@ -336,7 +345,7 @@ def _linux_fix_rpaths(self, dst_full):
336345
# /opt.
337346
str_rpath = ":".join(x for x in rpath)
338347
check_output([
339-
"patchelf",
348+
_patchelf_path(),
340349
"--force-rpath", # We need to override LD_LIBRARY_PATH.
341350
"--set-rpath", str_rpath,
342351
dst_full

0 commit comments

Comments
 (0)