-
Notifications
You must be signed in to change notification settings - Fork 47
/
Copy pathperf
executable file
·86 lines (77 loc) · 2.49 KB
/
perf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/bin/bash
full_version=`uname -r`
#Edited/modified from Debian perf wrapper, which fails badly in a
#Docker environment with mismatched host/container distros. We need
#to run properly on top of RH style hosts, and the perf interfaces we
#need will translate just fine to nearby generic linux-tool versions.
#Be permissive in matching.
# First check for a fully qualified version.
this="/usr/lib/linux-tools/$full_version/`basename $0`"
if [ -f "$this" ]; then
exec "$this" "$@"
fi
# Next, try Removing flavour from version i.e. generic or server.
flavour_abi=${full_version#*-}
flavour=${flavour_abi#*-}
version=${full_version%-$flavour}
this="$0_$version"
if [ -f "$this" ]; then
exec "$this" "$@"
fi
# Next, look for generic near matches
minor_plus=${full_version#*.}
subminor_plus=${minor_plus#*.}
flavor_plus=${subminor_plus#*[. -]}
majorminor=${full_version%.$subminor_plus}
majorminorsub=${full_version%[. -]$flavor_plus}
# Check for generic version(s) matching major/minor/sub
this=( /usr/lib/linux-tools/$majorminorsub*generic/`basename $0` )
if [ -f "$this" ]; then
exec "$this" "$@"
fi
## Check for generic version(s) matching major/minor
this=( /usr/lib/linux-tools/$majorminor*generic/`basename $0` )
if [ -f "$this" ]; then
exec "$this" "$@"
fi
# back to your regularly scheduled Debian wrapper
# Before saucy kernels we had no flavour linkage.
if dpkg --compare-versions "$version" lt "3.11.0"; then
flavour=''
else
flavour="-$flavour"
fi
# Hint at the cloud tools if they exist (trusty and later)
if dpkg --compare-versions "$version" ge "3.13.0"; then
cld=""
else
cld=":"
fi
# Work out if this is an LTS backport or not.
codename=`lsb_release -cs`
case "$codename" in
precise) base='3.2.0-9999' ;;
trusty) base='3.13.0-9999' ;;
*) base='' ;;
esac
std=""
lts=":"
if [ "$base" != "" ]; then
if dpkg --compare-versions "$version" gt "$base"; then
std=":"
lts=""
fi
fi
# Give them a hint as to what to install.
echo "WARNING: `basename $0` not found for kernel $version" >&2
echo "" >&2
echo " You may need to install the following packages for this specific kernel:" >&2
echo " linux-tools-$version$flavour" >&2
$cld echo " linux-cloud-tools-$version$flavour" >&2
echo "" >&2
echo " You may also want to install one of the following packages to keep up to date:" >&2
$std echo " linux-tools$flavour" >&2
$std $cld echo " linux-cloud-tools$flavour" >&2
$lts echo " linux-tools$flavour-lts-<series>" >&2
$lts $cld echo " linux-cloud-tools$flavour-lts-<series>" >&2
exit 2