aboutsummaryrefslogtreecommitdiffstats
path: root/meta/classes/bin_package.bbclass
diff options
context:
space:
mode:
authorRobert Yang <liezhi.yang@windriver.com>2012-09-02 12:15:47 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-09-10 12:03:37 +0100
commit7037f52909b8226d2afed4ac73c902d410afc112 (patch)
treed5a20b7ef5f004936e98a90e765bfd809dcc03f6 /meta/classes/bin_package.bbclass
parentfc985f511da86400e4fa7d17555216c12eb51666 (diff)
downloadopenembedded-core-contrib-7037f52909b8226d2afed4ac73c902d410afc112.tar.gz
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] Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
Diffstat (limited to 'meta/classes/bin_package.bbclass')
-rw-r--r--meta/classes/bin_package.bbclass36
1 files changed, 36 insertions, 0 deletions
diff --git a/meta/classes/bin_package.bbclass b/meta/classes/bin_package.bbclass
new file mode 100644
index 0000000000..a52b75be5c
--- /dev/null
+++ b/meta/classes/bin_package.bbclass
@@ -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