summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2013-06-07 18:16:03 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-06-14 12:53:26 +0100
commit7b370e23594da5dcb53cd5507ec289c3ef2d9fb5 (patch)
tree756c18da4cc5fa4b49e3d91cbfa2ad8e9610ac3b
parent003ea0fd1017dde50ced710179d0dc2e835d5185 (diff)
downloadopenembedded-core-7b370e23594da5dcb53cd5507ec289c3ef2d9fb5.tar.gz
openembedded-core-7b370e23594da5dcb53cd5507ec289c3ef2d9fb5.tar.bz2
openembedded-core-7b370e23594da5dcb53cd5507ec289c3ef2d9fb5.zip
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@linuxfoundation.org>
-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