From: Cedric Hombourger <Cedric_Hombourger@mentor.com>
To: Henning Schild <henning.schild@siemens.com>
Cc: <isar-users@googlegroups.com>
Subject: Re: [RFC Kernel PATCH 1/1] builddeb: support creation of linux-perf packages
Date: Tue, 3 Sep 2019 10:01:43 +0200 [thread overview]
Message-ID: <4c350bba-d2c1-9689-b42f-9c18dcfb3e13@mentor.com> (raw)
In-Reply-To: <20190830155815.3042828c@md1za8fc.ad001.siemens.net>
Hi Henning
On 8/30/19 3:58 PM, Henning Schild wrote:
> Am Wed, 28 Aug 2019 09:17:33 +0200
> schrieb Cedric Hombourger <Cedric_Hombourger@mentor.com>:
>
>> 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_<version> 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)
> Good idea, also not doing it inside Isar. I have one other debian based
> non-Isar project where we have a debian/ folder for perf ;).
>
> I would suggest trying that on ubuntu before posting.
>
Unfortunately Ubuntu does not use the same package structure
/usr/bin/perf is a script provided by their linux-tools-common package
it does re-route the call to perf to the actual perf binary for your kernel
So far, while package names differ, the logic is the same. Now come some
more annoying differences:
Ubuntu does not suffix perf with _<major>.<minor> but instead has the
perf tools at /usr/lib/linux-tools/`uname -r`/`basename $0
This is evidently an area where Debian and Ubuntu differ (Ubuntu does
have linux-image, linux-headers and linux-libc-dev packages just like
Debian)
So I am not quite sure how to address this without getting ugly (and
therefore hardly upstream'able)
Anything comes to mind?
Should we give up the idea of using builddeb and instead use our own
debian/{control,rules} in Isar? (Jan told me that you have started to
discuss/consider this)
We would need to design our solution such as distro specifics may be
easily implemented
Cedric
>> Signed-off-by: Cedric Hombourger <Cedric_Hombourger@mentor.com>
>> ---
>> 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"
> xy seems like a strange name, i did not even start looking why there
> are two and what they are used for
>
>> 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"
> Seems like this should be merged with the line before.
>
>> 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
> These lines all seem a little long.
>
>> + 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 <<EOF >> 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
> That all seems copied from Debian, except where does the "Section" come
> from and why deviate?
>
> Henning
>
>> + version $version
>> +EOF
>> +
>> cat <<EOF > debian/rules
>> #!$(command -v $MAKE) -f
>>
>> srctree ?= .
>> +EOF
>> +
>> +[ -n "${KDEB_PERF}" ] && cat <<EOF >> debian/rules
>> +export KDEB_PERF=${KDEB_PERF}
>> +EOF
>> +
>> +cat <<EOF >> debian/rules
>>
>> build:
>> \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} \
next prev parent reply other threads:[~2019-09-03 8:01 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-28 7:17 [RFC Kernel PATCH 0/1] " Cedric Hombourger
2019-08-28 7:17 ` [RFC Kernel PATCH 1/1] builddeb: " Cedric Hombourger
2019-08-30 13:58 ` Henning Schild
2019-09-03 8:01 ` Cedric Hombourger [this message]
2019-09-03 14:59 ` Baurzhan Ismagulov
2019-09-03 15:19 ` Jan Kiszka
2019-09-04 8:37 ` Henning Schild
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4c350bba-d2c1-9689-b42f-9c18dcfb3e13@mentor.com \
--to=cedric_hombourger@mentor.com \
--cc=henning.schild@siemens.com \
--cc=isar-users@googlegroups.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox