From 577dd4b3e5d4861c31824d920fa170ba3a585f63 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Mon, 21 Feb 2011 16:29:43 +0000 Subject: tar-replacement-native: Add a target to replace the default tar tar < 1.24 has symlink issues where extracting a tar archive containing a symlink to a directory where that symlink already exists will cause the symlink to be dereferenced. If that target doesn't exist tar can fail with a permissions error. Since we need to be able to do this for packages containing symlinks like xorg-minimal-fonts and eglibc, we have to ensure a tar 1.25 is available early in the build process. Signed-off-by: Richard Purdie --- meta/recipes-extended/tar/tar-replacement-native_1.25.bb | 5 +++++ meta/recipes-extended/tar/tar.inc | 11 +++++++++-- scripts/bitbake | 4 ++-- 3 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 meta/recipes-extended/tar/tar-replacement-native_1.25.bb diff --git a/meta/recipes-extended/tar/tar-replacement-native_1.25.bb b/meta/recipes-extended/tar/tar-replacement-native_1.25.bb new file mode 100644 index 0000000000..2ec55483c0 --- /dev/null +++ b/meta/recipes-extended/tar/tar-replacement-native_1.25.bb @@ -0,0 +1,5 @@ +require tar_${PV}.bb + +inherit native + +BPN = "tar" diff --git a/meta/recipes-extended/tar/tar.inc b/meta/recipes-extended/tar/tar.inc index 5246efc5af..f83fb46012 100644 --- a/meta/recipes-extended/tar/tar.inc +++ b/meta/recipes-extended/tar/tar.inc @@ -8,11 +8,18 @@ SRC_URI = "${GNU_MIRROR}/tar/tar-${PV}.tar.bz2" inherit autotools gettext +EXTRAINSTALL = "do_install_extra" +EXTRAINSTALL_virtclass-native = "" + do_install () { autotools_do_install install -d ${D}${base_bindir} - mv ${D}${bindir}/tar ${D}${base_bindir}/tar.${PN} - mv ${D}${libexecdir}/rmt ${D}${libexecdir}/rmt.${PN} + ${EXTRAINSTALL} +} + +do_install_extra () { + mv ${D}${bindir}/tar ${D}${base_bindir}/tar.${PN} \ + mv ${D}${libexecdir}/rmt ${D}${libexecdir}/rmt.${PN} } pkg_postinst_${PN} () { diff --git a/scripts/bitbake b/scripts/bitbake index f40bd28260..cad4dbe1b4 100755 --- a/scripts/bitbake +++ b/scripts/bitbake @@ -15,7 +15,7 @@ done buildpseudo="1" if [ $needpseudo = "1" ] && [ -e "$BUILDDIR/pseudodone" ]; then PSEUDOBINDIR=`cat $BUILDDIR/pseudodone` - if [ -e "$PSEUDOBINDIR/pseudo" ]; then + if [ -e "$PSEUDOBINDIR/pseudo" -a -e "$PSEUDOBINDIR/tar" ]; then buildpseudo="0" fi fi @@ -27,7 +27,7 @@ OLDPATH=$PATH export PATH=`echo $PATH | sed s#[^:]*/scripts:##` if [ $buildpseudo = "1" ]; then echo "Pseudo is not present but is required, building this first before the main build" - bitbake pseudo-native -c populate_sysroot + bitbake pseudo-native tar-replacement-native -c populate_sysroot ret=$? if [ "$ret" != "0" ]; then exit 1 -- cgit 1.2.3-korg