[oe-commits] Richard Purdie : scripts/bitbake sanity.bbclass: Migrate tests for git and tar versions

git at git.openembedded.org git at git.openembedded.org
Wed Jun 12 16:48:27 UTC 2013


Module: openembedded-core.git
Branch: master-next
Commit: 5ab3b1a005baf416060cc3c278218d3e2920aec5
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=5ab3b1a005baf416060cc3c278218d3e2920aec5

Author: Richard Purdie <richard.purdie at linuxfoundation.org>
Date:   Fri Jun  7 18:16:03 2013 +0100

scripts/bitbake sanity.bbclass: Migrate tests for git and tar versions

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 at linuxfoundation.org>

---

 meta/classes/sanity.bbclass |   31 +++++++++++++++++++++++++++++++
 scripts/bitbake             |   42 +-----------------------------------------
 2 files changed, 32 insertions(+), 41 deletions(-)

diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass
index 1c45b5b..9a29f32 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 31a34b3..a8c67bb 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



More information about the Openembedded-commits mailing list