If /tmp can't be written to for whatever reason (say, no tmpfs and / is full up) then bitbake gives a very obscure error: ERROR: OE-core's config sanity checker detected a potential misconfiguration. Either fix the cause of this error or at your own risk disable the checker (see sanity.conf). Following is the list of potential problems / advisories: Your gcc version is older than 4.5 or is not working properly. Please verify you can build and link something that uses atomic operations, such as: __sync_bool_compare_and_swap (&atomic, 2, 3); (as gcc fails to write temporary files) We should probably check that we can write a small file into $TMP as a very early sanity test before compiling.
The check must be done in /tmp (not TMPDIR)
Sent patch for review
This bug has been fixed with commit: http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=cea20425a3dcb8868c53518cbec4b250076f1675
Adding the comments from Ross + # Check if /tmp is writable + from string import ascii_letters + from random import choice + filename = "bb_writetest.%s" % os.getpid() + testfile = os.path.join("/tmp", filename) Use tempfile.mkstemp() here, we'll get proper unique names and it will use the same temporary directory as gcc etc. + try: + f = open(testfile, "w") + f.write("".join(choice(ascii_letters) for x in range(1024))) + f.close() + os.remove(testfile) + except: + status.addresult("Failed to write into /tmp. Please verify your filesystem.") The error should include the message from the exception to help root-cause the problem. Ross
Sent patch v2 based on master for review
This bug has been solved with commit: http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=45772bab329821ad425b20e630749c2a6c82c235
FYI the fix mentioned above was reverted in favour of this one: http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=9f87dcf3a3adf0b215b59eac854d372216c9dc0d
Verified on master: 370a2916c4559c17952392b872322e8e490b124c As far as I can tell this bug was fixed and then the fix was removed in favor of http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=9f87dcf3a3adf0b215b59eac854d372216c9dc0d. That fix only checks that /tmp has enough space. It does not check proper /tmp permissions. So the case when you cannot create a file in /tmp due to wrong permissions is not covered. **************** Test 1: change /tmp permissions to 555 [daniel@fedora-ws poky-build2]$ sudo chmod 555 /tmp [daniel@fedora-ws poky-build2]$ bitbake ed Parsing recipes: 100% |##############################################################################| ETA: 00:00:00 Parsing of 900 .bb files complete (0 cached, 900 parsed). 1330 targets, 38 skipped, 0 masked, 0 errors. NOTE: Resolving any missing task queue dependencies Build Configuration: BB_VERSION = "1.28.0" BUILD_SYS = "x86_64-linux" NATIVELSBSTRING = "Fedora-21" TARGET_SYS = "i586-poky-linux" MACHINE = "qemux86" DISTRO = "poky" DISTRO_VERSION = "2.0" TUNE_FEATURES = "m32 i586" TARGET_FPU = "" meta meta-yocto meta-yocto-bsp = "master:370a2916c4559c17952392b872322e8e490b124c" NOTE: Preparing RunQueue NOTE: Executing SetScene Tasks NOTE: Executing RunQueue Tasks ERROR: autoreconf execution failed. ERROR: Function failed: do_configure (log file is located at /media/ssd/poky-build2/tmp/work/x86_64-linux/gperf-native/3.0.4-r0/temp/log.do_configure.26594) ERROR: Logfile of failure stored in: /media/ssd/poky-build2/tmp/work/x86_64-linux/gperf-native/3.0.4-r0/temp/log.do_configure.26594 Log data follows: | DEBUG: Executing python function sysroot_cleansstate | DEBUG: Python function sysroot_cleansstate finished | DEBUG: Executing shell function autotools_preconfigure | DEBUG: Shell function autotools_preconfigure finished | DEBUG: Executing python function autotools_copy_aclocals | DEBUG: SITE files ['endian-little', 'common-linux', 'common-glibc', 'bit-64', 'x86_64-linux', 'common'] | DEBUG: Python function autotools_copy_aclocals finished | DEBUG: Executing shell function do_configure | automake (GNU automake) 1.15 | Copyright (C) 2014 Free Software Foundation, Inc. | License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl-2.0.html> | This is free software: you are free to change and redistribute it. | There is NO WARRANTY, to the extent permitted by law. | | Written by Tom Tromey <tromey@redhat.com> | and Alexandre Duret-Lutz <adl@gnu.org>. | AUTOV is 1 | NOTE: Executing ACLOCAL="aclocal --system-acdir=/media/ssd/poky-build2/tmp/work/x86_64-linux/gperf-native/3.0.4-r0/build/aclocal-copy/" autoreconf --verbose --install --force --exclude=autopoint -I /media/ssd/poky-build2/tmp/work/x86_64-linux/gperf-native/3.0.4-r0/gperf-3.0.4 | autoreconf: cannot create /tmp/ar825.27062: Permission denied | at /media/ssd/poky-build2/tmp/sysroots/x86_64-linux/usr/bin/autoreconf line 732. | ERROR: autoreconf execution failed. | ERROR: Function failed: do_configure (log file is located at /media/ssd/poky-build2/tmp/work/x86_64-linux/gperf-native/3.0.4-r0/temp/log.do_configure.26594) ERROR: Task 292 (virtual:native:/home/daniel/poky/meta/recipes-extended/gperf/gperf_3.0.4.bb, do_configure) failed with exit code '1' NOTE: Tasks Summary: Attempted 147 tasks of which 120 didn't need to be rerun and 1 failed. Waiting for 0 running tasks to finish: Summary: 1 task failed: virtual:native:/home/daniel/poky/meta/recipes-extended/gperf/gperf_3.0.4.bb, do_configure Summary: There were 2 ERROR messages shown, returning a non-zero exit code. Revert back /tmp permissions [daniel@fedora-ws poky-build2]$ sudo chmod 1777 /tmp **************** Test 2: change /tmp size to less that 100MB (the fix mentioned in Comment 7) [daniel@fedora-ws poky-build2]$ sudo mount -o remount,size=90m,noatime /tmp [daniel@fedora-ws poky-build2]$ bitbake -c clean ed Loading cache: 100% |################################################################################| ETA: 00:00:00 Loaded 1331 entries from dependency cache. NOTE: Resolving any missing task queue dependencies Build Configuration: BB_VERSION = "1.28.0" BUILD_SYS = "x86_64-linux" NATIVELSBSTRING = "Fedora-21" TARGET_SYS = "i586-poky-linux" MACHINE = "qemux86" DISTRO = "poky" DISTRO_VERSION = "2.0" TUNE_FEATURES = "m32 i586" TARGET_FPU = "" meta meta-yocto meta-yocto-bsp = "master:370a2916c4559c17952392b872322e8e490b124c" NOTE: Preparing RunQueue NOTE: Executing RunQueue Tasks WARNING: The free space of /tmp (tmpfs) is running low (0.087GB left) ERROR: No new tasks can be executed since the disk space monitor action is "STOPTASKS"! NOTE: Tasks Summary: Attempted 1 tasks of which 0 didn't need to be rerun and all succeeded. Summary: There was 1 WARNING message shown. Summary: There was 1 ERROR message shown, returning a non-zero exit code.
This bug was opened because /tmp was running out of space in the autobuilders. With the patch that Paul mentioned this is being monitored during all the build. I think if you can't write in /tmp, there would be other major problems than running bitbake
I think I agree with Mariano here - if /tmp isn't writable at all then you'll be having far greater problems than bitbake not working: I'd be surprised if you can even login. We should sanity check the environment but not check for catastrophic failure.
Checking if /tmp has sufficient free space is enough.