11f5207b7SJohn Levon#!/bin/bash 21f5207b7SJohn Levon 31f5207b7SJohn LevonPROJECT=kernel 41f5207b7SJohn Levon 51f5207b7SJohn Levonfunction usage { 61f5207b7SJohn Levon echo 71f5207b7SJohn Levon echo "Usage: $0" 81f5207b7SJohn Levon echo "Updates the smatch_data/ directory and builds the smatch database" 91f5207b7SJohn Levon echo 101f5207b7SJohn Levon exit 1 111f5207b7SJohn Levon} 121f5207b7SJohn Levon 131f5207b7SJohn Levonif [ "$1" = "-h" ] || [ "$1" = "--help" ] ; then 141f5207b7SJohn Levon usage; 151f5207b7SJohn Levonfi 161f5207b7SJohn Levon 171f5207b7SJohn LevonSCRIPT_DIR=$(dirname $0) 181f5207b7SJohn Levonif [ -e $SCRIPT_DIR/../smatch -a -d kernel -a -d fs ] ; then 191f5207b7SJohn Levon CMD=$SCRIPT_DIR/../smatch 201f5207b7SJohn Levon DATA_DIR=$SCRIPT_DIR/../smatch_data 211f5207b7SJohn Levonelse 221f5207b7SJohn Levon echo "This script should be located in the smatch_scripts/ subdirectory of the smatch source." 231f5207b7SJohn Levon echo "It should be run from the root of a kernel source tree." 241f5207b7SJohn Levon exit 1 251f5207b7SJohn Levonfi 261f5207b7SJohn Levon 271f5207b7SJohn Levon# If someone is building the database for the first time then make sure all the 281f5207b7SJohn Levon# required packages are installed 291f5207b7SJohn Levonif [ ! -e smatch_db.sqlite ] ; then 301f5207b7SJohn Levon [ -e smatch_warns.txt ] || touch smatch_warns.txt 311f5207b7SJohn Levon if ! $DATA_DIR/db/create_db.sh -p=kernel smatch_warns.txt ; then 321f5207b7SJohn Levon echo "Hm... Not working. Make sure you have all the sqlite3 packages" 331f5207b7SJohn Levon echo "And the sqlite3 libraries for Perl and Python" 341f5207b7SJohn Levon exit 1 351f5207b7SJohn Levon fi 361f5207b7SJohn Levonfi 371f5207b7SJohn Levon 38efe51d0cSJohn LevonBUILD_STATUS=0 395a0e240fSJohn Levon$SCRIPT_DIR/test_kernel.sh --call-tree --info --spammy --data=$DATA_DIR || BUILD_STATUS=$? 40*6523a3aaSJohn Levonecho "smatch_warns.txt built." 411f5207b7SJohn Levon 421f5207b7SJohn Levonfor i in $SCRIPT_DIR/gen_* ; do 431f5207b7SJohn Levon $i smatch_warns.txt -p=kernel 441f5207b7SJohn Levondone 451f5207b7SJohn Levon 461f5207b7SJohn Levonmv ${PROJECT}.* $DATA_DIR 471f5207b7SJohn Levon 481f5207b7SJohn Levon$DATA_DIR/db/create_db.sh -p=kernel smatch_warns.txt 491f5207b7SJohn Levon 50efe51d0cSJohn Levonexit $BUILD_STATUS 51