diff options
Diffstat (limited to 'meta')
-rw-r--r-- | meta/classes/sanity.bbclass | 31 |
1 files changed, 31 insertions, 0 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): | |||
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 | ||
364 | def 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 | ||
374 | def 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 | |||
362 | def check_sanity(sanity_data): | 384 | def 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) |