]> code.ossystems Code Review - openembedded-core.git/commitdiff
scripts/bitbake sanity.bbclass: Migrate tests for git and tar versions
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 7 Jun 2013 17:16:03 +0000 (18:16 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 14 Jun 2013 11:53:26 +0000 (12:53 +0100)
Migrate tests for correct git and tar versions from the wrapper script
to the sanity class.

This sets the scene to allow us to remove the bitbake wrapper script.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/sanity.bbclass
scripts/bitbake

index 1c45b5baac766d27fb5ea19b975fe60bc1029238..9a29f328f679640d394e71ef9f64d32b19752617 100644 (file)
@@ -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)
index 31a34b3f16843795880ee053b0a1eb0489a065e7..a8c67bb125b979ac0b0d143ab973558b5c8ab8d9 100755 (executable)
@@ -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