diff options
-rw-r--r-- | meta/classes/sanity.bbclass | 31 | ||||
-rwxr-xr-x | scripts/bitbake | 42 |
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 |