flightaware / speedtables

Speed tables is a high-performance memory-resident database. The speed table compiler reads a table definition and generates a set of C access routines to create, manipulate and search tables containing millions of rows. Currently oriented towards Tcl.
https://flightaware.github.io/speedtables/
BSD 3-Clause "New" or "Revised" License
65 stars 15 forks source link

compilation issues on Ubuntu #47

Closed ezx closed 3 years ago

ezx commented 9 years ago

I am on 64bit Ubuntu, have the latest TCL 8.6.4 64bit installed, Speedtable compiles but fails "make test" or fails during runtime, with the following error:

% package req speedtable 1.9.0 speedtables Animinfo 1.1 { table animation_characters { varstring name indexed 1 unique 0 varstring home varstring show indexed 1 unique 0 varstring dad boolean alive default 1 varstring gender default male int age int coolness } } In file included from stobj/Animinfo/Animinfo-1.1.cpp:86:0: stobj/include/ctable_io.c: In function ‘int ctablequoteString(const char*, int, int, const char)’: stobj/include/ctableio.c:63:36: error: invalid conversion from ‘const char’ to ‘char_’ [-fpermissive] char *off = strchr(special, c); ^ In file included from stobj/Animinfo/Animinfo-1.1.cpp:87:0: stobj/include/ctable_search.c: In function ‘void ctable_performance_callback(TclInterp, CTable_, TclObj const, int, timespec, int)’: stobj/include/ctable_search.c:2408:20: error: ‘CLOCK_VIRTUAL’ was not declared in this scope clock_gettime (CLOCK_VIRTUAL, &endTimeSpec); ^ stobj/include/ctable_search.c: In function ‘int ctable_SetupAndPerformSearch(TclInterp, TclObj const, int, CTable, int)’: stobj/include/ctable_search.c:2512:17: error: ‘CLOCK_VIRTUAL’ was not declared in this scope clock_gettime (CLOCK_VIRTUAL, &startTimeSpec);

bovine commented 9 years ago

Can you paste the output of "c++ --version" or "g++ --version" ?

ezx commented 9 years ago

I hope that this is what you need:

make -C ctables test make[1]: Entering directory '/speedtables/speedtables/ctables' cd ./tests && make make[2]: Entering directory '/speedtables/speedtables/ctables/tests' rm -rf stobj TCL_LIBRARY=echo /tcl/tcl8.6.4/library LD_LIBRARY_PATH="/usr/local/lib:" PATH="/usr/local/lib:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" TCLLIBPATH=".." /usr/local/bin/tclsh8.6 speedtable.tcl In file included from stobj/Topbrands/Topbrands-1.0.cpp:86:0: stobj/include/ctable_io.c: In function ‘int ctablequoteString(const char*, int, int, const char)’: stobj/include/ctableio.c:63:36: error: invalid conversion from ‘const char’ to ‘char_’ [-fpermissive] char *off = strchr(special, c); ^ In file included from stobj/Topbrands/Topbrands-1.0.cpp:87:0: stobj/include/ctable_search.c: In function ‘void ctable_performance_callback(TclInterp, CTable_, TclObj const, int, timespec, int)’: stobj/include/ctable_search.c:2408:20: error: ‘CLOCK_VIRTUAL’ was not declared in this scope clock_gettime (CLOCK_VIRTUAL, &endTimeSpec); ^ stobj/include/ctable_search.c: In function ‘int ctable_SetupAndPerformSearch(TclInterp, TclObj const, int, CTable, int)’: stobj/include/ctable_search.c:2512:17: error: ‘CLOCK_VIRTUAL’ was not declared in this scope clock_gettime (CLOCK_VIRTUAL, &startTimeSpec); ^ while executing "exec g++ -O2 -fPIC -DPACKAGE_NAME=\"tcl\" -DPACKAGE_TARNAME=\"tcl\" -DPACKAGE_VERSION=\"8.6\" -DPACKAGE_STRING=\"tcl\ 8.6\" -DPACKAGE_BUGREPORT=\"..." ("eval" body line 1) invoked from within "eval exec $command" (procedure "myexec" line 9) invoked from within "myexec "$sysconfig(cxx) $sysString $optflag $dbgflag $sysconfig(ldflags) $sysconfig(ccflags) -I$include $sysconfig(warn) $pgString $stubString $memDeb..." (procedure "compile" line 85) invoked from within "compile $extension $::ctable::extensionVersion" (procedure "::ctable::EndExtension" line 26) invoked from within "::ctable::EndExtension" (procedure "_speedtables" line 35) invoked from within "_speedtables Topbrands 1.0 {

table top_brands { int rank indexed 1 varstring name indexed 1 int value indexed 1 }

}" ("uplevel" body line 1) invoked from within "uplevel 1 [list _speedtables $name $version $code]" (procedure "speedtables" line 10) invoked from within "speedtables Topbrands 1.0 {

table top_brands { int rank indexed 1 varstring name indexed 1 int value indexed 1 }

}" (file "speedtable.tcl" line 7) Makefile:25: recipe for target 'all' failed make[2]: * [all] Error 1 make[2]: Leaving directory '/speedtables/speedtables/ctables/tests' Makefile:229: recipe for target 'test' failed make[1]: * [test] Error 2 make[1]: Leaving directory '/speedtables/speedtables/ctables' Makefile:187: recipe for target 'test' failed make: *\ [test] Error 2

bovine commented 3 years ago

Closing since we now have Linux CI running on Ubuntu. Reopen if you are still having compilation problems.