db: split caller_info and sql into separate output file
[smatch.git] / smatch_data / db / create_db.sh
blob42c1524d150b93f8911b3040820e2c1dc5ad35ec
1 #!/bin/bash
3 if echo $1 | grep -q '^-p' ; then
4 PROJ=$(echo $1 | cut -d = -f 2)
5 shift
6 fi
8 info_file=$1
10 if [[ "$info_file" = "" ]] ; then
11 echo "Usage: $0 -p=<project> <file with smatch messages>"
12 exit 1
15 bin_dir=$(dirname $0)
16 db_file=smatch_db.sqlite.new
18 rm -f $db_file
20 for i in ${bin_dir}/*.schema ; do
21 cat $i | sqlite3 $db_file
22 done
24 ${bin_dir}/init_constraints.pl "$PROJ" $info_file $db_file
25 ${bin_dir}/init_constraints_required.pl "$PROJ" $info_file $db_file
26 ${bin_dir}/fill_db_sql.pl "$PROJ" $info_file $db_file
27 if [ -e ${info_file}.sql ] ; then
28 ${bin_dir}/fill_db_sql.pl "$PROJ" ${info_file}.sql $db_file
30 ${bin_dir}/fill_db_caller_info.pl "$PROJ" $info_file $db_file
31 if [ -e ${info_file}.caller_info ] ; then
32 ${bin_dir}/fill_db_caller_info.pl "$PROJ" ${info_file}.caller_info $db_file
34 ${bin_dir}/build_early_index.sh $db_file
36 ${bin_dir}/fill_db_type_value.pl "$PROJ" $info_file $db_file
37 ${bin_dir}/fill_db_type_size.pl "$PROJ" $info_file $db_file
38 ${bin_dir}/copy_required_constraints.pl "$PROJ" $info_file $db_file
39 ${bin_dir}/build_late_index.sh $db_file
41 ${bin_dir}/fixup_all.sh $db_file
42 if [ "$PROJ" != "" ] ; then
43 ${bin_dir}/fixup_${PROJ}.sh $db_file
46 ${bin_dir}/remove_mixed_up_pointer_params.pl $db_file
47 ${bin_dir}/mark_function_ptrs_searchable.pl $db_file
49 # delete duplicate entrees and speed things up
50 echo "delete from function_ptr where rowid not in (select min(rowid) from function_ptr group by file, function, ptr, searchable);" | sqlite3 $db_file
52 test -e ${bin_dir}/${PROJ}.return_fixes && \
53 cat ${bin_dir}/${PROJ}.return_fixes | \
54 while read func old new ; do
55 echo "update return_states set return = '$new' where function = '$func' and return = '$old';" | sqlite3 $db_file
56 done
58 mv $db_file smatch_db.sqlite