[yocto] yocto-kernel-tools and multiple users
Trevor Woerner
twoerner at gmail.com
Thu Dec 1 12:05:50 PST 2016
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.ashfield at 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?
More information about the yocto
mailing list