summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--meta/classes/sanity.bbclass31
-rwxr-xr-xscripts/bitbake42
2 files changed, 32 insertions, 41 deletions
diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass
index 1c45b5baac..9a29f328f6 100644
--- a/meta/classes/sanity.bbclass
+++ b/meta/classes/sanity.bbclass
@@ -359,6 +359,28 @@ def check_gcc_march(sanity_data):
return result
+# Tar version 1.24 and onwards handle overwriting symlinks correctly
+# but earlier versions do not; this needs to work properly for sstate
+def check_tar_version(sanity_data, loosever):
+ status, result = oe.utils.getstatusoutput("tar --version")
+ if status != 0:
+ return "Unable to execute tar --version, exit code %s\n" % status
+ version = result.split()[3]
+ if loosever(version) < loosever("1.24"):
+ return "Your version of tar is older than 1.24 and has bugs which will break builds. Please install a newer version of tar.\n"
+ return None
+
+# We use git parameters and functionality only found in 1.7.5 or later
+def check_git_version(sanity_data, loosever):
+ status, result = oe.utils.getstatusoutput("git --version 2> /dev/null")
+ if status != 0:
+ return "Unable to execute git --version, exit code %s\n" % status
+ version = result.split()[2]
+ if loosever(version) < loosever("1.7.5"):
+ return "Your version of git is older than 1.7.5 and has bugs which will break builds. Please install a newer version of git.\n"
+ return None
+
+
def check_sanity(sanity_data):
import subprocess
@@ -409,6 +431,15 @@ def check_sanity(sanity_data):
messages = messages + 'Please set a MACHINE in your local.conf or environment\n'
machinevalid = False
+ tarmsg = check_tar_version(sanity_data, LooseVersion)
+ if tarmsg:
+ messages = messages + tarmsg
+
+ gitmsg = check_git_version(sanity_data, LooseVersion)
+ if gitmsg:
+ messages = messages + gitmsg
+
+
# Check we are using a valid local.conf
current_conf = sanity_data.getVar('CONF_VERSION', True)
conf_version = sanity_data.getVar('LOCALCONF_VERSION', True)
diff --git a/scripts/bitbake b/scripts/bitbake
index 31a34b3f16..a8c67bb125 100755
--- a/scripts/bitbake
+++ b/scripts/bitbake
@@ -57,26 +57,6 @@ elif [ -z "$BUILDDIR" ] ; then
BUILDDIR="`pwd`"
fi
-needtar="1"
-needgit="1"
-TARVERSION=`tar --version | head -n 1 | cut -d ' ' -f 4`
-GITVERSION=`git --version 2> /dev/null | cut -d ' ' -f 3`
-float_test() {
- echo | awk 'END { exit ( !( '"$1"')); }'
-}
-version_compare() {
- python -c "from distutils.version import LooseVersion; import sys; sys.exit(not (LooseVersion('$1') $2 LooseVersion('$3')))"
-}
-
-# Tar version 1.24 and onwards handle overwriting symlinks correctly
-# but earlier versions do not; this needs to work properly for sstate
-float_test "$TARVERSION > 1.23" && needtar="0"
-
-if [ ! -z $GITVERSION ]; then
- # Need git >= 1.7.5 for git-remote --mirror=xxx syntax
- version_compare $GITVERSION ">=" 1.7.5 && needgit="0"
-fi
-
buildpseudo="1"
if [ $needpseudo = "1" ]; then
if [ -e "$BUILDDIR/pseudodone" ]; then
@@ -103,14 +83,6 @@ if [ $needpseudo = "1" ]; then
fi
fi
-# If tar is already built, we don't want to do it again...
-if [ -e "$PSEUDOBINDIR/tar" -a "$needtar" = "1" ]; then
- needtar="0"
-fi
-# If git is already built, we don't want to do it again...
-if [ -e "$PSEUDOBINDIR/git" -a "$needgit" = "1" ]; then
- needgit="0"
-fi
if [ $needpseudo = "0" ]; then
buildpseudo="0"
@@ -133,14 +105,6 @@ if [ $buildpseudo -gt 0 ]; then
[ $buildpseudo -eq 2 ] && echo "Pseudo may be out of date, rebuilding pseudo before the main build"
[ $buildpseudo -eq 3 ] && echo "Building pseudo-native before main build"
export PSEUDO_BUILD=1
- TARTARGET="tar-replacement-native"
- if [ $needtar = "0" ]; then
- TARTARGET=""
- fi
- GITTARGET="git-replacement-native"
- if [ $needgit = "0" ]; then
- GITTARGET=""
- fi
# Pass through debug options
additionalopts=""
@@ -154,11 +118,7 @@ if [ $buildpseudo -gt 0 ]; then
done
done
- if [ $needtar = "1" ]; then
- bitbake $TARTARGET -c populate_sysroot
- fi
-
- bitbake pseudo-native $GITTARGET $additionalopts -c populate_sysroot
+ bitbake pseudo-native $additionalopts -c populate_sysroot
ret=$?
if [ "$ret" != "0" ]; then
exit 1