This repository was archived by the owner on May 6, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathperf.patch
More file actions
140 lines (135 loc) · 5.2 KB
/
Copy pathperf.patch
File metadata and controls
140 lines (135 loc) · 5.2 KB
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
diff --git a/scripts/package/builddeb b/scripts/package/builddeb
index acb8650..6ec4ec7 100644
--- a/scripts/package/builddeb
+++ b/scripts/package/builddeb
@@ -78,17 +78,20 @@ tmpdir="$objtree/debian/tmp"
fwdir="$objtree/debian/fwtmp"
kernel_headers_dir="$objtree/debian/hdrtmp"
libc_headers_dir="$objtree/debian/headertmp"
+tools_dir="$objtree/debian/toolstmp"
+tmp_build_dir="$objtree/debian/toolsbuild"
packagename=linux-image-$version
fwpackagename=linux-firmware-image
kernel_headers_packagename=linux-headers-$version
libc_headers_packagename=linux-libc-dev
+tools_packagename=linux-tools-$version
if [ "$ARCH" = "um" ] ; then
packagename=user-mode-linux-$version
fi
# Setup the directory structure
-rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir"
+rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$tools_dir" "$tmp_build_dir"
mkdir -m 755 -p "$tmpdir/DEBIAN"
mkdir -p "$tmpdir/lib" "$tmpdir/boot" "$tmpdir/usr/share/doc/$packagename"
mkdir -m 755 -p "$fwdir/DEBIAN"
@@ -98,6 +101,10 @@ mkdir -p "$libc_headers_dir/usr/share/doc/$libc_headers_packagename"
mkdir -m 755 -p "$kernel_headers_dir/DEBIAN"
mkdir -p "$kernel_headers_dir/usr/share/doc/$kernel_headers_packagename"
mkdir -p "$kernel_headers_dir/lib/modules/$version/"
+mkdir -m 755 -p "$tools_dir/DEBIAN"
+mkdir -p "$tools_dir/usr/share/doc/$tools_packagename"
+mkdir -p "$tools_dir/usr/bin/"
+mkdir -p "$tmp_build_dir"
if [ "$ARCH" = "um" ] ; then
mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin"
fi
@@ -120,6 +127,77 @@ else
fi
fi
+# Build the tools
+num_tools="0"
+tools_flavour_abi=${version#*-}
+tools_flavour=${tools_flavour_abi#*-}
+tools_version=${version%-$tools_flavour}
+debian_tools_version="${version%%-*}"
+debian_tools_version="${version%.*}"
+if grep -q '^CONFIG_PERF_EVENTS=y' .config ; then
+ # Build and install perf
+ (
+ unset MAKEFLAGS
+ unset MFLAGS
+ unset MAKEOVERRIDES
+
+ mkdir -p $objtree/tools/perf
+ cd "$srctree/tools/perf"
+ $MAKE DESTDIR="$tools_dir/usr/" LDFLAGS= O=$objtree/tools/perf/ install
+ mv "$tools_dir/usr/bin/perf" "$tools_dir/usr/bin/perf_$debian_tools_version"
+ ln -s "/usr/bin/perf_$debian_tools_version" "$tools_dir/usr/bin/perf_$tools_version"
+ mv "$tools_dir/usr/libexec/perf-core" "$tools_dir/usr/share/perf_$debian_tools_version-core"
+ rmdir "$tools_dir/usr/libexec"
+
+ # Documentation can't be built out-of-tree so copy source
+ # over to objtree and build man pages there
+ mkdir -p $tmp_build_dir/perf
+ cp -a "$srctree/tools/perf/Documentation" "$tmp_build_dir/perf/"
+ cp -a "$srctree/tools/perf/config" "$tmp_build_dir/perf/"
+ cd "$tmp_build_dir/perf/Documentation"
+ $MAKE man
+ $MAKE DESTDIR="$tools_dir/usr/" install
+ for manpage in `find $tools_dir/usr/share/man/ -type f`; do
+ mv $manpage ${manpage/perf/perf_$debian_tools_version}
+ gzip -9 ${manpage/perf/perf_$debian_tools_version}
+ done
+ )
+ num_tools=$(($num_tools+1))
+fi
+
+if [[ "$ARCH" = "i386" || "$ARCH" = "x86_64" ]]; then
+ # Build turbostat
+ (
+ cp -a $srctree/tools/power/x86/turbostat "$tmp_build_dir"
+ ln -s $srctree/arch "$tmp_build_dir/../../../arch"
+ cd "$tmp_build_dir/turbostat/"
+ unset MAKEFLAGS
+ unset MFLAGS
+ unset MAKEOVERRIDES
+ $MAKE LDFLAGS=
+ cp turbostat "$tools_dir/usr/bin/turbostat_$debian_tools_version"
+ ln -s "/usr/bin/turbostat_$debian_tools_version" "$tools_dir/usr/bin/turbostat_$tools_version"
+ mkdir -p "$tools_dir/usr/share/man/man8"
+ cp turbostat.8 "$tools_dir/usr/share/man/man8/turbotstat_${debian_tools_version}.8"
+ gzip -9 "$tools_dir/usr/share/man/man8/turbotstat_${debian_tools_version}.8"
+ )
+
+ # Build x86_energy_perf_policy
+ (
+ cp -a $srctree/tools/power/x86/x86_energy_perf_policy "$tmp_build_dir"
+ cd "$tmp_build_dir/x86_energy_perf_policy"
+ unset MAKEFLAGS
+ unset MFLAGS
+ unset MAKEOVERRIDES
+ $MAKE LDFLAGS=
+ cp x86_energy_perf_policy "$tools_dir/usr/bin/x86_energy_perf_policy_$debian_tools_version"
+ ln -s "/usr/bin/x86_energy_perf_policy_$debian_tools_version" "$tools_dir/usr/bin/x86_energy_perf_policy_$tools_version"
+ cp x86_energy_perf_policy.8 "$tools_dir/usr/share/man/man8/x86_energy_perf_policy_${debian_tools_version}.8"
+ gzip -9 "$tools_dir/usr/share/man/man8/x86_energy_perf_policy_${debian_tools_version}.8"
+ )
+ num_tools=$(($num_tools+2))
+fi
+
if grep -q '^CONFIG_MODULES=y' .config ; then
INSTALL_MOD_PATH="$tmpdir" $MAKE KBUILD_SRC= modules_install
rm -f "$tmpdir/lib/modules/$version/build"
@@ -292,9 +370,24 @@ Description: Linux support headers for userspace development
are used by the installed headers for GNU glibc and other system libraries.
EOF
+cat <<EOF >> debian/control
+
+Package: $tools_packagename
+Section: devel
+Architecture: $arch
+Depends: \${shlibs:Depends}
+Description: Linux kernel tools for version $version
+ This package provides the architecture dependant parts for kernel
+ version locked tools for version $version
+EOF
+
if [ "$ARCH" != "um" ]; then
create_package "$kernel_headers_packagename" "$kernel_headers_dir"
create_package "$libc_headers_packagename" "$libc_headers_dir"
+ if [ "$num_tools" > "0" ]; then
+ dpkg-shlibdeps $tools_dir/usr/bin/*
+ create_package "$tools_packagename" "$tools_dir"
+ fi
fi
create_package "$packagename" "$tmpdir"