From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6730113598409932800 X-Received: by 2002:a25:c58d:: with SMTP id v135mr2009880ybe.6.1566976685116; Wed, 28 Aug 2019 00:18:05 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a25:ae98:: with SMTP id b24ls278863ybj.12.gmail; Wed, 28 Aug 2019 00:18:04 -0700 (PDT) X-Google-Smtp-Source: APXvYqyNUST6gHFxjn251tOpneh/664zRkAEE+fO1Audp4e1/+HrA/je+9FVqug3PHD8Jcopy4sP X-Received: by 2002:a25:614d:: with SMTP id v74mr2029098ybb.26.1566976684788; Wed, 28 Aug 2019 00:18:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566976684; cv=none; d=google.com; s=arc-20160816; b=Xykg7bNEuAl0Su5YiNYpILZMy0hWhdaLLy05HfZND3nhnm20151cTsRyp9JKILlWg+ 7sQsRajwt6jzpM4Z6MRcwncIwOjOloqlX60mlnLO3iXt7VlCrLO+7nVoTv/Kq6ZcHKFA /LZ6g90V4ZqZjI/Kajful0XIbX51M2uH5SgLk7A4Rs8WdyuU3E0MnePm9DaItou7CCZT d5CI0LVNiQq3Xr9mddbZloTNl3ViRwdPa4fXmEyn88W4PLHGPhglw26vrzLFjR4CJAJb 1e4JTfdEIA+nAnC8dNWRSjKD8Hy415MaEaB06PFgycDIdv/LktDJ4pEcLsxxbaL7+As/ zh9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:ironport-sdr:ironport-sdr; bh=KFnwRcHNXoXE0j+Yph7bEf1NCYS4i8ch9l0+4OkmjQs=; b=QQ7t9jMbCqFvAKPjNOUVrXMbxQ0OfAlzGblO31r20ieCSeB5CCTLA1o0gSC/jzzc4c kgPsDtnlbqDaLasxk61bgHdAeXgKQPij7oVGlZdIwUEcdpzxphnYjcdtXel33Q9IfLUv edVrlh8KfVm867Uh8YgDopFoIw+Ez/SDgtfTyDHr5Ca7PrAWioyJ6lc4Ft3Qz6yi/znk nn9YYFTyK0DaB/7H/Adl0mfXxTBJ5kS1Jl7BptPdmmm3TsEpvw6MASDZFLOu3vVj3Hs4 830zC18n80WDHsz9bR2U24qYurADxc3LQFgL4pngKF7Mc4/czD48PRcWVKmMfRpNOjPR K6+Q== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of cedric_hombourger@mentor.com designates 68.232.137.180 as permitted sender) smtp.mailfrom=Cedric_Hombourger@mentor.com Return-Path: Received: from esa3.mentor.iphmx.com (esa3.mentor.iphmx.com. [68.232.137.180]) by gmr-mx.google.com with ESMTPS id c76si97149ybf.3.2019.08.28.00.18.04 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 28 Aug 2019 00:18:04 -0700 (PDT) Received-SPF: pass (google.com: domain of cedric_hombourger@mentor.com designates 68.232.137.180 as permitted sender) client-ip=68.232.137.180; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of cedric_hombourger@mentor.com designates 68.232.137.180 as permitted sender) smtp.mailfrom=Cedric_Hombourger@mentor.com IronPort-SDR: GhckG+7clzWQW1Jiqr4k3DQdycdQAV477LKoi5jgPijTxlQVhRuAneUkZy55ZkU3SpAxlU5c7j XbWe7fN4s+7q+0xvKBZ2mR+zcCzhuwBTx9+3Li0y8szu0VgG1JeJsqKxbFscDTKC/WjEQhm+vw z/2q2kYKaLNrsRf50dlr/bWwsu62jRVOBcItA/XqMkggdEMn8/Pe9OnH8Mc5GdWyhYZCxmrw0l XWwTKnkSHuTcVGiTJaq1yKjfJQiLTfP/YPwSX0pbAVK032m2vlojlJhXaATtbvSZsbCcANMkbG huY= X-IronPort-AV: E=Sophos;i="5.64,440,1559548800"; d="scan'208";a="40823432" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa3.mentor.iphmx.com with ESMTP; 27 Aug 2019 23:18:03 -0800 IronPort-SDR: 8XyJ1epwQjOAAXC4Dmsruem2QHg4c/orUZ0dKEKMjueSJ6RgBpdnwsD+B/ZYUaVH+14zL6UKtK Z0XDVeEwZvFtzqrochAyJ2iigY6O73NnL6YoJW7X9o0E+3iKggVqrQ1b6ZyIgaV6mfRkpxSTNR 6vqoL9feHzlNM8FMUP4v2rWHDIDKrRN8urUbd6Nw6UB28yy5Aonm8XpAs/5p7noqhuftqRFPCI Tl0QPFMqCekRZFpZAARa9N0wECLJL1v77Hc1uDrzAndG1a8aYbJESagFV+bdwMBYrYFvGaOa3j G40= From: Cedric Hombourger To: CC: Cedric Hombourger Subject: [RFC Kernel PATCH 1/1] builddeb: support creation of linux-perf packages Date: Wed, 28 Aug 2019 09:17:33 +0200 Message-ID: <1566976653-174-2-git-send-email-Cedric_Hombourger@mentor.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1566976653-174-1-git-send-email-Cedric_Hombourger@mentor.com> References: <1566976653-174-1-git-send-email-Cedric_Hombourger@mentor.com> MIME-Version: 1.0 Content-Type: text/plain Return-Path: Cedric_Hombourger@mentor.com X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-01.mgc.mentorg.com (139.181.222.1) To svr-ies-mbx-02.mgc.mentorg.com (139.181.222.2) X-TUID: JpD6/SR21e1I Provide a mechanism for the Debian package generation scripts to also produce perf packages in addition to the kernel packages. Pass KDEB_PERF=1 to the "make deb-pkg" command line. The structure of the packages should match very closely with Debian's with the perf binary and support folders suffixed with the kernel version number (Debian's /usr/bin/perf script checks the running kernel to spawn the corresponding perf_ binary). It shall also be noted that it is left to the user to specify runtime dependencies via the added KDEB_PERF_DEPS variable. They are indeed distro and environment specific (perf determines what features should be compiled in after checking packages installed on the build host) Signed-off-by: Cedric Hombourger --- scripts/package/builddeb | 32 ++++++++++++++++++++++++++++++++ scripts/package/mkdebian | 26 ++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/scripts/package/builddeb b/scripts/package/builddeb index c4c580f547ef..76c9c49a678f 100755 --- a/scripts/package/builddeb +++ b/scripts/package/builddeb @@ -51,6 +51,8 @@ tmpdir="$objtree/debian/tmp" kernel_headers_dir="$objtree/debian/hdrtmp" libc_headers_dir="$objtree/debian/headertmp" dbg_dir="$objtree/debian/dbgtmp" +perf_dir="$objtree/debian/linux-perf-tmp" +perf_xy_dir="$objtree/debian/linux-perf-$VERSION.$PATCHLEVEL-tmp" packagename=linux-image-$version kernel_headers_packagename=linux-headers-$version libc_headers_packagename=linux-libc-dev @@ -78,6 +80,7 @@ BUILD_DEBUG=$(if_enabled_echo CONFIG_DEBUG_INFO Yes) # Setup the directory structure rm -rf "$tmpdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" $objtree/debian/files +rm -rf "$perf_dir" "$perf_xy_dir" mkdir -m 755 -p "$tmpdir/DEBIAN" mkdir -p "$tmpdir/lib" "$tmpdir/boot" mkdir -p "$kernel_headers_dir/lib/modules/$version/" @@ -129,6 +132,30 @@ if is_enabled CONFIG_MODULES; then fi fi +if [ -n "$KDEB_PERF" ]; then + mkdir -p $perf_dir $perf_xy_dir + $MAKE -C tools/perf -f Makefile.perf \ + DESTDIR="$(readlink -f $perf_xy_dir)" \ + STRACE_GROUPS_DIR=share/perf_$VERSION.$PATCHLEVEL-core/strace/groups \ + LDFLAGS= \ + prefix=/usr \ + perf_examples_dir=share/doc/linux-perf-$VERSION.$PATCHLEVEL/examples \ + perf_include_dir=include/perf_$VERSION.$PATCHLEVEL \ + perfexecdir=lib/perf_$VERSION.$PATCHLEVEL-core \ + plugindir=/usr/lib/traceevent_$VERSION.$PATCHLEVEL/plugins \ + srctree=$(pwd) \ + tipdir=share/doc/linux-perf-$VERSION.$PATCHLEVEL \ + install + mv $perf_xy_dir/etc/bash_completion.d/perf \ + $perf_xy_dir/etc/bash_completion.d/perf_$VERSION.$PATCHLEVEL + mv $perf_xy_dir/usr/bin/perf $perf_xy_dir/usr/bin/perf_$VERSION.$PATCHLEVEL + rm -f $perf_xy_dir/usr/bin/trace + for p in $perf_xy_dir/usr/bin/perf-*; do + [ -f $p ] || continue + mv $p $perf_xy_dir/usr/lib/perf_$VERSION.$PATCHLEVEL-core/ + done +fi + if [ "$ARCH" != "um" ]; then $MAKE -f $srctree/Makefile headers $MAKE -f $srctree/Makefile headers_install INSTALL_HDR_PATH="$libc_headers_dir/usr" @@ -191,6 +218,11 @@ fi create_package "$packagename" "$tmpdir" +if [ -n "$KDEB_PERF" ]; then + create_package "linux-perf-$VERSION.$PATCHLEVEL" "$perf_xy_dir" + forcearch="-DArchitecture=all" create_package "linux-perf" "$perf_dir" +fi + if [ -n "$BUILD_DEBUG" ] ; then # Build debug package # Different tools want the image in different locations diff --git a/scripts/package/mkdebian b/scripts/package/mkdebian index e0750b70453f..a5826b634509 100755 --- a/scripts/package/mkdebian +++ b/scripts/package/mkdebian @@ -207,10 +207,36 @@ Description: Linux kernel debugging symbols for $version all the necessary debug symbols for the kernel and its modules. EOF +[ -n "${KDEB_PERF}" ] && cat <> debian/control + +Package: linux-perf +Section: devel +Architecture: all +Depends: linux-perf-${VERSION}.${PATCHLEVEL} +Description: Performance analysis tools for Linux (meta-package) + This package depends on the package containing the 'perf' performance analysis + tools for the latest Linux kernel. + +Package: linux-perf-${VERSION}.${PATCHLEVEL} +Section: devel +Architecture: $debarch +Depends: ${KDEB_PERF_DEPS} +Description: Performance analysis tools for Linux $version + This package contains the 'perf' performance analysis tools for Linux kernel + version $version +EOF + cat < debian/rules #!$(command -v $MAKE) -f srctree ?= . +EOF + +[ -n "${KDEB_PERF}" ] && cat <> debian/rules +export KDEB_PERF=${KDEB_PERF} +EOF + +cat <> debian/rules build: \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} \ -- 2.11.0