summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2013-06-07 17:16:03 (GMT)
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-06-14 11:53:51 (GMT)
commitcfbd13ff2267a10767327622c9cf5bf889e75a80 (patch)
tree5a8358c60d589955f63f8338cd1a66b18e1ade0d
parent9d18a291a69786823e404b9379e60629cc898ddb (diff)
downloadpoky-cfbd13ff2267a10767327622c9cf5bf889e75a80.tar.gz
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. (From OE-Core rev: 7b370e23594da5dcb53cd5507ec289c3ef2d9fb5) 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 1c45b5b..9a29f32 100644
--- a/meta/classes/sanity.bbclass
+++ b/meta/classes/sanity.bbclass
@@ -359,6 +359,28 @@ def check_gcc_march(sanity_data):
359 359
360 return result 360 return result
361 361
362# Tar version 1.24 and onwards handle overwriting symlinks correctly
363# but earlier versions do not; this needs to work properly for sstate
364def check_tar_version(sanity_data, loosever):
365 status, result = oe.utils.getstatusoutput("tar --version")
366 if status != 0:
367 return "Unable to execute tar --version, exit code %s\n" % status
368 version = result.split()[3]
369 if loosever(version) < loosever("1.24"):
370 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"
371 return None
372
373# We use git parameters and functionality only found in 1.7.5 or later
374def check_git_version(sanity_data, loosever):
375 status, result = oe.utils.getstatusoutput("git --version 2> /dev/null")
376 if status != 0:
377 return "Unable to execute git --version, exit code %s\n" % status
378 version = result.split()[2]
379 if loosever(version) < loosever("1.7.5"):
380 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"
381 return None
382
383
362def check_sanity(sanity_data): 384def check_sanity(sanity_data):
363 import subprocess 385 import subprocess
364 386
@@ -409,6 +431,15 @@ def check_sanity(sanity_data):
409 messages = messages + 'Please set a MACHINE in your local.conf or environment\n' 431 messages = messages + 'Please set a MACHINE in your local.conf or environment\n'
410 machinevalid = False 432 machinevalid = False
411 433
434 tarmsg = check_tar_version(sanity_data, LooseVersion)
435 if tarmsg:
436 messages = messages + tarmsg
437
438 gitmsg = check_git_version(sanity_data, LooseVersion)
439 if gitmsg:
440 messages = messages + gitmsg
441
442
412 # Check we are using a valid local.conf 443 # Check we are using a valid local.conf
413 current_conf = sanity_data.getVar('CONF_VERSION', True) 444 current_conf = sanity_data.getVar('CONF_VERSION', True)
414 conf_version = sanity_data.getVar('LOCALCONF_VERSION', True) 445 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
57 BUILDDIR="`pwd`" 57 BUILDDIR="`pwd`"
58fi 58fi
59 59
60needtar="1"
61needgit="1"
62TARVERSION=`tar --version | head -n 1 | cut -d ' ' -f 4`
63GITVERSION=`git --version 2> /dev/null | cut -d ' ' -f 3`
64float_test() {
65 echo | awk 'END { exit ( !( '"$1"')); }'
66}
67version_compare() {
68 python -c "from distutils.version import LooseVersion; import sys; sys.exit(not (LooseVersion('$1') $2 LooseVersion('$3')))"
69}
70
71# Tar version 1.24 and onwards handle overwriting symlinks correctly
72# but earlier versions do not; this needs to work properly for sstate
73float_test "$TARVERSION > 1.23" && needtar="0"
74
75if [ ! -z $GITVERSION ]; then
76 # Need git >= 1.7.5 for git-remote --mirror=xxx syntax
77 version_compare $GITVERSION ">=" 1.7.5 && needgit="0"
78fi
79
80buildpseudo="1" 60buildpseudo="1"
81if [ $needpseudo = "1" ]; then 61if [ $needpseudo = "1" ]; then
82 if [ -e "$BUILDDIR/pseudodone" ]; then 62 if [ -e "$BUILDDIR/pseudodone" ]; then
@@ -103,14 +83,6 @@ if [ $needpseudo = "1" ]; then
103 fi 83 fi
104fi 84fi
105 85
106# If tar is already built, we don't want to do it again...
107if [ -e "$PSEUDOBINDIR/tar" -a "$needtar" = "1" ]; then
108 needtar="0"
109fi
110# If git is already built, we don't want to do it again...
111if [ -e "$PSEUDOBINDIR/git" -a "$needgit" = "1" ]; then
112 needgit="0"
113fi
114 86
115if [ $needpseudo = "0" ]; then 87if [ $needpseudo = "0" ]; then
116 buildpseudo="0" 88 buildpseudo="0"
@@ -133,14 +105,6 @@ if [ $buildpseudo -gt 0 ]; then
133 [ $buildpseudo -eq 2 ] && echo "Pseudo may be out of date, rebuilding pseudo before the main build" 105 [ $buildpseudo -eq 2 ] && echo "Pseudo may be out of date, rebuilding pseudo before the main build"
134 [ $buildpseudo -eq 3 ] && echo "Building pseudo-native before main build" 106 [ $buildpseudo -eq 3 ] && echo "Building pseudo-native before main build"
135 export PSEUDO_BUILD=1 107 export PSEUDO_BUILD=1
136 TARTARGET="tar-replacement-native"
137 if [ $needtar = "0" ]; then
138 TARTARGET=""
139 fi
140 GITTARGET="git-replacement-native"
141 if [ $needgit = "0" ]; then
142 GITTARGET=""
143 fi
144 108
145 # Pass through debug options 109 # Pass through debug options
146 additionalopts="" 110 additionalopts=""
@@ -154,11 +118,7 @@ if [ $buildpseudo -gt 0 ]; then
154 done 118 done
155 done 119 done
156 120
157 if [ $needtar = "1" ]; then 121 bitbake pseudo-native $additionalopts -c populate_sysroot
158 bitbake $TARTARGET -c populate_sysroot
159 fi
160
161 bitbake pseudo-native $GITTARGET $additionalopts -c populate_sysroot
162 ret=$? 122 ret=$?
163 if [ "$ret" != "0" ]; then 123 if [ "$ret" != "0" ]; then
164 exit 1 124 exit 1