From patchwork Tue Feb 26 01:30:18 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gary Lowell X-Patchwork-Id: 2183581 Return-Path: X-Original-To: patchwork-linux-kbuild@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id BC842DF230 for ; Tue, 26 Feb 2013 01:29:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759970Ab3BZB3N (ORCPT ); Mon, 25 Feb 2013 20:29:13 -0500 Received: from mail-pb0-f54.google.com ([209.85.160.54]:47406 "EHLO mail-pb0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752667Ab3BZB3M (ORCPT ); Mon, 25 Feb 2013 20:29:12 -0500 Received: by mail-pb0-f54.google.com with SMTP id rr4so2018964pbb.13 for ; Mon, 25 Feb 2013 17:29:12 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer :x-gm-message-state; bh=dG+vsydQguYfEV7oIEJlK13bqiE4L5NcTze0wvJyTUE=; b=Y/61wplGiXTyAJ5bsxSjEj++Hb42XMdg1QXTaIkwcaEKouIseonJ1172O0CeaV7CMi 7Zq5r2lRxDMXU7MgAbuZpSg+gLSlvR1zP3DmzGO0G6tO76emQinX5m0H5IlquYuJb/iI 0fYk5HN9ZxTd3O0m7Em43qgZ+aa+Qnx5F6hKoRZby3LwBmzBTqAQboAWbBKodDHS7MjY 5876ytsotiV8qV9mBu2y3/QU1387HHfbwCk8idveTMkrw43U6iXvn5jFx7aTL37TO550 eL/SsSMk95rriLLwqDXj3HJfClOgEETsrXjJj/xQvBGxQcK5MhYMAMNbcVD+Y2YT70V+ bb+w== X-Received: by 10.68.31.73 with SMTP id y9mr21330075pbh.102.1361842152197; Mon, 25 Feb 2013 17:29:12 -0800 (PST) Received: from pudgy.ops.newdream.net ([38.122.20.226]) by mx.google.com with ESMTPS id gg7sm14456863pbc.45.2013.02.25.17.29.10 (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 25 Feb 2013 17:29:11 -0800 (PST) From: Gary Lowell To: Michal Marek , linux-kbuild@vger.kernel.org Cc: Sage Weil , linux-kernel@vger.kernel.org, Gary Lowell Subject: [PATCH 1/1] scripts/package/builddeb: build perftools package. Date: Mon, 25 Feb 2013 17:30:18 -0800 Message-Id: <1361842218-1768-1-git-send-email-gary.lowell@inktank.com> X-Mailer: git-send-email 1.7.9.5 X-Gm-Message-State: ALoCoQnCLRi0/s3+Lf5m5/h2XITG+bCgvEQZuDMon6UfCsbOMyS1fVfu+3TuVBdDgDchB5OjQvnp Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org This will build a linux-tools-$version package for each build that includes perf. We've been using this for internal builds and other folks might find it helpful. Signed-off-by: Gary Lowell --- 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 <> 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"