I believe a recent change in the yocto-kernel-tools is causing some funny issue I saw this morning on my overnight jenkins builds.
commit 08463d684c1952e74c25344cddace4c3f24c739d Date: Mon Oct 31 14:30:12 2016 -0400 scc: exit on error If there is an error in the processing of the input files, scc should exit and inform the user. scc is executed on a combined/preprocessed file and as a result it doesn't have the granularity to see each input file individually. Rather than moving preprocessing into scc (from spp), we can trap the line number of the error and dump context around the line. This gives the user a pointer to the input file and the specific line that caused the problem. Signed-off-by: Bruce Ashfield <bruce.ashfi...@windriver.com> diff --git a/tools/scc b/tools/scc index b6ab747..0294103 100755 --- a/tools/scc +++ b/tools/scc @@ -238,18 +238,37 @@ process_file() done unset PATH - if [ -n "${verbose}" ]; then - eval . $in $outfile_append - else - # hide stderr if we aren't verbose - eval . $in $outfile_append 2> /dev/null - fi + ( + set -e + eval . $in $outfile_append > /tmp/scc-output 2>&1 + ) + ) - if [ $? -ne 0 ]; then - echo "[ERROR]: processing of file $in failed" - exit 1 + if [ $? -ne 0 ]; then + echo "[ERROR]: processing of file $in failed" + cat /tmp/scc-output + + # look for common errors so we can point to the right input file + + # 1) /tmp/tmp.gfN6WsbDHN: line 403: cat: No such file or directory + # "grep -oh" will only output what matches, which gets us "line 404: .." + # cut gets us the second field, which is the line number + line=$(cat /tmp/scc-output | grep -oh "line.*:" | cut -f2 -d' ' | sed 's/://g') + if [ -n "$line" ]; then + let start_line=$line-20 + let end_line=$line+10 + if [ $start_line -lt 0 ]; then + start_line=0 + fi + echo "" + echo "Context around the error is:" + echo "" + sed -n -e "$start_line,$end_line p" -e "$end_line q" $in | sed 's/^/ /' + echo "" + echo "See pre-processed file $in for more details" fi - ) + exit 1 + fi return 0 } In order to catch errors, scc's output is being hardcoded to /tmp/scc-output. But on my box there are two users who perform builds: jenkins and myself. When the second person comes along to do a build it finds inadequate permissions on /tmp/scc-output. Is anyone else seeing this? -- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto