[PATCH 1/1] UBUNTU: linux-tools -- pull out the perf binary into a binary package V2
Stefan Bader
stefan.bader at canonical.com
Tue Mar 16 19:02:19 UTC 2010
Andy Whitcroft wrote:
> [Updated patch, same contents better ordering in 2-*.mk which vastly improves
> the reviewability.]
>
> We are getting complex dependancies on the linux-image package as a result
> of including the perf binary in the package. This ties us to the versions
> of binutils and libc on the build release, which limits the installability
> of that kernel on older releases. This is a problem for testing.
>
> Move the binary over to a release and architecture specific binary package
> linux-tools-VERSION-ABI. Rename the current linux-tools package over to
> linux-tools-common and depend the binary packages on it. We will also
> need to add a new linux-tools meta package to the linux-meta package.
>
> Signed-off-by: Andy Whitcroft <apw at canonical.com>
Acked-by: Stefan Bader <stefan bader at canonical.com>
> ---
> debian.master/control.stub.in | 15 +++++++--
> debian/rules.d/0-common-vars.mk | 3 +-
> debian/rules.d/2-binary-arch.mk | 61 ++++++++++++++++++++++++++-----------
> debian/rules.d/3-binary-indep.mk | 6 ++--
> debian/tools/perf | 6 ++-
> 5 files changed, 64 insertions(+), 27 deletions(-)
>
> diff --git a/debian.master/control.stub.in b/debian.master/control.stub.in
> index 4b507ae..afb4ae9 100644
> --- a/debian.master/control.stub.in
> +++ b/debian.master/control.stub.in
> @@ -45,13 +45,12 @@ Description: Linux kernel specific documentation for version PKGVER
> /usr/share/doc/SRCPKGNAME-doc/00-INDEX for a list of what is
> contained in each file.
>
> -Package: SRCPKGNAME-tools
> +Package: SRCPKGNAME-tools-common
> Architecture: all
> Section: admin
> Priority: optional
> Depends: ${misc:Depends}
> -Conflicts: SRCPKGNAME-tools-2.6
> -Replaces: SRCPKGNAME-tools-2.6
> +Replaces: SRCPKGNAME-tools (<= 2.6.32-16.25)
> Description: Linux kernel specific tools for version PKGVER
> This package provides the various tools in the PKGVER kernel source.
>
> @@ -77,3 +76,13 @@ Description: Linux Kernel Headers for development
> are used by the installed headers for GNU glibc and other system
> libraries. They are NOT meant to be used to build third-party modules for
> your kernel. Use SRCPKGNAME-headers-* packages for that.
> +
> +Package: linux-tools-PKGVER-ABINUM
> +Architecture: i386 amd64 lpia ia64 powerpc sparc armel
> +Section: devel
> +Priority: optional
> +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common
> +Description: Linux kernel tools for version PKGVER-ABINUM
> + This package provides kernel tools for version PKGVER-ABINUM on
> + DESC.
> +
> diff --git a/debian/rules.d/0-common-vars.mk b/debian/rules.d/0-common-vars.mk
> index d069cad..5e064d1 100644
> --- a/debian/rules.d/0-common-vars.mk
> +++ b/debian/rules.d/0-common-vars.mk
> @@ -127,7 +127,8 @@ do_tools=false
> ifneq ($(wildcard $(CURDIR)/tools),)
> do_tools=true
> endif
> -tools_pkg_name=$(src_pkg_name)-tools
> +tools_pkg_name=$(src_pkg_name)-tools-$(abi_release)
> +tools_common_pkg_name=$(src_pkg_name)-tools-common
>
> # Support parallel=<n> in DEB_BUILD_OPTIONS (see #209008)
> #
> diff --git a/debian/rules.d/2-binary-arch.mk b/debian/rules.d/2-binary-arch.mk
> index 4caf3bd..fea4a11 100644
> --- a/debian/rules.d/2-binary-arch.mk
> +++ b/debian/rules.d/2-binary-arch.mk
> @@ -24,15 +24,8 @@ $(stampdir)/stamp-prepare-tree-%: $(commonconfdir)/config.common.$(family) $(arc
> cat $^ | sed -e 's/.*CONFIG_VERSION_SIGNATURE.*/CONFIG_VERSION_SIGNATURE="Ubuntu $(release)-$(revision)-$* $(release)$(extraversion)"/' > $(builddir)/build-$*/.config
> find $(builddir)/build-$* -name "*.ko" | xargs rm -f
> $(build_cd) $(kmake) $(build_O) silentoldconfig prepare scripts
> -ifeq ($(do_tools),true)
> - install -d $(builddir)/tools-$*
> - for i in *; do ln -s $(CURDIR)/$$i $(builddir)/tools-$*/; done
> - rm $(builddir)/tools-$*/tools
> - rsync -a tools/ $(builddir)/tools-$*/tools/
> -endif
> touch $@
>
> -
> # Do the actual build, including image and modules
> build-%: $(stampdir)/stamp-build-%
> @# Empty for make to be happy
> @@ -41,9 +34,6 @@ $(stampdir)/stamp-build-%: prepare-%
> @echo "Building $*..."
> $(build_cd) $(kmake) $(build_O) $(conc_level) $(build_image)
> $(build_cd) $(kmake) $(build_O) $(conc_level) modules
> -ifeq ($(do_tools),true)
> - cd $(builddir)/tools-$*/tools/perf && make
> -endif
> @touch $@
>
> # Install the finished build
> @@ -102,13 +92,6 @@ endif
> $(pkgdir)/lib/modules/$(abi_release)-$*/initrd/; \
> fi
>
> - # Add the tools.
> -ifeq ($(do_tools),true)
> - install -d $(pkgdir)/usr/bin
> - install -s -m755 $(builddir)/tools-$*/tools/perf/perf \
> - $(pkgdir)/usr/bin/perf_$(abi_release)-$*
> -endif
> -
> # Now the image scripts
> install -d $(pkgdir)/DEBIAN
> for script in postinst postrm preinst prerm; do \
> @@ -336,7 +319,49 @@ endif
> $(stampdir)/stamp-flavours:
> @echo $(flavours) > $@
>
> -binary-debs: $(stampdir)/stamp-flavours $(addprefix binary-,$(flavours))
> +#
> +# per-architecture packages
> +#
> +$(stampdir)/stamp-prepare-perarch:
> + @echo "Preparing perarch ..."
> +ifeq ($(do_tools),true)
> + install -d $(builddir)/tools-$*
> + for i in *; do ln -s $(CURDIR)/$$i $(builddir)/tools-$*/; done
> + rm $(builddir)/tools-$*/tools
> + rsync -a tools/ $(builddir)/tools-$*/tools/
> +endif
> + touch $@
> +
> +$(stampdir)/stamp-build-perarch: prepare-perarch
> +ifeq ($(do_tools),true)
> + cd $(builddir)/tools-$*/tools/perf && make
> +endif
> + @touch $@
> +
> +install-perarch: toolspkgdir = $(CURDIR)/debian/$(tools_pkg_name)
> +install-perarch: $(stampdir)/stamp-build-perarch
> + # Add the tools.
> +ifeq ($(do_tools),true)
> + install -d $(toolspkgdir)/usr/bin
> + install -s -m755 $(builddir)/tools-$*/tools/perf/perf \
> + $(toolspkgdir)/usr/bin/perf_$(abi_release)
> +endif
> +
> +binary-perarch: toolspkg = $(tools_pkg_name)
> +binary-perarch: install-perarch
> +ifeq ($(do_tools),true)
> + dh_installchangelogs -p$(toolspkg)
> + dh_installdocs -p$(toolspkg)
> + dh_compress -p$(toolspkg)
> + dh_fixperms -p$(toolspkg)
> + dh_shlibdeps -p$(toolspkg)
> + dh_installdeb -p$(toolspkg)
> + dh_gencontrol -p$(toolspkg)
> + dh_md5sums -p$(toolspkg)
> + dh_builddeb -p$(toolspkg)
> +endif
> +
> +binary-debs: binary-perarch $(stampdir)/stamp-flavours $(addprefix binary-,$(flavours))
>
> build-arch: $(addprefix build-,$(flavours))
>
> diff --git a/debian/rules.d/3-binary-indep.mk b/debian/rules.d/3-binary-indep.mk
> index 9a99736..c670e5f 100644
> --- a/debian/rules.d/3-binary-indep.mk
> +++ b/debian/rules.d/3-binary-indep.mk
> @@ -62,9 +62,9 @@ ifeq ($(do_source_package_content),true)
> rm -rf $(srcdir)
> endif
>
> -toolspkg = $(tools_pkg_name)
> -toolsbin = $(CURDIR)/debian/$(toolspkg)/usr/bin
> -toolsman = $(CURDIR)/debian/$(toolspkg)/usr/share/man
> +install-tools: toolspkg = $(tools_common_pkg_name)
> +install-tools: toolsbin = $(CURDIR)/debian/$(toolspkg)/usr/bin
> +install-tools: toolsman = $(CURDIR)/debian/$(toolspkg)/usr/share/man
> install-tools:
> dh_testdir
> dh_testroot
> diff --git a/debian/tools/perf b/debian/tools/perf
> index cfc2f87..1a9915f 100644
> --- a/debian/tools/perf
> +++ b/debian/tools/perf
> @@ -1,2 +1,4 @@
> -#!/bin/sh
> -exec perf_`uname -r` "$@"
> +#!/bin/bash
> +version=`uname -r`
> +version=${version%-*}
> +exec "perf_$version" "$@"
More information about the kernel-team
mailing list