external-python-tarball only can be built when inherit package_ipk now.
Update it and split the populate python operation to separated bbclass
according the value of PACKAGE_CLASSES, then it could be built for rpm
and deb too.

[Yocto 3006]

Signed-off-by: Kang Kai <kai.k...@windriver.com>
---
 meta/classes/populate_python_deb.bbclass          |   42 ++++++++++++++
 meta/classes/populate_python_ipk.bbclass          |   43 +++++++++++++++
 meta/classes/populate_python_rpm.bbclass          |   59 ++++++++++++++++++++
 meta/recipes-core/meta/external-python-tarball.bb |   61 ++++-----------------
 4 files changed, 155 insertions(+), 50 deletions(-)
 create mode 100644 meta/classes/populate_python_deb.bbclass
 create mode 100644 meta/classes/populate_python_ipk.bbclass
 create mode 100644 meta/classes/populate_python_rpm.bbclass

diff --git a/meta/classes/populate_python_deb.bbclass 
b/meta/classes/populate_python_deb.bbclass
new file mode 100644
index 0000000..5f2edb8
--- /dev/null
+++ b/meta/classes/populate_python_deb.bbclass
@@ -0,0 +1,42 @@
+do_populate_sdk[depends] += "dpkg-native:do_populate_sysroot 
apt-native:do_populate_sysroot bzip2-native:do_populate_sysroot"
+do_populate_sdk[recrdeptask] += "do_package_write_deb"
+
+
+DEB_SDK_ARCH = "${@[d.getVar('SDK_ARCH', True), "i386"]\
+                [d.getVar('SDK_ARCH', True) in \
+                ["x86", "i486", "i586", "i686", "pentium"]]}"
+
+do_populate_sdk[lockfiles] += "${DEPLOY_DIR_DEB}/deb.lock"
+
+populate_sdk_post_deb () {
+
+       local target_rootfs=$1
+
+       mkdir -p ${target_rootfs}/etc
+       tar -cf - -C ${STAGING_ETCDIR_NATIVE} -ps apt | tar -xf - -C 
${target_rootfs}/etc
+}
+
+populate_python_sdk () {
+
+       # update index
+       package_update_index_deb
+
+       ## install nativesdk ##
+       echo "Installing NATIVESDK packages"
+       export INSTALL_ROOTFS_DEB="${SDK_OUTPUT}"
+       export INSTALL_BASEARCH_DEB="${DEB_SDK_ARCH}"
+       export INSTALL_ARCHS_DEB="${SDK_PACKAGE_ARCHS}"
+       export INSTALL_PACKAGES_NORMAL_DEB="${TOOLCHAIN_HOST_TASK}"
+       export 
INSTALL_PACKAGES_ATTEMPTONLY_DEB="${TOOLCHAIN_HOST_TASK_ATTEMPTONLY}"
+       export PACKAGES_LINGUAS_DEB=""
+       export INSTALL_TASK_DEB="populate_sdk-nativesdk"
+
+       package_install_internal_deb
+       populate_sdk_post_deb ${SDK_OUTPUT}/${SDKPATHNATIVE}
+
+       #move remainings
+       install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}/var/lib/dpkg
+       mv ${SDK_OUTPUT}/var/lib/dpkg/* 
${SDK_OUTPUT}/${SDKPATHNATIVE}/var/lib/dpkg
+       rm -rf ${SDK_OUTPUT}/var
+}
+
diff --git a/meta/classes/populate_python_ipk.bbclass 
b/meta/classes/populate_python_ipk.bbclass
new file mode 100644
index 0000000..dadd13f
--- /dev/null
+++ b/meta/classes/populate_python_ipk.bbclass
@@ -0,0 +1,43 @@
+
+DEPENDS += "opkg-native opkg-utils-native"
+
+IPKG_HOST = "opkg-cl -f ${IPKGCONF_SDK} -o ${SDK_OUTPUT}"
+
+populate_python_sdk() {
+       mkdir -p ${SDK_OUTPUT}${localstatedir}/lib/opkg/
+
+       rm -f ${IPKGCONF_TARGET}
+       touch ${IPKGCONF_TARGET}
+       rm -f ${IPKGCONF_SDK}
+       touch ${IPKGCONF_SDK}
+
+       package_update_index_ipk
+       package_generate_ipkg_conf
+
+       for arch in ${PACKAGE_ARCHS}; do
+               revipkgarchs="$arch $revipkgarchs"
+       done
+
+       ${IPKG_HOST} update
+       ${IPKG_HOST} install ${TOOLCHAIN_HOST_TASK}
+
+       install -d 
${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/opkg
+       mv ${SDK_OUTPUT}/var/lib/opkg/* 
${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/opkg/
+       rm -Rf ${SDK_OUTPUT}/var
+
+       install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}
+       install -m 0644 ${IPKGCONF_SDK} 
${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}/
+
+       rm -f ${SDK_OUTPUT}/${SDKPATHNATIVE}${libdir_nativesdk}/*.la
+
+       # Link the ld.so.cache file into the hosts filesystem
+       ln -s /etc/ld.so.cache ${SDK_OUTPUT}/${SDKPATHNATIVE}/etc/ld.so.cache
+
+       # Add version information
+       versionfile=${SDK_OUTPUT}/${SDKPATH}/version-${MULTIMACH_TARGET_SYS}
+       touch $versionfile
+       echo 'Distro: ${DISTRO}' >> $versionfile
+       echo 'Distro Version: ${DISTRO_VERSION}' >> $versionfile
+       echo 'Metadata Revision: ${METADATA_REVISION}' >> $versionfile
+       echo 'Timestamp: ${DATETIME}' >> $versionfile
+}
diff --git a/meta/classes/populate_python_rpm.bbclass 
b/meta/classes/populate_python_rpm.bbclass
new file mode 100644
index 0000000..4eb9ce8
--- /dev/null
+++ b/meta/classes/populate_python_rpm.bbclass
@@ -0,0 +1,59 @@
+# Smart is python based, so be sure python-native is available to us.
+EXTRANATIVEPATH += "python-native"
+
+do_populate_sdk[depends] += "rpm-native:do_populate_sysroot"
+do_populate_sdk[depends] += "rpmresolve-native:do_populate_sysroot"
+do_populate_sdk[depends] += "python-smartpm-native:do_populate_sysroot"
+
+# Creating the repo info in do_rootfs
+do_populate_sdk[depends] += "createrepo-native:do_populate_sysroot"
+
+do_populate_sdk[recrdeptask] += "do_package_write_rpm"
+
+rpmlibdir = "/var/lib/rpm"
+RPMOPTS="--dbpath ${rpmlibdir}"
+RPM="rpm ${RPMOPTS}"
+
+do_populate_sdk[lockfiles] += "${DEPLOY_DIR_RPM}/rpm.lock"
+
+populate_sdk_post_rpm () {
+
+       local target_rootfs=$1
+
+       # remove lock files
+       rm -f ${target_rootfs}/__db.*
+
+       # Remove all remaining resolver files
+       rm -rf ${target_rootfs}/install
+       rm -rf ${target_rootfs}/var/lib/smart
+}
+
+populate_python_sdk () {
+
+       package_update_index_rpm
+
+       export INSTALL_ROOTFS_RPM="${SDK_OUTPUT}"
+       export INSTALL_PLATFORM_RPM="${SDK_ARCH}"
+    export INSTALL_PLATFORM_EXTRA_RPM="${SDK_ARCH}-nativesdk"
+       export INSTALL_PACKAGES_RPM="${TOOLCHAIN_HOST_TASK}"
+       export 
INSTALL_PACKAGES_ATTEMPTONLY_RPM="${TOOLCHAIN_TARGET_HOST_ATTEMPTONLY}"
+       export INSTALL_PACKAGES_LINGUAS_RPM=""
+       export INSTALL_PROVIDENAME_RPM="/bin/sh /bin/bash /usr/bin/env 
/usr/bin/perl pkgconfig libGL.so()(64bit) libGL.so"
+       export INSTALL_TASK_RPM="populate_sdk_rpm-nativesdk"
+       export INSTALL_COMPLEMENTARY_RPM=""
+
+       # Setup base system configuration
+       mkdir -p ${INSTALL_ROOTFS_RPM}/etc/rpm/
+
+       package_install_internal_rpm --sdk
+       populate_sdk_post_rpm ${INSTALL_ROOTFS_RPM}
+
+       # move host RPM library data
+       install -d 
${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/rpm
+       mv ${SDK_OUTPUT}${rpmlibdir}/* 
${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/rpm/
+       rm -Rf ${SDK_OUTPUT}/var
+
+       install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}
+       mv ${SDK_OUTPUT}/etc/* ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}/
+       rm -rf ${SDK_OUTPUT}/etc
+}
diff --git a/meta/recipes-core/meta/external-python-tarball.bb 
b/meta/recipes-core/meta/external-python-tarball.bb
index 2085acc..d996bdf 100644
--- a/meta/recipes-core/meta/external-python-tarball.bb
+++ b/meta/recipes-core/meta/external-python-tarball.bb
@@ -3,18 +3,17 @@ LICENSE = "MIT"
 LIC_FILES_CHKSUM = 
"file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
                     
file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
 
-DEPENDS = "opkg-native opkg-utils-native virtual/fakeroot-native sed-native"
+DEPENDS = "virtual/fakeroot-native sed-native"
 
-PR = "r1"
+PR = "r2"
 
 inherit meta
+inherit populate_python_${IMAGE_PKGTYPE}
 
 SDK_DIR = "${WORKDIR}/sdk"
 SDK_OUTPUT = "${SDK_DIR}/image"
 SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
 
-IPKG_HOST = "opkg-cl -f ${IPKGCONF_SDK} -o ${SDK_OUTPUT}"
-
 TOOLCHAIN_HOST_TASK ?= "\
     nativesdk-python-core \
     nativesdk-python-textutils \
@@ -43,56 +42,18 @@ RDEPENDS = "${TOOLCHAIN_HOST_TASK}"
 
 EXCLUDE_FROM_WORLD = "1"
 
-do_populate_sdk() {
-       rm -rf ${SDK_OUTPUT}
-       mkdir -p ${SDK_OUTPUT}
-       mkdir -p ${SDK_OUTPUT}${localstatedir}/lib/opkg/
-
-       rm -f ${IPKGCONF_TARGET}
-       touch ${IPKGCONF_TARGET}
-       rm -f ${IPKGCONF_SDK}
-       touch ${IPKGCONF_SDK}
-
-       package_update_index_ipk
-       package_generate_ipkg_conf
-
-       for arch in ${PACKAGE_ARCHS}; do
-               revipkgarchs="$arch $revipkgarchs"
-       done
-
-       ${IPKG_HOST} update
-       ${IPKG_HOST} install ${TOOLCHAIN_HOST_TASK}
-
-       install -d 
${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/opkg
-       mv ${SDK_OUTPUT}/var/lib/opkg/* 
${SDK_OUTPUT}/${SDKPATHNATIVE}${localstatedir_nativesdk}/lib/opkg/
-       rm -Rf ${SDK_OUTPUT}/var
+fakeroot do_populate_sdk() {
+    rm -rf ${SDK_OUTPUT}
+    mkdir -p ${SDK_OUTPUT}
 
-       install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}
-       install -m 0644 ${IPKGCONF_SDK} 
${SDK_OUTPUT}/${SDKPATHNATIVE}/${sysconfdir}/
+    populate_python_sdk
 
-       rm -f ${SDK_OUTPUT}/${SDKPATHNATIVE}${libdir_nativesdk}/*.la
-
-       # Link the ld.so.cache file into the hosts filesystem
-       ln -s /etc/ld.so.cache ${SDK_OUTPUT}/${SDKPATHNATIVE}/etc/ld.so.cache
-
-       # Add version information
-       versionfile=${SDK_OUTPUT}/${SDKPATH}/version-${MULTIMACH_TARGET_SYS}
-       touch $versionfile
-       echo 'Distro: ${DISTRO}' >> $versionfile
-       echo 'Distro Version: ${DISTRO_VERSION}' >> $versionfile
-       echo 'Metadata Revision: ${METADATA_REVISION}' >> $versionfile
-       echo 'Timestamp: ${DATETIME}' >> $versionfile
-
-       # Package it up
-       mkdir -p ${SDK_DEPLOY}
-       cd ${SDK_OUTPUT}
-       tar  --owner=root --group=root -cj 
--file=${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.bz2 .
+    # Package it up
+    mkdir -p ${SDK_DEPLOY}
+    cd ${SDK_OUTPUT}
+    tar  --owner=root --group=root -cj 
--file=${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.bz2 .
 }
 
 do_populate_sdk[nostamp] = "1"
 do_populate_sdk[recrdeptask] = "do_package_write"
 addtask populate_sdk before do_build after do_install
-
-inherit blacklist
-
-PNBLACKLIST[external-python-tarball] = "${@base_contains('PACKAGE_CLASSES', 
'package_ipk', '', 'This recipe requires \'package_ipk\' support to be enabled 
in PACKAGE_CLASSES.', d)}"
-- 
1.7.5.4


_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core

Reply via email to