Source code for benchbuild.projects.benchbuild.sqlite3
from plumbum import local
from benchbuild import project
from benchbuild.utils import compiler, download, run, wrapping
from benchbuild.utils.cmd import make, unzip
[docs]@download.with_wget({
'3080900':
'http://www.sqlite.org/2015/sqlite-amalgamation-3080900.zip'
})
class SQLite3(project.Project):
""" SQLite3 """
NAME = 'sqlite3'
DOMAIN = 'database'
GROUP = 'benchbuild'
VERSION = '3080900'
SRC_FILE = 'sqlite.zip'
[docs] def compile(self):
self.download()
unzip(self.src_file)
unpack_dir = local.path('sqlite-amalgamation-{0}'.format(self.version))
SQLite3.fetch_leveldb()
clang = compiler.cc(self)
with local.cwd(unpack_dir):
run.run(clang["-fPIC", "-I.", "-c", "sqlite3.c"])
run.run(
clang["-shared", "-o", "libsqlite3.so", "sqlite3.o", "-ldl"])
self.build_leveldb()
[docs] @staticmethod
def fetch_leveldb():
src_uri = "https://github.com/google/leveldb"
download.Git(src_uri, "leveldb.src")
[docs] def build_leveldb(self):
sqlite_dir = local.path('sqlite-amalgamation-{0}'.format(self.version))
leveldb_dir = "leveldb.src"
# We need to place sqlite3 in front of all other flags.
self.ldflags += ["-L{0}".format(sqlite_dir)]
self.cflags += ["-I{0}".format(sqlite_dir)]
clang_cxx = compiler.cxx(self)
clang = compiler.cc(self)
with local.cwd(leveldb_dir):
with local.env(CXX=str(clang_cxx), CC=str(clang)):
run.run(make["clean", "out-static/db_bench_sqlite3"])
[docs] def run_tests(self, runner):
leveldb_dir = local.path("leveldb.src")
with local.cwd(leveldb_dir):
with local.env(LD_LIBRARY_PATH=leveldb_dir):
sqlite = wrapping.wrap(
leveldb_dir / 'out-static' / 'db_bench_sqlite3', self)
run.run(sqlite)