[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