Source code for benchbuild.projects.benchbuild.sqlite3

from os import path

from benchbuild.utils.wrapping import wrap
from benchbuild.projects.benchbuild.group import BenchBuildGroup
from benchbuild.utils.downloader import Wget, Git
from benchbuild.utils.compiler import lt_clang, lt_clang_cxx
from benchbuild.utils.run import run
from benchbuild.utils.cmd import unzip, make
from plumbum import local


[docs]class SQLite3(BenchBuildGroup): """ SQLite3 """ NAME = 'sqlite3' DOMAIN = 'database' src_dir = "sqlite-amalgamation-3080900" SRC_FILE = src_dir + ".zip" src_uri = "http://www.sqlite.org/2015/" + SRC_FILE
[docs] def download(self): Wget(self.src_uri, self.SRC_FILE) unzip(self.SRC_FILE) self.fetch_leveldb()
[docs] def configure(self): pass
[docs] def build(self): clang = lt_clang(self.cflags, self.ldflags, self.compiler_extension) with local.cwd(self.src_dir): run(clang["-fPIC", "-I.", "-c", "sqlite3.c"]) run(clang["-shared", "-o", "libsqlite3.so", "sqlite3.o", "-ldl"]) self.build_leveldb()
[docs] def fetch_leveldb(self): src_uri = "https://github.com/google/leveldb" Git(src_uri, "leveldb.src")
[docs] def build_leveldb(self): sqlite_dir = self.src_dir leveldb_dir = "leveldb.src" # We need to place sqlite3 in front of all other flags. self.ldflags += ["-L{0}".format(path.abspath(sqlite_dir))] self.cflags += ["-I{0}".format(path.abspath(sqlite_dir))] clang_cxx = lt_clang_cxx(self.cflags, self.ldflags, self.compiler_extension) clang = lt_clang(self.cflags, self.ldflags, self.compiler_extension) with local.cwd(leveldb_dir): with local.env(CXX=str(clang_cxx), CC=str(clang)): run(make["clean", "out-static/db_bench_sqlite3"])
[docs] def run_tests(self, experiment, run): leveldb_dir = "leveldb.src" with local.cwd(leveldb_dir): with local.env(LD_LIBRARY_PATH=path.abspath(self.src_dir)): sqlite = wrap(path.join("out-static", "db_bench_sqlite3"), experiment) run(sqlite)