bin_package.bbclass: binary package recipe class

This is used for the binary package recipe, it's been suggested that it
would be a useful feature to be able to easily take an RPM or similar
containing a software binary from a 3rd party software vendor and
integrate it into an image created by the build system.

* Brief introduction
  - The binary pkg can be .rpm, .deb, .ipk and other formats which can
    be unpacked by bitbake fetcher.

  - Let bitbake unpack the bianry package, just like unpack the source
    package.

  - Skip the do_configure and do_compile.

  - Install the files to ${D}

  - Other steps are similar to the source package's recipe.

* Note:
  - The "subdir" parameter in the SRC_URI is useful for the binary
    package recipe, so I added an example in the comment.

  - I have sent a patch to bitbake-devel mailing list to support
    unpack the .rpm, .ipk, and .deb files.

[YOCTO #1592]

(From OE-Core rev: 7037f52909b8226d2afed4ac73c902d410afc112)

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Robert Yang 2012-09-02 12:15:47 +08:00 committed by Richard Purdie
parent 4a015e57cc
commit 208ff62db4
1 changed files with 36 additions and 0 deletions

View File

@ -0,0 +1,36 @@
#
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# Common variable and task for the binary package recipe.
# Basic principle:
# * The files have been unpacked to ${S} by base.bbclass
# * Skip do_configure and do_compile
# * Use do_install to install the files to ${D}
#
# Note:
# The "subdir" parameter in the SRC_URI is useful when the input package
# is rpm, ipk, deb and so on, for example:
#
# SRC_URI = "http://foo.com/foo-1.0-r1.i586.rpm;subdir=foo-1.0"
#
# Then the files would be unpacked to ${WORKDIR}/foo-1.0, otherwise
# they would be in ${WORKDIR}.
#
# Skip the unwanted steps
do_configure[noexec] = "1"
do_compile[noexec] = "1"
# Install the files to ${D}
bin_package_do_install () {
# Do it carefully
[ -d "${S}" ] || exit 1
cd ${S} || exit 1
tar --no-same-owner --exclude='./patches' --exclude='./.pc' -cpf - . \
| tar --no-same-owner -xpf - -C ${D}
}
FILES_${PN} = "/"
EXPORT_FUNCTIONS do_install