pyflame: fix the build on machines with kernel.yama.ptrace_scope > 0
This commit is contained in:
parent
175827f1ed
commit
96a099adb6
@ -1,4 +1,4 @@
|
|||||||
{ stdenv, autoreconfHook, coreutils, fetchFromGitHub, fetchpatch, pkgconfig
|
{ stdenv, autoreconfHook, coreutils, fetchFromGitHub, fetchpatch, pkgconfig, procps
|
||||||
# pyflame needs one python version per ABI
|
# pyflame needs one python version per ABI
|
||||||
# are currently supported
|
# are currently supported
|
||||||
# * 2.6 or 2.7 for 2.x ABI
|
# * 2.6 or 2.7 for 2.x ABI
|
||||||
@ -67,11 +67,12 @@ stdenv.mkDerivation rec {
|
|||||||
full-ptrace-seize-errors
|
full-ptrace-seize-errors
|
||||||
];
|
];
|
||||||
|
|
||||||
nativeBuildInputs = [ autoreconfHook pkgconfig ];
|
nativeBuildInputs = [ autoreconfHook pkgconfig procps ];
|
||||||
buildInputs = [ python37 python36 python2 python35 ];
|
buildInputs = [ python37 python36 python2 python35 ];
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
patchShebangs .
|
patchShebangs .
|
||||||
|
|
||||||
# some tests will fail in the sandbox
|
# some tests will fail in the sandbox
|
||||||
substituteInPlace tests/test_end_to_end.py \
|
substituteInPlace tests/test_end_to_end.py \
|
||||||
--replace 'skipif(IS_DOCKER' 'skipif(True'
|
--replace 'skipif(IS_DOCKER' 'skipif(True'
|
||||||
@ -79,6 +80,32 @@ stdenv.mkDerivation rec {
|
|||||||
# don't use patchShebangs here to be explicit about the python version
|
# don't use patchShebangs here to be explicit about the python version
|
||||||
substituteInPlace utils/flame-chart-json \
|
substituteInPlace utils/flame-chart-json \
|
||||||
--replace '#!usr/bin/env python' '#!${python3.interpreter}'
|
--replace '#!usr/bin/env python' '#!${python3.interpreter}'
|
||||||
|
|
||||||
|
# Many tests require the build machine to have kernel.yama.ptrace_scope = 0,
|
||||||
|
# but hardened machines have it set to 1. On build machines that cannot run
|
||||||
|
# these tests, skip them to avoid breaking the build.
|
||||||
|
if [[ $(sysctl -n kernel.yama.ptrace_scope || echo 0) != "0" ]]; then
|
||||||
|
for test in \
|
||||||
|
test_monitor \
|
||||||
|
test_non_gil \
|
||||||
|
test_threaded \
|
||||||
|
test_unthreaded \
|
||||||
|
test_legacy_pid_handling \
|
||||||
|
test_exclude_idle \
|
||||||
|
test_exit_early \
|
||||||
|
test_sample_not_python \
|
||||||
|
test_include_ts \
|
||||||
|
test_include_ts_exclude_idle \
|
||||||
|
test_thread_dump \
|
||||||
|
test_no_line_numbers \
|
||||||
|
test_utf8_output; do
|
||||||
|
|
||||||
|
substituteInPlace tests/test_end_to_end.py \
|
||||||
|
--replace "def $test(" "\
|
||||||
|
@pytest.mark.skip('build machine had kernel.yama.ptrace_scope != 0')
|
||||||
|
def $test("
|
||||||
|
done
|
||||||
|
fi
|
||||||
'';
|
'';
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
|
Loading…
x
Reference in New Issue
Block a user