This will build a linux-tools-$version package for each build that includes perf. Signed-off-by: Gary Lowell <gary.lowell@xxxxxxxxxxx> --- scripts/package/builddeb | 95 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 94 insertions(+), 1 deletion(-) diff --git a/scripts/package/builddeb b/scripts/package/builddeb index acb8650..f57d33c 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" -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html