diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-02-21 16:29:43 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-02-21 16:36:51 +0000 |
commit | 577dd4b3e5d4861c31824d920fa170ba3a585f63 (patch) | |
tree | 72de94197186ea29203557bc1705c51f5d9948cf | |
parent | 05c4692320901eb5c600f04d346cbc743380bfbc (diff) | |
download | poky-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.bb | 5 | ||||
-rw-r--r-- | meta/recipes-extended/tar/tar.inc | 11 | ||||
-rwxr-xr-x | scripts/bitbake | 4 |
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 @@ | |||
1 | require tar_${PV}.bb | ||
2 | |||
3 | inherit native | ||
4 | |||
5 | 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" | |||
8 | 8 | ||
9 | inherit autotools gettext | 9 | inherit autotools gettext |
10 | 10 | ||
11 | EXTRAINSTALL = "do_install_extra" | ||
12 | EXTRAINSTALL_virtclass-native = "" | ||
13 | |||
11 | do_install () { | 14 | do_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 | |||
20 | do_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 | ||
18 | pkg_postinst_${PN} () { | 25 | 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 | |||
15 | buildpseudo="1" | 15 | buildpseudo="1" |
16 | if [ $needpseudo = "1" ] && [ -e "$BUILDDIR/pseudodone" ]; then | 16 | if [ $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 |
21 | fi | 21 | fi |
@@ -27,7 +27,7 @@ OLDPATH=$PATH | |||
27 | export PATH=`echo $PATH | sed s#[^:]*/scripts:##` | 27 | export PATH=`echo $PATH | sed s#[^:]*/scripts:##` |
28 | if [ $buildpseudo = "1" ]; then | 28 | if [ $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 |