On 08/15/2012 11:32 PM, Robert Yang wrote:
diff --git a/meta/classes/external_package.bbclass
b/meta/classes/external_package.bbclass
new file mode 100644
index 0000000..c6d87bb
--- /dev/null
+++ b/meta/classes/external_package.bbclass
@@ -0,0 +1,41 @@
+#
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# Add external binary pkg to the repo and install them:
+#
+# Specify where are the external binary pkg dir
+#EXTERNAL_PACKAGE_DIR = "<path1> <path2> ..."
+# Specify which pkg will be installed
+#EXTERNAL_INSTALL_PACKAGE = "<pkg1> <pkg2> ..."
+
+#
+# Add the external binary rpm into the repo, copy the binary rpm files
+# from EXTERNAL_PACKAGE_DIR to ${DEPLOY_DIR_RPM}/external, and put them
+# to the relevant arch dir.
+#
+add_external_rpm () {
+ local supported_archs="$@"
+
I updated this patch and the "PATCH 2/3" a little since the "dash" doesn't
support the local var="$@", so changed it to:
local supported_archs
supported_archs="$@"
and pushed to the repo:
git://git.pokylinux.org/poky-contrib robert/external_install
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=robert/external_install
// Robert
+ # Clean the EXTERNAL_DIR_RPM dir and re-copy
+ [ ! -d "${EXTERNAL_DIR_RPM}" ] || rm -fr ${EXTERNAL_DIR_RPM}
+
+ if [ -n "${EXTERNAL_PACKAGE_DIR}" -a -n "${EXTERNAL_INSTALL_PACKAGE}" ];
then
+ echo "Adding external binary rpms to the repo ..."
+ for f in `find ${EXTERNAL_PACKAGE_DIR} -type f -name '*.rpm'`; do
+ arch="`echo $f | awk -F\. '{print $(NF-1)}'`"
+ found=""
+ for archvar in $supported_archs; do
+ # Only pick up the supported arch's rpm
+ if [ "$arch" == "$archvar" ]; then
+ [ -d "${EXTERNAL_DIR_RPM}/$arch" ] || mkdir -p
${EXTERNAL_DIR_RPM}/$arch
+ cp -f $f ${EXTERNAL_DIR_RPM}/$arch/
+ found="1"
+ break
+ fi
+ done
+ [ -n "$found" ] || echo "Uknown arch $arch"
+ done
+ fi
+}
+
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index 72720f1..283688a 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -5,6 +5,8 @@ inherit imagetest-${IMAGETEST}
inherit populate_sdk_base
+inherit external_package
+
TOOLCHAIN_TARGET_TASK += "${PACKAGE_INSTALL}"
TOOLCHAIN_TARGET_TASK_ATTEMPTONLY += "${PACKAGE_INSTALL_ATTEMPTONLY}"
POPULATE_SDK_POST_TARGET_COMMAND += "rootfs_install_complementary populate_sdk;
"
diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass
index b58ae85..bd2c9a2 100644
--- a/meta/classes/package_rpm.bbclass
+++ b/meta/classes/package_rpm.bbclass
@@ -7,6 +7,7 @@ RPMBUILD="rpmbuild"
PKGWRITEDIRRPM = "${WORKDIR}/deploy-rpms"
PKGWRITEDIRSRPM = "${DEPLOY_DIR}/sources/deploy-srpm"
+EXTERNAL_DIR_RPM = "${DEPLOY_DIR_RPM}/external"
python package_rpm_fn () {
d.setVar('PKGFN', d.getVar('PKG'))
@@ -26,6 +27,9 @@ package_update_index_rpm () {
return
fi
+ # Add external binary pkgs
+ add_external_rpm ${PACKAGE_ARCHS} ${MULTILIB_PACKAGE_ARCHS}
${SDK_PACKAGE_ARCHS}
+
# Update target packages
base_archs="${PACKAGE_ARCHS}"
ml_archs="${MULTILIB_PACKAGE_ARCHS}"
@@ -44,9 +48,11 @@ package_update_index_rpm_common () {
for archvar in "$@"; do
eval archs=\${${archvar}}
packagedirs=""
- for arch in $archs; do
- packagedirs="${DEPLOY_DIR_RPM}/$arch $packagedirs"
- rm -rf ${DEPLOY_DIR_RPM}/$arch/solvedb.done
+ for d in ${DEPLOY_DIR_RPM} ${EXTERNAL_DIR_RPM}; do
+ for arch in $archs; do
+ packagedirs="$d/$arch $packagedirs"
+ rm -rf $d/$arch/solvedb.done
+ done
done
cat /dev/null > ${rpmconf_base}-${archvar}.conf
diff --git a/meta/classes/rootfs_rpm.bbclass b/meta/classes/rootfs_rpm.bbclass
index c0207d8..7ce694c 100644
--- a/meta/classes/rootfs_rpm.bbclass
+++ b/meta/classes/rootfs_rpm.bbclass
@@ -51,7 +51,7 @@ fakeroot rootfs_rpm_do_rootfs () {
export INSTALL_ROOTFS_RPM="${IMAGE_ROOTFS}"
export INSTALL_PLATFORM_RPM="${TARGET_ARCH}"
export INSTALL_CONFBASE_RPM="${RPMCONF_TARGET_BASE}"
- export INSTALL_PACKAGES_RPM="${PACKAGE_INSTALL}"
+ export INSTALL_PACKAGES_RPM="${PACKAGE_INSTALL}
${EXTERNAL_INSTALL_PACKAGE}"
export INSTALL_PACKAGES_ATTEMPTONLY_RPM="${PACKAGE_INSTALL_ATTEMPTONLY}"
export INSTALL_PACKAGES_LINGUAS_RPM="${LINGUAS_INSTALL}"
export INSTALL_PROVIDENAME_RPM=""
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core