summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2011-02-21 16:29:43 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-02-21 16:36:51 +0000
commit577dd4b3e5d4861c31824d920fa170ba3a585f63 (patch)
tree72de94197186ea29203557bc1705c51f5d9948cf
parent05c4692320901eb5c600f04d346cbc743380bfbc (diff)
downloadpoky-577dd4b3e5d4861c31824d920fa170ba3a585f63.tar.gz
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 <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-extended/tar/tar-replacement-native_1.25.bb5
-rw-r--r--meta/recipes-extended/tar/tar.inc11
-rwxr-xr-xscripts/bitbake4
3 files changed, 16 insertions, 4 deletions
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 @@
1require tar_${PV}.bb
2
3inherit native
4
5BPN = "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"
8 8
9inherit autotools gettext 9inherit autotools gettext
10 10
11EXTRAINSTALL = "do_install_extra"
12EXTRAINSTALL_virtclass-native = ""
13
11do_install () { 14do_install () {
12 autotools_do_install 15 autotools_do_install
13 install -d ${D}${base_bindir} 16 install -d ${D}${base_bindir}
14 mv ${D}${bindir}/tar ${D}${base_bindir}/tar.${PN} 17 ${EXTRAINSTALL}
15 mv ${D}${libexecdir}/rmt ${D}${libexecdir}/rmt.${PN} 18}
19
20do_install_extra () {
21 mv ${D}${bindir}/tar ${D}${base_bindir}/tar.${PN} \
22 mv ${D}${libexecdir}/rmt ${D}${libexecdir}/rmt.${PN}
16} 23}
17 24
18pkg_postinst_${PN} () { 25pkg_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
15buildpseudo="1" 15buildpseudo="1"
16if [ $needpseudo = "1" ] && [ -e "$BUILDDIR/pseudodone" ]; then 16if [ $needpseudo = "1" ] && [ -e "$BUILDDIR/pseudodone" ]; then
17 PSEUDOBINDIR=`cat $BUILDDIR/pseudodone` 17 PSEUDOBINDIR=`cat $BUILDDIR/pseudodone`
18 if [ -e "$PSEUDOBINDIR/pseudo" ]; then 18 if [ -e "$PSEUDOBINDIR/pseudo" -a -e "$PSEUDOBINDIR/tar" ]; then
19 buildpseudo="0" 19 buildpseudo="0"
20 fi 20 fi
21fi 21fi
@@ -27,7 +27,7 @@ OLDPATH=$PATH
27export PATH=`echo $PATH | sed s#[^:]*/scripts:##` 27export PATH=`echo $PATH | sed s#[^:]*/scripts:##`
28if [ $buildpseudo = "1" ]; then 28if [ $buildpseudo = "1" ]; then
29 echo "Pseudo is not present but is required, building this first before the main build" 29 echo "Pseudo is not present but is required, building this first before the main build"
30 bitbake pseudo-native -c populate_sysroot 30 bitbake pseudo-native tar-replacement-native -c populate_sysroot
31 ret=$? 31 ret=$?
32 if [ "$ret" != "0" ]; then 32 if [ "$ret" != "0" ]; then
33 exit 1 33 exit 1