]> code.ossystems Code Review - openembedded-core.git/commitdiff
Misc hard link fixes
authorMark Hatle <mark.hatle@windriver.com>
Wed, 9 Feb 2011 04:16:41 +0000 (22:16 -0600)
committerRichard Purdie <rpurdie@linux.intel.com>
Wed, 9 Feb 2011 22:46:30 +0000 (22:46 +0000)
I searched the various classes and looked for copies that should attempt to
preserve hardlinks.  This fixes the majority of this copies by switching to
using tar as the copy method.  It also has the side effect of preserving sparse
files.

Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
meta/classes/libc-package.bbclass
meta/classes/populate_sdk_deb.bbclass
meta/classes/sourcepkg.bbclass
meta/classes/staging.bbclass

index 733f26b85ee6953c52c8626b85be54d7650225bf..c9d81f06388aef7968bd0bde9bbd08cbf05f7799 100644 (file)
@@ -104,24 +104,24 @@ TMP_LOCALE="/tmp/locale${libdir}/locale"
 do_prep_locale_tree() {
        treedir=${WORKDIR}/locale-tree
        rm -rf $treedir
-       mkdir -p $treedir/bin $treedir/lib $treedir/${datadir} $treedir/${libdir}/locale
-       cp -pPR ${PKGD}${datadir}/i18n $treedir/${datadir}/i18n
+       mkdir -p $treedir/${base_bindir} $treedir/${base_libdir} $treedir/${datadir} $treedir/${libdir}/locale
+       tar -cf - -C ${PKGD}${datadir} -ps i18n | tar -xf - -C $treedir/${datadir}
        # unzip to avoid parsing errors
        for i in $treedir/${datadir}/i18n/charmaps/*gz; do 
                gunzip $i
        done
-       cp -pPR ${PKGD}${base_libdir}/* $treedir/lib
+       tar -cf - -C ${PKGD}${base_libdir} -ps . | tar -xf - -C $treedir/${base_libdir}
        if [ -f ${STAGING_DIR_NATIVE}${prefix_native}/lib/libgcc_s.* ]; then
-               cp -pPR ${STAGING_DIR_NATIVE}/${prefix_native}/lib/libgcc_s.* $treedir/lib
+               tar -cf - -C ${STAGING_DIR_NATIVE}/${prefix_native}/${base_libdir} -ps libgcc_s.* | tar -xf - -C $treedir/${base_libdir}
        fi
-       install -m 0755 ${PKGD}${bindir}/localedef $treedir/bin
+       install -m 0755 ${PKGD}${bindir}/localedef $treedir/${base_bindir}
 }
 
 do_collect_bins_from_locale_tree() {
        treedir=${WORKDIR}/locale-tree
 
        mkdir -p ${PKGD}${libdir}
-       cp -pPR $treedir/${libdir}/locale ${PKGD}${libdir}
+       tar -cf - -C $treedir/${libdir} -ps locale | tar -xf - -C ${PKGD}${libdir}
 }
 
 inherit qemu
index d563c28674f716be031186ee3945576f65e1bbf2..a5b6384f7e14934ba6cea459c01b7672b1f1b183 100644 (file)
@@ -6,7 +6,7 @@ populate_sdk_post_deb () {
 
        local target_rootfs=$1
 
-       cp -r ${STAGING_ETCDIR_NATIVE}/apt ${target_rootfs}/etc
+       tar -cf -C ${STAGING_ETCDIR_NATIVE} -ps apt | tar -xf - -C ${target_rootfs}/etc
 }
 
 fakeroot populate_sdk_deb () {
index f73855303977f79893e1406f69f52749a6719570..f12a1955d425836129884309e26e8a5bb65069b0 100644 (file)
@@ -41,7 +41,7 @@ sourcepkg_do_create_orig_tgz(){
        echo $src_tree
        oenote "Creating .orig.tar.gz in ${DEPLOY_DIR_SRC}/${P}.orig.tar.gz"
        tar cvzf ${DEPLOY_DIR_SRC}/${P}.orig.tar.gz --exclude-from temp/exclude-from-file $src_tree
-       cp -pPR $src_tree $src_tree.orig
+       tar -cf - -C $src_tree -ps . | tar -xf - -C $src_tree.orig
 }
 
 sourcepkg_do_archive_bb() {
index a713734c3f636ffa877eb383ba5247c93bde6608..fef64573989c3c8b052bb0bb12bb750ddb091cfc 100644 (file)
@@ -17,7 +17,7 @@ sysroot_stage_dir() {
        # However we always want to stage a $src itself, even if it's empty
        mkdir -p "$dest"
        if [ -d "$src" ]; then
-               cp -fpPR "$src"/* "$dest"
+               tar -cf - -C "$src" -ps . | tar -xf - -C "$dest"
        fi
 }