]> code.ossystems Code Review - openembedded-core.git/commitdiff
packaged-staging: post-process non-binary files to fix paths in native packages
authorJoshua Lock <josh@linux.intel.com>
Fri, 26 Feb 2010 12:33:34 +0000 (12:33 +0000)
committerJoshua Lock <josh@linux.intel.com>
Fri, 26 Feb 2010 12:33:34 +0000 (12:33 +0000)
Extend the existing libtool hack so that native packages (native, cross, sdk)
have all non-binary files scanned and the STAGING_DIR fixed up.

Signed-off-by: Joshua Lock <josh@linux.intel.com>
meta/classes/packaged-staging.bbclass

index 4789ecc3b18ba6b3e7d0671c0d28de8b9541e9aa..84ee734928c44fa7bcb5d0421d8bb2cdaf2d30c1 100644 (file)
@@ -19,6 +19,7 @@ PSTAGE_PKGPN      = "${@bb.data.expand('staging-${PN}-${MULTIMACH_ARCH}${TARGET_
 PSTAGE_PKGNAME    = "${PSTAGE_PKGPN}_${PSTAGE_PKGVERSION}_${PSTAGE_PKGARCH}.ipk"
 PSTAGE_PKG        = "${PSTAGE_DIR}/${PSTAGE_PKGPATH}/${PSTAGE_PKGNAME}"
 PSTAGE_WORKDIR   = "${TMPDIR}/pstage"
+PSTAGE_SCAN_CMD ?= "find ${PSTAGE_TMPDIR_STAGE} -name "*.la" -type f"
 
 PSTAGE_NATIVEDEPENDS = "\
     shasum-native \
@@ -36,6 +37,8 @@ python () {
         path = bb.data.getVar('PSTAGE_PKGPATH', d, 1)
         path = path + bb.data.getVar('TMPDIR', d, 1).replace('/', '-')
         bb.data.setVar('PSTAGE_PKGPATH', path, d)
+        scan_cmd = "qrep -Irl ${STAGING_DIR} ${PSTAGE_TMDPDIR_STAGE}"
+        bb.data.setVar('PSTAGE_SCAN_CMD', scan_cmd, d)
 
     # PSTAGE_NATIVEDEPENDS lists the packages we need before we can use packaged 
     # staging. There will always be some packages we depend on.
@@ -356,8 +359,9 @@ staging_packager () {
        # Need to remove hardcoded paths and fix these when we install the
        # staging packages.
        # Could someone please add sysroot support to libtool!
-        for i in `find ${PSTAGE_TMPDIR_STAGE} -name "*.la" -type f` ; do \
-            sed -i -e s:${STAGING_DIR}:FIXMESTAGINGDIR:g $i
+        for i in `${PSTAGE_SCAN_CMD}` ; do \
+                sed -i -e s:${STAGING_DIR}:FIXMESTAGINGDIR:g $i
+                echo $i | sed -e 's:${PSTAGE_TMPDIR_STAGE}/::' >> ${PSTAGE_TMPDIR_STAGE}/sysroots/fixmepath
         done
         
        ${PSTAGE_BUILD_CMD} ${PSTAGE_TMPDIR_STAGE} ${PSTAGE_DIR}/${PSTAGE_PKGPATH}
@@ -382,12 +386,21 @@ staging_package_installer () {
        find -type f | grep -v ./CONTROL | sed -e 's/^\.//' > ${TMPDIR}${libdir_native}/opkg/info/${PSTAGE_PKGPN}.list
 }
 
-staging_package_libtoolhack () {
+python staging_package_libtoolhack () {
        # Deal with libtool not supporting sysroots and add our new
        # staging location
-        for i in `find ${STAGING_DIR} -name "*.la" -type f` ; do \
-            sed -i -e s:FIXMESTAGINGDIR:${STAGING_DIR}:g $i
-        done
+        tmpdir = bb.data.getVar('TMPDIR', d, True)
+        staging = bb.data.getVar('STAGING_DIR', d, True)
+        fixmefn =  staging + "/fixmepath"
+        try:
+            fixmefd = open(fixmefn,"r")
+            fixmefiles = fixmefd.readlines()
+            fixmefd.close()
+            os.system('rm -f ' + fixmefn)
+            for file in fixmefiles:
+                os.system("sed -i -e s:FIXMESTAGINGDIR:%s:g %s" % (staging, tmpdir + '/' + file))
+        except IOError:
+            pass
 }
 
 python do_package_stage () {